From efcaa7e7a754872b9aa0887547287ce184af45ba Mon Sep 17 00:00:00 2001 From: Keith Irwin Date: Wed, 30 Aug 2017 22:33:43 +0000 Subject: [PATCH] Installed praw and setup virtualenv --- env/bin/activate | 78 + env/bin/activate.csh | 36 + env/bin/activate.fish | 76 + env/bin/activate_this.py | 34 + env/bin/chardetect | 11 + env/bin/easy_install | 11 + env/bin/easy_install-2.7 | 11 + env/bin/pip | 11 + env/bin/pip2 | 11 + env/bin/pip2.7 | 11 + env/bin/python | Bin 0 -> 3345416 bytes env/bin/python-config | 78 + env/bin/python2 | 1 + env/bin/python2.7 | 1 + env/bin/wheel | 11 + env/lib/python2.7/UserDict.py | 1 + env/lib/python2.7/UserDict.pyc | Bin 0 -> 9720 bytes env/lib/python2.7/_abcoll.py | 1 + env/lib/python2.7/_abcoll.pyc | Bin 0 -> 27038 bytes env/lib/python2.7/_weakrefset.py | 1 + env/lib/python2.7/_weakrefset.pyc | Bin 0 -> 10638 bytes env/lib/python2.7/abc.py | 1 + env/lib/python2.7/abc.pyc | Bin 0 -> 6363 bytes env/lib/python2.7/codecs.py | 1 + env/lib/python2.7/codecs.pyc | Bin 0 -> 38465 bytes env/lib/python2.7/copy_reg.py | 1 + env/lib/python2.7/copy_reg.pyc | Bin 0 -> 5333 bytes env/lib/python2.7/distutils/__init__.py | 101 + env/lib/python2.7/distutils/__init__.pyc | Bin 0 -> 3757 bytes env/lib/python2.7/distutils/distutils.cfg | 6 + env/lib/python2.7/encodings | 1 + env/lib/python2.7/fnmatch.py | 1 + env/lib/python2.7/fnmatch.pyc | Bin 0 -> 3654 bytes env/lib/python2.7/genericpath.py | 1 + env/lib/python2.7/genericpath.pyc | Bin 0 -> 3463 bytes env/lib/python2.7/lib-dynload | 1 + env/lib/python2.7/linecache.py | 1 + env/lib/python2.7/linecache.pyc | Bin 0 -> 3372 bytes env/lib/python2.7/locale.py | 1 + env/lib/python2.7/locale.pyc | Bin 0 -> 51597 bytes env/lib/python2.7/no-global-site-packages.txt | 0 env/lib/python2.7/ntpath.py | 1 + env/lib/python2.7/orig-prefix.txt | 1 + env/lib/python2.7/os.py | 1 + env/lib/python2.7/os.pyc | Bin 0 -> 26617 bytes env/lib/python2.7/posixpath.py | 1 + env/lib/python2.7/posixpath.pyc | Bin 0 -> 12095 bytes env/lib/python2.7/re.py | 1 + env/lib/python2.7/re.pyc | Bin 0 -> 13570 bytes .../DESCRIPTION.rst | 49 + .../certifi-2017.7.27.1.dist-info/INSTALLER | 1 + .../certifi-2017.7.27.1.dist-info/METADATA | 71 + .../certifi-2017.7.27.1.dist-info/RECORD | 16 + .../certifi-2017.7.27.1.dist-info/WHEEL | 6 + .../metadata.json | 1 + .../top_level.txt | 1 + .../site-packages/certifi/__init__.py | 3 + .../site-packages/certifi/__init__.pyc | Bin 0 -> 252 bytes .../site-packages/certifi/__main__.py | 2 + .../site-packages/certifi/__main__.pyc | Bin 0 -> 199 bytes .../site-packages/certifi/cacert.pem | 4834 +++++++++++ .../python2.7/site-packages/certifi/core.py | 36 + .../python2.7/site-packages/certifi/core.pyc | Bin 0 -> 1279 bytes .../site-packages/certifi/old_root.pem | 414 + .../python2.7/site-packages/certifi/weak.pem | 5248 +++++++++++ .../chardet-3.0.4.dist-info/DESCRIPTION.rst | 70 + .../chardet-3.0.4.dist-info/INSTALLER | 1 + .../chardet-3.0.4.dist-info/METADATA | 96 + .../chardet-3.0.4.dist-info/RECORD | 91 + .../chardet-3.0.4.dist-info/WHEEL | 6 + .../chardet-3.0.4.dist-info/entry_points.txt | 3 + .../chardet-3.0.4.dist-info/metadata.json | 1 + .../chardet-3.0.4.dist-info/top_level.txt | 1 + .../site-packages/chardet/__init__.py | 39 + .../site-packages/chardet/__init__.pyc | Bin 0 -> 964 bytes .../site-packages/chardet/big5freq.py | 386 + .../site-packages/chardet/big5freq.pyc | Bin 0 -> 54686 bytes .../site-packages/chardet/big5prober.py | 47 + .../site-packages/chardet/big5prober.pyc | Bin 0 -> 1282 bytes .../site-packages/chardet/chardistribution.py | 233 + .../chardet/chardistribution.pyc | Bin 0 -> 7461 bytes .../chardet/charsetgroupprober.py | 106 + .../chardet/charsetgroupprober.pyc | Bin 0 -> 2753 bytes .../site-packages/chardet/charsetprober.py | 145 + .../site-packages/chardet/charsetprober.pyc | Bin 0 -> 3984 bytes .../site-packages/chardet/cli/__init__.py | 1 + .../site-packages/chardet/cli/__init__.pyc | Bin 0 -> 140 bytes .../site-packages/chardet/cli/chardetect.py | 85 + .../site-packages/chardet/cli/chardetect.pyc | Bin 0 -> 3109 bytes .../chardet/codingstatemachine.py | 88 + .../chardet/codingstatemachine.pyc | Bin 0 -> 3240 bytes .../python2.7/site-packages/chardet/compat.py | 34 + .../site-packages/chardet/compat.pyc | Bin 0 -> 389 bytes .../site-packages/chardet/cp949prober.py | 49 + .../site-packages/chardet/cp949prober.pyc | Bin 0 -> 1290 bytes .../python2.7/site-packages/chardet/enums.py | 76 + .../python2.7/site-packages/chardet/enums.pyc | Bin 0 -> 3009 bytes .../site-packages/chardet/escprober.py | 101 + .../site-packages/chardet/escprober.pyc | Bin 0 -> 3111 bytes .../python2.7/site-packages/chardet/escsm.py | 246 + .../python2.7/site-packages/chardet/escsm.pyc | Bin 0 -> 8000 bytes .../site-packages/chardet/eucjpprober.py | 92 + .../site-packages/chardet/eucjpprober.pyc | Bin 0 -> 2926 bytes .../site-packages/chardet/euckrfreq.py | 195 + .../site-packages/chardet/euckrfreq.pyc | Bin 0 -> 24072 bytes .../site-packages/chardet/euckrprober.py | 47 + .../site-packages/chardet/euckrprober.pyc | Bin 0 -> 1291 bytes .../site-packages/chardet/euctwfreq.py | 387 + .../site-packages/chardet/euctwfreq.pyc | Bin 0 -> 54695 bytes .../site-packages/chardet/euctwprober.py | 46 + .../site-packages/chardet/euctwprober.pyc | Bin 0 -> 1291 bytes .../site-packages/chardet/gb2312freq.py | 283 + .../site-packages/chardet/gb2312freq.pyc | Bin 0 -> 38337 bytes .../site-packages/chardet/gb2312prober.py | 46 + .../site-packages/chardet/gb2312prober.pyc | Bin 0 -> 1300 bytes .../site-packages/chardet/hebrewprober.py | 292 + .../site-packages/chardet/hebrewprober.pyc | Bin 0 -> 3649 bytes .../site-packages/chardet/jisfreq.py | 325 + .../site-packages/chardet/jisfreq.pyc | Bin 0 -> 44481 bytes .../python2.7/site-packages/chardet/jpcntx.py | 233 + .../site-packages/chardet/jpcntx.pyc | Bin 0 -> 25120 bytes .../chardet/langbulgarianmodel.py | 228 + .../chardet/langbulgarianmodel.pyc | Bin 0 -> 24949 bytes .../chardet/langcyrillicmodel.py | 333 + .../chardet/langcyrillicmodel.pyc | Bin 0 -> 30669 bytes .../site-packages/chardet/langgreekmodel.py | 225 + .../site-packages/chardet/langgreekmodel.pyc | Bin 0 -> 24624 bytes .../site-packages/chardet/langhebrewmodel.py | 200 + .../site-packages/chardet/langhebrewmodel.pyc | Bin 0 -> 23435 bytes .../chardet/langhungarianmodel.py | 225 + .../chardet/langhungarianmodel.pyc | Bin 0 -> 24919 bytes .../site-packages/chardet/langthaimodel.py | 199 + .../site-packages/chardet/langthaimodel.pyc | Bin 0 -> 23414 bytes .../site-packages/chardet/langturkishmodel.py | 193 + .../chardet/langturkishmodel.pyc | Bin 0 -> 23431 bytes .../site-packages/chardet/latin1prober.py | 145 + .../site-packages/chardet/latin1prober.pyc | Bin 0 -> 3621 bytes .../site-packages/chardet/mbcharsetprober.py | 91 + .../site-packages/chardet/mbcharsetprober.pyc | Bin 0 -> 2675 bytes .../site-packages/chardet/mbcsgroupprober.py | 54 + .../site-packages/chardet/mbcsgroupprober.pyc | Bin 0 -> 1291 bytes .../python2.7/site-packages/chardet/mbcssm.py | 572 ++ .../site-packages/chardet/mbcssm.pyc | Bin 0 -> 19106 bytes .../site-packages/chardet/sbcharsetprober.py | 132 + .../site-packages/chardet/sbcharsetprober.pyc | Bin 0 -> 3554 bytes .../site-packages/chardet/sbcsgroupprober.py | 73 + .../site-packages/chardet/sbcsgroupprober.pyc | Bin 0 -> 1884 bytes .../site-packages/chardet/sjisprober.py | 92 + .../site-packages/chardet/sjisprober.pyc | Bin 0 -> 2947 bytes .../chardet/universaldetector.py | 286 + .../chardet/universaldetector.pyc | Bin 0 -> 7031 bytes .../site-packages/chardet/utf8prober.py | 82 + .../site-packages/chardet/utf8prober.pyc | Bin 0 -> 2396 bytes .../site-packages/chardet/version.py | 9 + .../site-packages/chardet/version.pyc | Bin 0 -> 416 bytes .../python2.7/site-packages/easy_install.py | 5 + .../python2.7/site-packages/easy_install.pyc | Bin 0 -> 315 bytes .../idna-2.6.dist-info/DESCRIPTION.rst | 213 + .../idna-2.6.dist-info/INSTALLER | 1 + .../site-packages/idna-2.6.dist-info/METADATA | 239 + .../site-packages/idna-2.6.dist-info/RECORD | 23 + .../site-packages/idna-2.6.dist-info/WHEEL | 6 + .../idna-2.6.dist-info/metadata.json | 1 + .../idna-2.6.dist-info/top_level.txt | 1 + .../python2.7/site-packages/idna/__init__.py | 2 + .../python2.7/site-packages/idna/__init__.pyc | Bin 0 -> 226 bytes env/lib/python2.7/site-packages/idna/codec.py | 118 + .../python2.7/site-packages/idna/codec.pyc | Bin 0 -> 3771 bytes .../python2.7/site-packages/idna/compat.py | 12 + .../python2.7/site-packages/idna/compat.pyc | Bin 0 -> 739 bytes env/lib/python2.7/site-packages/idna/core.py | 387 + env/lib/python2.7/site-packages/idna/core.pyc | Bin 0 -> 11371 bytes .../python2.7/site-packages/idna/idnadata.py | 1585 ++++ .../python2.7/site-packages/idna/idnadata.pyc | Bin 0 -> 28537 bytes .../python2.7/site-packages/idna/intranges.py | 53 + .../site-packages/idna/intranges.pyc | Bin 0 -> 2127 bytes .../site-packages/idna/package_data.py | 2 + .../site-packages/idna/package_data.pyc | Bin 0 -> 164 bytes .../python2.7/site-packages/idna/uts46data.py | 7634 +++++++++++++++++ .../site-packages/idna/uts46data.pyc | Bin 0 -> 272219 bytes .../pip-9.0.1.dist-info/DESCRIPTION.rst | 39 + .../pip-9.0.1.dist-info/INSTALLER | 1 + .../pip-9.0.1.dist-info/METADATA | 69 + .../site-packages/pip-9.0.1.dist-info/RECORD | 501 ++ .../site-packages/pip-9.0.1.dist-info/WHEEL | 6 + .../pip-9.0.1.dist-info/entry_points.txt | 5 + .../pip-9.0.1.dist-info/metadata.json | 1 + .../pip-9.0.1.dist-info/top_level.txt | 1 + .../python2.7/site-packages/pip/__init__.py | 331 + .../python2.7/site-packages/pip/__init__.pyc | Bin 0 -> 9163 bytes .../python2.7/site-packages/pip/__main__.py | 19 + .../python2.7/site-packages/pip/__main__.pyc | Bin 0 -> 477 bytes .../site-packages/pip/_vendor/__init__.py | 107 + .../site-packages/pip/_vendor/__init__.pyc | Bin 0 -> 3194 bytes .../site-packages/pip/_vendor/appdirs.py | 552 ++ .../site-packages/pip/_vendor/appdirs.pyc | Bin 0 -> 20617 bytes .../pip/_vendor/cachecontrol/__init__.py | 11 + .../pip/_vendor/cachecontrol/__init__.pyc | Bin 0 -> 576 bytes .../pip/_vendor/cachecontrol/_cmd.py | 60 + .../pip/_vendor/cachecontrol/_cmd.pyc | Bin 0 -> 2024 bytes .../pip/_vendor/cachecontrol/adapter.py | 125 + .../pip/_vendor/cachecontrol/adapter.pyc | Bin 0 -> 3474 bytes .../pip/_vendor/cachecontrol/cache.py | 39 + .../pip/_vendor/cachecontrol/cache.pyc | Bin 0 -> 2324 bytes .../_vendor/cachecontrol/caches/__init__.py | 18 + .../_vendor/cachecontrol/caches/__init__.pyc | Bin 0 -> 607 bytes .../_vendor/cachecontrol/caches/file_cache.py | 116 + .../cachecontrol/caches/file_cache.pyc | Bin 0 -> 3769 bytes .../cachecontrol/caches/redis_cache.py | 41 + .../cachecontrol/caches/redis_cache.pyc | Bin 0 -> 2330 bytes .../pip/_vendor/cachecontrol/compat.py | 20 + .../pip/_vendor/cachecontrol/compat.pyc | Bin 0 -> 647 bytes .../pip/_vendor/cachecontrol/controller.py | 353 + .../pip/_vendor/cachecontrol/controller.pyc | Bin 0 -> 8994 bytes .../pip/_vendor/cachecontrol/filewrapper.py | 78 + .../pip/_vendor/cachecontrol/filewrapper.pyc | Bin 0 -> 2611 bytes .../pip/_vendor/cachecontrol/heuristics.py | 138 + .../pip/_vendor/cachecontrol/heuristics.pyc | Bin 0 -> 5825 bytes .../pip/_vendor/cachecontrol/serialize.py | 196 + .../pip/_vendor/cachecontrol/serialize.pyc | Bin 0 -> 5977 bytes .../pip/_vendor/cachecontrol/wrapper.py | 21 + .../pip/_vendor/cachecontrol/wrapper.pyc | Bin 0 -> 682 bytes .../pip/_vendor/colorama/__init__.py | 7 + .../pip/_vendor/colorama/__init__.pyc | Bin 0 -> 476 bytes .../pip/_vendor/colorama/ansi.py | 102 + .../pip/_vendor/colorama/ansi.pyc | Bin 0 -> 4320 bytes .../pip/_vendor/colorama/ansitowin32.py | 236 + .../pip/_vendor/colorama/ansitowin32.pyc | Bin 0 -> 9206 bytes .../pip/_vendor/colorama/initialise.py | 82 + .../pip/_vendor/colorama/initialise.pyc | Bin 0 -> 2305 bytes .../pip/_vendor/colorama/win32.py | 154 + .../pip/_vendor/colorama/win32.pyc | Bin 0 -> 4774 bytes .../pip/_vendor/colorama/winterm.py | 162 + .../pip/_vendor/colorama/winterm.pyc | Bin 0 -> 5930 bytes .../pip/_vendor/distlib/__init__.py | 23 + .../pip/_vendor/distlib/__init__.pyc | Bin 0 -> 1299 bytes .../pip/_vendor/distlib/_backport/__init__.py | 6 + .../_vendor/distlib/_backport/__init__.pyc | Bin 0 -> 444 bytes .../pip/_vendor/distlib/_backport/misc.py | 41 + .../pip/_vendor/distlib/_backport/misc.pyc | Bin 0 -> 1400 bytes .../pip/_vendor/distlib/_backport/shutil.py | 761 ++ .../pip/_vendor/distlib/_backport/shutil.pyc | Bin 0 -> 26212 bytes .../_vendor/distlib/_backport/sysconfig.cfg | 84 + .../_vendor/distlib/_backport/sysconfig.py | 788 ++ .../_vendor/distlib/_backport/sysconfig.pyc | Bin 0 -> 20844 bytes .../pip/_vendor/distlib/_backport/tarfile.py | 2607 ++++++ .../pip/_vendor/distlib/_backport/tarfile.pyc | Bin 0 -> 78796 bytes .../pip/_vendor/distlib/compat.py | 1111 +++ .../pip/_vendor/distlib/compat.pyc | Bin 0 -> 39045 bytes .../pip/_vendor/distlib/database.py | 1312 +++ .../pip/_vendor/distlib/database.pyc | Bin 0 -> 48769 bytes .../pip/_vendor/distlib/index.py | 515 ++ .../pip/_vendor/distlib/index.pyc | Bin 0 -> 19932 bytes .../pip/_vendor/distlib/locators.py | 1283 +++ .../pip/_vendor/distlib/locators.pyc | Bin 0 -> 45523 bytes .../pip/_vendor/distlib/manifest.py | 393 + .../pip/_vendor/distlib/manifest.pyc | Bin 0 -> 12090 bytes .../pip/_vendor/distlib/markers.py | 190 + .../pip/_vendor/distlib/markers.pyc | Bin 0 -> 8007 bytes .../pip/_vendor/distlib/metadata.py | 1068 +++ .../pip/_vendor/distlib/metadata.pyc | Bin 0 -> 34712 bytes .../pip/_vendor/distlib/resources.py | 355 + .../pip/_vendor/distlib/resources.pyc | Bin 0 -> 13682 bytes .../pip/_vendor/distlib/scripts.py | 384 + .../pip/_vendor/distlib/scripts.pyc | Bin 0 -> 12338 bytes .../site-packages/pip/_vendor/distlib/t32.exe | Bin 0 -> 89088 bytes .../site-packages/pip/_vendor/distlib/t64.exe | Bin 0 -> 97792 bytes .../site-packages/pip/_vendor/distlib/util.py | 1611 ++++ .../pip/_vendor/distlib/util.pyc | Bin 0 -> 55930 bytes .../pip/_vendor/distlib/version.py | 742 ++ .../pip/_vendor/distlib/version.pyc | Bin 0 -> 25885 bytes .../site-packages/pip/_vendor/distlib/w32.exe | Bin 0 -> 85504 bytes .../site-packages/pip/_vendor/distlib/w64.exe | Bin 0 -> 94208 bytes .../pip/_vendor/distlib/wheel.py | 978 +++ .../pip/_vendor/distlib/wheel.pyc | Bin 0 -> 30884 bytes .../site-packages/pip/_vendor/distro.py | 1081 +++ .../site-packages/pip/_vendor/distro.pyc | Bin 0 -> 35622 bytes .../pip/_vendor/html5lib/__init__.py | 25 + .../pip/_vendor/html5lib/__init__.pyc | Bin 0 -> 1091 bytes .../pip/_vendor/html5lib/_ihatexml.py | 288 + .../pip/_vendor/html5lib/_ihatexml.pyc | Bin 0 -> 15414 bytes .../pip/_vendor/html5lib/_inputstream.py | 923 ++ .../pip/_vendor/html5lib/_inputstream.pyc | Bin 0 -> 27376 bytes .../pip/_vendor/html5lib/_tokenizer.py | 1721 ++++ .../pip/_vendor/html5lib/_tokenizer.pyc | Bin 0 -> 53345 bytes .../pip/_vendor/html5lib/_trie/__init__.py | 14 + .../pip/_vendor/html5lib/_trie/__init__.pyc | Bin 0 -> 435 bytes .../pip/_vendor/html5lib/_trie/_base.py | 38 + .../pip/_vendor/html5lib/_trie/_base.pyc | Bin 0 -> 1720 bytes .../pip/_vendor/html5lib/_trie/datrie.py | 44 + .../pip/_vendor/html5lib/_trie/datrie.pyc | Bin 0 -> 2702 bytes .../pip/_vendor/html5lib/_trie/py.py | 67 + .../pip/_vendor/html5lib/_trie/py.pyc | Bin 0 -> 2949 bytes .../pip/_vendor/html5lib/_utils.py | 127 + .../pip/_vendor/html5lib/_utils.pyc | Bin 0 -> 4383 bytes .../pip/_vendor/html5lib/constants.py | 2945 +++++++ .../pip/_vendor/html5lib/constants.pyc | Bin 0 -> 82923 bytes .../pip/_vendor/html5lib/filters/__init__.py | 0 .../pip/_vendor/html5lib/filters/__init__.pyc | Bin 0 -> 153 bytes .../filters/alphabeticalattributes.py | 20 + .../filters/alphabeticalattributes.pyc | Bin 0 -> 1366 bytes .../pip/_vendor/html5lib/filters/base.py | 12 + .../pip/_vendor/html5lib/filters/base.pyc | Bin 0 -> 1071 bytes .../html5lib/filters/inject_meta_charset.py | 65 + .../html5lib/filters/inject_meta_charset.pyc | Bin 0 -> 2225 bytes .../pip/_vendor/html5lib/filters/lint.py | 81 + .../pip/_vendor/html5lib/filters/lint.pyc | Bin 0 -> 3002 bytes .../_vendor/html5lib/filters/optionaltags.py | 206 + .../_vendor/html5lib/filters/optionaltags.pyc | Bin 0 -> 4362 bytes .../pip/_vendor/html5lib/filters/sanitizer.py | 865 ++ .../_vendor/html5lib/filters/sanitizer.pyc | Bin 0 -> 25715 bytes .../_vendor/html5lib/filters/whitespace.py | 38 + .../_vendor/html5lib/filters/whitespace.pyc | Bin 0 -> 1635 bytes .../pip/_vendor/html5lib/html5parser.py | 2733 ++++++ .../pip/_vendor/html5lib/html5parser.pyc | Bin 0 -> 121273 bytes .../pip/_vendor/html5lib/serializer.py | 334 + .../pip/_vendor/html5lib/serializer.pyc | Bin 0 -> 11773 bytes .../_vendor/html5lib/treeadapters/__init__.py | 12 + .../html5lib/treeadapters/__init__.pyc | Bin 0 -> 479 bytes .../_vendor/html5lib/treeadapters/genshi.py | 47 + .../_vendor/html5lib/treeadapters/genshi.pyc | Bin 0 -> 1711 bytes .../pip/_vendor/html5lib/treeadapters/sax.py | 44 + .../pip/_vendor/html5lib/treeadapters/sax.pyc | Bin 0 -> 1747 bytes .../_vendor/html5lib/treebuilders/__init__.py | 76 + .../html5lib/treebuilders/__init__.pyc | Bin 0 -> 3368 bytes .../pip/_vendor/html5lib/treebuilders/base.py | 383 + .../_vendor/html5lib/treebuilders/base.pyc | Bin 0 -> 14024 bytes .../pip/_vendor/html5lib/treebuilders/dom.py | 236 + .../pip/_vendor/html5lib/treebuilders/dom.pyc | Bin 0 -> 11402 bytes .../_vendor/html5lib/treebuilders/etree.py | 340 + .../_vendor/html5lib/treebuilders/etree.pyc | Bin 0 -> 14495 bytes .../html5lib/treebuilders/etree_lxml.py | 367 + .../html5lib/treebuilders/etree_lxml.pyc | Bin 0 -> 14998 bytes .../_vendor/html5lib/treewalkers/__init__.py | 143 + .../_vendor/html5lib/treewalkers/__init__.pyc | Bin 0 -> 4701 bytes .../pip/_vendor/html5lib/treewalkers/base.py | 150 + .../pip/_vendor/html5lib/treewalkers/base.pyc | Bin 0 -> 6223 bytes .../pip/_vendor/html5lib/treewalkers/dom.py | 43 + .../pip/_vendor/html5lib/treewalkers/dom.pyc | Bin 0 -> 2193 bytes .../pip/_vendor/html5lib/treewalkers/etree.py | 137 + .../_vendor/html5lib/treewalkers/etree.pyc | Bin 0 -> 4515 bytes .../html5lib/treewalkers/etree_lxml.py | 213 + .../html5lib/treewalkers/etree_lxml.pyc | Bin 0 -> 9018 bytes .../_vendor/html5lib/treewalkers/genshi.py | 69 + .../_vendor/html5lib/treewalkers/genshi.pyc | Bin 0 -> 2410 bytes .../site-packages/pip/_vendor/ipaddress.py | 2425 ++++++ .../site-packages/pip/_vendor/ipaddress.pyc | Bin 0 -> 76650 bytes .../pip/_vendor/lockfile/__init__.py | 347 + .../pip/_vendor/lockfile/__init__.pyc | Bin 0 -> 11909 bytes .../pip/_vendor/lockfile/linklockfile.py | 73 + .../pip/_vendor/lockfile/linklockfile.pyc | Bin 0 -> 2860 bytes .../pip/_vendor/lockfile/mkdirlockfile.py | 84 + .../pip/_vendor/lockfile/mkdirlockfile.pyc | Bin 0 -> 3370 bytes .../pip/_vendor/lockfile/pidlockfile.py | 190 + .../pip/_vendor/lockfile/pidlockfile.pyc | Bin 0 -> 5825 bytes .../pip/_vendor/lockfile/sqlitelockfile.py | 156 + .../pip/_vendor/lockfile/sqlitelockfile.pyc | Bin 0 -> 4640 bytes .../pip/_vendor/lockfile/symlinklockfile.py | 70 + .../pip/_vendor/lockfile/symlinklockfile.pyc | Bin 0 -> 2769 bytes .../site-packages/pip/_vendor/ordereddict.py | 127 + .../site-packages/pip/_vendor/ordereddict.pyc | Bin 0 -> 4452 bytes .../pip/_vendor/packaging/__about__.py | 21 + .../pip/_vendor/packaging/__about__.pyc | Bin 0 -> 775 bytes .../pip/_vendor/packaging/__init__.py | 14 + .../pip/_vendor/packaging/__init__.pyc | Bin 0 -> 597 bytes .../pip/_vendor/packaging/_compat.py | 30 + .../pip/_vendor/packaging/_compat.pyc | Bin 0 -> 1188 bytes .../pip/_vendor/packaging/_structures.py | 68 + .../pip/_vendor/packaging/_structures.pyc | Bin 0 -> 3879 bytes .../pip/_vendor/packaging/markers.py | 303 + .../pip/_vendor/packaging/markers.pyc | Bin 0 -> 11468 bytes .../pip/_vendor/packaging/requirements.py | 129 + .../pip/_vendor/packaging/requirements.pyc | Bin 0 -> 5026 bytes .../pip/_vendor/packaging/specifiers.py | 774 ++ .../pip/_vendor/packaging/specifiers.pyc | Bin 0 -> 24333 bytes .../pip/_vendor/packaging/utils.py | 14 + .../pip/_vendor/packaging/utils.pyc | Bin 0 -> 566 bytes .../pip/_vendor/packaging/version.py | 393 + .../pip/_vendor/packaging/version.pyc | Bin 0 -> 13769 bytes .../pip/_vendor/pkg_resources/__init__.py | 3052 +++++++ .../pip/_vendor/pkg_resources/__init__.pyc | Bin 0 -> 116698 bytes .../pip/_vendor/progress/__init__.py | 123 + .../pip/_vendor/progress/__init__.pyc | Bin 0 -> 5146 bytes .../site-packages/pip/_vendor/progress/bar.py | 83 + .../pip/_vendor/progress/bar.pyc | Bin 0 -> 3106 bytes .../pip/_vendor/progress/counter.py | 47 + .../pip/_vendor/progress/counter.pyc | Bin 0 -> 2079 bytes .../pip/_vendor/progress/helpers.py | 91 + .../pip/_vendor/progress/helpers.pyc | Bin 0 -> 3778 bytes .../pip/_vendor/progress/spinner.py | 40 + .../pip/_vendor/progress/spinner.pyc | Bin 0 -> 1556 bytes .../site-packages/pip/_vendor/pyparsing.py | 5696 ++++++++++++ .../site-packages/pip/_vendor/pyparsing.pyc | Bin 0 -> 227071 bytes .../site-packages/pip/_vendor/re-vendor.py | 34 + .../site-packages/pip/_vendor/re-vendor.pyc | Bin 0 -> 1420 bytes .../pip/_vendor/requests/__init__.py | 88 + .../pip/_vendor/requests/__init__.pyc | Bin 0 -> 2692 bytes .../pip/_vendor/requests/adapters.py | 503 ++ .../pip/_vendor/requests/adapters.pyc | Bin 0 -> 18051 bytes .../site-packages/pip/_vendor/requests/api.py | 148 + .../pip/_vendor/requests/api.pyc | Bin 0 -> 6560 bytes .../pip/_vendor/requests/auth.py | 252 + .../pip/_vendor/requests/auth.pyc | Bin 0 -> 8980 bytes .../pip/_vendor/requests/cacert.pem | 5616 ++++++++++++ .../pip/_vendor/requests/certs.py | 25 + .../pip/_vendor/requests/certs.pyc | Bin 0 -> 893 bytes .../pip/_vendor/requests/compat.py | 68 + .../pip/_vendor/requests/compat.pyc | Bin 0 -> 1694 bytes .../pip/_vendor/requests/cookies.py | 540 ++ .../pip/_vendor/requests/cookies.pyc | Bin 0 -> 21930 bytes .../pip/_vendor/requests/exceptions.py | 114 + .../pip/_vendor/requests/exceptions.pyc | Bin 0 -> 6185 bytes .../pip/_vendor/requests/hooks.py | 34 + .../pip/_vendor/requests/hooks.pyc | Bin 0 -> 1207 bytes .../pip/_vendor/requests/models.py | 873 ++ .../pip/_vendor/requests/models.pyc | Bin 0 -> 26530 bytes .../pip/_vendor/requests/packages/__init__.py | 36 + .../_vendor/requests/packages/__init__.pyc | Bin 0 -> 1632 bytes .../requests/packages/chardet/__init__.py | 32 + .../requests/packages/chardet/__init__.pyc | Bin 0 -> 843 bytes .../requests/packages/chardet/big5freq.py | 925 ++ .../requests/packages/chardet/big5freq.pyc | Bin 0 -> 113803 bytes .../requests/packages/chardet/big5prober.py | 42 + .../requests/packages/chardet/big5prober.pyc | Bin 0 -> 1184 bytes .../requests/packages/chardet/chardetect.py | 80 + .../requests/packages/chardet/chardetect.pyc | Bin 0 -> 3040 bytes .../packages/chardet/chardistribution.py | 231 + .../packages/chardet/chardistribution.pyc | Bin 0 -> 8123 bytes .../packages/chardet/charsetgroupprober.py | 106 + .../packages/chardet/charsetgroupprober.pyc | Bin 0 -> 2701 bytes .../packages/chardet/charsetprober.py | 62 + .../packages/chardet/charsetprober.pyc | Bin 0 -> 2380 bytes .../packages/chardet/codingstatemachine.py | 61 + .../packages/chardet/codingstatemachine.pyc | Bin 0 -> 1946 bytes .../requests/packages/chardet/compat.py | 34 + .../requests/packages/chardet/compat.pyc | Bin 0 -> 605 bytes .../requests/packages/chardet/constants.py | 39 + .../requests/packages/chardet/constants.pyc | Bin 0 -> 355 bytes .../requests/packages/chardet/cp949prober.py | 44 + .../requests/packages/chardet/cp949prober.pyc | Bin 0 -> 1192 bytes .../requests/packages/chardet/escprober.py | 86 + .../requests/packages/chardet/escprober.pyc | Bin 0 -> 2530 bytes .../requests/packages/chardet/escsm.py | 242 + .../requests/packages/chardet/escsm.pyc | Bin 0 -> 7327 bytes .../requests/packages/chardet/eucjpprober.py | 90 + .../requests/packages/chardet/eucjpprober.pyc | Bin 0 -> 2939 bytes .../requests/packages/chardet/euckrfreq.py | 596 ++ .../requests/packages/chardet/euckrfreq.pyc | Bin 0 -> 88794 bytes .../requests/packages/chardet/euckrprober.py | 42 + .../requests/packages/chardet/euckrprober.pyc | Bin 0 -> 1193 bytes .../requests/packages/chardet/euctwfreq.py | 428 + .../requests/packages/chardet/euctwfreq.pyc | Bin 0 -> 61192 bytes .../requests/packages/chardet/euctwprober.py | 41 + .../requests/packages/chardet/euctwprober.pyc | Bin 0 -> 1193 bytes .../requests/packages/chardet/gb2312freq.py | 472 + .../requests/packages/chardet/gb2312freq.pyc | Bin 0 -> 68810 bytes .../requests/packages/chardet/gb2312prober.py | 41 + .../packages/chardet/gb2312prober.pyc | Bin 0 -> 1200 bytes .../requests/packages/chardet/hebrewprober.py | 283 + .../packages/chardet/hebrewprober.pyc | Bin 0 -> 3634 bytes .../requests/packages/chardet/jisfreq.py | 569 ++ .../requests/packages/chardet/jisfreq.pyc | Bin 0 -> 84026 bytes .../requests/packages/chardet/jpcntx.py | 227 + .../requests/packages/chardet/jpcntx.pyc | Bin 0 -> 25377 bytes .../packages/chardet/langbulgarianmodel.py | 229 + .../packages/chardet/langbulgarianmodel.pyc | Bin 0 -> 24908 bytes .../packages/chardet/langcyrillicmodel.py | 329 + .../packages/chardet/langcyrillicmodel.pyc | Bin 0 -> 30590 bytes .../packages/chardet/langgreekmodel.py | 225 + .../packages/chardet/langgreekmodel.pyc | Bin 0 -> 24595 bytes .../packages/chardet/langhebrewmodel.py | 201 + .../packages/chardet/langhebrewmodel.pyc | Bin 0 -> 23415 bytes .../packages/chardet/langhungarianmodel.py | 225 + .../packages/chardet/langhungarianmodel.pyc | Bin 0 -> 24892 bytes .../packages/chardet/langthaimodel.py | 200 + .../packages/chardet/langthaimodel.pyc | Bin 0 -> 23401 bytes .../requests/packages/chardet/latin1prober.py | 139 + .../packages/chardet/latin1prober.pyc | Bin 0 -> 3611 bytes .../packages/chardet/mbcharsetprober.py | 86 + .../packages/chardet/mbcharsetprober.pyc | Bin 0 -> 2573 bytes .../packages/chardet/mbcsgroupprober.py | 54 + .../packages/chardet/mbcsgroupprober.pyc | Bin 0 -> 1315 bytes .../requests/packages/chardet/mbcssm.py | 572 ++ .../requests/packages/chardet/mbcssm.pyc | Bin 0 -> 17684 bytes .../packages/chardet/sbcharsetprober.py | 120 + .../packages/chardet/sbcharsetprober.pyc | Bin 0 -> 3458 bytes .../packages/chardet/sbcsgroupprober.py | 69 + .../packages/chardet/sbcsgroupprober.pyc | Bin 0 -> 2000 bytes .../requests/packages/chardet/sjisprober.py | 91 + .../requests/packages/chardet/sjisprober.pyc | Bin 0 -> 2966 bytes .../packages/chardet/universaldetector.py | 170 + .../packages/chardet/universaldetector.pyc | Bin 0 -> 4268 bytes .../requests/packages/chardet/utf8prober.py | 76 + .../requests/packages/chardet/utf8prober.pyc | Bin 0 -> 2356 bytes .../requests/packages/urllib3/__init__.py | 96 + .../requests/packages/urllib3/__init__.pyc | Bin 0 -> 3347 bytes .../requests/packages/urllib3/_collections.py | 324 + .../packages/urllib3/_collections.pyc | Bin 0 -> 13663 bytes .../requests/packages/urllib3/connection.py | 330 + .../requests/packages/urllib3/connection.pyc | Bin 0 -> 10551 bytes .../packages/urllib3/connectionpool.py | 866 ++ .../packages/urllib3/connectionpool.pyc | Bin 0 -> 26307 bytes .../packages/urllib3/contrib/__init__.py | 0 .../packages/urllib3/contrib/__init__.pyc | Bin 0 -> 170 bytes .../packages/urllib3/contrib/appengine.py | 231 + .../packages/urllib3/contrib/appengine.pyc | Bin 0 -> 8419 bytes .../packages/urllib3/contrib/ntlmpool.py | 115 + .../packages/urllib3/contrib/ntlmpool.pyc | Bin 0 -> 4055 bytes .../packages/urllib3/contrib/pyopenssl.py | 358 + .../packages/urllib3/contrib/pyopenssl.pyc | Bin 0 -> 12762 bytes .../packages/urllib3/contrib/socks.py | 172 + .../packages/urllib3/contrib/socks.pyc | Bin 0 -> 5468 bytes .../requests/packages/urllib3/exceptions.py | 209 + .../requests/packages/urllib3/exceptions.pyc | Bin 0 -> 11904 bytes .../requests/packages/urllib3/fields.py | 178 + .../requests/packages/urllib3/fields.pyc | Bin 0 -> 6938 bytes .../requests/packages/urllib3/filepost.py | 94 + .../requests/packages/urllib3/filepost.pyc | Bin 0 -> 3403 bytes .../packages/urllib3/packages/__init__.py | 5 + .../packages/urllib3/packages/__init__.pyc | Bin 0 -> 351 bytes .../packages/urllib3/packages/ordered_dict.py | 259 + .../urllib3/packages/ordered_dict.pyc | Bin 0 -> 10570 bytes .../requests/packages/urllib3/packages/six.py | 868 ++ .../packages/urllib3/packages/six.pyc | Bin 0 -> 33258 bytes .../packages/ssl_match_hostname/__init__.py | 13 + .../packages/ssl_match_hostname/__init__.pyc | Bin 0 -> 533 bytes .../ssl_match_hostname/_implementation.py | 105 + .../ssl_match_hostname/_implementation.pyc | Bin 0 -> 3003 bytes .../requests/packages/urllib3/poolmanager.py | 367 + .../requests/packages/urllib3/poolmanager.pyc | Bin 0 -> 13054 bytes .../requests/packages/urllib3/request.py | 151 + .../requests/packages/urllib3/request.pyc | Bin 0 -> 6229 bytes .../requests/packages/urllib3/response.py | 530 ++ .../requests/packages/urllib3/response.pyc | Bin 0 -> 17284 bytes .../packages/urllib3/util/__init__.py | 46 + .../packages/urllib3/util/__init__.pyc | Bin 0 -> 1331 bytes .../packages/urllib3/util/connection.py | 144 + .../packages/urllib3/util/connection.pyc | Bin 0 -> 4135 bytes .../requests/packages/urllib3/util/request.py | 72 + .../packages/urllib3/util/request.pyc | Bin 0 -> 2249 bytes .../packages/urllib3/util/response.py | 74 + .../packages/urllib3/util/response.pyc | Bin 0 -> 2286 bytes .../requests/packages/urllib3/util/retry.py | 300 + .../requests/packages/urllib3/util/retry.pyc | Bin 0 -> 10710 bytes .../requests/packages/urllib3/util/ssl_.py | 320 + .../requests/packages/urllib3/util/ssl_.pyc | Bin 0 -> 10458 bytes .../requests/packages/urllib3/util/timeout.py | 242 + .../packages/urllib3/util/timeout.pyc | Bin 0 -> 9884 bytes .../requests/packages/urllib3/util/url.py | 217 + .../requests/packages/urllib3/util/url.pyc | Bin 0 -> 6198 bytes .../pip/_vendor/requests/sessions.py | 712 ++ .../pip/_vendor/requests/sessions.pyc | Bin 0 -> 20954 bytes .../pip/_vendor/requests/status_codes.py | 91 + .../pip/_vendor/requests/status_codes.pyc | Bin 0 -> 6208 bytes .../pip/_vendor/requests/structures.py | 105 + .../pip/_vendor/requests/structures.pyc | Bin 0 -> 5286 bytes .../pip/_vendor/requests/utils.py | 817 ++ .../pip/_vendor/requests/utils.pyc | Bin 0 -> 22951 bytes .../site-packages/pip/_vendor/retrying.py | 267 + .../site-packages/pip/_vendor/retrying.pyc | Bin 0 -> 9988 bytes .../site-packages/pip/_vendor/six.py | 868 ++ .../site-packages/pip/_vendor/six.pyc | Bin 0 -> 30493 bytes .../pip/_vendor/webencodings/__init__.py | 342 + .../pip/_vendor/webencodings/__init__.pyc | Bin 0 -> 11336 bytes .../pip/_vendor/webencodings/labels.py | 231 + .../pip/_vendor/webencodings/labels.pyc | Bin 0 -> 5307 bytes .../pip/_vendor/webencodings/mklabels.py | 59 + .../pip/_vendor/webencodings/mklabels.pyc | Bin 0 -> 2216 bytes .../pip/_vendor/webencodings/tests.py | 153 + .../pip/_vendor/webencodings/tests.pyc | Bin 0 -> 6747 bytes .../_vendor/webencodings/x_user_defined.py | 325 + .../_vendor/webencodings/x_user_defined.pyc | Bin 0 -> 3302 bytes .../site-packages/pip/basecommand.py | 337 + .../site-packages/pip/basecommand.pyc | Bin 0 -> 8874 bytes .../python2.7/site-packages/pip/baseparser.py | 293 + .../site-packages/pip/baseparser.pyc | Bin 0 -> 10596 bytes .../python2.7/site-packages/pip/cmdoptions.py | 633 ++ .../site-packages/pip/cmdoptions.pyc | Bin 0 -> 15486 bytes .../site-packages/pip/commands/__init__.py | 86 + .../site-packages/pip/commands/__init__.pyc | Bin 0 -> 2601 bytes .../site-packages/pip/commands/check.py | 39 + .../site-packages/pip/commands/check.pyc | Bin 0 -> 1578 bytes .../site-packages/pip/commands/completion.py | 81 + .../site-packages/pip/commands/completion.pyc | Bin 0 -> 2866 bytes .../site-packages/pip/commands/download.py | 212 + .../site-packages/pip/commands/download.pyc | Bin 0 -> 6145 bytes .../site-packages/pip/commands/freeze.py | 87 + .../site-packages/pip/commands/freeze.pyc | Bin 0 -> 3193 bytes .../site-packages/pip/commands/hash.py | 57 + .../site-packages/pip/commands/hash.pyc | Bin 0 -> 2368 bytes .../site-packages/pip/commands/help.py | 35 + .../site-packages/pip/commands/help.pyc | Bin 0 -> 1331 bytes .../site-packages/pip/commands/install.py | 437 + .../site-packages/pip/commands/install.pyc | Bin 0 -> 11342 bytes .../site-packages/pip/commands/list.py | 337 + .../site-packages/pip/commands/list.pyc | Bin 0 -> 11008 bytes .../site-packages/pip/commands/search.py | 133 + .../site-packages/pip/commands/search.pyc | Bin 0 -> 4899 bytes .../site-packages/pip/commands/show.py | 154 + .../site-packages/pip/commands/show.pyc | Bin 0 -> 5725 bytes .../site-packages/pip/commands/uninstall.py | 76 + .../site-packages/pip/commands/uninstall.pyc | Bin 0 -> 3011 bytes .../site-packages/pip/commands/wheel.py | 208 + .../site-packages/pip/commands/wheel.pyc | Bin 0 -> 6331 bytes .../site-packages/pip/compat/__init__.py | 164 + .../site-packages/pip/compat/__init__.pyc | Bin 0 -> 5151 bytes .../site-packages/pip/compat/dictconfig.py | 565 ++ .../site-packages/pip/compat/dictconfig.pyc | Bin 0 -> 16440 bytes .../python2.7/site-packages/pip/download.py | 906 ++ .../python2.7/site-packages/pip/download.pyc | Bin 0 -> 24968 bytes .../python2.7/site-packages/pip/exceptions.py | 244 + .../site-packages/pip/exceptions.pyc | Bin 0 -> 12182 bytes env/lib/python2.7/site-packages/pip/index.py | 1102 +++ env/lib/python2.7/site-packages/pip/index.pyc | Bin 0 -> 34576 bytes .../python2.7/site-packages/pip/locations.py | 182 + .../python2.7/site-packages/pip/locations.pyc | Bin 0 -> 4734 bytes .../site-packages/pip/models/__init__.py | 4 + .../site-packages/pip/models/__init__.pyc | Bin 0 -> 253 bytes .../site-packages/pip/models/index.py | 16 + .../site-packages/pip/models/index.pyc | Bin 0 -> 1041 bytes .../site-packages/pip/operations/__init__.py | 0 .../site-packages/pip/operations/__init__.pyc | Bin 0 -> 139 bytes .../site-packages/pip/operations/check.py | 49 + .../site-packages/pip/operations/check.pyc | Bin 0 -> 1788 bytes .../site-packages/pip/operations/freeze.py | 132 + .../site-packages/pip/operations/freeze.pyc | Bin 0 -> 3678 bytes .../python2.7/site-packages/pip/pep425tags.py | 324 + .../site-packages/pip/pep425tags.pyc | Bin 0 -> 9431 bytes .../site-packages/pip/req/__init__.py | 10 + .../site-packages/pip/req/__init__.pyc | Bin 0 -> 475 bytes .../site-packages/pip/req/req_file.py | 342 + .../site-packages/pip/req/req_file.pyc | Bin 0 -> 10057 bytes .../site-packages/pip/req/req_install.py | 1204 +++ .../site-packages/pip/req/req_install.pyc | Bin 0 -> 35690 bytes .../site-packages/pip/req/req_set.py | 798 ++ .../site-packages/pip/req/req_set.pyc | Bin 0 -> 23494 bytes .../site-packages/pip/req/req_uninstall.py | 195 + .../site-packages/pip/req/req_uninstall.pyc | Bin 0 -> 7557 bytes .../site-packages/pip/status_codes.py | 8 + .../site-packages/pip/status_codes.pyc | Bin 0 -> 386 bytes .../site-packages/pip/utils/__init__.py | 852 ++ .../site-packages/pip/utils/__init__.pyc | Bin 0 -> 27318 bytes .../site-packages/pip/utils/appdirs.py | 248 + .../site-packages/pip/utils/appdirs.pyc | Bin 0 -> 8560 bytes .../site-packages/pip/utils/build.py | 42 + .../site-packages/pip/utils/build.pyc | Bin 0 -> 1670 bytes .../site-packages/pip/utils/deprecation.py | 76 + .../site-packages/pip/utils/deprecation.pyc | Bin 0 -> 2261 bytes .../site-packages/pip/utils/encoding.py | 31 + .../site-packages/pip/utils/encoding.pyc | Bin 0 -> 1268 bytes .../site-packages/pip/utils/filesystem.py | 28 + .../site-packages/pip/utils/filesystem.pyc | Bin 0 -> 766 bytes .../site-packages/pip/utils/glibc.py | 81 + .../site-packages/pip/utils/glibc.pyc | Bin 0 -> 1791 bytes .../site-packages/pip/utils/hashes.py | 92 + .../site-packages/pip/utils/hashes.pyc | Bin 0 -> 3877 bytes .../site-packages/pip/utils/logging.py | 130 + .../site-packages/pip/utils/logging.pyc | Bin 0 -> 4730 bytes .../site-packages/pip/utils/outdated.py | 162 + .../site-packages/pip/utils/outdated.pyc | Bin 0 -> 4999 bytes .../site-packages/pip/utils/packaging.py | 63 + .../site-packages/pip/utils/packaging.pyc | Bin 0 -> 2433 bytes .../pip/utils/setuptools_build.py | 8 + .../pip/utils/setuptools_build.pyc | Bin 0 -> 340 bytes .../python2.7/site-packages/pip/utils/ui.py | 344 + .../python2.7/site-packages/pip/utils/ui.pyc | Bin 0 -> 11431 bytes .../site-packages/pip/vcs/__init__.py | 366 + .../site-packages/pip/vcs/__init__.pyc | Bin 0 -> 12996 bytes .../python2.7/site-packages/pip/vcs/bazaar.py | 116 + .../site-packages/pip/vcs/bazaar.pyc | Bin 0 -> 4685 bytes .../python2.7/site-packages/pip/vcs/git.py | 300 + .../python2.7/site-packages/pip/vcs/git.pyc | Bin 0 -> 10866 bytes .../site-packages/pip/vcs/mercurial.py | 103 + .../site-packages/pip/vcs/mercurial.pyc | Bin 0 -> 4531 bytes .../site-packages/pip/vcs/subversion.py | 269 + .../site-packages/pip/vcs/subversion.pyc | Bin 0 -> 8552 bytes env/lib/python2.7/site-packages/pip/wheel.py | 853 ++ env/lib/python2.7/site-packages/pip/wheel.pyc | Bin 0 -> 25061 bytes .../site-packages/pkg_resources/__init__.py | 3083 +++++++ .../site-packages/pkg_resources/__init__.pyc | Bin 0 -> 116426 bytes .../pkg_resources/_vendor/__init__.py | 0 .../pkg_resources/_vendor/__init__.pyc | Bin 0 -> 153 bytes .../pkg_resources/_vendor/appdirs.py | 552 ++ .../pkg_resources/_vendor/appdirs.pyc | Bin 0 -> 20940 bytes .../_vendor/packaging/__about__.py | 21 + .../_vendor/packaging/__about__.pyc | Bin 0 -> 792 bytes .../_vendor/packaging/__init__.py | 14 + .../_vendor/packaging/__init__.pyc | Bin 0 -> 614 bytes .../_vendor/packaging/_compat.py | 30 + .../_vendor/packaging/_compat.pyc | Bin 0 -> 1256 bytes .../_vendor/packaging/_structures.py | 68 + .../_vendor/packaging/_structures.pyc | Bin 0 -> 4236 bytes .../_vendor/packaging/markers.py | 301 + .../_vendor/packaging/markers.pyc | Bin 0 -> 12072 bytes .../_vendor/packaging/requirements.py | 127 + .../_vendor/packaging/requirements.pyc | Bin 0 -> 5197 bytes .../_vendor/packaging/specifiers.py | 774 ++ .../_vendor/packaging/specifiers.pyc | Bin 0 -> 25540 bytes .../pkg_resources/_vendor/packaging/utils.py | 14 + .../pkg_resources/_vendor/packaging/utils.pyc | Bin 0 -> 600 bytes .../_vendor/packaging/version.py | 393 + .../_vendor/packaging/version.pyc | Bin 0 -> 14602 bytes .../pkg_resources/_vendor/pyparsing.py | 5696 ++++++++++++ .../pkg_resources/_vendor/pyparsing.pyc | Bin 0 -> 234449 bytes .../pkg_resources/_vendor/six.py | 868 ++ .../pkg_resources/_vendor/six.pyc | Bin 0 -> 31836 bytes .../pkg_resources/extern/__init__.py | 73 + .../pkg_resources/extern/__init__.pyc | Bin 0 -> 2969 bytes .../site-packages/pkg_resources/py31compat.py | 22 + .../pkg_resources/py31compat.pyc | Bin 0 -> 812 bytes .../praw-5.0.1.dist-info/DESCRIPTION.rst | 158 + .../praw-5.0.1.dist-info/INSTALLER | 1 + .../praw-5.0.1.dist-info/METADATA | 186 + .../site-packages/praw-5.0.1.dist-info/RECORD | 116 + .../site-packages/praw-5.0.1.dist-info/WHEEL | 6 + .../praw-5.0.1.dist-info/metadata.json | 1 + .../praw-5.0.1.dist-info/top_level.txt | 1 + .../python2.7/site-packages/praw/__init__.py | 14 + .../python2.7/site-packages/praw/__init__.pyc | Bin 0 -> 690 bytes .../python2.7/site-packages/praw/config.py | 109 + .../python2.7/site-packages/praw/config.pyc | Bin 0 -> 4950 bytes env/lib/python2.7/site-packages/praw/const.py | 187 + .../python2.7/site-packages/praw/const.pyc | Bin 0 -> 9561 bytes .../site-packages/praw/exceptions.py | 35 + .../site-packages/praw/exceptions.pyc | Bin 0 -> 1867 bytes .../site-packages/praw/models/__init__.py | 31 + .../site-packages/praw/models/__init__.pyc | Bin 0 -> 2203 bytes .../site-packages/praw/models/auth.py | 121 + .../site-packages/praw/models/auth.pyc | Bin 0 -> 5943 bytes .../site-packages/praw/models/base.py | 41 + .../site-packages/praw/models/base.pyc | Bin 0 -> 1878 bytes .../praw/models/comment_forest.py | 178 + .../praw/models/comment_forest.pyc | Bin 0 -> 6582 bytes .../site-packages/praw/models/front.py | 11 + .../site-packages/praw/models/front.pyc | Bin 0 -> 799 bytes .../site-packages/praw/models/helpers.py | 194 + .../site-packages/praw/models/helpers.pyc | Bin 0 -> 8542 bytes .../site-packages/praw/models/inbox.py | 235 + .../site-packages/praw/models/inbox.pyc | Bin 0 -> 8727 bytes .../praw/models/list/__init__.py | 1 + .../praw/models/list/__init__.pyc | Bin 0 -> 211 bytes .../site-packages/praw/models/list/base.py | 43 + .../site-packages/praw/models/list/base.pyc | Bin 0 -> 2284 bytes .../praw/models/list/redditor.py | 8 + .../praw/models/list/redditor.pyc | Bin 0 -> 565 bytes .../praw/models/listing/__init__.py | 1 + .../praw/models/listing/__init__.pyc | Bin 0 -> 234 bytes .../praw/models/listing/domain.py | 17 + .../praw/models/listing/domain.pyc | Bin 0 -> 1097 bytes .../praw/models/listing/generator.py | 79 + .../praw/models/listing/generator.pyc | Bin 0 -> 3436 bytes .../praw/models/listing/listing.py | 35 + .../praw/models/listing/listing.pyc | Bin 0 -> 1964 bytes .../praw/models/listing/mixins/__init__.py | 6 + .../praw/models/listing/mixins/__init__.pyc | Bin 0 -> 560 bytes .../praw/models/listing/mixins/base.py | 125 + .../praw/models/listing/mixins/base.pyc | Bin 0 -> 5381 bytes .../praw/models/listing/mixins/gilded.py | 18 + .../praw/models/listing/mixins/gilded.pyc | Bin 0 -> 1071 bytes .../praw/models/listing/mixins/redditor.py | 137 + .../praw/models/listing/mixins/redditor.pyc | Bin 0 -> 6404 bytes .../praw/models/listing/mixins/rising.py | 29 + .../praw/models/listing/mixins/rising.pyc | Bin 0 -> 1501 bytes .../praw/models/listing/mixins/submission.py | 18 + .../praw/models/listing/mixins/submission.pyc | Bin 0 -> 1202 bytes .../praw/models/listing/mixins/subreddit.py | 66 + .../praw/models/listing/mixins/subreddit.pyc | Bin 0 -> 3190 bytes .../site-packages/praw/models/modaction.py | 16 + .../site-packages/praw/models/modaction.pyc | Bin 0 -> 944 bytes .../praw/models/reddit/__init__.py | 1 + .../praw/models/reddit/__init__.pyc | Bin 0 -> 213 bytes .../site-packages/praw/models/reddit/base.py | 83 + .../site-packages/praw/models/reddit/base.pyc | Bin 0 -> 4117 bytes .../praw/models/reddit/comment.py | 181 + .../praw/models/reddit/comment.pyc | Bin 0 -> 7460 bytes .../site-packages/praw/models/reddit/live.py | 649 ++ .../site-packages/praw/models/reddit/live.pyc | Bin 0 -> 25359 bytes .../praw/models/reddit/message.py | 59 + .../praw/models/reddit/message.pyc | Bin 0 -> 2717 bytes .../praw/models/reddit/mixins/__init__.py | 84 + .../praw/models/reddit/mixins/__init__.pyc | Bin 0 -> 4770 bytes .../praw/models/reddit/mixins/editable.py | 26 + .../praw/models/reddit/mixins/editable.pyc | Bin 0 -> 1551 bytes .../praw/models/reddit/mixins/gildable.py | 11 + .../praw/models/reddit/mixins/gildable.pyc | Bin 0 -> 851 bytes .../praw/models/reddit/mixins/inboxable.py | 35 + .../praw/models/reddit/mixins/inboxable.pyc | Bin 0 -> 1771 bytes .../models/reddit/mixins/inboxtoggleable.py | 16 + .../models/reddit/mixins/inboxtoggleable.pyc | Bin 0 -> 1280 bytes .../praw/models/reddit/mixins/messageable.py | 45 + .../praw/models/reddit/mixins/messageable.pyc | Bin 0 -> 2165 bytes .../praw/models/reddit/mixins/replyable.py | 16 + .../praw/models/reddit/mixins/replyable.pyc | Bin 0 -> 1063 bytes .../praw/models/reddit/mixins/reportable.py | 15 + .../praw/models/reddit/mixins/reportable.pyc | Bin 0 -> 976 bytes .../praw/models/reddit/mixins/savable.py | 20 + .../praw/models/reddit/mixins/savable.pyc | Bin 0 -> 1291 bytes .../praw/models/reddit/mixins/votable.py | 46 + .../praw/models/reddit/mixins/votable.pyc | Bin 0 -> 2690 bytes .../praw/models/reddit/modmail.py | 267 + .../praw/models/reddit/modmail.pyc | Bin 0 -> 11022 bytes .../site-packages/praw/models/reddit/more.py | 69 + .../site-packages/praw/models/reddit/more.pyc | Bin 0 -> 3410 bytes .../site-packages/praw/models/reddit/multi.py | 137 + .../praw/models/reddit/multi.pyc | Bin 0 -> 6458 bytes .../praw/models/reddit/redditor.py | 95 + .../praw/models/reddit/redditor.pyc | Bin 0 -> 4738 bytes .../praw/models/reddit/submission.py | 418 + .../praw/models/reddit/submission.pyc | Bin 0 -> 16844 bytes .../praw/models/reddit/subreddit.py | 2128 +++++ .../praw/models/reddit/subreddit.pyc | Bin 0 -> 84506 bytes .../praw/models/reddit/wikipage.py | 181 + .../praw/models/reddit/wikipage.pyc | Bin 0 -> 8463 bytes .../site-packages/praw/models/stylesheet.py | 7 + .../site-packages/praw/models/stylesheet.pyc | Bin 0 -> 485 bytes .../site-packages/praw/models/subreddits.py | 103 + .../site-packages/praw/models/subreddits.pyc | Bin 0 -> 5295 bytes .../site-packages/praw/models/user.py | 86 + .../site-packages/praw/models/user.pyc | Bin 0 -> 4186 bytes .../site-packages/praw/models/util.py | 175 + .../site-packages/praw/models/util.pyc | Bin 0 -> 7428 bytes .../python2.7/site-packages/praw/objector.py | 137 + .../python2.7/site-packages/praw/objector.pyc | Bin 0 -> 5011 bytes env/lib/python2.7/site-packages/praw/praw.ini | 19 + .../python2.7/site-packages/praw/reddit.py | 484 ++ .../python2.7/site-packages/praw/reddit.pyc | Bin 0 -> 15802 bytes .../prawcore-0.11.0.dist-info/DESCRIPTION.rst | 94 + .../prawcore-0.11.0.dist-info/INSTALLER | 1 + .../prawcore-0.11.0.dist-info/METADATA | 119 + .../prawcore-0.11.0.dist-info/RECORD | 23 + .../prawcore-0.11.0.dist-info/WHEEL | 6 + .../prawcore-0.11.0.dist-info/metadata.json | 1 + .../prawcore-0.11.0.dist-info/top_level.txt | 1 + .../site-packages/prawcore/__init__.py | 13 + .../site-packages/prawcore/__init__.pyc | Bin 0 -> 824 bytes .../python2.7/site-packages/prawcore/auth.py | 328 + .../python2.7/site-packages/prawcore/auth.pyc | Bin 0 -> 15562 bytes .../python2.7/site-packages/prawcore/const.py | 9 + .../site-packages/prawcore/const.pyc | Bin 0 -> 514 bytes .../site-packages/prawcore/exceptions.py | 122 + .../site-packages/prawcore/exceptions.pyc | Bin 0 -> 6243 bytes .../site-packages/prawcore/rate_limit.py | 80 + .../site-packages/prawcore/rate_limit.pyc | Bin 0 -> 3113 bytes .../site-packages/prawcore/requestor.py | 49 + .../site-packages/prawcore/requestor.pyc | Bin 0 -> 2802 bytes .../site-packages/prawcore/sessions.py | 184 + .../site-packages/prawcore/sessions.pyc | Bin 0 -> 7994 bytes .../python2.7/site-packages/prawcore/util.py | 21 + .../python2.7/site-packages/prawcore/util.pyc | Bin 0 -> 960 bytes .../requests-2.18.4.dist-info/DESCRIPTION.rst | 1645 ++++ .../requests-2.18.4.dist-info/INSTALLER | 1 + .../requests-2.18.4.dist-info/METADATA | 1680 ++++ .../requests-2.18.4.dist-info/RECORD | 43 + .../requests-2.18.4.dist-info/WHEEL | 6 + .../requests-2.18.4.dist-info/metadata.json | 1 + .../requests-2.18.4.dist-info/top_level.txt | 1 + .../site-packages/requests/__init__.py | 121 + .../site-packages/requests/__init__.pyc | Bin 0 -> 3872 bytes .../site-packages/requests/__version__.py | 14 + .../site-packages/requests/__version__.pyc | Bin 0 -> 573 bytes .../site-packages/requests/_internal_utils.py | 42 + .../requests/_internal_utils.pyc | Bin 0 -> 1493 bytes .../site-packages/requests/adapters.py | 525 ++ .../site-packages/requests/adapters.pyc | Bin 0 -> 18613 bytes .../python2.7/site-packages/requests/api.py | 152 + .../python2.7/site-packages/requests/api.pyc | Bin 0 -> 6934 bytes .../python2.7/site-packages/requests/auth.py | 293 + .../python2.7/site-packages/requests/auth.pyc | Bin 0 -> 9602 bytes .../python2.7/site-packages/requests/certs.py | 18 + .../site-packages/requests/certs.pyc | Bin 0 -> 592 bytes .../site-packages/requests/compat.py | 69 + .../site-packages/requests/compat.pyc | Bin 0 -> 1862 bytes .../site-packages/requests/cookies.py | 542 ++ .../site-packages/requests/cookies.pyc | Bin 0 -> 21662 bytes .../site-packages/requests/exceptions.py | 122 + .../site-packages/requests/exceptions.pyc | Bin 0 -> 6570 bytes .../python2.7/site-packages/requests/help.py | 120 + .../python2.7/site-packages/requests/help.pyc | Bin 0 -> 3281 bytes .../python2.7/site-packages/requests/hooks.py | 34 + .../site-packages/requests/hooks.pyc | Bin 0 -> 1179 bytes .../site-packages/requests/models.py | 948 ++ .../site-packages/requests/models.pyc | Bin 0 -> 28439 bytes .../site-packages/requests/packages.py | 14 + .../site-packages/requests/packages.pyc | Bin 0 -> 475 bytes .../site-packages/requests/sessions.py | 737 ++ .../site-packages/requests/sessions.pyc | Bin 0 -> 21283 bytes .../site-packages/requests/status_codes.py | 91 + .../site-packages/requests/status_codes.pyc | Bin 0 -> 6223 bytes .../site-packages/requests/structures.py | 105 + .../site-packages/requests/structures.pyc | Bin 0 -> 5153 bytes .../python2.7/site-packages/requests/utils.py | 904 ++ .../site-packages/requests/utils.pyc | Bin 0 -> 25026 bytes .../DESCRIPTION.rst | 25 + .../setuptools-36.3.0.dist-info/INSTALLER | 1 + .../setuptools-36.3.0.dist-info/METADATA | 57 + .../setuptools-36.3.0.dist-info/RECORD | 155 + .../setuptools-36.3.0.dist-info/WHEEL | 6 + .../dependency_links.txt | 2 + .../entry_points.txt | 64 + .../setuptools-36.3.0.dist-info/metadata.json | 1 + .../setuptools-36.3.0.dist-info/top_level.txt | 3 + .../setuptools-36.3.0.dist-info/zip-safe | 1 + .../site-packages/setuptools/__init__.py | 160 + .../site-packages/setuptools/__init__.pyc | Bin 0 -> 6792 bytes .../site-packages/setuptools/archive_util.py | 173 + .../site-packages/setuptools/archive_util.pyc | Bin 0 -> 6165 bytes .../site-packages/setuptools/cli-32.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/cli-64.exe | Bin 0 -> 74752 bytes .../site-packages/setuptools/cli.exe | Bin 0 -> 65536 bytes .../setuptools/command/__init__.py | 17 + .../setuptools/command/__init__.pyc | Bin 0 -> 863 bytes .../site-packages/setuptools/command/alias.py | 80 + .../setuptools/command/alias.pyc | Bin 0 -> 3104 bytes .../setuptools/command/bdist_egg.py | 472 + .../setuptools/command/bdist_egg.pyc | Bin 0 -> 17557 bytes .../setuptools/command/bdist_rpm.py | 43 + .../setuptools/command/bdist_rpm.pyc | Bin 0 -> 1914 bytes .../setuptools/command/bdist_wininst.py | 21 + .../setuptools/command/bdist_wininst.pyc | Bin 0 -> 1209 bytes .../setuptools/command/build_clib.py | 98 + .../setuptools/command/build_clib.pyc | Bin 0 -> 2844 bytes .../setuptools/command/build_ext.py | 328 + .../setuptools/command/build_ext.pyc | Bin 0 -> 12519 bytes .../setuptools/command/build_py.py | 270 + .../setuptools/command/build_py.pyc | Bin 0 -> 10667 bytes .../setuptools/command/develop.py | 214 + .../setuptools/command/develop.pyc | Bin 0 -> 7907 bytes .../setuptools/command/easy_install.py | 2301 +++++ .../setuptools/command/easy_install.pyc | Bin 0 -> 79731 bytes .../setuptools/command/egg_info.py | 697 ++ .../setuptools/command/egg_info.pyc | Bin 0 -> 25945 bytes .../setuptools/command/install.py | 125 + .../setuptools/command/install.pyc | Bin 0 -> 4953 bytes .../setuptools/command/install_egg_info.py | 62 + .../setuptools/command/install_egg_info.pyc | Bin 0 -> 3207 bytes .../setuptools/command/install_lib.py | 121 + .../setuptools/command/install_lib.pyc | Bin 0 -> 4870 bytes .../setuptools/command/install_scripts.py | 65 + .../setuptools/command/install_scripts.pyc | Bin 0 -> 2891 bytes .../setuptools/command/launcher manifest.xml | 15 + .../setuptools/command/py36compat.py | 136 + .../setuptools/command/py36compat.pyc | Bin 0 -> 5550 bytes .../setuptools/command/register.py | 10 + .../setuptools/command/register.pyc | Bin 0 -> 710 bytes .../setuptools/command/rotate.py | 66 + .../setuptools/command/rotate.pyc | Bin 0 -> 3052 bytes .../setuptools/command/saveopts.py | 22 + .../setuptools/command/saveopts.pyc | Bin 0 -> 1129 bytes .../site-packages/setuptools/command/sdist.py | 206 + .../setuptools/command/sdist.pyc | Bin 0 -> 7728 bytes .../setuptools/command/setopt.py | 149 + .../setuptools/command/setopt.pyc | Bin 0 -> 6056 bytes .../site-packages/setuptools/command/test.py | 258 + .../site-packages/setuptools/command/test.pyc | Bin 0 -> 10237 bytes .../setuptools/command/upload.py | 42 + .../setuptools/command/upload.pyc | Bin 0 -> 1636 bytes .../setuptools/command/upload_docs.py | 206 + .../setuptools/command/upload_docs.pyc | Bin 0 -> 7842 bytes .../site-packages/setuptools/config.py | 554 ++ .../site-packages/setuptools/config.pyc | Bin 0 -> 16853 bytes .../site-packages/setuptools/dep_util.py | 23 + .../site-packages/setuptools/dep_util.pyc | Bin 0 -> 965 bytes .../site-packages/setuptools/depends.py | 186 + .../site-packages/setuptools/depends.pyc | Bin 0 -> 6518 bytes .../site-packages/setuptools/dist.py | 1008 +++ .../site-packages/setuptools/dist.pyc | Bin 0 -> 39852 bytes .../site-packages/setuptools/extension.py | 57 + .../site-packages/setuptools/extension.pyc | Bin 0 -> 2418 bytes .../setuptools/extern/__init__.py | 4 + .../setuptools/extern/__init__.pyc | Bin 0 -> 338 bytes .../site-packages/setuptools/glob.py | 176 + .../site-packages/setuptools/glob.pyc | Bin 0 -> 4818 bytes .../site-packages/setuptools/gui-32.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/gui-64.exe | Bin 0 -> 75264 bytes .../site-packages/setuptools/gui.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/launch.py | 35 + .../site-packages/setuptools/launch.pyc | Bin 0 -> 1006 bytes .../site-packages/setuptools/lib2to3_ex.py | 62 + .../site-packages/setuptools/lib2to3_ex.pyc | Bin 0 -> 3004 bytes .../site-packages/setuptools/monkey.py | 197 + .../site-packages/setuptools/monkey.pyc | Bin 0 -> 6349 bytes .../site-packages/setuptools/msvc.py | 1302 +++ .../site-packages/setuptools/msvc.pyc | Bin 0 -> 40357 bytes .../site-packages/setuptools/namespaces.py | 107 + .../site-packages/setuptools/namespaces.pyc | Bin 0 -> 5033 bytes .../site-packages/setuptools/package_index.py | 1115 +++ .../setuptools/package_index.pyc | Bin 0 -> 40032 bytes .../site-packages/setuptools/py26compat.py | 31 + .../site-packages/setuptools/py26compat.pyc | Bin 0 -> 1297 bytes .../site-packages/setuptools/py27compat.py | 28 + .../site-packages/setuptools/py27compat.pyc | Bin 0 -> 1045 bytes .../site-packages/setuptools/py31compat.py | 56 + .../site-packages/setuptools/py31compat.pyc | Bin 0 -> 2389 bytes .../site-packages/setuptools/py33compat.py | 45 + .../site-packages/setuptools/py33compat.pyc | Bin 0 -> 1502 bytes .../site-packages/setuptools/py36compat.py | 82 + .../site-packages/setuptools/py36compat.pyc | Bin 0 -> 2876 bytes .../site-packages/setuptools/sandbox.py | 495 ++ .../site-packages/setuptools/sandbox.pyc | Bin 0 -> 19137 bytes .../setuptools/script (dev).tmpl | 5 + .../site-packages/setuptools/script.tmpl | 3 + .../site-packages/setuptools/site-patch.py | 74 + .../site-packages/setuptools/site-patch.pyc | Bin 0 -> 1739 bytes .../site-packages/setuptools/ssl_support.py | 255 + .../site-packages/setuptools/ssl_support.pyc | Bin 0 -> 8376 bytes .../site-packages/setuptools/unicode_utils.py | 44 + .../setuptools/unicode_utils.pyc | Bin 0 -> 1472 bytes .../site-packages/setuptools/version.py | 6 + .../site-packages/setuptools/version.pyc | Bin 0 -> 322 bytes .../setuptools/windows_support.py | 29 + .../setuptools/windows_support.pyc | Bin 0 -> 1274 bytes .../DESCRIPTION.rst | 43 + .../update_checker-0.16.dist-info/INSTALLER | 1 + .../update_checker-0.16.dist-info/METADATA | 63 + .../update_checker-0.16.dist-info/RECORD | 11 + .../update_checker-0.16.dist-info/WHEEL | 6 + .../metadata.json | 1 + .../top_level.txt | 2 + .../python2.7/site-packages/update_checker.py | 250 + .../site-packages/update_checker.pyc | Bin 0 -> 9627 bytes .../site-packages/update_checker_test.py | 81 + .../site-packages/update_checker_test.pyc | Bin 0 -> 3920 bytes .../urllib3-1.22.dist-info/DESCRIPTION.rst | 995 +++ .../urllib3-1.22.dist-info/INSTALLER | 1 + .../urllib3-1.22.dist-info/METADATA | 1031 +++ .../urllib3-1.22.dist-info/RECORD | 79 + .../urllib3-1.22.dist-info/WHEEL | 6 + .../urllib3-1.22.dist-info/metadata.json | 1 + .../urllib3-1.22.dist-info/top_level.txt | 1 + .../site-packages/urllib3/__init__.py | 97 + .../site-packages/urllib3/__init__.pyc | Bin 0 -> 3217 bytes .../site-packages/urllib3/_collections.py | 319 + .../site-packages/urllib3/_collections.pyc | Bin 0 -> 12640 bytes .../site-packages/urllib3/connection.py | 373 + .../site-packages/urllib3/connection.pyc | Bin 0 -> 10601 bytes .../site-packages/urllib3/connectionpool.py | 905 ++ .../site-packages/urllib3/connectionpool.pyc | Bin 0 -> 26791 bytes .../site-packages/urllib3/contrib/__init__.py | 0 .../urllib3/contrib/__init__.pyc | Bin 0 -> 144 bytes .../contrib/_securetransport/__init__.py | 0 .../contrib/_securetransport/__init__.pyc | Bin 0 -> 161 bytes .../contrib/_securetransport/bindings.py | 593 ++ .../contrib/_securetransport/bindings.pyc | Bin 0 -> 12173 bytes .../contrib/_securetransport/low_level.py | 343 + .../contrib/_securetransport/low_level.pyc | Bin 0 -> 9219 bytes .../urllib3/contrib/appengine.py | 296 + .../urllib3/contrib/appengine.pyc | Bin 0 -> 10252 bytes .../site-packages/urllib3/contrib/ntlmpool.py | 112 + .../urllib3/contrib/ntlmpool.pyc | Bin 0 -> 3868 bytes .../urllib3/contrib/pyopenssl.py | 455 + .../urllib3/contrib/pyopenssl.pyc | Bin 0 -> 17073 bytes .../urllib3/contrib/securetransport.py | 810 ++ .../urllib3/contrib/securetransport.pyc | Bin 0 -> 22150 bytes .../site-packages/urllib3/contrib/socks.py | 188 + .../site-packages/urllib3/contrib/socks.pyc | Bin 0 -> 5591 bytes .../site-packages/urllib3/exceptions.py | 246 + .../site-packages/urllib3/exceptions.pyc | Bin 0 -> 12649 bytes .../python2.7/site-packages/urllib3/fields.py | 178 + .../site-packages/urllib3/fields.pyc | Bin 0 -> 6664 bytes .../site-packages/urllib3/filepost.py | 94 + .../site-packages/urllib3/filepost.pyc | Bin 0 -> 3222 bytes .../urllib3/packages/__init__.py | 5 + .../urllib3/packages/__init__.pyc | Bin 0 -> 325 bytes .../urllib3/packages/backports/__init__.py | 0 .../urllib3/packages/backports/__init__.pyc | Bin 0 -> 155 bytes .../urllib3/packages/backports/makefile.py | 53 + .../urllib3/packages/backports/makefile.pyc | Bin 0 -> 1595 bytes .../urllib3/packages/ordered_dict.py | 259 + .../urllib3/packages/ordered_dict.pyc | Bin 0 -> 9868 bytes .../site-packages/urllib3/packages/six.py | 868 ++ .../site-packages/urllib3/packages/six.pyc | Bin 0 -> 31204 bytes .../packages/ssl_match_hostname/__init__.py | 19 + .../packages/ssl_match_hostname/__init__.pyc | Bin 0 -> 635 bytes .../ssl_match_hostname/_implementation.py | 157 + .../ssl_match_hostname/_implementation.pyc | Bin 0 -> 4196 bytes .../site-packages/urllib3/poolmanager.py | 440 + .../site-packages/urllib3/poolmanager.pyc | Bin 0 -> 14698 bytes .../site-packages/urllib3/request.py | 148 + .../site-packages/urllib3/request.pyc | Bin 0 -> 5993 bytes .../site-packages/urllib3/response.py | 626 ++ .../site-packages/urllib3/response.pyc | Bin 0 -> 19003 bytes .../site-packages/urllib3/util/__init__.py | 54 + .../site-packages/urllib3/util/__init__.pyc | Bin 0 -> 1505 bytes .../site-packages/urllib3/util/connection.py | 130 + .../site-packages/urllib3/util/connection.pyc | Bin 0 -> 3781 bytes .../site-packages/urllib3/util/request.py | 118 + .../site-packages/urllib3/util/request.pyc | Bin 0 -> 3697 bytes .../site-packages/urllib3/util/response.py | 81 + .../site-packages/urllib3/util/response.pyc | Bin 0 -> 2237 bytes .../site-packages/urllib3/util/retry.py | 401 + .../site-packages/urllib3/util/retry.pyc | Bin 0 -> 14085 bytes .../site-packages/urllib3/util/selectors.py | 581 ++ .../site-packages/urllib3/util/selectors.pyc | Bin 0 -> 20175 bytes .../site-packages/urllib3/util/ssl_.py | 341 + .../site-packages/urllib3/util/ssl_.pyc | Bin 0 -> 10400 bytes .../site-packages/urllib3/util/timeout.py | 242 + .../site-packages/urllib3/util/timeout.pyc | Bin 0 -> 9551 bytes .../site-packages/urllib3/util/url.py | 230 + .../site-packages/urllib3/util/url.pyc | Bin 0 -> 6228 bytes .../site-packages/urllib3/util/wait.py | 40 + .../site-packages/urllib3/util/wait.pyc | Bin 0 -> 1782 bytes .../wheel-0.29.0.dist-info/DESCRIPTION.rst | 325 + .../wheel-0.29.0.dist-info/INSTALLER | 1 + .../wheel-0.29.0.dist-info/LICENSE.txt | 22 + .../wheel-0.29.0.dist-info/METADATA | 357 + .../wheel-0.29.0.dist-info/RECORD | 82 + .../wheel-0.29.0.dist-info/WHEEL | 6 + .../wheel-0.29.0.dist-info/entry_points.txt | 5 + .../wheel-0.29.0.dist-info/metadata.json | 1 + .../wheel-0.29.0.dist-info/top_level.txt | 1 + .../python2.7/site-packages/wheel/__init__.py | 2 + .../site-packages/wheel/__init__.pyc | Bin 0 -> 165 bytes .../python2.7/site-packages/wheel/__main__.py | 17 + .../site-packages/wheel/__main__.pyc | Bin 0 -> 705 bytes .../python2.7/site-packages/wheel/archive.py | 80 + .../python2.7/site-packages/wheel/archive.pyc | Bin 0 -> 2574 bytes .../site-packages/wheel/bdist_wheel.py | 453 + .../site-packages/wheel/bdist_wheel.pyc | Bin 0 -> 15760 bytes .../site-packages/wheel/decorator.py | 19 + .../site-packages/wheel/decorator.pyc | Bin 0 -> 1021 bytes .../site-packages/wheel/egg2wheel.py | 73 + .../site-packages/wheel/egg2wheel.pyc | Bin 0 -> 2979 bytes .../site-packages/wheel/eggnames.txt | 87 + .../python2.7/site-packages/wheel/install.py | 480 ++ .../python2.7/site-packages/wheel/install.pyc | Bin 0 -> 17294 bytes .../python2.7/site-packages/wheel/metadata.py | 317 + .../site-packages/wheel/metadata.pyc | Bin 0 -> 9942 bytes .../python2.7/site-packages/wheel/paths.py | 41 + .../python2.7/site-packages/wheel/paths.pyc | Bin 0 -> 1334 bytes .../site-packages/wheel/pep425tags.py | 169 + .../site-packages/wheel/pep425tags.pyc | Bin 0 -> 5590 bytes .../python2.7/site-packages/wheel/pkginfo.py | 44 + .../python2.7/site-packages/wheel/pkginfo.pyc | Bin 0 -> 1981 bytes .../wheel/signatures/__init__.py | 106 + .../wheel/signatures/__init__.pyc | Bin 0 -> 3686 bytes .../site-packages/wheel/signatures/djbec.py | 270 + .../site-packages/wheel/signatures/djbec.pyc | Bin 0 -> 11215 bytes .../wheel/signatures/ed25519py.py | 52 + .../wheel/signatures/ed25519py.pyc | Bin 0 -> 2111 bytes .../site-packages/wheel/signatures/keys.py | 99 + .../site-packages/wheel/signatures/keys.pyc | Bin 0 -> 4541 bytes .../site-packages/wheel/test/__init__.py | 1 + .../site-packages/wheel/test/__init__.pyc | Bin 0 -> 137 bytes .../test/complex-dist/complexdist/__init__.py | 2 + .../complex-dist/complexdist/__init__.pyc | Bin 0 -> 328 bytes .../wheel/test/complex-dist/setup.py | 30 + .../wheel/test/complex-dist/setup.pyc | Bin 0 -> 1325 bytes .../wheel/test/headers.dist/header.h | 0 .../wheel/test/headers.dist/headersdist.py | 0 .../wheel/test/headers.dist/headersdist.pyc | Bin 0 -> 153 bytes .../wheel/test/headers.dist/setup.py | 16 + .../wheel/test/headers.dist/setup.pyc | Bin 0 -> 829 bytes .../wheel/test/pydist-schema.json | 362 + .../wheel/test/simple.dist/setup.py | 17 + .../wheel/test/simple.dist/setup.pyc | Bin 0 -> 898 bytes .../test/simple.dist/simpledist/__init__.py | 0 .../test/simple.dist/simpledist/__init__.pyc | Bin 0 -> 160 bytes .../test/test-1.0-py2.py3-none-win32.whl | Bin 0 -> 5226 bytes .../site-packages/wheel/test/test_basic.py | 176 + .../site-packages/wheel/test/test_basic.pyc | Bin 0 -> 8709 bytes .../site-packages/wheel/test/test_install.py | 55 + .../site-packages/wheel/test/test_install.pyc | Bin 0 -> 2290 bytes .../site-packages/wheel/test/test_keys.py | 98 + .../site-packages/wheel/test/test_keys.pyc | Bin 0 -> 3405 bytes .../site-packages/wheel/test/test_paths.py | 6 + .../site-packages/wheel/test/test_paths.pyc | Bin 0 -> 536 bytes .../site-packages/wheel/test/test_ranking.py | 43 + .../site-packages/wheel/test/test_ranking.pyc | Bin 0 -> 1804 bytes .../wheel/test/test_signatures.py | 47 + .../wheel/test/test_signatures.pyc | Bin 0 -> 1474 bytes .../site-packages/wheel/test/test_tagopt.py | 176 + .../site-packages/wheel/test/test_tagopt.pyc | Bin 0 -> 8103 bytes .../site-packages/wheel/test/test_tool.py | 25 + .../site-packages/wheel/test/test_tool.pyc | Bin 0 -> 1864 bytes .../wheel/test/test_wheelfile.py | 142 + .../wheel/test/test_wheelfile.pyc | Bin 0 -> 4683 bytes .../site-packages/wheel/tool/__init__.py | 360 + .../site-packages/wheel/tool/__init__.pyc | Bin 0 -> 13903 bytes env/lib/python2.7/site-packages/wheel/util.py | 167 + .../python2.7/site-packages/wheel/util.pyc | Bin 0 -> 7353 bytes .../site-packages/wheel/wininst2wheel.py | 187 + .../site-packages/wheel/wininst2wheel.pyc | Bin 0 -> 5894 bytes env/lib/python2.7/site.py | 758 ++ env/lib/python2.7/site.pyc | Bin 0 -> 24669 bytes env/lib/python2.7/sre.py | 1 + env/lib/python2.7/sre_compile.py | 1 + env/lib/python2.7/sre_compile.pyc | Bin 0 -> 11234 bytes env/lib/python2.7/sre_constants.py | 1 + env/lib/python2.7/sre_constants.pyc | Bin 0 -> 6295 bytes env/lib/python2.7/sre_parse.py | 1 + env/lib/python2.7/sre_parse.pyc | Bin 0 -> 20111 bytes env/lib/python2.7/stat.py | 1 + env/lib/python2.7/stat.pyc | Bin 0 -> 2951 bytes env/lib/python2.7/types.py | 1 + env/lib/python2.7/types.pyc | Bin 0 -> 2626 bytes env/lib/python2.7/warnings.py | 1 + env/lib/python2.7/warnings.pyc | Bin 0 -> 13600 bytes env/local/bin | 1 + env/local/lib | 1 + env/pip-selfcheck.json | 1 + requirements.txt | 8 + 1201 files changed, 174651 insertions(+) create mode 100644 env/bin/activate create mode 100644 env/bin/activate.csh create mode 100644 env/bin/activate.fish create mode 100644 env/bin/activate_this.py create mode 100755 env/bin/chardetect create mode 100755 env/bin/easy_install create mode 100755 env/bin/easy_install-2.7 create mode 100755 env/bin/pip create mode 100755 env/bin/pip2 create mode 100755 env/bin/pip2.7 create mode 100755 env/bin/python create mode 100755 env/bin/python-config create mode 120000 env/bin/python2 create mode 120000 env/bin/python2.7 create mode 100755 env/bin/wheel create mode 120000 env/lib/python2.7/UserDict.py create mode 100644 env/lib/python2.7/UserDict.pyc create mode 120000 env/lib/python2.7/_abcoll.py create mode 100644 env/lib/python2.7/_abcoll.pyc create mode 120000 env/lib/python2.7/_weakrefset.py create mode 100644 env/lib/python2.7/_weakrefset.pyc create mode 120000 env/lib/python2.7/abc.py create mode 100644 env/lib/python2.7/abc.pyc create mode 120000 env/lib/python2.7/codecs.py create mode 100644 env/lib/python2.7/codecs.pyc create mode 120000 env/lib/python2.7/copy_reg.py create mode 100644 env/lib/python2.7/copy_reg.pyc create mode 100644 env/lib/python2.7/distutils/__init__.py create mode 100644 env/lib/python2.7/distutils/__init__.pyc create mode 100644 env/lib/python2.7/distutils/distutils.cfg create mode 120000 env/lib/python2.7/encodings create mode 120000 env/lib/python2.7/fnmatch.py create mode 100644 env/lib/python2.7/fnmatch.pyc create mode 120000 env/lib/python2.7/genericpath.py create mode 100644 env/lib/python2.7/genericpath.pyc create mode 120000 env/lib/python2.7/lib-dynload create mode 120000 env/lib/python2.7/linecache.py create mode 100644 env/lib/python2.7/linecache.pyc create mode 120000 env/lib/python2.7/locale.py create mode 100644 env/lib/python2.7/locale.pyc create mode 100644 env/lib/python2.7/no-global-site-packages.txt create mode 120000 env/lib/python2.7/ntpath.py create mode 100644 env/lib/python2.7/orig-prefix.txt create mode 120000 env/lib/python2.7/os.py create mode 100644 env/lib/python2.7/os.pyc create mode 120000 env/lib/python2.7/posixpath.py create mode 100644 env/lib/python2.7/posixpath.pyc create mode 120000 env/lib/python2.7/re.py create mode 100644 env/lib/python2.7/re.pyc create mode 100644 env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/DESCRIPTION.rst create mode 100644 env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/INSTALLER create mode 100644 env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/METADATA create mode 100644 env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/RECORD create mode 100644 env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/WHEEL create mode 100644 env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/metadata.json create mode 100644 env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/top_level.txt create mode 100644 env/lib/python2.7/site-packages/certifi/__init__.py create mode 100644 env/lib/python2.7/site-packages/certifi/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/certifi/__main__.py create mode 100644 env/lib/python2.7/site-packages/certifi/__main__.pyc create mode 100644 env/lib/python2.7/site-packages/certifi/cacert.pem create mode 100644 env/lib/python2.7/site-packages/certifi/core.py create mode 100644 env/lib/python2.7/site-packages/certifi/core.pyc create mode 100644 env/lib/python2.7/site-packages/certifi/old_root.pem create mode 100644 env/lib/python2.7/site-packages/certifi/weak.pem create mode 100644 env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/DESCRIPTION.rst create mode 100644 env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/INSTALLER create mode 100644 env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/METADATA create mode 100644 env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/RECORD create mode 100644 env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/WHEEL create mode 100644 env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/entry_points.txt create mode 100644 env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/metadata.json create mode 100644 env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/top_level.txt create mode 100644 env/lib/python2.7/site-packages/chardet/__init__.py create mode 100644 env/lib/python2.7/site-packages/chardet/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/big5freq.py create mode 100644 env/lib/python2.7/site-packages/chardet/big5freq.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/big5prober.py create mode 100644 env/lib/python2.7/site-packages/chardet/big5prober.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/chardistribution.py create mode 100644 env/lib/python2.7/site-packages/chardet/chardistribution.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/charsetgroupprober.py create mode 100644 env/lib/python2.7/site-packages/chardet/charsetgroupprober.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/charsetprober.py create mode 100644 env/lib/python2.7/site-packages/chardet/charsetprober.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/cli/__init__.py create mode 100644 env/lib/python2.7/site-packages/chardet/cli/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/cli/chardetect.py create mode 100644 env/lib/python2.7/site-packages/chardet/cli/chardetect.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/codingstatemachine.py create mode 100644 env/lib/python2.7/site-packages/chardet/codingstatemachine.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/compat.py create mode 100644 env/lib/python2.7/site-packages/chardet/compat.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/cp949prober.py create mode 100644 env/lib/python2.7/site-packages/chardet/cp949prober.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/enums.py create mode 100644 env/lib/python2.7/site-packages/chardet/enums.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/escprober.py create mode 100644 env/lib/python2.7/site-packages/chardet/escprober.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/escsm.py create mode 100644 env/lib/python2.7/site-packages/chardet/escsm.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/eucjpprober.py create mode 100644 env/lib/python2.7/site-packages/chardet/eucjpprober.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/euckrfreq.py create mode 100644 env/lib/python2.7/site-packages/chardet/euckrfreq.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/euckrprober.py create mode 100644 env/lib/python2.7/site-packages/chardet/euckrprober.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/euctwfreq.py create mode 100644 env/lib/python2.7/site-packages/chardet/euctwfreq.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/euctwprober.py create mode 100644 env/lib/python2.7/site-packages/chardet/euctwprober.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/gb2312freq.py create mode 100644 env/lib/python2.7/site-packages/chardet/gb2312freq.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/gb2312prober.py create mode 100644 env/lib/python2.7/site-packages/chardet/gb2312prober.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/hebrewprober.py create mode 100644 env/lib/python2.7/site-packages/chardet/hebrewprober.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/jisfreq.py create mode 100644 env/lib/python2.7/site-packages/chardet/jisfreq.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/jpcntx.py create mode 100644 env/lib/python2.7/site-packages/chardet/jpcntx.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/langbulgarianmodel.py create mode 100644 env/lib/python2.7/site-packages/chardet/langbulgarianmodel.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/langcyrillicmodel.py create mode 100644 env/lib/python2.7/site-packages/chardet/langcyrillicmodel.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/langgreekmodel.py create mode 100644 env/lib/python2.7/site-packages/chardet/langgreekmodel.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/langhebrewmodel.py create mode 100644 env/lib/python2.7/site-packages/chardet/langhebrewmodel.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/langhungarianmodel.py create mode 100644 env/lib/python2.7/site-packages/chardet/langhungarianmodel.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/langthaimodel.py create mode 100644 env/lib/python2.7/site-packages/chardet/langthaimodel.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/langturkishmodel.py create mode 100644 env/lib/python2.7/site-packages/chardet/langturkishmodel.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/latin1prober.py create mode 100644 env/lib/python2.7/site-packages/chardet/latin1prober.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/mbcharsetprober.py create mode 100644 env/lib/python2.7/site-packages/chardet/mbcharsetprober.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/mbcsgroupprober.py create mode 100644 env/lib/python2.7/site-packages/chardet/mbcsgroupprober.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/mbcssm.py create mode 100644 env/lib/python2.7/site-packages/chardet/mbcssm.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/sbcharsetprober.py create mode 100644 env/lib/python2.7/site-packages/chardet/sbcharsetprober.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/sbcsgroupprober.py create mode 100644 env/lib/python2.7/site-packages/chardet/sbcsgroupprober.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/sjisprober.py create mode 100644 env/lib/python2.7/site-packages/chardet/sjisprober.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/universaldetector.py create mode 100644 env/lib/python2.7/site-packages/chardet/universaldetector.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/utf8prober.py create mode 100644 env/lib/python2.7/site-packages/chardet/utf8prober.pyc create mode 100644 env/lib/python2.7/site-packages/chardet/version.py create mode 100644 env/lib/python2.7/site-packages/chardet/version.pyc create mode 100644 env/lib/python2.7/site-packages/easy_install.py create mode 100644 env/lib/python2.7/site-packages/easy_install.pyc create mode 100644 env/lib/python2.7/site-packages/idna-2.6.dist-info/DESCRIPTION.rst create mode 100644 env/lib/python2.7/site-packages/idna-2.6.dist-info/INSTALLER create mode 100644 env/lib/python2.7/site-packages/idna-2.6.dist-info/METADATA create mode 100644 env/lib/python2.7/site-packages/idna-2.6.dist-info/RECORD create mode 100644 env/lib/python2.7/site-packages/idna-2.6.dist-info/WHEEL create mode 100644 env/lib/python2.7/site-packages/idna-2.6.dist-info/metadata.json create mode 100644 env/lib/python2.7/site-packages/idna-2.6.dist-info/top_level.txt create mode 100644 env/lib/python2.7/site-packages/idna/__init__.py create mode 100644 env/lib/python2.7/site-packages/idna/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/idna/codec.py create mode 100644 env/lib/python2.7/site-packages/idna/codec.pyc create mode 100644 env/lib/python2.7/site-packages/idna/compat.py create mode 100644 env/lib/python2.7/site-packages/idna/compat.pyc create mode 100644 env/lib/python2.7/site-packages/idna/core.py create mode 100644 env/lib/python2.7/site-packages/idna/core.pyc create mode 100644 env/lib/python2.7/site-packages/idna/idnadata.py create mode 100644 env/lib/python2.7/site-packages/idna/idnadata.pyc create mode 100644 env/lib/python2.7/site-packages/idna/intranges.py create mode 100644 env/lib/python2.7/site-packages/idna/intranges.pyc create mode 100644 env/lib/python2.7/site-packages/idna/package_data.py create mode 100644 env/lib/python2.7/site-packages/idna/package_data.pyc create mode 100644 env/lib/python2.7/site-packages/idna/uts46data.py create mode 100644 env/lib/python2.7/site-packages/idna/uts46data.pyc create mode 100644 env/lib/python2.7/site-packages/pip-9.0.1.dist-info/DESCRIPTION.rst create mode 100644 env/lib/python2.7/site-packages/pip-9.0.1.dist-info/INSTALLER create mode 100644 env/lib/python2.7/site-packages/pip-9.0.1.dist-info/METADATA create mode 100644 env/lib/python2.7/site-packages/pip-9.0.1.dist-info/RECORD create mode 100644 env/lib/python2.7/site-packages/pip-9.0.1.dist-info/WHEEL create mode 100644 env/lib/python2.7/site-packages/pip-9.0.1.dist-info/entry_points.txt create mode 100644 env/lib/python2.7/site-packages/pip-9.0.1.dist-info/metadata.json create mode 100644 env/lib/python2.7/site-packages/pip-9.0.1.dist-info/top_level.txt create mode 100644 env/lib/python2.7/site-packages/pip/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/__main__.py create mode 100644 env/lib/python2.7/site-packages/pip/__main__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/appdirs.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/appdirs.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/_cmd.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/_cmd.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/adapter.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/adapter.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/cache.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/cache.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/caches/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/caches/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/caches/file_cache.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/compat.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/compat.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/heuristics.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/heuristics.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/wrapper.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/wrapper.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/colorama/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/colorama/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/colorama/ansi.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/colorama/ansi.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/colorama/ansitowin32.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/colorama/ansitowin32.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/colorama/initialise.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/colorama/initialise.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/colorama/win32.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/colorama/win32.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/colorama/winterm.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/colorama/winterm.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/misc.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/misc.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/shutil.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/shutil.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/sysconfig.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/sysconfig.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/tarfile.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/tarfile.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/compat.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/compat.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/database.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/database.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/index.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/index.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/locators.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/locators.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/markers.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/metadata.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/metadata.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/resources.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/resources.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/scripts.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/scripts.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/t32.exe create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/t64.exe create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/util.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/version.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/version.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/w32.exe create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/w64.exe create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distro.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/distro.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/_ihatexml.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/_ihatexml.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/_inputstream.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/_inputstream.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/_tokenizer.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/_tokenizer.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/_base.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/_base.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/datrie.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/datrie.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/py.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/py.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/_utils.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/_utils.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/constants.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/constants.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/base.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/base.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/lint.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/lint.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/optionaltags.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/optionaltags.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/sanitizer.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/sanitizer.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/whitespace.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/whitespace.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/html5parser.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/html5parser.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/serializer.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/serializer.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treeadapters/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treeadapters/genshi.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treeadapters/sax.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treeadapters/sax.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/base.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/base.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/dom.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/dom.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/etree.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/etree.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/base.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/base.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/dom.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/dom.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/etree.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/etree.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/genshi.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/ipaddress.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/ipaddress.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/lockfile/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/lockfile/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/lockfile/linklockfile.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/lockfile/linklockfile.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/lockfile/mkdirlockfile.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/lockfile/mkdirlockfile.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/lockfile/pidlockfile.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/lockfile/pidlockfile.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/lockfile/sqlitelockfile.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/lockfile/sqlitelockfile.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/lockfile/symlinklockfile.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/lockfile/symlinklockfile.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/ordereddict.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/ordereddict.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/packaging/__about__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/packaging/__about__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/packaging/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/packaging/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/packaging/_compat.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/packaging/_compat.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/packaging/_structures.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/packaging/_structures.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/packaging/markers.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/packaging/markers.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/packaging/requirements.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/packaging/requirements.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/packaging/specifiers.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/packaging/specifiers.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/packaging/utils.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/packaging/utils.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/packaging/version.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/packaging/version.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/pkg_resources/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/pkg_resources/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/progress/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/progress/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/progress/bar.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/progress/bar.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/progress/counter.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/progress/counter.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/progress/helpers.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/progress/helpers.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/progress/spinner.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/progress/spinner.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/pyparsing.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/pyparsing.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/re-vendor.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/re-vendor.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/adapters.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/adapters.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/api.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/api.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/auth.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/cacert.pem create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/certs.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/certs.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/compat.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/compat.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/cookies.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/cookies.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/exceptions.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/exceptions.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/hooks.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/hooks.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/models.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/models.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/big5freq.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/big5freq.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/big5prober.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/big5prober.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/chardetect.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/chardetect.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/chardistribution.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/chardistribution.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/charsetgroupprober.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/charsetgroupprober.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/charsetprober.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/charsetprober.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/codingstatemachine.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/codingstatemachine.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/compat.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/compat.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/constants.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/constants.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/cp949prober.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/cp949prober.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/escprober.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/escprober.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/escsm.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/escsm.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/eucjpprober.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/eucjpprober.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/euckrfreq.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/euckrfreq.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/euckrprober.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/euckrprober.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/euctwfreq.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/euctwfreq.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/euctwprober.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/euctwprober.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/gb2312freq.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/gb2312freq.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/gb2312prober.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/gb2312prober.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/hebrewprober.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/hebrewprober.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/jisfreq.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/jisfreq.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/jpcntx.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/jpcntx.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/langbulgarianmodel.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/langbulgarianmodel.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/langcyrillicmodel.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/langcyrillicmodel.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/langgreekmodel.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/langgreekmodel.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/langhebrewmodel.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/langhebrewmodel.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/langhungarianmodel.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/langhungarianmodel.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/langthaimodel.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/langthaimodel.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/latin1prober.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/latin1prober.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/mbcharsetprober.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/mbcharsetprober.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/mbcsgroupprober.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/mbcsgroupprober.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/mbcssm.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/mbcssm.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/sbcharsetprober.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/sbcharsetprober.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/sbcsgroupprober.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/sbcsgroupprober.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/sjisprober.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/sjisprober.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/universaldetector.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/universaldetector.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/utf8prober.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/chardet/utf8prober.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/_collections.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/_collections.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/connection.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/connection.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/connectionpool.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/connectionpool.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/contrib/appengine.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/contrib/appengine.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/contrib/ntlmpool.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/contrib/ntlmpool.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/contrib/socks.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/contrib/socks.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/exceptions.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/exceptions.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/fields.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/fields.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/filepost.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/filepost.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/packages/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/packages/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/packages/ordered_dict.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/packages/ordered_dict.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/packages/six.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/packages/six.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/poolmanager.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/poolmanager.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/request.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/request.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/response.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/response.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/connection.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/connection.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/request.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/request.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/response.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/response.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/retry.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/retry.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/timeout.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/timeout.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/url.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/url.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/sessions.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/sessions.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/status_codes.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/status_codes.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/structures.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/structures.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/utils.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/requests/utils.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/retrying.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/retrying.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/six.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/six.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/webencodings/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/webencodings/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/webencodings/labels.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/webencodings/labels.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/webencodings/mklabels.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/webencodings/mklabels.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/webencodings/tests.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/webencodings/tests.pyc create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/webencodings/x_user_defined.py create mode 100644 env/lib/python2.7/site-packages/pip/_vendor/webencodings/x_user_defined.pyc create mode 100644 env/lib/python2.7/site-packages/pip/basecommand.py create mode 100644 env/lib/python2.7/site-packages/pip/basecommand.pyc create mode 100644 env/lib/python2.7/site-packages/pip/baseparser.py create mode 100644 env/lib/python2.7/site-packages/pip/baseparser.pyc create mode 100644 env/lib/python2.7/site-packages/pip/cmdoptions.py create mode 100644 env/lib/python2.7/site-packages/pip/cmdoptions.pyc create mode 100644 env/lib/python2.7/site-packages/pip/commands/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/commands/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/commands/check.py create mode 100644 env/lib/python2.7/site-packages/pip/commands/check.pyc create mode 100644 env/lib/python2.7/site-packages/pip/commands/completion.py create mode 100644 env/lib/python2.7/site-packages/pip/commands/completion.pyc create mode 100644 env/lib/python2.7/site-packages/pip/commands/download.py create mode 100644 env/lib/python2.7/site-packages/pip/commands/download.pyc create mode 100644 env/lib/python2.7/site-packages/pip/commands/freeze.py create mode 100644 env/lib/python2.7/site-packages/pip/commands/freeze.pyc create mode 100644 env/lib/python2.7/site-packages/pip/commands/hash.py create mode 100644 env/lib/python2.7/site-packages/pip/commands/hash.pyc create mode 100644 env/lib/python2.7/site-packages/pip/commands/help.py create mode 100644 env/lib/python2.7/site-packages/pip/commands/help.pyc create mode 100644 env/lib/python2.7/site-packages/pip/commands/install.py create mode 100644 env/lib/python2.7/site-packages/pip/commands/install.pyc create mode 100644 env/lib/python2.7/site-packages/pip/commands/list.py create mode 100644 env/lib/python2.7/site-packages/pip/commands/list.pyc create mode 100644 env/lib/python2.7/site-packages/pip/commands/search.py create mode 100644 env/lib/python2.7/site-packages/pip/commands/search.pyc create mode 100644 env/lib/python2.7/site-packages/pip/commands/show.py create mode 100644 env/lib/python2.7/site-packages/pip/commands/show.pyc create mode 100644 env/lib/python2.7/site-packages/pip/commands/uninstall.py create mode 100644 env/lib/python2.7/site-packages/pip/commands/uninstall.pyc create mode 100644 env/lib/python2.7/site-packages/pip/commands/wheel.py create mode 100644 env/lib/python2.7/site-packages/pip/commands/wheel.pyc create mode 100644 env/lib/python2.7/site-packages/pip/compat/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/compat/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/compat/dictconfig.py create mode 100644 env/lib/python2.7/site-packages/pip/compat/dictconfig.pyc create mode 100644 env/lib/python2.7/site-packages/pip/download.py create mode 100644 env/lib/python2.7/site-packages/pip/download.pyc create mode 100644 env/lib/python2.7/site-packages/pip/exceptions.py create mode 100644 env/lib/python2.7/site-packages/pip/exceptions.pyc create mode 100644 env/lib/python2.7/site-packages/pip/index.py create mode 100644 env/lib/python2.7/site-packages/pip/index.pyc create mode 100644 env/lib/python2.7/site-packages/pip/locations.py create mode 100644 env/lib/python2.7/site-packages/pip/locations.pyc create mode 100644 env/lib/python2.7/site-packages/pip/models/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/models/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/models/index.py create mode 100644 env/lib/python2.7/site-packages/pip/models/index.pyc create mode 100644 env/lib/python2.7/site-packages/pip/operations/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/operations/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/operations/check.py create mode 100644 env/lib/python2.7/site-packages/pip/operations/check.pyc create mode 100644 env/lib/python2.7/site-packages/pip/operations/freeze.py create mode 100644 env/lib/python2.7/site-packages/pip/operations/freeze.pyc create mode 100644 env/lib/python2.7/site-packages/pip/pep425tags.py create mode 100644 env/lib/python2.7/site-packages/pip/pep425tags.pyc create mode 100644 env/lib/python2.7/site-packages/pip/req/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/req/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/req/req_file.py create mode 100644 env/lib/python2.7/site-packages/pip/req/req_file.pyc create mode 100644 env/lib/python2.7/site-packages/pip/req/req_install.py create mode 100644 env/lib/python2.7/site-packages/pip/req/req_install.pyc create mode 100644 env/lib/python2.7/site-packages/pip/req/req_set.py create mode 100644 env/lib/python2.7/site-packages/pip/req/req_set.pyc create mode 100644 env/lib/python2.7/site-packages/pip/req/req_uninstall.py create mode 100644 env/lib/python2.7/site-packages/pip/req/req_uninstall.pyc create mode 100644 env/lib/python2.7/site-packages/pip/status_codes.py create mode 100644 env/lib/python2.7/site-packages/pip/status_codes.pyc create mode 100644 env/lib/python2.7/site-packages/pip/utils/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/utils/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/utils/appdirs.py create mode 100644 env/lib/python2.7/site-packages/pip/utils/appdirs.pyc create mode 100644 env/lib/python2.7/site-packages/pip/utils/build.py create mode 100644 env/lib/python2.7/site-packages/pip/utils/build.pyc create mode 100644 env/lib/python2.7/site-packages/pip/utils/deprecation.py create mode 100644 env/lib/python2.7/site-packages/pip/utils/deprecation.pyc create mode 100644 env/lib/python2.7/site-packages/pip/utils/encoding.py create mode 100644 env/lib/python2.7/site-packages/pip/utils/encoding.pyc create mode 100644 env/lib/python2.7/site-packages/pip/utils/filesystem.py create mode 100644 env/lib/python2.7/site-packages/pip/utils/filesystem.pyc create mode 100644 env/lib/python2.7/site-packages/pip/utils/glibc.py create mode 100644 env/lib/python2.7/site-packages/pip/utils/glibc.pyc create mode 100644 env/lib/python2.7/site-packages/pip/utils/hashes.py create mode 100644 env/lib/python2.7/site-packages/pip/utils/hashes.pyc create mode 100644 env/lib/python2.7/site-packages/pip/utils/logging.py create mode 100644 env/lib/python2.7/site-packages/pip/utils/logging.pyc create mode 100644 env/lib/python2.7/site-packages/pip/utils/outdated.py create mode 100644 env/lib/python2.7/site-packages/pip/utils/outdated.pyc create mode 100644 env/lib/python2.7/site-packages/pip/utils/packaging.py create mode 100644 env/lib/python2.7/site-packages/pip/utils/packaging.pyc create mode 100644 env/lib/python2.7/site-packages/pip/utils/setuptools_build.py create mode 100644 env/lib/python2.7/site-packages/pip/utils/setuptools_build.pyc create mode 100644 env/lib/python2.7/site-packages/pip/utils/ui.py create mode 100644 env/lib/python2.7/site-packages/pip/utils/ui.pyc create mode 100644 env/lib/python2.7/site-packages/pip/vcs/__init__.py create mode 100644 env/lib/python2.7/site-packages/pip/vcs/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pip/vcs/bazaar.py create mode 100644 env/lib/python2.7/site-packages/pip/vcs/bazaar.pyc create mode 100644 env/lib/python2.7/site-packages/pip/vcs/git.py create mode 100644 env/lib/python2.7/site-packages/pip/vcs/git.pyc create mode 100644 env/lib/python2.7/site-packages/pip/vcs/mercurial.py create mode 100644 env/lib/python2.7/site-packages/pip/vcs/mercurial.pyc create mode 100644 env/lib/python2.7/site-packages/pip/vcs/subversion.py create mode 100644 env/lib/python2.7/site-packages/pip/vcs/subversion.pyc create mode 100644 env/lib/python2.7/site-packages/pip/wheel.py create mode 100644 env/lib/python2.7/site-packages/pip/wheel.pyc create mode 100644 env/lib/python2.7/site-packages/pkg_resources/__init__.py create mode 100644 env/lib/python2.7/site-packages/pkg_resources/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/__init__.py create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/appdirs.py create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/appdirs.pyc create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/__about__.py create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/__about__.pyc create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/__init__.py create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/_compat.py create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/_compat.pyc create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/_structures.py create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/_structures.pyc create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/markers.py create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/markers.pyc create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/requirements.py create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/requirements.pyc create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/specifiers.py create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/specifiers.pyc create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/utils.py create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/utils.pyc create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/version.py create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/version.pyc create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/pyparsing.py create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/pyparsing.pyc create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/six.py create mode 100644 env/lib/python2.7/site-packages/pkg_resources/_vendor/six.pyc create mode 100644 env/lib/python2.7/site-packages/pkg_resources/extern/__init__.py create mode 100644 env/lib/python2.7/site-packages/pkg_resources/extern/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/pkg_resources/py31compat.py create mode 100644 env/lib/python2.7/site-packages/pkg_resources/py31compat.pyc create mode 100644 env/lib/python2.7/site-packages/praw-5.0.1.dist-info/DESCRIPTION.rst create mode 100644 env/lib/python2.7/site-packages/praw-5.0.1.dist-info/INSTALLER create mode 100644 env/lib/python2.7/site-packages/praw-5.0.1.dist-info/METADATA create mode 100644 env/lib/python2.7/site-packages/praw-5.0.1.dist-info/RECORD create mode 100644 env/lib/python2.7/site-packages/praw-5.0.1.dist-info/WHEEL create mode 100644 env/lib/python2.7/site-packages/praw-5.0.1.dist-info/metadata.json create mode 100644 env/lib/python2.7/site-packages/praw-5.0.1.dist-info/top_level.txt create mode 100644 env/lib/python2.7/site-packages/praw/__init__.py create mode 100644 env/lib/python2.7/site-packages/praw/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/praw/config.py create mode 100644 env/lib/python2.7/site-packages/praw/config.pyc create mode 100644 env/lib/python2.7/site-packages/praw/const.py create mode 100644 env/lib/python2.7/site-packages/praw/const.pyc create mode 100644 env/lib/python2.7/site-packages/praw/exceptions.py create mode 100644 env/lib/python2.7/site-packages/praw/exceptions.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/__init__.py create mode 100644 env/lib/python2.7/site-packages/praw/models/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/auth.py create mode 100644 env/lib/python2.7/site-packages/praw/models/auth.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/base.py create mode 100644 env/lib/python2.7/site-packages/praw/models/base.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/comment_forest.py create mode 100644 env/lib/python2.7/site-packages/praw/models/comment_forest.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/front.py create mode 100644 env/lib/python2.7/site-packages/praw/models/front.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/helpers.py create mode 100644 env/lib/python2.7/site-packages/praw/models/helpers.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/inbox.py create mode 100644 env/lib/python2.7/site-packages/praw/models/inbox.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/list/__init__.py create mode 100644 env/lib/python2.7/site-packages/praw/models/list/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/list/base.py create mode 100644 env/lib/python2.7/site-packages/praw/models/list/base.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/list/redditor.py create mode 100644 env/lib/python2.7/site-packages/praw/models/list/redditor.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/__init__.py create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/domain.py create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/domain.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/generator.py create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/generator.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/listing.py create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/listing.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/mixins/__init__.py create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/mixins/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/mixins/base.py create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/mixins/base.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/mixins/gilded.py create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/mixins/gilded.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/mixins/redditor.py create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/mixins/redditor.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/mixins/rising.py create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/mixins/rising.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/mixins/submission.py create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/mixins/submission.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/mixins/subreddit.py create mode 100644 env/lib/python2.7/site-packages/praw/models/listing/mixins/subreddit.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/modaction.py create mode 100644 env/lib/python2.7/site-packages/praw/models/modaction.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/__init__.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/base.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/base.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/comment.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/comment.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/live.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/live.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/message.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/message.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/__init__.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/editable.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/editable.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/gildable.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/gildable.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/inboxable.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/inboxable.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/inboxtoggleable.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/inboxtoggleable.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/messageable.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/messageable.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/replyable.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/replyable.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/reportable.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/reportable.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/savable.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/savable.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/votable.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/mixins/votable.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/modmail.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/modmail.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/more.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/more.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/multi.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/multi.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/redditor.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/redditor.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/submission.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/submission.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/subreddit.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/subreddit.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/wikipage.py create mode 100644 env/lib/python2.7/site-packages/praw/models/reddit/wikipage.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/stylesheet.py create mode 100644 env/lib/python2.7/site-packages/praw/models/stylesheet.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/subreddits.py create mode 100644 env/lib/python2.7/site-packages/praw/models/subreddits.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/user.py create mode 100644 env/lib/python2.7/site-packages/praw/models/user.pyc create mode 100644 env/lib/python2.7/site-packages/praw/models/util.py create mode 100644 env/lib/python2.7/site-packages/praw/models/util.pyc create mode 100644 env/lib/python2.7/site-packages/praw/objector.py create mode 100644 env/lib/python2.7/site-packages/praw/objector.pyc create mode 100644 env/lib/python2.7/site-packages/praw/praw.ini create mode 100644 env/lib/python2.7/site-packages/praw/reddit.py create mode 100644 env/lib/python2.7/site-packages/praw/reddit.pyc create mode 100644 env/lib/python2.7/site-packages/prawcore-0.11.0.dist-info/DESCRIPTION.rst create mode 100644 env/lib/python2.7/site-packages/prawcore-0.11.0.dist-info/INSTALLER create mode 100644 env/lib/python2.7/site-packages/prawcore-0.11.0.dist-info/METADATA create mode 100644 env/lib/python2.7/site-packages/prawcore-0.11.0.dist-info/RECORD create mode 100644 env/lib/python2.7/site-packages/prawcore-0.11.0.dist-info/WHEEL create mode 100644 env/lib/python2.7/site-packages/prawcore-0.11.0.dist-info/metadata.json create mode 100644 env/lib/python2.7/site-packages/prawcore-0.11.0.dist-info/top_level.txt create mode 100644 env/lib/python2.7/site-packages/prawcore/__init__.py create mode 100644 env/lib/python2.7/site-packages/prawcore/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/prawcore/auth.py create mode 100644 env/lib/python2.7/site-packages/prawcore/auth.pyc create mode 100644 env/lib/python2.7/site-packages/prawcore/const.py create mode 100644 env/lib/python2.7/site-packages/prawcore/const.pyc create mode 100644 env/lib/python2.7/site-packages/prawcore/exceptions.py create mode 100644 env/lib/python2.7/site-packages/prawcore/exceptions.pyc create mode 100644 env/lib/python2.7/site-packages/prawcore/rate_limit.py create mode 100644 env/lib/python2.7/site-packages/prawcore/rate_limit.pyc create mode 100644 env/lib/python2.7/site-packages/prawcore/requestor.py create mode 100644 env/lib/python2.7/site-packages/prawcore/requestor.pyc create mode 100644 env/lib/python2.7/site-packages/prawcore/sessions.py create mode 100644 env/lib/python2.7/site-packages/prawcore/sessions.pyc create mode 100644 env/lib/python2.7/site-packages/prawcore/util.py create mode 100644 env/lib/python2.7/site-packages/prawcore/util.pyc create mode 100644 env/lib/python2.7/site-packages/requests-2.18.4.dist-info/DESCRIPTION.rst create mode 100644 env/lib/python2.7/site-packages/requests-2.18.4.dist-info/INSTALLER create mode 100644 env/lib/python2.7/site-packages/requests-2.18.4.dist-info/METADATA create mode 100644 env/lib/python2.7/site-packages/requests-2.18.4.dist-info/RECORD create mode 100644 env/lib/python2.7/site-packages/requests-2.18.4.dist-info/WHEEL create mode 100644 env/lib/python2.7/site-packages/requests-2.18.4.dist-info/metadata.json create mode 100644 env/lib/python2.7/site-packages/requests-2.18.4.dist-info/top_level.txt create mode 100644 env/lib/python2.7/site-packages/requests/__init__.py create mode 100644 env/lib/python2.7/site-packages/requests/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/requests/__version__.py create mode 100644 env/lib/python2.7/site-packages/requests/__version__.pyc create mode 100644 env/lib/python2.7/site-packages/requests/_internal_utils.py create mode 100644 env/lib/python2.7/site-packages/requests/_internal_utils.pyc create mode 100644 env/lib/python2.7/site-packages/requests/adapters.py create mode 100644 env/lib/python2.7/site-packages/requests/adapters.pyc create mode 100644 env/lib/python2.7/site-packages/requests/api.py create mode 100644 env/lib/python2.7/site-packages/requests/api.pyc create mode 100644 env/lib/python2.7/site-packages/requests/auth.py create mode 100644 env/lib/python2.7/site-packages/requests/auth.pyc create mode 100644 env/lib/python2.7/site-packages/requests/certs.py create mode 100644 env/lib/python2.7/site-packages/requests/certs.pyc create mode 100644 env/lib/python2.7/site-packages/requests/compat.py create mode 100644 env/lib/python2.7/site-packages/requests/compat.pyc create mode 100644 env/lib/python2.7/site-packages/requests/cookies.py create mode 100644 env/lib/python2.7/site-packages/requests/cookies.pyc create mode 100644 env/lib/python2.7/site-packages/requests/exceptions.py create mode 100644 env/lib/python2.7/site-packages/requests/exceptions.pyc create mode 100644 env/lib/python2.7/site-packages/requests/help.py create mode 100644 env/lib/python2.7/site-packages/requests/help.pyc create mode 100644 env/lib/python2.7/site-packages/requests/hooks.py create mode 100644 env/lib/python2.7/site-packages/requests/hooks.pyc create mode 100644 env/lib/python2.7/site-packages/requests/models.py create mode 100644 env/lib/python2.7/site-packages/requests/models.pyc create mode 100644 env/lib/python2.7/site-packages/requests/packages.py create mode 100644 env/lib/python2.7/site-packages/requests/packages.pyc create mode 100644 env/lib/python2.7/site-packages/requests/sessions.py create mode 100644 env/lib/python2.7/site-packages/requests/sessions.pyc create mode 100644 env/lib/python2.7/site-packages/requests/status_codes.py create mode 100644 env/lib/python2.7/site-packages/requests/status_codes.pyc create mode 100644 env/lib/python2.7/site-packages/requests/structures.py create mode 100644 env/lib/python2.7/site-packages/requests/structures.pyc create mode 100644 env/lib/python2.7/site-packages/requests/utils.py create mode 100644 env/lib/python2.7/site-packages/requests/utils.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools-36.3.0.dist-info/DESCRIPTION.rst create mode 100644 env/lib/python2.7/site-packages/setuptools-36.3.0.dist-info/INSTALLER create mode 100644 env/lib/python2.7/site-packages/setuptools-36.3.0.dist-info/METADATA create mode 100644 env/lib/python2.7/site-packages/setuptools-36.3.0.dist-info/RECORD create mode 100644 env/lib/python2.7/site-packages/setuptools-36.3.0.dist-info/WHEEL create mode 100644 env/lib/python2.7/site-packages/setuptools-36.3.0.dist-info/dependency_links.txt create mode 100644 env/lib/python2.7/site-packages/setuptools-36.3.0.dist-info/entry_points.txt create mode 100644 env/lib/python2.7/site-packages/setuptools-36.3.0.dist-info/metadata.json create mode 100644 env/lib/python2.7/site-packages/setuptools-36.3.0.dist-info/top_level.txt create mode 100644 env/lib/python2.7/site-packages/setuptools-36.3.0.dist-info/zip-safe create mode 100644 env/lib/python2.7/site-packages/setuptools/__init__.py create mode 100644 env/lib/python2.7/site-packages/setuptools/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/archive_util.py create mode 100644 env/lib/python2.7/site-packages/setuptools/archive_util.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/cli-32.exe create mode 100644 env/lib/python2.7/site-packages/setuptools/cli-64.exe create mode 100644 env/lib/python2.7/site-packages/setuptools/cli.exe create mode 100644 env/lib/python2.7/site-packages/setuptools/command/__init__.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/alias.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/alias.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/bdist_egg.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/bdist_egg.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/bdist_rpm.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/bdist_rpm.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/bdist_wininst.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/bdist_wininst.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/build_clib.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/build_clib.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/build_ext.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/build_ext.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/build_py.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/build_py.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/develop.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/develop.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/easy_install.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/easy_install.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/egg_info.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/egg_info.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/install.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/install.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/install_egg_info.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/install_egg_info.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/install_lib.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/install_lib.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/install_scripts.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/install_scripts.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/launcher manifest.xml create mode 100644 env/lib/python2.7/site-packages/setuptools/command/py36compat.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/py36compat.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/register.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/register.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/rotate.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/rotate.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/saveopts.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/saveopts.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/sdist.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/sdist.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/setopt.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/setopt.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/test.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/test.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/upload.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/upload.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/command/upload_docs.py create mode 100644 env/lib/python2.7/site-packages/setuptools/command/upload_docs.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/config.py create mode 100644 env/lib/python2.7/site-packages/setuptools/config.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/dep_util.py create mode 100644 env/lib/python2.7/site-packages/setuptools/dep_util.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/depends.py create mode 100644 env/lib/python2.7/site-packages/setuptools/depends.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/dist.py create mode 100644 env/lib/python2.7/site-packages/setuptools/dist.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/extension.py create mode 100644 env/lib/python2.7/site-packages/setuptools/extension.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/extern/__init__.py create mode 100644 env/lib/python2.7/site-packages/setuptools/extern/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/glob.py create mode 100644 env/lib/python2.7/site-packages/setuptools/glob.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/gui-32.exe create mode 100644 env/lib/python2.7/site-packages/setuptools/gui-64.exe create mode 100644 env/lib/python2.7/site-packages/setuptools/gui.exe create mode 100644 env/lib/python2.7/site-packages/setuptools/launch.py create mode 100644 env/lib/python2.7/site-packages/setuptools/launch.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/lib2to3_ex.py create mode 100644 env/lib/python2.7/site-packages/setuptools/lib2to3_ex.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/monkey.py create mode 100644 env/lib/python2.7/site-packages/setuptools/monkey.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/msvc.py create mode 100644 env/lib/python2.7/site-packages/setuptools/msvc.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/namespaces.py create mode 100644 env/lib/python2.7/site-packages/setuptools/namespaces.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/package_index.py create mode 100644 env/lib/python2.7/site-packages/setuptools/package_index.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/py26compat.py create mode 100644 env/lib/python2.7/site-packages/setuptools/py26compat.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/py27compat.py create mode 100644 env/lib/python2.7/site-packages/setuptools/py27compat.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/py31compat.py create mode 100644 env/lib/python2.7/site-packages/setuptools/py31compat.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/py33compat.py create mode 100644 env/lib/python2.7/site-packages/setuptools/py33compat.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/py36compat.py create mode 100644 env/lib/python2.7/site-packages/setuptools/py36compat.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/sandbox.py create mode 100644 env/lib/python2.7/site-packages/setuptools/sandbox.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/script (dev).tmpl create mode 100644 env/lib/python2.7/site-packages/setuptools/script.tmpl create mode 100644 env/lib/python2.7/site-packages/setuptools/site-patch.py create mode 100644 env/lib/python2.7/site-packages/setuptools/site-patch.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/ssl_support.py create mode 100644 env/lib/python2.7/site-packages/setuptools/ssl_support.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/unicode_utils.py create mode 100644 env/lib/python2.7/site-packages/setuptools/unicode_utils.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/version.py create mode 100644 env/lib/python2.7/site-packages/setuptools/version.pyc create mode 100644 env/lib/python2.7/site-packages/setuptools/windows_support.py create mode 100644 env/lib/python2.7/site-packages/setuptools/windows_support.pyc create mode 100644 env/lib/python2.7/site-packages/update_checker-0.16.dist-info/DESCRIPTION.rst create mode 100644 env/lib/python2.7/site-packages/update_checker-0.16.dist-info/INSTALLER create mode 100644 env/lib/python2.7/site-packages/update_checker-0.16.dist-info/METADATA create mode 100644 env/lib/python2.7/site-packages/update_checker-0.16.dist-info/RECORD create mode 100644 env/lib/python2.7/site-packages/update_checker-0.16.dist-info/WHEEL create mode 100644 env/lib/python2.7/site-packages/update_checker-0.16.dist-info/metadata.json create mode 100644 env/lib/python2.7/site-packages/update_checker-0.16.dist-info/top_level.txt create mode 100644 env/lib/python2.7/site-packages/update_checker.py create mode 100644 env/lib/python2.7/site-packages/update_checker.pyc create mode 100644 env/lib/python2.7/site-packages/update_checker_test.py create mode 100644 env/lib/python2.7/site-packages/update_checker_test.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3-1.22.dist-info/DESCRIPTION.rst create mode 100644 env/lib/python2.7/site-packages/urllib3-1.22.dist-info/INSTALLER create mode 100644 env/lib/python2.7/site-packages/urllib3-1.22.dist-info/METADATA create mode 100644 env/lib/python2.7/site-packages/urllib3-1.22.dist-info/RECORD create mode 100644 env/lib/python2.7/site-packages/urllib3-1.22.dist-info/WHEEL create mode 100644 env/lib/python2.7/site-packages/urllib3-1.22.dist-info/metadata.json create mode 100644 env/lib/python2.7/site-packages/urllib3-1.22.dist-info/top_level.txt create mode 100644 env/lib/python2.7/site-packages/urllib3/__init__.py create mode 100644 env/lib/python2.7/site-packages/urllib3/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/_collections.py create mode 100644 env/lib/python2.7/site-packages/urllib3/_collections.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/connection.py create mode 100644 env/lib/python2.7/site-packages/urllib3/connection.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/connectionpool.py create mode 100644 env/lib/python2.7/site-packages/urllib3/connectionpool.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/contrib/__init__.py create mode 100644 env/lib/python2.7/site-packages/urllib3/contrib/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/contrib/_securetransport/__init__.py create mode 100644 env/lib/python2.7/site-packages/urllib3/contrib/_securetransport/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/contrib/_securetransport/bindings.py create mode 100644 env/lib/python2.7/site-packages/urllib3/contrib/_securetransport/bindings.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/contrib/_securetransport/low_level.py create mode 100644 env/lib/python2.7/site-packages/urllib3/contrib/_securetransport/low_level.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/contrib/appengine.py create mode 100644 env/lib/python2.7/site-packages/urllib3/contrib/appengine.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/contrib/ntlmpool.py create mode 100644 env/lib/python2.7/site-packages/urllib3/contrib/ntlmpool.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py create mode 100644 env/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/contrib/securetransport.py create mode 100644 env/lib/python2.7/site-packages/urllib3/contrib/securetransport.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/contrib/socks.py create mode 100644 env/lib/python2.7/site-packages/urllib3/contrib/socks.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/exceptions.py create mode 100644 env/lib/python2.7/site-packages/urllib3/exceptions.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/fields.py create mode 100644 env/lib/python2.7/site-packages/urllib3/fields.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/filepost.py create mode 100644 env/lib/python2.7/site-packages/urllib3/filepost.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/packages/__init__.py create mode 100644 env/lib/python2.7/site-packages/urllib3/packages/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/packages/backports/__init__.py create mode 100644 env/lib/python2.7/site-packages/urllib3/packages/backports/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/packages/backports/makefile.py create mode 100644 env/lib/python2.7/site-packages/urllib3/packages/backports/makefile.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/packages/ordered_dict.py create mode 100644 env/lib/python2.7/site-packages/urllib3/packages/ordered_dict.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/packages/six.py create mode 100644 env/lib/python2.7/site-packages/urllib3/packages/six.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname/__init__.py create mode 100644 env/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname/_implementation.py create mode 100644 env/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname/_implementation.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/poolmanager.py create mode 100644 env/lib/python2.7/site-packages/urllib3/poolmanager.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/request.py create mode 100644 env/lib/python2.7/site-packages/urllib3/request.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/response.py create mode 100644 env/lib/python2.7/site-packages/urllib3/response.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/util/__init__.py create mode 100644 env/lib/python2.7/site-packages/urllib3/util/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/util/connection.py create mode 100644 env/lib/python2.7/site-packages/urllib3/util/connection.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/util/request.py create mode 100644 env/lib/python2.7/site-packages/urllib3/util/request.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/util/response.py create mode 100644 env/lib/python2.7/site-packages/urllib3/util/response.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/util/retry.py create mode 100644 env/lib/python2.7/site-packages/urllib3/util/retry.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/util/selectors.py create mode 100644 env/lib/python2.7/site-packages/urllib3/util/selectors.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/util/ssl_.py create mode 100644 env/lib/python2.7/site-packages/urllib3/util/ssl_.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/util/timeout.py create mode 100644 env/lib/python2.7/site-packages/urllib3/util/timeout.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/util/url.py create mode 100644 env/lib/python2.7/site-packages/urllib3/util/url.pyc create mode 100644 env/lib/python2.7/site-packages/urllib3/util/wait.py create mode 100644 env/lib/python2.7/site-packages/urllib3/util/wait.pyc create mode 100644 env/lib/python2.7/site-packages/wheel-0.29.0.dist-info/DESCRIPTION.rst create mode 100644 env/lib/python2.7/site-packages/wheel-0.29.0.dist-info/INSTALLER create mode 100644 env/lib/python2.7/site-packages/wheel-0.29.0.dist-info/LICENSE.txt create mode 100644 env/lib/python2.7/site-packages/wheel-0.29.0.dist-info/METADATA create mode 100644 env/lib/python2.7/site-packages/wheel-0.29.0.dist-info/RECORD create mode 100644 env/lib/python2.7/site-packages/wheel-0.29.0.dist-info/WHEEL create mode 100644 env/lib/python2.7/site-packages/wheel-0.29.0.dist-info/entry_points.txt create mode 100644 env/lib/python2.7/site-packages/wheel-0.29.0.dist-info/metadata.json create mode 100644 env/lib/python2.7/site-packages/wheel-0.29.0.dist-info/top_level.txt create mode 100644 env/lib/python2.7/site-packages/wheel/__init__.py create mode 100644 env/lib/python2.7/site-packages/wheel/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/__main__.py create mode 100644 env/lib/python2.7/site-packages/wheel/__main__.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/archive.py create mode 100644 env/lib/python2.7/site-packages/wheel/archive.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/bdist_wheel.py create mode 100644 env/lib/python2.7/site-packages/wheel/bdist_wheel.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/decorator.py create mode 100644 env/lib/python2.7/site-packages/wheel/decorator.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/egg2wheel.py create mode 100644 env/lib/python2.7/site-packages/wheel/egg2wheel.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/eggnames.txt create mode 100644 env/lib/python2.7/site-packages/wheel/install.py create mode 100644 env/lib/python2.7/site-packages/wheel/install.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/metadata.py create mode 100644 env/lib/python2.7/site-packages/wheel/metadata.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/paths.py create mode 100644 env/lib/python2.7/site-packages/wheel/paths.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/pep425tags.py create mode 100644 env/lib/python2.7/site-packages/wheel/pep425tags.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/pkginfo.py create mode 100644 env/lib/python2.7/site-packages/wheel/pkginfo.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/signatures/__init__.py create mode 100644 env/lib/python2.7/site-packages/wheel/signatures/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/signatures/djbec.py create mode 100644 env/lib/python2.7/site-packages/wheel/signatures/djbec.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/signatures/ed25519py.py create mode 100644 env/lib/python2.7/site-packages/wheel/signatures/ed25519py.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/signatures/keys.py create mode 100644 env/lib/python2.7/site-packages/wheel/signatures/keys.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/test/__init__.py create mode 100644 env/lib/python2.7/site-packages/wheel/test/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/test/complex-dist/complexdist/__init__.py create mode 100644 env/lib/python2.7/site-packages/wheel/test/complex-dist/complexdist/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/test/complex-dist/setup.py create mode 100644 env/lib/python2.7/site-packages/wheel/test/complex-dist/setup.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/test/headers.dist/header.h create mode 100644 env/lib/python2.7/site-packages/wheel/test/headers.dist/headersdist.py create mode 100644 env/lib/python2.7/site-packages/wheel/test/headers.dist/headersdist.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/test/headers.dist/setup.py create mode 100644 env/lib/python2.7/site-packages/wheel/test/headers.dist/setup.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/test/pydist-schema.json create mode 100644 env/lib/python2.7/site-packages/wheel/test/simple.dist/setup.py create mode 100644 env/lib/python2.7/site-packages/wheel/test/simple.dist/setup.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/test/simple.dist/simpledist/__init__.py create mode 100644 env/lib/python2.7/site-packages/wheel/test/simple.dist/simpledist/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/test/test-1.0-py2.py3-none-win32.whl create mode 100644 env/lib/python2.7/site-packages/wheel/test/test_basic.py create mode 100644 env/lib/python2.7/site-packages/wheel/test/test_basic.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/test/test_install.py create mode 100644 env/lib/python2.7/site-packages/wheel/test/test_install.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/test/test_keys.py create mode 100644 env/lib/python2.7/site-packages/wheel/test/test_keys.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/test/test_paths.py create mode 100644 env/lib/python2.7/site-packages/wheel/test/test_paths.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/test/test_ranking.py create mode 100644 env/lib/python2.7/site-packages/wheel/test/test_ranking.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/test/test_signatures.py create mode 100644 env/lib/python2.7/site-packages/wheel/test/test_signatures.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/test/test_tagopt.py create mode 100644 env/lib/python2.7/site-packages/wheel/test/test_tagopt.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/test/test_tool.py create mode 100644 env/lib/python2.7/site-packages/wheel/test/test_tool.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/test/test_wheelfile.py create mode 100644 env/lib/python2.7/site-packages/wheel/test/test_wheelfile.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/tool/__init__.py create mode 100644 env/lib/python2.7/site-packages/wheel/tool/__init__.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/util.py create mode 100644 env/lib/python2.7/site-packages/wheel/util.pyc create mode 100644 env/lib/python2.7/site-packages/wheel/wininst2wheel.py create mode 100644 env/lib/python2.7/site-packages/wheel/wininst2wheel.pyc create mode 100644 env/lib/python2.7/site.py create mode 100644 env/lib/python2.7/site.pyc create mode 120000 env/lib/python2.7/sre.py create mode 120000 env/lib/python2.7/sre_compile.py create mode 100644 env/lib/python2.7/sre_compile.pyc create mode 120000 env/lib/python2.7/sre_constants.py create mode 100644 env/lib/python2.7/sre_constants.pyc create mode 120000 env/lib/python2.7/sre_parse.py create mode 100644 env/lib/python2.7/sre_parse.pyc create mode 120000 env/lib/python2.7/stat.py create mode 100644 env/lib/python2.7/stat.pyc create mode 120000 env/lib/python2.7/types.py create mode 100644 env/lib/python2.7/types.pyc create mode 120000 env/lib/python2.7/warnings.py create mode 100644 env/lib/python2.7/warnings.pyc create mode 120000 env/local/bin create mode 120000 env/local/lib create mode 100644 env/pip-selfcheck.json create mode 100644 requirements.txt diff --git a/env/bin/activate b/env/bin/activate new file mode 100644 index 0000000..c9f4528 --- /dev/null +++ b/env/bin/activate @@ -0,0 +1,78 @@ +# This file must be used with "source bin/activate" *from bash* +# you cannot run it directly + +deactivate () { + unset -f pydoc >/dev/null 2>&1 + + # reset old environment variables + # ! [ -z ${VAR+_} ] returns true if VAR is declared at all + if ! [ -z "${_OLD_VIRTUAL_PATH+_}" ] ; then + PATH="$_OLD_VIRTUAL_PATH" + export PATH + unset _OLD_VIRTUAL_PATH + fi + if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then + PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME" + export PYTHONHOME + unset _OLD_VIRTUAL_PYTHONHOME + fi + + # This should detect bash and zsh, which have a hash command that must + # be called to get it to forget past commands. Without forgetting + # past commands the $PATH changes we made may not be respected + if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then + hash -r 2>/dev/null + fi + + if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then + PS1="$_OLD_VIRTUAL_PS1" + export PS1 + unset _OLD_VIRTUAL_PS1 + fi + + unset VIRTUAL_ENV + if [ ! "${1-}" = "nondestructive" ] ; then + # Self destruct! + unset -f deactivate + fi +} + +# unset irrelevant variables +deactivate nondestructive + +VIRTUAL_ENV="/home/ubuntu/workspace/env" +export VIRTUAL_ENV + +_OLD_VIRTUAL_PATH="$PATH" +PATH="$VIRTUAL_ENV/bin:$PATH" +export PATH + +# unset PYTHONHOME if set +if ! [ -z "${PYTHONHOME+_}" ] ; then + _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME" + unset PYTHONHOME +fi + +if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then + _OLD_VIRTUAL_PS1="$PS1" + if [ "x" != x ] ; then + PS1="$PS1" + else + PS1="(`basename \"$VIRTUAL_ENV\"`) $PS1" + fi + export PS1 +fi + +# Make sure to unalias pydoc if it's already there +alias pydoc 2>/dev/null >/dev/null && unalias pydoc + +pydoc () { + python -m pydoc "$@" +} + +# This should detect bash and zsh, which have a hash command that must +# be called to get it to forget past commands. Without forgetting +# past commands the $PATH changes we made may not be respected +if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then + hash -r 2>/dev/null +fi diff --git a/env/bin/activate.csh b/env/bin/activate.csh new file mode 100644 index 0000000..9aed3be --- /dev/null +++ b/env/bin/activate.csh @@ -0,0 +1,36 @@ +# This file must be used with "source bin/activate.csh" *from csh*. +# You cannot run it directly. +# Created by Davide Di Blasi . + +alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate && unalias pydoc' + +# Unset irrelevant variables. +deactivate nondestructive + +setenv VIRTUAL_ENV "/home/ubuntu/workspace/env" + +set _OLD_VIRTUAL_PATH="$PATH" +setenv PATH "$VIRTUAL_ENV/bin:$PATH" + + + +if ("" != "") then + set env_name = "" +else + set env_name = `basename "$VIRTUAL_ENV"` +endif + +# Could be in a non-interactive environment, +# in which case, $prompt is undefined and we wouldn't +# care about the prompt anyway. +if ( $?prompt ) then + set _OLD_VIRTUAL_PROMPT="$prompt" + set prompt = "[$env_name] $prompt" +endif + +unset env_name + +alias pydoc python -m pydoc + +rehash + diff --git a/env/bin/activate.fish b/env/bin/activate.fish new file mode 100644 index 0000000..7829923 --- /dev/null +++ b/env/bin/activate.fish @@ -0,0 +1,76 @@ +# This file must be used using `. bin/activate.fish` *within a running fish ( http://fishshell.com ) session*. +# Do not run it directly. + +function deactivate -d 'Exit virtualenv mode and return to the normal environment.' + # reset old environment variables + if test -n "$_OLD_VIRTUAL_PATH" + set -gx PATH $_OLD_VIRTUAL_PATH + set -e _OLD_VIRTUAL_PATH + end + + if test -n "$_OLD_VIRTUAL_PYTHONHOME" + set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME + set -e _OLD_VIRTUAL_PYTHONHOME + end + + if test -n "$_OLD_FISH_PROMPT_OVERRIDE" + # Set an empty local `$fish_function_path` to allow the removal of `fish_prompt` using `functions -e`. + set -l fish_function_path + + # Erase virtualenv's `fish_prompt` and restore the original. + functions -e fish_prompt + functions -c _old_fish_prompt fish_prompt + functions -e _old_fish_prompt + set -e _OLD_FISH_PROMPT_OVERRIDE + end + + set -e VIRTUAL_ENV + + if test "$argv[1]" != 'nondestructive' + # Self-destruct! + functions -e pydoc + functions -e deactivate + end +end + +# Unset irrelevant variables. +deactivate nondestructive + +set -gx VIRTUAL_ENV "/home/ubuntu/workspace/env" + +set -gx _OLD_VIRTUAL_PATH $PATH +set -gx PATH "$VIRTUAL_ENV/bin" $PATH + +# Unset `$PYTHONHOME` if set. +if set -q PYTHONHOME + set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME + set -e PYTHONHOME +end + +function pydoc + python -m pydoc $argv +end + +if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" + # Copy the current `fish_prompt` function as `_old_fish_prompt`. + functions -c fish_prompt _old_fish_prompt + + function fish_prompt + # Save the current $status, for fish_prompts that display it. + set -l old_status $status + + # Prompt override provided? + # If not, just prepend the environment name. + if test -n "" + printf '%s%s' "" (set_color normal) + else + printf '%s(%s) ' (set_color normal) (basename "$VIRTUAL_ENV") + end + + # Restore the original $status + echo "exit $old_status" | source + _old_fish_prompt + end + + set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" +end diff --git a/env/bin/activate_this.py b/env/bin/activate_this.py new file mode 100644 index 0000000..f18193b --- /dev/null +++ b/env/bin/activate_this.py @@ -0,0 +1,34 @@ +"""By using execfile(this_file, dict(__file__=this_file)) you will +activate this virtualenv environment. + +This can be used when you must use an existing Python interpreter, not +the virtualenv bin/python +""" + +try: + __file__ +except NameError: + raise AssertionError( + "You must run this like execfile('path/to/activate_this.py', dict(__file__='path/to/activate_this.py'))") +import sys +import os + +old_os_path = os.environ.get('PATH', '') +os.environ['PATH'] = os.path.dirname(os.path.abspath(__file__)) + os.pathsep + old_os_path +base = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +if sys.platform == 'win32': + site_packages = os.path.join(base, 'Lib', 'site-packages') +else: + site_packages = os.path.join(base, 'lib', 'python%s' % sys.version[:3], 'site-packages') +prev_sys_path = list(sys.path) +import site +site.addsitedir(site_packages) +sys.real_prefix = sys.prefix +sys.prefix = base +# Move the added items to the front of the path: +new_sys_path = [] +for item in list(sys.path): + if item not in prev_sys_path: + new_sys_path.append(item) + sys.path.remove(item) +sys.path[:0] = new_sys_path diff --git a/env/bin/chardetect b/env/bin/chardetect new file mode 100755 index 0000000..d88e2c0 --- /dev/null +++ b/env/bin/chardetect @@ -0,0 +1,11 @@ +#!/home/ubuntu/workspace/env/bin/python + +# -*- coding: utf-8 -*- +import re +import sys + +from chardet.cli.chardetect import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/env/bin/easy_install b/env/bin/easy_install new file mode 100755 index 0000000..108ec40 --- /dev/null +++ b/env/bin/easy_install @@ -0,0 +1,11 @@ +#!/home/ubuntu/workspace/env/bin/python + +# -*- coding: utf-8 -*- +import re +import sys + +from setuptools.command.easy_install import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/env/bin/easy_install-2.7 b/env/bin/easy_install-2.7 new file mode 100755 index 0000000..108ec40 --- /dev/null +++ b/env/bin/easy_install-2.7 @@ -0,0 +1,11 @@ +#!/home/ubuntu/workspace/env/bin/python + +# -*- coding: utf-8 -*- +import re +import sys + +from setuptools.command.easy_install import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/env/bin/pip b/env/bin/pip new file mode 100755 index 0000000..bd5a137 --- /dev/null +++ b/env/bin/pip @@ -0,0 +1,11 @@ +#!/home/ubuntu/workspace/env/bin/python + +# -*- coding: utf-8 -*- +import re +import sys + +from pip import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/env/bin/pip2 b/env/bin/pip2 new file mode 100755 index 0000000..bd5a137 --- /dev/null +++ b/env/bin/pip2 @@ -0,0 +1,11 @@ +#!/home/ubuntu/workspace/env/bin/python + +# -*- coding: utf-8 -*- +import re +import sys + +from pip import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/env/bin/pip2.7 b/env/bin/pip2.7 new file mode 100755 index 0000000..bd5a137 --- /dev/null +++ b/env/bin/pip2.7 @@ -0,0 +1,11 @@ +#!/home/ubuntu/workspace/env/bin/python + +# -*- coding: utf-8 -*- +import re +import sys + +from pip import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/env/bin/python b/env/bin/python new file mode 100755 index 0000000000000000000000000000000000000000..966da3abc1ff53334636f1f55727c3cdde0e98f3 GIT binary patch literal 3345416 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

XU@bZBd|G~TA?t2)LS=Gct1Qn{x933| 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

9no!mjs3B`RtS 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 z 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

$(okzf4`zlR^)Kx7f)MmnO$glgp`hGk|L?4^2Hx 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 J$AbuI-NcNPXM`dyiYpV%jIgRXsIC7~#m9P$` zRV%ZL@H!|xo;`J0X#_tHA$uge_f6xbBh<*jX$#!8!D$QJ&hkXHpG=!aLNHcK5nS0) z#{8!g-u%bm3O8g&u_y|4WT-+mXNgs`9pl-XfIIb7*urzO$H3C(!R*v@jnt<~bevWS z@vT<=rmcfTGV+KQ%jZhKV(^_SeUNNOakOGXq;?S4-o>~eWg?`?tF5nGxw+@Ki3*`!=?Hk}kQ_@|xaJ3A{$H_P zXKM$QRGDm?zJKm+L+mxTOHic5WXiB{%h zm-_&_T2@cCPfb6h;BQ%CWX(fFmEZ1NhQ6|ILg1WJ?DoQ%OUbK)(`CxioXILIv+ocg zAyTnPnC^lx@OsmJLdZPceu&QksTVT;&!Ld{JWm|byt4wwyE-B96XsNZW)2=1RZD1J zjzXj732kUDcy>_48k&`K;Lr>DidkN@`9-ij9B2~HF0DS94 zVK(ZhA#Z)YaxQ#Ooi|bvQ``L*Tv`He2|VR@-{Lm~kjjn4>-e2xqpEWXj# z*Z*bzqB3#|ARi)+EgC65THZnTu-8LRH$+kZZp6#05oJB6jj`TQPp`HHIF^*l3vmwh zB0Bio{s@B9+#^k@M*8eE^Az00&a2Srk79_uSuRfyR&L2N{fZs2?B(uGNT1?#LTpWm z^zse7L7n=yK;IAzqeNHPt4h&;rQb6=BpvGa4B65CL6Ugs^E9|2v5gjsq$i{g<^>a* z2ouwXe)mCPbs}ne7@$$7f=wbTcez3uz2k*CsiCrTN>bv?>2t>;`k0CSO#=}OkbmGC zJXd^{udqE*Kj_$|^c5nC&qAmQ6^Af`gad@Ekr3F;s=^V^OpzxY=R>5=M~sn|q{H`l z((#Zy8{tWZX~T!kDRegh0(MNFvO2k1+sU@c-K_Otd%9ncq6}Tc0^my2!J;`k973Q~ zD0?C6S;0W>649c#;zA%->ol*{=akj8Zk310TJZvnk-epAJtCwB(nn7nygGP>_3HFs ze%`KYt8?$o8s--99%5j`RXZGdH+gRroE2B4~F)&?ZOl3%AM_OyVhC*utgFV@v+6r%5%qrk4D6(H$>y~^zk zyT~n;<<+Xr)%vYS+j_CuYMt(OW*hzbi=0B|ovfZN@ zR<6eLUX6)f4R0DoQluJ%a@X(!DlZ*+jkzDmKGu>~q=qm&^Os>`rM3uWr&@Qi`cAF6 z`7=2YENU=0T`i&kf7fu7omAp}f_)f@4q-q3Mzgjatem6@2Um?IIOr;{61Qu&DYt94 zy;xWHwvie_zHqt)XL~=A-IS$Qj)@5XORys$+gNs%C-xf4`jrV_^(W2>xF9Z|gp5cj zl$3o&=25ZU!*nlFJKUVrW3YYY8*Glq8w}$sHU~zhSir9g6t0gQ4{hM#TT)5yJ(xv% zF1la?wA;N;?8a-{X>W<)nNsxpuvJJGcImItvvYhGZ3Fw2qgx`y|M($Q1=%T?o@+^5NfOAP9pX!Q` zReGyAAM;1pOR>CD*ch0ro)+;?Y8{fsl>SPB2)1d#-aAv;sMb#nR5ePhmRpz-u73uq z#}4ZPb9avutHw~x%K|KV+2sy|V9LvQY1Mv9FYhg74 zda$a=ou@eeXPIw!(vf)(*$mJr`AlSiBW5fQJ45sN_-lv`5f>W%YJl=y$-)(i8E`tM=6m``QW%94_P>& z4b;6F^Fs?SyNdBuSeGPc@2_~a5Ml-!A>xe~I)&Q1Z6)dZ%j;cHD+-uXj;8{5hXP2XMe1!?$fRWMMY-ve#xAYGf)G-uv>6p}V42#(MOpBb z#~+o1!`h}5|EnZC^T#as%HwIUFgwRa!R%spTKhR(pgXF-L1gU=>yFk)W=e7=sp$G(K{+ zyu+smL+^?^YgYPUsf^lVr3;ZBxx|8%$}Y(9Yt;nDnNIFN+C^B_ zCn9lr_0eZCn8aiBVJzd>z)rcZi1!azKL!%K5hx6Kj|AjuB4oW1uyzF!yL9>;a*2VH zXa=tIE(>MMi)oKQ5sX)wL}wuS8Js-pXGdqmmgAN=^Qt$iEV*1NRNu4MzFAFL$tBtB zdte*Nh+823^-+42KD6_5P8WB+&A0LXUmZq8jIzm%K*IAVvosmG7mX7cF&slPp$n`6aT+5 zJ#FIuRBufDpT+t<2kL~^_^DpwvLW=@MW1dI$ZCLxC$10o%6G_?@1N6ydcqtFf#O3d@A?eeV*+bKZg{5Srx`ptvRQ8g^`5A%3Bm z9)w>N8L7CG5a%1k&edKf#_{#&>U3s4nGkYkn3stS%BuWdjAe@7sni8x3G`AwGmg*Q zkEoXks01eZQMsEnyG&!ic9tR;N4d;?WFrh((YDR|6!oZO%!7Z|ecUDvSfyQZXKb3WdZg0kZGNt!)P8XFk zPgkl3LJUG2^-`&btk@MYog$gegF3aVq>dnUP*<6XJQ$(u{*rnosrCCy3$t{pA*mw% zH5h@KOuW1M8`71Y&ReLFe0ysV|MC}4D@3n9D_}t zco;_(m0S+*WJ!n(@}_WiTOzCYx{80BeY zap2kaPomxIbnnGfv?$k4?MO~j16B5#!pyTvL^C-c)#oSzIqJl+%)R=ZfY^iY$=vSU zn^A9a=h~6-9!r-ia2w*u10Ed!~DZK83~E5JUE@N zUUgV|*jhb!6B3a}wN32DNWtz%x(GK*FG{n~ik7O@vyEjJ^k!4*hYlEwynvXBc6f}e zDmui}Rs3kb4-cbIeL4FYvFd| zjs1oky**F;S)D=T=-pZJvpSeMsLdHa+}*=En1@y3Y$t!WY{hc0+Gvwqloe1e*f+H~TEa+YbFWh_Z>|JmklV z$yV8Fh0cXqLYDoc%qZDooEzlT4O04{$W54p_?5e3{ivrSN%E+N4Y0?3opUt9IiECR zS+tOvg^_ehS$@W0x&79qk}t>?0q__x4)wA8+!67waaZ!0wco)WvYc19*nt!~r6($1 z(-%m%I<`820K5O=q5W0#I`|V|0AIvKb-_U*e!)T(P2 zE3^CV*C~*Tm07+@_cZ?$Vzki<%^Lq=#@`tyzC?Fj&zA0t(JQ5&Tj*!T74-3pG=Yoe z6SyY&dHZWktLq=zbzyyzxm`P{b{_AHtNCUs@`Q6LMPi?5AKICxjnn|y!*>7emk;nc zS6KT|F0(p*o9z3H^E3Ge=_fD(>(M(V; z%TBY$nS`{i3s-!Il>rF^wq7omzapb=JKnQ_k*G+-@j@&1Ww_#fW8o+W2S)T#|C#p~ zApgzb(nMXT96=Xi(@`du6~|#D-zp2cpq47Z^t4t9dsCn8aazPK`e6JWH*>TI;J%M{ zCx4^>SB2bU`~6|N3rt!C!VMS3rZQTL^H{6;!nuDVu4z*qO^OSx66x9Vq(#(|W6K!T zF|=daannrCKwA0G`5Y%@k=m>32$yd15Jhq&E@0TgWnhz<=(|WLrCIa0Rk{6!<6&+! zuI)MPn1J=o+38p_sJuDqe+f?pg(2(O^03rKkiU>IMC~xf7@MQG5G1=;MG1-6ecjW8 z2#m0upc3^u`VlQ?k!%E5tRZz&Meb%c%WM|LFxR z@+#-J%I{kBObBZ+suFCx}&%m|lRR=h4+@r98*n}K9eN}l5Xq0B=mQQ8Pf;k+wS@k!Wv)36?b5Q6Hr zU5In^JM(ak{?M5!1cSWaGOcc9&U=E7HtyxDRTAPV8K8~-8#lt%Mh`te1rI|~*Gqds zMx;?w#B`^)CZ8E7(YSA))3~LPIFs~5eRq%)PxRm2D=0{RIv|YL-M8}sIu&{?h@i5Py`5y$qAufMIwNuIh8i$S4KnjNK22^#mVQWUA zTP#3m3RSa4zGr>q@_>Q2o7M? zWCdnbtLAT$=Fe`|JhhhUT6NTVw!>8y_?GY7+yFv4t&{QuFV%AwyZ-@XFK;Oq|M&gW z63fMpv+kr8>G*2h#6NyRnN4pK)ahjhclQ)h5p1Y~CjoKwjr=rmMthSdo2q z&)TZHnLty0nfLI%iTb4h`<&wNyaDQlhUg}#<^Ueow6FiDJ%B@PW5g=hc#<4y_t13M zdy4OVqack~X>z)Ao-4>6=kKSe^5?Ha&SZBf_VefaX%dlpbMFJZ#{n>3jNk0bc&v|! z)&AfS=Ui;YSorUln!R8y|3dT^AFHzZz7H|N5J71e`8$+cz6(~8EdMDw^^ii_{s*kD z2iaO8KPpkm3Av606T?*IJ_qMxgbbh~59Qm+O7j8rAPE+QAJcRH+pSqR4sh zNP<&{8tYXu5<8J+pWufag1gfm`>iOk2QN4B9J+6R#sQTds!u;+t+Ix);I^44STbP% z6l?Qwg30xI;EB~GPha!E&Au$%CZu(Ca-JMaz0p!Huw2T?Ci&CP8fZserF!Bl-|VYE z`NTzF-b;@Vb)w>od@O02GaH$Z^ZpTfGAc}jM5j#rm>>HhwJt6(;fn&+EFY6$A~EQP zOe9t(>oS$yWKP)QT=-2MJclcy=2$XfPZ;V>lnlH7ePigX_#brkJTxeC^NQ8~1m#PS zIx-KC-7=o-H+kNEQaAJBioZ!_9+~bWsM3m;{>A4yT$!qKfEWK$`v*|*KjA#WD!F?8 zsITDJz*3WUB~1md@+JQz=Fa6`0zfm+ZTzCcgV(Y2M1N4LU%`UQYQ3xS20^`e+_Oy? z$vVAGmb;1LzIaK>BhW#JV-uZsDil3pv_ZStc@W=-tbZ)X+Q&{MILOS9btX3{r4g%F zlrbb8RQ;Rcb2NSqZyI5G?PJEtqWwm<5q~~lADs9pKbA>tjQ3T|Op#_f%ET-u@z1uF zV$U#-<>LTc&0OdfS6P|+xe>WrgLVxVomrtlw`gp0tA^>Lq`HT)B<=J`h*B+8jmzh4 z!YXBiiq?Z~X}PQFu%e@qrp^SmNNOZ)auDUZm3@$3wrS@_Tbfs6)BQCt`(RV1^9P$e zeEb08`CKrRb;gbFQ-Gl0FH*Cp%sG+)AZPYO<$BzyeS*?1YWk*vWB4uqA#)a7v8YJ+ zofLaXY4AmK=X84*<6z1SP1#+0Evq2wCUk)C24$sH>j*0%0>m_Sq~ttIj%goJuBvQ~ z9p@Y=bX*J+*97fy=bOXy!p)L}yMl!~KWO1OFj3GEe1vBox43uEr}kf)c4t*~>dDT) zG4m}m==#8%qU;>uGS?ri;vIM6;cEFy$_En5vRp6A$vs(?KZ(>C(|s?ACpa$Ce|&Dn z5&U*$oWP)}AtLp(FR1bCB;*sj{~Kdj>cO*-jT_yo$kHqN0l4dmcLKfCcQ-WuOkb$p zSIG*S)+ftfW09Q`@t1}4-V+_UM2aeQo>BN8H}p~9;T!S*!RqQ&^m+PE^*-mlS<+`F zqxAw{$hA$7FNJa)zi&+@rFRx`7Q85X~as7ggOT zT_SlOC3KRUShnmXc+dR&e0uB);E57d-k9k1M_Tt2IEpYr<<37?tW+aacu{AhI?y7k zwhClLtKyU%t1^i(rOtn6DWM4N7P1c`3JKm{NZ>s5;3~n$M&eFTUCaqhtNZUrlRnJ0 zvzK@1nzve@*DzK@aFG5##*>=Puzw|<)GU$}X)4~+(lloA_lghSqm`*32)Q9cjNsS`4eLShN`ECm)rRuZ~CZ#&n!K5yih(TA% zlh)&;Wuh+e(nJT7l9yP5Ay?0oU{d|Zy(p+qFk1bYPB5uq4}I#Kk4xLor_M;O zM8MIwDMce?mpgYJ+E(ClBPA+JQ8g4c@k4$V3|Z-6mX>=sZSRXx)~blr^+YM8k;`4A z=NKugX1FN0b$=#0!jjfE7}`txzcSJ5_fP8yMao7y4=Y+p!3)Yp8_E7q7H^O;-|@~( zI$Q05@oIEN>H-Qi`H!ZrO9Qm0r*n<7^p5=?EPSzDuE89PQdLB6f7dO{&Rj;tc5SyP z4Y~fDTT0ZjB|l;I3<1i-qV(;ttH?Js$gtNs*FwBy4({nvNx^V>)n?~>;^%0sLTMvf zg++P*)7@8~inPO9YI=oxsoz)`V1`G--B5bSL*r{U+%y4 zheD6?)wFU+*-&Q&0utp34kdI$fNZ2B;3aK#og{56xScN(6C2@!U9XgGLO$uoog?ij z@F;Ads=I_F{KoX*Aq3LJq0Nc4$B49DsRe8I&tw~^SI{V#c2_^AF*9);5x!FQknRkF zcIka#_g%Bh+ZMs}+5S{BQSY80#Yo*uLA@*T4$PY>6^;t$_Mh;HOpU;#k%S#EtDnMB&Pkm&KADgq9RrLd~>;5 zS}%MF);``D3@PDh5DN-+8Oia~3PKFVEB2)VC<>gfk^S&Q3kzsVxI*@rh-=tRID5M( z3MGX~xmJ*N

A;X1+Lr6!2UIacIvATC9jk%2f6*eqjh6#`8?lz0~HmZBzccScM-gQp1-sG2*)iwE! zp&TI5`@h^-|9eH{1Wn3g7J|`}Y8(MwF!L5_lhGBTTe;r!#kaIUdpd(+f*!O(^l8{< zkd}jXrL%;I3sIpE1V9e7LMaP1sLvI=lTQKm%xTVWhUfvhYt!RdKwm2X2mAhu@A&>2 z$X!&U@hjQ^`0@j@oGnd3&Dn-Jrz)mM?@&2yzoT4Ja$Y2!6Z=EG_YrtKv%?G3X*#bV zcc~gMAo;J4E@M|$gVd~0w`Ys>$#Ia#bHQ|RdDIE_2h|3 zU-Dw|@x7v29qo#97us8PF1u~?=d?GI_GqOa=|-wiw*{qeg4vN&dn3t+J|R`fznS+z zck^jA0AOc63nb;gIi?YQQSA(O0u5<-O#ElH=C0V0b_o+Gr%Zc+7J5N1Insy=t(y|8 zkURuR+%T6URB62~JOL8jR4|-B@}JUK43~AZ``^tJ^?CCdPnpgwu z{E>y=d^A}qSovjgdCjMtF#W!^F!pGd-*F`hk$h& zmXKH;_G&twQ|O~}N%xzzJ<8(eMC}FAC6Qx9)~Cq3?KKREpGsdSCEGNj+e9m8f-h{W zu%#-+P6}I(3NX~!MrC-@)1mPX4L?iT;J+EaczMwbC>g82}&ToGk+k{80KZp zzji-gCZ*3rhapk95!OQvJ7c@*S*1j`8?Zad#FQ;r=3{-}`4al#u4TFOf#>nT&ESUz zzqg&glFLYA3%#+1t-q;}j%r)qQM`=vt`K$%H+~Ux^)SaKJ+&c#4AbiXsAg#KPvea`r?t_@`?B zBPSoep^D>ES`MsoAp216n>oJ|PEmn(wULy2Vu`WLJ<4|H8vMM46FqtGWUYx6SfshMbv_Bgny0iN=dSn|wsx%+mO5~M@Sn$fghgG_xrD5joiZ-6uSHQa^&^okI zIaX7~vB(vaOSR#X+(tnq2p0vFkXsNT^rm?3z?b8^pENqjwO{iM4+=buq$L2hZx}7* zgk8x7Hf`QTrJ847W6qmi(uRUOz4FH{AgxrVHB$5$xG?nR+gK2G@RC>fe$tk5lKVDx za=TQq16Ydp>u=ThPM3|%k@xqc#lIAN0|0*T7?CUIh+Mf@ng;Xc*SDdh(9>rbD;Xb} zR+A&{=c6`sDQ&X&>+r2y7Qa+n-WMWdNW2VLTBO;c%uv(5#iwSuG4=-!7V(VW#;7DZ z4WTHjW2Yq&b7|b~+;U+78bw|lu8|S+K{gQgkGIJiuT9E8>gzlObKPk9Hj+~~u!iT&Q8##DdvKwVx|HSO5peM( z#^MHkHqU#Ag2-Zn`LLJHrLO=i#CY`WmD>(BC%#uw`^5Owx3Uy+w2ag|ce(mFnh(>y z;~GBHozP6GMeG^8GF%|m#0rhr7(TQA?7QpXNuxkqE>u1;QcC*~GJik>Y`acEMHb{q zn5y<Ht8+}^w`% za%KSV8326HXkIOuqHRVot^f@qHBw^kBEwC6B&CrZQhR}g&^>rsd3%Otp9=%;f9*No z!q7JwKx9T;)kxf4Cps!m4_S{=;H)4Z;cg|MJa?%AU+8Td%7v}D5Q?GRSg%2WqXVx+ z>}VmutF~ZyW29uWh`XI%4BnbJS_ZDnT_W~T;q(+(0?Tx|k?Nxe(PgyH`9IK#0LU=( zaXTp?M$}kRhwzI>T)Gt6`T*BLs*tO~)!5Hyn!;M6Br}quRHFlnt2RfNG2Rup1e|@A zG8-b4#d{^;c{2*{yisVVhz?=QZS_Jgfm zk%_CYzFi{7AGK~5Opm4)%2zni$se_s$VLb!PV~q6niJQ{HFU&!M$+62^hmt+yUK_l zQ2}D@lrh)=;Ph`H-mVPMzK%U{0ockzTChzaJ1J&0tda+zCy=cw)KQ^HT7I3DSNO6h<-GCr56D4k3&c(Zz1;g`AaZ1ne+vTM zSqB1^Qd*V+llNBVpQUmm%ZEFYl2!D$R^{ckRM#W+-BPio48R>C%|b>WyYq)ucbtsj z42x^Vxz{R@gc69R^6H5gtws^TOif$E8c!-M1yaG!=U0EBqaZ z4D$eJQD-E@;D}K7ud8jgk`1 zB=&(y(^q67cUha{wRjkjW(_1`UHp4u%9r$j?vR|AZDM}*yEUSbhuCYsH&L9?p)BceJ`kk>}X6X*SXW>%g@dhN-hAN9-<81okvhaX7-w4us*syj>1kFlZd{cV(aiqH$ay}-op#VVc~SWh?RJHkFSuYDJIAaCTAYUFyHIE z2loA?(3x0gISn{nc*!X3OVb&8LcBCm+m*Nj9xCM$Hib&nU%TLimVPj;EkBH*LQFA+ zS>Iq@{5z>@kKAI~QHRps&=&{~Lmx|0+`)wo`*;?I`p_2D5chZo@=>fl6xpt!G0bXH zt+Q*YHZ#u1g!O~dBVL8dT~A!-*4W|UrUB(rToGagMAPczISE_kuN_-5^A);~F_%g) z=O7tEg3)2*xP=F6j4)_-KcEbrnA$kIO8`UPpw->aw=_R7Oi0LipZYNA4iF8owqSK0 z+cB{~&8zEzA|#7+w>lGAyYiF#h@F2xq++dD5w+%_K)i@j+_4);A?M0$g7d32c8i!! z#D)j#JRZ@eHU=z=weMnRazNxU1b8KYk652`R!HJ1l>2PL4>y#W6E|0y{`DIB<CvU zDzhqe=5uVuU`!CzO!PX7Y`^=t8d(F=9mB{bmS!GD6L5s|wuRnWH@aemu|#d%VWxPE z0B!egzlmb!R&7qqD)G(k4IIn~ZmYn( z#E4SK`*|C)$i(Wx)-5pR^LooEAqERQ;!t&xIDb`Ow3!~|uUh9GzIZ?1KI5@=Ifu*< z&=dC+Rl`B@EImC8D$KDRq!rs;Z103l%z#e3%aYh#w;eUWms&S_miP)wwOU=@<2!a$ z*xDJMw?$|~$R1jXg#EYHdWgh2s^E?0TqN)d3t8`#U*t#a9#y8bGg9%c*?QS7es1y5J z$j2~HvhSij^|HSg$RFe-Yf7ow=FWYc+wbpjWcvmDgxTe(p0t;F%A@DJ>C*Nuz#%mh zT#RtKWZW^LMzxa`IH?Mr(zA(7Z6xpID{O5F&-+-jtN<+Q0J<>}4bn!sM;&_Y*9$mW zulzKBkX>{b+DfzHWeB21$G*~-Vten zB2ttIp~Fn(&SeaNDE5k7^c5=zh>(C(l`04}Kn3O!I!GHK|MNU&hM?d3t^Z%YYZ>nB zbIxvOpT5sN;fb)at}ublu(A%YGH;F-hS3!>JpSJShVeKI<2M+_HfTVm2(Ls`UJ~Y1 ztvc4gm}Ld&w32-ef^m5q9|!ETR$kb|iFU2 zJ@Rg_i|(+Ce>C?@OzWnjtd$4=cd97#~D_P--99S><7+&~FclGhW=1=AGrtiT9-F!)VmNSGbVPs}tn8Z2h5Nz-R?y zK%z;Fs%;Za+w&n979fX9u}_`OnPFRgu5E8-ggIFe=zotVd=D&PkLilg6UO?VoYMEY zZBY4lth3sphp=A>2)ec!J@8^vXI&w1Q25uU*b-OhYHq%$hSA0Cq6p(uv4`hXC4z zW2qkrL3++qbYVrCM|Mugyg5DRodg&d-P_|xl|vhi`;>U z;hN6?W(B!ho|ZG4iuPtNpND@E;D4GHUPOpxPiJzrsfTdu!6@>tou1)1Z{2>0C%j9+ z7Q?|fJ-7QF+`FKJYunIG745BNei8%EaNsJvke@k&u>Ki};S3JbIaj`^)NbY6n~5YQ zZyx0=eD(7AMXbhxozSvC-wge2K+Q!p#i;>bH{e4T0&11p^OK!qcwEH8d2{PKl-M4Y zZ_@y{2K1lp(vQRB$3PS5iCe{7&Em)vWa0xavEwK1a{t!>xY*?QhVW%3_ZEKAAiUvU z(o4QcJM_{UjMY68Ns%u%Vd)u%j0dFfP<%dSpPpVRa-dO}gq)gt_q9pL%Pvg3R3kMv z0ip+fiuJ?5kC3V>0{(h|C?oNA1{}zqRIX~~jcKRvOG?bV9{bAPl22frdk_1U%CUFs zX>)Y{R|uO1-jr3D>-D5^Y@AESL{gXH6v;+AdU$#ajqn^>4E6<}#mMX2>(IUv_n@@# zRrrxP=gTQw2h7HM1^9-dUkG1W1u!eP4+=@k$)(L@pKCUKAjTC$7EB8Za!K0Kd;e7b za9M|dn~R|6UV$Ac%;q7{q-0Ncqo?5Fy`E;rJq?fJVY3bm;Hqeq^=9um%d0> zX?LU|G&%_KnQ)#~YV@47jiwgH;`+ zD*o9t(u(%RyNtq5;L@zO7O+F$HirG+n!7PB6C@TEo{Q)7G+q_H=`kA**v(`Yx942n zgv<(&o^aH6Zv#Q1YJ`7R*l^m#Iw6vL`)L5txudr68}Ein@7e`aUAPU{P~!F!@Bh8w zzvX-iTN#6G?T_-I{Pb|4$A4k-GFvQiTwCTh{ z4vgWM4`X_Qz7MBwsFHzPJ2cC`Y?GOf1Ea<#V~qRNTX5mtjAn%h<(Y1M+`mDmTwg8J z`2MpQiN`?8S2ITE$~YaEdL{&)4)nc=-uDJ%N*&0J!ULK8`xaAiTOZ=~QyaA0-Kf0u zk`t2oR@v-As5C8mx@lDH*{FC?sbp_3bXTlVp%;Ow*r=|JZT~bVT-C2Xyo#{{z_Y=$ zfkk`Rs<4>ALRZZQtFi~+lv22{XiL1l3RnK?`~>G;m+DSqG#&QMEplu|?ZI>uJ2HG3;y#r+K?0&vpK_g$TVWm)!N1gGxGt=tSQ&1N7cHnC|((|_bc#SOf<@D1|d zR++HW28)xMwtugzYczBeyHv$kW4hzn?dKZbJCV*~pIQ z(mC&t>9p)a*j4*_9zJnSB9LYCV2-w8>Tp#aECe+@5L#~2)YCd|9Q!I_j&NC_!%)*d z@m?7?i)P*luIgXL)%2Dzjxy^Zu<|8VYL-ME@MhVg(Vz=wu~W(W>o``_$UftdJlu%n z+3|C!&|M)eG&K2K%MaualQ11T+TjhOIbBe?pJCQbxCy)WIF#S%B1aB#^yxo<8-y?y z_Zhb$+&|rq0Hr}(wqEC9x^@$+AV(G$K$0h=4SaUAM&Rrg(T!mT4d_EL=Xqwqu6Iu5 zH)mrw$6D8ucsxC~FE$5CvWeQfOOeh=TW%W!YR3-w<|)IycrZG*Bi9(2S>D|HaGJSt zN>?o)b3LeiY|ZAP6jI>xx^hYj1UXLj=6ZBI8&4_e&CYMiRJ^HK6^UnIB$*HMDHf#si0J&UCrH$w*n3xyPjs zx2eyJly5V!$&}y@2MB@OGGqR~g|mPubCEj&U~b-GrOiQ%hLKr6@)~;9LL2jg(v7i0 zF=0Qpq9>Ot#aTrX^79@MZ&ved<^lMZbg}+JqhlTXmv)Egau~A?p7q8XAFj1>QiNx0 zHObQ*e@vv4ygWz=u1Bwdg-I9a)Q3kYN_zN;F~f~w>+w~j;q9|Jh{~!4<5nzjdKC=Qn~gS%>Hw0jK{`_7rU&T za<0cN>!l5poyepOluh`+`V!WJ4V>hx|DW1`V+97s>_`KL{6{`p7ft5mYXe-@d0%EomwQq`2E#rWg;(RrS=cVUZu`Vk; ze063erm(w6!@fWIeGCry2y%r+=Rv?MLv3^0Cay`6ja zb=Yp!4liSWb0f!#c#~#hr<0c3fM~hh1;pKa^-q=1&$A9g^)Q29q4`T(- zf?jOR4HE(n++VRmE5vqezjht-{Eu~aZ2yMCve~~0DO(%t%cNo|g?*WyxzmLCFJ|f2 zLLqxFjfGLe=RUsav>x-0{_eBKjmFp?) zYdkb>FCzQ~52zff)6l(a$60i{#4R3%(dWNyc4?H!nf%EA!uKO_z9HLK=II;xb6Ht- zMiUY;dtfN-?>2uDff?j4Gr1-DR&HXW79j}symBdPIra4ydPt|X`a_|Aj(Rprc{gielA39A&5LT)dL*`7*qj25^8_LAc{H-;ofPmZ@ z{nK+B@9-jaEBhY15_^3t$~?Ju_xGgiLfS=Z7S+of8MzGmid_3aH63wi(vc(l^OQ+A za>B0OcD!d`($|nHVoBLGWdITzWQ4!Z$Q{yDh36v?(IGH)@0yZ|_@y3XIE#fKA`k6T zhMB}}Fk`m89a)l?MQL=3XXwIV;$ST2vyzovr?dL`g08yAr+Kj1n2coj-T0wf+ zWVhZvA16lEoGGu>1%fJjgwuDdjOW=svQ8B%YoMAxE#}74u zJ{^h?d>W86M6s(o(6U3Z@0$kV@f3V#x9(5M(;tXYMIhay5f|eJ#7pB^Hp3XLn}N(4 z-&XAF@Bju5gvQx>@?Fd3QMeYA0IgW?%K%KzB7MU+m%9TAk%8^tgSuF88dkh&67NQ0 z;Zu=zND)4l?tsP32lI0*n%LYJ(a00t;wg#AYRS%+!fvs$=@~I2rGj~XHXYa1yeXU0 z!x)iy4Ki&;OQbBtmnSz3#=F@H{)iuf%6f9s;GhR+K^)54I>-wLJwT}~MQ=B645 zqp=Y3C?KVkhxSHDA3(|g;+x1{9q_9xe~sj?yYZ_We+}TTTkxwqe|6?B%z{%Z;8$j~ z!h0{(A7-yezZL13C(?60iHo6->7H;EZ$mix;7F}#y4UJd;7M$s#CfkLysmH;{&*U$ zOQRz-bMj0Ip)ssZo6{3}Bg*3DRTy_$Z>@(ZtK9R}T_{QSJT8M)(Y4xmOcpN_xZk3a z1Y+B6&5@rikJpMlwHqD;lUD8=YM@50%DJ|J2kLoN9Q&E4_%XF-tCGiSU0x z`#TcZbQ1gOt%fFJS1)N=Df~_De`&e9%9D6H10E%)!&BbyF>7vtw;*zF+j0fzR@>9? zo{MzDv-46z@h*0A4firKnK;I|1OzO z_yVBS2rV5MAn0mB1As2ODW(=sWcr>sn~USH`gaPMtbZbRm^F%?fw zO;0Qc!yTxK2eqY2ftV9gO)XBZgH)xpPb&N!)GNjrjwFIKy)5Au(fW=XW5PuWqXxPN zS0TQEKasgZ%r-Q^hexNeH{eM*ICYo@kGNwwj&Jx2ZJv%JD=cb-vf+IBDYW#t1}m3`eR-VH7n8!2@wrEm*a*aPMs`5osGjUK~sZl@S? z8!qiPQ9U@X!3a0DWo8D7qyOFNOM~XBLXA+zLBwS#wN5^=VI*dsyT^laI+_6&6GP3Qtld96mJ3?LrG8K z3GGN0oJXk>IK<2B*CD6WTFNIb&3cs!3oPS(e?kNB0bfCheLvzyiTIBVc=@VS><8dQ zxRB1{ZIe}i_Y2{}br4wbf6j`t)LHiVBHvSmhoNfJ!t|ioSx)PfK5YZ-&KcU zjfJsCp2odCEO6`PC0M8TqOG_jzyB$IY}PF--g5(L|{#Gmu1IV6NTHf4OK zJ;rEI<|a?h#}p@$nph6CXp=Gir+4IIfm8}NVg{dFi%`tuZ@|C6P`C^X-b@D3i@@LO zEEz0(?;rag|Ajv^NglJt`J+M%f7tm&!hhwDJVoXuh(Gem|G-}oxoM5>|DC^_YH|L$ z{x|+`Lq6Z$iY|ST)z(^Gkd|`HcjJt6Q?tqz)%||Z*#QaI1-Xflwvdi}jaZha+MD%_^W;3=2a>WmqEY$*mb^o#gG=CU^HC^7s5+~Mf%tYuyag9a z!uhe>^pTh?VK28N9-2U4w5*Zd#3PvVW86scJ?7;w&i|~8lr>phIv`>UxPW#~`?^Q6 z3eC`#g0T#}!bs>EBU`f9yvWrtsdE^w!N<0RWBXKaq6Dcj9=rjWa(eu;krMk(7hy1P zdDjy=(Ym=*_%4)oT}>!$W)|vv%U`N<_g-XKUI+SEQSl?_a{l7KRI&lU^gqS+jF}Xq z=MJi?Gk^&m_=2GN@zzfl`W_CFKQpdGE`I~<&V!)O+@-`SxNY4*oUKN_oNR7Iepdk! z;^u7^s9|Cz-8lz&zGhbZhp7b<;k?R+s1&wM@WvsctbuL3Xw|qmUANIca-As+6i9T_<45F()Vxx3=sO(j3GL$PgNoLiZ$XjHr0LZZ-%t zWA>xMN3p%@OgOOXTG+Ls%K#Lx3TsC17o1 zu(G}`fFYVCU`=DNa=yC(LmW%Mu8+aW`x*d-@UnpM+63`c@YTS3f6y+0beeB}*WHaX zaa@GB!Z?Lwd;0#0m_AqP0)iEsLZzyrZb!rO(yKc+lg0>#5n?)N&7KcT3?78rgs-Bu z5s4Y?lZuXGO@~i;)yNZZ)T?8tYXdc-HsOhnA~f1X=!-IdA2x8Fkxetgld(6k)4d;? zo5kZdYZ1Ig>c+9f8QsPRFJd$on~%J30VX;8U^-(Mozt7`j&FP+%IU=>|%a;c?ScN!+IT026+4vb>qsi2eQLOY(?}; zdP*vcNY9w3qk;hbN8#9fhGq*7fh4bgLJUPKpzvZc44Ux0Mjuy_FHQbe3~j+Q`YJUQ z>IMttvyl!XiEGfn^UVjDchz^Mr_^YHBOgWnEFlsgmS*eJUYt4 z!e-^PK}f1p>U61GlhjqyS`_gBem9DIZQ$5*?1HU^ZPS_})^OWWCGY@b{I>A8;@gS`!L`>1KSyd4cDeKktP1+(mRCWC3gUzrSTYd}21tT`nG2GeBe7YYpNHA=^s z#>SDs!1gl8w}Ofpn{Aw`1-{) z=Rv^Z=8fY<;JYt9cNDw)X-xsI1bED}8v#zsnU(~2DZpa}TrGxYdIX7>L!;+IpVt`O zNvzvD5}8ryU%kk!5YcFR6||j!J_;R(wC(EfiC0UZEyQ!glS|yE{!Tj4ouE%u7Cjlq zNi!VVOHY$%jplA4K4O=$E5?d`q5SlVyM>)HCV8<-WVJXV|Fc)xjY?#%1f{COFLfRE(`R+Q`#vbEa=|yca??3Gcsw9hwWia|8I@q!8MH8N zn6L{b;3_!hX5eOctmIJ@<^^pPGIf0dJA6EUhf+ z5D!IqFoO?9v!V*(7qdfOD+&^U-QijrN3GmGK?dBA*#;QVV61ryFY+#V^(xd>%~`Ki8N;?)67C$om&u@$7`KaNJ4q$;$CYG^mi^=F z#GKOSHn!oM(U)vuq4mKvt<-Y!p2t=E@Rh$Z%>=9JziP!E%p@WQH<`ugP#oD$TY%); z#p?j~Axz{amQ&`=vI%7KCpBbr1}mNeuFBxsVb^Oo7LAHV3qLHeg;u@_bd)T zQTT5l*oF9(^u6Ke&Mprg2`|>-);!EAKdVo3i(7x9RhL?LXlD z&R?-msc`IQ&wa1y$qBwz+&?gTojA|PZr>DexK7}Q@ZwO)@O?{CnMP5H5P&$ z#-kjYHtJF?XYi{GY*x_`B@thIs!rf zgd3lM6Nn*H4TL^{%SNIOdOYFHg-_$L;-*t0T&wPmtT{x3EqBTDp=#!)^qfAZ(6wxD z@HxBWU-aMPZP5CXybZuSHgP2{HhFlI{%?63l8yf<@AM?>y;u2%ylB#X)gLz9XaU+S ziOCB>m;oDkF$LDSz`x|pN8SA|^4B+R{HL+y%l4~!a=CV4Y5t3Bj%SuX=?;L2Gjv6GZ=~u-MTQ)L zc3sz#J)tV$;yRwUleAw40Dyo{0)i!)Ce6heSo4tQJo=r>59+XhXM)2mt)}oq6Z>^f( z+l$T$Gw|~XZ}v~fyfczirc%O;35f~5`qrWeC9x#kojPM}Vw%Cos4jb2Dn#MxBM;0!Tm3}q(yp< zF#BJeO#WM#3f!8X#)CXm-2LH=*?XrK94TupT0UsZfP{hrWfM0+!Oozn0}{LidrEoz z`3YqZYUOlll~S4Y`3?e3me%|3^J4Zw?_Ewn8>~8AI`By4gi>jXnb)@q^YIClBST)m z5!W6FQ~r`LoAyeWZ&BTAk&w@dTL8`@i%i02!}I=Sk4t0qLoaEGTP)-gj~F3Kut&YT z#w?rXtU1@}+0s9$0$7$VhWp`-Eva{9|1ll*YAyOyQtvOD_!~6;Nm_U(7)vXNl*J@^CRs}>*jqL&ks4h>?hr{Qr}dJuapRaS zwC-bQg_xoY!#{c5*`9HY{><_fKjF|R`_NeKm{yIneb{L0X_*8T1srT(Kf5E7;C7;j zkl4%d!Ep`O0CJw5C$(+GES=66IDN0@$+e6WpXU{yCk~F!G~?@@ zn?V~nu%+j`N0N~n_LoiYt_{}ZD9HbKkRCsRlJ9R!vDuRww2oiX#?d^kcc+Klv}HW0 z@`excG~0XTCva1h50W=Lg(ox+GT}tIbZ8kT6Fc!NeTLQP2e8W5YY_kAhxEjKkt@J# zMtDzpNnCSG911Sa-ovZgzMHAhFz;y>h8RuzMemu5aL<@B&U0p0hup@uc~Ukoa+zBK zIaIkh?~(sV*L_A9O2+>njFidm!Vf7nH@{9q%5#x}`RnxrdBTpS06Zv(O#|E{)BbpA zI~^ye;qC78n0v?Uxp%XCb?3{x*RU7x&Nq8R7e7ucXqR#b#MrFp#7;skuzTzq#gWf{2i|`Z15*y!hN;muwYl-X$o&;aws`zynoP+rfl|y$& zzmD1%1inb*U9~llDL{#8VA5sPfRj=V0_Y5W@P_x9gH=!Xz|sZK(sHgl;1>1!wNec# z3Mr_FGh5PgeU;Gb9N|%re+{!?cVCYegyFV#X6a&-M#1?g=*ixIoC+hp#T))n#l5)? zRN>iQo1Es&aV@MdFhTK4H=>lMAwq@iMnxF3k>Nm*5soOViZ{H!@JZZZngKiZee1<8 zYxbH_84V+8{XXV+YVH?AQOCZMx{f{Qv>()z6bQ)9HM4xTKCR*<{OzMK~ zVK>`ynyJxtzJ`!OC|BoURwx%j`lEJjNIzkCo_Sr-AMJBJvn?ydg3n_I+8^zH9U=3| z<8NpM&ddDKROLBFh%@&JLOxZVXRuthoDN9!M|%rWPYl#*L`Y9T(!mVRC#}%$NJDhZ z(%t%0NpOeZjKCi~j59?mcpPLc=NoZ-hD3sq281*RQ~u~#q6}U~21CDyosr7Ja}LXC zD|XfZo9`{l=>d}d=t}&uf-e6$-cf|)3v#Oj*bR;Nqvwd#9tgO*4ups2`J>|#6H#Ek zw3Ny3>_b;FYbk)NU|mV}u?n~APRKNB#kmPO@JGLt`dgtYtk4#04fvx2Ix!DVf$$Wi z@T^cCi&~LBGR160E9N^Q{g+c!W;Z9K5m@s_8?}UBmHg4tgxP#7mKxmL3mUu;Km1Wd z(Lv^ltYxQ?G&l@f=XfO$ZQXK)h`FTlgq)EE^Tb?#cnRPkdFj1MHR5SofsnO=l!4`- z(gpdH0`MMz<+KL>{^+$rHjCN_q$Uw^9U*oNKwQ26>W@B!#eo&%+n<&*8&v(#9aRV^ z!eC{EdMHm5i;(YND3+6=I;<nk>r1@@tkQegxGkW zP}-S9?Ucq3fAohRDV0OIPBUfgBYpi$+X;=928VBBo>54}5LcO{1}V=&^_b_1YY7>w zJZv6lHn$KmM0rw~C(v4uLCj-UW*+iiILRM9S{FZplbg}LEaz%5Fio)X{Oi0aCLa@I z?#+bkm4Ocxj_dVOC895-$?TBpP#Y z5c&?wc~p>d9}*qIj9a0IEaDpYikJ%?mQz(sR23u|m&bA*krjV-jv4A<;I9DZeSBLE+qge^5HeZ8fkJvjwLDS~ zUObK2+rk>m_^`lBMJv>ZkaOy8Mx&4wXbC?3(c#Qv*P&!TOVskRhD2fy9h9us3Q`%Y zS|M$LOtA!>cUt-54P(=YaHCQIM_77^(vH+%4*o2GInZJV`T<-`Q7! zNq=-^GQQ$om_IsEkmHoh`AG`Q6r@1hbgsiZV+E-x?tS`h17-T7ec7qm?IDT# z2@v?BXVirFc$no3E5j`N1eqb__D9R}M}HB7>ti%#5!@-ra^?BHG4t#Yq=)p%x29NQ zW4ococrOc5)Tb1!#q-^uj_z2HX0n#H#5`PvdZsQjmJsG9)tT|6AXO+ts7ftD{u1Q0 zko^wyq*b>IXdO*p@*ikYcym>?HCfcJKu2Z;SF6B1B6C7{7@fp&?!1bn4hYhY6=nLT zb)vOT;Nh$-=LT$ckk(?-$`-BmYJ0(l$Xt#f{RnZos2=<9J39k({n5_KSyR=%MyA+Z zkP$UemhI&sAi=0AU_W$AR^VyL-%F6%O6|>W1t}*Vd7Y}j%i@;OGq0(XFsX#k7b%O~ zq1b%0aH>DrP$gf!(ezKvBzUr5%c#Ln3t4DgLEa-9p#c73vLT2V3p5s_z97MFOl_d= z&$^K9R4g*M{HKfQtf82(Xm>caorA3nfAn$4fan_1Ur8zDMGYUf3DO$h{^+xU@WE{K zkPi|vSCGG4prlv&7IQW)RU#}g)zKUHqai_Fl1{Qz3r_;#8*Mo+p&y4iE8Qn7(_q5G z^W47TtPLBtp_e6T(+J2uA`@uAZ^x0$cj9~84gP3T!h($FXgT{D5O)(n`1&lR{vrdm z#zQE7)W|3%=z|#kF_@u<<+PL%dI~b0rU?6Viqsc$6>$APW}AnfT23{YVH!M>aY+OMTh3{)%)#;LB|# z9?OgY)?io&0vew#q8Z`pn{@KAH1KmTLRwQNM!!SFXnJ>oImfpGO=+ct1%PBnOIl8C z5||*ZJSH2u0mq4!vq_`GG4KiZIjOj*lt5Kj!Sgsh)cn_JEbBNZ=o+#XYD}$OhXYW5 zwES__|4kC<7WL7Igg8ruDuLhG14TNjfn}dae+*?{z!qdTxU)ik#N}~^f`mWX^#d?r z^otWYaJx$lW$S$Mwn*GAQ6-iWCNln0CYzDo>L zpo;B#pfvYA@a&ITYG^MP^Z$p~svvL~F?vUTVk{@fqcXOBkjNh`s}{) zy$U_X@9bI{#~E)T&cO)3-^2OoN6k=SCr& zAjkv?fpN|XO&}i^)Qay{-?2jSjaGMlrDhoSs`$~~6r{Q!DJtF;)Iu#;{%e(=1l1xa z5e&p~xB&7;GX+`2GNF2Em>hP{LK5-U=x3qkrV|7;VWk04D2xmVxK_-$_kXJj*nwQ#@K9HV8I58B2gTBsitq%m7==$1M} z{g@yhFi+r+G%!k#_f)~7`E5^#q2ALTsOeJUk7j5P{rDKGvy3$0CB$jemq_pDci=rV zb@zkg%-$O&Wd%KI&g(@5Q&&KOz-&1qP%TiHARA~ivP^fZW4xEt;V2P4G6 z{m&6W;SnO(s}ZhokPvu1phi*tou0%xZ9IWHG$@8<@cSj1`g7y(ZNCOoZdtMDWfvWc zQX?1LE7(f>1}DZg6HXpF#bOHqfV@lk@@ z&5j_{80@>#CFl!mjKTLf5Sa2KRRePco`NpW3MFc7@T?%;qEoU0uYwnU^f^Jg3;Xl@ zw%33S>g(NV&{v8C?h9{MD_EUuJ7r`H?`qaC|1dd*zN+^juD1moFYbP!cD@CR7=ghI z9w<`jYo(YYWGT1`3W)LBOyv&=+=EC%d6cd@tiT_gO1Xm1N{yXV9?wbv@-s0SdCQBb z(E>k4w1FfQ9YctH3LLoujuMxn36YmsoDZa=fFMo8-2!zkGX%L^YOf{v2Wryv5ztUE zP1-^+$@qc#q`?HwQ)1^9vDOS-27=eYl&#P=GU(d{`H+ynL3KZ=Ds??b`lD(5w!4wT z0&zG+`$J1O)H&tAzCSup5PJ4np|Y6vVwEXKHpv?KUsqjDAlNQLT$#c(iTyw@iCvL1 zPIjIt$Z@zLSWbfansI^@uy+jAr;ZV?q&lj=A3egcT=;`Yl5nEBLsvumVyW*?wACN|90UQ49vg#Yz z6PWTZNFCc${sw}BWk?8@@j3*v*wRwx;KxsQwggyQmjRDQiGe3GVr-AaOs&^@Z~ zDS{lOngYH=Vw@_-i{fq?zwJ-J5-Z=6hRVkqk&tiu`xNAWbjkY|{^({w+DKWwG~zWE zq&2>+KqEo!AjBRVLpPD=aOMScbDI&}0wh?@Q{uE?Q$pUBrrz&G0`&#Co2D6Rd=QdO zH!X}a*WhGkH1<#gW5Jw4;Qcb>TQw0GB1i|)2z7&!+&iEc>_~KG`NLF+DgU|*Z$&49 zH?j>myVWB;BgiRGM$e(|nZWLk&f>Q{i@HB7Vakfp6sn#5!@Vj!SEKfCh}73p^UXc_;~_JKQCphN7t1dO+oKVRkME&%v1$`#!U8Aq?#qFkE_~FTnBLI ziEF5Wae{C=(+ZgVDW4!S)$eAiYPW+T$v>M4@*a_Ym@)^OO7pwabDltr;Di<`!hT|4 zWeFl5&Rq6$DB*Snr`Twj&rEY8VAHup^nVa!s7!M`c$9wK&kXXlj@gYM!^nK-3fM=UJ6IJ~n$t={ zZ>w65)s5Lp5*)k}7||Yp2J7Wo(&jd<`b_>t6u@bQTE^l`i@_Qq$iT7wXa_><*~mjR z&ZZg@@dFaFNdxFKK3XdSf?h1&TFE(drR(+BDIB%*Q>|*r=UxCuB zz--X;(>|Su5EgNvYmdjb`jiNd@ zDL}zdf{dgwh5C~Y`E}>3eN5#kh|$-(Qtux1*7xghBo*5WR^TfQ*>`P$*MB!^B)YfqRHj9w@op zMQ1qJK<_LPSt7BHbAe#?rSgGB%DA3jyA0`!kp*>Bg>$dkazf=OzgLj{(svV(pu%e2 z4HM`hO)g~D8LYvIaIO`%A3Y6oiSd{42gxjw3QiFm+{_vd-3f_MpEp9~=+3Dd$&ux ztTL>Rz*W-ELxhB`2OnhWPfB&Qm^vt-y;P9Hb5wuyB|%PtB*u$UqWm&J_HYz%_o434 zm7)zGT9(v3Nm=>|@~KF^r8?Y9h~12Z4vL3tjiOa$p)=L`{DSz9#R^TK-3(O5lN{_# z{d5Ara(KStj~>??pofU2iuq%N*c*Y-byV`yhve&{OZMfYs%B3JTuF3jBkma$Kgtdz zsQIb$Crr>Eox(mn$WuQTxyy zPejNg$aZoW`W0C6+!f#tvv`_=sh>e8k4{&sm@FAiQz8gGhm5e#?7hrCh_e-w|2Z*J z8EXfuQneUp%FT?xY?;h-tphFsgIg#G`e_1Du3DU4=yWeB4gG#b2(2xA?F;&|%>GTFRh7cZxMj^i-?+_B`fSo6QG$384 z$0$D3928ebC)LGVdp6L}W{G#DAoDr+2DnA&k6tCndhIP=E!IntdJuiKKe|by*KlxR zIWOK%>W^!W=6fKs0)v!iBlFlBLC|$1L*9+tue=dhjDDSOI~br^ z3i^KoFQMybb6B4?6P1yen#JmWg5;~F0{0UfJlBpKkI;8N(JIAnI|3A})vC8c$Nkk} zBd8QBcn30B&cyaCwqKCR#r)Tk0Zk*=eiwz@3qm*E zu~oaJl>1TScKa&lB=J8Kbc}ui!$p3w!1syuDU#(UlytpHJS9}OvOQXXpJcgz2~-!V z$6(5D`vc}53ItSP?rl(E5+JZ&bpR*GN8r5jXA80eEcl~Ae%qs2wl5kUb^v9uos0Kx zUQ95<{7bBr)ym_jk*qj6UAaOJyaChii`8)B2XI&^+($YGOmc<_p2o>K~5GcPsSRnSRG}0nmZbyN?71B zxf>a)9LxJFeNDXdBAqHwx>Pfb-!|*n zZ6gHRH1oI#Wr4qexc@<*cSUQvrXe3N|6fAJ$v9peP=2RxB8~r;#`h5NP|m9;=Q$NV zfYI6t?xoQVMC;-&dmvF6>v4r@83eZi3si~61UYYX$ZxwTv%fA*M@y;mxN>m1W4=OS z6K@5vSt1q@G4^==s4G&Z0CzhI*;6Xp9{?-V5d>NGN|x=SvKNPt(Yx_YMyqmFV=rRq ztA(zPmcBJvI&gFs3EZfq?_6g26e}tWZX!?)75c}$!i^cu5y+>qXZUURWByU9@*CI|TA2PSbS!FgaFCoX zRN)6TtWVSo`!KdesG^gNk^Edtsu1&rmG^P2Dr<7TB``*iCj|Lb`x@K{wd~!oVqX$R zH)T5TE?I62o^YHZ-R>vE{sO7)jk0?9IU&njaBKz6AtSak1=%a1xTdvio7rdYVB%3> zybZXlz%Nh*dOSC%&kI(4~c3{N91>N5>gsFd*%!?PR}50zE9qSE_Q{%|UjK`0iO%xvl=?8D-zB>>)vBDZ9gO`w?be zuk3ZS-2EB=E3_KCxbH(kc*)A1^H3gJrZVJ^Aa?^VHt_jv*CCcWgf=Ke4OaH3AhsZt zl|3ZYodg=Uj1n8ljLt(|?8g5@!Ousvg1T*99Kd1_pmwlwDf!WLjZz4P(=$8duIfBOsQx2ZF^XLK9G}k z$wr{P2*~*37XFwo%v-ho$VOHxkR!|6Cdk8L?X7;a?JzeXS@3#?qd9j%x$ZDym6TfZtMQ#b{U;?|DV5h&4J>VmM{ zOO-m)fz5qDfMp5f#*ds?xA>z=_{;7_bOkb*?#v%*rmQ_xmi6q;P+fhkvRu3Sqsvt? ziHS8a{*&xmH-l^lMZ@tsScH~7RS^Wo0BkMtl$e35aotZ?jSAcWqA@~~q9#&KGay4n z3i7d}9jR&3=g8?^ga}B~v}E-;N?U^{IX}BbTXOOPH|v*|pc!mAm1DneoWXx%tvgo= zVqCAsE02ZgEj<0qk|=8MVH#SNP~(363Qb$SCovb5AYHC4XA~y<@J_*woe(wDPsCVE zg|H7okgVQ(+sN=U9Mxz!-N3K>Q-VQYplS|cTifjkN%>=8Luk(vhi8TU z#9wzJ#&6to*svMlE_J;#Z@#Wi^ojBGRDJOD1+Zf-&t5DzkHQA>OkD_)a+awh`E6Gq zsT?2{kLltu75x1UN!;jWW^ANhCl{*?E8rEHn*s4X1b=R(*lR(6+Bn((lIg1EZ zU~Px0kiuLwqA%H98vTBt?&l>DSgg)h~%>bWRL194xZ>GL9HuLbV0LngMqX7Z~3^G?Z#6BSbfAGJgwBF|w{DjTy{W2)z8U zinaG!?8goKu_gAS8MA$ZAMkl%=NEj9HXP`n`Y0>NGh(G2zwK+u%Hz-ou~sJanJW7= zhCPC+0fZ3;FvG=p(i#?{btUuniTyanl#VLgTx4#Cws3ty!ZZ`HkC3YRb5BBeYzIiI zrNNFBI3wL&6y$<29_e`^%DA_IL4WiSDRKwQ#tN-Nc6Yn-U7?lEd)Rt&H>)}JQLTOf zv{|jNyQRJT+lZ!%YWF7@s6$>tb4VNZH72J2iWC>WvxT{@5Dh?1f3%-Wtq^ecK8f@> z`>o)e_#U2@^?;5STah){XP|+^`HXq&AI_uD)xv@+*CmJ-p zP&%ntp_6PMJ5^vBA+X>fwIyPyC?0HtmLq&YAjPw$M|EFs44~acN zkS40*iTt)dCz^Vyof|c|dRkU_R#fW>vIlI#`Ip~zklAy;HCB0`HVo^8NX?RYERuj- z1j!X-2(tR4vt=+ImNhN)fCj}6!ABM*#QXWnZiwVOcdrO{QAbNF%DUAbeNmeX<(2-p zB#x;306?%1ROvzxb?;N*t}5I~LUvOxy^)ExDz~}Aa3j8rJvfW8WQbp6cn(T}+YlxO z7ZB>X@X(yFibfM+oO-~c4^&~)_ZSY!L#*= z+*}WP6)alLYZ#m2*Teke%ULEvGXAwg#Xu#IGyb*Lus$7}TB4NkukEN(I|MQQwOz@i z?A>Xp+A#jLf1ZIJh89t4=2})uoz9qRSv|EZGS{+lMWe2$nrm4Hv}1<3$zE+$nwwc~ z0G}1RVrCqfKf41}>HH#Aj3e_$hnXiVi1A`Bc{}s`1bd2mF~33~1G81N#*6tbV&?oS zM-5`TW~tI(=r~(nh4mD|oG0rsPUk~WFz3nX!gr7Gne*g>r(^h9$e7J}^2VlMB=ipc z`lIGNc@`mosJ79}dGaWwn)Bp$fW-Y!+Xcqi=oi|%Ge?w-vr#@OJgXZxQ_I<)%3CB6 zjHA&IqIg=SVm8)Zq^1LJAfrEOHrA%fX3WMK9$&*qtS-bXhI&A5D{w@%Z5Bfb>sZt* zhDtH}If-pfRK7S)249ecnG+TDgn^r3i}4ecP3XMb`P%I@x9h6NP~TI#Ft_VI#a58n zqQwSZE2t>=42Wnx>hxDWbGz<4amw3uR`3JyWp3C#MiMUyU~aK}N)pCCBl3gTfiBky zHeXA2n+Rgu?(?}KbEXPn-0r&pjpZ;D06I}F_k#}sSr+bH7?1ld($IZUsPVWzathQ( zVNrrct$xE2ivOtEG~o_@wI;?-*3kGxM`|78$KCO3j*WqU_sver^2|lYXNY;X-nRn#Mp^rDD2#z>OD$`oyIJ)q$J}~Fhe#`OZ9DB3X&vbInc%VPhSb8dyj@5 z!cPI^h*GoZ`0C zhgbUjQRAw*OI^T3LAuC@OA7fWiD2ARM-fdA4A1dPQZLaSocStbZtA=g(;r3_nWed{ z69hEt@%T-hK9D%e6ThX?3pikpp*~>1{Z&kxy|F~h$gMzk)q~j^E6^O>?2X|y0+{R} z^74FD+U5pI9$LBzf7#!bm!-+O$LKR4k-g&8xcKasK6l7qjEj%F!+w>XjE{8(bVRZC zJx3>T#?iW8A!&Vmgw&0r^|Eb%1iETV%J^9Sa*(OU$GSP0eO?3DU$U1?DtcO$ay1j@ zY9ep8?sig=z&+y2Y~9uShPceuT?D4)Zd*x!Ih$_+e$k%alD^I1d=1)ipp2?+Gb_{n zjHQ}kILA#xZo>!9FpG0sh0JZXAB{~2Vs5i#u}z{wGMCuiplU;{WMBzyS8*^JBYdp= zrvhLFrXUlVG{M1^s)Dinwr?Z-Olj8a;t!k^Lq}6!WMEeqI31yP$PySK0w)^d_L?{vx)G1AZNi`cFz= z$saY9u=lf+;NGKly^L$p^>4?MF)BDnK59!#Pa=a#f%_+xy@`SK>MyG&B;s0@ROtpy;1gU zymS`ilmCMt3I0En>a?F}@<*hUW1uN~n}9y%ENs%(Aw6p>c7eI&5M0p&e?!mVuRm(M zg{Kk{SavfZ##?wRM#s3f@O?0Fcdi67dv&$ROkjZIH+yy0h$FLCSDo2=$;!=n z9-D2M^Tw6PZiO1i{2+gIVUk~m;kWHRmT;soFG()NMgw|$o%{UfFv#4fUc~IN zG~9tKDj(P*gxqLB<52T7n=KPqX0`wxbu=GCDx4SeQ}uZTdRt}l_-%Wbe=P<(f7F~m zeT8qd&*`<~C(sKFWZQZ7AK2 z;N;%OUq$sa)EA2oNRo@On9KHOihRK#tc`7AkweS>qWj{nU)scIA> z)CslhUZHB2Cs5EU_S>S2!yq$pPoNH>bEgc(cmn;79@rg>F*feIZ>hn|RUzZMUsgm< z$RLc{{;OY;C^eYpzAXJc#TA*6cR!@dy3-%c(;_WE{E5PEd`Xsog{ESJj{x8nK(8p(tb>QRW<}M>8rAKkrEFA27VGn5zkG>>%*ho>lACA_M9eu#}ubG1;7f_K`u=2gs&Sc z78kMkZLf4ey1IBVj?!iEoi*GaHBQo5Z1;iJHI*?g(oeBKRbeofIo465u{Dvo%)v<> z*F@$H$NNBN1$ux#jCb0C??e;;WV%@+VLP`khlcG?$GjXOeanw>KrgbOdVc^f|iq2O~KDC)# zX$h0RPGItDoA_-`j7l-Fa6JK=)q!SV{IQ%i(qnl-?7jPurLlC;M(E$h3>1M{_-%i~ z#G7ROCaT6h5VD*#szP(y_hr@fPausAb)Bm32Cs30H@AH|v(5DJN6jVQVSA7s7y;Cm zUGnWmN^_+Xo(>}r&hN;D`xJpH_=ukoH$u_)8F2%a_;D`*=45}AgfJ)jgY|7r_KWr* zV;2F8H+N%@v7F8l!gzDvhEy!ORB^_Wdjkrozo@TPU~bX9^Ch$0gNZ0kP=e$#g{Kcr zWkJjpy184(QD_EJd#kLuLN}3Ie4~0YS10-a8P?O?5k5v$(+HWlewhs}+^LI+MYoEA ztFSn+oE&M`Tqqid)T~bN%R~cEzzPj!H-ho}581y?7tDC%p=^Ous&aG0aF4h!M-0FJ z32K8u0V}!>$g^5%;HyQ17^jD_Qk`*n_?+1jODVFW}pTF7ZPm*hzy3?V+Kt zzg;2gQD`T_&nXO6meWuwGx43iU|#2NHR3Swo$d#>n6(LF;yXP?)dQauDglb_b>c58 znFOz4=1_S+D1TqIlwRzg3_W_^Sx!Le>qcs8<*>jCVKE4@IIk$;EA)W61LK+62H%n| z@V9K-c&Cx9 zX4xw3=uS}ZI%LU8jb8;SFWLSAEPfT}4Hh`|EdjMonYOuxI*a@{MN*}?hFa%yu#*|Te|nlNC-eXaxE-Nm?Aq!a zXg9%*iMV7UZuKnI_dK1;o3LAVvC%ktgx^Hm;;4ulYuYm~5x4STkM21M^}aYh!$N_# zWH9puIV{?J=nrZ?#q7UJqb6KYH!;HiaoA+nf$7B^r0N&M1hE(l)5J|=)w>B|@it4* zzMNV=Q7{w8VhTxz8i2GrQ8Z2Dt;(OVcoR({OysS>U?65+X8x~$D9%n}S#`l^_V1`l zf7HZ6nIkx3p;*~fB&vyr@*F5}rlwdZ_9-aQJqO0%SS&$&=nbvVDb!m0_TA6;wgPix z4(9e<1@z9iSI_)*=58REx{d&I@VFF0;CM|a&B0?gW|&~rfHy0QaBH#7b1ld`FrTFaRbXZ~HxeG5!K z9^&i^6tbKRTG^QpX9Jjr^&RLXb(%0|ZGQuWXT`PgKfYrFQ8_hfOveBCOZIkwqkzLZ zoIc0FVajj(k4q8(M_O!2=uogJWeGK>1uX%im^@1I8_AIAkBlvto3lx%D=Sp$7iKg! zXBX}yxx3a7Vs6e31O#Wds$hDjxdobRo5)<_K1OzDhs^5=Q5r1B>w;7kdHk|M@1n4KMmTkIIrs-F z-RLh{qM4h^KLIgCGq;wPtL&pJ`<2R?W8GI#Jvi}EZJ1--T9Vlu>!y*P(U2KqfJ7Uu z>`y3rZ9$GnlsaO+8nfT4?B=G;?bN4}E2hj%n*uV>KsI5bjx`6DSng;XGEv7WkcRWE z3Yn;5vrx$NM>7RAk;fWfOy&uRi8}Th@r0g)dflJJf${I^D)x+j7ro`&c?&3w@y>fd zm684tA;vrJ1yzRe&TGr;bA-$I0!&tQXG44LaA`mn`GOBg0!+WqEX*Cg^Z$wQ8@dhD z+`piDY+lKqpapR_wbcEZ3+_L%Vq!-~=7ReLFl6d8^fcx95a{C3a#-({Qy^j{T27w6 zO|+aVHSaLda=rwXtoHFpISWA-^OeO^e`_H1M~z4OAL=vbODV>q{VhpsJlfOH{kuV_ z(0K4PBC~;O#gOsf87^Zo9z4~UeSmQ34sdWAvU5IWuKu=SHHO*%zgtg6W&+r3-G)q~ z!H^=;%wv(Xc+8rmst*&hCWI7!)WocLA3c_PQWaNL*NUAFCErSL=GrRMNYQb&gBvap zYa?)%$sGX7Ssu$;2v< z0Z}qr@vce-V96SR>q`xpd=WjA+d_y7WdW^OyMbG!)D!D!;B^q0GRz zbiKjE(c;NCR1Lwm6t{u-_RB&RuK2*KGjvkhB=VAOXUY!@CaVa!sag3JQk>haTaSH&5FKf9R#)* zl?c*V#EnPZw#18dCnU?dpdM^_@^eqg! zmNP{V6E^fIL7EF3YNy%rNEL3u z!e4#CM01_#X7G>o-+P3Z>r8K}sJYHmj@cVSEPs@DkE~!azH#32jZm5kNLQ(>xq!42 z{inNAqHa3}EeF4Rhh;D5`$|c;$38U~W zJCo2hsM}qnsy5-xmVvJ2nA$Os%^IT^^`F%v9@#7pMd@ELP325%v*sji0~_YLaCpLu z9c);E&hHX(wICJMA1CqKF3s#7HJ(aR!Jlt4d$O`u7UUOMMHMM{2Q1yaM%k+?@hh0H z6>5wA1(QKRYAz&#&!j?g7qd0;fVL1kO9W>>C*bp0WbZpF14G{e{<6n2c?m#hOz$$; z#kj?x&sAqD$|{I>69vAeO6f*U26$63MgLQz|Zb(m<*AdKsOUnJrT zLKSOV|2f*Bv67;FatpHOOXlok;z~v$S@7#uBh?FgJa{Y-Vy|R@G;w2Yk|aWTR^X)Y zn@c3GGs_LiVhc;YwA@crLV`T@7BM=)IF{LmNy{b#!Bfc28Hx!%Fo*ny=Asrgp1ReA zMp3uS_&S4C?m(fK>zSxq$Jp#TV}*lVI4jtPMMHzgCdcP{CCp|1+Xvb913$ei0 zlo;j?>}VD`EUPl1tMk#xBZj3Gm?m(woR-XbV!FU4di8dcw47Dy*iH26QJ480Z7tcec&oUmi37rHjl zp-Zr`aJpwAL%&9Q3C(^3*!BvWxm0%m#W=$-m+GdI*h*EnxplP&-&plaBj(oC1I+S~ z?BCp!n=5SQrrfAw4h=fBjJtuxaB)5bUss0CTB}9_v=1tZaanx)3mCJyXrauGg8}tf$On zogLI#;5TJAmvxp(dUIK4EVH*3mnPc4$70YgC7Wmi?P@7u zy0SUrzB?KS;331>x2qBR!@@pI=J3=v#5D@w_+@lCI0U}deo8=ve*GSWMyu;j)LwiY z@Qz7_te9`7TlP|9k$&&M80(LkTZ&N;Hn$XCB#vK1*o0!)3>?_seY# zKtEUo2GP2#tdc@zZjGEkJ-a=>VxnR)1h>3~?9Ntc--Kg$1H9pmH!BhQLnpy@EHtsv z|5;Vnw~1^MCO+|bsrW}J^hr_N0Ff+bg7TOc#hYoRuum(r1NG;AuIe+VrB>ZJ4l=n!ihvk`dR(rk+_4P%JY)IDl%wdaX-p}As;Dp6$NuYq8(Wd9G5{( z5x!QSiA4s#?cLuZdvjHY!WISBsrDT)WFi(Fp^`!~iT90HSyF*JjXur;YB@iumom{i z^QF?K1u@Y(m$FVm%R$3!gY0mx=0UG1e;dmOUJ$#51P5oJJiH0{ZPRblZ6caI)%y-5 z^1ubj(n}CaslC-7S7-KeN;Dqm&6RzlAjSiI&nv`kJkbB#fb6?uJSMJUXIO^ib-y#)CUyduaPK^DBs?0NjQKV$ayU}o{_ z&*c|0`#j){Ux9847UEZ+@fuB$+g^z#Ox$UVVDxS^@!^((3hsfc0!@54o@Tf|e@YA{ zNM0Div9mV;^0JXt!%tHxs+P>%0(whz?PJ&?#hce-t%y$}W zu*epe8OZf^5Z6{)w`yCgt!qWZ3JC#%qOz%=h~Pe#0YNBX6Y~FlpL1t2LEE?g_xJkw zNamjXJm-1Nvz~MA5HKjAdNMn8!~2zB-GGs~P**{M%{jX{^}plHRFGgV0lNwkT*u-i z0!9_`x(U;UI*8&6oYSPB9B)?i_6m}5=dD0VopD|$P*P`{|F{ZmeJhhutn+)c%fqgU zZQjhT&Jxfl*?kETfSDq@>&(1V)CIL-PfDg*u?v|w2UDe%HGem>tj94aeoW=ZZv?m_ zfHX`xhPO7f*c7CxvtQrg+qu;(|06#}yC0wPV<0|oRzx(r^}pqBrR7~L=}OCc5x<>( zNTvj*#unl?_|2TJ1ga`B^(g_CicGza6}AXemECVE)@%X2mCEpU4f3&{Jtx(b>Ek)f z5%>Q}ugdgso`6=FK033(uoPD&zp&`O%H-FYnP)6h5V>p@CUu`wRUsnd@O$!I=@60a z_;Q@bI8UVpZpCk$`IDxV8u+oSpi%>0W$}|_A`&JQI}vNI&GATzijXp8p;Uy_92Wl( zMP?sS0VHE(_fi2QH#74aX?%#gR+nI~&kprvfask16lyTIox9M~AWa3K^J) z0I}{I*qkRYCCKx_{pUzeiu?bH#V^JH(s6hjQIOtf6@u4-*%PICB^>mTh21XWQ^LXC zM_5@22boaVsvsL?~Y^K?R4So9uwMJnIahMcPJDca4;*>^%cD5*{575;OFntK9C^MO)o@9^m=tb)h2Z}O zN{W0vL_`N+WD5ROD9e-Cikr1#hfx`gI$?4>hOEsUi)2|}=WCgta3)p%3Yn8)PoJO{ zr$$Ps@U1t|+hja{p~AP`WcCI4hZDGfvpEkR>7cCrGH4Z)m0-!u0$asYJ!q8UpL}wf zvEGIvp!Y4(n_`BqW2&={C}!B7Ei93>mf+FYOZW|ap)ege%5k9nm*|zl8O7l|CXJ~W z(TT{1kRVZ}$B^y}b4wQQK*`&sMJxd!TAMEkiLIH~=>Dpq(G4J>fJ7TQpv)n6V) zp*aCbQKHq5hd2o(T9u$V#}t%Qr-Xdc=1jJE2Wr9%AoA|nsH4ppB`L}xajH~O7KweR zV(>$ezScqVT5xtE|n*krtJ+ zWPnsv&XO40+9!yhqPjno?IJE1s)D-L%1BjE_b?VeQR=IJyc`+bYtn!U$h(9^elK;z zs}gG~vr`V0_RO5g;kx$`;3?VsY^Sc-Le;Oa%-_R@YCaQ(?Wgrl>9N% z9)u)^hqOJ#8`Rt8hx_w|z-q1PJE+U1J+=_figpUwx8srCr{BYyn#@{*EIlzE?}+bC zel|!Rhc~QMxUQS+;Dz)Z7T9{vwI#g?SXj4_d(bm zJO`HJpZsuhz1ie~)JOcP^n@=r?GXh=$&PaE$vQl49MB%A3FfcW;w9*~cV*90JmJ6M z{cRXUJ=)XD@zUk;{)u3Dj_zHRdPv&K#WO7&V{}$QjuyXDX42PZ*yZ{4l?aRTRBExS zkr=WEv6q1MWG#9@CxQGmxN|)hovg||#hdy)-jsh2#wbi$w^kyU4mo;4_v7)~lHFQ@ z7jYYSf4R`Ka}OK##C+YJ%PB!b_2eTI2v)3+t@A}{SU~Y%TJIT&iFm7g2jH<32}Yv4 zyP3GUKrg8YXb&$pO7;b`$LcEb533s}jp!i_H=Cmu(^`$JyUP7~O)}T8mK!x+gU=v&(w%|VUqMD|W^g{pc>EP+3=6zojf^(T;CztrY&A1_23}u>j1vRP zPQ)j(F{{Aq+gaj;bu4kZ5v}twgR|_7@t7>HdP^4M}r69x=8K zByYko6h5XLUE#}mR~E1M4)Pm`Kto^|TJ=P?w+NN24OU@+LJjgrvKD(7=~#7d_+I>* z6TTk*HVgO1zq#Sd@NZuDT>RTStPu#_0AG9a1goz0_SO~+?cwiL)vkm%fv+IHa^wk=!zo(bBDEA6B*awYW;q6m3w8V>_qp!&6 zQ#HCI2iZffXx0m<&5#pz^b^LUTeUdvfx#7D!C=T5m9UfZeVx1p2N?wF(t)3|U_oHQ%)e%>J%&c$X(b#b1Q1 z14hmFT446~K>FRG;sbo1x@N~oX7S-b^w8Pb{JY6^$L=w#b%wPeTAgduBmv1C1y$|3 z1)@$N%KD-;g@KZl!Kz?4Y#2kk<>3Ej+5^AEn4Mybh47i(pvE?oV~eiJ397+`#vT}8 z_dF1?4x(9%@1SWd*K59NG5aeH&n#Z9Tc7AP-)XbIRioQT9yxY1 zhGtlw0MF0B&@j9o3OFv{)fvFa@EJKk!84j+@Ej=y9kc~Bf!W8@sCZ1FA~Dm8x3GiO zJA|5Pci3cFU+6VIv@(moFs!{`U4WVl%P8I(0yJv218Un9)Yi$k3AN>FT%{P7Ky70h zYN>w*wb4zWwgCuL{4S3&1JC)CcF=0=PmZ1hK?-krTPu?t`~T7wV%mN4P5b%+)1HCH z>{o@X&tz<#N?wcGFiV!#Q;7-iE7Wqi+45Lm@t5cX01a86M8EUu>vtIIf6%-Ac0BYy zv)h{!@h1@d%By#4w|@{`Gat~c`^WsNTc_%Y5kAwJobU9L)eRC{_vE{MgsgqQF0_o^ zzE-^*3E{o-=+|Cj{cf|{61G2}ThFa*%(Sm5kg+(>`y=W4h;B9gYf#Z6O z0|K`8bH|bCFB@ud%1Bd8j#5p#*1?HIE{9K}Nj)T7yzn0PiGDb(1TS!Nd;heOsT1rFj; z@?b*))hdpynR?MEZ&SixgHlURj>9db6xL`O^f>fwx&yYq8JRe(V*wg);bgR2xx2F5^ z;TWVMW&8amw9tIhIvVQuQ)t2p-@rt7uVK&3*W>7|4I3#rs>O2g!?fG~;fr1#vjiM$ zsJ|fGI#hav7OOxr6~*<$$3*ZvuMV-oM0fcE68>k*j$i5%*84(IJyj6km|7yh~yb*@~-|o{1$|74(#YkUK0lkeJtS?AWoufla}V2hXd- zf06Q_eGann1BsYl<$VgZ3rJYaK|;Rau_|JMK|gEtwTvo}2pGTBRrM%Q5W< zBO$Q7P+194DY#14f}1>0{XT1^civ&lK3bj{3M^Snbh3Vc43K=L7G{>3gI7X{7@ws? zWPsQ3F^n1l3kqK$dy)doMfgyFX&CPUhU$)KkIxU($6d&Lj+CH1%_L-Gr7DPBUx@HK z4VIT#VtEN)sViM+)^q}De3j`BECGVNemt$7( z>M2uAyMJNG9_$O13lYd7$AGK@g>s6yTD53vS+6N9l$4S~GSeT~z=Az2?7)@pXH z*Br(Ea1cV@As%d)|^07n6-_K1TgCKel?8tvZK1S37gfvr4|r5t$JLtl_L%NMeUfr2BRjtJqvbAW12kSn*lWyNzs9w|tCf1b~VsTMn ziqEt|*mG+j3hBBzc1RE43M^W^3(U@&4VW;r_%akUtnxvo-KzNAkhMI(Ey@$>{AtM2 zN9xfTKF_Sd?mOYSJprO1Iv-zzW{N`A$R4^qq};Fum6OzJ)9^OxdO@S-!u1-%zfdK; zMs!7v5nW!Omxg>Z7E%2NCfut}-`LNd{&hLF>F~S#qSL?DJ>eR&^ESh}Z%jWs__fYq zTD``n{;AOq9RCZ3HtO2N6Bj;+ndf~Ccze;W{y2B;6~=+XZ*lCLjczwXRsC_K;nSVR z#m?mz&A0_bD0hHCzdOQJV$HxPVYiF;wD|=bcVa3AIZdDbp>7A)V35_}6?$~~8VvHE zjjf{zW^<@+e`r1RcWYB}U&B7K)$PDX{P`4r6u%|^r1o2`g9AYY2Gh_jFq>qv;ExS; zm;skA*Kg_fB_?Yeh!FORpv{&gUFtThZ>XoYl|4{{ElM~+iumcXj{Ey|+AIe2jtzYObS z5KQ@~z;%J^YZXT-1^dxr=c9V%6_~_X_@TE@}Wbe{z(qZ4zs7U zx$>JmmG5Ipo3$9vpN_MFYD%nz9U0s&S&%&$mChMOw5&3JJ9YxdFxMaL+LjXx+C^%D zgsvKn7VE|J=M?o)NC~(KU%ty`-v<)ke1NPl`DiRh9NU-Ttr~e=91fK>MQ613jMIj$ z9;aQ@rX4bH4G?Q$l0NWw&26=Sqwy`xKPU~EZbLgCM?*V-ChQnR%1+Me?R>XT9Sc1n zg));qQ9vggb0d#M6;*K4?{QDb*zUZH%Ia|sgCBXkA)sUI zn4sfbu*%QKub23TLR{ERVF`W-B?(gC2-#z>EByrSsqnYW3ubS~D=?|w&9X`wB-0Gp zks@REF(vR^jDC>-UO1yu$bvoSE7PhCb=*HNG4u{>lU+9H=#^VZOTFZX79W7(dVCk| zvcV6k{vopKAX+t|EkN!UV)vtXW7@rebK3$9gCJua1oDo|5*)bi==PZ}{F(yW76etY zQF{m~+*_d6_0E6hx7doT_7?N&aD14}ar&YB`q{1^%!38`>}l@wJ4laX-Ra}#1uB&N zwLhod5N>5eXHgJdj^wPVM@rN6)6>`Dg9se~0w7>a*yS_5;3hJEE&dbM(eVJ;03d)# zx4wWR8ff?gTbLH3n@zW;6o_nmDF+8|nD)7b)nG(-VjaIRt#c!-Aay9P3?^8dZv^Gq zjM>-=V(!{-zFB&+CwzDDF32xN;`a950g2oH4i23(JMPgZB(p{nK8vdny9f1IM~hv> zE=vxDuZ0yVFSVSWEv@1QXD|y`wG`skbmyQbGOy6$TalhT?Ga$O#eu`@M7dqJAnzyd z36Ov5l>LQfw0J9&cE*v+*lcir>It>APC4p&eDc2N-rEztTDM1{3N~FZOLq~^T!9?j znuxY*^*Rqm$t4e8WZHMY1b!_9!Khl%_(kZ1@{a>j+d)#hEd)iW!Fdzu75Mu;{&Fe_ z3gsDTKKTtM!Bx$yh>O{gE0QG#^ROmOWOyCBTYmDDhbd~|7nd$xfre9Y9rF8l2s;?3 za}B17g#{Q(4r#F#oH$qsrXXMfb0L`emuG>Ax#$Vf);0)Q&SW)KCjsfssH<=VEf-~y z-u)PtwbJ8-9^pX#81{P2XYD-%dS638o2_y!ut32FtQj3svI)nji z@=j4`?7N`rDZ2tgL)L0D0bBFiw?LQVf5U>->dvc;k{^fg`V0AQmT75W4Ho~70cb+& z$}5kyoYXdC<%oCz<{879fO%+3KZ@=s(#P%qc~9AHSf3l6cbe9Aqvoe8jRPsY=5UVL z`75(zx%QjoC_XTeTR9*RtibMdYYyBC*2SGy>m~cce}OyThMWKviKCwUJ2bm9x(m(j zVzbu2Z+7}!Y!Xscjx>vDVAwJfEjAGIXfl3nUQZ-78M0Q@8A<=4ea&qjM1^6eo&v7r zhrxKp+hOjbB;%Id<+um&+jSVzL|c&e+p-7J#0-t3U%*Pk*qg zm$$B0EU#N@gwH~LR`u(o&2NkK)fSELCi<-TEw60oqQyE(yA2m< zvEKM)cHXK-k9xHSKF5a^XFPMz?vL%Y)>~dR4f1LSe+3vz{7z&n#{bw@RunYFC+y<_ zfYf|U19)p#Nu%>Y^0WEF0f@>gArO_|heLf0`H{_8AeeM(X8JQ*AzjUWQmcyChVUZi z6x3Lty4|?_1#c(Z?0=4#xCIc{QC@X#KGD?j`)LZ8|7(ta(PT*K-vesrMwSv%b-fXq zh%p0TslOXP&v(ek!h_nt@V*hU_ixE6cS!o4s=e4B~JsrtMv%qEllGXG(ee5w^r+&SL)GS z-dT4>PSh5)rEssq3STv(Q*@e7ffz3(10l6VqdHX{={xJP$|Dt8q7o@FFwiOZTY2O> zJb-~8KdvqMj$gW;SbmVnrU-o*ZT-%o1yH|DNjnlQ&mB3 z#Tc}cP_2DA5hVtx68rCyrdl&+X&Q36_S}bBv?tQ4hIp|7oGK2-x*P>ELCnqvgH802E!jld9aQ}?oh2aSd zr2xvV3O}Zojy~WEUsJxQ89(Q#&;I3$a`B1B1V{u@qK6(`s`HMP52z$ zw#dt2XN>IT#M;puc?D`^_=#aZ-bqRTJYpX&BxNFvqf2^!~*_vC?nmSZ<)o45~5u%YGT-C(kCo+XQnu?HcyP1$B90$yVY z%j3UU##?EoYLx6zdKmUgPcSiZU7+$vOKslQ0H(Hd9k`}B_A}^jTGe`_3^A>ZX6G%s zwOOw@0@mq}b?Tiz)1lV=rUnJ{M9*dP@?%U!qUSU%#^aFMqL#tL)o#O&NW-5-Q{bCx z0AsCc4pQh+?YzdcHp8==Zr7A{r{BRgjc9caMv9+P!xi9-zC{0Zm4{kRHiC&!>x{AB zC0nMHVSCa$f65J~=1{s3z4Ln*-1JUvBVN_Ww8-0|bnD>0S{+83+6DM2zec5Y0r(#h z_%7%CY7(##Wk#hoX4$jTMrTp6=uU#PDXlGI{6*{<7FiY(s^PuA_Jq8-eSGNW{`FZ_}oZSW$a zbZ}w#k3yPy$+7S)P>z4}g&zcI@^hs6oCDJ2ry-x%=z*amO{7J3rn*tvkbM>!xN`^d zAgIOq@rPZhD78A0(q|tQN{tmWLsS@Uqo<$rFPc4KRH{?&fE;Py!WOc@unk|h8wfKW zRwnQCu0mK>j4gnki%Q??*_7Fs1 z>nJbej}FBf^s+H0j>3+83f6@RoOcy#rLe}b04K8Fk&g7c_a08nr6Ps;&gkHNdb6_DJ3#)ZTl-yK zRwr2+im0MV*@LhQaMjR=R$s~Wf-!3aK1_Q6q6+><*~%EtI@4WQbA~#k*3a zLTA8Du4MR&kUd+Zhx+P*@OsmJfmK5#--cJBDk_D$gR`Qh7TuAHuX~*Za^OMrccaJ^jvgNXC8{I8aUc)?z2&-$pS&i|xjA85{~ao_V8Q z+Slir5+PWHuflhs7E7UsD-wJXzCtez9zY@PY$6tX628z)s+A;&2A_m|ZW1E~m1yuu zWT)73WPKzIilRwH@i$mM-0Vh%ZEbU2;a_O&P*1*37Fc~f=| zwb_wL8(ievz<#99@B$}^548Gjx&T{sevn!{;R?MzUlK$*vi~f2OYdTLmf8so#z~gAJ^mysz7=|+%zZ>P( z|B*hg0zG6XpaLI?K5z69yd8u%uO!K26Q|mb()76{n?64@?OWk-Yb4Ge(gkU~GB){c^V>BVTNDYc%76hVOw_>qMI zO)0m&8F0QiK5-;-G+ zi+)+;XY|Vm+vDhWizGFn-_=O^CHf^9W$1K#Jey9(BMUF4v%v9mx<*|8$_8DZ2#onvk2@Iq&3pCa-b0LQjK)ITB_4aowZ{wWn#3ejF&}~Fa+l@{06;fF_M4d{saBV zrB)g?ooR|%cP`AL*7c~Fwr?FL|B~Gs_7ElZp3aTjwkbl^*WdsQFLp8QIm8!QNaLqA zgQxgQ$V#rfj2nZb#Bj*QH;xIFY{c0cDJv50XeAgsg=n==AHx2Jp<#(zqA_l98Tx}< zr}ngrh)M2?wK`Q*81Gh)eTVW`Mgq78JxE=O0gW>7C_()*KmE&nkqu*v#|hc@ z6NZ8M8mJFHAi=cn1bDv1JM_#I1polxGKvxq>6no*wAg1{z(yq?y>16;lstX2tkIH@ zoHBi!V#A{?fbz6iay>-l_XTW}r|}JW`k(lgXbHV!efSEqWb|4T`U?_Yg(|;3+{I0y zz2{YE^XtQ>yD3p=2sYo6^^u)wos>xBm>7G8A8($K=dtRFt1+A^`qH)dT+Tt**NA-R z>0@Yxii@Tq)QvOs0JaG+76POeA1S3pD7po*Cmit(&A_m_QAm#b=4UiaHzDw%;ZH6N zcRhw*E)5TBDj+|{qG^1^!og6$rNO$CActt{6yZn6eu&_O$QrJ~x)PdBL`@FlJCBG4#Bf_}!3JprJEm-`KN;Svk{@{q+>8qrSPNGnxCL~WNKPDH#E z9Haok6_GX~ibHw>l&^v;epJcgNiA-3Z?VsO>3QrkAJPA3=lvDGU6>9ka^S#6k9m)# z6Cukx)DRdyV2<6(5YZ2QNwem5O7PoCb&3rK(Pik?5DEzIA$ojP9ONzfiPP9FqSz(R8p*nn0Ha-h z`lF2fbO9u^@1M)>w04{JgWNBG-CE4cA3SUj-!k(?qqG;c0y_ST=n?D}_{M(0BCb5} zMfeJ%G`JUqc481Bzkd%TR?>iy-T?q3dJ*=E2c@*^7qfuLBZ{0^k|OFokVuPv2y~|O zE~IF;-}Y>p8G>4UQa0@;&|)93o2JtHN~x}-_YB0}W@5DK{b)<1_cANpDu*EJL+WEp zK%7N|b|>dI3@>uZu~-9be>cHx`h(rogz(-@>CqP)r$-Bt8Fq=87(qQcWVOxc(F5}# zfM@H`=SXjPd!GUA&gO4d9AE&PGaa)9F>gg?BQa;o146$)(kzCsy5lWlChU?Ds`G>( z*ek^M^7>T}4RXkg$HElbx-C5c@uyHA`kgBpV0#0rLs?_&v5?)Rgo+g4DuOa=pC++_w?!Qg>$|$u=2fIBW^@LJ?8gbPKz%L1k;jCw#|GLxFAw4Dacn;pM)vYH%;26yh(yk6 z)E8sl5>uOQTY&?$N(^AbhHWV^;9Z)n@5b>;z2uXb7wILz^&r@X1X|0zsU0#p^75Yx zjp4ggzp1JWb)GN@)CnV4e8ZGEuuclKkTM6tSa`R{IPptl%_ygzDj)_a8f5J8=cTkz z=3Su7VMWeEOmXG$j+kkhmuD7Lh0JyB_LRG*d6(c<230d?K(eCnWZGTZHWok!iqtVc z8gOY6yIsa`Y3j)|&4U0hWSaE@Ovx^f{u2|TUEe_=Z#W2}KKL_M5?1&$e-^YaL@{J! z7*+wkLt|GBw7YnnTxpXX1Km@fV*j6#=@Rzz7ZpCj_(N8?8HESf-G437=rydV_H*z( z?f|QdXyXo`G=7&=Ydj4r%%nwT2M~b(@kEMy@6qC$WCv)o=MUHcy5RSJuy<$4``GTY zWc{t6JjnVCuNPVW91wU@Sw9~srcGJ@9Ekdnu4y?|JW|RA-alK^a%JT3rY!k5{9cx9 z9EMZpBC7FkxV-xkB@SzG8hbOmTZ_LfsN7Y<{Mw7p1w{}7 z+N*3iqk3j&xOPDxEytgL5{BI<$G4VIHj(40OEKUeEysU@@1M!>YmwMgj(>+KP2~6& zrJ-Mv;~Be=q5Oh-B$mJG6$~wMk;30B`Ms8N68ZfF{>sSjv3d9ekGcB^=vfG17MS6R z1W34umK=pt0bg99eVeP0AoLA3#-h#(7(+(bZq5N^0OwNc+f0mh)lgG5{;nsc+u$CP zwMXo7RssDXOz(O;vx!ih_<#iRi(0@4DSwVLkR=fKXTS@*q(Ui!ub7#Q9|QFz7mO6C ztSd%CRiFc^EXb1k+pAIDimtuk>;A3G|1BhGQ6~VhK8?e~Cc&|YQh5X|HEJZ0R2n+5 zuaMyc*pHoeLb@*Ym(+uh79W)mSvrJB zF25j#q;&|jOJ(a2?WO$(Bh6uzH5i<+)W-|)3 zDxy%b@M`gyYq5yn*D!>6&+zGqiFC?q^DmS{$niOFobt$qgw$yB6+egXYcVJY2Gl91(IE&fA}raHeA&f_b@2yTm&GXL zQV%JvPd$?r_JL!4#LMV?K2NyHurb84sX8FGIbR@l?a*webasHq$x(q#CO{+-%8Vv< z4+JIbI0dS`&TMa?YOf92OTE-2(&W84OⅈG|sTPb2|kt#-7<_-}FTzmC^`9PF4;< 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%0D0&s{7xF#R_Z>gcww!UaSe70o2 z0sDGL!3FeOn>f2iZNIb0^NpeCz+`Y^Q80g{a<%*H0D*lOBTSj1OnLN+yzYvn&A)-g zsS?WlmHn6H6%(g3_G>e;{$|(&uyr-S8Ge+p8?xnBUiBlEvYDXM06nXoeA&kons6+T zoIh~~BS9Kp*w>k6+(X!H&MJvstpLZGMIxJ-&r_0O{vnVY0ZTE0Oum8hwLPX+Rq)e_G*L_FhK`&weqyKq#gl>EG4ydD7mn5ikd$dWbtNf@D9-!nqV z)U$ffMiTBG_T22exAGL_eu*>TB{#?K%@pLEr_Tc{kk|e|RH&b6A)lc){dWX%VL}~Q zHw{*4qWhFTGfIW+zL|;kC-#r_nm`H6UYASt1bqjP@5&kc{l*v17$ih!8d%iudnM_C z>CkGg;jb(Il1LfmX+TrKLzKA~;vq%mTgA4XKAI zfFBwm4?9-||E*+*Xk52jv*VI-MU`o0AgCy@f5840a7*cF>>J8tMXW@T{>nxxUPbjl z@?wShyvKZ7jMvk<_=|*QPh++)JD%5sjB>E{Skf3XrCD3315M&KE`K_~- zCC&)g>~V{I(N8UcfVKQx^{#tUXiq7&WBkgL&=c@^qbI_H`Zs(fIiFUOlJSF zIb2Bf7QTwV?ZTt@+dk~)Z$Y>Ze+$D$@wY?R(tGV`rPTKVGh&({>DE$GWi2T-&;D=T z0Wer3o^T@)rS5d8z&?6W)26*iF`)1>7lGZwX<4 z<6MJB>zq-qY+>`pnlxCs$s)2c@+138cz{QV$s8cdHX>~6tj~zG{U^N<%>T?O=Z!QW z9IhsadTsuh$5FL7F` z1WE|2HBmJZRX2VQVV%#(Q^_#jA*4>?*P6AQztGTA@Aqh^k)0$?iuUSB2{g1%cRk6_(0Vl|8hY)%XlMZwpP^<` z*f2K)><^(^O$9Q{*(X&C9}-AR(;^sb(y8vPm0Q>p9Du|VM`q}IW9*S_$4tY08c22{!NlL1CGm-~X|dV!K<~(e)Q40WJCBJk z-+V@%bKY8ySQDi3NxhDK#N9gb=mgHE|KAKz@0qD57E2k^GE*_Mgn4Kx(7AY@lOQ9_ z_&1C~ZqDsla;&RfT;PK~aE?%{wScty>5o19%y#(v8jt=@pbl1N3Etu3!=Bo`a0>US zr}TA}`*jMP7!T3`ME@?ziPic$4xL&`yD&uU$g(sEDcB+ME^M4gdzk3_auH!s=0ejAE-nh+Hjw+X(1XZ9mkOD0daf%P5 zQSt>SSRzaJg{Dc{xr~Il2oOS>R05=TTB(9$!5>Lm*&V99%$mR0U-??KHJ=s1aK=22 zerH*;8mP!NG1l7hK6^v~zYRhA9e;8}F*YTQ>k9(*OL9mec}{hp@#BJR1FWlqT{zZX zof>P6dwHx?m*%>ef26d&`rEPAr91hzb*%N9Rs37A&6;uT8_;?I!vfy$RB zJwgtO0CN9IOg#I~3S%^OZGP|f5tE(QozZNovAf~JsN0HvpyMY%A^X#s(+#|=5$d>dgx%zSJ7d;j8qQ|7HM`EFTp2g;X=j=Y; zP2)M7Ifk;p);e4qzOQa2Q(BqFDIS^j@6YZnD zx>Eup-vo zdr8>82gbfwL@Um;Oa;(2J_4k0Qj1)uZGS#cTk6(2U$w+z9j+Qps$m+9JO>WxEf+0@ zeG3}dO&pqJDtS8Pocsv#jTFuuWXec}S%?Y-*ls-Z{8>p7XSXww#4fyG@NV`9x@+ak z{tPl@?K!Y`b~WtK%bt%*2xujS=Vj>lA~Q4HufE$`xTWSEUidOffOImn!VnMR#)^HU zXJ*+hqqAH-*zmsEE+lKr2y(G6iEnBe{BM^o+)dU;HHi?taPTN{={MOc-${RyUB%;! zA?x)C^Qrd?Z~fF%#LQS%Lqg!G!eeDN9mHwxpG?;S4(s{at5i2rk0EYb3hb`b-&8>> z)mN)xmiP~uqJt@NI{hoVc(1Z}7pj_|(3!tY4Fh87BryEp#9TdjFa zu3x+ELQ1sj{#j2lXttQA!G2?kt-0gW8ne)L)ljBVBZFyEbdE4PE{7{DS=-_m2Io5P zV=@#eft4`~i*xA`#JB{J#Z(W{+yav@gRQ)l)%4A5ZfPNX+D*68L#@5CmP~q$8$0@< z8)hI9`9s~+_(V2-+OamDEbkW%z9+u{ zHzHygajjctU!;avk60_m%YDw(>DAS{Chj9`Lyv-0iNA_u#3JH6A) zR32=J_@V3!|DLsMonZ|sXNKo7`n_iON(!?xyp++-tUC10%nVCmXl8giW&&*ua8^6=k_lp*;;ey%fzQh!yHTBR5_dKwq_52@5UhyxC6*f)$ z2+1InPGqTpwtdR_DUe(s7`0c|V1d(^@}}+gZKv%4L1dtDLxC?5D=T2$0yCGI=`-^d z`AL-vkO5k%$zSEOYg=2F&>aDkFZ#(0L%@J~YvIjmzVYLZHTkRA*Kc)O|D?cY{qx43 z(E7tgk)ns|Juy*KIgB@1v$S)>%@R?q-#xb7D=>QX70|bXI8Ax)|&jce0C(yP{7^|V;h|g z_VVcG`KfE@Rs1ZA_48p$UU4ptL2Imd4+bFrOu!uNimzo}H3g|FfNyvGs>(kV|GR?q zh32r6PC@oynB6@nuv3w#qs??8M;_Y-=ZV^o`T}mr$VHs;Y=!W;)HM`iEcP8g*^X~+ zqII<(4qfy=Lo$boWE%c_UnDbi42|G0kIvRT%C)oN%M1}fZt6xPNJ&rIdrj&betNkG zn3wtshd7B-rt-^2xhzgp_Mn?-Fl!I`F*lhNSe?=%79;gJzs8_28*hEz`-?GV${uJk z`^(J+<+@*byJ!@w^aPQB#6i(sBPap)x((Ko%>J^5r|$kDjrYFx7n%0|XOqRg;*!8* z*MERPbP_3X^8b|~fs)0+$&39%#?R~wOcdN%<>K?DbmFs@*^S7JJ4QdA0sP-#@a>b1 z`71%Un_YDKxFC>xLbyKd@vuXxy zY4e-$D{td_&&<0g)OYl$i9RFD7*2{7o@aWtyVsh6J*cnn)Z6!_ec`g)H=6gs)(wEM zN7qZ7bwfo*20}*~toX^M%DEmLX}L{gB>fPaTk0d|N7tnu)^UE8lywibh zXI#ej&d8@+8geb2jh&a0I975Y5sJ|iWe7!P(@7PH&Smi>+wgofEP8VkjczZzamfC8 z`8A1d6ZoyQ-;8t>K?Y`~cl6ENDBP`0qUw<$om>Y7+dc1eMR~3?JJG%DR)bW8TSLs6 z>a2l2_GE@MS#b$tAx{rN2}HWC6CS(t$=dBzcQxD9Ig$l5`gAXW3WTBjsRkgz9@yl5r}`P?8p2m|69&IT=c_#WY~p zSDnsz*>$V%nU=cEqoScC2f;r@xrr9W_?t^fvggIjsM^pIj84GYJ?P0>6z0&A6KJsw zJ^4g~%8cZnriCsYs1&sKj}{h~{_XDHCN;DlrzgEWb?M0+=Ck&sCvykq(38VV7vr;h ziOHan{!>Q&m8iP)J?P2{FM9L>y7H1n*!EPIMgQ9~^~9UpBy`Pt%%v-b(rM~mUUluG zL{~aev=?20$%22%HaJiXw$hUm2f6g*aDHp-xAvwdzU0a6WZb0)Zv*X2K?Le`kj8hd(8@N#$l<`PN_lZ7^B(ggHRJs-=}A z^b-LNsuTk7Qsl!A7yQ)X%|eI*e0HChFf)mBoq->OR^uo^j8J%io@BV4m}(=#w&qGc zwJ&bxc51lP2~=s7WBdM%40mrqc9*C37G&4cp*|)&(f>R%uK$j}2FjXsI#+Z`1-)80CyVOxz`8QJK-`wm;m0zQGBUP5j zSxR@auU1vQ4PIULLMvWvS2Jz#Dl2~OpQ$&nB>bxkF~^fqvhE)h_#0Wb)D`J?wxMm$ zd-&wZv6t9d$A)m3`G7>>Q{1PX<{fA7qb}lJI zu3YDNw>j2y~3TUs!(t?Pai@b{!$%`+vzmefaj2f*fZd z-I{IOukn(xlJ#a4$mzWgk(@D*NOb>Twg;9^Xfg$bQc=H3snRbYlzW~_6f|bVBugEo z;yooif9G*#lF?5ikQ;m;FCQxzab4-zj`(yIdUYQCav*$2h&hH;_SL-QXt30)%YKeB1 zsKzAKFpU~{>PX7mrOR6{kzAuhawzO3AX#9?nBQEj;# zr=)|iLSqTD64g`aJZEX|17y5?gm}{N?Y`jw`v*hCP)wl9wq{H6iOmhZrqXDK2?3F# z&F-Ryl_@JG)buB(9plGwJ-UM%rx#w5d<%ZAR_t9pwa1wd((=yFgx_td)@QdgRhLpB zZ+T6RGPIDx(RA<1kFd|bA3oY=EsB)k4*-z9=e&21NQjA};Jes&NhV%(9Gm?0(^G-u zMP+4yB-N2p-TT-Urszr(tEeJ2O?w4nEFAF#>mP;6Hxn(I?9Shk8$Fc&tuv9jRGRue zmDBfU`Go*nj2lYeXvUbK4p}vA?@e&E+6glysb~Mp>Lsc+tn;*!&L5sJb1w}O^dw`? zDr*gUhru2+Q`3>$#P4Go6$2Ty=@n(zv%YW5ksQx?_Q5UKXD=KMniTckw7ur+eAr@X ziGs-~z{5v@$}Lk5cIH!Sut_2vOcW2?UNa=WG%_Gqxeas31`vav#@g5lEA{|$oRi}8 zcHKq`%7E+jU_+10clbu5Vyr=LGsd9CK0k-6T*Ou)Stverfn_x5f{u zG0*AZjy2f*2Y;g248o1YK_ywYQpvhS!FHVu4{T`}Xe|u)VY2#eubIR*#bk|>M!96- zdnBilsT$Ay^3BdTG%9@R9#Y0h1KC7mezR9Pj_ftaNZfx2;d$zMMc=+^$)`RFdMx+L1Z zf8cPoDLhRz@P#J$CN*AgYlMFtN?vUqU()9BJ>FwKkK60*Guk|!?maH&ae*F}ws}0- zd)!F|#XOFDJTG8x3CStBGBx#B>W2HV{$?aHn=EpAxo;So$Z%oEej7uA${zsUCDQxe z-r$QZi5!NrIc(?gK|mw)7P7e-b|wy$n_$3NAv<;~rRg`!L>GrIk-6Wh5$!V6daQA0 zH#QMysGPA4MXb(Aen1pSj34`$_!e5jjT&~Fg|OEV%-aN@c!y&1ni^~&BwuQ|saW;t z`)A}mcR5h8Xym;YLu{SJUl=>0Kl3=ppVY;Fm%JJy#^{%QWzX(Um^5t?w*eN10v5_b zk1H4Up)-nu$w>?%3|uKJ3G9NRvjL|cQXRe(3NbdYb^ka`N4dpK#n(TjUu>5mp9R@l? zAooAc-fa);5r|$-3e&;vKH9ep<$$IjISSfnPV9Gx>~zPYK8o5?GOE=3h3qZOeMw>_ zd5;>2iGr))wfSc#>4hIaN$0*p=+a?NiIS#o(wec32j&Emmz70O(B$+CIwXZVKZs2VP7XFGjnFn!n3_u!|Q`7ORazu{K)!A zr$tnHqtlu`fh4S0oq)oLi#EZ{AV98i^LWo>xURcGJ(NXj6Meo&3j7iy;shQ1Bm}c&v@E{fLk~;QXx3J!Me6pzA zWSu}$0p=EI`n;4TIcI*bXL!?7z+;$%YS!5Z^uf0tFC=;sunS`?EVYtC0`2}Akfe}6 zO8iz;|1vDq&}I|nlw^$c%*>wo7;$*n5h-Rz)huR}Q>_jm1ra|896m#bD$RbRj~x4v zs5Tef06}Q`aPg*K`?QZUepU)ha|$E z0mkegnUzs)D2PUsk@xx678JLWe%W-|7>x+k}Z;p`lyxQ}{9M^~mQ#FzK5+ zUp2kWCGY7v^YpA!-EHMAJp+bIjir|>co4i}V&boStJ=D^Ne}MDIkgFwtK^^-Z1Vhy zToJ!TZ^}4Z`9W{x=Ec(M=H)rtBXrAB)CSdrJ+d@t4@1v+5y3668D?fHMtOXd8+Az* z6sYlu2hqbD+S8|)p~Zj2L@-;gWcSC)x3DAeS$8*J@O1{l?AQvD>Pknj<6VFGR=mx2 zeC1D$gvo#3vajZ4*8Q2c0JX_9>|FJj;gzPi<#q2+K2qf)-10Fh&xEbOZsTpI*8%23 zh;pPI8-GcfdhRE9qhtbC^k=rUh#92`3^Y1t7zJ}vt^HbU(PAr(c1xfyXasac z4}$haF~YvlE$iVRdT-LII!i-U*x7WDC}7ZPY;ySz{dO1fdzuVI|$r3~542Yd>QE{_>wSfBwtREj@q$2m2 zHm4Ljb#9?>JvNEL=js^DvnJ=GHu^2jV^el>U|1U9tmsb?nIOI) z+eyb00Nms>5{D78KS-}czgwlu#;&)RYeoBg`Y9vVDLhiT9*E#6NJ8jn946aKCDw6M zA$M!1$8LI~^h^NqtDh0n#P@>ou%xbHw9Yjbq7~`A!N61D8|XhG3sdsiGI25^odS4C z@zMB5Q7P5md|y>^E#Q9$^hsM%{a;`ob*x18K|Bu=4#{rshB7meSNQl56{&n`jC7}) z*-ovj%g>R2h3v%v`{h9S%0T0;b~t4B=5#)dfFS7t42%mBr$<}5O!_uZx%Ik!(Uwlw z9~VSU^V=(e-VNCY$SHFPjYS@a zPA}+06XE@{jbz)?PQ$i-Eob-L`4OU34k*(&8Vma6U%NB>Hf_xdKb79>AHV$j;pbWl zFXW&;HIGmgulub5&Hl>fi6{2^>9to!#&L=LBH`;^QpAO#WsyVO9lvtxwBxOXSF|gu z>^U=nrU{p&G~V9*4!yQoBVEP1Mo#etD+Z%-You4O{9S)zb31?jiu9Mk^7o8$DN_}& z4@iH&fWj|oe8lgKE-pwf)U~lM&YmxG&g?x)Z99>Ig;Uvp zO~|ms=;G?_O>E$o0@x(Q=?XEQZUsnu9i4jb_g#p}ntj3E8N$>$kQiOk;I#7*Y$W<= zM|Po_*<@4VRJ$!?e;1zoaG@2y5iA^%?D;o-WSM{XqApy3U_ox+oi{pMM_=fJ*MWOPI@E%LuZy-lS)M1(~f2Dihl8F!^UxC|1T6E81PxVq^l9WTi5aT6=S_e7C=GH-Rt6sQm<= zVCLAJ?vyOs*un20GR6DWy^TdHt(d~U1(Or;zeNDyJhvJI^+>JRe6hU6Hv1mh!5GlY zq59+OSRg||=Q!k3W^on93eJE51!YF+tLG%b`HKbFk}5X>h9$uMht`b>3?1#)={iDD zEh$KU8~Gdp z#7~jz){RUYUT(f^w%jpu5Fz?{zJa5ZV(V%>Hao|yGV6ggxxU75#RP7{YR>?+yJIJ= zDRJ&clwiIm<+@h^jhW9(jptQgbazMGb!b0&n)5|mq=}(;7UN_?k*iBaK659W<6%x9Y8c8oNV!<@D zDE+6_{S5w7C-S$l4Cu@+XPZe9$>4ZUCu`Af&4^L&T=v`# zpVs9)TY8`5tRzz~Rk*0r1;3@tbBlBO!QTp^Vkd!wiSBuK`|@f;eiT!*&ICi!@wq~L zq-;YR>sCM;;x$1SHbKg)=yy;;*W;|}7x?-^l|-Kc6g#(qw{dGrS+D3t*m@8SW9A$)KIS9bFPJENlPXw& zM7lat9`J-tg|cf6|4e*#qE9zEGY(&hM>t7ejE&C?2U~S8ps=WR^Tm12E%%ud-c$zERG5&FDIKJK&MjLm z@@C(NHt~S*wUdVgII*Y}5zx7$tEorBBlxcq{0}o{YML-mUXi(|(}h#|d!x;X&EyS@ ze3)4Dwt}`-jL9)U`jY2!4(2R8vsojOWQd*Zx8^CS2n5#ge!3ItsBvAm-6bxDn}6S$ z-GRqe>~3vr&%CGk#%DcPxx~6@su}RmGPaasU{zaapOBKU3$?he`x?K*8@OlLnTf8O zTxZ}5aRz=5S9!4)gi`aFNOMw(1#ptJVoe&Jg6>{`BE{#%EpE!!EOKiUDKKYEzETR% zrTnyvF`dAew1(Be#5jUS8Xsj^I-O!+dWApfN4ru>_Py-{D^cZWf4$d@A^7uO=1}R{ z`uHo~#b}PM*q7Kcn62dX`LGy`=p7DkSKIg9n%O@MS+!sKE7!UCI;b}RFKmv9gm{6f zZ|7hC-oC!Ot7l)I@7Cl?-)E%M9NA7y29wvcr^zMg2D-NM^<6vr>~^Y1xFpxlh!)!i z(OL$Rfr4sl;cn`l+^+@=!t86>yA>IuO^bwHD{#knO(Cr>W{jQN)%0CiGdob=cKuQK zGId*M#3;$@JBV45`1(X&-)+^iuPJnEts@9cv_YZVs@XdmJEq~3fm1P`nKJW`i@_N4nnPFao%9LRM%mc1F z)uaKgxZI~#SwQnNs(OEH2>chyoHDzl=d*wgjACxi-BZkr0>e@%kc zmb69WBclQdM3?g+uNfeLHsulapl8LPMC`A6&!?E=Z?Zh=-7ro;oG=mU)y(dIlwwz! z$UW{y2w3RYxI0MDBnUiopxyOuW7;(HJ2SqG#$_e*N~$0ABvIcU(?-y!1511~0)OYJ zgr~!0xvY4MB7{&TByY589JVcBm+Td>m>(rem&5>+*9}(e1?GV0DD2}mpw}HxT$}V0 zk?Exxdq}YxRq4z`PeUex99Q|r+SYPxtu3kPS6AkqRTbmg50yhjJFF4NFKhgtT5w?-=43SW6IbrP=`%|XPc9-w+~s?OnVAF)0>O^u`@Q^i$UD#U*s@hJ$B zfZP)K$s#2Q@5#JMr|EiNm2UMz0R{7W=&qZk?e`p{-(j>)CHn=DWVgWKw|tj z@g*1z=*DPQ*0r2F88DrEnUJ*DTG*++`AjSJH5IJ6(j(V5GxVLDh^#qH(7F2NL5i<4 zp`!`_I|_zye^v+Ge`D$gx&N)Xzl`UcFy}dGq$=@->u5ed+X{P$4mj zJ!~lFZ&YE2!vE7C0GGN6Y>1@8*IVJhM>12*N zQN*q6det|NK($RZPd;PK`OJLArB?jl?06??%zXn|6+iJ7ogEVmIM`>XIr+M_o-deV z$A5u|6mFO5u`)v-H!&g0X6t(H8)kGpP*QNA`XyZq9@<+0EMqcP-~1aZc0CKt`p#Vj zmr&pQYoeN(i*Z(b?f&k2)t4IKhW(7*>*@Am%{|0ayC(BJ@mg;Vjyl7wt#}uy-TbL< zK1cAQ&e}HJC`^34wG`rnsYNtT;Du~_v2fcF9C2h z)m!G*>kgta`)=wR&C8si24FT*VmmtD{nJ!17AuogXYW_@^n#Q&b9U=Xv#&N}UgZS% zfq63DY>V)2=YvaLq{aGP48Lx19$Qew)X2b%iUPR=Mtf_|{@PUX$SjCTbf z@dklJqH5MXXzHFg(_lvI9Nu@9zTb}45w^26yD_~AtoWJKCi=arI+4gH1WN!1YLY*e z;!kN>>$3v43w5;0&UO^r3d)Mdu4cVhzM$x}r{}HKY{m%NuO0Icvy19*EW19Y63Xgk z^B}36k(z9ro6nH-0Q{(s7`(@0idJ#8kf|cB+&lWxG_fxmhL@EisH}H%8vJT~sGr9y}V$#Ka zqJKCoSG#yWSPed}iVWwtDz||Xxkq37pjW*1)s9TyJj*^*mFMuMzWEB_%Vyw2@102F z%&@%+U&qu{dMiOsiRqknI7Gk6M+6gtnD#Ajn$v;JvYiH+YN&~}0Kf~mbh?q6p~P@Q zr$ctA_^d?#l}3R2tePMb1S>ycbx~ew9dK0NJdJo!%#@j+6E1g$FiAs5^GD;_c)eTr zOYZreH@xC8`-u+lJwsG^5r14cJSWlNlEcfQz#MS8v3|0&5%#(IF;lz&YU)GpZpHUg z1Jk@_uh^<-vg~hmQaDb9-rRqBu;zYBwUiof|IOVaURR}oRH|<-x8kp8BB?=mitXMS z{9P4}a+`Md5hs19OTXsxNb6f*UY~8nEC$4Sc=Z0}$OP{!zRsE4-<^Rvwe|*o3|fH| zQr@I~!SH&PNKey%eJE(acHT9K?B=2_SPgM#(%U-5OmEI#~{IPD+kE!%% zmC{P-F>c`>RQMAL>zij0Kb#QcG{zbs&+)!j&gaGAnSVSM`|D4R97!`5HoTo2aD{lnJIw3s+SRT1FWdFJZwC`)wT-(Ek z^2~ox^)st(Q?F0*HnhoI+d@Z#Yj94M2m{aHK~}-A93B`vhh!TYF!2gopa}C)*8zD%L1kmTzQkEnV32Y46^6AMTAhj;xSVOlTg*O_ zLjd0ZyxJ1Lo)ADx0S21y3}v=CavY16!>K|Nk?n|gf5oiKwX9g0t@uJnV%bMhS6>~{ z4(fCF&w4khQ~)2{z6^&&3ZJg|m+X`5PTG){hpV#FZipOT3bbm0|f)Ri1|g9POY)k$*{F zN4^eM)@|0*6feD>U>wr+u6se-A!7@stD;z=+;B7&ut<%ly^8<(lq&v=tawBa=d5fW(e+Wg7S=Q+XUvMFZ`5*HcdOKHs^$`Dw;A!Ui< zW7+FCT8UVfI~}%fNLhWR^4nlCaX&)S#kGF=PzRV1BnB<~M}QTO`MPrd%VLMjy`gPt zwe|7(Y@HTbl%Vy-n3K>-!`x{5qq=BXxQ6~GyyqmX^?778ZM)Q6nOM*FujY2zyn4~A z>#=i;vaV<}n?Bqm;l^CLrbPT!IK%m`At3Ij1Qz>}!yKJ|oH!Sp*OeqUZ5y8G*R<^n z&bx*OROYOQzjXH>$^@NU#qfOWdB4k=MwanE{8g3T{YB}V_h+llOZ?Zg?P}43QJM?| zrk&~fJw^F{RW0!Gmj1FhsoLVDUr`D|(Ng~{cx7kY@vJMg^{PA^-v0$u=W3VwVIg%D zsR}UF&oEa^e0STpMu5g}7*s!@vYVbl-hG!^=%%0Z!3ROvfWn9e5!C;*_(sT zs0fZVH~sIbF9?~fY7fH@NgH%WdgH;cDmR(?4B^`^Ivf3`484y9Uoras6WIkalc!OJ z><7^&&a!ax+s*KKDp=cC=3jqCUkoE$5grannd-Oi z4uq&VUSiAP5%b%fq8yC}sK3@bcHz3zuFaD$z1CWuqz1?H*?#}Vo&eh_f(V)ka4hpR zf|&5>^z5D+Q;{NWeTbI(mF)BT{zaKcxp&je`@pYq81IQwL|<8urK|VqaII<;AasR{ z@dCE@#E+A$7c_mlk2k*wdWJx|t@4{C+a@SDbBcnhx6>KKOdvm!9TnFhQ6}Zmlpfbh~jO}PYxYr(~8+*=4kXNQEnc$~|mNEy@@*YCenx!`5RM7!~_Z6B|_lcygn<vbD*n4yz-xi1sb!Q0Qc7EeVGhGKrCSfntVm7)T;`dNg z;Krs93>se~voxMNvlF*Q!h)1N(A320^B7*tt9`X-Ni_L(=V;GQ%{fvNxk(mN(waq* zvxf8Y+phLA&d=ri1io{b|K*Y99{jO5)WQRrEG%$-O?8OANfk(=U(69}r)moc94VH} z^>3rUCACwValv21l4Gvl=1eZ2FTYk=w))?5QOFWK%J#;Vd-^k>!EBDB%GEZq=#Bo~ z2hx3Z&xa@oNG>Ud4L;VGn|vVSa58(-pqP7Vx*rw#K^Ir43xg#F*BCr~&m3LS;0hpc zqU!UzyomR znPVc#cadCGEd2oE&<*3)OqW$Ix?QV$7Ks2R3bV4_yXg})tKV(HcPhtHVZ4`^BJ1dr z%5CY;_>H~le<7{h)T0@Vrk!`18uV3IAl zlfuc#<;6iO^Ugyhb*J^ev*KpW`ZiEPcMBWgoqys4&To*8P?hfs^(XvNRVr8*1|2Wj z6!FUNctYz6yrQ{hj5hSy93t>wfBWA|+Pr`mByEc*@;_;WZoRnhwDCthfLLDYGL9ke zFn{*d*xC0Cry&6N&s2#FH~Y^{Hu5M&t^y7H9voqsk#urvdcH1|Y}+joJv(u%Iz!Bbv20_8tI0 zrCwTq(ob%WB`m4Y8Li0#(rj_2N~jubNmVwHpx=?~6;c1tt>h+s&ZVuLz4?EZoEjM@ zmJ&BuIlW;yRb~@47+ElC1fnz8}X5@l}tC8%BWJlEe)JNR#-kI)H?tAoTx>W#ZtX<+qanz!D(R1QQb~Mla zv2FE+eL~EiGTZIV)54ynn&#W)nt@jed5pGO}hGW{n4BVKG z?Jy=s@`9Tsy@38^w2fpXSJ-)n{a*Z~+j6@ePXtt>7Ks1dtVof6^2tu}KA1Fr$Z{@Q zZ-iUhA_k{T%w=rIP1o|f(0=u`o7%9DzZ0=hqUI@;LSpsL{J8bMG%Gj2O zXS>Sui~F%(tmj`dUA?q~lUVGBPkG*}FGq=9{^S2aiH1=oBrro3u~TpJ-w(hR6)3)Hjvf!q7zKs^KM`HXfZmSwwaG-~gHqW)7viqx&h2r{9$ z!j--Y*mpb%{t2HTZ!mU}dy=NYOPL@i`^(BEwF%R`;7E=eDS#>@sOu4}+T;TC#dF=y z9GdICD$3IUc4YlU6(IJ62RIX#pIEN@R_}%rsH_t4oE~e0)Xk??hSfLu3iEUilsau3G7(k0Bwf zmYPVlKA&Ooay!!0Nb*X~z%3?p1d!ptTJM(;tthmYJ{k1D9s!2V+0rUC_=zQ+IPyA} zDJW%)f7F!l0O8*J4Wohx?OJp#wp2S2vE)e7KSgZyxaMcrJEVVY;)$AN`$K$EJ=Tm$U4jAh0I=+bctb z8HZLNnuTEyUikc~=S}+bKeIe9JS?Da0!>M**HD#!-ef9-6ETXZV(^arPw`tYz)U}tkG579Zc)W;uXvi3Re>OvRic=KyX z?}OavbN{tF4TR?3@@HlmXVoK53YHF_;(>`~ywl$u{~V2UItO7byBscHM{$k!s}{mq z9#)%b@zTre47GT}-ux+igrw~kH47d#ZfciHKuBZMWTh(F8{uJMX2sGShXq6+XxrrN zMOR@%gKVMlw}^Hk)tJ~M-mSdP>OQYFbEp+9zL@{~9v|A&kl!SDXz@j)drT#o382cG z{;Ex__pkQtX_t0Ts@$Q$51D&`^xX@1LZk-+^6#C*dloOYwFZb`^!Eet37BLio(Cc* zEi#FhuwGbN983k)oOF9%j0|mZ^MoP_`=h2KMjH!pK%Fc_Q({kkNE76xf5noEdoGp| zplnWc%xk{2tkd~=f8@O){^q9}F8*DTvAW}>)0>h3vFpLw{b8{vjgyVqs zacZKE9}H2Vu6N=D{KpV-@(42TVhzMZtUM^z@UzwZZ8)F!7ccGv5xY>{q!-fhy|f*w zCEf%R@;WI~Nb$G^(#fNsz;(SF{)X)v`X-CMq=eSrYjUfDB=ZBwD?ESS@IC3qwYp z+^X2v)9=8R>&<6W*53mq7!`t*toY(7P;vjo0VXO;{Sow24k0eWoWF%R<2P6icl|-1 zu{dKZ?Jhy+o#u07%{5=$GJ&yz1GiFR(tZNU8E%Dm^1CUU+A*Nxt&0r=$n?M#*3@VA z4i2{isk-w_kmJ~69Qx%*^COUng+V8m{qKoPzc0JT|8at?bGb`xR_YoiC6E*=qYJGY z+yKM9S)eRN6x;_&h4f1HGATz zXh4LNl@}MTkv(|eh2w^XB_Mmi4x|(JWsoZO-K0V}I1ECq3O5H|$J$+ev|GDdN%PbA za|t9BKsDdenO1lvY+-gvg?Sn4HDa+0NCrRmALj;VTmyTXcbPc5C8@aqM-3h9=mXxh zq>cWyVbV%(fh^y&%b~a{D&0Jfapxn<8}UHKRrU?3y0_qN%El(XA?B=ao`&ksNt5oX zcBJ^q5&saI_&S5@Sbo(1S-u}Rfb=c9%dhuexv0R+q`&1L1yF}x3!q|0IY7Njnm-Pv zhB~)}b?(mBK~i`p`3S+=x$WQ8@{J4^_;;z~`E7c0%Z1e@+k%&K^|%U}L9UH@ z^*J?<652!rNI?ObN~r>(#opl2?=1@fx-=c3>@ii_s=Z>?Ne9T+hsHu%f&=iRBeM|M z^2hqH6G&VAb~N^^P)0`7=4`Qx!h9^Lg^G%BP@gp=tZC^l=UZlLD1$ABmrF&6(6cL! zj|PJzzY~xPHLR(3Z}=6eNhQ!;wZbNmsO;ew>WS8~m#KjR|K8kH#~2ru zr@j6(_Tl7&JGz{$C?u2q_8%m*Yu|!D>l39F!92Xw zSg<B3t- zA-7qS(w26IOS7wu3~4(ah?wq-tQ<=XZ^2fI3wLCY;#dCH-N*h*qSJ$>{z}!zv+Fst z>T(Tjk69XVkfrSgFJL6_Fq?^^(%CSzw@T3)cw2e0MBPKBZMU}9ZI~BqB)6asEwnO`RtN?j&t1)JmmBl(UJBY_ zH@7A#I2hb%GM)kq8ZU`sI%D^O+d6ddP(1t7N^UPw1p@2z-)V;zGu_v1OSZh(dO~6P z8wkfJU_MJ9nttMEb(wF1fvhG`lh#gBBQtn!c_Qxj7`L}SJsEXzl3)lOsQy6xxL#J( zCFS<^!Ek;UaoqD(+KO7hri0vE?)ctZ?#7$%F7R@Dk~8-|KM{>il=vGSvGaD6)t=2r zp0mLDPNk1Lpb#{|G*P2P=}i+Ew;2>-IWc?-f$%@O_A*yPi-H5G!Wjx%Z^8GGF~HAv zN5Y=b6oT!J$iKj~#@?WI2T}n6|FF&h@&a1y)zD>pwO)D3EZ1i7Vt2s6P2ot;tm+~wrM2o-{ ziCqg10hZoJ6$+j2CY@wewO!DslZbZT+5hdbee5J>rJJ}Sg`iX*cZFgRZ7>Yw<(fk# zkZ6TZ~VY=5f#$!xD>d%D?5KB+24 zx+-Q-HI+2iwm9&@RCrJo5CVu0G=G2JE%!$*H3ZK+Vd_gtHDcn?+|!~#F;LYRo->qB z$k%cE`TO~y{F@XMIAQCf!*;~Mks7vM6Q<5pYTk6N!7yfYZ%p}krE8~7xb^;Mj9eX6 zZI}GN94v|2isjq#JsQ%5*S003L+9gK3gNJv;Jy;GNL&Q}$^-fI_YD8A#LVMg zwWW9q#3lX@g!2}RB*RgF_NnBv_IYuPT0TnqT(Wr zexb{_Yz{kc(4pFa%;m-NwFA#2%RloWQKssrNwG$pUc9jJ$eMa7Rlj{0`;Sp@-z7Iw zk`qD3F7|+?QLH-fgXx)%k%{M%Ga8ZqH7Gep{GMdVYQTrMcqk8M?Pf~1%)qJUqbKd1 z&On8g$=fO7_=B{4V0lYjIXOlC-P5-aEWzn=&^TaJn>Z*Rcr~8&3LzQ}2p>SVXps~! zZCPRfIFz`8_Y0uAL@eyVv)P~(zQ5%{g|QI(7IETC^&j&A-x^)_kG{}M%XA)?eT*u5 z={`2jV|D;#(DWF6Wvk01UwQ{H638u2zoOZGam8m$ua0N-@Y14N*bdSYbcD?-3540o zMO*61$kT~TkP=(!>Ls&i?>7f)sR&q-t^Q&%-&y^`A%H9jeKfIGg7=N{+lqVB3(##inT0@zAWM!d?Q!Kx4X(QKI?F zIL6BNT>v-NN)a~nkIC#1A1)tHrURZ1HWg3mUO`hk&`aH>pDkU5L3oJ1r5ncPc=pn0 zJbS_Lc=o!n(Ut*G@+dQ4c=&g${`xz0!C*yFQtm{v_{EfW4Ne;l_Kzh{V-)KVyy*v8Lo)sz1sl}RXc|!2cbobG79^zqW|38oO*OB0uS-d| zf=Yodf7oU`GlR3JE%B(GfAQ=Ah1gPuHNbD+ki7+qv_ZchH-OE6edy?Z?LA}ylC9WEHJe7A4dHpKtQ z_79Q0KI1iTdU3JEH1^*e)+_HPiRSMm#1mVU~RRFX8^k7lldP|WGUdJJ9% z6zK63o$SdOU+lz>a-EkxSf4EeBAi$ZF zT!k>8H=iCUIz6{<4UXoqr5|=VJ$vw83JF!+*47!zwl^qb#_o0&D;S>eaOk>dW=d(I zXKl7?9TCXt(y!KLpndl>r}G!3 zCeBBor2|2`|fvwE%nQ(*v*NFs6r&aP&-_deyzcD ziJ{TVtO|}%gn*RGOyTbc%Df%Yek|9kszsl$SU#z><)q8PzJHOVW{i8 z`VmzEqrf)?WP{o7p<2>1hy0O0&Dg6Haey$U3V+#fT;e6~6t*2RlkDO^q8s4CU}MZ_ zMn&u6ZLbCmBrZ-9M8xQW|LFB!A@8Zi&iNUM3qn<_IlnMocjlNl>JTRX#42jdo zVZh&2LscK*NAt%+I7zN>f-f(14}D19SYrkSAahMp0+B~lWy|#v%kvL8@X1{@I*T#Q zj0{{`mXcNGrG3iw`OLmJ4rHlj(Wb?cUo)8C=lv+}r3X`rFdd1?%9^H~-H1!r!ruyo zDXc9;S9ynKkce_3|~u$hwGNQmAM&30e0ZlVlpuZ0kYK~i#8ty7>BhD5UwhfggL zIuY5HDHo|Bo!)QC1)|eutb=4<$j?QcARUS!1<2x=2sEO1edY@&;b1aj90IY-urhmX zwt12kZ|cQc+-W@CrUZCl*y=N1S|sLAU77A*Y>}Fs+maE1j}3?ym-&CJBXm7B!zo-T zI3O;^FpGP|jh2d&(X*C1i$vu6mIwv8-x4n-vCY5G)u)n|T4;?1$s}Wb*yd2S4Nt??FLr2@VCN6-^3|I5;vxN@hDBXPqj^1 z*e#7$4VWFxV|Jo6(v3G3v6uTkcDL5FWA|G$=dk-fF4aq2q#nR-LT*(25WAybcQg|< z?2h()IcnHl)!$)v3D{@Y-Gc;ScNd4 z?{7Y@KS(eZ>^^ZGKcmKL4TqoDTlYay>WLu2K65AyrW^hn+KOh}a$$(wb7)q?6z8Ol zs4Z>Ov7b>UvrGssu0&6bh37l6Y5dZA!o=Onv|@5Ac6wi#yWEEhg%n=tOUYAA2ciJx zqvr51!D1Px`?u5=8)~IHad^`MAxPYA)?qq^ii*_ekE1E}Lo3D$>qA1AdXl}4Y0d|q zc2)zDI;2-JG99;jgjPC96?sQKi075&T|#3WD7lx`@gsW9p}aNF@#CMrPd9*Q6#Y4e z>Qj!{Zik41*R?*{hq)7=7D>GQ38gcTDr^_<}RJ%T_l~v)NxffvcN;7K~fapVE3qo0vog1rqH8$C!Jo7{HV= z9pa})2<~-Y-PdpgD`B?1^bs7reclnIQ@885mrMf_X#EVOu3UBWva1$lZ)#6kNIZUi z@1~YsuC~dMr9L~m( z01&Rex2Rju#N8mb%Yxlq-J4Z+5TNnLsIFs3s%I#*(e>0{>F+XG9^tryKgLG*S6=rO z177bx7Qt>ntPP@V`M^o^ro*;|6`#w_EfR9MqcZrX8Dmu+s>Yvmjej_j#^=y#`{k7N z3*VdkCJdhfmwqKzpdI!^NNO=qMuy0x35xe4HDBGgd=Te~RFfFc#9Ed!j<)F1)daNM z))x2bKEPETC0?Ck<$s7)h>fKSz3Nxl@QAj~T?{iE9<(7wE%yZAg&+ab#dsCwbu-Fm z?+;5=2G3dnGaeh7yZj*DarkuBP!YjGg!K0NeZT5%Z`Bkf2wAMfPHkYwYA{x{W9C0w zUsxE=PQsDlJ2tBXsrc*l(tzi-4PVCjc+*A?&-7Mm{&GWXYl#9b^}!%MhAx=@<`Mp`amU z=Q8$z!h=N5JPzo36!DQ&a-erHQsG2 z3Dk!9qe*(00LZ(&t>KN<2cvm>7#lTw*e67X#GlA<6aGy&;dJA!6TT>AXwZuHDA6({ zKd==f2!_cBymW)6^qwxT%JsiFz+mw&n@9l`$Er|L3bS^7*~pIZ2OTsBK3MYDIUxK7 zyEzbWi^G-kPS*wh>8QIX$bBxJ3JBAy0+UQv{;73M7cYH06~b|tr2$Le zPv765e@h;X7CA^Xq&4w83b8ZXmSESOP-)^b(c3W{Zf_vv6aa#1Z~^NN({XWm_3g?HU@LZ~r9g@P~`cfeIZ1voR4(oSD zxqtp#ZF=aM{CeSWtT%rTcw#g^pV-XRqwV@)jpvtwr`?5leF_02hgfpM1lwVAx39Z$ zA(ZzU9XfNjH%-=u&&THL9{_S36w=j1v%emzKXN)tcGfpyC)lkUP24zlM!9R`QI$!y z6(=r;&Ye-=((WS7`K(v%gr3Zu`BhjrNk+{RJjAq(u(<357-Z)}b>z{`9nux7 zf%GnsN4q3`(ji?@Dr0yb#;aNy{C0W)u*`8Rg_jc)aijm6Sl)NB;pE_U5<|I?b7g*3 zJ`*x9zEHe4`c2LXjQTAWKe30rRI!+8IIMlUg<3R7K*Mt;4Lu~Z=O7G}y?XrZS#TCI z&-5=|)fL)v$fMCvUl;LiTfrTE#g;e0*$H{hnUmp_Xf|VPj{>NfiO$?@f>gtLo||!R z(dcPv^J>AqnF)Or>x@;cz2R_rE?$H~?5XF(t6uhUzgKp)u0s6dl56*By&{|^JZQ9P z*_?A@nYSesjCUT@qdt2nJM!mftP<!0OFSe&5 zmSp;{M&f&jY*AYYV?m#-cOqCn9F&gstL{f@F3Pr3$*rw-ardPdX?-=;8H+0j9OwB- z{)9cv5<68#P3;>o9XcVP<-M6rk-zp~`qp0mAeLEH?=6ErATWDsLYsf5~}!-B>-Gj%tOBLB|rnnvOeL0>^2vxbPaZcUeXDM{F( z)!K3me$a!D`s~l-am?jrGnPaRd&gi+7;JY@r4goqv(9kKsVCN?seL>z{eFHBRy35s znY!*FjmF&*q-kjn9THg7^j%iU#B|*DnU6CBtKqkqr?k&EGSd0LTQI^3&DoAtEeD6F zO=N;O{y8!7iOc(*<}RC0fhQba0L8~<(XLs4P$h1rTVIrBFaZc#lDg{wCe1&wk21fN zC2Vqe{ygOX{8Fbin;>yev-%T8$oolbNOE!$_4S%Auux>a&I@8uiJ3Lks-Q%ma*5^3@nx-Iw z`gy1G3y<5JH-jg|AN?Nx5=~bB?8O?0RY>D;W`L$-OCBHM#0bCF2AkVvWH~Ky1Tuxl zlTE-WQ*t9^Bw09k#l3TG1ZuH%a76iQN$gd*K|ZUj8lKqtJ&AazD%fh3bN zy|98PBN;3idHKaF!w_2N*~fF%VTrMfuP`FRP@gv-kYPNkBxD%W={t@Hm8)XN4zsq;2()L zz`sb+hnsn>OUT94;?hApqG)bJRpik*fi8i0eQO_>`{z1Qo<4`{3?8>E%A@d8n517; z_SSOg7R#e9@91}KIEzvfLZ_*K-$ZEz82@9c$W935%rK45ad%AroA4Y;Z`1ZPi=EkO z-0ABPJLrU2IPG)*HIa1xNlMUqCO;`obY_X2O0Ix&=XAii5&sM48m6`5 z+n(pgB`+HavXzYHXMJ`8r_w}l?O=Rp_Zw)rXO{-o03$b$pUU-FgYMIHEGNF2=5 z*sx7z5z&%eMEk4R&lazrZ@jA zYPMDGDBAOUXEy+;T(cQETFrXR(am`NFpq9HaENzzVYv9I%7u&pg97Uovm~Bql}q%I z_RWjDQdafc6s!7o%p3Oa7-X*dDahlBXAr7oJrPVPmfVpbWO42pYss%Z4Q^YHs^f2~ zrv1y~J4D+Tyug@~mv!g(cYUgW=6zxG_!A5eghkO}&s{DE4i=xa7^eVCuwZ~6&UIMx?>so5II)*eif z9}Cs){ol01X{9&cJf0DLJ~o|pwR7`O>PiL4-BL$s5vh2XHlOy(33A)VFH}=@?|DXW z@S$|oH$yYEAEK^Nyj)e;0D@SR;to~ntG*^Ud<6!RVJRohq~UiMcA??FcXkDFSol*| z(4NN72p;cHus&Bu$uHD%d1AJDy(Zslc9&xHUFvhQO6se=r0DiiWJ(krnlCz`W6`QD z6#2Ao0`6z6-y>h7x!1G->MNze@Qn4}X#betKi~c_*?+eEW2#S_46TJRf0$edjhNk#_S7hfUe}j@f=jj6 zL9PwcD)MPKFN_G&y64j*v<%a>N;oM&^>ShpglQk;(^$LFE=}WT^j~lp$aVCRMkBA| zxZF5s*u+eQjtey7P1qWSGj8-1INGMNBF+Z0a=7ZNT;dA3qc%#^-6NWL#`5CyRH6SG zVN}OT4boek4OdBBYNo<7O@;xRpdmrgFBJ1?Dy)P8(w$oA|D%_C^`kKwMg++361~$g zJVs<4Y9ba2y(xGx=rP-+iOQ%rIri%Qicv5;hW`T*+vA!2i5Ec$tUlySp@(<=WS<4! zil^)o3BTiBQ!m>0NBXuvpdZ-x64jOy?G`?vsEOU3(L`qfv4eh~P1)Ip4S%xJy31@L z<3m$}3jt(u>%}g7XL9Q$gwEum+|C~eLmIyn;XO)Oev6uqSW6n2#}QraQnmA%1QjH1aQ-fq}F zrZT0n*6Fanf|pfVRNhG6+s!n`eQPf?CdsX(Ui#0HCWP6|6e;qN;&637w&aL;-HN>I z*W~;6q5%U~fGm)XBDr-CT4x$cZjI$d>}&mlz6jBJgxxL`b>uL$pl;M(21jI2Wg`!vIiBId(>}I^2L?XkFyvK@kI?k-*2l-* zO{AGsO?BlrzJ`+(e1wosq0ohQ5mWo>24oe zzqj$?7M@&J){W*dg2#TWN(oWQjzxwV1sVT{o=(+&XQcmwVhCVykbx z5b4z&8wl5*;mW{5;PtZtVut|HE%>WP>j8F1oZ?FSe}%^H#Vv+NeTauAt_3%i3v{qiZ%n>kB-1ke z45ifNQ>G7Cy3V62tNSO8yXD2fb}H3XebRu?8;wlE?%X7$^D_-a_4tX*^IkX4Gmvlv zZ5o;t!~(Ql1Dk2SEHYGb>$P5LZ}2*~bq0o;Mtd8*bWZDl9g;ZW_q0Q>XpZ)q z21k6Fwo~p(sP$##s7eVo++lp1{b4pfoXqyOaxO0%;|XqzS)9K##_Zf~MdoB5^|GjI z>BIU<9nEilH+EwPFqq^0 zdpU&rl3nNDd4xLqLK1Ca#nWK$v;62au1rX5ucl8&Y^(B}lI`~1{)-*4eWIy-QrC4L z$%RIaDKzr6V7v>(eg&c~$XrDuHsW6xDM+IrVKt7~`-BMnE6P>sBvRP^dXdA-dd2pOgON9ckP`*$u+L*iD z?l>d5dpEx9kbK_>gi{>az4_!1p+H?Z@wjX~X`aW`+c0%#?j7R)Ng@72Jm~d(Wi51B zuZCG=E^C>xrn>$1PqKoG7*BF*Z!dMVk-k$wU3JaoUl6p@?iJqr*I36sZOI*!z+#Sg zYZr!k>ij{z7PxRc@JJ0lq#}m2@wGw%=%{K*aQDk2?MnYHqGuqLP8=YnM*%tp!(f>i ztB6bM)A8_xwx2q`Q0U#T7YjCCBV59Q`A5)y;j*X)lRB^` zCXECEelMrN?0${b#C4kJ(KJdk`>UC9P4wLpnCN~kbd5fndD-4o34QE+sd&0*rIE=q@naxgwBYcY)w4$|!$AG)s^hl^C063`v-v zLSuuYD1@fU8lnsb7Q7QS*scymqCsDZNR_9yC}Mp@6^Nrl8971F3aA;p}QU`J)5ak*DWFF}4Z_}r+46J&pBzs)uWMmN~RXK2^t z)M_Tp=GE{v699*gCwb|F=rPjb@t9ow=AhG{L8y{VU@Rf=RYy57_OU7@ovK6yuju&F zix#Gl+s@Zw{q*o^6Jy$YZX((B{A;{at!FGTL?6oOqNSmKG+W9mZ{*;)R@QJxG&>a_ zat9rRByp>gBuePu|K_JV*d!$<=rn+#@}g2`XYiWdY7T;ZHoIOl$6Wdhlik8yYh1wq6C}4%~oS=pUvk4^Yk+>&hIIZ|MC_C zdE$M>wThj(i`@Rci4xeIv#i53CVsW4t+jR1LdpALna$3PkXMq?(DsN`eN9-ZQp7}@ zEEukpt2bx3mKqMS#GI*yN%Wm#uTyAn(CUOY@jduee4`79DF51mW@1CmC8AT}K7h&C zN>0}{|3AGm?-zF5W`U*aSr7l9e)V#99>%^0(c*N;;Z67)Xrxu+q>pUS*W~8g$59%{t*JDtcy`~2iixp<-8_j&^AAnQ{T&^*tlQdGJkqByv z`;&^!)j+V(Z{h~3F)emOxTD?Ol*8kAz|PcyqwOfod*}t9upGE90>`U>3_839PN{P! zLvS*T&j$B~#Sb?a52&7og(YpRrxG}fTi3$i9e(SO{V)FgtVi$y-!K%BwpX-D3%&H& zO32?R#c_ckh2|(RS$5qr0W-#F28A}ijtf5o>#!nkfkYXh8AsxGp$SduR@z|} z>{IcQp+d4&BXQba(3G*Z*;rE_lOAb%1HkAK7-@Sw=thduSKIrd7(y7uMv65FfUe5^+AIVMYb4wpfh&hgeg`F#5feTtujocA`XAKSq~tNwW7 zi;O3jv+ZCd9u+2@MIQfTiTnf z@Ou1^0NOSItzmzE(_tdiub@+<{^FB%!UDG?x-xV* z+S~(9o5T47^WCbeZZ0&%{gcqK~#9=1&Cv%&R26dEXrZ$GKUc z`%1hFUP|>ajxKP3CO}gDu-T{K2{azy?OM(p9>O#PZRqO%obk8*rtS6CUv;$avT@20 z9Icav`ZJ(pc6}GvGK6q1UB*f*99CGE4Uh!PO}Ia|+s}YAnstRvJXwPYWxRA5B+>N1 z(u01mNWo~E&*Vtb3N$_Do{gC*N~vIFyxJ)-pO<=3DYB|Lh3Znmp^K=DXa90PZAP}N z;QuCcI~39fe|V6Jv}iW%%yB@kHP+@-%yIDKk}F=k-_-KN8JJWd%>1qUu1G|lqJ4t> zeM!)0OG~UOPxN{W>zgkVv*P{qb?9Rl-F%st;=Zu9TB?Vy8@^~A@AQZEw5Zlq-1(o? z2!!7Iu8W8I?!9Z&m|veaM#v?P7b< zFe!gGwPSM;Xe~LVU-_Keisg=k{1p49Wwoib4LzVU;pxB3A8-YfLq~0)&YI^pqnl^z zt_+hbAm7_dx3WEC{Yk6OPAZG#W>yya^I37rLC617a?Cc$ zA}LKScYc|?PEjrl#WWjk8DG8W7zI{XfS9N@TouOS@z=@|69^{zdimp>#VT83g2bUP zGbF;6b#;j|NjwSC|9W}E!a!^9)>nNnEK~bJdE$`Mvm;+ZG`W<{I=SSLFO)X~?!4r+ z4#=}s_4g%MP-YK8>|LLmhUL&^Vx}}4*D;hk7y{oC1s(AGtS?F&VXRx;Cfz)UQOZ#y zbkS}oYFHO{jt64HTGuRA3{?NxYeI}F@p_0RAfEdRsLZ-PE_>JwJ-C2k2qX`bSmpzx za0Zy>o&orH&>;?iUpACI75$XlWt)V-vTVd9s44sjgY9hIcIv`c=0~ufwpF3w#L0HQ zF&-?M=}k1RWJ&KK9Zu>Vd3#V*&6~ZqzO|4IUi`^vMSki%JK*B}Z!QH*lO@MT^M{LY zco|&%nNN0h-F2x<{M7j>taOn=pl~uxp{dzJp=lF#gQnG1nh5K9(s#B0F?-oq<{KCr zPN>&_4_f%$IHYR4dsfD?6UtD=dv`roQ~J7>mQXuZ^)Al&ARWv}MLb8$O#ThYUfyS` zmLd%FjsERElEb%Z;N#!+|3FA$prepn7RD?(v4M2X=%vxjCV#(wa0AF58zIEwuayeA%Aql;z3R-w&O=3jc`4p`DF zieecaUeAlnjcQzT$zHi{oAGD_(#a&lWk|83-n!FmfJch%zOVR z0p4fxS~5Cn9gH2~J2c=_#rwzNw49toWJY|UNOLsXH=3KyK0#sATN(g4sC$p2~hCK}xde6`szL|SiPc6+CaKdu7!>N^OaYC6)j0%bvp z+;KG158126E9WRNV7QXN*bM}om&7x5O!zJm%|mlMg7R3l7f;gH%Yd>z)4kG59WCj3 zXl7{a4oErm2u*sU@9*0Mrs z!A1g{6EEw_^=b2e>4)nK4JIxS-LB70oeX#rRk7r3M1$B~f7H0Qye)LQAB}(MatpZ_ z)5)+Tp=5j%n9+iHj4f8Yy!Ex10{mvHyVr5zj1A;}<$p08#`Gf1GFx5yV`gZC(l>G7Rz4!7Z>`VO>TM5Mt1;~Hkr+HsnxTV|p!a!8glm7s23|W(;#5tR4 zEIFRp6lvQR!7az)a&N(>WC{x!w}?~H6}2TiPhmCgRZWatYA|2%QgIb!qujWmgiBu2 zDdQA%JyEOea^qW;bY1Z{9s%5m1r-GE#ucOyd>=ktn@Jf)Ac_T3NQoqw`(|=!M}Cp#dP}o z-`)A+I&}3dlcTGre%0R9NpwX|vPRye%UEvCaLMpF^>|T}1-I#;{aV9tWtbw?N7Kqb zK9c{fAPM>hG!uLIhwg?|1*KI>|7fg{+pWEjvPBu|^2Pc6X8yOX7J5si#!J^RKEHg; zcdY**dmX^DMlCL&T6#a`!hXAH10!eQ(zw2Yu6mxO>eJc%!=Q?D*ja{50QI9T6ma*c zu}AD+!!*E-S#+NmytS7)od&dlpP^iw5lqnb-zS#cKbjlh8rjWD3Dc!~Gbq>$Pc7MX zhX3cJESlP392hY!_Q)p&LSLYO2Q$I?Y-5Ef>pVVmgs_K^x8+AZN+VCsDr1m(SfzQ^ zoA}aUnDWZ)Mv=`VZU`BK>)HR48Xym=(932qusnIpJs;N~SjbIW7tfSz;df}l+u5zS zvl#c%uc>}ZA;8WP71(rGfSnT`vY#!;Y}tR){CMVPy1!)iyp{BL=6n(_EB7Zw;1QXj z&^LXe^<4vo5LAcsZdnCqS+HaJIjC$^JQKb&DX_KGCCt@|H z%V$)Ea>JuNzl<3nk*Y=_lbZU>o3Wl>;AtW{*4xYd%+6>WgP#Yg{uRU9F@k3+^B6G* zK`gNtVUCoBw%*5pY{Mm8-2Gqe}V49gPTxL;)o1Pp^&hiuSmj?S!MH*t<=_- zZU;-_FkL;ru!Q=m7saD6Pf527?QNcE7xzTI`KeEBfF}JrmjQ}%kLSj~=)79bJRA0= ze&2RcI*dSH4fyZWV!QTYMWoxXDI+3uQCt#78n-x;fX(n@rL?Lg>FXH%vsp~FaJ5y_ zlx?Cmi+I0rQbNAvrFR$cmJ{;l@ch#r{ls!ZZ$pUvqd#=XPQt5+ug185|W?&Eyk6qz*MiTWiz@==yz6 zW4C}%0Ix-{`{6aU2GQ&QR{o7pd)wD3IgV6JLQ!JOKv5x_jez;vic92I@L#6nAA&uT zZrgozdZiV^u%LjF z1PAoRPGTUKZ%Hh7%{njrC%Psj4D+(*f`dg0U^9lTgBib$uUPgBB43R5qnV$htDHwfd!k87t;j~lM;3)|E_xJrBs2JG8A zI-nVgBxk0-8|S58;yb9t=)whbxVtYQq5gKK4$=LvzOzGA3c%FUn56_Sh{$BCC!PXZ z*>$gTi~OFrs`@9K#UzSpqT_hvni0!<7Kq7h-Z#xV5pZWi7TPi7rN>a(|8A_LhyzQ5 z_c5k0bHp*2TksxJTKlZN>R(>U%(k=Do2uyW6m|F{7HF+G#;{gNhb!q%Bn8uL5ijG? z10DFaq2erfkwZsg68={yq6p`@^-ye$U;oiZ*P6BZh+>39F4~x|ekQ6G!o=`&r~ypG>CM zMC?Vlyg~|%)^;(-q_>kPeSnDslrcYDfarjbN{z$McSA&6=h)wS5E>Xnt z6R_edtIh0fm8dZNWo@b9BIgsL$cu(Yk0xH+(w&|By)h3IS+CVujaAgWYE#ZC4IFV| ziZn}iL@SvUpn^SzcDRvGAmq&k|Xm`qLEui-f<`_ZU3MHt^F zjL%D*&B_J>Nb=M3o3@usKaWlxP$#W-VoC0$5J?sR_ZoS=(%Agfe5-L5BFbXLD<@>^ zqTV<72_>4gpX|-k<9$urM|tT}fmUQusXE)Y%lSoifv5S^0SH6UNkq3IuW9?04RwzE zFY>A)iQ6Mw9`Ti;B{LFuRo|1G)5@axAm>2?H43Y5hp(ZX$mcY zTalLHaTL-y4|SsyZ$2|@XdPgSwnZ}BTSyHqvfV`m0$Ea%(vg-<8oA3Jqz$Tu(NI#I zaxKMp4}`hq`;y(SWDi}R&5FTf&T9Cn-b~!E*Txm^>C2j7f(Fc^jj75e8qo`m!-dyu z0Jp8;M-RdAbewxvt#>r{_sV-!j!Hc=b`C5~7`1^44(=D;ebK*om>j-`X!o7snHwsb zR6gen`Qw@HmDoA>xBX4;p)?S6Q8S(f70{x>!p}RJzfL;^i!)rJC)QM=r-^W6y!~)d zQNv+cA-KaSgkPvfBfIU#+Tc2Q_~>Bp=MM_&r3 z=3SO}AkXDO4-qN!Aqq=a?p|wuiaCGFoy71x3cjlc@Eymmu>W`9`r2Lz9;VNx?cmCX-216i7|Y4&VP5Fl^D!73*hp*%u1ZhcS-)cWLDxx zzIV%i?=}m2+}zNv^qyeYO>4(3Q;I6RY>Oh*B{$sc9Qt#tD|bg91-gbcaeJvo_T3`_vE-&Bb7gCx!eV?R88A^Pn+4a{U?dDnzkRAIH_s- z?qCf)N&XgGOaVBBuU|e5Q(wm5FX{%r9nu0X{RKk^4zfLJJFc*&jx2QXQ)|KYRD=Nt zr;C45$n8pQ^3&d&uh-N;!iV7-9rWgouPXO1>7!jeKp*HHUgn z%^@$3GVWE>;nuFtl!3A70ce~j4zN@97HY>kuoGAv!@b$ zq})|H%(lta;>0*bBynk6PKr!L8LwKJs3o$=3t{0+H2oOwYc5S3+adK`rFKy&)})29 zD+Mif3F!?!W32HNu0`SfG=iBLflGRxB*_;NlQjaD_5^7r4J49D0v2cHw_#zK`PKZB zA+#i_IwVU;Q1eg5(87D??WL!Xj59N1Xz3Uah2Q{rQDdJgDUn&$S{u*6V>IasYu8Dc z$V96J4k~(Mmf+JctPIBiTpXSfAlqBmc!jlKab9?neXOnzu)3>0w>xWMqNGTd?SrTi zxtNUje%`@|k2f}nvY1>BPr0!+^NHi(Y7x+$8#yo7JgFEL1=;gZ>{`MbEicC&lL$-s z*gge)m+{<5;4OQ>&GRHNu1H*it#NsM?%WbCvn339deyM(sqZbBbSuC{#cnEc4Rm9h zoR=Ffaw4R&*w*!&Ph2%ETD4Sq3wiGR&dA#{CadReSxaQKFM$t?0vC(;Mb zfX%-^e7E?I51vCeFSYr-S8r;IJT3k)m?g?02<-Bdy6g5Z>$d&B`fUb!c`QDXZp4h-uhF-@x(!{dL@>5diZnoTp^#q}8Q@6a#x*ZmSy{PF{$_lUg|F*R&%!ta~rTBb+Nwu`?~B#`(s`emtP9zJm>x5P1^L*ukt?wDEZ{2ZfJ~N zWeg=R@RK5IBHpi_om!@sXVcxZ0kea9=oJJ1oI#tx(FlUJ1?SVfg?!Fl!UbwpnJz=l0DWRZ zX}^ZJO-QDd2m^zskBREWliyg zkxWe&nM>AYZs6yJ z2wC5Q*P3{uY^ZFVz~R}y6^bT$mIWUO&vRpX@Z=D_b-F0jR(&?>B3|FBiB8vn@`W3 zdXl%`C)N*hmN30|a|Sw`+363@_abElrvkn7cD-z(m%ZsFSWjaBueSr9_p*TJ9+$wX zEZHiA+8*3YA#jcFPQt0}!SpcUZ*v~h=Xuu1oEj~lKlI&ixqxW7x%?ratj}INR7om{?{j+mZh*5)89ynPgv0pTNH(+g4a4uRV9d zJ|ymowM2R_j-uAPF?5L@z2BRpMxT1IuVjW-#OBtO7C{Kj z{?T93VrL`=5vTMwuRZ3(RlwgWZb}nk_epI9|3^ z1{UZTTuLFoYr`;k>$Z)Abjqj7pE{j4yNKPHbnmFydlC8|O=pAq&g@_mO)TB(YLK|p zez!6%ILQ4>=$eu3J@e`?oW>e|5|UKISQO%yQvfSWS;}Jkd9Ki5%ll?Q9Gqcwn`jt& z6spJ!qnb2-f2QKWdj- z!&^MZtUU=3URTVeM7~p*ugqP-AZAAIhfKvE@yUC?!XNPy)(d$HEo?+}*ZLvxh=9vN z3;85}C><%gtf#D0I`$$O=+^UG)Wa6KHnL?2Q!P%M{k;`!ys88Eyaif%{|FfA_SHOu z#?VAEf>>?@>={mF`y@c5aOFD2)7W9XXvKi2Td^@eYG1KyiF#QZqE92f_zJP?|GCsU zYrT14!F3=iL6t+64>X>E4bnJuM2;qsi~P%6RkN8A9yrbEMP2d>NZ@8IIjohjPrdZ9 z1>IR=nT2`kuymK%(mk|i$E6zv=xi&5phNkl2ExVDLWX{Zq4R$SByTv`zbOHNtk6Q{ zZT$+N1d=6vt}Lwe-zm~YAn$b+w2zez7TW3pC-aBd5pLO%*=1m zm0T3!K3glsZKvpV++D&4k6H$^-#AMKm+Ma)=c5=QX$s_lP`aw*+z_y+beI-mx-2(^ zgT%fw##crM3!HSQ1N9g{1ODHLSBIq(D)Xt}7ZNxet5UyF)7hh=n5}9j@r01<0M$VF ze)+FCD(y@OxXvV|lV1T`>F-l!d|A!h5OR#b=@= zj%D8UAC;!EKv;A=v~A%n&@B@*1zG*?*cR~O9Jb-3T(b4Rw@tf)A-3-hFRccg_8mnX z)ni#Ai4&gG2%v7({*{!VGU__-KI zOC%E|A{y%kbw3O2h?#l@EA-6NvLH%=e?CJC6e=a$1Lqgp9>9Y`X|SVa!DhO~E%3_G zvfu_QoCn2TG_Grgf4``o2-h^0b6$s)UZwIF2m!3%b$&aor_Bys@(?*Ix!Jv=+1)JH zAsCy|zychkmuSwMXSLh>(Y#;|ef3h}a|H618bdPvhPYQ`Wr+-@zXT%G9~sic+D*kd zvj*52)$x>#S=A=1@A{-h$GmDI6uXHp1=lg>NLfwBvJr5AGki)JwVOy8lI`xcMkWRh z#5lBLoIkPhNWZfxQ9!8MhQngnYoP-N)N|nu-h)|crtk=}Zx~ z{4pPeT`cp`LudrY_JvkxjkN6MHy_L)!RUU6_<3dtj~#USoyM46GETqKFa#OvulMLL z>ryn|DEJ_8>$hHeo&VK;tq$Xl@Duj~$Mxenn-z zmwpCSoq0^rux$4oBC8O6nC4eF8yK8S6(YERM6*9vELgdSUR9cC~~;9U7VY3E%x;)oU|Tv7X#h3%a!R)W}@iM%(&Rqc$`7VB$jq z@40y8we`>NI?t{!aq!MYV3Z@hrvEIGS;DA&Xw91X;#KvTNNHW>T98qgRuqh*4Z#&u zhor2D@sd}ZSG|H-bqq&rxAvGv8?5C!Z z)!RO-(H3%Y>M{e72>hN*#Cittc;-5G z>27?R{h7j=~c@QFit+L6y)|E+0*{!X8y>K zJeJw%Etty2(5pOz8FjcGA)ziesV%Z}L+8P{UX?=%@4a1D7OmRurJ@vw18ln>_Ks(k z*r|Orn;Cb1d1A7SLrykd7Y33Tp+VGhwtSTzMWSXvmJ!sWklIujLgHxaK9=0z38dD2 z;sE&LL4xQYL6SVVueCL7KpIsB-Q=~o_V=vw`!_qFN528RrvD_8Sve>-avglulK)5B zyMRYoT?_x2WCBrxZ>&*MixO?rL{LM;)<~!sn7~Y!2_T?=peU#);00zNLV(~*G;d!9 zY1LX=ZTt0Nd(LUAtu0Db$Ph^om1_|Y5d?vG8M%o)9x^lg zepzenwbx!3zw6_GIYnWN6Vb-LP)GsSUUG@C2UW2w zQ7=(q5?6e7sLjT&l8}Y%pH&E1I6+|!f%W_%#1kiXBdXBS0Q^gUNK9T4ngXXPQsLmd zP`KLau~!jc04``wC%AgVaF9c7^o2y%_4tGKYeN| z+b|R>yLV~Z0&XvEKeZV|{3xe(`ewfpu8vciGeJ)6LRv}ed^1HE)==AsHlK?qi0NqJ zjcu5j{(*zlH+PQWn!>s2zK7?IThxAJ4{{^XiTOJFBcHe8C&4f;r?g#9W;=aW_G#KU zO(fIsIn#MJJ6v;Zs#T-j25b{F7*!S_~*?)Z;8; zQI;k+>N8e*zC&=@j0TuPC^AM?b5Ci4(~pGI;W|kju6kc#*@9(pC@J~yZ|ZOjSU|?+ zpg9t1vjX@!$1$X+&3!TuYh0cRIrgYJtw5GHfc=v~AYKQtAEJ6+AwR)b^(l=%iu?>x z1j0*4u{)tNLO8raI7CdM2!}sbeL|uJIfSDd>DDkQJ{vm2xid^k^A=0%wSuw_LS|0T zYpsy0gFqZ3`7JcyQOJxMjSx3^8TVQN8BKphXK>~z&0r`` z-#q&pAtm)~@3QC_0mFMz6l#-e9g4G2D9(Rvg5rFxDbC}cR0zd6Dut~}#_CPH<_@HvKS!$hc#Qic!b`O#YpSfmfl zu}9IT$DEkrMf|aTrJlDmFA@-5Bmpl1pVPx{PGqj)aNXfWM1K#PFnE!_Zi1Sm#e|Gi z@gkm$us}kav z@GKr=3yCAz(cXTD(=*ZQQ^?OxAt(^jooE^8_gn2R=TthtXR#Q&iv6Sx>~#b{u45n% z3rj*+X<`0HW9lZ%KVF#nywavj%kXy0vJBnYY_@uf`VVlkEmS^&&GY=P3{B8 z5w5tDVFbd|Bia%CKPzO!55yqlIkcZ_%Qb8Hie7 zlWwEWlpvi@7?7$xigb<23C)DJ4Vd@CC$VKp;-Yw1qyC5tlLz+O@ZaM>?hsFKA=pjN zF#bGN%_s;J%4OghowC{N+cji3w}4TFdLMk|r9tca;sydaW7;ZT*?2qmf-3N=O5s^- z5@=@b3Ai@E_H)=h0`zH2yPF<#dqE7zqzue9h4R$4vyu+`6^)P4( z<2#o$zcn02ct}CyVY$-(k(4Ul{?!&B#rK=D81`eZ4v&GGlfg}d1(Xrw91e1xALQxJ z4ly>5IXQ)#!PuBmg_|)@vm_C4aVx6?Gbgi3>_@O2Ij?4YFsJ}I^BI>vjhu|oLC#8r zoJ2E<(*{SqMOv}Xfd1(0 zb6~CLO%^Ceqk?pZm1W+nqYyu<8z`qtBfl@QO#2fO^**ZyYDCzOQ6nnKvJy>MeC!z7 zY(pH#W1Q`WB9*PEFn-nSk0);T=HLThGtHw;SB!4<9fM+BS3vz}r4dsvGEfh8Va7sB z2Qf!C=KX~<3KXjX@`U5Vs2pVmW8U*Rr-B@!oyYFXL}S)RPVH=`!SMa0;vr>C?IhT` z5mF8f%scUtvZi(vDUVCa4@t?E6dwYk25Fzf5)wNFV+{-BciEa*dCBXscU#Ko6lY*- zYP%}&5YV{C7nxWJ+AM|TVZI1S3FC%8M`BJnu?kdRH>=Oe&Z3|F&RFdKzo1RzRBRgr zF$wP@?<-1(J@|K6#dJ=5m6Mf`T++5C`F2PDH>a&P0=y3EU8;WdD`e2N4iDqq0 zFZPu!H=b>h1c~+?%l{b7RRpUlEQ6@j24e0CUs=35mfvj5`vv9vk{>YFq9DsY3eOPW z;Tvr@G=XYoVYkTj?Gp;M(ugJHQGug@+WRq%E0&7>*woT+h~!L39!PQpB>5|L)E6E@ zGTRZa?Zr-wf~%UhIquCpvJN62lRQhW0Hc9y7pPyU4IL-G}6KHvUc(b0Oo zIC1JD=oaG0w?2`56eCL%GoO(-S&(C#kjt7!jzeeEPQ`}eylLh&X`#EwD!s9X)Rnm( zSLT4_RxE5Cz;c6JtZ8A1BB)Mma6d+CP)%%&p8VsEuEOh?k{;~1f5saJ+xSIVu33K~_ zlBpvzS(l=}e#?ja=cLc9=HrPxdpxV4#Ts!x%LtD9PZE zjL2&~ROG=8D?+`}zOi0AWhp(2gj@2&zi^XN>Omo`5e zn1a~-b-(0VhTJZW74fi$V_OC&VlUEIuXz`om_zLQNIlB~v2Vm^^4KaN_T{Ac9TBX3 z6F)?WoEhNJC$SvwJ$T%m%p|=?z}l})x^lXF4-rTKHYBEnIk%GY~( z-mI(C>0sp_&w>{#$xdskle83g^3Jj zhTLF;y25=dpd&M`IHD+ zBh}qAXrc7Fg}oFJDiJ*xL1pxdbK&h7NE;&X%d8?XSbOnb3VWNqSBOn}Gh?cZqONzV z46Y*vD|XGHgI4zE9QrJjQU6~1qAuZ#!-dvUQ7E`-mN^9#ulx2}E#p2$RD3iYw7#Y9RjiI_P-hju z2PP|vyLR$nqA7ue%#{u{ySFIn@hp}7;vrEUQTv1$kP+Q24Ymx>*FljfiOv}(1OY+r z`F)DSRLR&aanwW}Mn|eng{lL&DU_LFg=No_^!7ox8AOVl6tAnuunoz#`kXk1p8Bt| z82q>N;4f4pCQV;b_}(E3-2~LmZ&KGtEITDIIoH67%BWJ1^93M?gVBoQz9L`ccmpFm zbtkXE4H9s{@g(-VY~d{4u#QAIX1>kt)E&Ksl16kKMQDBiJYb8fG79`07bIlQJ$0=# z(NE_G;i+b4R!Z&76a;d9tGJ)HUJlG%8b|OJ&dWk($XR zs_j#(vMAvv?g#6U>v8aX-0!e=s0+Q$HfQ#k2}R@WkaPt6X-CbGAOL)WRY zS0!pxv+bh}U+xFsC>rJ*I2_)DDkfOH(2ef&0;)_hqQi649A==QK`N?ub*COSqQwBR zG5>!4@_VXLpT#!}KPn<8OO1#@6*0BQiD5L1t%~0&FGk4cN?hKwuZ_MYyZmVH0de)K zIDpgVErJ&`C7*5uS>;TI|G;umH3i#x_?iD=sUQL|QXq;&?CZ@k)AKLHMjZpRu@~O9^|Xx{QU(jW=_v4lm;j`W&vb z{Kla9jlNd;jm4EfSF;qQ@r`{cI7$jeS90^`3cE? zMDlOvsw??!@<*upZew99xicj9szEWg>YCgNr|Sb`P9ZbAL)I(W2=5XvzlOg{E2F$2 zugC@&cS0Io=1Vzy-z00n&L3b6%h~l95Ma#z59U=qm3UkAugU%cYLVmYdW6C_tROsT zUZjZwx+|BEVq`OkqB!tb*2?9^_*EQzT#xZ9TsGo2!A}jJ2yf6Q-j_J}0sG?G;*Z@U z@HkEFUcG3Sphd3ub+If$n$oOEJ$kIZl6{GXij;?j`j@3G;aNG=C$!58o65&&N?1M~ zbpXm#a-4V~ZH#vsgZG-PYQUaI3wM(8BCnOPXvK1TlC&)4B-92}j1a~8Zt5BFl1M*DF-iruWDnANsjKcW9r;R^I0<-T&2J zd`H#%=a;f}&&NGE zD^QK6Zvkf|d#l7r*kJ(+bP)lIH3}?X;sBmBP&^96c(7*9!gZ+pyI+MDX0)p zjs}aR-YBjJzegPf7Aj86E?Icj7W+p)0%IEPsyh}I&lYvZ#`A$r1FU!__Dbkj&&IlA zj7K6u8S@V?p1Nburr+>IBv$MJF*zbnsC{qt5e^upx{2?Sd16ycY_$BJ@6_3;DK#an_NLII@5a2OTmQvqM+qk zbm1rGf~%HhRKI^qbz}ZK8e?)sRG6x|V>PG@3tW}R#OqEyPXAZ(6^*ls$Wi7Y?t&t5 zO<*G}7u$4OHph)ckjfPZl@`6#Fj~ilVPg^(GiE5!7#Nk~BUm36ly3yvd5LcdT?7af z1o~o=y0qEi#6dj9z}t$?0>7LMz8KspvPD!S+H<>;tG52L#4jP!r$aMtJ!$JOy8_%_ zV!uzdN{EjKc%E8{4TfKU%mb8FLVLWd_){0%2S2rVjjl8V3Mny zF%9N7yr#XM#_Ntf4#{K5?N?P-`E-Rjq}OY%ak^ScSK{8-wP-S3*|I&ARu77uES-9T z7k%9cAlHsgV;cNY|Cm0T3 zYQH1vq8BiaP6P$Pg-(igFN@*}_k|Wu^kgWPU1{ul*xT3T4s8|!E<$}F;5RV=xvzn+ zwge?~&a8fLH&gK^kUBJ|0ObizY&oCwET~6@94q~@jD@L_!-#IV?xW+bn*omVF}i$vasl_^&^;sV++#*jj0C`=q=7D7{*v&N{unY_AV zlZ^UOc3KK$f)wO7=|atwIfsmBzJh{fnM$&3OJJygdE9O$)mb@l+9De{UpL~AvZiwB zXIW)V5`S2XPOXX3*|Kk@AWK$1i>0R5{+Z=MW?EE*MsH3F47==Gq&c(aT8~mEWGzo& z3M($(F}7E>F)jE^dEi#Dm&Y?dR;6-e71~4i*0XVeeIJWk4mw^=L(P>L*9fm~|BXar z{zPU_jw6V2At;CSJ=3TcV?RY_{t2QAor$$0?9`EGBkQ7>XG8phOM&=@XdYzZtksAa zn}vb1IFj-mS)2I!-F-5g(&kE6jopWmLAh=ruyug*RrT8+t71t}ceQuPN-0+hbPU~#s}q@C$_ln!o+e?XKI9c32XB4JrUg1qQ=?il<*Noi&41Ib zo?aJ!L7ej9D~OmYf(|0hwa4*C#e5L2VE8L~zN36EWub^Lr7gtctymR2f-}s$AxtzY z<-G&e1^ z2%ouKE6Wt3%SC#;+c@w!ajnx!XX-b39!r!E2N`t%CSToNgRO}W_8dpD+b}Mb)>=~W z%)7YO{*c|?7*HXmFFCY^Ct=>)1Loa{pqWJgwa-bx^(-$ED!4*gPPgf&>^kez(8pW_r}^g$P3$K>LR-vKq*IQ7tx%*Y>N?Q>*UX&`0`ivA04HX7KitaBxqo}-K!uz@z#y2wVP_ZCn!9c4v!6Z8l zI`p6(DyI(R!W)tIrY=fNERa0;$b4q+M*msJv9w{IKC;kv8N%KI)s8%y5jO`k6;u}X zTUu>S{!v?;pvj$%AcMsH1>^~iKk}1~Ay`3V&aKD^=Hvyehh(UQKI>kV?XgmfPEo56 z2a{@lcc~5JDzDs?M0&f7`Jzps_{3gCiQ$|uY776S%I)==&?C8i6RaT%0ulF)%ah&fjv#ZQNBbg1PFwYP0?B3Z`W!5e)@cflsutQU-E&Sh$ zFZ^nAn54QTb#%2gn$*}}o*uJ!yxdc5jwX6WC7yrQp~>XSc3S74SX~ghQMK%kG(v5$ zPAN;M4nmjFw7gQPrW^UvD0yK!V8MquK5@RIg?_%+7?_UPuvWvqZVklx^CN!?L(cG( z?3V>=kPEus%DvPVv0czYznOb!_^P0li*LS7_=%{U5;V~aO(K*mr%VeNx+f=z%I?a5 zYrC&(OEA{!>wtB=-}*j2?}Fxyvv2ZS`JVz28yJ>om)CAYz#iZab_sYCRc}k3L(?!G zW%gU`<)ZIn47}NVqH$r0_2}Yd*5;97X zI0x)^APyq`I0rnII`B9hu!p(;kJ!utizhT_aU+v2iq_13O};{F*2BOl`1^?}w3%@i z;;C2m!x~;7kV=hAR%WXPy(KCqa1yX=2R)E6&*ceidGJ?ChevtUY)^@khMZ1b$fffnNzK$q2l8f;`pO&ZYtD3Kf#2PVD>MbwmI zYjs;;%EWNi+@H=k0EjvCP9m!4;B5sGq6^Z-(US%*p7MBBKr|&X578?U-*66qWy@Da zDse9rfZd@A0bt%DAS_?N?VJ#HjOjvr&JAHgDb5XHP2`*l!nCR<^yw@p(@f8~A+3fH zoCDJCQ+;E?rXbB295c20O1AP87RFw64-`|p8Z4!N-zu$+<=%#;4u5PytG@&S zyD|)<4+SEn%r8|V;S4llZu3VHydc^Bl27PWBG#lDdNS2eSJhA?k>fAf9N^ghROnP7 zHiHg{{$MiN7^%;Y#(Yt_DXrooT8rm!bQgG)H;0AW>CL?+s zJxJyG@~$xm*kJw-xdvHY3GbqCt`(f~wnEcy_hVnEaSrGGs@@J`ehc;B2X?Y}lZss2 z2v1QlQ;>BV6^Cu3Vz;yf;$_&_s6i%;`NE%YcI>6Y+M>*KkBk)l#PlW@so_Ml^O--; zYRHT6bEpNpNYe*5ic!=>N}$Mfq2;Y7i#WP=~Q*jN|=NzmnU?H?EmEMw76Rhzl* z^AZAjW7L6DuwDn1rsZVeH(|o6&HOdKG9LFvOM=QSG<_@<`Y1;)8UfZl(8XI7$%8KbNJNWr@WL<>2Y#xu##V&qK&Np-MMMwXDa94(8f5K=cbK+Am`k)QA9H5qK%>HiY^9tOBJ|< zH`XWcSV-Dl4(36ez`_+k0EZ=OZD2T=h~1Gs&pB zLl>-JayV!5vN`Om!}(qi10#_!8TgVyCjv!y4rGuSVx_KxTx>qe8yL$ay30j=G$bJ| zzTQ*vLNltZ@oNjKV?7|m?jrne%tFEZ0ZmRuK^C}IchdoI&Vfef0^W4*ZhEJ~{ik6z$wVN-=VkKTG9U}0e=+_#X4YE#{1pf3~C1Wlgxcr*d)a06}v zAio!guzJ(_K9+H2D?APhlO=73Dyyx~(t_$(c|vrO@l3>=rVGX5d6ad+C&^7ly)w`5 zKsFTU+LwZuj$MII>sAnuL!pwQU>rSi&FT!BPeUj*8b)+7BjGt0S>Z_z0Brg>Bz`bZ z#^sOQ%eeZ(0CkpeX`zS{B1lOkG(}Bt!2%`%)=j7b>wRR+MK(mU7>Y=TTJlY0XWF)(EHmi4oIIY$koo3Sn>`BE0u3zKZ=0WLq)q8-?B!GZ#2AE!RG4 z&5O<;GkPcPR(yRsZPKZGC@XhR1$xSASaD`zW=#8|p*!jKWgSRYIl?+5x@3v(=o#Rm zB;{84J96FP^6>*-Y(fE2V1z8YeOWVe%BO}NDt|n5Bd?Eef1>RZ>dSQpDO4p?X&JX* zsTRgje?p67#C;sDh;V5-G!F&jHgtS_MgaY^7FXhTo7BRE7i(GB`R(Cn;ZYkgea}nG zrO1NhCrSX4)=v?AUFA?OasOV2>WRZ8q)5aXh>ENjpLfOnNR24uYLjzlDQY*^0zCVY zz(M_5#}2-FjW5>g4!Cu=9rSa9<~pNZ2w5Oj1yYVG2$ZeD|61)sXwBwjgt^%*m1I0I zZm1oq)9xp}KqhJEM{lUTU8hx(#%*=fSV`-y({3Y;d-2j5Nh317?k)UXX_91=pEu01 z)pMf#FdG~+n|iKw@C}tA80#*TQP33{5;W_A* zqa3}awwmM$K=vc096f<#rK|n}tsK3KTvVWkz)DJ3Pc*w~uTagWl%s#3m`s&3YnS4a zQcCDIAzIrY{ijvXMc|6GRrBF$b3|GFR#$iwn&$*cR+1#2h1!ma&JZv!3f+lnT%jMu z3w@>Yn>nG0TG?F$Mb>0q?qOh+9NQcLW=)_$r;{jsJDw^N5AM;}L(D9DnvevERdyx` z5hF>zbu$l6LY0H&1>qMcSE$ORBvzV!%ur20-3Z;3(&)ZE5#NOO6en=i0~-MtrD(tT z?`jDOs3OE=3?JxqD|b0co-hpG0SKrAhJTk>Ne_Z3Vcd`AD%E+93H<9ka ztU`V0$NCE4kSbZTJ))NFkM%83?#caT70Dt5QrYg=R|l>9)e1dn6+cw1!jP!kvJG=k zGm(3m++E7{=~&gM{o6S#oXp$)*>BMFb5?}l9?)z_=IMQI0{WMdzr%c7kylqC>>UbY zn#|$9{`on`nh`o|L$UcF-<33-GnxVds0Dn;XQ6zeQ~>wUE?~dp*TfOS+2|!3&pQu< z8M+Of&KOBbJ<{x#2$(?RB{NBZ0R7G*NTtHdedRN*zqjBkMNixnB@CCUE8%KgZ? zeE9J9W%arF*8m_qW=R|`H*IZMI9VD(Avg|PA@HTr8eY^lmcJg&IPRz)!`a5V{)6wF zMI7>Fhm2jf zw;8DHaf!pl=R^b?59g^k%yK^XEI%g|h6>`M;Ge**wB7O&&-0h5&hcoA2KvIEG5{-| z*rX^$@#rB@7kI0e<=)KLJS=zb>>)2yWK3;jl?#4JyAuzT+Am0Zkv^C48)nc?rGS-v zKEE(a)7t6RsqGw$cKTra4UWLy;6P>8;zP}{mAq=Jm)d_^HgXa?j;&>XEMWShre5Qy zsT=iwVp;JWi_^gi@raOPe+_@l6)}&`#=K;Xx;)aP0+S8xJQVTw71CMTm5 z-{kW49+U6I(n#CfpuEFI%Z)T(O)lgrhFdIVQrVjVPiM%SECgk;4)01C^U*>{kg~W< znDi4~EqdD(5Q20+Z*2-ex zTkv7Tuu#{yU6u!%R{Q&W379v`phdf%Y_`?sQNBavi=|T@n0@A~LU9iJ7%kjzhm^~d zI@YXW1YF^u%$Nqs$Y7E1DQgWcW@U@9ak=F=8ZvLVQ9h8%g#gg8aLKh zzU)fg%@x4JuSQdRe-55y+@5$cH?rICM7}U0+YByy&rKp22AWLI$S3bqolwY}S0q1- zg>~}L>^U~N*>gPHFyw@{!E@5v;6K&i0qgeh%6546Brb&R`n^`a6JldB6TJJHQ z8A^Hs9CF;1v_!1?f%Ma(ND>(J@N2vc7t@8Pe&f5|XYPjWFA9`=mhf_Bhz7=3>iaBS z!6J_9M3~9uilQ(JbgeP}cZ?>|`#OzFesr4Juvf?&&{>We)GJ&)!;Q(;01EcM*)>{#f`we5x7t;c-hNit?QIy+ zCL3;dp;HPsV5S<0XWFNLe9xk*8InDLo#a}eOokS}h{@1%x@fbkox^Mew#~imgO;*#`hF>;)#4ud{5WNc7Sx7!Ek=Af$^X6!OvgIr^k$Y;&z^H zXSgTwxj|d!dmBc!0_qg{u@tIkc=D*X;l5)U1pxdM4n%es{~ia@3*f*%YjFH@*tdz< z25S^$`kdM+e=g`qEfI<XuSMB3>@IV1k03B4$^v0L$^Q~`T|FAOGh%!0I=8$z2zlzGUw84 z8>M>R{T#>5TG|_C;Rsyj_u_*~Zg7sp^dlImQVcjNR)(J2Z&jgmwEP zyKhHdG#h&I7SaY!L%%lTX<>aLb|)GU)ouT}FQGoS(+bq*-P&=efqVxI87xy}Wm= z+vSPux}Bjvt(xh1*wZio|Fu66{zbwq-48d{B!g`3e1odi(2XFn)EB24EI(^+)a&E+ z6dhdkuC$Ng1*Sf(l8<;NTes5_*(n{oA{{hbDc%}#QmtVt;_J=6>UTY}F@u7B>z3~v1K{pb77JH`G?3$hUhddynx%4 zDn&`FuWWVg^(yx7uEe09v(2vVO8=I{zO}<*r|1Fh`Sbj-J8?H&og)uwSbt|tgdar7 ze(&MAjycZ}2IY_ZkoXGX_g@&mhA;Tyv8EM@ru{~~iw(NEGrbP}1GaJ_2w_Rl>zCl{jkY%bjfx#4h| zv4tU*i^#WLWbBPbxQ%2AcNSEN8%tgoRcPF5 z%dK`2(K3rvL8ldTT2YX``G`eb1-BlCFd|3AvQ!GXXyWP}b(uo+fB0!%=r<1qx?fSc zfV;>)Q|{a(n7KcGJarer>i-ijPB>+bzPbICn-`g9YL4|?)mBe~%@==6Uq1`5MRO#r z#qq~?2%nO%N4pS7VZP;zH+z#PJVCdwuJh5CvNbs-Cwx0rnQTR#k%{Ruk>Ata7Qn;#j9Sx>~a;ID>ZuL zn3wRKh_>o3rrbTPhu57!AnE)1Q=4<71pqtG5= zD6wX&s8}y=OYZ9Uey=?8ht5++05TV5e>j}gvytbQ{^{lp$WcF=_o){en}(a;D3>$3 zTkTD=L)Tak3(4hiHu2P2z)|SSQtd^P7nhvFPpJVK(T^A>uZ`orLCVY(7Jp@B8;p6p z<;W3$`yY24i8UfgSeL(%D6(nfVG#8Vz;4a)=gXp)S(@O;j@%ZAz?!p-=|Y=uqDB51c{-sZG+H7${i z$dhc+uU1}XR8OG6A|8((Gi(z#k(Ulq&W$tJK1N;f{M4r;1(;|Fdt>VG7) zTT;65m+btF=)NnF{U?0wD6(hituD({zMo_93wdQpIgM;ufREF?6rT)uBTAR|7=$$i zp-*wgRjA%oMIj?lwi`9g!ca4sg(oSA(uEmnEl|PGc89QQ@QTg_4-Y2FQgU&nLg=OB zZs4D1n^13hHO&32Y6lJXpNvr&?vF!pwHz?J=R*~sOCxdkXv)4zWn`pYLc(wB7xPy8 zhh$X6a`oC^tb-1}zwBSc{*bkLyIqHW)AXr4Awg?i`ZIERQ$RpEf#vflvmNgT-9&P0j>G5X;==c^l z%l9fo0Jfdisl?T@(g5BM03Uf8fOm2KnoSg?6rQ%MOAi0)4C9aNFGzt)$qC)(wQ}K^ z#29okO;q9^NQ^f0}6Q~CR{2!7cZgzz@)r-3p<@8#^>jUpV4$~GmHDZDD%FKOj$)6?ipLV#Lrf@Si zDCO-O#s-PBz~=Wxe$|#-kMfnakwe>(G7IP~?Rb(A;3!DAPT#mHH`gg* zO7>hEFkbtdI2*nr2bJi9_g#w;geBtQ+_pe8@bt0}B1JZT0`SfgcuPeorI_@DywHsx zZcRmK8n`ZWBw@`~Y`EIkp0ZW##7@zf)Ei)XGJ=v%Xi`57!fcCj#6YHrHP(>Q5&8~i zXVxETTl^~HS@ILCeiQ#f$BufxQ3AlkWzr|&aezsB_XTu#6 zj|t^B7|$%}EYtiD&j;qowxW+JzD)pWIrrp#H-|ivz)9;P+g*_zZsb3pU(SKIew@Lw z=5zheH1mr#;b+BbyeWUpV|BX@)UC{X&?^ouucr2cP=&%xm|0>TEb)*rk5(3$iI09t zU`H=Icq4?50yl~cI0tuQa9k_zW>iJHy=bt%B+lC_zl?>Y6~@9-hu!Z=m}tBp)XV(} za$f%`4|rH$6L|VbRt4ol{re#!`k`CpOu@*UG!$n!{y)Ss@5RQ`BPd!Kn;`lJcohdL z-z6aB_gWv<12vUR!myRHy-G$=ZnL1W}kvtvVPX{~&@MdJp zpCXs$BO4bBXpo=+vhkYvL5;B2?jpY{5iC1l%$rJWb?-c;qGh^^f+af>Pd~#3(k4Ju z736o4~7K2dM(_NqQb;b#a>UL)O8V|1R58S-%(W6-_-4EB`j)#yJ>!43Y7w zpb@ZxrVTLV3HnggUvjYL`&F^p^U&JG>MHS4>{LssHfK-bVp>YC zWc@Y(vRIWME4KC%)h zF&6fY?51{`A3m2%b<@Bw^Pl9wtt}%=V`*Y){XXFdLKk{C0@*%-WOf5TJE+>_3Uz`4(z z8-X_~1b&994gzlqU5Yapfa)`(j;}b_+oJXm>`gMGin^0v?_w^J#{7*e1HT{QeI=~3 zrWjEV_bB@_e!|BE%Z>s*tAgf7%BKR05oMO_nt5F9TCfC#olgQd8Ayx_3o>zdnr#{x zCAkIHAiN@Icg(kb4#Pm7}8XaLQvcL>B z#PUJqMThvZoq5>qBLZcYzvm)N|E?I?ewcg-s3bIbFD9y95rIkpNP=+W zDCkUl`ji4oBRZ9l324e%*bnjpw65TLhAnOyh&||P&bYyr7_1Cl3aUJjzNq=U5AA+{ zaUus?+}+KwcEPvq%fL|o_z;8(U8QZUe<(hU+p)g8G5-QuI1}q1nws88h0cbIKxBI< z8k@L=VaqdH(EMBoY_Q}gs+3|HUJ!7h{X2revhG_I{2ZMtWqWA?>vtWnH*q)DtERSB z@o#$jf0dqUcl%ntKPdi$EAIeFGw+afvx6i8*AFmfo&>Oa<=M}^fH|=!XP%9JeHM(y zbJ~AWXYra2YqEPVYm!H*g0$6~!}g=B(Bcgp$}~xtFBvEe+b>bp(YHvvUyJl_uc&F& zFC*Jt&Y$*n{Iqi#$&l9HeNeWsiGmNN^}S%9kjH$g;36fMK&<|OO2Ff&9%DcDJol=u!y-?hz+zP)-+y2t&9^-EWoE!D-LrPT;}!;_eam2xYTl3NvoUE{`)nHPxx}BLW%Y~zf_0?^BdvQ zqB~_{#Xh)R1#Booscxl861}(RHB#4-yTd@(qc7!F0e-_!;e2r_sdA0rI?>W^8ygIl z_XU3gCMG+zN#sEI$ov~^iEFW7*?Tw?Gv+r@0F`>Qz$N#2)sq-Oe`(DBBU$Ygg=<9G zl&P{r{M4RxkIv#+|K;py?a2dlGWMNc&c3%jSuP1Qgn{Rmvk^F@2KH^8+)0vqwkM18 z7fN@Q%4gR4{JaZdD1Ya@E^9yloB9Sw8wFXeU zc;=5Z$>p#xQ8!C*Ph9;aMd;szQlue;M)Xk<)bdso@-4%dCu$CU6B*eY(LUTQUAGK4 z05RZ1yrtmBa+jUX@?X(KzFHF*%VP;Ydi4S8nqv#(M#qI9<%_~|PZL0Lh-*jah*Iu5 z59DvVr{r`bG+;rhK8t`induY>XI#Xy5C zk{d?Pz8lZV`=9+8e;g^T>hOG#ph>4gN*9lT1yD{;kSIhAijVNjev1h<7(p{(Pq%Ox4i9Mjru$aBAWHYMb$ zOrV#FK-IeBbJ9d5RT*rhh6i0dudiFhAXv$$6SqxwZnn!ppQ;^E4?(jmTMMFqhZJ>n zhq6W5*ED$X6t+iCX-k!s`3kyfJ#WM@b8-r&EnvTohkGvh^^^q}iMN7mCxWb=+$t5P z4TeFXF_ExPc$Ek<21FQ|c!xRlZV>uI`Yw?{Rhm(49F)p8sM&3+=j13SBh~bE!Vu7{A97*!iWF;!|>&j#7#Ifk3lcPlpH3aCVzl zV;v!A-4N^od9RzrV*1_^Ld8F9!npv!%s?i-#$3~t=-i7NP%DRfkVH8Z8pcYlp!6ki$_-|SE!e>;V`aKx|1Hh(onQ^QYITV44vdNr1GdpPua@MDtx!C|?& zD)pnQTGOTiq(Fxe2tAd<&Qmb63Np z58P5rO61IXPMaxo81vvX}hA@A^_)R1x{cx7~gg;sc26{ZBxo zVLBl4+X#EY>(RSs?C&rzUMcw-4L7qB>0Rxn9^gfd-O3*DNJWP1z%#TSNuX%gW@g_^ z8Uh2W>#}X*aK5A85RCd-ia169j`ly|L(X$emsss!Mmxn}9(zOe3j(pCz0w6x zS5q09fq*4pKjK`|5xw4qP(Z}NEs5_wM5?@Rpv#Xr41+|cpKwqNNS_&R{y{NB^B88k zsE(6I>9ON%MaE*^{RCpV+4QIP;)Y78qud*4N!?`n=ABH2*sma5pZsU)eMga*p!EO} zo!yD)vRP6FJgRf^vbLGw&n_1Ep}K)24lh&%jObu;MWGiZEJ#-q4<9?ioGTAty;MyW zYQTkl9>~}sqv5EmG3qV>ivzk9?+T!mJigX{CQO*bynyZ2w?$*#hf-Mf_z?jDunew3 z)d$lE01l?z&tG@Q$KUJ_2PT-7AF!?x?5=;FGgy4js79@xB6+R9yF*&4+*KXYFr8NA z5)39)H&srwD^h8xa-vO|N=udN-7&3fzY+U0L)LN=$ZZEnEIP`(+<96D!SxF(E?j?* zS8RD&!c}>p&l<^t(lXvC?}L%#>hyvTB?M^vVlH>7U!z5ENuJ{L$n&W@yjW9mbP>k@ zd9SEnp`se{!sGnb%gWoBoC?>{erJDdUXh$90R}s7q=J353elN-*Nls3Yg_Y*8Yop| z$tL3=gwb-0Gg`4$8c~@1d;9y2%uIX@J^t^eru@9Lmsi^0h+IefyT+BgzP)^^{fd9v zejC8sUOv@+@xN_9ep>ld`+5Jied3m#qy5%@+kPeGQLcvhd7@R{K7-i1>5XQSv7<1n z3hfhey%t2WMmkMl9~K5YtumTpQWW-KLB~;XEmqqDv}lq%rRu@Id&@ zXb(k~jzO1xBuSBDnIRNy&g6jeZ=@g;lr>Dp@^Yj!^eoLhU%C;J@SqxIW|7dnmz)a=Gp3rD)4aUB_>skqg z0|HTdRLre;u0bf28(v*ruAIVs8hDg2g4R^D_JKu_Qz6=bd*pWQwv8~ z!kGVifj8c`#L(W+j>m1B)$1bVu1W4?xEACEV+73Lu#0jAnfXng*O7H@3_Yr=iD`Qu-VFkZewVKFbZLu6ZBI|0@wW-k2uO+o6Jw`yE-W2IM-ZV zdo8qCwBjUAAF5$ajw}r-ZL73nrPZ@O;jS!#%GLlOSn(^ST=5iOOe#@+%of-j<)u(v zhug=8y<7cZF z5CK@#23qcoKJG6AO*d)m*5=R;2O?uo$00{CiR{wmP{}|mmqZr@b4f!ey*YFV ze)UMpBuy?sO$akKhm$_@fVxz(P?)|l!F9e861OIH>}NtI+BoW#a|0A0`7!TGW$Wj3 zQC=0wR1|?S{nc~bs&ZGKMEElpW6uip!whBGNkq5^ZCZYSY2+PGQQ^54VXQ3-c zD9Pw@*(lr?!z{JALSy-x85+djEQDLEN_KJN4jsQrih92J zKS-tfP*BNT>2QryK(9F|LAy`j%XJh_41$rYfgja*--G&=^~wbKS;#Q6(epav`aO5_?&I%E`^1O_)w}wqw3xzllk!cpcL9 zI?W!>SW3w$#rV0n!(ckkt|AoKt>p0k$%>$f6A*Yc&s#aNf4X+g>}xgs#NDY-8<~WlQI5bF}7&8^f7mOYn4Lt~j&E$6F6P);~yqF4(`l_YfzFSK3d>-!s$l zcafoLdCr)d&y>GAO1X}1b!JEe1jI_0V0eWHj9Dc&FZH6iEo-P-xr|o8uLK4Xfs6{6 z^-Fc+ySkV|GqS%=a_Cb8VK?vv3D~vByAppz*q&@TgFc*^2~PI*iV z3>QmjNd5InQ4J3qQkI7oc_YyC`@#3L1oC;{GG%`V3GLY?#QqQ?F7R6Yb1@uyvS(sm z(wQ@&uC8#a*38`cwkJn2$^tFg)G_bU=Y?>*mldjwVo zx$jZGhq+RB;5sOSJLq3`ly0CYM_rLE7=+-pXoOI&aWjjVTB%1V@FcFL5iZC}{q!CYKR&EAL-!!8}uyec~0ZxLcz1$OTrFMea zaaB9+TXziQKB1zja*HcCZofai)9oj=v2IFGCHckzFXYuf?zk7tzud&Lv?>~8xza4w zhVi4_;`Zep*K#EEtlDx`ZK?6pr!0{NM{h`j#ZoHPE6ZceW><}dCfdY^EXOzQ6zX2N ziQ83sfuh`?)%86zWj*X6#a!{|4$yv=&-$i-KahffPRR4#Yz$ zj+LfUaa<^10w2|m?{$A0;krI?OECh6Sa)`dlhem z{%Y@jgcC-E=j)&C~EL3MXf$YAjVX`cXp$ z_oAwy2Zuhmw0~J;1E-~K{smR|ZVKOB2)B&}2+GkkI~jB1?oxbD zREZDhQ&XLusi!H02Br&PR4awh+|=uV%owAHlN2@ThXGHDYcm#$uZhnR|MbW?h5Wi~ zCjnHg3+$(XZk@R@v57rN;&Zi*foAC4Q&gG9r|)xmghp2wi`x=!P|9cBEZm-QHQ+as zShwYPjK#+jFLub2mmAD!{PEU2@>&x!(|O{P;5~S;lLdFv;>j`gSe2F9<6lq_V;!|R z6%DuQzCw>6GxWvVa?}`ZYH#ZnzqyB)y3)t7#AWI9@XKPt;_E%NFf<*)ZGZfzyfGDc8_r8M$N*$1 zAFDvI>RuLDVzb0g$-sCb`Ydr*Dt(mnNs2Sc+esG~H$U?+Tp8^RQZh&jBL5TB8M*9n z60TEcw^)$2%`u)Gt3);5V@uVNM_3)^dLq&N-u8WH$^=%;9qD~AI^@k&dE3(aaOj@) zdKD^fr=Nk+=E=kcm8ZZpD%TLTPolECU7xuccmLODX@N(P-hF}k*JvZPUET(G8x0zz zB=cmI-m=;b-R=V|asQj%wy_=Z{!CuL{G9zLFcu$8RJM<({!tdBIyUJV1S(%bG(!z26p9XeeI_`=?n8Jhl;@1rKpHee~@gs0|~jo z`?V@OPEnJ9IgSbgGCd9GZ|YIJrwWgw@Hh$!rShYo?~oOl^Kf~J0tP(|_)4k2ot*%U zl;6x0o}o-Gjl}Nc-9#V}bYuPvSK565WU*Ba^qxrDi&WbL8&$9Y&JppUVOEB%MX7qx zL;YpJQOWFpc=i%b*c2H%RGuPZdr>%LFtWb#Mw}vL7XqTmEuuxx0W;sFmR&so z5`U6}fh0s8$#u2#&0%>nY(jIRiTXKsO7DUeM-x#gH;r;)5hD283jVexCQGt-bXNGA zI`8I8Fb^dbbL(6L24vtp!R7T$`fU)k~6>%HbSe=O8D zQ`$ibAQP7kBN@YrO4mlbMu*PFsX~csf7#aAprIEl^wCWZEhf{w8tBebU zlM#3;+>th_K+lKR$w~=XDh@<&8;m;=jC3{{(NFk|*0JEe@j^3Z9I_pBi|}HvHZs9fw+`0mm=|xCko^#a+(ET?G|CPcNtkng@<6~3=`&^!*e25{- z8_aCAxrRAO56q;YoQl#zE)|DSk;U>_?&rK_3s5O+e}|$!q3Dk(`g~=B_XR1M`9Ck3 z#n|2FF0Pic{Pf0+`a!@v`7)cnAh-z{69y4Rb?k^T&WjfRGhMK@xkOk_x&x#bWGp6^~87kavl?o`ShlCrjA$|y;JVQ4S&h@{|Ut373kq0~6qqDoXJH zGe_vaGNA(;4c{kK;tJQxmtZU?bijyS!H=G8gw&Ccff#f&`o?XA_V}41X~O)NyEQ(x-jEXJS}B0cFP_QeG-p7=uy3CNF}{t0=Yw(Fw zRh!asA4i*Ae?xU$^BkvOTIB2{7aKNtYT{dV=pO!d3UxQvBf`QTb38M?mu~jB`ZY{) zy6D*akJMoPl`4y8ELC_w!}xO)9z$V5Vy4=)opuA~C@Nl9&5zSX_c=vF=O`+^R!oGI z&S(jVp+@UHM^P~qFgK)&?stmTo?Y~5(F(MM2qQ0oD{@;yPWa8`sa3_`=vSL9GW zr(@B#r052U@+1%x_g_-x!!?Ppe2a2qcDvKfAgghnO>(vmRA`Iy+0^wkf2cRWp$595WmLIRr10iGB@SV z!s_$wu;|i0f=F`fC@{P+xkDYoIM+*jhTc^2Umf3E_z;uG_ssNGF$4rodwDO6YG zdLgP>^C$8pv9~{RGhu^$7S>1-L%z_cXP#n4={G+Mb;DaLR#*FLFHJ0^DCER@1zc|q zG2T6{!tiZ`g%fH6i4ktY8*MS7Kc=>SZf#Lc-LHPki}F+QQ!5m0a}F{k;tZP5lbNTa z?SCd7)NK#D;#9yYpzWcq!qD$@iIY;|X9=$!=&&nJGEz0pP=o?OJRwm4GgAm`q8o+! z84Clqz&Mv4_Es~Q=qNIh>qp*=BO{y<+>k-MZpGlsAnaexXlqj@v0^o@ywR{2fg9++ zCw0X)R>ePXuR&&#?_`D~^Kr@iL}e;_^Qfr0lS%W3y)}~gE(z*dMl`xz_G|p=xz`pm zN<^{dXZEXnbKXPmRK_J-L5326E>FVG?@DxLSU`e`2_PD%zSs!FAz>{1u;?V-$RKT# zHeaqviR&xn+KRuQX20uGV`2Bh-iKYh6^RTHBMR+H;<$E#W-PqP$rYs;M}N|Y{*fQ4 zis2`Hv3oO7tJE85EPO0eRSDlmdKT%SS)^s@v><7CP}>oDm^8OeDP`$q>H1{DtJ zc#KM_)4qN!HSMQmsLCH3({c4KuU4x!`=-Q!eqwa^sjQrJp)-!m(03EQzGsgk{Aow( zky1Tfk+jczpTImp03VH0WRN`nAd?}QOl(e(-IGx*@C=7JA130E<9KgceDCX`A`eM0 zw>#I1MAeo|rEL5iVbXAzMfB<{++{Wu2^c>85UCvDD6@~-Zp=T$rGcB9cpqHrTf!pA zzd8Q50WbZ{Jm5dF8dGdx*Mp*7TMsxH3oorZhO;U5Z(OQ}u>aRbkHlP1W$@ zRCy%R7n_plkNGnhEq#6sx1iQ@kg9mH3tsZGQp+HdVnxG5^_YU-GoIQ6Vf|F4%c<19 z3Cq%(z@`~&Cf2^bk`;lnwZ=R#u=cx__IzKhi8!^-XT$xA^ro}_CGQ7$|DCs-a#(*} z#69vK1SEu_@b0f8hKUz4;0YOPQFUxsUXk(iRTSpp=r=z_@`NhAmORNxgIP0{-^}k8 z=@%b!PmkpbvLb^hqVg7ru%^5VdsQwAyUd%zaVt85f+X6(4R6t6<*Z~;{aLsR@KH#6 zVk+lnLQm(>9zsZRzN;I&12{M#aL~l(`J6D#9s+LH3&SI=`ph--T}~6?om({_ic$@- zkK8|&(yfLh2Lxpgyg7)#irX8ocd+-I$2jWZ@+Cgfqauf*g=_uh8hW5-I`E`An8cUL zhO3N)7p8_-cT`5WtnMfv-ss5zoJ6)R z4Z$}oWn>Hw0$TStpe4hQJFHszoqVZmxR0nO{jw-0Wrk!C_+ExWJIB=)ROZ;>3K{^; z*2q|7Dxn#w{_mxInTAC4R9lCysPZnd#HsD$%DfAB0vOaU+t5jLs?Ns$gk&I5@QxMgv?7Eywuzu70!qY41}5ZQoIz9+6i_Nkaj9Co1E^t%Gl5*M zBlx;hTdj8St#*@ErHBfI06|d+pvdBa;xd;AB51;%-}gCZW)hV4eLwH#|L5}|bC+|^ z`kd!H`{M;GM8lqy(HB(}h%UHnPxa~MdV*N4uI@pQY`^v??4X~L{a1e&Nx`AK+2cr+ zO4oAC*7a7|8`H;eRzbN*HY0m{hO0EJvahFCu+0TBpzK=gVaZk@37{m4Ne#r&GJ$5o z&J6{!Y|xZ*R6%DeRd+@;MKGsnPbdFth>9%l{etn4K}1oQ&5PI{dVEC8?J%|*D4ebb z1FmJ;L0!pv2I)qt@UZ&+sTE*o6S(o6D3`u9lrWtIgJgQkz|yPlI7Of5D9XrcLn4@I z1ylDC3Q#0$>>+gaW4)sn;XA186aLJ@IVj;Jh$minEj8*v6hmj<&V~!KvKK$KZ+;d- ztH^?iB4T`^r{65yI%6ce+egewA4@X52Q>CK%O^u)Ltc-|%!BKD_B?vXY@G{Iq{m}b z!iT4R^#GvSBO&i}@XB!wR_W$D|Asftpvf0yjkDZr@_ruy)TqtT-}| z{)o$5hi(#0@iTdx?q+g|bV`uD?=7B3*NkgW^TTAlx`N3fH&M*@yjXbG_pZ0@UGf=)Q)E(4qL`l4Kk3Y; z;(5Ox*WEn5KE7Q8WZ-JcsbRfW-##q0Kk2?ikXvrl{gcUuN{a38J?%2HKG}H*=8V7s zx5LzJ*YxcGx&0@w#j7H9jfD@_J=JwDb?uky*b36;?e9H(AN$-`R9A4u&$6;#Hz#fF z2z6*-J3`$8*04IL4_ zAH$hG5*Jh;LI@y|m89loJ?~OLffJ}y7h=FN9fPZiW?px>Qm~52j`5rzCo%=ew&}2A zPC2&ksqcMvO1<>|$H(dag!VSaA+>HuzK64f3eoBt$}5pyEw^8YkXpr}znleDroY|# zP#_g3Ryr%2MYc<$1ZDsa__C#LsG!!ZsM2LgRmKRcA3r@AFyE8Aj8<44+ z$Y0m-MhU>L<7Ik;9fmiQ_o?B9JM@a^YDMZx`Xl5C$%>hqs|lGqG_{bY=cz9{Nt;AO z%CwmtPwhv%@RSLGATS|lj=>H+)|4`)bOhe=C32VU07sHYcAt~sxR+p3#x$jN7Z{(- z*3DHPs~yH5XR41c{6^+fmh#Ty4D>3>qzCHuxR|@lc%f+|0_3pc4D!e7t78W#6pUUp zEM#3@mNd?~*CL2*OWva$ZNL)A5;g&T!^dK8)9JB}7wLhgM=T>u0YdGcKs1YGS_M{9 z`z=xBQ_NYp!o^rQjLrQ|fM$_eKq*yhzk znXiV!QOj4ky24pAbvsuc)Rp;kWwR#BV=6**DHV0r70tRN)hpIPD(RA{M6BEM^{Z=I zsVHbH8rr66+BS;=VLQS`VKZ0ZA^a z`mocm*D}sr1A^Zo4|eP|uBxAGoW1?7Yoil7B6_TUIv!H$+;M#moCR_VFEENoaNYCq_O>xG_6;vSR90bmWW+R-M3;vsd16 z74aoL9j{2LVSZ?;XPGKF$sC_SD{^GKrXBUgme(TuHm8}@7))Wu9y|L9x={(v#x>B? zS$FEDRy99nIvga3-MvSmlJHM&)sMKB|4moPSGOl z7PF&2#JtQ5V{+@CUcQ!oF#O7@byFCOdUY#YFM#=47{ffY6I%So{{quQ!!`Et3^Vp4AuNBGM&n-GtKRdbPd^ zE|GW93bg|L$n`-4wR*2puw_N3eSfi>L$+_S`~>HGjB4&@w8+Z+*&C}a)&+@0BCiiL z6F;*x_|J3xEY~k2A1EbmR*SZ3NmNWE!<3Ik=-C4G)33=;9h}G=Abxv^1b_9er=ykx z=&9Yn;a9+DwCuoa9I8g-ZBdOjntjXn$>F^;9XwtqvTDnv8KpMG0|Ik-E1k$H!DpI} zxZE_B_BIp4e5O8-g`VzkAj^5|6;X5hdECyw(WN)#-Ld<1YjOL2y)}>5$L!bf^5p-# zU$1FzPVd*jB^~x_1#iE79*g|ia=uX_VRv4gOfEZDh}*w$jkaJZQ!M|6VCe<#{7&@` znkT7qHl_-T=@)6A%`$IR7$0MQvbq0mv0gn56Ee9E=lnqyFqzwLcN+p8R853aai5oG zW}-5Cb?9t@u(>bGz2(fzO6$NH!ex7AUxg)W`lYBPo*JlUE@(P2`5^54LHdC8kTMut zCQF{YyGRvE6%pW89hG;B<&RgyV3I#Rhbtl!}`^Ec!0F{{j2G%F|gQZD@?-C=+;9G~i0KOT+%>7=2Fu7Vat@kg?p z?cx08p|aO!gS_U*Q}Mk%Upm#msl~eC5oO;g(MMuF z-T||r!?A>&Ptz9pq-dOdh9|5O^mc5RA6isgS`elVBO!Hc74wVm^<(;Ok||VXey4?f zx;fZ)fBg_JwleT>BVr_8pt5&6uSNQBs1WP@4etG?O5fc`t> zN+~xo5$=^u0iTr^@Q>pa!eXbbc}qKe7b*KPdMP-dW~Hoj8l91kGwjaBO`vMft9d-P z${M4HU$CGryW4L!y;LA`L-2YBM(mS_1WMb#@9E&uIXw1m1=b}<&F_DL?d8+xWFyYu z)GKkVSKgIFb*L&RC^@+VtkL@A5wpsh$$fI*nM$}S^p1BO9Y&SNGONtdO8cv*HRTC= zD}eKpuzMR4r%LgFL*Khw;={3KQxqAFQ&V|rji+F|U7**PkyvF%W)8u`n{YQcktPOM zmn6bjD01JLd6|%28IM$RaQUOlhGa=N8*#VbFaRW+FWW|yG%qgQ=4@`>NUV#j*jnr& zCNZi{5FBSklVoX>QW6}4A`8dTz^hCS#8vkpW=-3r4KjZp>gl$O$X+k51nC{R7&`~0 zvy4ZI~^ z1l`OAMC2_KhnU>HLfp6+fIUW;9}v8py(BWHiAsOb@apZ)Akm5W?!4|I^?_-G-j`37 z$aB84jLNr_XJ6_=2`JaR>ScM`{4T2JC8}Wad+Gqo@E7>cVrqf+7up5RvTpYWvY9%57?UebKV~Vl`kyHM3-sZQtB17HhooF?PYMlz7?zhB+7OF> zK|bk|v3*P4z(~NqN{C)e5xYnZ9=JS++GW#X19s$&Kwp;<U$)@~Ed z{;e4kg|CO}y~_9U_->&0fz_*Iuq~1a+nz4+%gCfvcv$5`CcPcDcXVFP-~_^43Z3a}iS5WX*L!BZk|ESn^YZ5V^)7RE1{0N3{XXBn z7cd{SoY5--&99{9un(v&EsFYdC3Cnzz>?uhVgoJ4N_A%xyRyd$ilkPe`I+|hMZUx* zxqDd1r=$cMy+8zSdg?Pv(IeLWdB=r(9N9^FAty>F(hEt7tYa5an7D4`?X{#A^4R?? z@~(aKXCeLZQ`oqAO~)=#Nqd*}G-O7U?h>sg^E-6uO^Rf?B=eH_T3`zuz0>W_?X|Rb zDT8kWX5D`+I0cwURQYR;-UhW{%>M=$2_=SSo0B$$oO$XkK>_u-e4O}g_<}Y2Zq;PHi zdaNzQA9Z~)+<(p#^giMKxo?g-JONGyY+3=sUmvVdWv%?Lm@1K1SnGF&`!Bei!Xx{4 zPZb`O=UoOmR(g?__bvS>6d|kjM z8`1y1fV6>G3+}2T`gc_=nd^6t=>I}s1}~`A>_6Zg>Flx9NAl~XbwX8y1JDJk;#7rm z_-=$_2iRmQ(p4VY58Z(h-D;|}I`vgJKseJ5O{!T*wKa%lQcWzNuo{YtP|dhBSWu&e znQoJD9@E03e3TxHbeq200bJi32901k@={&olbX-eY~`=U=mE^}6>h+(c4hI*{$0P3 z`5-}Jpo@&OD}jK1p~$d>MLY<*3kuZFe7WOu05R1`y~r$(tO>BMn^_;pU#kH|!wEF3 z0+kA!9(H7>VZ~g()9mjb(ZBoqYB638P)FFAqnnyjqMBMD9s0M>G|Jx&N(-cK-t`Ka z=1>!f(BlDlmWC!EayyUdWePCYk8mFfNHgsKIJ$)V)e3SUNw7x>JiKP0LsSX$@pjqjWKx4+$fiM}aZ$ z)DB@UsLpBl(qsRhL9A;a)2W*M6V;ZuFCeRG)LspUh22Y_x1X#7{WdBz%L3A;w`5HO zl@i3ae)ow$n}V#;w<7slbx1yDBTS+S>1X{%T@)<+N;ZDYM}m-nDz(MU(ystPT);uh zto~{|)qW*yS*1{K^%_6RkFSzc3L$5{AbJ9+ZuV}(xL+xSF_s{Yyk3XYXf-^T`J0vq zinP?SSnIuT|2mBd^==AF+)$}+K%kSh_gjDp6cU$ ze!+qess6l?{ky8IM-o#%(6c!;;VB3s{H))fYOme-)V|YR3b$>E5Pd*le1`eB zU+|!`7Z};Ur^fq?5Y$Jb(sGGvIXyb2i?&kZ(nxW8cBW$~Y^a9`D0H09$Nhp1X+tkO z4bp3>#~^Bu%o*rVVW|i*alMBk`D?<75#aicb16%h9+*{gKp+)0H8Iz&SJ0Zmgii`) zQ8g(T&CGae7@NcHqf$c7E4565>B7zjseu5UYN67IWm5+j5~^Kcy>MzTFVT3hPUFS8 zG{Q>56mx)#Uto%}xB`Tjn*yjg(g9D5?z9{@?B3^>NB>LW0biB)XP6OnX;zomkVjR9D?); zYNCh{p9qA3=-5Wxf;{`Tgk^@`Z2iDY8QMyfZ%zA~+(R$%{SVcB3HRrz`xDgtdE8%!5u~zA3M$F(&_vj1vNnEf)$WbP43ERDd|Ex%oT_MF&k?{|qnMef?nl-q06%D?t-}D~@ zorAH)0xNq1>9fPmWqIj5(e+_>1c&>`faUzs-~2qP)vn*KK(#uV9hbuuBuPN6x>$i= zImDr25*sO_S|xups?|U75=llU24Fe2W7LL#${9}C;ejB!)tsR2Tl74oL=?{#GtV2w z9#1~|CI0hDX7g|lRBcx<8c{hhnu-GX^_2B)qGD7Ky<-j!_$|6!|MuICf)j(AQBsh+ z+o&umMDA+TCIu+f1bDY}-`BRRfC9;fx*-kTjv%5y>plx<(1o4}xI1)zm7k`E!=j#7s{Y5@H zuw(TXlE%hddWHVyQ~HZfn7eSI`WGO$&q-a;mYmx)rNMZeH(GshP}CQqx)2pcWAcSO zN)XE|LhOQcK>2h)Ary5#N1YK)T)rLpaVF}DHe^?LTI%@pXeLZoa-|G|;<~sfl^)4i z7w*%DieWaX0LgMRBM*}N5|FtTj!Uv*M+~e$>=YI>;#Bcu6}CW24x*Sr__R?6x8(xSnuFlwLUq2Q^F*ObU=3@5#_3gMY1PJa@f`c)JnJ^B9pT}c_lgW0+L#eG4rhv zmn2#i&P9^HGGxq1`!)_a-7T_OJKBavj^ebh;1aK-*Mkpwnfd%{t(2VVSI_%tBv}8H6 zOv)Mp<&ZxCLWu3TD>0qCenii<9Vqp3RF7zW&T&=; zi-^?fs0{Q&yz z7h{C?a@j?Ag}Fwv7bq)MH3y4Lo|mA;ci2P6@soz`+TFAjJ8H`xNxFTJi739qxkW{ zIg~Vt|EN+s7{z}rd`jKFP`FV2zEZfHU(AY0(~c5MwBlO#^@J=XBf9Z72UC_3*r3TX zk?YnRsJIVz;W*|fO!7-}sDiumxl%fOS{*OXI>kV zC;wW_YxKrs<8|3IiO@OOHy(HMb-)aO`o8?pMbwD3#%b~>yU};jk5dm$X!M<%x;7_`F6@a* zQ~2f$C05OfIn)3Z+%s7Ao^hXKel~ADSfcEAtHJAu=j6RH|1_)w%tA8Cm)%K@r4ztkvB}DQJV6nB6_KJ8H7o@ zy@MoaDT;7<7KELh9GRy3cd5{lq{D2BwxtWc9G%tnjyU8O37(3ON!h-d#*Fw8*<8+H zi@Eb>MHflbYl+&-ra8fMu(U0ElaSekro~DDz}FX=Vdtlo)3Z?3&4Ga5fbf)L)oy+{ zLocY>j@rMqU^*b5v52`Bk}$%I5908#=Q2-u!Ipazon)UIaqpE=SS);N4>B&R=Ad+v z>^W3#$$?^M^}xrRGmKHshTXyS!TJe zIa>!P4dD0w6DP3i#Ll@&uQYFbTaq<69C3A0E4@<_1 z;JPS0o0Z8o8I)S|%$%n#u}UlRqK`&ga&F7=spa7f1S@tdoh%ky66COiRlLhBWSmT} zkU?_T1EcpU@E&|iVSy1pOZ0oPmyG!LMC4TVrhS?aI|UI`t`X-1iOn66NU!i*5r>cx zkg5^q7gYXtRZHUf!ikc2yFvhFiu{?_e43nR5vMico+pr>yz#RmSSS)1f;~q3i0CI_ zU}a*Y>{Hg7N9uD4SzGo2AK8U^e@S+t7T>G8hGb!!{1L^ZHa`A542)KU6E76bVO&-j zv-g5Z9wfi=DEb3WLQ|#rDHY2>hzg5LzwVeK%RQ$>rMRoGKQY}Uaz=1~%pz-9^$-T# zTYz@0S`@VlNVj}&6Cpxb8EF{8irgahyZr1qY&V77AeJ(hZZ{Lb?GiScpwnbof^*UN zjKYqUG@ZEWp5FtF--p0yLRO-SOr z)8u(-2Q8Back-ZgSJ-_;O>(5H)u^2=yKK@oBNF}2ZXT?bMLnL&l(J0$n_hxXz*9)8 zE@x7zfS}<(&UAiDNX}_B4p%5k0RU@j#3k%ti*HTykgS48;?@E(RUlQPt|HUDXSrIb z<@O(~*zf}8^2@d+D|Tx^cC}9wMeEHaUyCEDC9#zhLFKrRr^a_?QK*$NL7n{ zm^&|3tq~Xc%8FHGs=ke?Pq5req-w%H3(SI@L8Aq#=Jz8Ge$#)ZQ!TzzrDiJ;rRF!; zPZ770sK$$>X2}^Jm-L=itg-+~g83i7niDqY7c>Of9X*lVMH4E-wCt{mu!Jy^)7K(^ zN!bVXh!)?!pn_5pasxe&xFZ4MnoQ3n_1(87#fU#9jJd84^mYqHn*T1dGZFh3sw3lC z+2=;>U*Z0r!A|Q3{BlrVgxo^y$B9G@kdc&qX4F2)Mf;AuQSLH(T~G%>pxOkPxjh#8 zE3o{LJd3p|P({tkXP5(cl)fF9Zfnwe=FNvnOjn(}W@4T?`^u8`sS$SstVD6xi2y89 z0Fs;dPox@TGr`zOW=|FM&e;#Db1xxwdKIUt5)|hainju0Pwa{02@^HB$>7-_zY`#J zIp{M95g?XDYthJ}S}|E=qBBJC-bvK1=yLu>_Re_zeq8Fr%#3ZuiuNGqxGuyZ8heCVCR8&W_P7Aah$(wNIJ7%D7D zpMe6m(6SV<=g47HB7#3p*%Eg6jzENIJl6gJHnq}+RHv2krMyHX@rl{!yBMLJ{0qB_ z1nMGX-`J<5*M;K+AmdT=>#%diKuUVO@Hi~prAV@M_V?0s-w=uO!!ky{HnYz$Y_qo3ybcc@NcCHEsTR$d?u- z@9MO-ZQ0i!j;Bc_MIMyAj`!Zr`8;_I?=VH=d2XSZzcYI6vWY*Iz9olH1fhH`XZD!a zmH`eTrypH72sbYr=YHJ~GAcjhdcE=MwDx=?2X(Z-cR}3 za(@BEJ(F|iR|9V(m>fl>-X^>Q&N0?pf4 zrOqYq5{kna6&n><$?F4$+q`k8*?AD)K^RtPlswx3knk)w_3T1<_9XxTI$ig@3h0rO zm)$8HjrHT1<9mf?6n~MQWN0hG7()><6+@Jg5bfT2!`&0 zz^8THM( z^gEftiz4)EGaYZI-_ZnkCs$-?R}12R9KZ^F4G(6W`NRmlO?gXwrF$no2h+lF8&bw z!oS%npX)k4kdPdS+X@iy^u~0#4KTgjnD={LBqp@gH|K;Bg{O^hyMH?IH}GI-7rLi; zZMrvUbx9>?j`Ib5Nm&}>hTJnIcfTmh?KYmjaykXe-UvBoT*jR-U*i3Z!`r5yL;MYQ zYSG}S{iYWLoqdVW2YFUD7I#50EYm_zZyN8hKwBzUU#}12-1VTd)GGvxkxy)w-5b>x{#-MV!)*nm^V|AS>6fWY` zKmuSj;)pX5nsp-jYZyrR69^6-TbNe4oNRFrb0k5|qjQnWmqBN2A)AmC?5#VO2ESorCqVy}X=jFqn(aDm8&B#xSRhyIq|SoxFhB3CeKA5a+o^mFsrS+To? z`k2j=M&C?c3rLRW(Ew$<_MdqX9 z=Oz^$F0D1_2O|DfvEOd_a#x!!-6?uAG(r)>tCOZvf>Y<_yi{fOU@cK4wQqE4y9jmQ zncow^j!HD#n@cT;6zM4o+pQZ&JTw@!q87pX zO5$aEmmb(F=M@5bzjqtYwUlV;Ia=b_Zm;UjD`62(4wa9xFVBklJc*;%wml8MOwt}@ zHjfva@`y-Hm6@pSq@{J@&r1hvyiJvI5|C2MDqYqYuR8iOA)j9IAr0_vHgajD9!2>< zz>BgbV;;va^r+D?$7gS)(TgYrCt`$s>=y#gw4%np;!ANwbZyE6qWUk#?^Hfg8 z2_S-PVdt7W(gLSQFL&TI{)fZTpRP_R4-TnkBTCS7jO%JYIAF* zIL<9nui-_5hl3ZK`o#Fnc?63V7bl0bd5uy$OA@=xkqg|u5fy9i*XDbYzOT|qAti=S zcc*-vp}Mn@AJTw?${L;WSGd+T!n!*X(^IIT|KJ8YWS{hH5ar8C%&XLmm^A_{ga&HHHpzs{nlkOPtJv_tQUZam4+$7I!QRqWE z2zfqv4~3DJY-viPm5*D%gCbLai&vi?i(9aq@C4_4%U@D$l34j4UFmyV0;IXV#q)B=47pLk$Cidtt?R%eNSbeA7|p+argvoY%#6jaP9?!@rXZ=vvJShyM^XxXi= z(BsGo6ABx(sne>wz?X{`xXyPTY+2qZdX3ogL`UKI3zh~x8;6SQ8cfp^c18fcLzU)^ z-;xDqUMX;&2h3NnAw~@P&P%ek$Tw0({Kx+SUXh>{+JAfu{^Q%T?MJ@rKfWB+a~ccW zyrG@mSSGw!vPGy!L8rLjh$0n9_Feo?@9Lq0=)=^q;KF4d!Jr|KAfP)1W64gFomofK z5vTaOMi^~KhgdR~_qpCzti&>3UkL1%5#H-_q0hZSV2i_7^OKqLI3xc~A^$0++gmBZ zz7Q5$Ndx~v#VqRB{r`b%jPy{MJYHYRu^~HP~c7KUT{HQF5QQJu*1jw7D2hf-W zVe*(6wb$_!(MH(uB7Ih0lIT9|l0@OVBF;rizRk`Lmyz^a&L7dz#G9xyBJ7no9LCpk zXQl9@73+&wVS#G%2Fk#glV7a_wU7V7Q8fNG%~XnP%aE@1V|G9sml-(fg0u24QT;?K$`BuHjwY7<*q;+db6{qHNXqf`=Y@FZTW zCCS?cU+$0gN6%SkCGJ*yEhHGj4?DLM29n)cc0q*+1r1_^;u7t0z=;2ykLfO6k^`lw ze?^?HBYjpzZvG??$v&Lva;;9XGKcAB{x?L7%8xypFO#3A!QD6WH9<#`30f30=nxTT zry%8ArZK(VQIrlEW}>I*c|>!TBuhBEVLy^5Vo-ifBcR3i(A}tj96#oBjUVFysR`xk zC`rRq!AV_Mk|cyACkMPbY6;Y^qRcGUaP~T-lV|)5Dgusvl#)pa+AA?3HuI8?L$rz( zMBG%3`294RUf0_Ns_fYsqR@v*LbjnO*Jx%m#oZC@&@`7Og1}(`u6Ra#DV3l_GU72F z1DGnNDIIG2uQVii4?%s><%5Z-GB5Uc>$qXY>z}zda}{l2Lb} z%s{MfC+rir%JPO~>XYq|-eb|D*30{Y zdY!Axm1z90jYBB(S+YAUscefF&8Z3SL<0h#+CP&Bc>;AtZA7HDgr3EASM<6?qV6vc z(F!buSTUec%1hq6PlF)W0*63?yk|}e1Q_XHA9~<*qAKEPdpF9jz*^{SZ#OU6n!Evk z+_I9H?>C;&O3yKf@%V zI=4`C{7u}}R=*40?)tM}b#fJ}!=dfBB*8%swui*A3W{%|dve5iLq_O~0x5qg(+faT z;pI^A;|qz)1#k+E6kQ4xvl=b(EFk>~a#6sutmF&ArAgm*P`U1#LuoN>!AsSL{1^4H zTxmyN*B67UfO;`4ckHN$J8^8pnPOVblu?+Zjg=a~QPFd$F*>eT?_0JmC7IM z1l7*Ug7kUOklM%i-A32oQH+%TiV~7Qfrz88lH3OJ{zDv;oByH9Rk~w~DhH44H~l9e zXKOGKZia<_1K)4*TjpV$#sNiV%EQpguS9z&yvv1%VOXcBVRRkDPnfpJj z!r5P^R$&4)m}q&Kf1~y;+7>Lu2Dlz&`c+70u#!Db>?8@#(C-`RsW+HjA+xy{jT0Eu zlj(NLFX9fL4>;=Az(lUZd#MVLa^=V;3G2AR5ValI-uScmz{SCT5`5^nmeulZD9-SaV0Xn(*C z&CF#b-YD*w(J)&2rF(WDXWW&{5=8Spf0DV)v@M1(S>Bu6cjTu>n~R~p_ED8=biC*Nq1-99e7tUUd1uM%p zk>yiFWb;zSMbsQ*I+p?>$aVfk-8!bf5jvVI+aW-^JW8r{%^Z5)c*0xHp}VYu?U7+z?mKX2I>E3RK+Kbv+E&}b#?(PP)6$)=^K$_5=d=v;%byP1nQ+CN0QBhEJe3hW z&74)0gc7+*v=e-(oja>^R#X<(EADIsEEe3^7`QWyBralga03NAk62bGaWw7XsdP4B3^sxRWl8?nllPbJw zs1thfaPavfeDOu3cqd;(oOj4Wz!$?@JN-q+>Qi4F{#G0A|JcT%W7@DM{O9@)9#g-4 z&hh&1tX7>-&IZPFUt7g{b^oIq7K9|9x_cwIq}i-LG{kbYS*6WZ@iw@RStkv5LysZ* zzgxI?g16vg7|X=DNbQ#t#*`{_#={{P?NCLec&${icDOrQSHah0rsZhF`1q7?;^%F{ z-SF=Ml_2__R@ou@_nc}ot}>lFF(zIK5?iCs*#^!hjxGBmQe_pk4UJVl8_0^THRb8aFA|bER8LUh?0H!BxBKc}m!1l1KLm ziOPr?*=4CHr`;Zr&%qvP^rpjpvkzLmwRV@Rj`+A^{3_gTB<$RkM8{?O)E{IEtup)H z#>~GR?mwBGw8|=en;f0SeGjW0G&4KdPjm}H>dzBq4JK0AwO6{8fe?{`w9^WSxJYl) ztA>aeZP-bD?96~gY6ea#b1HiVmk7?GaL-EIwkd}1QmS0YF)=Y)Apo5ddN?pVC-h*T z(rM6zc1WS&&iDm^;6HPy6cza~1w(i!Nu%PlH)NZu=C`T1~uD#H= zW=$2!RfWXRHPzg=WiR5X7|sg6t>~PzE=i0u$seWfK zy(@4mix2-JQZ!&fcL;wbbrQ7oJDqWBL<9$X)OC(jBKeAPD)Ov;M%on)6Az zGFrN_p%MpdCPe#W4hcCMz+Y0jOR99g$qW8-Pb}gI>9WyH;j&f6{SxJRxO6^}FtdZj zn<`OM(fwe}r?LfA!u2w5xO2-Kru}xx4t1drBZ;w{Ld9PN$w8l)NpYAiYi2U*C<*sZ z$;AiDL=q2dkyuKA}Zmu|kxe{9~K!7`|(^ZrxQ_N98zvE}*SY1S%B zs!`i#>HR*`t&RnX-wirP0o?K3?D5Y)2u0gO;&3SsGB`nUK*v1N3X2c~+%g~KZ}|Q|r7$>;Qf*~fJ=LYQ z=G+@#wji;Budw>;f3V*N-lf8TW$0z;hSmCB#MzEbyPxdK&{M1EO{930>Wv)B0J!cA zLTO`WI1H!;4hc zYn7v&n9qG`?4R`9vxp7-viM2ar6e@GVKHg>>*094^mEKGxhZ1SWbgjQTytsj6)EyLsn znMgh_z{i~1_J`uT0pa&3gx_kVH2lC`EBBCxi-`CLb=YDrF{wXRy?`>m#|yT(IlYS5 zKICHiz|SJOb1Xg{lgfal0;!4XXKmYz5tZWF+9ui5eHZ6kg!1GQ3~EtyDo*&$yOV$1 zrno1g_DP^Z`%%QwXTRF2k#Wevyh_h(f~73BE`$ zs88YQH+2#hh|gfc2X5pNzUX|_^o&|`eK6ohGy^W1IxUzZciKp|>k(1566YBXoTNdL zkO!{?IPh#Z@N>~6F-_tqW6vNzodBTFtR47pqxL=NkL&_vzvjFjlzhj#(mM~Ei(A{Kk2eb|sN{%^irvQqPyyq2 z#>7Z%BeNdC*7uoW8M@a)#tG9j>z-Gg59|(EvzyV zLra1$YiZT!vr2-+&1UwhkaKlE6H84Mu{kZSI-Q<|oy}%n->xk%7B8j6Rdh5DRw1`> zXkp3`w%!?vvUZp@^$-)>hGkYD`eeA0)I5m2OB1%#ZOdf<5=A`Z};O@MIxv9H;+!ZbKrS5uh z_rryqQ+Iyux=KbgeIMN;xDMGt**6u&f2|Jn`HY-gI3T^>W-SI!$v;C*^m(F2BtGD- z)9JCb#HrK&!i14&#en2pa{T5d|MdkEBl!haAmySwysZ(R!v!giWNgD3n@P&p(w5TY zq#7aJ28uZ9LzElMS|)-@E1Ot}2eUPihH^~BxhAr%eJYaF$}Gfi^qfKj%uQU97tUYJ z;|W;_EY&vd2{9(>${aDRisqnE5 zu0bO>9glE2ei12sBU1c@;%z^r@nP=x-*=Y`yKIRj!Bk@U(?M{d=fT-ar*{%PC`EW? z8u5nEZu@yGNvac9?IhAeisl^VRO{Y&`+;=iCrI;6-lr+p_KL))+}WGB^SG@{;-#_Z z)a5(7kU;F?)~%kHKw88tWyB|A?M1@(>ObT9@I|C-rG2s_^=jQL`_wR(!ODWfBQsmtr>BS6a6MEO~-2CBCj|R=Es`(=RnvX04A<(?l!|1vlI)JT zpfolhd}gwzGDB2#E2r96V+N)(lOn(^V-^J*9F%&a7SxzoFb@8vykY91GY41v=HL8l=xQq63NYpHU^r{GgiIV8;m zaMxDr7OxRB2AFt@_(duvzAgyWNaac_TIKZR-6OIh^5LF{%Alkt2CM53;!t!MMbq?K z@QTSs(VCRvut-O}Nd9ZRs5q4^a-LBuMqdwMxqK3geUYt@ZOGXkaz1L^S%0AS&_vH4)gQ_& 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 MB!nxf;h88cOe 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ϟ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ɋYnfzE3g_*;aP0N7QBKtuods( zeSC~PI4=M1vcTu|>{}eb&-fjGAnt9!$i8n1-2{kEK|P=dc+sAtkS-U8l9XuJ-6OQl`^S7Vjawg&3r)U&pJ#zH|2Oxqx&Cd?4xP{yJS;wyZQpYR9%L5`>X>$CW;ET323639diG(ros!^P;0|1Zlx>l=(=7>*IR z6JszA6EPW6Fb$7kHs)h7mSH8Y*W;peb6QHO@tQbVL_)Lr+|RtI!VvF&M)z93yZi#$X&K zVlt*+8Xm)J%*SFZ!%D2hdThWZyoA^A7PesrKEy8U#h2KJ{WyqUaR`Tzb-nc?4+@|N zN}v?Vq8uur8fu{)8lnlBq6J#xT(n0=bU`=t#1*&-{V))NF$}{o0(W8z#$h5RV+y9> zG0et%EXFdd#9FM!25iDhcnxo18+PDB?807riGA3QgZLGPa2Q#iv3}%10Te+AltNjQ zLnTy0E!0CpG(l6eKx>?f_UMQ%=!TxS0#~6Q24XOVVK_$MPK?1gOvGeN!8AOE*_e;T zSca8Yi}l!mO?U~f;Vo>#4t$7R*o!Z*5BqTtzv2)MBkQx)k31-VA}E1UD2sBagledT zdT59yXo?nSjdRf+9nl5d&=XhSD)hrZ48|}F#|YesF&Kx5n2afyhQ}})^RXDquo7#r z9viR;FX1)3g>Be@53vh-@g??QKMvwo9KvB_ea`xk2L(_BB~S`wQ4W<*4Yg1Y4bcQm z(E_b;F506bx}Y0+;tE`aei(?s7>3~(fjcn<<1i7EF$L4`7-nNW7GoJ!VlCEV12*9$ zyoR^14Lk55c405R#6IlDLHvqCIE<_ttRHz$07Xy&rBD{-Pzlvg3-!H8W zJvyQbx}hhoz*Xpnff$To7>*IR6JszA6EPW6Fb$7kHs)h7mSH8mD48~z1CSwYw;W5m{d@RN?ti)QZ#|CV|OLz@$VHq+|!(uGQ8a#uIcoDB-D|X;x?8VpEkAwIP ze3TyE+p2hRngctD&UdLN_2k&AhKEx;3gU|3KzQK3+0SEC5e#f6Uj4Ye27rBrJ z`B4Z(Q35C7WSoL>sE8`4j#{XT255vPI1|m#60LC#&c_Alh>LJBE=5mVjw^9B`r%q! zk0BU_n{g{{$DJ6Bu^5kuxE~KkBV3w(`lu^&I;XZ(gk_#25W&IxiNH}at%il8`3qBP1P6BSSy)ld_4P#+C( z8qUC3Xn|H}i}TPP9ncwF(G5Lt8G7R?T!R6)4uf$6Zo(}Xfjck?cVisx#Uwm{DR>0a z@i=B<9u{H=mf=aP#yYIWbJ&Q@cnPoK4ZMwQcn|O6BkaPb_#9thAHK%{{Dfce2mZo8 z$oiu16>tLbq5uk`7*0efltBi{qY|p325O@oPDNv!j;3giv(X0Uq8%5R;w4Tjc~Ys;CzmOE zN=9b6@)asps$8XNwdyr$)~a2nZoT>qPHotz@o7y?KjX}%XEkfyqUG7GTDNI?&bjBE z->&@y7k22_sq;l$3U|Hul5UrF@6of@WtU&k`^r9775-nBtN+)#{NLZB?=}7U54d*V zb=MCXJY?t%!*0Ck=Ha*8dRyTU|9{ft_W%8HN8WMgU86>ixqIwA{m)zf``YI=JiqaUe_wpO>?I+ycifaNGjNEpXfd$1QN&0>>?I+ycifaNGjNEpXfd$1QN&0>>@z z-^l_m7k=f{|4!>YzSiRwIBtRC7C3H!qy=7{+Wp9{kkq^{nU>g{Osn2=`H}K=F-^6* zYE81fMl4UY%RW02h>+TfuU1HiJrkBKY*vjPi-DCdc zIL{fKlj|uI?bj>T_l{}J@p1hze@#qR&r6mMi22m|d&m8_E|#a(fBS>U_Jd>jo@nRP z?*ZKq%Tw!5mERc0ORYauo=US!PmY_)r_$8=Q~6YyT4ySsN>l4hDovC~(O|3JP zPo=4K9?10jSw)hi=hyYScJ-3K^YlmAWZCfFvmUvat9(VaWL<{^i9}|3znfJ%*`{-{ z$&t+1`iaErnaT3-Iqf~aKUOc1xcu)#qDPLS|(Ov$BL{nLf)aq{9+Ng~mVO-j)1 zM{8;NXCiU7{GbD_mHnh`mPLugiRxM_|32>R?YR<(wsAeDDi2a2Q6MqV{@!~ikr@VSLQ7o&GA_WVNHJZHkcALidRGtWZpt~J&GOgkmnXBM66YkQvY|05a0 z&o{7FkQ&-Nrtb^{S>xOdqsuF?K3SUloUYBIp`En_nd*89?yj3iv|{%)RT7DdsewjpKj(s}cxe78|o3++fH=ctV z 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 z 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 (3, 2): + valid_opts.insert(-1, 'extension-suffix') + valid_opts.append('abiflags') +if sys.version_info >= (3, 3): + valid_opts.append('configdir') + + +def exit_with_usage(code=1): + sys.stderr.write("Usage: {0} [{1}]\n".format( + sys.argv[0], '|'.join('--'+opt for opt in valid_opts))) + sys.exit(code) + +try: + opts, args = getopt.getopt(sys.argv[1:], '', valid_opts) +except getopt.error: + exit_with_usage() + +if not opts: + exit_with_usage() + +pyver = sysconfig.get_config_var('VERSION') +getvar = sysconfig.get_config_var + +opt_flags = [flag for (flag, val) in opts] + +if '--help' in opt_flags: + exit_with_usage(code=0) + +for opt in opt_flags: + if opt == '--prefix': + print(sysconfig.get_config_var('prefix')) + + elif opt == '--exec-prefix': + print(sysconfig.get_config_var('exec_prefix')) + + elif opt in ('--includes', '--cflags'): + flags = ['-I' + sysconfig.get_path('include'), + '-I' + sysconfig.get_path('platinclude')] + if opt == '--cflags': + flags.extend(getvar('CFLAGS').split()) + print(' '.join(flags)) + + elif opt in ('--libs', '--ldflags'): + abiflags = getattr(sys, 'abiflags', '') + libs = ['-lpython' + pyver + abiflags] + libs += getvar('LIBS').split() + libs += getvar('SYSLIBS').split() + # add the prefix/lib/pythonX.Y/config dir, but only if there is no + # shared library in prefix/lib/. + if opt == '--ldflags': + if not getvar('Py_ENABLE_SHARED'): + libs.insert(0, '-L' + getvar('LIBPL')) + if not getvar('PYTHONFRAMEWORK'): + libs.extend(getvar('LINKFORSHARED').split()) + print(' '.join(libs)) + + elif opt == '--extension-suffix': + ext_suffix = sysconfig.get_config_var('EXT_SUFFIX') + if ext_suffix is None: + ext_suffix = sysconfig.get_config_var('SO') + print(ext_suffix) + + elif opt == '--abiflags': + if not getattr(sys, 'abiflags', None): + exit_with_usage() + print(sys.abiflags) + + elif opt == '--configdir': + print(sysconfig.get_config_var('LIBPL')) diff --git a/env/bin/python2 b/env/bin/python2 new file mode 120000 index 0000000..d8654aa --- /dev/null +++ b/env/bin/python2 @@ -0,0 +1 @@ +python \ No newline at end of file diff --git a/env/bin/python2.7 b/env/bin/python2.7 new file mode 120000 index 0000000..d8654aa --- /dev/null +++ b/env/bin/python2.7 @@ -0,0 +1 @@ +python \ No newline at end of file diff --git a/env/bin/wheel b/env/bin/wheel new file mode 100755 index 0000000..2aba597 --- /dev/null +++ b/env/bin/wheel @@ -0,0 +1,11 @@ +#!/home/ubuntu/workspace/env/bin/python + +# -*- coding: utf-8 -*- +import re +import sys + +from wheel.tool import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/env/lib/python2.7/UserDict.py b/env/lib/python2.7/UserDict.py new file mode 120000 index 0000000..1dcde33 --- /dev/null +++ b/env/lib/python2.7/UserDict.py @@ -0,0 +1 @@ +/usr/lib/python2.7/UserDict.py \ No newline at end of file diff --git a/env/lib/python2.7/UserDict.pyc b/env/lib/python2.7/UserDict.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8f0d098a01d913ec0fc38be14a57027fc130ec94 GIT binary patch literal 9720 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 Y&(QXvU4y-YZ{uvV7hHt@a)T%T7v&lAJ^%m! literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/_weakrefset.py b/env/lib/python2.7/_weakrefset.py new file mode 120000 index 0000000..a3c1cd4 --- /dev/null +++ b/env/lib/python2.7/_weakrefset.py @@ -0,0 +1 @@ +/usr/lib/python2.7/_weakrefset.py \ No newline at end of file diff --git a/env/lib/python2.7/_weakrefset.pyc b/env/lib/python2.7/_weakrefset.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5b11b1bd3692a373bbc14ca33f53e71b00808797 GIT binary patch literal 10638 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 OTx{Y@o1GW0eD6OIPw6!P literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/codecs.py b/env/lib/python2.7/codecs.py new file mode 120000 index 0000000..50169dc --- /dev/null +++ b/env/lib/python2.7/codecs.py @@ -0,0 +1 @@ +/usr/lib/python2.7/codecs.py \ No newline at end of file diff --git a/env/lib/python2.7/codecs.pyc b/env/lib/python2.7/codecs.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c1f568bcef432f92a6e74cb41bba4e292f86654f GIT binary patch literal 38465 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 EKN+^RB>(^b literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/distutils/__init__.py b/env/lib/python2.7/distutils/__init__.py new file mode 100644 index 0000000..29fc1da --- /dev/null +++ b/env/lib/python2.7/distutils/__init__.py @@ -0,0 +1,101 @@ +import os +import sys +import warnings +import imp +import opcode # opcode is not a virtualenv module, so we can use it to find the stdlib + # Important! To work on pypy, this must be a module that resides in the + # lib-python/modified-x.y.z directory + +dirname = os.path.dirname + +distutils_path = os.path.join(os.path.dirname(opcode.__file__), 'distutils') +if os.path.normpath(distutils_path) == os.path.dirname(os.path.normpath(__file__)): + warnings.warn( + "The virtualenv distutils package at %s appears to be in the same location as the system distutils?") +else: + __path__.insert(0, distutils_path) + real_distutils = imp.load_module("_virtualenv_distutils", None, distutils_path, ('', '', imp.PKG_DIRECTORY)) + # Copy the relevant attributes + try: + __revision__ = real_distutils.__revision__ + except AttributeError: + pass + __version__ = real_distutils.__version__ + +from distutils import dist, sysconfig + +try: + basestring +except NameError: + basestring = str + +## patch build_ext (distutils doesn't know how to get the libs directory +## path on windows - it hardcodes the paths around the patched sys.prefix) + +if sys.platform == 'win32': + from distutils.command.build_ext import build_ext as old_build_ext + class build_ext(old_build_ext): + def finalize_options (self): + if self.library_dirs is None: + self.library_dirs = [] + elif isinstance(self.library_dirs, basestring): + self.library_dirs = self.library_dirs.split(os.pathsep) + + self.library_dirs.insert(0, os.path.join(sys.real_prefix, "Libs")) + old_build_ext.finalize_options(self) + + from distutils.command import build_ext as build_ext_module + build_ext_module.build_ext = build_ext + +## distutils.dist patches: + +old_find_config_files = dist.Distribution.find_config_files +def find_config_files(self): + found = old_find_config_files(self) + system_distutils = os.path.join(distutils_path, 'distutils.cfg') + #if os.path.exists(system_distutils): + # found.insert(0, system_distutils) + # What to call the per-user config file + if os.name == 'posix': + user_filename = ".pydistutils.cfg" + else: + user_filename = "pydistutils.cfg" + user_filename = os.path.join(sys.prefix, user_filename) + if os.path.isfile(user_filename): + for item in list(found): + if item.endswith('pydistutils.cfg'): + found.remove(item) + found.append(user_filename) + return found +dist.Distribution.find_config_files = find_config_files + +## distutils.sysconfig patches: + +old_get_python_inc = sysconfig.get_python_inc +def sysconfig_get_python_inc(plat_specific=0, prefix=None): + if prefix is None: + prefix = sys.real_prefix + return old_get_python_inc(plat_specific, prefix) +sysconfig_get_python_inc.__doc__ = old_get_python_inc.__doc__ +sysconfig.get_python_inc = sysconfig_get_python_inc + +old_get_python_lib = sysconfig.get_python_lib +def sysconfig_get_python_lib(plat_specific=0, standard_lib=0, prefix=None): + if standard_lib and prefix is None: + prefix = sys.real_prefix + return old_get_python_lib(plat_specific, standard_lib, prefix) +sysconfig_get_python_lib.__doc__ = old_get_python_lib.__doc__ +sysconfig.get_python_lib = sysconfig_get_python_lib + +old_get_config_vars = sysconfig.get_config_vars +def sysconfig_get_config_vars(*args): + real_vars = old_get_config_vars(*args) + if sys.platform == 'win32': + lib_dir = os.path.join(sys.real_prefix, "libs") + if isinstance(real_vars, dict) and 'LIBDIR' not in real_vars: + real_vars['LIBDIR'] = lib_dir # asked for all + elif isinstance(real_vars, list) and 'LIBDIR' in args: + real_vars = real_vars + [lib_dir] # asked for list + return real_vars +sysconfig_get_config_vars.__doc__ = old_get_config_vars.__doc__ +sysconfig.get_config_vars = sysconfig_get_config_vars diff --git a/env/lib/python2.7/distutils/__init__.pyc b/env/lib/python2.7/distutils/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c4aa442f14158e8c58ce103d931462b9f9d740c6 GIT binary patch literal 3757 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 S?lHIORNdNG?PTp#ZT4>%p+^n? literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/genericpath.py b/env/lib/python2.7/genericpath.py new file mode 120000 index 0000000..cb8897c --- /dev/null +++ b/env/lib/python2.7/genericpath.py @@ -0,0 +1 @@ +/usr/lib/python2.7/genericpath.py \ No newline at end of file diff --git a/env/lib/python2.7/genericpath.pyc b/env/lib/python2.7/genericpath.pyc new file mode 100644 index 0000000000000000000000000000000000000000..05ffb69c88911418d3cf840b28e0f96a1f287414 GIT binary patch literal 3463 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/locale.py b/env/lib/python2.7/locale.py new file mode 120000 index 0000000..92c243c --- /dev/null +++ b/env/lib/python2.7/locale.py @@ -0,0 +1 @@ +/usr/lib/python2.7/locale.py \ No newline at end of file diff --git a/env/lib/python2.7/locale.pyc b/env/lib/python2.7/locale.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1353579dee60b7b88b6605f7c6700d1cf4f0d641 GIT binary patch literal 51597 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 E7gTz;SpWb4 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/no-global-site-packages.txt b/env/lib/python2.7/no-global-site-packages.txt new file mode 100644 index 0000000..e69de29 diff --git a/env/lib/python2.7/ntpath.py b/env/lib/python2.7/ntpath.py new file mode 120000 index 0000000..5659ae1 --- /dev/null +++ b/env/lib/python2.7/ntpath.py @@ -0,0 +1 @@ +/usr/lib/python2.7/ntpath.py \ No newline at end of file diff --git a/env/lib/python2.7/orig-prefix.txt b/env/lib/python2.7/orig-prefix.txt new file mode 100644 index 0000000..e25db58 --- /dev/null +++ b/env/lib/python2.7/orig-prefix.txt @@ -0,0 +1 @@ +/usr \ No newline at end of file diff --git a/env/lib/python2.7/os.py b/env/lib/python2.7/os.py new file mode 120000 index 0000000..950fc8d --- /dev/null +++ b/env/lib/python2.7/os.py @@ -0,0 +1 @@ +/usr/lib/python2.7/os.py \ No newline at end of file diff --git a/env/lib/python2.7/os.pyc b/env/lib/python2.7/os.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b0140e44e3c295388ae95aaa6216dd3ebc332a73 GIT binary patch literal 26617 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/posixpath.py b/env/lib/python2.7/posixpath.py new file mode 120000 index 0000000..30cb8ca --- /dev/null +++ b/env/lib/python2.7/posixpath.py @@ -0,0 +1 @@ +/usr/lib/python2.7/posixpath.py \ No newline at end of file diff --git a/env/lib/python2.7/posixpath.pyc b/env/lib/python2.7/posixpath.pyc new file mode 100644 index 0000000000000000000000000000000000000000..27af86a07f07474f542c486d5e7feddd9f603080 GIT binary patch literal 12095 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 U<)O1fqeJ~eBO~RZ%E|u!2e-41Z2$lO literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/DESCRIPTION.rst b/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/DESCRIPTION.rst new file mode 100644 index 0000000..30e2362 --- /dev/null +++ b/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/DESCRIPTION.rst @@ -0,0 +1,49 @@ +Certifi: Python SSL Certificates +================================ + +`Certifi`_ is a carefully curated collection of Root Certificates for +validating the trustworthiness of SSL certificates while verifying the identity +of TLS hosts. It has been extracted from the `Requests`_ project. + +Installation +------------ + +``certifi`` is available on PyPI. Simply install it with ``pip``:: + + $ pip install certifi + +Usage +----- + +To reference the installed certificate authority (CA) bundle, you can use the +built-in function:: + + >>> import certifi + + >>> certifi.where() + '/usr/local/lib/python2.7/site-packages/certifi/cacert.pem' + +Enjoy! + +1024-bit Root Certificates +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Browsers and certificate authorities have concluded that 1024-bit keys are +unacceptably weak for certificates, particularly root certificates. For this +reason, Mozilla has removed any weak (i.e. 1024-bit key) certificate from its +bundle, replacing it with an equivalent strong (i.e. 2048-bit or greater key) +certificate from the same CA. Because Mozilla removed these certificates from +its bundle, ``certifi`` removed them as well. + +Unfortunately, old versions of OpenSSL (less than 1.0.2) sometimes fail to +validate certificate chains that use the strong roots. For this reason, if you +fail to validate a certificate using the ``certifi.where()`` mechanism, you can +intentionally re-add the 1024-bit roots back into your bundle by calling +``certifi.old_where()`` instead. This is not recommended in production: if at +all possible you should upgrade to a newer OpenSSL. However, if you have no +other option, this may work for you. + +.. _`Certifi`: http://certifi.io/en/latest/ +.. _`Requests`: http://docs.python-requests.org/en/latest/ + + diff --git a/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/INSTALLER b/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/METADATA b/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/METADATA new file mode 100644 index 0000000..6091144 --- /dev/null +++ b/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/METADATA @@ -0,0 +1,71 @@ +Metadata-Version: 2.0 +Name: certifi +Version: 2017.7.27.1 +Summary: Python package for providing Mozilla's CA Bundle. +Home-page: http://certifi.io/ +Author: Kenneth Reitz +Author-email: me@kennethreitz.com +License: MPL-2.0 +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Natural Language :: English +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 + +Certifi: Python SSL Certificates +================================ + +`Certifi`_ is a carefully curated collection of Root Certificates for +validating the trustworthiness of SSL certificates while verifying the identity +of TLS hosts. It has been extracted from the `Requests`_ project. + +Installation +------------ + +``certifi`` is available on PyPI. Simply install it with ``pip``:: + + $ pip install certifi + +Usage +----- + +To reference the installed certificate authority (CA) bundle, you can use the +built-in function:: + + >>> import certifi + + >>> certifi.where() + '/usr/local/lib/python2.7/site-packages/certifi/cacert.pem' + +Enjoy! + +1024-bit Root Certificates +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Browsers and certificate authorities have concluded that 1024-bit keys are +unacceptably weak for certificates, particularly root certificates. For this +reason, Mozilla has removed any weak (i.e. 1024-bit key) certificate from its +bundle, replacing it with an equivalent strong (i.e. 2048-bit or greater key) +certificate from the same CA. Because Mozilla removed these certificates from +its bundle, ``certifi`` removed them as well. + +Unfortunately, old versions of OpenSSL (less than 1.0.2) sometimes fail to +validate certificate chains that use the strong roots. For this reason, if you +fail to validate a certificate using the ``certifi.where()`` mechanism, you can +intentionally re-add the 1024-bit roots back into your bundle by calling +``certifi.old_where()`` instead. This is not recommended in production: if at +all possible you should upgrade to a newer OpenSSL. However, if you have no +other option, this may work for you. + +.. _`Certifi`: http://certifi.io/en/latest/ +.. _`Requests`: http://docs.python-requests.org/en/latest/ + + diff --git a/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/RECORD b/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/RECORD new file mode 100644 index 0000000..1f7999c --- /dev/null +++ b/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/RECORD @@ -0,0 +1,16 @@ +certifi/__init__.py,sha256=My7zz7T7ihes4NXz6H8W7R5_mbQKxH4QOC-bpe2NzWk,65 +certifi/__main__.py,sha256=FiOYt1Fltst7wk9DRa6GCoBr8qBUxlNQu_MKJf04E6s,41 +certifi/cacert.pem,sha256=H1zXFqV-gILXM16kCI9onoUlQtpPQFRUx22fQXVygv8,296399 +certifi/core.py,sha256=QUebyXnT-N_b9vdOg1zw28xqdT0Y7mLkiBrLEQY8fXM,714 +certifi/old_root.pem,sha256=HT0KIfaM83q0XHFqGEesiGyfmlSWuD2RI0-AVIS2srY,25626 +certifi/weak.pem,sha256=Oo30AxpvkrmeN29S3UgbVzTIfaxqAbdXUZ1y2V6nEe0,322025 +certifi-2017.7.27.1.dist-info/DESCRIPTION.rst,sha256=wVWYoH3eovdWFPZnYU2NT4itGRx3eN5C_s1IuNm4qF4,1731 +certifi-2017.7.27.1.dist-info/METADATA,sha256=oq-Gce39ekQpzgfJJOSDXa3_LUhguodCWLYAGFeBkHI,2548 +certifi-2017.7.27.1.dist-info/RECORD,, +certifi-2017.7.27.1.dist-info/WHEEL,sha256=5wvfB7GvgZAbKBSE9uX9Zbi6LCL-_KgezgHblXhCRnM,113 +certifi-2017.7.27.1.dist-info/metadata.json,sha256=u7l0Z0L2OAt8iknI-JBmglISdRD1WSh_En-v_uE6oTU,915 +certifi-2017.7.27.1.dist-info/top_level.txt,sha256=KMu4vUCfsjLrkPbSNdgdekS-pVJzBAJFO__nI8NF6-U,8 +certifi-2017.7.27.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +certifi/core.pyc,, +certifi/__main__.pyc,, +certifi/__init__.pyc,, diff --git a/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/WHEEL b/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/WHEEL new file mode 100644 index 0000000..7bf9daa --- /dev/null +++ b/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.30.0.a0) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/metadata.json b/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/metadata.json new file mode 100644 index 0000000..497b57f --- /dev/null +++ b/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/metadata.json @@ -0,0 +1 @@ +{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6"], "extensions": {"python.details": {"contacts": [{"email": "me@kennethreitz.com", "name": "Kenneth Reitz", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "http://certifi.io/"}}}, "generator": "bdist_wheel (0.30.0.a0)", "license": "MPL-2.0", "metadata_version": "2.0", "name": "certifi", "summary": "Python package for providing Mozilla's CA Bundle.", "version": "2017.7.27.1"} \ No newline at end of file diff --git a/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/top_level.txt b/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/top_level.txt new file mode 100644 index 0000000..963eac5 --- /dev/null +++ b/env/lib/python2.7/site-packages/certifi-2017.7.27.1.dist-info/top_level.txt @@ -0,0 +1 @@ +certifi diff --git a/env/lib/python2.7/site-packages/certifi/__init__.py b/env/lib/python2.7/site-packages/certifi/__init__.py new file mode 100644 index 0000000..a76cd47 --- /dev/null +++ b/env/lib/python2.7/site-packages/certifi/__init__.py @@ -0,0 +1,3 @@ +from .core import where, old_where + +__version__ = "2017.07.27.1" diff --git a/env/lib/python2.7/site-packages/certifi/__init__.pyc b/env/lib/python2.7/site-packages/certifi/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..13048623b2f76f06dc570b2108cc3d2dab418375 GIT binary patch literal 252 zcmYL@%L>9U5Je}gg3qmM-F4IFrW+N%z(qyDZU$^32GR#jTJekgK!3oAh=$3zxlC>* z?rT0-ZJy@>zRMxq(bh`>r(&Q0N(MQD(t+Fo#z|b@E*!i8U6PF8*_;^??l;j2Gp19m zIDVX-kxQaD4Wcwi(jeY{g2twcx)m8IWcC>|B_Q^q)v~S-J=^(1$7DlOHen+h|I$gt n{pxg7Q6CnfHS#KdiYO~-5QFAnMwD8YHSd(z+9}$8cHz7MsAzCyPFoDGjC)CG#9 zkjAOG8rR$8+kPd<`BGWF)}kpTH_|nxvfM2tSCw^nS>{gZikG@*6+P!gPM*fKT#pm= z8`r6Og#O>k+DLpQ#Yt0%Qhv%!rK-gqH^Vn4l+1k;5&*( zniIFKC$*|avqqI-RDHZCpKT^P9uB)U5=lwP0oBF^D58!p92JJLctht;Q8<7VgH-@7 zgc}B5_a`0r;v4CPNGA`cmXbY?HSE&wbfc~7;8y2u=@AHJ2;L6qT$O~BUaYjLJU5Q= znEwwtN71j5A^89mOWuJEg1ck2L&RarYi@`_:: + + pip install chardet + +Documentation +------------- + +For users, docs are now available at https://chardet.readthedocs.io/. + +Command-line Tool +----------------- + +chardet comes with a command-line script which reports on the encodings of one +or more files:: + + % chardetect somefile someotherfile + somefile: windows-1252 with confidence 0.5 + someotherfile: ascii with confidence 1.0 + +About +----- + +This is a continuation of Mark Pilgrim's excellent chardet. Previously, two +versions needed to be maintained: one that supported python 2.x and one that +supported python 3.x. We've recently merged with `Ian Cordasco `_'s +`charade `_ fork, so now we have one +coherent version that works for Python 2.6+. + +:maintainer: Dan Blanchard + + diff --git a/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/INSTALLER b/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/METADATA b/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/METADATA new file mode 100644 index 0000000..1427867 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/METADATA @@ -0,0 +1,96 @@ +Metadata-Version: 2.0 +Name: chardet +Version: 3.0.4 +Summary: Universal encoding detector for Python 2 and 3 +Home-page: https://github.com/chardet/chardet +Author: Daniel Blanchard +Author-email: dan.blanchard@gmail.com +License: LGPL +Keywords: encoding,i18n,xml +Platform: UNKNOWN +Classifier: Development Status :: 4 - Beta +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Text Processing :: Linguistic + +Chardet: The Universal Character Encoding Detector +-------------------------------------------------- + +.. image:: https://img.shields.io/travis/chardet/chardet/stable.svg + :alt: Build status + :target: https://travis-ci.org/chardet/chardet + +.. image:: https://img.shields.io/coveralls/chardet/chardet/stable.svg + :target: https://coveralls.io/r/chardet/chardet + +.. image:: https://img.shields.io/pypi/v/chardet.svg + :target: https://warehouse.python.org/project/chardet/ + :alt: Latest version on PyPI + +.. image:: https://img.shields.io/pypi/l/chardet.svg + :alt: License + + +Detects + - ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants) + - Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese) + - EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP (Japanese) + - EUC-KR, ISO-2022-KR (Korean) + - KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic) + - ISO-8859-5, windows-1251 (Bulgarian) + - ISO-8859-1, windows-1252 (Western European languages) + - ISO-8859-7, windows-1253 (Greek) + - ISO-8859-8, windows-1255 (Visual and Logical Hebrew) + - TIS-620 (Thai) + +.. note:: + Our ISO-8859-2 and windows-1250 (Hungarian) probers have been temporarily + disabled until we can retrain the models. + +Requires Python 2.6, 2.7, or 3.3+. + +Installation +------------ + +Install from `PyPI `_:: + + pip install chardet + +Documentation +------------- + +For users, docs are now available at https://chardet.readthedocs.io/. + +Command-line Tool +----------------- + +chardet comes with a command-line script which reports on the encodings of one +or more files:: + + % chardetect somefile someotherfile + somefile: windows-1252 with confidence 0.5 + someotherfile: ascii with confidence 1.0 + +About +----- + +This is a continuation of Mark Pilgrim's excellent chardet. Previously, two +versions needed to be maintained: one that supported python 2.x and one that +supported python 3.x. We've recently merged with `Ian Cordasco `_'s +`charade `_ fork, so now we have one +coherent version that works for Python 2.6+. + +:maintainer: Dan Blanchard + + diff --git a/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/RECORD b/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/RECORD new file mode 100644 index 0000000..f6bd2d5 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/RECORD @@ -0,0 +1,91 @@ +chardet/__init__.py,sha256=YsP5wQlsHJ2auF1RZJfypiSrCA7_bQiRm3ES_NI76-Y,1559 +chardet/big5freq.py,sha256=D_zK5GyzoVsRes0HkLJziltFQX0bKCLOrFe9_xDvO_8,31254 +chardet/big5prober.py,sha256=kBxHbdetBpPe7xrlb-e990iot64g_eGSLd32lB7_h3M,1757 +chardet/chardistribution.py,sha256=3woWS62KrGooKyqz4zQSnjFbJpa6V7g02daAibTwcl8,9411 +chardet/charsetgroupprober.py,sha256=6bDu8YIiRuScX4ca9Igb0U69TA2PGXXDej6Cc4_9kO4,3787 +chardet/charsetprober.py,sha256=KSmwJErjypyj0bRZmC5F5eM7c8YQgLYIjZXintZNstg,5110 +chardet/codingstatemachine.py,sha256=VYp_6cyyki5sHgXDSZnXW4q1oelHc3cu9AyQTX7uug8,3590 +chardet/compat.py,sha256=PKTzHkSbtbHDqS9PyujMbX74q1a8mMpeQTDVsQhZMRw,1134 +chardet/cp949prober.py,sha256=TZ434QX8zzBsnUvL_8wm4AQVTZ2ZkqEEQL_lNw9f9ow,1855 +chardet/enums.py,sha256=Aimwdb9as1dJKZaFNUH2OhWIVBVd6ZkJJ_WK5sNY8cU,1661 +chardet/escprober.py,sha256=kkyqVg1Yw3DIOAMJ2bdlyQgUFQhuHAW8dUGskToNWSc,3950 +chardet/escsm.py,sha256=RuXlgNvTIDarndvllNCk5WZBIpdCxQ0kcd9EAuxUh84,10510 +chardet/eucjpprober.py,sha256=iD8Jdp0ISRjgjiVN7f0e8xGeQJ5GM2oeZ1dA8nbSeUw,3749 +chardet/euckrfreq.py,sha256=-7GdmvgWez4-eO4SuXpa7tBiDi5vRXQ8WvdFAzVaSfo,13546 +chardet/euckrprober.py,sha256=MqFMTQXxW4HbzIpZ9lKDHB3GN8SP4yiHenTmf8g_PxY,1748 +chardet/euctwfreq.py,sha256=No1WyduFOgB5VITUA7PLyC5oJRNzRyMbBxaKI1l16MA,31621 +chardet/euctwprober.py,sha256=13p6EP4yRaxqnP4iHtxHOJ6R2zxHq1_m8hTRjzVZ95c,1747 +chardet/gb2312freq.py,sha256=JX8lsweKLmnCwmk8UHEQsLgkr_rP_kEbvivC4qPOrlc,20715 +chardet/gb2312prober.py,sha256=gGvIWi9WhDjE-xQXHvNIyrnLvEbMAYgyUSZ65HUfylw,1754 +chardet/hebrewprober.py,sha256=c3SZ-K7hvyzGY6JRAZxJgwJ_sUS9k0WYkvMY00YBYFo,13838 +chardet/jisfreq.py,sha256=vpmJv2Bu0J8gnMVRPHMFefTRvo_ha1mryLig8CBwgOg,25777 +chardet/jpcntx.py,sha256=PYlNqRUQT8LM3cT5FmHGP0iiscFlTWED92MALvBungo,19643 +chardet/langbulgarianmodel.py,sha256=1HqQS9Pbtnj1xQgxitJMvw8X6kKr5OockNCZWfEQrPE,12839 +chardet/langcyrillicmodel.py,sha256=LODajvsetH87yYDDQKA2CULXUH87tI223dhfjh9Zx9c,17948 +chardet/langgreekmodel.py,sha256=8YAW7bU8YwSJap0kIJSbPMw1BEqzGjWzqcqf0WgUKAA,12688 +chardet/langhebrewmodel.py,sha256=JSnqmE5E62tDLTPTvLpQsg5gOMO4PbdWRvV7Avkc0HA,11345 +chardet/langhungarianmodel.py,sha256=RhapYSG5l0ZaO-VV4Fan5sW0WRGQqhwBM61yx3yxyOA,12592 +chardet/langthaimodel.py,sha256=8l0173Gu_W6G8mxmQOTEF4ls2YdE7FxWf3QkSxEGXJQ,11290 +chardet/langturkishmodel.py,sha256=W22eRNJsqI6uWAfwXSKVWWnCerYqrI8dZQTm_M0lRFk,11102 +chardet/latin1prober.py,sha256=S2IoORhFk39FEFOlSFWtgVybRiP6h7BlLldHVclNkU8,5370 +chardet/mbcharsetprober.py,sha256=AR95eFH9vuqSfvLQZN-L5ijea25NOBCoXqw8s5O9xLQ,3413 +chardet/mbcsgroupprober.py,sha256=h6TRnnYq2OxG1WdD5JOyxcdVpn7dG0q-vB8nWr5mbh4,2012 +chardet/mbcssm.py,sha256=SY32wVIF3HzcjY3BaEspy9metbNSKxIIB0RKPn7tjpI,25481 +chardet/sbcharsetprober.py,sha256=LDSpCldDCFlYwUkGkwD2oFxLlPWIWXT09akH_2PiY74,5657 +chardet/sbcsgroupprober.py,sha256=1IprcCB_k1qfmnxGC6MBbxELlKqD3scW6S8YIwdeyXA,3546 +chardet/sjisprober.py,sha256=IIt-lZj0WJqK4rmUZzKZP4GJlE8KUEtFYVuY96ek5MQ,3774 +chardet/universaldetector.py,sha256=qL0174lSZE442eB21nnktT9_VcAye07laFWUeUrjttY,12485 +chardet/utf8prober.py,sha256=IdD8v3zWOsB8OLiyPi-y_fqwipRFxV9Nc1eKBLSuIEw,2766 +chardet/version.py,sha256=sp3B08mrDXB-pf3K9fqJ_zeDHOCLC8RrngQyDFap_7g,242 +chardet/cli/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 +chardet/cli/chardetect.py,sha256=YBO8L4mXo0WR6_-Fjh_8QxPBoEBNqB9oNxNrdc54AQs,2738 +chardet-3.0.4.dist-info/DESCRIPTION.rst,sha256=PQ4sBsMyKFZkjC6QpmbpLn0UtCNyeb-ZqvCGEgyZMGk,2174 +chardet-3.0.4.dist-info/METADATA,sha256=RV_2I4B1Z586DL8oVO5Kp7X5bUdQ5EuKAvNoAEF8wSw,3239 +chardet-3.0.4.dist-info/RECORD,, +chardet-3.0.4.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 +chardet-3.0.4.dist-info/entry_points.txt,sha256=fAMmhu5eJ-zAJ-smfqQwRClQ3-nozOCmvJ6-E8lgGJo,60 +chardet-3.0.4.dist-info/metadata.json,sha256=0htbRM18ujyGZDdfowgAqj6Hq2eQtwzwyhaEveKntgo,1375 +chardet-3.0.4.dist-info/top_level.txt,sha256=AowzBbZy4x8EirABDdJSLJZMkJ_53iIag8xfKR6D7kI,8 +../../../bin/chardetect,sha256=8EehDhrgQMrvueo_qFRotCqfZm0UcaZzLgfvzO__rek,246 +chardet-3.0.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +chardet/euctwprober.pyc,, +chardet/big5freq.pyc,, +chardet/langthaimodel.pyc,, +chardet/sbcharsetprober.pyc,, +chardet/cp949prober.pyc,, +chardet/langgreekmodel.pyc,, +chardet/gb2312prober.pyc,, +chardet/compat.pyc,, +chardet/euckrfreq.pyc,, +chardet/chardistribution.pyc,, +chardet/langturkishmodel.pyc,, +chardet/version.pyc,, +chardet/cli/__init__.pyc,, +chardet/big5prober.pyc,, +chardet/utf8prober.pyc,, +chardet/universaldetector.pyc,, +chardet/mbcharsetprober.pyc,, +chardet/latin1prober.pyc,, +chardet/sjisprober.pyc,, +chardet/enums.pyc,, +chardet/cli/chardetect.pyc,, +chardet/langcyrillicmodel.pyc,, +chardet/jpcntx.pyc,, +chardet/euctwfreq.pyc,, +chardet/charsetprober.pyc,, +chardet/langbulgarianmodel.pyc,, +chardet/mbcssm.pyc,, +chardet/mbcsgroupprober.pyc,, +chardet/euckrprober.pyc,, +chardet/sbcsgroupprober.pyc,, +chardet/eucjpprober.pyc,, +chardet/escprober.pyc,, +chardet/langhungarianmodel.pyc,, +chardet/langhebrewmodel.pyc,, +chardet/escsm.pyc,, +chardet/charsetgroupprober.pyc,, +chardet/hebrewprober.pyc,, +chardet/codingstatemachine.pyc,, +chardet/gb2312freq.pyc,, +chardet/jisfreq.pyc,, +chardet/__init__.pyc,, diff --git a/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/WHEEL b/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/WHEEL new file mode 100644 index 0000000..8b6dd1b --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.29.0) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/entry_points.txt b/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/entry_points.txt new file mode 100644 index 0000000..a884269 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +[console_scripts] +chardetect = chardet.cli.chardetect:main + diff --git a/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/metadata.json b/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/metadata.json new file mode 100644 index 0000000..8cdf025 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/metadata.json @@ -0,0 +1 @@ +{"classifiers": ["Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Linguistic"], "extensions": {"python.commands": {"wrap_console": {"chardetect": "chardet.cli.chardetect:main"}}, "python.details": {"contacts": [{"email": "dan.blanchard@gmail.com", "name": "Daniel Blanchard", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/chardet/chardet"}}, "python.exports": {"console_scripts": {"chardetect": "chardet.cli.chardetect:main"}}}, "generator": "bdist_wheel (0.29.0)", "keywords": ["encoding", "i18n", "xml"], "license": "LGPL", "metadata_version": "2.0", "name": "chardet", "summary": "Universal encoding detector for Python 2 and 3", "test_requires": [{"requires": ["hypothesis", "pytest"]}], "version": "3.0.4"} \ No newline at end of file diff --git a/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/top_level.txt b/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/top_level.txt new file mode 100644 index 0000000..79236f2 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet-3.0.4.dist-info/top_level.txt @@ -0,0 +1 @@ +chardet diff --git a/env/lib/python2.7/site-packages/chardet/__init__.py b/env/lib/python2.7/site-packages/chardet/__init__.py new file mode 100644 index 0000000..0f9f820 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/__init__.py @@ -0,0 +1,39 @@ +######################## BEGIN LICENSE BLOCK ######################## +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + + +from .compat import PY2, PY3 +from .universaldetector import UniversalDetector +from .version import __version__, VERSION + + +def detect(byte_str): + """ + Detect the encoding of the given byte string. + + :param byte_str: The byte sequence to examine. + :type byte_str: ``bytes`` or ``bytearray`` + """ + if not isinstance(byte_str, bytearray): + if not isinstance(byte_str, bytes): + raise TypeError('Expected object of type bytes or bytearray, got: ' + '{0}'.format(type(byte_str))) + else: + byte_str = bytearray(byte_str) + detector = UniversalDetector() + detector.feed(byte_str) + return detector.close() diff --git a/env/lib/python2.7/site-packages/chardet/__init__.pyc b/env/lib/python2.7/site-packages/chardet/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6b35c69dd537c5e475cb602945c66609f9ec6402 GIT binary patch literal 964 zcmbVKO>fgc5S_J?I1Q>&gs3<5JwhMV1iVg%FC_D%}^tRv^K+uJ>4bwpf)iQ=KpaYDH@a^hNv%Vcr#5_f~ zD6@N^bew+{MkGe6I{yiV!jK}FEW^-vXkSkJ>FL+Agt#Qy!tWD)`WC?e{6J)|aX^3B znvOM3=zQ$!rUj-=X&X$l?@tDIn9LgI8lXgx4r~C{=tPRwgcuoJ3QTQ<`ZpfhwsGnr2p2o%6`zQA8viMO>=Jh?R<0QDiy#9o9K{sPJw@%H`|^H@3X3lqMcYSk^1P zkY>!kAFl^{bgMmtOlPGwF;-;Ax68%5tSxQ*=cqVQN-DfRfVosfYz+M)s@k_xK-OG{ z)H0J?YEl2~ZX-l(88XuCFyI~r1o}0?$Q0G6%BrK;GRxDW^70}-z8@vmu|mRb4a2O= zOc)NUl`W+fdqE-xB<1y4pY5^d4&gpKt2?El6IoQT@hQpQP3Uqvq1&SBUT7kl`Se{P iP;-7C!Pff-|5-U*!$~32WiCEE!@Z^g57_}bbpHY2&)$Ck literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/big5freq.py b/env/lib/python2.7/site-packages/chardet/big5freq.py new file mode 100644 index 0000000..38f3251 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/big5freq.py @@ -0,0 +1,386 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# Big5 frequency table +# by Taiwan's Mandarin Promotion Council +# +# +# 128 --> 0.42261 +# 256 --> 0.57851 +# 512 --> 0.74851 +# 1024 --> 0.89384 +# 2048 --> 0.97583 +# +# Ideal Distribution Ratio = 0.74851/(1-0.74851) =2.98 +# Random Distribution Ration = 512/(5401-512)=0.105 +# +# Typical Distribution Ratio about 25% of Ideal one, still much higher than RDR + +BIG5_TYPICAL_DISTRIBUTION_RATIO = 0.75 + +#Char to FreqOrder table +BIG5_TABLE_SIZE = 5376 + +BIG5_CHAR_TO_FREQ_ORDER = ( + 1,1801,1506, 255,1431, 198, 9, 82, 6,5008, 177, 202,3681,1256,2821, 110, # 16 +3814, 33,3274, 261, 76, 44,2114, 16,2946,2187,1176, 659,3971, 26,3451,2653, # 32 +1198,3972,3350,4202, 410,2215, 302, 590, 361,1964, 8, 204, 58,4510,5009,1932, # 48 + 63,5010,5011, 317,1614, 75, 222, 159,4203,2417,1480,5012,3555,3091, 224,2822, # 64 +3682, 3, 10,3973,1471, 29,2787,1135,2866,1940, 873, 130,3275,1123, 312,5013, # 80 +4511,2052, 507, 252, 682,5014, 142,1915, 124, 206,2947, 34,3556,3204, 64, 604, # 96 +5015,2501,1977,1978, 155,1991, 645, 641,1606,5016,3452, 337, 72, 406,5017, 80, # 112 + 630, 238,3205,1509, 263, 939,1092,2654, 756,1440,1094,3453, 449, 69,2987, 591, # 128 + 179,2096, 471, 115,2035,1844, 60, 50,2988, 134, 806,1869, 734,2036,3454, 180, # 144 + 995,1607, 156, 537,2907, 688,5018, 319,1305, 779,2145, 514,2379, 298,4512, 359, # 160 +2502, 90,2716,1338, 663, 11, 906,1099,2553, 20,2441, 182, 532,1716,5019, 732, # 176 +1376,4204,1311,1420,3206, 25,2317,1056, 113, 399, 382,1950, 242,3455,2474, 529, # 192 +3276, 475,1447,3683,5020, 117, 21, 656, 810,1297,2300,2334,3557,5021, 126,4205, # 208 + 706, 456, 150, 613,4513, 71,1118,2037,4206, 145,3092, 85, 835, 486,2115,1246, # 224 +1426, 428, 727,1285,1015, 800, 106, 623, 303,1281,5022,2128,2359, 347,3815, 221, # 240 +3558,3135,5023,1956,1153,4207, 83, 296,1199,3093, 192, 624, 93,5024, 822,1898, # 256 +2823,3136, 795,2065, 991,1554,1542,1592, 27, 43,2867, 859, 139,1456, 860,4514, # 272 + 437, 712,3974, 164,2397,3137, 695, 211,3037,2097, 195,3975,1608,3559,3560,3684, # 288 +3976, 234, 811,2989,2098,3977,2233,1441,3561,1615,2380, 668,2077,1638, 305, 228, # 304 +1664,4515, 467, 415,5025, 262,2099,1593, 239, 108, 300, 200,1033, 512,1247,2078, # 320 +5026,5027,2176,3207,3685,2682, 593, 845,1062,3277, 88,1723,2038,3978,1951, 212, # 336 + 266, 152, 149, 468,1899,4208,4516, 77, 187,5028,3038, 37, 5,2990,5029,3979, # 352 +5030,5031, 39,2524,4517,2908,3208,2079, 55, 148, 74,4518, 545, 483,1474,1029, # 368 +1665, 217,1870,1531,3138,1104,2655,4209, 24, 172,3562, 900,3980,3563,3564,4519, # 384 + 32,1408,2824,1312, 329, 487,2360,2251,2717, 784,2683, 4,3039,3351,1427,1789, # 400 + 188, 109, 499,5032,3686,1717,1790, 888,1217,3040,4520,5033,3565,5034,3352,1520, # 416 +3687,3981, 196,1034, 775,5035,5036, 929,1816, 249, 439, 38,5037,1063,5038, 794, # 432 +3982,1435,2301, 46, 178,3278,2066,5039,2381,5040, 214,1709,4521, 804, 35, 707, # 448 + 324,3688,1601,2554, 140, 459,4210,5041,5042,1365, 839, 272, 978,2262,2580,3456, # 464 +2129,1363,3689,1423, 697, 100,3094, 48, 70,1231, 495,3139,2196,5043,1294,5044, # 480 +2080, 462, 586,1042,3279, 853, 256, 988, 185,2382,3457,1698, 434,1084,5045,3458, # 496 + 314,2625,2788,4522,2335,2336, 569,2285, 637,1817,2525, 757,1162,1879,1616,3459, # 512 + 287,1577,2116, 768,4523,1671,2868,3566,2526,1321,3816, 909,2418,5046,4211, 933, # 528 +3817,4212,2053,2361,1222,4524, 765,2419,1322, 786,4525,5047,1920,1462,1677,2909, # 544 +1699,5048,4526,1424,2442,3140,3690,2600,3353,1775,1941,3460,3983,4213, 309,1369, # 560 +1130,2825, 364,2234,1653,1299,3984,3567,3985,3986,2656, 525,1085,3041, 902,2001, # 576 +1475, 964,4527, 421,1845,1415,1057,2286, 940,1364,3141, 376,4528,4529,1381, 7, # 592 +2527, 983,2383, 336,1710,2684,1846, 321,3461, 559,1131,3042,2752,1809,1132,1313, # 608 + 265,1481,1858,5049, 352,1203,2826,3280, 167,1089, 420,2827, 776, 792,1724,3568, # 624 +4214,2443,3281,5050,4215,5051, 446, 229, 333,2753, 901,3818,1200,1557,4530,2657, # 640 +1921, 395,2754,2685,3819,4216,1836, 125, 916,3209,2626,4531,5052,5053,3820,5054, # 656 +5055,5056,4532,3142,3691,1133,2555,1757,3462,1510,2318,1409,3569,5057,2146, 438, # 672 +2601,2910,2384,3354,1068, 958,3043, 461, 311,2869,2686,4217,1916,3210,4218,1979, # 688 + 383, 750,2755,2627,4219, 274, 539, 385,1278,1442,5058,1154,1965, 384, 561, 210, # 704 + 98,1295,2556,3570,5059,1711,2420,1482,3463,3987,2911,1257, 129,5060,3821, 642, # 720 + 523,2789,2790,2658,5061, 141,2235,1333, 68, 176, 441, 876, 907,4220, 603,2602, # 736 + 710, 171,3464, 404, 549, 18,3143,2398,1410,3692,1666,5062,3571,4533,2912,4534, # 752 +5063,2991, 368,5064, 146, 366, 99, 871,3693,1543, 748, 807,1586,1185, 22,2263, # 768 + 379,3822,3211,5065,3212, 505,1942,2628,1992,1382,2319,5066, 380,2362, 218, 702, # 784 +1818,1248,3465,3044,3572,3355,3282,5067,2992,3694, 930,3283,3823,5068, 59,5069, # 800 + 585, 601,4221, 497,3466,1112,1314,4535,1802,5070,1223,1472,2177,5071, 749,1837, # 816 + 690,1900,3824,1773,3988,1476, 429,1043,1791,2236,2117, 917,4222, 447,1086,1629, # 832 +5072, 556,5073,5074,2021,1654, 844,1090, 105, 550, 966,1758,2828,1008,1783, 686, # 848 +1095,5075,2287, 793,1602,5076,3573,2603,4536,4223,2948,2302,4537,3825, 980,2503, # 864 + 544, 353, 527,4538, 908,2687,2913,5077, 381,2629,1943,1348,5078,1341,1252, 560, # 880 +3095,5079,3467,2870,5080,2054, 973, 886,2081, 143,4539,5081,5082, 157,3989, 496, # 896 +4224, 57, 840, 540,2039,4540,4541,3468,2118,1445, 970,2264,1748,1966,2082,4225, # 912 +3144,1234,1776,3284,2829,3695, 773,1206,2130,1066,2040,1326,3990,1738,1725,4226, # 928 + 279,3145, 51,1544,2604, 423,1578,2131,2067, 173,4542,1880,5083,5084,1583, 264, # 944 + 610,3696,4543,2444, 280, 154,5085,5086,5087,1739, 338,1282,3096, 693,2871,1411, # 960 +1074,3826,2445,5088,4544,5089,5090,1240, 952,2399,5091,2914,1538,2688, 685,1483, # 976 +4227,2475,1436, 953,4228,2055,4545, 671,2400, 79,4229,2446,3285, 608, 567,2689, # 992 +3469,4230,4231,1691, 393,1261,1792,2401,5092,4546,5093,5094,5095,5096,1383,1672, # 1008 +3827,3213,1464, 522,1119, 661,1150, 216, 675,4547,3991,1432,3574, 609,4548,2690, # 1024 +2402,5097,5098,5099,4232,3045, 0,5100,2476, 315, 231,2447, 301,3356,4549,2385, # 1040 +5101, 233,4233,3697,1819,4550,4551,5102, 96,1777,1315,2083,5103, 257,5104,1810, # 1056 +3698,2718,1139,1820,4234,2022,1124,2164,2791,1778,2659,5105,3097, 363,1655,3214, # 1072 +5106,2993,5107,5108,5109,3992,1567,3993, 718, 103,3215, 849,1443, 341,3357,2949, # 1088 +1484,5110,1712, 127, 67, 339,4235,2403, 679,1412, 821,5111,5112, 834, 738, 351, # 1104 +2994,2147, 846, 235,1497,1881, 418,1993,3828,2719, 186,1100,2148,2756,3575,1545, # 1120 +1355,2950,2872,1377, 583,3994,4236,2581,2995,5113,1298,3699,1078,2557,3700,2363, # 1136 + 78,3829,3830, 267,1289,2100,2002,1594,4237, 348, 369,1274,2197,2178,1838,4552, # 1152 +1821,2830,3701,2757,2288,2003,4553,2951,2758, 144,3358, 882,4554,3995,2759,3470, # 1168 +4555,2915,5114,4238,1726, 320,5115,3996,3046, 788,2996,5116,2831,1774,1327,2873, # 1184 +3997,2832,5117,1306,4556,2004,1700,3831,3576,2364,2660, 787,2023, 506, 824,3702, # 1200 + 534, 323,4557,1044,3359,2024,1901, 946,3471,5118,1779,1500,1678,5119,1882,4558, # 1216 + 165, 243,4559,3703,2528, 123, 683,4239, 764,4560, 36,3998,1793, 589,2916, 816, # 1232 + 626,1667,3047,2237,1639,1555,1622,3832,3999,5120,4000,2874,1370,1228,1933, 891, # 1248 +2084,2917, 304,4240,5121, 292,2997,2720,3577, 691,2101,4241,1115,4561, 118, 662, # 1264 +5122, 611,1156, 854,2386,1316,2875, 2, 386, 515,2918,5123,5124,3286, 868,2238, # 1280 +1486, 855,2661, 785,2216,3048,5125,1040,3216,3578,5126,3146, 448,5127,1525,5128, # 1296 +2165,4562,5129,3833,5130,4242,2833,3579,3147, 503, 818,4001,3148,1568, 814, 676, # 1312 +1444, 306,1749,5131,3834,1416,1030, 197,1428, 805,2834,1501,4563,5132,5133,5134, # 1328 +1994,5135,4564,5136,5137,2198, 13,2792,3704,2998,3149,1229,1917,5138,3835,2132, # 1344 +5139,4243,4565,2404,3580,5140,2217,1511,1727,1120,5141,5142, 646,3836,2448, 307, # 1360 +5143,5144,1595,3217,5145,5146,5147,3705,1113,1356,4002,1465,2529,2530,5148, 519, # 1376 +5149, 128,2133, 92,2289,1980,5150,4003,1512, 342,3150,2199,5151,2793,2218,1981, # 1392 +3360,4244, 290,1656,1317, 789, 827,2365,5152,3837,4566, 562, 581,4004,5153, 401, # 1408 +4567,2252, 94,4568,5154,1399,2794,5155,1463,2025,4569,3218,1944,5156, 828,1105, # 1424 +4245,1262,1394,5157,4246, 605,4570,5158,1784,2876,5159,2835, 819,2102, 578,2200, # 1440 +2952,5160,1502, 436,3287,4247,3288,2836,4005,2919,3472,3473,5161,2721,2320,5162, # 1456 +5163,2337,2068, 23,4571, 193, 826,3838,2103, 699,1630,4248,3098, 390,1794,1064, # 1472 +3581,5164,1579,3099,3100,1400,5165,4249,1839,1640,2877,5166,4572,4573, 137,4250, # 1488 + 598,3101,1967, 780, 104, 974,2953,5167, 278, 899, 253, 402, 572, 504, 493,1339, # 1504 +5168,4006,1275,4574,2582,2558,5169,3706,3049,3102,2253, 565,1334,2722, 863, 41, # 1520 +5170,5171,4575,5172,1657,2338, 19, 463,2760,4251, 606,5173,2999,3289,1087,2085, # 1536 +1323,2662,3000,5174,1631,1623,1750,4252,2691,5175,2878, 791,2723,2663,2339, 232, # 1552 +2421,5176,3001,1498,5177,2664,2630, 755,1366,3707,3290,3151,2026,1609, 119,1918, # 1568 +3474, 862,1026,4253,5178,4007,3839,4576,4008,4577,2265,1952,2477,5179,1125, 817, # 1584 +4254,4255,4009,1513,1766,2041,1487,4256,3050,3291,2837,3840,3152,5180,5181,1507, # 1600 +5182,2692, 733, 40,1632,1106,2879, 345,4257, 841,2531, 230,4578,3002,1847,3292, # 1616 +3475,5183,1263, 986,3476,5184, 735, 879, 254,1137, 857, 622,1300,1180,1388,1562, # 1632 +4010,4011,2954, 967,2761,2665,1349, 592,2134,1692,3361,3003,1995,4258,1679,4012, # 1648 +1902,2188,5185, 739,3708,2724,1296,1290,5186,4259,2201,2202,1922,1563,2605,2559, # 1664 +1871,2762,3004,5187, 435,5188, 343,1108, 596, 17,1751,4579,2239,3477,3709,5189, # 1680 +4580, 294,3582,2955,1693, 477, 979, 281,2042,3583, 643,2043,3710,2631,2795,2266, # 1696 +1031,2340,2135,2303,3584,4581, 367,1249,2560,5190,3585,5191,4582,1283,3362,2005, # 1712 + 240,1762,3363,4583,4584, 836,1069,3153, 474,5192,2149,2532, 268,3586,5193,3219, # 1728 +1521,1284,5194,1658,1546,4260,5195,3587,3588,5196,4261,3364,2693,1685,4262, 961, # 1744 +1673,2632, 190,2006,2203,3841,4585,4586,5197, 570,2504,3711,1490,5198,4587,2633, # 1760 +3293,1957,4588, 584,1514, 396,1045,1945,5199,4589,1968,2449,5200,5201,4590,4013, # 1776 + 619,5202,3154,3294, 215,2007,2796,2561,3220,4591,3221,4592, 763,4263,3842,4593, # 1792 +5203,5204,1958,1767,2956,3365,3712,1174, 452,1477,4594,3366,3155,5205,2838,1253, # 1808 +2387,2189,1091,2290,4264, 492,5206, 638,1169,1825,2136,1752,4014, 648, 926,1021, # 1824 +1324,4595, 520,4596, 997, 847,1007, 892,4597,3843,2267,1872,3713,2405,1785,4598, # 1840 +1953,2957,3103,3222,1728,4265,2044,3714,4599,2008,1701,3156,1551, 30,2268,4266, # 1856 +5207,2027,4600,3589,5208, 501,5209,4267, 594,3478,2166,1822,3590,3479,3591,3223, # 1872 + 829,2839,4268,5210,1680,3157,1225,4269,5211,3295,4601,4270,3158,2341,5212,4602, # 1888 +4271,5213,4015,4016,5214,1848,2388,2606,3367,5215,4603, 374,4017, 652,4272,4273, # 1904 + 375,1140, 798,5216,5217,5218,2366,4604,2269, 546,1659, 138,3051,2450,4605,5219, # 1920 +2254, 612,1849, 910, 796,3844,1740,1371, 825,3845,3846,5220,2920,2562,5221, 692, # 1936 + 444,3052,2634, 801,4606,4274,5222,1491, 244,1053,3053,4275,4276, 340,5223,4018, # 1952 +1041,3005, 293,1168, 87,1357,5224,1539, 959,5225,2240, 721, 694,4277,3847, 219, # 1968 +1478, 644,1417,3368,2666,1413,1401,1335,1389,4019,5226,5227,3006,2367,3159,1826, # 1984 + 730,1515, 184,2840, 66,4607,5228,1660,2958, 246,3369, 378,1457, 226,3480, 975, # 2000 +4020,2959,1264,3592, 674, 696,5229, 163,5230,1141,2422,2167, 713,3593,3370,4608, # 2016 +4021,5231,5232,1186, 15,5233,1079,1070,5234,1522,3224,3594, 276,1050,2725, 758, # 2032 +1126, 653,2960,3296,5235,2342, 889,3595,4022,3104,3007, 903,1250,4609,4023,3481, # 2048 +3596,1342,1681,1718, 766,3297, 286, 89,2961,3715,5236,1713,5237,2607,3371,3008, # 2064 +5238,2962,2219,3225,2880,5239,4610,2505,2533, 181, 387,1075,4024, 731,2190,3372, # 2080 +5240,3298, 310, 313,3482,2304, 770,4278, 54,3054, 189,4611,3105,3848,4025,5241, # 2096 +1230,1617,1850, 355,3597,4279,4612,3373, 111,4280,3716,1350,3160,3483,3055,4281, # 2112 +2150,3299,3598,5242,2797,4026,4027,3009, 722,2009,5243,1071, 247,1207,2343,2478, # 2128 +1378,4613,2010, 864,1437,1214,4614, 373,3849,1142,2220, 667,4615, 442,2763,2563, # 2144 +3850,4028,1969,4282,3300,1840, 837, 170,1107, 934,1336,1883,5244,5245,2119,4283, # 2160 +2841, 743,1569,5246,4616,4284, 582,2389,1418,3484,5247,1803,5248, 357,1395,1729, # 2176 +3717,3301,2423,1564,2241,5249,3106,3851,1633,4617,1114,2086,4285,1532,5250, 482, # 2192 +2451,4618,5251,5252,1492, 833,1466,5253,2726,3599,1641,2842,5254,1526,1272,3718, # 2208 +4286,1686,1795, 416,2564,1903,1954,1804,5255,3852,2798,3853,1159,2321,5256,2881, # 2224 +4619,1610,1584,3056,2424,2764, 443,3302,1163,3161,5257,5258,4029,5259,4287,2506, # 2240 +3057,4620,4030,3162,2104,1647,3600,2011,1873,4288,5260,4289, 431,3485,5261, 250, # 2256 + 97, 81,4290,5262,1648,1851,1558, 160, 848,5263, 866, 740,1694,5264,2204,2843, # 2272 +3226,4291,4621,3719,1687, 950,2479, 426, 469,3227,3720,3721,4031,5265,5266,1188, # 2288 + 424,1996, 861,3601,4292,3854,2205,2694, 168,1235,3602,4293,5267,2087,1674,4622, # 2304 +3374,3303, 220,2565,1009,5268,3855, 670,3010, 332,1208, 717,5269,5270,3603,2452, # 2320 +4032,3375,5271, 513,5272,1209,2882,3376,3163,4623,1080,5273,5274,5275,5276,2534, # 2336 +3722,3604, 815,1587,4033,4034,5277,3605,3486,3856,1254,4624,1328,3058,1390,4035, # 2352 +1741,4036,3857,4037,5278, 236,3858,2453,3304,5279,5280,3723,3859,1273,3860,4625, # 2368 +5281, 308,5282,4626, 245,4627,1852,2480,1307,2583, 430, 715,2137,2454,5283, 270, # 2384 + 199,2883,4038,5284,3606,2727,1753, 761,1754, 725,1661,1841,4628,3487,3724,5285, # 2400 +5286, 587, 14,3305, 227,2608, 326, 480,2270, 943,2765,3607, 291, 650,1884,5287, # 2416 +1702,1226, 102,1547, 62,3488, 904,4629,3489,1164,4294,5288,5289,1224,1548,2766, # 2432 + 391, 498,1493,5290,1386,1419,5291,2056,1177,4630, 813, 880,1081,2368, 566,1145, # 2448 +4631,2291,1001,1035,2566,2609,2242, 394,1286,5292,5293,2069,5294, 86,1494,1730, # 2464 +4039, 491,1588, 745, 897,2963, 843,3377,4040,2767,2884,3306,1768, 998,2221,2070, # 2480 + 397,1827,1195,1970,3725,3011,3378, 284,5295,3861,2507,2138,2120,1904,5296,4041, # 2496 +2151,4042,4295,1036,3490,1905, 114,2567,4296, 209,1527,5297,5298,2964,2844,2635, # 2512 +2390,2728,3164, 812,2568,5299,3307,5300,1559, 737,1885,3726,1210, 885, 28,2695, # 2528 +3608,3862,5301,4297,1004,1780,4632,5302, 346,1982,2222,2696,4633,3863,1742, 797, # 2544 +1642,4043,1934,1072,1384,2152, 896,4044,3308,3727,3228,2885,3609,5303,2569,1959, # 2560 +4634,2455,1786,5304,5305,5306,4045,4298,1005,1308,3728,4299,2729,4635,4636,1528, # 2576 +2610, 161,1178,4300,1983, 987,4637,1101,4301, 631,4046,1157,3229,2425,1343,1241, # 2592 +1016,2243,2570, 372, 877,2344,2508,1160, 555,1935, 911,4047,5307, 466,1170, 169, # 2608 +1051,2921,2697,3729,2481,3012,1182,2012,2571,1251,2636,5308, 992,2345,3491,1540, # 2624 +2730,1201,2071,2406,1997,2482,5309,4638, 528,1923,2191,1503,1874,1570,2369,3379, # 2640 +3309,5310, 557,1073,5311,1828,3492,2088,2271,3165,3059,3107, 767,3108,2799,4639, # 2656 +1006,4302,4640,2346,1267,2179,3730,3230, 778,4048,3231,2731,1597,2667,5312,4641, # 2672 +5313,3493,5314,5315,5316,3310,2698,1433,3311, 131, 95,1504,4049, 723,4303,3166, # 2688 +1842,3610,2768,2192,4050,2028,2105,3731,5317,3013,4051,1218,5318,3380,3232,4052, # 2704 +4304,2584, 248,1634,3864, 912,5319,2845,3732,3060,3865, 654, 53,5320,3014,5321, # 2720 +1688,4642, 777,3494,1032,4053,1425,5322, 191, 820,2121,2846, 971,4643, 931,3233, # 2736 + 135, 664, 783,3866,1998, 772,2922,1936,4054,3867,4644,2923,3234, 282,2732, 640, # 2752 +1372,3495,1127, 922, 325,3381,5323,5324, 711,2045,5325,5326,4055,2223,2800,1937, # 2768 +4056,3382,2224,2255,3868,2305,5327,4645,3869,1258,3312,4057,3235,2139,2965,4058, # 2784 +4059,5328,2225, 258,3236,4646, 101,1227,5329,3313,1755,5330,1391,3314,5331,2924, # 2800 +2057, 893,5332,5333,5334,1402,4305,2347,5335,5336,3237,3611,5337,5338, 878,1325, # 2816 +1781,2801,4647, 259,1385,2585, 744,1183,2272,4648,5339,4060,2509,5340, 684,1024, # 2832 +4306,5341, 472,3612,3496,1165,3315,4061,4062, 322,2153, 881, 455,1695,1152,1340, # 2848 + 660, 554,2154,4649,1058,4650,4307, 830,1065,3383,4063,4651,1924,5342,1703,1919, # 2864 +5343, 932,2273, 122,5344,4652, 947, 677,5345,3870,2637, 297,1906,1925,2274,4653, # 2880 +2322,3316,5346,5347,4308,5348,4309, 84,4310, 112, 989,5349, 547,1059,4064, 701, # 2896 +3613,1019,5350,4311,5351,3497, 942, 639, 457,2306,2456, 993,2966, 407, 851, 494, # 2912 +4654,3384, 927,5352,1237,5353,2426,3385, 573,4312, 680, 921,2925,1279,1875, 285, # 2928 + 790,1448,1984, 719,2168,5354,5355,4655,4065,4066,1649,5356,1541, 563,5357,1077, # 2944 +5358,3386,3061,3498, 511,3015,4067,4068,3733,4069,1268,2572,3387,3238,4656,4657, # 2960 +5359, 535,1048,1276,1189,2926,2029,3167,1438,1373,2847,2967,1134,2013,5360,4313, # 2976 +1238,2586,3109,1259,5361, 700,5362,2968,3168,3734,4314,5363,4315,1146,1876,1907, # 2992 +4658,2611,4070, 781,2427, 132,1589, 203, 147, 273,2802,2407, 898,1787,2155,4071, # 3008 +4072,5364,3871,2803,5365,5366,4659,4660,5367,3239,5368,1635,3872, 965,5369,1805, # 3024 +2699,1516,3614,1121,1082,1329,3317,4073,1449,3873, 65,1128,2848,2927,2769,1590, # 3040 +3874,5370,5371, 12,2668, 45, 976,2587,3169,4661, 517,2535,1013,1037,3240,5372, # 3056 +3875,2849,5373,3876,5374,3499,5375,2612, 614,1999,2323,3877,3110,2733,2638,5376, # 3072 +2588,4316, 599,1269,5377,1811,3735,5378,2700,3111, 759,1060, 489,1806,3388,3318, # 3088 +1358,5379,5380,2391,1387,1215,2639,2256, 490,5381,5382,4317,1759,2392,2348,5383, # 3104 +4662,3878,1908,4074,2640,1807,3241,4663,3500,3319,2770,2349, 874,5384,5385,3501, # 3120 +3736,1859, 91,2928,3737,3062,3879,4664,5386,3170,4075,2669,5387,3502,1202,1403, # 3136 +3880,2969,2536,1517,2510,4665,3503,2511,5388,4666,5389,2701,1886,1495,1731,4076, # 3152 +2370,4667,5390,2030,5391,5392,4077,2702,1216, 237,2589,4318,2324,4078,3881,4668, # 3168 +4669,2703,3615,3504, 445,4670,5393,5394,5395,5396,2771, 61,4079,3738,1823,4080, # 3184 +5397, 687,2046, 935, 925, 405,2670, 703,1096,1860,2734,4671,4081,1877,1367,2704, # 3200 +3389, 918,2106,1782,2483, 334,3320,1611,1093,4672, 564,3171,3505,3739,3390, 945, # 3216 +2641,2058,4673,5398,1926, 872,4319,5399,3506,2705,3112, 349,4320,3740,4082,4674, # 3232 +3882,4321,3741,2156,4083,4675,4676,4322,4677,2408,2047, 782,4084, 400, 251,4323, # 3248 +1624,5400,5401, 277,3742, 299,1265, 476,1191,3883,2122,4324,4325,1109, 205,5402, # 3264 +2590,1000,2157,3616,1861,5403,5404,5405,4678,5406,4679,2573, 107,2484,2158,4085, # 3280 +3507,3172,5407,1533, 541,1301, 158, 753,4326,2886,3617,5408,1696, 370,1088,4327, # 3296 +4680,3618, 579, 327, 440, 162,2244, 269,1938,1374,3508, 968,3063, 56,1396,3113, # 3312 +2107,3321,3391,5409,1927,2159,4681,3016,5410,3619,5411,5412,3743,4682,2485,5413, # 3328 +2804,5414,1650,4683,5415,2613,5416,5417,4086,2671,3392,1149,3393,4087,3884,4088, # 3344 +5418,1076, 49,5419, 951,3242,3322,3323, 450,2850, 920,5420,1812,2805,2371,4328, # 3360 +1909,1138,2372,3885,3509,5421,3243,4684,1910,1147,1518,2428,4685,3886,5422,4686, # 3376 +2393,2614, 260,1796,3244,5423,5424,3887,3324, 708,5425,3620,1704,5426,3621,1351, # 3392 +1618,3394,3017,1887, 944,4329,3395,4330,3064,3396,4331,5427,3744, 422, 413,1714, # 3408 +3325, 500,2059,2350,4332,2486,5428,1344,1911, 954,5429,1668,5430,5431,4089,2409, # 3424 +4333,3622,3888,4334,5432,2307,1318,2512,3114, 133,3115,2887,4687, 629, 31,2851, # 3440 +2706,3889,4688, 850, 949,4689,4090,2970,1732,2089,4335,1496,1853,5433,4091, 620, # 3456 +3245, 981,1242,3745,3397,1619,3746,1643,3326,2140,2457,1971,1719,3510,2169,5434, # 3472 +3246,5435,5436,3398,1829,5437,1277,4690,1565,2048,5438,1636,3623,3116,5439, 869, # 3488 +2852, 655,3890,3891,3117,4092,3018,3892,1310,3624,4691,5440,5441,5442,1733, 558, # 3504 +4692,3747, 335,1549,3065,1756,4336,3748,1946,3511,1830,1291,1192, 470,2735,2108, # 3520 +2806, 913,1054,4093,5443,1027,5444,3066,4094,4693, 982,2672,3399,3173,3512,3247, # 3536 +3248,1947,2807,5445, 571,4694,5446,1831,5447,3625,2591,1523,2429,5448,2090, 984, # 3552 +4695,3749,1960,5449,3750, 852, 923,2808,3513,3751, 969,1519, 999,2049,2325,1705, # 3568 +5450,3118, 615,1662, 151, 597,4095,2410,2326,1049, 275,4696,3752,4337, 568,3753, # 3584 +3626,2487,4338,3754,5451,2430,2275, 409,3249,5452,1566,2888,3514,1002, 769,2853, # 3600 + 194,2091,3174,3755,2226,3327,4339, 628,1505,5453,5454,1763,2180,3019,4096, 521, # 3616 +1161,2592,1788,2206,2411,4697,4097,1625,4340,4341, 412, 42,3119, 464,5455,2642, # 3632 +4698,3400,1760,1571,2889,3515,2537,1219,2207,3893,2643,2141,2373,4699,4700,3328, # 3648 +1651,3401,3627,5456,5457,3628,2488,3516,5458,3756,5459,5460,2276,2092, 460,5461, # 3664 +4701,5462,3020, 962, 588,3629, 289,3250,2644,1116, 52,5463,3067,1797,5464,5465, # 3680 +5466,1467,5467,1598,1143,3757,4342,1985,1734,1067,4702,1280,3402, 465,4703,1572, # 3696 + 510,5468,1928,2245,1813,1644,3630,5469,4704,3758,5470,5471,2673,1573,1534,5472, # 3712 +5473, 536,1808,1761,3517,3894,3175,2645,5474,5475,5476,4705,3518,2929,1912,2809, # 3728 +5477,3329,1122, 377,3251,5478, 360,5479,5480,4343,1529, 551,5481,2060,3759,1769, # 3744 +2431,5482,2930,4344,3330,3120,2327,2109,2031,4706,1404, 136,1468,1479, 672,1171, # 3760 +3252,2308, 271,3176,5483,2772,5484,2050, 678,2736, 865,1948,4707,5485,2014,4098, # 3776 +2971,5486,2737,2227,1397,3068,3760,4708,4709,1735,2931,3403,3631,5487,3895, 509, # 3792 +2854,2458,2890,3896,5488,5489,3177,3178,4710,4345,2538,4711,2309,1166,1010, 552, # 3808 + 681,1888,5490,5491,2972,2973,4099,1287,1596,1862,3179, 358, 453, 736, 175, 478, # 3824 +1117, 905,1167,1097,5492,1854,1530,5493,1706,5494,2181,3519,2292,3761,3520,3632, # 3840 +4346,2093,4347,5495,3404,1193,2489,4348,1458,2193,2208,1863,1889,1421,3331,2932, # 3856 +3069,2182,3521, 595,2123,5496,4100,5497,5498,4349,1707,2646, 223,3762,1359, 751, # 3872 +3121, 183,3522,5499,2810,3021, 419,2374, 633, 704,3897,2394, 241,5500,5501,5502, # 3888 + 838,3022,3763,2277,2773,2459,3898,1939,2051,4101,1309,3122,2246,1181,5503,1136, # 3904 +2209,3899,2375,1446,4350,2310,4712,5504,5505,4351,1055,2615, 484,3764,5506,4102, # 3920 + 625,4352,2278,3405,1499,4353,4103,5507,4104,4354,3253,2279,2280,3523,5508,5509, # 3936 +2774, 808,2616,3765,3406,4105,4355,3123,2539, 526,3407,3900,4356, 955,5510,1620, # 3952 +4357,2647,2432,5511,1429,3766,1669,1832, 994, 928,5512,3633,1260,5513,5514,5515, # 3968 +1949,2293, 741,2933,1626,4358,2738,2460, 867,1184, 362,3408,1392,5516,5517,4106, # 3984 +4359,1770,1736,3254,2934,4713,4714,1929,2707,1459,1158,5518,3070,3409,2891,1292, # 4000 +1930,2513,2855,3767,1986,1187,2072,2015,2617,4360,5519,2574,2514,2170,3768,2490, # 4016 +3332,5520,3769,4715,5521,5522, 666,1003,3023,1022,3634,4361,5523,4716,1814,2257, # 4032 + 574,3901,1603, 295,1535, 705,3902,4362, 283, 858, 417,5524,5525,3255,4717,4718, # 4048 +3071,1220,1890,1046,2281,2461,4107,1393,1599, 689,2575, 388,4363,5526,2491, 802, # 4064 +5527,2811,3903,2061,1405,2258,5528,4719,3904,2110,1052,1345,3256,1585,5529, 809, # 4080 +5530,5531,5532, 575,2739,3524, 956,1552,1469,1144,2328,5533,2329,1560,2462,3635, # 4096 +3257,4108, 616,2210,4364,3180,2183,2294,5534,1833,5535,3525,4720,5536,1319,3770, # 4112 +3771,1211,3636,1023,3258,1293,2812,5537,5538,5539,3905, 607,2311,3906, 762,2892, # 4128 +1439,4365,1360,4721,1485,3072,5540,4722,1038,4366,1450,2062,2648,4367,1379,4723, # 4144 +2593,5541,5542,4368,1352,1414,2330,2935,1172,5543,5544,3907,3908,4724,1798,1451, # 4160 +5545,5546,5547,5548,2936,4109,4110,2492,2351, 411,4111,4112,3637,3333,3124,4725, # 4176 +1561,2674,1452,4113,1375,5549,5550, 47,2974, 316,5551,1406,1591,2937,3181,5552, # 4192 +1025,2142,3125,3182, 354,2740, 884,2228,4369,2412, 508,3772, 726,3638, 996,2433, # 4208 +3639, 729,5553, 392,2194,1453,4114,4726,3773,5554,5555,2463,3640,2618,1675,2813, # 4224 + 919,2352,2975,2353,1270,4727,4115, 73,5556,5557, 647,5558,3259,2856,2259,1550, # 4240 +1346,3024,5559,1332, 883,3526,5560,5561,5562,5563,3334,2775,5564,1212, 831,1347, # 4256 +4370,4728,2331,3909,1864,3073, 720,3910,4729,4730,3911,5565,4371,5566,5567,4731, # 4272 +5568,5569,1799,4732,3774,2619,4733,3641,1645,2376,4734,5570,2938, 669,2211,2675, # 4288 +2434,5571,2893,5572,5573,1028,3260,5574,4372,2413,5575,2260,1353,5576,5577,4735, # 4304 +3183, 518,5578,4116,5579,4373,1961,5580,2143,4374,5581,5582,3025,2354,2355,3912, # 4320 + 516,1834,1454,4117,2708,4375,4736,2229,2620,1972,1129,3642,5583,2776,5584,2976, # 4336 +1422, 577,1470,3026,1524,3410,5585,5586, 432,4376,3074,3527,5587,2594,1455,2515, # 4352 +2230,1973,1175,5588,1020,2741,4118,3528,4737,5589,2742,5590,1743,1361,3075,3529, # 4368 +2649,4119,4377,4738,2295, 895, 924,4378,2171, 331,2247,3076, 166,1627,3077,1098, # 4384 +5591,1232,2894,2231,3411,4739, 657, 403,1196,2377, 542,3775,3412,1600,4379,3530, # 4400 +5592,4740,2777,3261, 576, 530,1362,4741,4742,2540,2676,3776,4120,5593, 842,3913, # 4416 +5594,2814,2032,1014,4121, 213,2709,3413, 665, 621,4380,5595,3777,2939,2435,5596, # 4432 +2436,3335,3643,3414,4743,4381,2541,4382,4744,3644,1682,4383,3531,1380,5597, 724, # 4448 +2282, 600,1670,5598,1337,1233,4745,3126,2248,5599,1621,4746,5600, 651,4384,5601, # 4464 +1612,4385,2621,5602,2857,5603,2743,2312,3078,5604, 716,2464,3079, 174,1255,2710, # 4480 +4122,3645, 548,1320,1398, 728,4123,1574,5605,1891,1197,3080,4124,5606,3081,3082, # 4496 +3778,3646,3779, 747,5607, 635,4386,4747,5608,5609,5610,4387,5611,5612,4748,5613, # 4512 +3415,4749,2437, 451,5614,3780,2542,2073,4388,2744,4389,4125,5615,1764,4750,5616, # 4528 +4390, 350,4751,2283,2395,2493,5617,4391,4126,2249,1434,4127, 488,4752, 458,4392, # 4544 +4128,3781, 771,1330,2396,3914,2576,3184,2160,2414,1553,2677,3185,4393,5618,2494, # 4560 +2895,2622,1720,2711,4394,3416,4753,5619,2543,4395,5620,3262,4396,2778,5621,2016, # 4576 +2745,5622,1155,1017,3782,3915,5623,3336,2313, 201,1865,4397,1430,5624,4129,5625, # 4592 +5626,5627,5628,5629,4398,1604,5630, 414,1866, 371,2595,4754,4755,3532,2017,3127, # 4608 +4756,1708, 960,4399, 887, 389,2172,1536,1663,1721,5631,2232,4130,2356,2940,1580, # 4624 +5632,5633,1744,4757,2544,4758,4759,5634,4760,5635,2074,5636,4761,3647,3417,2896, # 4640 +4400,5637,4401,2650,3418,2815, 673,2712,2465, 709,3533,4131,3648,4402,5638,1148, # 4656 + 502, 634,5639,5640,1204,4762,3649,1575,4763,2623,3783,5641,3784,3128, 948,3263, # 4672 + 121,1745,3916,1110,5642,4403,3083,2516,3027,4132,3785,1151,1771,3917,1488,4133, # 4688 +1987,5643,2438,3534,5644,5645,2094,5646,4404,3918,1213,1407,2816, 531,2746,2545, # 4704 +3264,1011,1537,4764,2779,4405,3129,1061,5647,3786,3787,1867,2897,5648,2018, 120, # 4720 +4406,4407,2063,3650,3265,2314,3919,2678,3419,1955,4765,4134,5649,3535,1047,2713, # 4736 +1266,5650,1368,4766,2858, 649,3420,3920,2546,2747,1102,2859,2679,5651,5652,2000, # 4752 +5653,1111,3651,2977,5654,2495,3921,3652,2817,1855,3421,3788,5655,5656,3422,2415, # 4768 +2898,3337,3266,3653,5657,2577,5658,3654,2818,4135,1460, 856,5659,3655,5660,2899, # 4784 +2978,5661,2900,3922,5662,4408, 632,2517, 875,3923,1697,3924,2296,5663,5664,4767, # 4800 +3028,1239, 580,4768,4409,5665, 914, 936,2075,1190,4136,1039,2124,5666,5667,5668, # 4816 +5669,3423,1473,5670,1354,4410,3925,4769,2173,3084,4137, 915,3338,4411,4412,3339, # 4832 +1605,1835,5671,2748, 398,3656,4413,3926,4138, 328,1913,2860,4139,3927,1331,4414, # 4848 +3029, 937,4415,5672,3657,4140,4141,3424,2161,4770,3425, 524, 742, 538,3085,1012, # 4864 +5673,5674,3928,2466,5675, 658,1103, 225,3929,5676,5677,4771,5678,4772,5679,3267, # 4880 +1243,5680,4142, 963,2250,4773,5681,2714,3658,3186,5682,5683,2596,2332,5684,4774, # 4896 +5685,5686,5687,3536, 957,3426,2547,2033,1931,2941,2467, 870,2019,3659,1746,2780, # 4912 +2781,2439,2468,5688,3930,5689,3789,3130,3790,3537,3427,3791,5690,1179,3086,5691, # 4928 +3187,2378,4416,3792,2548,3188,3131,2749,4143,5692,3428,1556,2549,2297, 977,2901, # 4944 +2034,4144,1205,3429,5693,1765,3430,3189,2125,1271, 714,1689,4775,3538,5694,2333, # 4960 +3931, 533,4417,3660,2184, 617,5695,2469,3340,3539,2315,5696,5697,3190,5698,5699, # 4976 +3932,1988, 618, 427,2651,3540,3431,5700,5701,1244,1690,5702,2819,4418,4776,5703, # 4992 +3541,4777,5704,2284,1576, 473,3661,4419,3432, 972,5705,3662,5706,3087,5707,5708, # 5008 +4778,4779,5709,3793,4145,4146,5710, 153,4780, 356,5711,1892,2902,4420,2144, 408, # 5024 + 803,2357,5712,3933,5713,4421,1646,2578,2518,4781,4782,3934,5714,3935,4422,5715, # 5040 +2416,3433, 752,5716,5717,1962,3341,2979,5718, 746,3030,2470,4783,4423,3794, 698, # 5056 +4784,1893,4424,3663,2550,4785,3664,3936,5719,3191,3434,5720,1824,1302,4147,2715, # 5072 +3937,1974,4425,5721,4426,3192, 823,1303,1288,1236,2861,3542,4148,3435, 774,3938, # 5088 +5722,1581,4786,1304,2862,3939,4787,5723,2440,2162,1083,3268,4427,4149,4428, 344, # 5104 +1173, 288,2316, 454,1683,5724,5725,1461,4788,4150,2597,5726,5727,4789, 985, 894, # 5120 +5728,3436,3193,5729,1914,2942,3795,1989,5730,2111,1975,5731,4151,5732,2579,1194, # 5136 + 425,5733,4790,3194,1245,3796,4429,5734,5735,2863,5736, 636,4791,1856,3940, 760, # 5152 +1800,5737,4430,2212,1508,4792,4152,1894,1684,2298,5738,5739,4793,4431,4432,2213, # 5168 + 479,5740,5741, 832,5742,4153,2496,5743,2980,2497,3797, 990,3132, 627,1815,2652, # 5184 +4433,1582,4434,2126,2112,3543,4794,5744, 799,4435,3195,5745,4795,2113,1737,3031, # 5200 +1018, 543, 754,4436,3342,1676,4796,4797,4154,4798,1489,5746,3544,5747,2624,2903, # 5216 +4155,5748,5749,2981,5750,5751,5752,5753,3196,4799,4800,2185,1722,5754,3269,3270, # 5232 +1843,3665,1715, 481, 365,1976,1857,5755,5756,1963,2498,4801,5757,2127,3666,3271, # 5248 + 433,1895,2064,2076,5758, 602,2750,5759,5760,5761,5762,5763,3032,1628,3437,5764, # 5264 +3197,4802,4156,2904,4803,2519,5765,2551,2782,5766,5767,5768,3343,4804,2905,5769, # 5280 +4805,5770,2864,4806,4807,1221,2982,4157,2520,5771,5772,5773,1868,1990,5774,5775, # 5296 +5776,1896,5777,5778,4808,1897,4158, 318,5779,2095,4159,4437,5780,5781, 485,5782, # 5312 + 938,3941, 553,2680, 116,5783,3942,3667,5784,3545,2681,2783,3438,3344,2820,5785, # 5328 +3668,2943,4160,1747,2944,2983,5786,5787, 207,5788,4809,5789,4810,2521,5790,3033, # 5344 + 890,3669,3943,5791,1878,3798,3439,5792,2186,2358,3440,1652,5793,5794,5795, 941, # 5360 +2299, 208,3546,4161,2020, 330,4438,3944,2906,2499,3799,4439,4811,5796,5797,5798, # 5376 +) + diff --git a/env/lib/python2.7/site-packages/chardet/big5freq.pyc b/env/lib/python2.7/site-packages/chardet/big5freq.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ae152256f4eb02ab55b1661506e64b3a192c5bf2 GIT binary patch literal 54686 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/chardistribution.py b/env/lib/python2.7/site-packages/chardet/chardistribution.py new file mode 100644 index 0000000..c0395f4 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/chardistribution.py @@ -0,0 +1,233 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .euctwfreq import (EUCTW_CHAR_TO_FREQ_ORDER, EUCTW_TABLE_SIZE, + EUCTW_TYPICAL_DISTRIBUTION_RATIO) +from .euckrfreq import (EUCKR_CHAR_TO_FREQ_ORDER, EUCKR_TABLE_SIZE, + EUCKR_TYPICAL_DISTRIBUTION_RATIO) +from .gb2312freq import (GB2312_CHAR_TO_FREQ_ORDER, GB2312_TABLE_SIZE, + GB2312_TYPICAL_DISTRIBUTION_RATIO) +from .big5freq import (BIG5_CHAR_TO_FREQ_ORDER, BIG5_TABLE_SIZE, + BIG5_TYPICAL_DISTRIBUTION_RATIO) +from .jisfreq import (JIS_CHAR_TO_FREQ_ORDER, JIS_TABLE_SIZE, + JIS_TYPICAL_DISTRIBUTION_RATIO) + + +class CharDistributionAnalysis(object): + ENOUGH_DATA_THRESHOLD = 1024 + SURE_YES = 0.99 + SURE_NO = 0.01 + MINIMUM_DATA_THRESHOLD = 3 + + def __init__(self): + # Mapping table to get frequency order from char order (get from + # GetOrder()) + self._char_to_freq_order = None + self._table_size = None # Size of above table + # This is a constant value which varies from language to language, + # used in calculating confidence. See + # http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html + # for further detail. + self.typical_distribution_ratio = None + self._done = None + self._total_chars = None + self._freq_chars = None + self.reset() + + def reset(self): + """reset analyser, clear any state""" + # If this flag is set to True, detection is done and conclusion has + # been made + self._done = False + self._total_chars = 0 # Total characters encountered + # The number of characters whose frequency order is less than 512 + self._freq_chars = 0 + + def feed(self, char, char_len): + """feed a character with known length""" + if char_len == 2: + # we only care about 2-bytes character in our distribution analysis + order = self.get_order(char) + else: + order = -1 + if order >= 0: + self._total_chars += 1 + # order is valid + if order < self._table_size: + if 512 > self._char_to_freq_order[order]: + self._freq_chars += 1 + + def get_confidence(self): + """return confidence based on existing data""" + # if we didn't receive any character in our consideration range, + # return negative answer + if self._total_chars <= 0 or self._freq_chars <= self.MINIMUM_DATA_THRESHOLD: + return self.SURE_NO + + if self._total_chars != self._freq_chars: + r = (self._freq_chars / ((self._total_chars - self._freq_chars) + * self.typical_distribution_ratio)) + if r < self.SURE_YES: + return r + + # normalize confidence (we don't want to be 100% sure) + return self.SURE_YES + + def got_enough_data(self): + # It is not necessary to receive all data to draw conclusion. + # For charset detection, certain amount of data is enough + return self._total_chars > self.ENOUGH_DATA_THRESHOLD + + def get_order(self, byte_str): + # We do not handle characters based on the original encoding string, + # but convert this encoding string to a number, here called order. + # This allows multiple encodings of a language to share one frequency + # table. + return -1 + + +class EUCTWDistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(EUCTWDistributionAnalysis, self).__init__() + self._char_to_freq_order = EUCTW_CHAR_TO_FREQ_ORDER + self._table_size = EUCTW_TABLE_SIZE + self.typical_distribution_ratio = EUCTW_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for euc-TW encoding, we are interested + # first byte range: 0xc4 -- 0xfe + # second byte range: 0xa1 -- 0xfe + # no validation needed here. State machine has done that + first_char = byte_str[0] + if first_char >= 0xC4: + return 94 * (first_char - 0xC4) + byte_str[1] - 0xA1 + else: + return -1 + + +class EUCKRDistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(EUCKRDistributionAnalysis, self).__init__() + self._char_to_freq_order = EUCKR_CHAR_TO_FREQ_ORDER + self._table_size = EUCKR_TABLE_SIZE + self.typical_distribution_ratio = EUCKR_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for euc-KR encoding, we are interested + # first byte range: 0xb0 -- 0xfe + # second byte range: 0xa1 -- 0xfe + # no validation needed here. State machine has done that + first_char = byte_str[0] + if first_char >= 0xB0: + return 94 * (first_char - 0xB0) + byte_str[1] - 0xA1 + else: + return -1 + + +class GB2312DistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(GB2312DistributionAnalysis, self).__init__() + self._char_to_freq_order = GB2312_CHAR_TO_FREQ_ORDER + self._table_size = GB2312_TABLE_SIZE + self.typical_distribution_ratio = GB2312_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for GB2312 encoding, we are interested + # first byte range: 0xb0 -- 0xfe + # second byte range: 0xa1 -- 0xfe + # no validation needed here. State machine has done that + first_char, second_char = byte_str[0], byte_str[1] + if (first_char >= 0xB0) and (second_char >= 0xA1): + return 94 * (first_char - 0xB0) + second_char - 0xA1 + else: + return -1 + + +class Big5DistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(Big5DistributionAnalysis, self).__init__() + self._char_to_freq_order = BIG5_CHAR_TO_FREQ_ORDER + self._table_size = BIG5_TABLE_SIZE + self.typical_distribution_ratio = BIG5_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for big5 encoding, we are interested + # first byte range: 0xa4 -- 0xfe + # second byte range: 0x40 -- 0x7e , 0xa1 -- 0xfe + # no validation needed here. State machine has done that + first_char, second_char = byte_str[0], byte_str[1] + if first_char >= 0xA4: + if second_char >= 0xA1: + return 157 * (first_char - 0xA4) + second_char - 0xA1 + 63 + else: + return 157 * (first_char - 0xA4) + second_char - 0x40 + else: + return -1 + + +class SJISDistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(SJISDistributionAnalysis, self).__init__() + self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER + self._table_size = JIS_TABLE_SIZE + self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for sjis encoding, we are interested + # first byte range: 0x81 -- 0x9f , 0xe0 -- 0xfe + # second byte range: 0x40 -- 0x7e, 0x81 -- oxfe + # no validation needed here. State machine has done that + first_char, second_char = byte_str[0], byte_str[1] + if (first_char >= 0x81) and (first_char <= 0x9F): + order = 188 * (first_char - 0x81) + elif (first_char >= 0xE0) and (first_char <= 0xEF): + order = 188 * (first_char - 0xE0 + 31) + else: + return -1 + order = order + second_char - 0x40 + if second_char > 0x7F: + order = -1 + return order + + +class EUCJPDistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(EUCJPDistributionAnalysis, self).__init__() + self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER + self._table_size = JIS_TABLE_SIZE + self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for euc-JP encoding, we are interested + # first byte range: 0xa0 -- 0xfe + # second byte range: 0xa1 -- 0xfe + # no validation needed here. State machine has done that + char = byte_str[0] + if char >= 0xA0: + return 94 * (char - 0xA1) + byte_str[1] - 0xa1 + else: + return -1 diff --git a/env/lib/python2.7/site-packages/chardet/chardistribution.pyc b/env/lib/python2.7/site-packages/chardet/chardistribution.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6fb0d3caa2b07fcdc5f31e5d76a132929e0bd88e GIT binary patch literal 7461 zcmd5>TW=f36+XLMlA^AbL`hT^&6N@bHLXhY4rk8{ z&&-_joo~*J6aShRU3%m9x9imTOYrwqe&UxcB9H%B)Ff(IRJEvOQ`M$cf~pC!&}LK9 zp;nTrNou92nxa;ks%g`fpymj*GE~h_Ym};^)EcAem}zsUIZmw!s!mXAlB$!`nxg8I zX-iV`9JQvYI!&z^s?Jbrma4PdmLfk(I~I9qdQ9|)=yr9EybNA z1@gwb(utllN8V&tI@Oadl6S5vo$g7WBX6cFo$X1VCofBt!W`QyV3Sb+7SuT|id$=& zKXBJ>tSEPL!@Z`8-*-3EdQs_fy~fRz)tg1PQmPhpzAwD}c4=+prn_FMY^u`g)@Es= z?5Y+1dP4VG>I-yp<5ArZo}hb?XK{V?(zh>OI!^g?zjZ+S(tz{?^$Xl}wRHWp?zMe9MVqhNbq2kmertThkfAnpYV z{JqLg{0XI7T==st$P^FG=zoAcjN4OG+h83}{G3I)LUlVK757N}hn3 zqeWE;qpUh0hiLbs>z}@t{phnRyFbpN`uIu!sMRqEJT^aT{KV^Actj70T$v9lJS8LH zS(yq?%v5-8rjo)>?xqo1i0(=OTFZqIF13SdJM{G|SKK-q#?@_iC-U#P?a1>ZJqEe1 zZ8v>44&L+ibNJQ4UQn+!U2njKZd7Aa>Lj{*P&h6>Y-{cZwXxA8n$0`9Mts-5_TYDGwg1z(G`$5w?AHK8IeD(eXXz+afDMBDKgh?r zru_ipl?yPj*yUQS8T%^BuL`W9fNfd30;>#b-3qbz20w9%3vzg+b{&AiJn$`8I^@bj zSy;oS=tV&YODuY1(P4r@#5NlAFuM0 z#fC%Cee(mxqx`_3d-v(y0fh|W6oW9$Gl*Z}V#oKrd@T=`*6P}i@(%)iC*KI$55j!Y z4|nyQ03i_koBzb5LdOB(qFexobcTyvUmL_4+s?2^f!2(bv39YtzzjnPJWz3Y3~`U( zeOO+Qaj>#$JaUYUf$VX6#!gw|)|5SE&02yzEDUoKpX_r5CX~&&VNtv!uL44t*`lb> zv2n%pLupYXK~Xr+)o8IOhh~SebBC-vrVTJiAXT4NvGZEM#L+xxqBT)4qwQH- zFrmN+xMBt~<}FM37|Y7^K{?`u?E}r!u7_rI^*n0^KFq|D1#AQzG7f7k-*q*%KG$uv zy?x$QT=g}6RWG4fLXk&-d_|Z{foRoNQG6W*wD$or1e7S)6?$SYbIR&`?95aqlbOt% z%Oo`>BT3(vOB%36`n=!ECjFQz!n3F(u<^tEJ-8+KMZ9&1E4=Y&iPJ|mc=ZuGQwzzu z4t5Ymqnjd*B~&=Q=x^m9K;f`>f6tH9%lv9A$dwKa0v1YGQQVIp96m;6(1=yXBU}(i z7xr0!CKlRT?05KuDTvXzcxcN$#Pr5{%rZ6`Y)dxfvgqK@;sS3hxeB%nSumKSEc6rn zovXo*P+)Pv2Pm*f7^iuMi!hLWqQxqvgIp` zp}vViz&w25!p-+Ew!=lr%A~qLeM_BXpsH`dCg)LzVZ>3gRbw3nquADEqj*Lb{Tb^& z6^#Cg2l}!YRj+X8p(69=y=9&*GU43E7`ul|aH2VXo_%O8^IQ!yCBYGBf_4lv5$Mkn zn!jfKN1+Kr;#os$iHi<>;>)H*n`so;I#Z{~)>kBRcZ5|}BsZ5PX4M2OFs&ZXsKTQH zSs_#5);^kjbniR}qfyQ@I=}`gnbTI}a75pRmGCZgQ$;J~;QE7`uziasg|T zD^P#Gt{>onU9p4|ETVAO?>06fX%y4o=L$hB2jkss{LhfIO3EwQE}Up?h&c0+Hc2TY zn?NEVmwI=DSek^Bg^t0*8d}=hcm2AS>lJe&AxFMtZc&n@2%%#=eaA>Gew}4cckTZ@ abGLLEripPa`GVc~IP<0XS^3P*Fa8GzTes{0 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/charsetgroupprober.py b/env/lib/python2.7/site-packages/chardet/charsetgroupprober.py new file mode 100644 index 0000000..8b3738e --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/charsetgroupprober.py @@ -0,0 +1,106 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .enums import ProbingState +from .charsetprober import CharSetProber + + +class CharSetGroupProber(CharSetProber): + def __init__(self, lang_filter=None): + super(CharSetGroupProber, self).__init__(lang_filter=lang_filter) + self._active_num = 0 + self.probers = [] + self._best_guess_prober = None + + def reset(self): + super(CharSetGroupProber, self).reset() + self._active_num = 0 + for prober in self.probers: + if prober: + prober.reset() + prober.active = True + self._active_num += 1 + self._best_guess_prober = None + + @property + def charset_name(self): + if not self._best_guess_prober: + self.get_confidence() + if not self._best_guess_prober: + return None + return self._best_guess_prober.charset_name + + @property + def language(self): + if not self._best_guess_prober: + self.get_confidence() + if not self._best_guess_prober: + return None + return self._best_guess_prober.language + + def feed(self, byte_str): + for prober in self.probers: + if not prober: + continue + if not prober.active: + continue + state = prober.feed(byte_str) + if not state: + continue + if state == ProbingState.FOUND_IT: + self._best_guess_prober = prober + return self.state + elif state == ProbingState.NOT_ME: + prober.active = False + self._active_num -= 1 + if self._active_num <= 0: + self._state = ProbingState.NOT_ME + return self.state + return self.state + + def get_confidence(self): + state = self.state + if state == ProbingState.FOUND_IT: + return 0.99 + elif state == ProbingState.NOT_ME: + return 0.01 + best_conf = 0.0 + self._best_guess_prober = None + for prober in self.probers: + if not prober: + continue + if not prober.active: + self.logger.debug('%s not active', prober.charset_name) + continue + conf = prober.get_confidence() + self.logger.debug('%s %s confidence = %s', prober.charset_name, prober.language, conf) + if best_conf < conf: + best_conf = conf + self._best_guess_prober = prober + if not self._best_guess_prober: + return 0.0 + return best_conf diff --git a/env/lib/python2.7/site-packages/chardet/charsetgroupprober.pyc b/env/lib/python2.7/site-packages/chardet/charsetgroupprober.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d9e6cade8ab0324e34d49de2e234cde69a8ff546 GIT binary patch literal 2753 zcmcImO>bL86utAF|(3s~?6IOmR?lx|6rH`nuV-^{(|o_pt||6HtIz5V=gTgHDW ze!oQXpF!k!jC4hIjcgb(94FFEWH*(K6ysD}D%(c#lAMSfi#*;aNj@dbdKs^G3`CtG z%tCxO>~D2?MKiR5i?bIod-q9e*mQx5ZW!J?o4Ggaj|Or2)Vc)AU!(a45Kd@RUZ$BR zFfgUDFasvIDH=+XFkjYTIvGxnt=*WRrPQxT)~rus$2Rw8BMNuX{7r~}$H*ZzOJpbE zA%_OO8iOM+Yf~viJ8(UA)TCyeyEMWD$Zo4w*zHa?xM2rF(bK{ddVVx;!;EK!83=1T zy-u)J-?FWC=sa__H`)y}Z=e|YP(r`a?>R-wZaE)pF>>D9s8HA4sN`LDJEIkKv?%=N z=q-oc!SbLpSlSwOy7^M?`}OX}&z9SWMDD_We!U9?;}CcLXmF6x=&NX+=8AdSRPf(s zka;XmRp6eW^9pdsP$zf_+5Rndc1p6cc|(pA(&2Ri3xuf%a4@iCYL#{n+C)A{0QKH= zK99ygBZLC7(Zz-W8!1=8IHM^MSeiU^a3v!vGeW5tt_?>na4O=Q(W8v-DuP*+dR!jE zirzV4NJ_kq=I6MlxeNs7OxaZNdnIB?JlPb>C3FZDUU*kKq@S46DPqu@r~s>`W>=%G z2+*H!38HYpw)?&9PVRbbr_O3xGVH*{_FB6!E!FXJWDK3Wf#wOQBo*~@`gQo3)o?)c zjIm_ajatR)@#+m6@G07>UQM!q;A`}LM`!=HaR65~pUV--Mk0Pe_Nv0Lp{f}1AHFn% z0zz!$D3!xh{OV*Wm5?%Lo+jWkUjzj#5(V5SOB1SGp4R0m>j^ZhCR}N!!n$=cu@%+E zD3PZ|hQE$q;YQWTMz9Odqw%)m>>?XA#p-0QCQ-)vt(mm#T%KVNi`eSJ^~Q?*c1?3B zRyo#u&85b}HT&Qjom_2oz0;J`73=k4P||AZF@#$O!C_&Tk-^zK#5od^m(5pb{yhlM z6f7eJ%ch1#SuxWpYml?%Qlu=a39Etz_fK?)lZ1t)SG!q z2ITr4g17(681|LTpChU6P6ff@m^~3y&zwZ=3&a-=R z2UlMF^CZDFzu4=C#aKuETX6=HXZ2?B_Tn{Pr>;g($&y{>klJUZ_a$NxVf8^GSRE z`)+6LT14~wT!Z=LO0_mqo2kq<6le{D!`Fz9xz1>gZ;yCIW-JnV=bp1=io~r5(-#Z0 LkY!@d%%%SVntBU< literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/charsetprober.py b/env/lib/python2.7/site-packages/chardet/charsetprober.py new file mode 100644 index 0000000..eac4e59 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/charsetprober.py @@ -0,0 +1,145 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +import logging +import re + +from .enums import ProbingState + + +class CharSetProber(object): + + SHORTCUT_THRESHOLD = 0.95 + + def __init__(self, lang_filter=None): + self._state = None + self.lang_filter = lang_filter + self.logger = logging.getLogger(__name__) + + def reset(self): + self._state = ProbingState.DETECTING + + @property + def charset_name(self): + return None + + def feed(self, buf): + pass + + @property + def state(self): + return self._state + + def get_confidence(self): + return 0.0 + + @staticmethod + def filter_high_byte_only(buf): + buf = re.sub(b'([\x00-\x7F])+', b' ', buf) + return buf + + @staticmethod + def filter_international_words(buf): + """ + We define three types of bytes: + alphabet: english alphabets [a-zA-Z] + international: international characters [\x80-\xFF] + marker: everything else [^a-zA-Z\x80-\xFF] + + The input buffer can be thought to contain a series of words delimited + by markers. This function works to filter all words that contain at + least one international character. All contiguous sequences of markers + are replaced by a single space ascii character. + + This filter applies to all scripts which do not use English characters. + """ + filtered = bytearray() + + # This regex expression filters out only words that have at-least one + # international character. The word may include one marker character at + # the end. + words = re.findall(b'[a-zA-Z]*[\x80-\xFF]+[a-zA-Z]*[^a-zA-Z\x80-\xFF]?', + buf) + + for word in words: + filtered.extend(word[:-1]) + + # If the last character in the word is a marker, replace it with a + # space as markers shouldn't affect our analysis (they are used + # similarly across all languages and may thus have similar + # frequencies). + last_char = word[-1:] + if not last_char.isalpha() and last_char < b'\x80': + last_char = b' ' + filtered.extend(last_char) + + return filtered + + @staticmethod + def filter_with_english_letters(buf): + """ + Returns a copy of ``buf`` that retains only the sequences of English + alphabet and high byte characters that are not between <> characters. + Also retains English alphabet and high byte characters immediately + before occurrences of >. + + This filter can be applied to all scripts which contain both English + characters and extended ASCII characters, but is currently only used by + ``Latin1Prober``. + """ + filtered = bytearray() + in_tag = False + prev = 0 + + for curr in range(len(buf)): + # Slice here to get bytes instead of an int with Python 3 + buf_char = buf[curr:curr + 1] + # Check if we're coming out of or entering an HTML tag + if buf_char == b'>': + in_tag = False + elif buf_char == b'<': + in_tag = True + + # If current character is not extended-ASCII and not alphabetic... + if buf_char < b'\x80' and not buf_char.isalpha(): + # ...and we're not in a tag + if curr > prev and not in_tag: + # Keep everything after last non-extended-ASCII, + # non-alphabetic character + filtered.extend(buf[prev:curr]) + # Output a space to delimit stretch we kept + filtered.extend(b' ') + prev = curr + 1 + + # If we're not in a tag... + if not in_tag: + # Keep everything after last non-extended-ASCII, non-alphabetic + # character + filtered.extend(buf[prev:]) + + return filtered diff --git a/env/lib/python2.7/site-packages/chardet/charsetprober.pyc b/env/lib/python2.7/site-packages/chardet/charsetprober.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ec295f85610a2f711c10af3658ddccb067e00e51 GIT binary patch literal 3984 zcmcInU31$+6kW?7O;U$6v;_hK-InR#(k6jn;33ndq)DKi>4c8#QkqVXWod0Il_gcX zZt6}lbf*0syz=6EdJAt?F<3I!yX1SJ5> z(FCu6r$l%#Ev8fz0!9$fe@Xxs_0MpB1`YkQ!mn`uoKUBQe`++o%FUTkbDo>CqvjjJ zuGdZjM5oQ4KW=)2ZFFs-u4^cO?obG)AP(_E#S*3{_DjN)2^94Jqd;UR5<9h1C{2l~ zaik1I%h4PXnksaoj?)f8qf$cy!?@Ey%*-t69cAvKi90j&kQ2E*s>g+xy`sPggyxgRji7f2~Zy>#~vzhVuncU>xTo zn9+n<6lU@D$SJyLZVt&ARE!Y&qhL(9Uc@aMmtcRkwj0}oR5YOzW3U96!BUJS08+nAW2cRV@}I&CJiKnJXlJ0TJgH6sg`t9%mZO8*5~9^_ zPbW&`e_JX4GyI+Z%u}v?J z-hgQ^&++1@9r!Bp)EavJ9xI9?Lt8>6%YJATR0?r>SrkVczo+6b6pPu@ZgK( z*W;&pZu(fInBb{O2c`?9mMYXrKKeeh&x7+h8eIj$N#98Dx2;m?xshy<8*#tWHPXZq zS!UcIlCIP$4KlY5;?&o0IShJ%QGRZ&HIUi-dPO$6ftKxlZjyu)0{B4=XfF*Cqvb(2@Ve5EWfU9PN3gett2PN-H-_-GO};{k$zB`+Q*Hy;nUm zD)PBI(41lXs7=h}oikem<>Ndc1TO>c(NtsmAwusE`04QcUCc7%`LQf^c}O&4phE&zpx@Tsk3?j& z!EPeBCEmVxR2GLg7lP}SNE;*{un?W+&JuS9bYh`SJcp5GR)reX_i=tAxj+L3VWK3` zUr21K^aru1@MO@NlDJ5kk@exIM-8%P7 zD`Ths&+Ht@SSvQ&5kK?k#ysUnWc-0nY}7aJ+?nw88f4N)=voHLAjTYMaGpdZx7Tdm zg>FZmX73Tr<~T+H7F6(C2ye6NTwb3fIW4*U778ZkS1!bxYbnm**-jj)i0Rr$`^u)> z-F^oJzvVE+ZQ>gXK@d5{?eO3vRZqD>&{+hKHB;pHdzf>`@q@s0o#6)Ogv!t^MJFPC z35BT67Al2`wPYEHNm`!mob0{3A7yJE?UMxrj>$ktL z8=LnVPUE({jmF(AJ|5dN)TTo%JBK%g1g|9no8IbdHb`#)_96|SQFNpWyq>~N=i77; zu|J^V3W~AlaqU06rr0FjAL3$tt5_AQTAnQ~l!jM%;c~WWB*U4MQ%yzvp3YuMNcrN{ czVZy4njSI^()BE`>+cgnnyOl;T4#!X0abvhSpWb4 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/cli/__init__.py b/env/lib/python2.7/site-packages/chardet/cli/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/cli/__init__.py @@ -0,0 +1 @@ + diff --git a/env/lib/python2.7/site-packages/chardet/cli/__init__.pyc b/env/lib/python2.7/site-packages/chardet/cli/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3cf36634ab4ebc50a8e835030571d326a7e52ce0 GIT binary patch literal 140 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 R=Fb>BU4dx8VHcgn!r#T#buj<{ literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/escsm.py b/env/lib/python2.7/site-packages/chardet/escsm.py new file mode 100644 index 0000000..0069523 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/escsm.py @@ -0,0 +1,246 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .enums import MachineState + +HZ_CLS = ( +1,0,0,0,0,0,0,0, # 00 - 07 +0,0,0,0,0,0,0,0, # 08 - 0f +0,0,0,0,0,0,0,0, # 10 - 17 +0,0,0,1,0,0,0,0, # 18 - 1f +0,0,0,0,0,0,0,0, # 20 - 27 +0,0,0,0,0,0,0,0, # 28 - 2f +0,0,0,0,0,0,0,0, # 30 - 37 +0,0,0,0,0,0,0,0, # 38 - 3f +0,0,0,0,0,0,0,0, # 40 - 47 +0,0,0,0,0,0,0,0, # 48 - 4f +0,0,0,0,0,0,0,0, # 50 - 57 +0,0,0,0,0,0,0,0, # 58 - 5f +0,0,0,0,0,0,0,0, # 60 - 67 +0,0,0,0,0,0,0,0, # 68 - 6f +0,0,0,0,0,0,0,0, # 70 - 77 +0,0,0,4,0,5,2,0, # 78 - 7f +1,1,1,1,1,1,1,1, # 80 - 87 +1,1,1,1,1,1,1,1, # 88 - 8f +1,1,1,1,1,1,1,1, # 90 - 97 +1,1,1,1,1,1,1,1, # 98 - 9f +1,1,1,1,1,1,1,1, # a0 - a7 +1,1,1,1,1,1,1,1, # a8 - af +1,1,1,1,1,1,1,1, # b0 - b7 +1,1,1,1,1,1,1,1, # b8 - bf +1,1,1,1,1,1,1,1, # c0 - c7 +1,1,1,1,1,1,1,1, # c8 - cf +1,1,1,1,1,1,1,1, # d0 - d7 +1,1,1,1,1,1,1,1, # d8 - df +1,1,1,1,1,1,1,1, # e0 - e7 +1,1,1,1,1,1,1,1, # e8 - ef +1,1,1,1,1,1,1,1, # f0 - f7 +1,1,1,1,1,1,1,1, # f8 - ff +) + +HZ_ST = ( +MachineState.START,MachineState.ERROR, 3,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,# 00-07 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 08-0f +MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START, 4,MachineState.ERROR,# 10-17 + 5,MachineState.ERROR, 6,MachineState.ERROR, 5, 5, 4,MachineState.ERROR,# 18-1f + 4,MachineState.ERROR, 4, 4, 4,MachineState.ERROR, 4,MachineState.ERROR,# 20-27 + 4,MachineState.ITS_ME,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 28-2f +) + +HZ_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0) + +HZ_SM_MODEL = {'class_table': HZ_CLS, + 'class_factor': 6, + 'state_table': HZ_ST, + 'char_len_table': HZ_CHAR_LEN_TABLE, + 'name': "HZ-GB-2312", + 'language': 'Chinese'} + +ISO2022CN_CLS = ( +2,0,0,0,0,0,0,0, # 00 - 07 +0,0,0,0,0,0,0,0, # 08 - 0f +0,0,0,0,0,0,0,0, # 10 - 17 +0,0,0,1,0,0,0,0, # 18 - 1f +0,0,0,0,0,0,0,0, # 20 - 27 +0,3,0,0,0,0,0,0, # 28 - 2f +0,0,0,0,0,0,0,0, # 30 - 37 +0,0,0,0,0,0,0,0, # 38 - 3f +0,0,0,4,0,0,0,0, # 40 - 47 +0,0,0,0,0,0,0,0, # 48 - 4f +0,0,0,0,0,0,0,0, # 50 - 57 +0,0,0,0,0,0,0,0, # 58 - 5f +0,0,0,0,0,0,0,0, # 60 - 67 +0,0,0,0,0,0,0,0, # 68 - 6f +0,0,0,0,0,0,0,0, # 70 - 77 +0,0,0,0,0,0,0,0, # 78 - 7f +2,2,2,2,2,2,2,2, # 80 - 87 +2,2,2,2,2,2,2,2, # 88 - 8f +2,2,2,2,2,2,2,2, # 90 - 97 +2,2,2,2,2,2,2,2, # 98 - 9f +2,2,2,2,2,2,2,2, # a0 - a7 +2,2,2,2,2,2,2,2, # a8 - af +2,2,2,2,2,2,2,2, # b0 - b7 +2,2,2,2,2,2,2,2, # b8 - bf +2,2,2,2,2,2,2,2, # c0 - c7 +2,2,2,2,2,2,2,2, # c8 - cf +2,2,2,2,2,2,2,2, # d0 - d7 +2,2,2,2,2,2,2,2, # d8 - df +2,2,2,2,2,2,2,2, # e0 - e7 +2,2,2,2,2,2,2,2, # e8 - ef +2,2,2,2,2,2,2,2, # f0 - f7 +2,2,2,2,2,2,2,2, # f8 - ff +) + +ISO2022CN_ST = ( +MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 00-07 +MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 08-0f +MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 10-17 +MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 4,MachineState.ERROR,# 18-1f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 20-27 + 5, 6,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 28-2f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 30-37 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,# 38-3f +) + +ISO2022CN_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0, 0, 0, 0) + +ISO2022CN_SM_MODEL = {'class_table': ISO2022CN_CLS, + 'class_factor': 9, + 'state_table': ISO2022CN_ST, + 'char_len_table': ISO2022CN_CHAR_LEN_TABLE, + 'name': "ISO-2022-CN", + 'language': 'Chinese'} + +ISO2022JP_CLS = ( +2,0,0,0,0,0,0,0, # 00 - 07 +0,0,0,0,0,0,2,2, # 08 - 0f +0,0,0,0,0,0,0,0, # 10 - 17 +0,0,0,1,0,0,0,0, # 18 - 1f +0,0,0,0,7,0,0,0, # 20 - 27 +3,0,0,0,0,0,0,0, # 28 - 2f +0,0,0,0,0,0,0,0, # 30 - 37 +0,0,0,0,0,0,0,0, # 38 - 3f +6,0,4,0,8,0,0,0, # 40 - 47 +0,9,5,0,0,0,0,0, # 48 - 4f +0,0,0,0,0,0,0,0, # 50 - 57 +0,0,0,0,0,0,0,0, # 58 - 5f +0,0,0,0,0,0,0,0, # 60 - 67 +0,0,0,0,0,0,0,0, # 68 - 6f +0,0,0,0,0,0,0,0, # 70 - 77 +0,0,0,0,0,0,0,0, # 78 - 7f +2,2,2,2,2,2,2,2, # 80 - 87 +2,2,2,2,2,2,2,2, # 88 - 8f +2,2,2,2,2,2,2,2, # 90 - 97 +2,2,2,2,2,2,2,2, # 98 - 9f +2,2,2,2,2,2,2,2, # a0 - a7 +2,2,2,2,2,2,2,2, # a8 - af +2,2,2,2,2,2,2,2, # b0 - b7 +2,2,2,2,2,2,2,2, # b8 - bf +2,2,2,2,2,2,2,2, # c0 - c7 +2,2,2,2,2,2,2,2, # c8 - cf +2,2,2,2,2,2,2,2, # d0 - d7 +2,2,2,2,2,2,2,2, # d8 - df +2,2,2,2,2,2,2,2, # e0 - e7 +2,2,2,2,2,2,2,2, # e8 - ef +2,2,2,2,2,2,2,2, # f0 - f7 +2,2,2,2,2,2,2,2, # f8 - ff +) + +ISO2022JP_ST = ( +MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 00-07 +MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 08-0f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 10-17 +MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,# 18-1f +MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 4,MachineState.ERROR,MachineState.ERROR,# 20-27 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 6,MachineState.ITS_ME,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,# 28-2f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,# 30-37 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 38-3f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,MachineState.START,# 40-47 +) + +ISO2022JP_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + +ISO2022JP_SM_MODEL = {'class_table': ISO2022JP_CLS, + 'class_factor': 10, + 'state_table': ISO2022JP_ST, + 'char_len_table': ISO2022JP_CHAR_LEN_TABLE, + 'name': "ISO-2022-JP", + 'language': 'Japanese'} + +ISO2022KR_CLS = ( +2,0,0,0,0,0,0,0, # 00 - 07 +0,0,0,0,0,0,0,0, # 08 - 0f +0,0,0,0,0,0,0,0, # 10 - 17 +0,0,0,1,0,0,0,0, # 18 - 1f +0,0,0,0,3,0,0,0, # 20 - 27 +0,4,0,0,0,0,0,0, # 28 - 2f +0,0,0,0,0,0,0,0, # 30 - 37 +0,0,0,0,0,0,0,0, # 38 - 3f +0,0,0,5,0,0,0,0, # 40 - 47 +0,0,0,0,0,0,0,0, # 48 - 4f +0,0,0,0,0,0,0,0, # 50 - 57 +0,0,0,0,0,0,0,0, # 58 - 5f +0,0,0,0,0,0,0,0, # 60 - 67 +0,0,0,0,0,0,0,0, # 68 - 6f +0,0,0,0,0,0,0,0, # 70 - 77 +0,0,0,0,0,0,0,0, # 78 - 7f +2,2,2,2,2,2,2,2, # 80 - 87 +2,2,2,2,2,2,2,2, # 88 - 8f +2,2,2,2,2,2,2,2, # 90 - 97 +2,2,2,2,2,2,2,2, # 98 - 9f +2,2,2,2,2,2,2,2, # a0 - a7 +2,2,2,2,2,2,2,2, # a8 - af +2,2,2,2,2,2,2,2, # b0 - b7 +2,2,2,2,2,2,2,2, # b8 - bf +2,2,2,2,2,2,2,2, # c0 - c7 +2,2,2,2,2,2,2,2, # c8 - cf +2,2,2,2,2,2,2,2, # d0 - d7 +2,2,2,2,2,2,2,2, # d8 - df +2,2,2,2,2,2,2,2, # e0 - e7 +2,2,2,2,2,2,2,2, # e8 - ef +2,2,2,2,2,2,2,2, # f0 - f7 +2,2,2,2,2,2,2,2, # f8 - ff +) + +ISO2022KR_ST = ( +MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,# 00-07 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 08-0f +MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 4,MachineState.ERROR,MachineState.ERROR,# 10-17 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 18-1f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 20-27 +) + +ISO2022KR_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0) + +ISO2022KR_SM_MODEL = {'class_table': ISO2022KR_CLS, + 'class_factor': 6, + 'state_table': ISO2022KR_ST, + 'char_len_table': ISO2022KR_CHAR_LEN_TABLE, + 'name': "ISO-2022-KR", + 'language': 'Korean'} + + diff --git a/env/lib/python2.7/site-packages/chardet/escsm.pyc b/env/lib/python2.7/site-packages/chardet/escsm.pyc new file mode 100644 index 0000000000000000000000000000000000000000..97ae69fbde614e249b925ef0878b260c1367ad11 GIT binary patch literal 8000 zcmeHLZBH6O5S{}B0jck;ZS9NwM4FsZO!(9`DkVh)G(em5zL1kW^cq0o9ZmX+`UCq1 zI5!)U#2|qmnR|ko{bh1s@ zVBeY#gVuGEP-E7fGt8snFqEBO4Ra| z&*g;$`TF+ztss)I5ijbrz*g^51>o?1h9E|M93_@_v4MJlN zlo+sApu~C9q9STbB5KH?sKrIpmOW9!7`_H2ao4EXd+%n0hc9GMq=wVIn7vGK8*@W& zdl7W|)7|%~a3ec?w~^Q7M@16|?pb#FH1eQevb_Oikw-ZpqP!-ej2w#cqKNXki1JgB zo466)g0g(OC|_T~b&7k*gZkcCHwHrZ(>I8YtKFDFuk9R?vHOiAC@a9WKw0IE!Y%JA zV#py!tqMmy6OP&tjzV8Phf4Ato(?*m5|E_ET)?KN)-Uw7Rxwpm({T)Xh?+TS0@MVl z!2<=%I5zdBY8W+BJ!@)wx)?Xqx_NoU1q=eR1fI}@3-zkj)Y^h%#E_I%4sfJ) zR6_GIkIN=4<@oYSQ`@B^pc}Y9#LAHa6YEh#CZ>F%E1wSKJgxXro!sI>9{5>fCF0Bx zkL-vf6~y6%N7PAv8caS{$5SWysW#EYIQ3wnX8b?O`Tmh6~D~z`ojaD0g>l54INhl`D_>Z-Cbv*`XlNhKJCHx8h;?!5*FV!y?5COCnw~ zU9cqWW9@Od9~LQISP~fsOVSo>64wAuV{GGa$82?WI(kPw>*`G=x4(aDrhe_v-8a+B z-nVAdjn;POH@~3%*t%rhruKOgryCtSVwQq<9es}{9FnD!BuiWP>;}Vum=v*|*jSJW XJ0-ox|ICA+6E|Zti*H0{ literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/eucjpprober.py b/env/lib/python2.7/site-packages/chardet/eucjpprober.py new file mode 100644 index 0000000..20ce8f7 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/eucjpprober.py @@ -0,0 +1,92 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .enums import ProbingState, MachineState +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import EUCJPDistributionAnalysis +from .jpcntx import EUCJPContextAnalysis +from .mbcssm import EUCJP_SM_MODEL + + +class EUCJPProber(MultiByteCharSetProber): + def __init__(self): + super(EUCJPProber, self).__init__() + self.coding_sm = CodingStateMachine(EUCJP_SM_MODEL) + self.distribution_analyzer = EUCJPDistributionAnalysis() + self.context_analyzer = EUCJPContextAnalysis() + self.reset() + + def reset(self): + super(EUCJPProber, self).reset() + self.context_analyzer.reset() + + @property + def charset_name(self): + return "EUC-JP" + + @property + def language(self): + return "Japanese" + + def feed(self, byte_str): + for i in range(len(byte_str)): + # PY3K: byte_str is a byte array, so byte_str[i] is an int, not a byte + coding_state = self.coding_sm.next_state(byte_str[i]) + if coding_state == MachineState.ERROR: + self.logger.debug('%s %s prober hit error at byte %s', + self.charset_name, self.language, i) + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + char_len = self.coding_sm.get_current_charlen() + if i == 0: + self._last_char[1] = byte_str[0] + self.context_analyzer.feed(self._last_char, char_len) + self.distribution_analyzer.feed(self._last_char, char_len) + else: + self.context_analyzer.feed(byte_str[i - 1:i + 1], + char_len) + self.distribution_analyzer.feed(byte_str[i - 1:i + 1], + char_len) + + self._last_char[0] = byte_str[-1] + + if self.state == ProbingState.DETECTING: + if (self.context_analyzer.got_enough_data() and + (self.get_confidence() > self.SHORTCUT_THRESHOLD)): + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + context_conf = self.context_analyzer.get_confidence() + distrib_conf = self.distribution_analyzer.get_confidence() + return max(context_conf, distrib_conf) diff --git a/env/lib/python2.7/site-packages/chardet/eucjpprober.pyc b/env/lib/python2.7/site-packages/chardet/eucjpprober.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d8617ead9849157eb489c04b04deaa5275bb012a GIT binary patch literal 2926 zcmcIm-)|d55S}~#PLrldnzW%vB%+lpptKJ>@X%JYj-id3A38grT0*Cb@8X<$cXsdA zC_$}+1dsd$edCEg5Q$g#zF9jB3J3`W`*v=3W^Q)&+nL!d{kAZ-`S8~leVP7Bcz=Ob z`~VW-aU>B*9qBoey3%vSA=j0pBxzZCWjiiOQjxSOy{a9TC8M|&ZK^4$KTo8YCktuW-RN(8P;6W6SQI*Boaal zYykmK2JY;X2o2CCF4%*L4okCPRl>5W)g-KFr!HQnS%tYikznJ7w$O^FAO?>kuVKuU zp-ZS8Qxa3Aad7>Lm@2vK*TmFk{RTP1IsE`Gb`*%+CKqNZG(H(exmV+`4&wW978~F9 zIJrl6Oar8^nEOTQmC0HK3D2SI2ZZ^17@|pYO}|it&m=lo9u<+XTR}TTlpHnj7A3`J z=-o5v_}(}k-#whfNq9H=`XIUg-Mu~{A&kt~JDT)|RL_A#A3dU?_;?HKF_3iy9>e7_yryW&`K$B@$k(aLI zsVY@vi0st#8rGGAWJ2npaGE(8ULnh$m;F~Ov#%HQ>z{?+O%sF4T`8Zr;#yZ$b!}_v?c3RGH@J}84sWtg_txcQnauN8yn5?oR=SE{=9cXio1k}! z4LmlXH;!Yo5#{+P-w4dcAn@x=6e|0ih^*6PzVtiQRXrKF`r0=;_eqb zXgnr|sS!>Ca%G0m;bh<~g6S=hps|p`vAwRp)7Gvvq}^xT4!I1(FZT|1 zxBO>aHPh)n_PS;TYpC+RMUQ>BY?BuZ`R`Tv1AP7Y%z`-U?wZ!+6;$T3_DET&mz*_7 zZ#gyRmUGoza+kqfb(U?p;nuRXXz61R#ugrAG?K?ACvwRST|p?=v__W9&N?mQtlQp) zBnmi9rol;*ZwnC>`u1Aj<9(z6O%FL`Tm~j|;02nNaMATQx#QEbm-W{7ZM^vDD4Zl1 z>hY$Bk7^-HaAKR&b3sd_b#3ol)ZTyJJKhIw(@&yObsDusc@h7{=5CYWr!gO8leEx; zu{p+AO%JC>hs|Y=m06?HULZ6hQ+w;v8-~3q@N_?So3M8bCgE`0&&-LvRB#OQ1@0j1 a>XCd|>s4SMSim2>59_+_HRsywU-}c58Bv7* literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/euckrfreq.py b/env/lib/python2.7/site-packages/chardet/euckrfreq.py new file mode 100644 index 0000000..b68078c --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/euckrfreq.py @@ -0,0 +1,195 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# Sampling from about 20M text materials include literature and computer technology + +# 128 --> 0.79 +# 256 --> 0.92 +# 512 --> 0.986 +# 1024 --> 0.99944 +# 2048 --> 0.99999 +# +# Idea Distribution Ratio = 0.98653 / (1-0.98653) = 73.24 +# Random Distribution Ration = 512 / (2350-512) = 0.279. +# +# Typical Distribution Ratio + +EUCKR_TYPICAL_DISTRIBUTION_RATIO = 6.0 + +EUCKR_TABLE_SIZE = 2352 + +# Char to FreqOrder table , +EUCKR_CHAR_TO_FREQ_ORDER = ( + 13, 130, 120,1396, 481,1719,1720, 328, 609, 212,1721, 707, 400, 299,1722, 87, +1397,1723, 104, 536,1117,1203,1724,1267, 685,1268, 508,1725,1726,1727,1728,1398, +1399,1729,1730,1731, 141, 621, 326,1057, 368,1732, 267, 488, 20,1733,1269,1734, + 945,1400,1735, 47, 904,1270,1736,1737, 773, 248,1738, 409, 313, 786, 429,1739, + 116, 987, 813,1401, 683, 75,1204, 145,1740,1741,1742,1743, 16, 847, 667, 622, + 708,1744,1745,1746, 966, 787, 304, 129,1747, 60, 820, 123, 676,1748,1749,1750, +1751, 617,1752, 626,1753,1754,1755,1756, 653,1757,1758,1759,1760,1761,1762, 856, + 344,1763,1764,1765,1766, 89, 401, 418, 806, 905, 848,1767,1768,1769, 946,1205, + 709,1770,1118,1771, 241,1772,1773,1774,1271,1775, 569,1776, 999,1777,1778,1779, +1780, 337, 751,1058, 28, 628, 254,1781, 177, 906, 270, 349, 891,1079,1782, 19, +1783, 379,1784, 315,1785, 629, 754,1402, 559,1786, 636, 203,1206,1787, 710, 567, +1788, 935, 814,1789,1790,1207, 766, 528,1791,1792,1208,1793,1794,1795,1796,1797, +1403,1798,1799, 533,1059,1404,1405,1156,1406, 936, 884,1080,1800, 351,1801,1802, +1803,1804,1805, 801,1806,1807,1808,1119,1809,1157, 714, 474,1407,1810, 298, 899, + 885,1811,1120, 802,1158,1812, 892,1813,1814,1408, 659,1815,1816,1121,1817,1818, +1819,1820,1821,1822, 319,1823, 594, 545,1824, 815, 937,1209,1825,1826, 573,1409, +1022,1827,1210,1828,1829,1830,1831,1832,1833, 556, 722, 807,1122,1060,1834, 697, +1835, 900, 557, 715,1836,1410, 540,1411, 752,1159, 294, 597,1211, 976, 803, 770, +1412,1837,1838, 39, 794,1413, 358,1839, 371, 925,1840, 453, 661, 788, 531, 723, + 544,1023,1081, 869, 91,1841, 392, 430, 790, 602,1414, 677,1082, 457,1415,1416, +1842,1843, 475, 327,1024,1417, 795, 121,1844, 733, 403,1418,1845,1846,1847, 300, + 119, 711,1212, 627,1848,1272, 207,1849,1850, 796,1213, 382,1851, 519,1852,1083, + 893,1853,1854,1855, 367, 809, 487, 671,1856, 663,1857,1858, 956, 471, 306, 857, +1859,1860,1160,1084,1861,1862,1863,1864,1865,1061,1866,1867,1868,1869,1870,1871, + 282, 96, 574,1872, 502,1085,1873,1214,1874, 907,1875,1876, 827, 977,1419,1420, +1421, 268,1877,1422,1878,1879,1880, 308,1881, 2, 537,1882,1883,1215,1884,1885, + 127, 791,1886,1273,1423,1887, 34, 336, 404, 643,1888, 571, 654, 894, 840,1889, + 0, 886,1274, 122, 575, 260, 908, 938,1890,1275, 410, 316,1891,1892, 100,1893, +1894,1123, 48,1161,1124,1025,1895, 633, 901,1276,1896,1897, 115, 816,1898, 317, +1899, 694,1900, 909, 734,1424, 572, 866,1425, 691, 85, 524,1010, 543, 394, 841, +1901,1902,1903,1026,1904,1905,1906,1907,1908,1909, 30, 451, 651, 988, 310,1910, +1911,1426, 810,1216, 93,1912,1913,1277,1217,1914, 858, 759, 45, 58, 181, 610, + 269,1915,1916, 131,1062, 551, 443,1000, 821,1427, 957, 895,1086,1917,1918, 375, +1919, 359,1920, 687,1921, 822,1922, 293,1923,1924, 40, 662, 118, 692, 29, 939, + 887, 640, 482, 174,1925, 69,1162, 728,1428, 910,1926,1278,1218,1279, 386, 870, + 217, 854,1163, 823,1927,1928,1929,1930, 834,1931, 78,1932, 859,1933,1063,1934, +1935,1936,1937, 438,1164, 208, 595,1938,1939,1940,1941,1219,1125,1942, 280, 888, +1429,1430,1220,1431,1943,1944,1945,1946,1947,1280, 150, 510,1432,1948,1949,1950, +1951,1952,1953,1954,1011,1087,1955,1433,1043,1956, 881,1957, 614, 958,1064,1065, +1221,1958, 638,1001, 860, 967, 896,1434, 989, 492, 553,1281,1165,1959,1282,1002, +1283,1222,1960,1961,1962,1963, 36, 383, 228, 753, 247, 454,1964, 876, 678,1965, +1966,1284, 126, 464, 490, 835, 136, 672, 529, 940,1088,1435, 473,1967,1968, 467, + 50, 390, 227, 587, 279, 378, 598, 792, 968, 240, 151, 160, 849, 882,1126,1285, + 639,1044, 133, 140, 288, 360, 811, 563,1027, 561, 142, 523,1969,1970,1971, 7, + 103, 296, 439, 407, 506, 634, 990,1972,1973,1974,1975, 645,1976,1977,1978,1979, +1980,1981, 236,1982,1436,1983,1984,1089, 192, 828, 618, 518,1166, 333,1127,1985, + 818,1223,1986,1987,1988,1989,1990,1991,1992,1993, 342,1128,1286, 746, 842,1994, +1995, 560, 223,1287, 98, 8, 189, 650, 978,1288,1996,1437,1997, 17, 345, 250, + 423, 277, 234, 512, 226, 97, 289, 42, 167,1998, 201,1999,2000, 843, 836, 824, + 532, 338, 783,1090, 182, 576, 436,1438,1439, 527, 500,2001, 947, 889,2002,2003, +2004,2005, 262, 600, 314, 447,2006, 547,2007, 693, 738,1129,2008, 71,1440, 745, + 619, 688,2009, 829,2010,2011, 147,2012, 33, 948,2013,2014, 74, 224,2015, 61, + 191, 918, 399, 637,2016,1028,1130, 257, 902,2017,2018,2019,2020,2021,2022,2023, +2024,2025,2026, 837,2027,2028,2029,2030, 179, 874, 591, 52, 724, 246,2031,2032, +2033,2034,1167, 969,2035,1289, 630, 605, 911,1091,1168,2036,2037,2038,1441, 912, +2039, 623,2040,2041, 253,1169,1290,2042,1442, 146, 620, 611, 577, 433,2043,1224, + 719,1170, 959, 440, 437, 534, 84, 388, 480,1131, 159, 220, 198, 679,2044,1012, + 819,1066,1443, 113,1225, 194, 318,1003,1029,2045,2046,2047,2048,1067,2049,2050, +2051,2052,2053, 59, 913, 112,2054, 632,2055, 455, 144, 739,1291,2056, 273, 681, + 499,2057, 448,2058,2059, 760,2060,2061, 970, 384, 169, 245,1132,2062,2063, 414, +1444,2064,2065, 41, 235,2066, 157, 252, 877, 568, 919, 789, 580,2067, 725,2068, +2069,1292,2070,2071,1445,2072,1446,2073,2074, 55, 588, 66,1447, 271,1092,2075, +1226,2076, 960,1013, 372,2077,2078,2079,2080,2081,1293,2082,2083,2084,2085, 850, +2086,2087,2088,2089,2090, 186,2091,1068, 180,2092,2093,2094, 109,1227, 522, 606, +2095, 867,1448,1093, 991,1171, 926, 353,1133,2096, 581,2097,2098,2099,1294,1449, +1450,2100, 596,1172,1014,1228,2101,1451,1295,1173,1229,2102,2103,1296,1134,1452, + 949,1135,2104,2105,1094,1453,1454,1455,2106,1095,2107,2108,2109,2110,2111,2112, +2113,2114,2115,2116,2117, 804,2118,2119,1230,1231, 805,1456, 405,1136,2120,2121, +2122,2123,2124, 720, 701,1297, 992,1457, 927,1004,2125,2126,2127,2128,2129,2130, + 22, 417,2131, 303,2132, 385,2133, 971, 520, 513,2134,1174, 73,1096, 231, 274, + 962,1458, 673,2135,1459,2136, 152,1137,2137,2138,2139,2140,1005,1138,1460,1139, +2141,2142,2143,2144, 11, 374, 844,2145, 154,1232, 46,1461,2146, 838, 830, 721, +1233, 106,2147, 90, 428, 462, 578, 566,1175, 352,2148,2149, 538,1234, 124,1298, +2150,1462, 761, 565,2151, 686,2152, 649,2153, 72, 173,2154, 460, 415,2155,1463, +2156,1235, 305,2157,2158,2159,2160,2161,2162, 579,2163,2164,2165,2166,2167, 747, +2168,2169,2170,2171,1464, 669,2172,2173,2174,2175,2176,1465,2177, 23, 530, 285, +2178, 335, 729,2179, 397,2180,2181,2182,1030,2183,2184, 698,2185,2186, 325,2187, +2188, 369,2189, 799,1097,1015, 348,2190,1069, 680,2191, 851,1466,2192,2193, 10, +2194, 613, 424,2195, 979, 108, 449, 589, 27, 172, 81,1031, 80, 774, 281, 350, +1032, 525, 301, 582,1176,2196, 674,1045,2197,2198,1467, 730, 762,2199,2200,2201, +2202,1468,2203, 993,2204,2205, 266,1070, 963,1140,2206,2207,2208, 664,1098, 972, +2209,2210,2211,1177,1469,1470, 871,2212,2213,2214,2215,2216,1471,2217,2218,2219, +2220,2221,2222,2223,2224,2225,2226,2227,1472,1236,2228,2229,2230,2231,2232,2233, +2234,2235,1299,2236,2237, 200,2238, 477, 373,2239,2240, 731, 825, 777,2241,2242, +2243, 521, 486, 548,2244,2245,2246,1473,1300, 53, 549, 137, 875, 76, 158,2247, +1301,1474, 469, 396,1016, 278, 712,2248, 321, 442, 503, 767, 744, 941,1237,1178, +1475,2249, 82, 178,1141,1179, 973,2250,1302,2251, 297,2252,2253, 570,2254,2255, +2256, 18, 450, 206,2257, 290, 292,1142,2258, 511, 162, 99, 346, 164, 735,2259, +1476,1477, 4, 554, 343, 798,1099,2260,1100,2261, 43, 171,1303, 139, 215,2262, +2263, 717, 775,2264,1033, 322, 216,2265, 831,2266, 149,2267,1304,2268,2269, 702, +1238, 135, 845, 347, 309,2270, 484,2271, 878, 655, 238,1006,1478,2272, 67,2273, + 295,2274,2275, 461,2276, 478, 942, 412,2277,1034,2278,2279,2280, 265,2281, 541, +2282,2283,2284,2285,2286, 70, 852,1071,2287,2288,2289,2290, 21, 56, 509, 117, + 432,2291,2292, 331, 980, 552,1101, 148, 284, 105, 393,1180,1239, 755,2293, 187, +2294,1046,1479,2295, 340,2296, 63,1047, 230,2297,2298,1305, 763,1306, 101, 800, + 808, 494,2299,2300,2301, 903,2302, 37,1072, 14, 5,2303, 79, 675,2304, 312, +2305,2306,2307,2308,2309,1480, 6,1307,2310,2311,2312, 1, 470, 35, 24, 229, +2313, 695, 210, 86, 778, 15, 784, 592, 779, 32, 77, 855, 964,2314, 259,2315, + 501, 380,2316,2317, 83, 981, 153, 689,1308,1481,1482,1483,2318,2319, 716,1484, +2320,2321,2322,2323,2324,2325,1485,2326,2327, 128, 57, 68, 261,1048, 211, 170, +1240, 31,2328, 51, 435, 742,2329,2330,2331, 635,2332, 264, 456,2333,2334,2335, + 425,2336,1486, 143, 507, 263, 943,2337, 363, 920,1487, 256,1488,1102, 243, 601, +1489,2338,2339,2340,2341,2342,2343,2344, 861,2345,2346,2347,2348,2349,2350, 395, +2351,1490,1491, 62, 535, 166, 225,2352,2353, 668, 419,1241, 138, 604, 928,2354, +1181,2355,1492,1493,2356,2357,2358,1143,2359, 696,2360, 387, 307,1309, 682, 476, +2361,2362, 332, 12, 222, 156,2363, 232,2364, 641, 276, 656, 517,1494,1495,1035, + 416, 736,1496,2365,1017, 586,2366,2367,2368,1497,2369, 242,2370,2371,2372,1498, +2373, 965, 713,2374,2375,2376,2377, 740, 982,1499, 944,1500,1007,2378,2379,1310, +1501,2380,2381,2382, 785, 329,2383,2384,1502,2385,2386,2387, 932,2388,1503,2389, +2390,2391,2392,1242,2393,2394,2395,2396,2397, 994, 950,2398,2399,2400,2401,1504, +1311,2402,2403,2404,2405,1049, 749,2406,2407, 853, 718,1144,1312,2408,1182,1505, +2409,2410, 255, 516, 479, 564, 550, 214,1506,1507,1313, 413, 239, 444, 339,1145, +1036,1508,1509,1314,1037,1510,1315,2411,1511,2412,2413,2414, 176, 703, 497, 624, + 593, 921, 302,2415, 341, 165,1103,1512,2416,1513,2417,2418,2419, 376,2420, 700, +2421,2422,2423, 258, 768,1316,2424,1183,2425, 995, 608,2426,2427,2428,2429, 221, +2430,2431,2432,2433,2434,2435,2436,2437, 195, 323, 726, 188, 897, 983,1317, 377, + 644,1050, 879,2438, 452,2439,2440,2441,2442,2443,2444, 914,2445,2446,2447,2448, + 915, 489,2449,1514,1184,2450,2451, 515, 64, 427, 495,2452, 583,2453, 483, 485, +1038, 562, 213,1515, 748, 666,2454,2455,2456,2457, 334,2458, 780, 996,1008, 705, +1243,2459,2460,2461,2462,2463, 114,2464, 493,1146, 366, 163,1516, 961,1104,2465, + 291,2466,1318,1105,2467,1517, 365,2468, 355, 951,1244,2469,1319,2470, 631,2471, +2472, 218,1320, 364, 320, 756,1518,1519,1321,1520,1322,2473,2474,2475,2476, 997, +2477,2478,2479,2480, 665,1185,2481, 916,1521,2482,2483,2484, 584, 684,2485,2486, + 797,2487,1051,1186,2488,2489,2490,1522,2491,2492, 370,2493,1039,1187, 65,2494, + 434, 205, 463,1188,2495, 125, 812, 391, 402, 826, 699, 286, 398, 155, 781, 771, + 585,2496, 590, 505,1073,2497, 599, 244, 219, 917,1018, 952, 646,1523,2498,1323, +2499,2500, 49, 984, 354, 741,2501, 625,2502,1324,2503,1019, 190, 357, 757, 491, + 95, 782, 868,2504,2505,2506,2507,2508,2509, 134,1524,1074, 422,1525, 898,2510, + 161,2511,2512,2513,2514, 769,2515,1526,2516,2517, 411,1325,2518, 472,1527,2519, +2520,2521,2522,2523,2524, 985,2525,2526,2527,2528,2529,2530, 764,2531,1245,2532, +2533, 25, 204, 311,2534, 496,2535,1052,2536,2537,2538,2539,2540,2541,2542, 199, + 704, 504, 468, 758, 657,1528, 196, 44, 839,1246, 272, 750,2543, 765, 862,2544, +2545,1326,2546, 132, 615, 933,2547, 732,2548,2549,2550,1189,1529,2551, 283,1247, +1053, 607, 929,2552,2553,2554, 930, 183, 872, 616,1040,1147,2555,1148,1020, 441, + 249,1075,2556,2557,2558, 466, 743,2559,2560,2561, 92, 514, 426, 420, 526,2562, +2563,2564,2565,2566,2567,2568, 185,2569,2570,2571,2572, 776,1530, 658,2573, 362, +2574, 361, 922,1076, 793,2575,2576,2577,2578,2579,2580,1531, 251,2581,2582,2583, +2584,1532, 54, 612, 237,1327,2585,2586, 275, 408, 647, 111,2587,1533,1106, 465, + 3, 458, 9, 38,2588, 107, 110, 890, 209, 26, 737, 498,2589,1534,2590, 431, + 202, 88,1535, 356, 287,1107, 660,1149,2591, 381,1536, 986,1150, 445,1248,1151, + 974,2592,2593, 846,2594, 446, 953, 184,1249,1250, 727,2595, 923, 193, 883,2596, +2597,2598, 102, 324, 539, 817,2599, 421,1041,2600, 832,2601, 94, 175, 197, 406, +2602, 459,2603,2604,2605,2606,2607, 330, 555,2608,2609,2610, 706,1108, 389,2611, +2612,2613,2614, 233,2615, 833, 558, 931, 954,1251,2616,2617,1537, 546,2618,2619, +1009,2620,2621,2622,1538, 690,1328,2623, 955,2624,1539,2625,2626, 772,2627,2628, +2629,2630,2631, 924, 648, 863, 603,2632,2633, 934,1540, 864, 865,2634, 642,1042, + 670,1190,2635,2636,2637,2638, 168,2639, 652, 873, 542,1054,1541,2640,2641,2642, # 512, 256 +) + diff --git a/env/lib/python2.7/site-packages/chardet/euckrfreq.pyc b/env/lib/python2.7/site-packages/chardet/euckrfreq.pyc new file mode 100644 index 0000000000000000000000000000000000000000..61ff0ab2e1fdecb4c081f2167b1785f1650e0452 GIT binary patch literal 24072 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 wY}>OSe9z9ljlv64Ok6+kT@6Chajpz@&h zA@iN=Llr?t zD^$~~yh{~+?3N4FIr}}bPnV@`E>p}=&GX_)H_F)_k?rJcI!lhV!A>uF)XU~wlUFOF zjXQF8b3~?dIsb5c@*eMOR4&XG0FU%XL}o%v0oP4sQ}&q$%4a;d62c>}qPG!4NYa?m zE4Uyg7N$hzkQmY@;2T}_;M!v-1p0shyCSU&0VCG(e!%>CXb(~B)Yfns@35PY9rms2 zl7K~qQA*utlrrI<2}eafT3EQGsS_><9}p{V03>rp=&S0i%T5`E4lDL+RCN*43YM8y zw3}evPFmfL7rm~^ar5b{diiBiP^(IX+g0_&=dQJld(p0vh%P=OGMp!f`(h;a#1_nqrJ&+^P){8ZwuJZ}00Qt$f88rN4YxiXBkm3Q`cyw+Iq#IMNmfRT{ bTb^V)<+oLZ1?kY?_U18pw_|xA?BD+l0M!oc literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/euctwfreq.py b/env/lib/python2.7/site-packages/chardet/euctwfreq.py new file mode 100644 index 0000000..ed7a995 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/euctwfreq.py @@ -0,0 +1,387 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# EUCTW frequency table +# Converted from big5 work +# by Taiwan's Mandarin Promotion Council +# + +# 128 --> 0.42261 +# 256 --> 0.57851 +# 512 --> 0.74851 +# 1024 --> 0.89384 +# 2048 --> 0.97583 +# +# Idea Distribution Ratio = 0.74851/(1-0.74851) =2.98 +# Random Distribution Ration = 512/(5401-512)=0.105 +# +# Typical Distribution Ratio about 25% of Ideal one, still much higher than RDR + +EUCTW_TYPICAL_DISTRIBUTION_RATIO = 0.75 + +# Char to FreqOrder table , +EUCTW_TABLE_SIZE = 5376 + +EUCTW_CHAR_TO_FREQ_ORDER = ( + 1,1800,1506, 255,1431, 198, 9, 82, 6,7310, 177, 202,3615,1256,2808, 110, # 2742 +3735, 33,3241, 261, 76, 44,2113, 16,2931,2184,1176, 659,3868, 26,3404,2643, # 2758 +1198,3869,3313,4060, 410,2211, 302, 590, 361,1963, 8, 204, 58,4296,7311,1931, # 2774 + 63,7312,7313, 317,1614, 75, 222, 159,4061,2412,1480,7314,3500,3068, 224,2809, # 2790 +3616, 3, 10,3870,1471, 29,2774,1135,2852,1939, 873, 130,3242,1123, 312,7315, # 2806 +4297,2051, 507, 252, 682,7316, 142,1914, 124, 206,2932, 34,3501,3173, 64, 604, # 2822 +7317,2494,1976,1977, 155,1990, 645, 641,1606,7318,3405, 337, 72, 406,7319, 80, # 2838 + 630, 238,3174,1509, 263, 939,1092,2644, 756,1440,1094,3406, 449, 69,2969, 591, # 2854 + 179,2095, 471, 115,2034,1843, 60, 50,2970, 134, 806,1868, 734,2035,3407, 180, # 2870 + 995,1607, 156, 537,2893, 688,7320, 319,1305, 779,2144, 514,2374, 298,4298, 359, # 2886 +2495, 90,2707,1338, 663, 11, 906,1099,2545, 20,2436, 182, 532,1716,7321, 732, # 2902 +1376,4062,1311,1420,3175, 25,2312,1056, 113, 399, 382,1949, 242,3408,2467, 529, # 2918 +3243, 475,1447,3617,7322, 117, 21, 656, 810,1297,2295,2329,3502,7323, 126,4063, # 2934 + 706, 456, 150, 613,4299, 71,1118,2036,4064, 145,3069, 85, 835, 486,2114,1246, # 2950 +1426, 428, 727,1285,1015, 800, 106, 623, 303,1281,7324,2127,2354, 347,3736, 221, # 2966 +3503,3110,7325,1955,1153,4065, 83, 296,1199,3070, 192, 624, 93,7326, 822,1897, # 2982 +2810,3111, 795,2064, 991,1554,1542,1592, 27, 43,2853, 859, 139,1456, 860,4300, # 2998 + 437, 712,3871, 164,2392,3112, 695, 211,3017,2096, 195,3872,1608,3504,3505,3618, # 3014 +3873, 234, 811,2971,2097,3874,2229,1441,3506,1615,2375, 668,2076,1638, 305, 228, # 3030 +1664,4301, 467, 415,7327, 262,2098,1593, 239, 108, 300, 200,1033, 512,1247,2077, # 3046 +7328,7329,2173,3176,3619,2673, 593, 845,1062,3244, 88,1723,2037,3875,1950, 212, # 3062 + 266, 152, 149, 468,1898,4066,4302, 77, 187,7330,3018, 37, 5,2972,7331,3876, # 3078 +7332,7333, 39,2517,4303,2894,3177,2078, 55, 148, 74,4304, 545, 483,1474,1029, # 3094 +1665, 217,1869,1531,3113,1104,2645,4067, 24, 172,3507, 900,3877,3508,3509,4305, # 3110 + 32,1408,2811,1312, 329, 487,2355,2247,2708, 784,2674, 4,3019,3314,1427,1788, # 3126 + 188, 109, 499,7334,3620,1717,1789, 888,1217,3020,4306,7335,3510,7336,3315,1520, # 3142 +3621,3878, 196,1034, 775,7337,7338, 929,1815, 249, 439, 38,7339,1063,7340, 794, # 3158 +3879,1435,2296, 46, 178,3245,2065,7341,2376,7342, 214,1709,4307, 804, 35, 707, # 3174 + 324,3622,1601,2546, 140, 459,4068,7343,7344,1365, 839, 272, 978,2257,2572,3409, # 3190 +2128,1363,3623,1423, 697, 100,3071, 48, 70,1231, 495,3114,2193,7345,1294,7346, # 3206 +2079, 462, 586,1042,3246, 853, 256, 988, 185,2377,3410,1698, 434,1084,7347,3411, # 3222 + 314,2615,2775,4308,2330,2331, 569,2280, 637,1816,2518, 757,1162,1878,1616,3412, # 3238 + 287,1577,2115, 768,4309,1671,2854,3511,2519,1321,3737, 909,2413,7348,4069, 933, # 3254 +3738,7349,2052,2356,1222,4310, 765,2414,1322, 786,4311,7350,1919,1462,1677,2895, # 3270 +1699,7351,4312,1424,2437,3115,3624,2590,3316,1774,1940,3413,3880,4070, 309,1369, # 3286 +1130,2812, 364,2230,1653,1299,3881,3512,3882,3883,2646, 525,1085,3021, 902,2000, # 3302 +1475, 964,4313, 421,1844,1415,1057,2281, 940,1364,3116, 376,4314,4315,1381, 7, # 3318 +2520, 983,2378, 336,1710,2675,1845, 321,3414, 559,1131,3022,2742,1808,1132,1313, # 3334 + 265,1481,1857,7352, 352,1203,2813,3247, 167,1089, 420,2814, 776, 792,1724,3513, # 3350 +4071,2438,3248,7353,4072,7354, 446, 229, 333,2743, 901,3739,1200,1557,4316,2647, # 3366 +1920, 395,2744,2676,3740,4073,1835, 125, 916,3178,2616,4317,7355,7356,3741,7357, # 3382 +7358,7359,4318,3117,3625,1133,2547,1757,3415,1510,2313,1409,3514,7360,2145, 438, # 3398 +2591,2896,2379,3317,1068, 958,3023, 461, 311,2855,2677,4074,1915,3179,4075,1978, # 3414 + 383, 750,2745,2617,4076, 274, 539, 385,1278,1442,7361,1154,1964, 384, 561, 210, # 3430 + 98,1295,2548,3515,7362,1711,2415,1482,3416,3884,2897,1257, 129,7363,3742, 642, # 3446 + 523,2776,2777,2648,7364, 141,2231,1333, 68, 176, 441, 876, 907,4077, 603,2592, # 3462 + 710, 171,3417, 404, 549, 18,3118,2393,1410,3626,1666,7365,3516,4319,2898,4320, # 3478 +7366,2973, 368,7367, 146, 366, 99, 871,3627,1543, 748, 807,1586,1185, 22,2258, # 3494 + 379,3743,3180,7368,3181, 505,1941,2618,1991,1382,2314,7369, 380,2357, 218, 702, # 3510 +1817,1248,3418,3024,3517,3318,3249,7370,2974,3628, 930,3250,3744,7371, 59,7372, # 3526 + 585, 601,4078, 497,3419,1112,1314,4321,1801,7373,1223,1472,2174,7374, 749,1836, # 3542 + 690,1899,3745,1772,3885,1476, 429,1043,1790,2232,2116, 917,4079, 447,1086,1629, # 3558 +7375, 556,7376,7377,2020,1654, 844,1090, 105, 550, 966,1758,2815,1008,1782, 686, # 3574 +1095,7378,2282, 793,1602,7379,3518,2593,4322,4080,2933,2297,4323,3746, 980,2496, # 3590 + 544, 353, 527,4324, 908,2678,2899,7380, 381,2619,1942,1348,7381,1341,1252, 560, # 3606 +3072,7382,3420,2856,7383,2053, 973, 886,2080, 143,4325,7384,7385, 157,3886, 496, # 3622 +4081, 57, 840, 540,2038,4326,4327,3421,2117,1445, 970,2259,1748,1965,2081,4082, # 3638 +3119,1234,1775,3251,2816,3629, 773,1206,2129,1066,2039,1326,3887,1738,1725,4083, # 3654 + 279,3120, 51,1544,2594, 423,1578,2130,2066, 173,4328,1879,7386,7387,1583, 264, # 3670 + 610,3630,4329,2439, 280, 154,7388,7389,7390,1739, 338,1282,3073, 693,2857,1411, # 3686 +1074,3747,2440,7391,4330,7392,7393,1240, 952,2394,7394,2900,1538,2679, 685,1483, # 3702 +4084,2468,1436, 953,4085,2054,4331, 671,2395, 79,4086,2441,3252, 608, 567,2680, # 3718 +3422,4087,4088,1691, 393,1261,1791,2396,7395,4332,7396,7397,7398,7399,1383,1672, # 3734 +3748,3182,1464, 522,1119, 661,1150, 216, 675,4333,3888,1432,3519, 609,4334,2681, # 3750 +2397,7400,7401,7402,4089,3025, 0,7403,2469, 315, 231,2442, 301,3319,4335,2380, # 3766 +7404, 233,4090,3631,1818,4336,4337,7405, 96,1776,1315,2082,7406, 257,7407,1809, # 3782 +3632,2709,1139,1819,4091,2021,1124,2163,2778,1777,2649,7408,3074, 363,1655,3183, # 3798 +7409,2975,7410,7411,7412,3889,1567,3890, 718, 103,3184, 849,1443, 341,3320,2934, # 3814 +1484,7413,1712, 127, 67, 339,4092,2398, 679,1412, 821,7414,7415, 834, 738, 351, # 3830 +2976,2146, 846, 235,1497,1880, 418,1992,3749,2710, 186,1100,2147,2746,3520,1545, # 3846 +1355,2935,2858,1377, 583,3891,4093,2573,2977,7416,1298,3633,1078,2549,3634,2358, # 3862 + 78,3750,3751, 267,1289,2099,2001,1594,4094, 348, 369,1274,2194,2175,1837,4338, # 3878 +1820,2817,3635,2747,2283,2002,4339,2936,2748, 144,3321, 882,4340,3892,2749,3423, # 3894 +4341,2901,7417,4095,1726, 320,7418,3893,3026, 788,2978,7419,2818,1773,1327,2859, # 3910 +3894,2819,7420,1306,4342,2003,1700,3752,3521,2359,2650, 787,2022, 506, 824,3636, # 3926 + 534, 323,4343,1044,3322,2023,1900, 946,3424,7421,1778,1500,1678,7422,1881,4344, # 3942 + 165, 243,4345,3637,2521, 123, 683,4096, 764,4346, 36,3895,1792, 589,2902, 816, # 3958 + 626,1667,3027,2233,1639,1555,1622,3753,3896,7423,3897,2860,1370,1228,1932, 891, # 3974 +2083,2903, 304,4097,7424, 292,2979,2711,3522, 691,2100,4098,1115,4347, 118, 662, # 3990 +7425, 611,1156, 854,2381,1316,2861, 2, 386, 515,2904,7426,7427,3253, 868,2234, # 4006 +1486, 855,2651, 785,2212,3028,7428,1040,3185,3523,7429,3121, 448,7430,1525,7431, # 4022 +2164,4348,7432,3754,7433,4099,2820,3524,3122, 503, 818,3898,3123,1568, 814, 676, # 4038 +1444, 306,1749,7434,3755,1416,1030, 197,1428, 805,2821,1501,4349,7435,7436,7437, # 4054 +1993,7438,4350,7439,7440,2195, 13,2779,3638,2980,3124,1229,1916,7441,3756,2131, # 4070 +7442,4100,4351,2399,3525,7443,2213,1511,1727,1120,7444,7445, 646,3757,2443, 307, # 4086 +7446,7447,1595,3186,7448,7449,7450,3639,1113,1356,3899,1465,2522,2523,7451, 519, # 4102 +7452, 128,2132, 92,2284,1979,7453,3900,1512, 342,3125,2196,7454,2780,2214,1980, # 4118 +3323,7455, 290,1656,1317, 789, 827,2360,7456,3758,4352, 562, 581,3901,7457, 401, # 4134 +4353,2248, 94,4354,1399,2781,7458,1463,2024,4355,3187,1943,7459, 828,1105,4101, # 4150 +1262,1394,7460,4102, 605,4356,7461,1783,2862,7462,2822, 819,2101, 578,2197,2937, # 4166 +7463,1502, 436,3254,4103,3255,2823,3902,2905,3425,3426,7464,2712,2315,7465,7466, # 4182 +2332,2067, 23,4357, 193, 826,3759,2102, 699,1630,4104,3075, 390,1793,1064,3526, # 4198 +7467,1579,3076,3077,1400,7468,4105,1838,1640,2863,7469,4358,4359, 137,4106, 598, # 4214 +3078,1966, 780, 104, 974,2938,7470, 278, 899, 253, 402, 572, 504, 493,1339,7471, # 4230 +3903,1275,4360,2574,2550,7472,3640,3029,3079,2249, 565,1334,2713, 863, 41,7473, # 4246 +7474,4361,7475,1657,2333, 19, 463,2750,4107, 606,7476,2981,3256,1087,2084,1323, # 4262 +2652,2982,7477,1631,1623,1750,4108,2682,7478,2864, 791,2714,2653,2334, 232,2416, # 4278 +7479,2983,1498,7480,2654,2620, 755,1366,3641,3257,3126,2025,1609, 119,1917,3427, # 4294 + 862,1026,4109,7481,3904,3760,4362,3905,4363,2260,1951,2470,7482,1125, 817,4110, # 4310 +4111,3906,1513,1766,2040,1487,4112,3030,3258,2824,3761,3127,7483,7484,1507,7485, # 4326 +2683, 733, 40,1632,1106,2865, 345,4113, 841,2524, 230,4364,2984,1846,3259,3428, # 4342 +7486,1263, 986,3429,7487, 735, 879, 254,1137, 857, 622,1300,1180,1388,1562,3907, # 4358 +3908,2939, 967,2751,2655,1349, 592,2133,1692,3324,2985,1994,4114,1679,3909,1901, # 4374 +2185,7488, 739,3642,2715,1296,1290,7489,4115,2198,2199,1921,1563,2595,2551,1870, # 4390 +2752,2986,7490, 435,7491, 343,1108, 596, 17,1751,4365,2235,3430,3643,7492,4366, # 4406 + 294,3527,2940,1693, 477, 979, 281,2041,3528, 643,2042,3644,2621,2782,2261,1031, # 4422 +2335,2134,2298,3529,4367, 367,1249,2552,7493,3530,7494,4368,1283,3325,2004, 240, # 4438 +1762,3326,4369,4370, 836,1069,3128, 474,7495,2148,2525, 268,3531,7496,3188,1521, # 4454 +1284,7497,1658,1546,4116,7498,3532,3533,7499,4117,3327,2684,1685,4118, 961,1673, # 4470 +2622, 190,2005,2200,3762,4371,4372,7500, 570,2497,3645,1490,7501,4373,2623,3260, # 4486 +1956,4374, 584,1514, 396,1045,1944,7502,4375,1967,2444,7503,7504,4376,3910, 619, # 4502 +7505,3129,3261, 215,2006,2783,2553,3189,4377,3190,4378, 763,4119,3763,4379,7506, # 4518 +7507,1957,1767,2941,3328,3646,1174, 452,1477,4380,3329,3130,7508,2825,1253,2382, # 4534 +2186,1091,2285,4120, 492,7509, 638,1169,1824,2135,1752,3911, 648, 926,1021,1324, # 4550 +4381, 520,4382, 997, 847,1007, 892,4383,3764,2262,1871,3647,7510,2400,1784,4384, # 4566 +1952,2942,3080,3191,1728,4121,2043,3648,4385,2007,1701,3131,1551, 30,2263,4122, # 4582 +7511,2026,4386,3534,7512, 501,7513,4123, 594,3431,2165,1821,3535,3432,3536,3192, # 4598 + 829,2826,4124,7514,1680,3132,1225,4125,7515,3262,4387,4126,3133,2336,7516,4388, # 4614 +4127,7517,3912,3913,7518,1847,2383,2596,3330,7519,4389, 374,3914, 652,4128,4129, # 4630 + 375,1140, 798,7520,7521,7522,2361,4390,2264, 546,1659, 138,3031,2445,4391,7523, # 4646 +2250, 612,1848, 910, 796,3765,1740,1371, 825,3766,3767,7524,2906,2554,7525, 692, # 4662 + 444,3032,2624, 801,4392,4130,7526,1491, 244,1053,3033,4131,4132, 340,7527,3915, # 4678 +1041,2987, 293,1168, 87,1357,7528,1539, 959,7529,2236, 721, 694,4133,3768, 219, # 4694 +1478, 644,1417,3331,2656,1413,1401,1335,1389,3916,7530,7531,2988,2362,3134,1825, # 4710 + 730,1515, 184,2827, 66,4393,7532,1660,2943, 246,3332, 378,1457, 226,3433, 975, # 4726 +3917,2944,1264,3537, 674, 696,7533, 163,7534,1141,2417,2166, 713,3538,3333,4394, # 4742 +3918,7535,7536,1186, 15,7537,1079,1070,7538,1522,3193,3539, 276,1050,2716, 758, # 4758 +1126, 653,2945,3263,7539,2337, 889,3540,3919,3081,2989, 903,1250,4395,3920,3434, # 4774 +3541,1342,1681,1718, 766,3264, 286, 89,2946,3649,7540,1713,7541,2597,3334,2990, # 4790 +7542,2947,2215,3194,2866,7543,4396,2498,2526, 181, 387,1075,3921, 731,2187,3335, # 4806 +7544,3265, 310, 313,3435,2299, 770,4134, 54,3034, 189,4397,3082,3769,3922,7545, # 4822 +1230,1617,1849, 355,3542,4135,4398,3336, 111,4136,3650,1350,3135,3436,3035,4137, # 4838 +2149,3266,3543,7546,2784,3923,3924,2991, 722,2008,7547,1071, 247,1207,2338,2471, # 4854 +1378,4399,2009, 864,1437,1214,4400, 373,3770,1142,2216, 667,4401, 442,2753,2555, # 4870 +3771,3925,1968,4138,3267,1839, 837, 170,1107, 934,1336,1882,7548,7549,2118,4139, # 4886 +2828, 743,1569,7550,4402,4140, 582,2384,1418,3437,7551,1802,7552, 357,1395,1729, # 4902 +3651,3268,2418,1564,2237,7553,3083,3772,1633,4403,1114,2085,4141,1532,7554, 482, # 4918 +2446,4404,7555,7556,1492, 833,1466,7557,2717,3544,1641,2829,7558,1526,1272,3652, # 4934 +4142,1686,1794, 416,2556,1902,1953,1803,7559,3773,2785,3774,1159,2316,7560,2867, # 4950 +4405,1610,1584,3036,2419,2754, 443,3269,1163,3136,7561,7562,3926,7563,4143,2499, # 4966 +3037,4406,3927,3137,2103,1647,3545,2010,1872,4144,7564,4145, 431,3438,7565, 250, # 4982 + 97, 81,4146,7566,1648,1850,1558, 160, 848,7567, 866, 740,1694,7568,2201,2830, # 4998 +3195,4147,4407,3653,1687, 950,2472, 426, 469,3196,3654,3655,3928,7569,7570,1188, # 5014 + 424,1995, 861,3546,4148,3775,2202,2685, 168,1235,3547,4149,7571,2086,1674,4408, # 5030 +3337,3270, 220,2557,1009,7572,3776, 670,2992, 332,1208, 717,7573,7574,3548,2447, # 5046 +3929,3338,7575, 513,7576,1209,2868,3339,3138,4409,1080,7577,7578,7579,7580,2527, # 5062 +3656,3549, 815,1587,3930,3931,7581,3550,3439,3777,1254,4410,1328,3038,1390,3932, # 5078 +1741,3933,3778,3934,7582, 236,3779,2448,3271,7583,7584,3657,3780,1273,3781,4411, # 5094 +7585, 308,7586,4412, 245,4413,1851,2473,1307,2575, 430, 715,2136,2449,7587, 270, # 5110 + 199,2869,3935,7588,3551,2718,1753, 761,1754, 725,1661,1840,4414,3440,3658,7589, # 5126 +7590, 587, 14,3272, 227,2598, 326, 480,2265, 943,2755,3552, 291, 650,1883,7591, # 5142 +1702,1226, 102,1547, 62,3441, 904,4415,3442,1164,4150,7592,7593,1224,1548,2756, # 5158 + 391, 498,1493,7594,1386,1419,7595,2055,1177,4416, 813, 880,1081,2363, 566,1145, # 5174 +4417,2286,1001,1035,2558,2599,2238, 394,1286,7596,7597,2068,7598, 86,1494,1730, # 5190 +3936, 491,1588, 745, 897,2948, 843,3340,3937,2757,2870,3273,1768, 998,2217,2069, # 5206 + 397,1826,1195,1969,3659,2993,3341, 284,7599,3782,2500,2137,2119,1903,7600,3938, # 5222 +2150,3939,4151,1036,3443,1904, 114,2559,4152, 209,1527,7601,7602,2949,2831,2625, # 5238 +2385,2719,3139, 812,2560,7603,3274,7604,1559, 737,1884,3660,1210, 885, 28,2686, # 5254 +3553,3783,7605,4153,1004,1779,4418,7606, 346,1981,2218,2687,4419,3784,1742, 797, # 5270 +1642,3940,1933,1072,1384,2151, 896,3941,3275,3661,3197,2871,3554,7607,2561,1958, # 5286 +4420,2450,1785,7608,7609,7610,3942,4154,1005,1308,3662,4155,2720,4421,4422,1528, # 5302 +2600, 161,1178,4156,1982, 987,4423,1101,4157, 631,3943,1157,3198,2420,1343,1241, # 5318 +1016,2239,2562, 372, 877,2339,2501,1160, 555,1934, 911,3944,7611, 466,1170, 169, # 5334 +1051,2907,2688,3663,2474,2994,1182,2011,2563,1251,2626,7612, 992,2340,3444,1540, # 5350 +2721,1201,2070,2401,1996,2475,7613,4424, 528,1922,2188,1503,1873,1570,2364,3342, # 5366 +3276,7614, 557,1073,7615,1827,3445,2087,2266,3140,3039,3084, 767,3085,2786,4425, # 5382 +1006,4158,4426,2341,1267,2176,3664,3199, 778,3945,3200,2722,1597,2657,7616,4427, # 5398 +7617,3446,7618,7619,7620,3277,2689,1433,3278, 131, 95,1504,3946, 723,4159,3141, # 5414 +1841,3555,2758,2189,3947,2027,2104,3665,7621,2995,3948,1218,7622,3343,3201,3949, # 5430 +4160,2576, 248,1634,3785, 912,7623,2832,3666,3040,3786, 654, 53,7624,2996,7625, # 5446 +1688,4428, 777,3447,1032,3950,1425,7626, 191, 820,2120,2833, 971,4429, 931,3202, # 5462 + 135, 664, 783,3787,1997, 772,2908,1935,3951,3788,4430,2909,3203, 282,2723, 640, # 5478 +1372,3448,1127, 922, 325,3344,7627,7628, 711,2044,7629,7630,3952,2219,2787,1936, # 5494 +3953,3345,2220,2251,3789,2300,7631,4431,3790,1258,3279,3954,3204,2138,2950,3955, # 5510 +3956,7632,2221, 258,3205,4432, 101,1227,7633,3280,1755,7634,1391,3281,7635,2910, # 5526 +2056, 893,7636,7637,7638,1402,4161,2342,7639,7640,3206,3556,7641,7642, 878,1325, # 5542 +1780,2788,4433, 259,1385,2577, 744,1183,2267,4434,7643,3957,2502,7644, 684,1024, # 5558 +4162,7645, 472,3557,3449,1165,3282,3958,3959, 322,2152, 881, 455,1695,1152,1340, # 5574 + 660, 554,2153,4435,1058,4436,4163, 830,1065,3346,3960,4437,1923,7646,1703,1918, # 5590 +7647, 932,2268, 122,7648,4438, 947, 677,7649,3791,2627, 297,1905,1924,2269,4439, # 5606 +2317,3283,7650,7651,4164,7652,4165, 84,4166, 112, 989,7653, 547,1059,3961, 701, # 5622 +3558,1019,7654,4167,7655,3450, 942, 639, 457,2301,2451, 993,2951, 407, 851, 494, # 5638 +4440,3347, 927,7656,1237,7657,2421,3348, 573,4168, 680, 921,2911,1279,1874, 285, # 5654 + 790,1448,1983, 719,2167,7658,7659,4441,3962,3963,1649,7660,1541, 563,7661,1077, # 5670 +7662,3349,3041,3451, 511,2997,3964,3965,3667,3966,1268,2564,3350,3207,4442,4443, # 5686 +7663, 535,1048,1276,1189,2912,2028,3142,1438,1373,2834,2952,1134,2012,7664,4169, # 5702 +1238,2578,3086,1259,7665, 700,7666,2953,3143,3668,4170,7667,4171,1146,1875,1906, # 5718 +4444,2601,3967, 781,2422, 132,1589, 203, 147, 273,2789,2402, 898,1786,2154,3968, # 5734 +3969,7668,3792,2790,7669,7670,4445,4446,7671,3208,7672,1635,3793, 965,7673,1804, # 5750 +2690,1516,3559,1121,1082,1329,3284,3970,1449,3794, 65,1128,2835,2913,2759,1590, # 5766 +3795,7674,7675, 12,2658, 45, 976,2579,3144,4447, 517,2528,1013,1037,3209,7676, # 5782 +3796,2836,7677,3797,7678,3452,7679,2602, 614,1998,2318,3798,3087,2724,2628,7680, # 5798 +2580,4172, 599,1269,7681,1810,3669,7682,2691,3088, 759,1060, 489,1805,3351,3285, # 5814 +1358,7683,7684,2386,1387,1215,2629,2252, 490,7685,7686,4173,1759,2387,2343,7687, # 5830 +4448,3799,1907,3971,2630,1806,3210,4449,3453,3286,2760,2344, 874,7688,7689,3454, # 5846 +3670,1858, 91,2914,3671,3042,3800,4450,7690,3145,3972,2659,7691,3455,1202,1403, # 5862 +3801,2954,2529,1517,2503,4451,3456,2504,7692,4452,7693,2692,1885,1495,1731,3973, # 5878 +2365,4453,7694,2029,7695,7696,3974,2693,1216, 237,2581,4174,2319,3975,3802,4454, # 5894 +4455,2694,3560,3457, 445,4456,7697,7698,7699,7700,2761, 61,3976,3672,1822,3977, # 5910 +7701, 687,2045, 935, 925, 405,2660, 703,1096,1859,2725,4457,3978,1876,1367,2695, # 5926 +3352, 918,2105,1781,2476, 334,3287,1611,1093,4458, 564,3146,3458,3673,3353, 945, # 5942 +2631,2057,4459,7702,1925, 872,4175,7703,3459,2696,3089, 349,4176,3674,3979,4460, # 5958 +3803,4177,3675,2155,3980,4461,4462,4178,4463,2403,2046, 782,3981, 400, 251,4179, # 5974 +1624,7704,7705, 277,3676, 299,1265, 476,1191,3804,2121,4180,4181,1109, 205,7706, # 5990 +2582,1000,2156,3561,1860,7707,7708,7709,4464,7710,4465,2565, 107,2477,2157,3982, # 6006 +3460,3147,7711,1533, 541,1301, 158, 753,4182,2872,3562,7712,1696, 370,1088,4183, # 6022 +4466,3563, 579, 327, 440, 162,2240, 269,1937,1374,3461, 968,3043, 56,1396,3090, # 6038 +2106,3288,3354,7713,1926,2158,4467,2998,7714,3564,7715,7716,3677,4468,2478,7717, # 6054 +2791,7718,1650,4469,7719,2603,7720,7721,3983,2661,3355,1149,3356,3984,3805,3985, # 6070 +7722,1076, 49,7723, 951,3211,3289,3290, 450,2837, 920,7724,1811,2792,2366,4184, # 6086 +1908,1138,2367,3806,3462,7725,3212,4470,1909,1147,1518,2423,4471,3807,7726,4472, # 6102 +2388,2604, 260,1795,3213,7727,7728,3808,3291, 708,7729,3565,1704,7730,3566,1351, # 6118 +1618,3357,2999,1886, 944,4185,3358,4186,3044,3359,4187,7731,3678, 422, 413,1714, # 6134 +3292, 500,2058,2345,4188,2479,7732,1344,1910, 954,7733,1668,7734,7735,3986,2404, # 6150 +4189,3567,3809,4190,7736,2302,1318,2505,3091, 133,3092,2873,4473, 629, 31,2838, # 6166 +2697,3810,4474, 850, 949,4475,3987,2955,1732,2088,4191,1496,1852,7737,3988, 620, # 6182 +3214, 981,1242,3679,3360,1619,3680,1643,3293,2139,2452,1970,1719,3463,2168,7738, # 6198 +3215,7739,7740,3361,1828,7741,1277,4476,1565,2047,7742,1636,3568,3093,7743, 869, # 6214 +2839, 655,3811,3812,3094,3989,3000,3813,1310,3569,4477,7744,7745,7746,1733, 558, # 6230 +4478,3681, 335,1549,3045,1756,4192,3682,1945,3464,1829,1291,1192, 470,2726,2107, # 6246 +2793, 913,1054,3990,7747,1027,7748,3046,3991,4479, 982,2662,3362,3148,3465,3216, # 6262 +3217,1946,2794,7749, 571,4480,7750,1830,7751,3570,2583,1523,2424,7752,2089, 984, # 6278 +4481,3683,1959,7753,3684, 852, 923,2795,3466,3685, 969,1519, 999,2048,2320,1705, # 6294 +7754,3095, 615,1662, 151, 597,3992,2405,2321,1049, 275,4482,3686,4193, 568,3687, # 6310 +3571,2480,4194,3688,7755,2425,2270, 409,3218,7756,1566,2874,3467,1002, 769,2840, # 6326 + 194,2090,3149,3689,2222,3294,4195, 628,1505,7757,7758,1763,2177,3001,3993, 521, # 6342 +1161,2584,1787,2203,2406,4483,3994,1625,4196,4197, 412, 42,3096, 464,7759,2632, # 6358 +4484,3363,1760,1571,2875,3468,2530,1219,2204,3814,2633,2140,2368,4485,4486,3295, # 6374 +1651,3364,3572,7760,7761,3573,2481,3469,7762,3690,7763,7764,2271,2091, 460,7765, # 6390 +4487,7766,3002, 962, 588,3574, 289,3219,2634,1116, 52,7767,3047,1796,7768,7769, # 6406 +7770,1467,7771,1598,1143,3691,4198,1984,1734,1067,4488,1280,3365, 465,4489,1572, # 6422 + 510,7772,1927,2241,1812,1644,3575,7773,4490,3692,7774,7775,2663,1573,1534,7776, # 6438 +7777,4199, 536,1807,1761,3470,3815,3150,2635,7778,7779,7780,4491,3471,2915,1911, # 6454 +2796,7781,3296,1122, 377,3220,7782, 360,7783,7784,4200,1529, 551,7785,2059,3693, # 6470 +1769,2426,7786,2916,4201,3297,3097,2322,2108,2030,4492,1404, 136,1468,1479, 672, # 6486 +1171,3221,2303, 271,3151,7787,2762,7788,2049, 678,2727, 865,1947,4493,7789,2013, # 6502 +3995,2956,7790,2728,2223,1397,3048,3694,4494,4495,1735,2917,3366,3576,7791,3816, # 6518 + 509,2841,2453,2876,3817,7792,7793,3152,3153,4496,4202,2531,4497,2304,1166,1010, # 6534 + 552, 681,1887,7794,7795,2957,2958,3996,1287,1596,1861,3154, 358, 453, 736, 175, # 6550 + 478,1117, 905,1167,1097,7796,1853,1530,7797,1706,7798,2178,3472,2287,3695,3473, # 6566 +3577,4203,2092,4204,7799,3367,1193,2482,4205,1458,2190,2205,1862,1888,1421,3298, # 6582 +2918,3049,2179,3474, 595,2122,7800,3997,7801,7802,4206,1707,2636, 223,3696,1359, # 6598 + 751,3098, 183,3475,7803,2797,3003, 419,2369, 633, 704,3818,2389, 241,7804,7805, # 6614 +7806, 838,3004,3697,2272,2763,2454,3819,1938,2050,3998,1309,3099,2242,1181,7807, # 6630 +1136,2206,3820,2370,1446,4207,2305,4498,7808,7809,4208,1055,2605, 484,3698,7810, # 6646 +3999, 625,4209,2273,3368,1499,4210,4000,7811,4001,4211,3222,2274,2275,3476,7812, # 6662 +7813,2764, 808,2606,3699,3369,4002,4212,3100,2532, 526,3370,3821,4213, 955,7814, # 6678 +1620,4214,2637,2427,7815,1429,3700,1669,1831, 994, 928,7816,3578,1260,7817,7818, # 6694 +7819,1948,2288, 741,2919,1626,4215,2729,2455, 867,1184, 362,3371,1392,7820,7821, # 6710 +4003,4216,1770,1736,3223,2920,4499,4500,1928,2698,1459,1158,7822,3050,3372,2877, # 6726 +1292,1929,2506,2842,3701,1985,1187,2071,2014,2607,4217,7823,2566,2507,2169,3702, # 6742 +2483,3299,7824,3703,4501,7825,7826, 666,1003,3005,1022,3579,4218,7827,4502,1813, # 6758 +2253, 574,3822,1603, 295,1535, 705,3823,4219, 283, 858, 417,7828,7829,3224,4503, # 6774 +4504,3051,1220,1889,1046,2276,2456,4004,1393,1599, 689,2567, 388,4220,7830,2484, # 6790 + 802,7831,2798,3824,2060,1405,2254,7832,4505,3825,2109,1052,1345,3225,1585,7833, # 6806 + 809,7834,7835,7836, 575,2730,3477, 956,1552,1469,1144,2323,7837,2324,1560,2457, # 6822 +3580,3226,4005, 616,2207,3155,2180,2289,7838,1832,7839,3478,4506,7840,1319,3704, # 6838 +3705,1211,3581,1023,3227,1293,2799,7841,7842,7843,3826, 607,2306,3827, 762,2878, # 6854 +1439,4221,1360,7844,1485,3052,7845,4507,1038,4222,1450,2061,2638,4223,1379,4508, # 6870 +2585,7846,7847,4224,1352,1414,2325,2921,1172,7848,7849,3828,3829,7850,1797,1451, # 6886 +7851,7852,7853,7854,2922,4006,4007,2485,2346, 411,4008,4009,3582,3300,3101,4509, # 6902 +1561,2664,1452,4010,1375,7855,7856, 47,2959, 316,7857,1406,1591,2923,3156,7858, # 6918 +1025,2141,3102,3157, 354,2731, 884,2224,4225,2407, 508,3706, 726,3583, 996,2428, # 6934 +3584, 729,7859, 392,2191,1453,4011,4510,3707,7860,7861,2458,3585,2608,1675,2800, # 6950 + 919,2347,2960,2348,1270,4511,4012, 73,7862,7863, 647,7864,3228,2843,2255,1550, # 6966 +1346,3006,7865,1332, 883,3479,7866,7867,7868,7869,3301,2765,7870,1212, 831,1347, # 6982 +4226,4512,2326,3830,1863,3053, 720,3831,4513,4514,3832,7871,4227,7872,7873,4515, # 6998 +7874,7875,1798,4516,3708,2609,4517,3586,1645,2371,7876,7877,2924, 669,2208,2665, # 7014 +2429,7878,2879,7879,7880,1028,3229,7881,4228,2408,7882,2256,1353,7883,7884,4518, # 7030 +3158, 518,7885,4013,7886,4229,1960,7887,2142,4230,7888,7889,3007,2349,2350,3833, # 7046 + 516,1833,1454,4014,2699,4231,4519,2225,2610,1971,1129,3587,7890,2766,7891,2961, # 7062 +1422, 577,1470,3008,1524,3373,7892,7893, 432,4232,3054,3480,7894,2586,1455,2508, # 7078 +2226,1972,1175,7895,1020,2732,4015,3481,4520,7896,2733,7897,1743,1361,3055,3482, # 7094 +2639,4016,4233,4521,2290, 895, 924,4234,2170, 331,2243,3056, 166,1627,3057,1098, # 7110 +7898,1232,2880,2227,3374,4522, 657, 403,1196,2372, 542,3709,3375,1600,4235,3483, # 7126 +7899,4523,2767,3230, 576, 530,1362,7900,4524,2533,2666,3710,4017,7901, 842,3834, # 7142 +7902,2801,2031,1014,4018, 213,2700,3376, 665, 621,4236,7903,3711,2925,2430,7904, # 7158 +2431,3302,3588,3377,7905,4237,2534,4238,4525,3589,1682,4239,3484,1380,7906, 724, # 7174 +2277, 600,1670,7907,1337,1233,4526,3103,2244,7908,1621,4527,7909, 651,4240,7910, # 7190 +1612,4241,2611,7911,2844,7912,2734,2307,3058,7913, 716,2459,3059, 174,1255,2701, # 7206 +4019,3590, 548,1320,1398, 728,4020,1574,7914,1890,1197,3060,4021,7915,3061,3062, # 7222 +3712,3591,3713, 747,7916, 635,4242,4528,7917,7918,7919,4243,7920,7921,4529,7922, # 7238 +3378,4530,2432, 451,7923,3714,2535,2072,4244,2735,4245,4022,7924,1764,4531,7925, # 7254 +4246, 350,7926,2278,2390,2486,7927,4247,4023,2245,1434,4024, 488,4532, 458,4248, # 7270 +4025,3715, 771,1330,2391,3835,2568,3159,2159,2409,1553,2667,3160,4249,7928,2487, # 7286 +2881,2612,1720,2702,4250,3379,4533,7929,2536,4251,7930,3231,4252,2768,7931,2015, # 7302 +2736,7932,1155,1017,3716,3836,7933,3303,2308, 201,1864,4253,1430,7934,4026,7935, # 7318 +7936,7937,7938,7939,4254,1604,7940, 414,1865, 371,2587,4534,4535,3485,2016,3104, # 7334 +4536,1708, 960,4255, 887, 389,2171,1536,1663,1721,7941,2228,4027,2351,2926,1580, # 7350 +7942,7943,7944,1744,7945,2537,4537,4538,7946,4539,7947,2073,7948,7949,3592,3380, # 7366 +2882,4256,7950,4257,2640,3381,2802, 673,2703,2460, 709,3486,4028,3593,4258,7951, # 7382 +1148, 502, 634,7952,7953,1204,4540,3594,1575,4541,2613,3717,7954,3718,3105, 948, # 7398 +3232, 121,1745,3837,1110,7955,4259,3063,2509,3009,4029,3719,1151,1771,3838,1488, # 7414 +4030,1986,7956,2433,3487,7957,7958,2093,7959,4260,3839,1213,1407,2803, 531,2737, # 7430 +2538,3233,1011,1537,7960,2769,4261,3106,1061,7961,3720,3721,1866,2883,7962,2017, # 7446 + 120,4262,4263,2062,3595,3234,2309,3840,2668,3382,1954,4542,7963,7964,3488,1047, # 7462 +2704,1266,7965,1368,4543,2845, 649,3383,3841,2539,2738,1102,2846,2669,7966,7967, # 7478 +1999,7968,1111,3596,2962,7969,2488,3842,3597,2804,1854,3384,3722,7970,7971,3385, # 7494 +2410,2884,3304,3235,3598,7972,2569,7973,3599,2805,4031,1460, 856,7974,3600,7975, # 7510 +2885,2963,7976,2886,3843,7977,4264, 632,2510, 875,3844,1697,3845,2291,7978,7979, # 7526 +4544,3010,1239, 580,4545,4265,7980, 914, 936,2074,1190,4032,1039,2123,7981,7982, # 7542 +7983,3386,1473,7984,1354,4266,3846,7985,2172,3064,4033, 915,3305,4267,4268,3306, # 7558 +1605,1834,7986,2739, 398,3601,4269,3847,4034, 328,1912,2847,4035,3848,1331,4270, # 7574 +3011, 937,4271,7987,3602,4036,4037,3387,2160,4546,3388, 524, 742, 538,3065,1012, # 7590 +7988,7989,3849,2461,7990, 658,1103, 225,3850,7991,7992,4547,7993,4548,7994,3236, # 7606 +1243,7995,4038, 963,2246,4549,7996,2705,3603,3161,7997,7998,2588,2327,7999,4550, # 7622 +8000,8001,8002,3489,3307, 957,3389,2540,2032,1930,2927,2462, 870,2018,3604,1746, # 7638 +2770,2771,2434,2463,8003,3851,8004,3723,3107,3724,3490,3390,3725,8005,1179,3066, # 7654 +8006,3162,2373,4272,3726,2541,3163,3108,2740,4039,8007,3391,1556,2542,2292, 977, # 7670 +2887,2033,4040,1205,3392,8008,1765,3393,3164,2124,1271,1689, 714,4551,3491,8009, # 7686 +2328,3852, 533,4273,3605,2181, 617,8010,2464,3308,3492,2310,8011,8012,3165,8013, # 7702 +8014,3853,1987, 618, 427,2641,3493,3394,8015,8016,1244,1690,8017,2806,4274,4552, # 7718 +8018,3494,8019,8020,2279,1576, 473,3606,4275,3395, 972,8021,3607,8022,3067,8023, # 7734 +8024,4553,4554,8025,3727,4041,4042,8026, 153,4555, 356,8027,1891,2888,4276,2143, # 7750 + 408, 803,2352,8028,3854,8029,4277,1646,2570,2511,4556,4557,3855,8030,3856,4278, # 7766 +8031,2411,3396, 752,8032,8033,1961,2964,8034, 746,3012,2465,8035,4279,3728, 698, # 7782 +4558,1892,4280,3608,2543,4559,3609,3857,8036,3166,3397,8037,1823,1302,4043,2706, # 7798 +3858,1973,4281,8038,4282,3167, 823,1303,1288,1236,2848,3495,4044,3398, 774,3859, # 7814 +8039,1581,4560,1304,2849,3860,4561,8040,2435,2161,1083,3237,4283,4045,4284, 344, # 7830 +1173, 288,2311, 454,1683,8041,8042,1461,4562,4046,2589,8043,8044,4563, 985, 894, # 7846 +8045,3399,3168,8046,1913,2928,3729,1988,8047,2110,1974,8048,4047,8049,2571,1194, # 7862 + 425,8050,4564,3169,1245,3730,4285,8051,8052,2850,8053, 636,4565,1855,3861, 760, # 7878 +1799,8054,4286,2209,1508,4566,4048,1893,1684,2293,8055,8056,8057,4287,4288,2210, # 7894 + 479,8058,8059, 832,8060,4049,2489,8061,2965,2490,3731, 990,3109, 627,1814,2642, # 7910 +4289,1582,4290,2125,2111,3496,4567,8062, 799,4291,3170,8063,4568,2112,1737,3013, # 7926 +1018, 543, 754,4292,3309,1676,4569,4570,4050,8064,1489,8065,3497,8066,2614,2889, # 7942 +4051,8067,8068,2966,8069,8070,8071,8072,3171,4571,4572,2182,1722,8073,3238,3239, # 7958 +1842,3610,1715, 481, 365,1975,1856,8074,8075,1962,2491,4573,8076,2126,3611,3240, # 7974 + 433,1894,2063,2075,8077, 602,2741,8078,8079,8080,8081,8082,3014,1628,3400,8083, # 7990 +3172,4574,4052,2890,4575,2512,8084,2544,2772,8085,8086,8087,3310,4576,2891,8088, # 8006 +4577,8089,2851,4578,4579,1221,2967,4053,2513,8090,8091,8092,1867,1989,8093,8094, # 8022 +8095,1895,8096,8097,4580,1896,4054, 318,8098,2094,4055,4293,8099,8100, 485,8101, # 8038 + 938,3862, 553,2670, 116,8102,3863,3612,8103,3498,2671,2773,3401,3311,2807,8104, # 8054 +3613,2929,4056,1747,2930,2968,8105,8106, 207,8107,8108,2672,4581,2514,8109,3015, # 8070 + 890,3614,3864,8110,1877,3732,3402,8111,2183,2353,3403,1652,8112,8113,8114, 941, # 8086 +2294, 208,3499,4057,2019, 330,4294,3865,2892,2492,3733,4295,8115,8116,8117,8118, # 8102 +) + diff --git a/env/lib/python2.7/site-packages/chardet/euctwfreq.pyc b/env/lib/python2.7/site-packages/chardet/euctwfreq.pyc new file mode 100644 index 0000000000000000000000000000000000000000..55b74d866e54f1cbabf4e40c91d8d2d8eb19dd6f GIT binary patch literal 54695 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/euctwprober.py b/env/lib/python2.7/site-packages/chardet/euctwprober.py new file mode 100644 index 0000000..35669cc --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/euctwprober.py @@ -0,0 +1,46 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import EUCTWDistributionAnalysis +from .mbcssm import EUCTW_SM_MODEL + +class EUCTWProber(MultiByteCharSetProber): + def __init__(self): + super(EUCTWProber, self).__init__() + self.coding_sm = CodingStateMachine(EUCTW_SM_MODEL) + self.distribution_analyzer = EUCTWDistributionAnalysis() + self.reset() + + @property + def charset_name(self): + return "EUC-TW" + + @property + def language(self): + return "Taiwan" diff --git a/env/lib/python2.7/site-packages/chardet/euctwprober.pyc b/env/lib/python2.7/site-packages/chardet/euctwprober.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f12b2827f2b88794b09b2537f7790febff99160c GIT binary patch literal 1291 zcmcIj&2G~`5T3PTCoL_hKp-J;DJLHY;m~72(6l#FkeyQ1mz860+pTQJ@{Xy3xWT*d zfV==RyGiH`36;b4@wUz zA5!1xK9oJE0!Ra=_n-`+>OUG?C`V<-grfIW6aRv7?>Y~^*I<;}nzqS%S8;WXM}Hvv2B z8r8-l-qPPQ)%ow4ssTZ>lhQZH$}N-E-@t3GqSQX)ekWwj`}l2i+_JwUho0(x8q$Be*m+q ze{UprXrG4dO(?d)VQ)pqAz7>W3Q^bjm`s5DWE}?$KiSGXSxZvf<2|O%9YQ*qa<$~n c5N(;smgV 0.79 -- 0.79 +# 1024 --> 0.92 -- 0.13 +# 2048 --> 0.98 -- 0.06 +# 6768 --> 1.00 -- 0.02 +# +# Ideal Distribution Ratio = 0.79135/(1-0.79135) = 3.79 +# Random Distribution Ration = 512 / (3755 - 512) = 0.157 +# +# Typical Distribution Ratio about 25% of Ideal one, still much higher that RDR + +GB2312_TYPICAL_DISTRIBUTION_RATIO = 0.9 + +GB2312_TABLE_SIZE = 3760 + +GB2312_CHAR_TO_FREQ_ORDER = ( +1671, 749,1443,2364,3924,3807,2330,3921,1704,3463,2691,1511,1515, 572,3191,2205, +2361, 224,2558, 479,1711, 963,3162, 440,4060,1905,2966,2947,3580,2647,3961,3842, +2204, 869,4207, 970,2678,5626,2944,2956,1479,4048, 514,3595, 588,1346,2820,3409, + 249,4088,1746,1873,2047,1774, 581,1813, 358,1174,3590,1014,1561,4844,2245, 670, +1636,3112, 889,1286, 953, 556,2327,3060,1290,3141, 613, 185,3477,1367, 850,3820, +1715,2428,2642,2303,2732,3041,2562,2648,3566,3946,1349, 388,3098,2091,1360,3585, + 152,1687,1539, 738,1559, 59,1232,2925,2267,1388,1249,1741,1679,2960, 151,1566, +1125,1352,4271, 924,4296, 385,3166,4459, 310,1245,2850, 70,3285,2729,3534,3575, +2398,3298,3466,1960,2265, 217,3647, 864,1909,2084,4401,2773,1010,3269,5152, 853, +3051,3121,1244,4251,1895, 364,1499,1540,2313,1180,3655,2268, 562, 715,2417,3061, + 544, 336,3768,2380,1752,4075, 950, 280,2425,4382, 183,2759,3272, 333,4297,2155, +1688,2356,1444,1039,4540, 736,1177,3349,2443,2368,2144,2225, 565, 196,1482,3406, + 927,1335,4147, 692, 878,1311,1653,3911,3622,1378,4200,1840,2969,3149,2126,1816, +2534,1546,2393,2760, 737,2494, 13, 447, 245,2747, 38,2765,2129,2589,1079, 606, + 360, 471,3755,2890, 404, 848, 699,1785,1236, 370,2221,1023,3746,2074,2026,2023, +2388,1581,2119, 812,1141,3091,2536,1519, 804,2053, 406,1596,1090, 784, 548,4414, +1806,2264,2936,1100, 343,4114,5096, 622,3358, 743,3668,1510,1626,5020,3567,2513, +3195,4115,5627,2489,2991, 24,2065,2697,1087,2719, 48,1634, 315, 68, 985,2052, + 198,2239,1347,1107,1439, 597,2366,2172, 871,3307, 919,2487,2790,1867, 236,2570, +1413,3794, 906,3365,3381,1701,1982,1818,1524,2924,1205, 616,2586,2072,2004, 575, + 253,3099, 32,1365,1182, 197,1714,2454,1201, 554,3388,3224,2748, 756,2587, 250, +2567,1507,1517,3529,1922,2761,2337,3416,1961,1677,2452,2238,3153, 615, 911,1506, +1474,2495,1265,1906,2749,3756,3280,2161, 898,2714,1759,3450,2243,2444, 563, 26, +3286,2266,3769,3344,2707,3677, 611,1402, 531,1028,2871,4548,1375, 261,2948, 835, +1190,4134, 353, 840,2684,1900,3082,1435,2109,1207,1674, 329,1872,2781,4055,2686, +2104, 608,3318,2423,2957,2768,1108,3739,3512,3271,3985,2203,1771,3520,1418,2054, +1681,1153, 225,1627,2929, 162,2050,2511,3687,1954, 124,1859,2431,1684,3032,2894, + 585,4805,3969,2869,2704,2088,2032,2095,3656,2635,4362,2209, 256, 518,2042,2105, +3777,3657, 643,2298,1148,1779, 190, 989,3544, 414, 11,2135,2063,2979,1471, 403, +3678, 126, 770,1563, 671,2499,3216,2877, 600,1179, 307,2805,4937,1268,1297,2694, + 252,4032,1448,1494,1331,1394, 127,2256, 222,1647,1035,1481,3056,1915,1048, 873, +3651, 210, 33,1608,2516, 200,1520, 415, 102, 0,3389,1287, 817, 91,3299,2940, + 836,1814, 549,2197,1396,1669,2987,3582,2297,2848,4528,1070, 687, 20,1819, 121, +1552,1364,1461,1968,2617,3540,2824,2083, 177, 948,4938,2291, 110,4549,2066, 648, +3359,1755,2110,2114,4642,4845,1693,3937,3308,1257,1869,2123, 208,1804,3159,2992, +2531,2549,3361,2418,1350,2347,2800,2568,1291,2036,2680, 72, 842,1990, 212,1233, +1154,1586, 75,2027,3410,4900,1823,1337,2710,2676, 728,2810,1522,3026,4995, 157, + 755,1050,4022, 710, 785,1936,2194,2085,1406,2777,2400, 150,1250,4049,1206, 807, +1910, 534, 529,3309,1721,1660, 274, 39,2827, 661,2670,1578, 925,3248,3815,1094, +4278,4901,4252, 41,1150,3747,2572,2227,4501,3658,4902,3813,3357,3617,2884,2258, + 887, 538,4187,3199,1294,2439,3042,2329,2343,2497,1255, 107, 543,1527, 521,3478, +3568, 194,5062, 15, 961,3870,1241,1192,2664, 66,5215,3260,2111,1295,1127,2152, +3805,4135, 901,1164,1976, 398,1278, 530,1460, 748, 904,1054,1966,1426, 53,2909, + 509, 523,2279,1534, 536,1019, 239,1685, 460,2353, 673,1065,2401,3600,4298,2272, +1272,2363, 284,1753,3679,4064,1695, 81, 815,2677,2757,2731,1386, 859, 500,4221, +2190,2566, 757,1006,2519,2068,1166,1455, 337,2654,3203,1863,1682,1914,3025,1252, +1409,1366, 847, 714,2834,2038,3209, 964,2970,1901, 885,2553,1078,1756,3049, 301, +1572,3326, 688,2130,1996,2429,1805,1648,2930,3421,2750,3652,3088, 262,1158,1254, + 389,1641,1812, 526,1719, 923,2073,1073,1902, 468, 489,4625,1140, 857,2375,3070, +3319,2863, 380, 116,1328,2693,1161,2244, 273,1212,1884,2769,3011,1775,1142, 461, +3066,1200,2147,2212, 790, 702,2695,4222,1601,1058, 434,2338,5153,3640, 67,2360, +4099,2502, 618,3472,1329, 416,1132, 830,2782,1807,2653,3211,3510,1662, 192,2124, + 296,3979,1739,1611,3684, 23, 118, 324, 446,1239,1225, 293,2520,3814,3795,2535, +3116, 17,1074, 467,2692,2201, 387,2922, 45,1326,3055,1645,3659,2817, 958, 243, +1903,2320,1339,2825,1784,3289, 356, 576, 865,2315,2381,3377,3916,1088,3122,1713, +1655, 935, 628,4689,1034,1327, 441, 800, 720, 894,1979,2183,1528,5289,2702,1071, +4046,3572,2399,1571,3281, 79, 761,1103, 327, 134, 758,1899,1371,1615, 879, 442, + 215,2605,2579, 173,2048,2485,1057,2975,3317,1097,2253,3801,4263,1403,1650,2946, + 814,4968,3487,1548,2644,1567,1285, 2, 295,2636, 97, 946,3576, 832, 141,4257, +3273, 760,3821,3521,3156,2607, 949,1024,1733,1516,1803,1920,2125,2283,2665,3180, +1501,2064,3560,2171,1592, 803,3518,1416, 732,3897,4258,1363,1362,2458, 119,1427, + 602,1525,2608,1605,1639,3175, 694,3064, 10, 465, 76,2000,4846,4208, 444,3781, +1619,3353,2206,1273,3796, 740,2483, 320,1723,2377,3660,2619,1359,1137,1762,1724, +2345,2842,1850,1862, 912, 821,1866, 612,2625,1735,2573,3369,1093, 844, 89, 937, + 930,1424,3564,2413,2972,1004,3046,3019,2011, 711,3171,1452,4178, 428, 801,1943, + 432, 445,2811, 206,4136,1472, 730, 349, 73, 397,2802,2547, 998,1637,1167, 789, + 396,3217, 154,1218, 716,1120,1780,2819,4826,1931,3334,3762,2139,1215,2627, 552, +3664,3628,3232,1405,2383,3111,1356,2652,3577,3320,3101,1703, 640,1045,1370,1246, +4996, 371,1575,2436,1621,2210, 984,4033,1734,2638, 16,4529, 663,2755,3255,1451, +3917,2257,1253,1955,2234,1263,2951, 214,1229, 617, 485, 359,1831,1969, 473,2310, + 750,2058, 165, 80,2864,2419, 361,4344,2416,2479,1134, 796,3726,1266,2943, 860, +2715, 938, 390,2734,1313,1384, 248, 202, 877,1064,2854, 522,3907, 279,1602, 297, +2357, 395,3740, 137,2075, 944,4089,2584,1267,3802, 62,1533,2285, 178, 176, 780, +2440, 201,3707, 590, 478,1560,4354,2117,1075, 30, 74,4643,4004,1635,1441,2745, + 776,2596, 238,1077,1692,1912,2844, 605, 499,1742,3947, 241,3053, 980,1749, 936, +2640,4511,2582, 515,1543,2162,5322,2892,2993, 890,2148,1924, 665,1827,3581,1032, + 968,3163, 339,1044,1896, 270, 583,1791,1720,4367,1194,3488,3669, 43,2523,1657, + 163,2167, 290,1209,1622,3378, 550, 634,2508,2510, 695,2634,2384,2512,1476,1414, + 220,1469,2341,2138,2852,3183,2900,4939,2865,3502,1211,3680, 854,3227,1299,2976, +3172, 186,2998,1459, 443,1067,3251,1495, 321,1932,3054, 909, 753,1410,1828, 436, +2441,1119,1587,3164,2186,1258, 227, 231,1425,1890,3200,3942, 247, 959, 725,5254, +2741, 577,2158,2079, 929, 120, 174, 838,2813, 591,1115, 417,2024, 40,3240,1536, +1037, 291,4151,2354, 632,1298,2406,2500,3535,1825,1846,3451, 205,1171, 345,4238, + 18,1163, 811, 685,2208,1217, 425,1312,1508,1175,4308,2552,1033, 587,1381,3059, +2984,3482, 340,1316,4023,3972, 792,3176, 519, 777,4690, 918, 933,4130,2981,3741, + 90,3360,2911,2200,5184,4550, 609,3079,2030, 272,3379,2736, 363,3881,1130,1447, + 286, 779, 357,1169,3350,3137,1630,1220,2687,2391, 747,1277,3688,2618,2682,2601, +1156,3196,5290,4034,3102,1689,3596,3128, 874, 219,2783, 798, 508,1843,2461, 269, +1658,1776,1392,1913,2983,3287,2866,2159,2372, 829,4076, 46,4253,2873,1889,1894, + 915,1834,1631,2181,2318, 298, 664,2818,3555,2735, 954,3228,3117, 527,3511,2173, + 681,2712,3033,2247,2346,3467,1652, 155,2164,3382, 113,1994, 450, 899, 494, 994, +1237,2958,1875,2336,1926,3727, 545,1577,1550, 633,3473, 204,1305,3072,2410,1956, +2471, 707,2134, 841,2195,2196,2663,3843,1026,4940, 990,3252,4997, 368,1092, 437, +3212,3258,1933,1829, 675,2977,2893, 412, 943,3723,4644,3294,3283,2230,2373,5154, +2389,2241,2661,2323,1404,2524, 593, 787, 677,3008,1275,2059, 438,2709,2609,2240, +2269,2246,1446, 36,1568,1373,3892,1574,2301,1456,3962, 693,2276,5216,2035,1143, +2720,1919,1797,1811,2763,4137,2597,1830,1699,1488,1198,2090, 424,1694, 312,3634, +3390,4179,3335,2252,1214, 561,1059,3243,2295,2561, 975,5155,2321,2751,3772, 472, +1537,3282,3398,1047,2077,2348,2878,1323,3340,3076, 690,2906, 51, 369, 170,3541, +1060,2187,2688,3670,2541,1083,1683, 928,3918, 459, 109,4427, 599,3744,4286, 143, +2101,2730,2490, 82,1588,3036,2121, 281,1860, 477,4035,1238,2812,3020,2716,3312, +1530,2188,2055,1317, 843, 636,1808,1173,3495, 649, 181,1002, 147,3641,1159,2414, +3750,2289,2795, 813,3123,2610,1136,4368, 5,3391,4541,2174, 420, 429,1728, 754, +1228,2115,2219, 347,2223,2733, 735,1518,3003,2355,3134,1764,3948,3329,1888,2424, +1001,1234,1972,3321,3363,1672,1021,1450,1584, 226, 765, 655,2526,3404,3244,2302, +3665, 731, 594,2184, 319,1576, 621, 658,2656,4299,2099,3864,1279,2071,2598,2739, + 795,3086,3699,3908,1707,2352,2402,1382,3136,2475,1465,4847,3496,3865,1085,3004, +2591,1084, 213,2287,1963,3565,2250, 822, 793,4574,3187,1772,1789,3050, 595,1484, +1959,2770,1080,2650, 456, 422,2996, 940,3322,4328,4345,3092,2742, 965,2784, 739, +4124, 952,1358,2498,2949,2565, 332,2698,2378, 660,2260,2473,4194,3856,2919, 535, +1260,2651,1208,1428,1300,1949,1303,2942, 433,2455,2450,1251,1946, 614,1269, 641, +1306,1810,2737,3078,2912, 564,2365,1419,1415,1497,4460,2367,2185,1379,3005,1307, +3218,2175,1897,3063, 682,1157,4040,4005,1712,1160,1941,1399, 394, 402,2952,1573, +1151,2986,2404, 862, 299,2033,1489,3006, 346, 171,2886,3401,1726,2932, 168,2533, + 47,2507,1030,3735,1145,3370,1395,1318,1579,3609,4560,2857,4116,1457,2529,1965, + 504,1036,2690,2988,2405, 745,5871, 849,2397,2056,3081, 863,2359,3857,2096, 99, +1397,1769,2300,4428,1643,3455,1978,1757,3718,1440, 35,4879,3742,1296,4228,2280, + 160,5063,1599,2013, 166, 520,3479,1646,3345,3012, 490,1937,1545,1264,2182,2505, +1096,1188,1369,1436,2421,1667,2792,2460,1270,2122, 727,3167,2143, 806,1706,1012, +1800,3037, 960,2218,1882, 805, 139,2456,1139,1521, 851,1052,3093,3089, 342,2039, + 744,5097,1468,1502,1585,2087, 223, 939, 326,2140,2577, 892,2481,1623,4077, 982, +3708, 135,2131, 87,2503,3114,2326,1106, 876,1616, 547,2997,2831,2093,3441,4530, +4314, 9,3256,4229,4148, 659,1462,1986,1710,2046,2913,2231,4090,4880,5255,3392, +3274,1368,3689,4645,1477, 705,3384,3635,1068,1529,2941,1458,3782,1509, 100,1656, +2548, 718,2339, 408,1590,2780,3548,1838,4117,3719,1345,3530, 717,3442,2778,3220, +2898,1892,4590,3614,3371,2043,1998,1224,3483, 891, 635, 584,2559,3355, 733,1766, +1729,1172,3789,1891,2307, 781,2982,2271,1957,1580,5773,2633,2005,4195,3097,1535, +3213,1189,1934,5693,3262, 586,3118,1324,1598, 517,1564,2217,1868,1893,4445,3728, +2703,3139,1526,1787,1992,3882,2875,1549,1199,1056,2224,1904,2711,5098,4287, 338, +1993,3129,3489,2689,1809,2815,1997, 957,1855,3898,2550,3275,3057,1105,1319, 627, +1505,1911,1883,3526, 698,3629,3456,1833,1431, 746, 77,1261,2017,2296,1977,1885, + 125,1334,1600, 525,1798,1109,2222,1470,1945, 559,2236,1186,3443,2476,1929,1411, +2411,3135,1777,3372,2621,1841,1613,3229, 668,1430,1839,2643,2916, 195,1989,2671, +2358,1387, 629,3205,2293,5256,4439, 123,1310, 888,1879,4300,3021,3605,1003,1162, +3192,2910,2010, 140,2395,2859, 55,1082,2012,2901, 662, 419,2081,1438, 680,2774, +4654,3912,1620,1731,1625,5035,4065,2328, 512,1344, 802,5443,2163,2311,2537, 524, +3399, 98,1155,2103,1918,2606,3925,2816,1393,2465,1504,3773,2177,3963,1478,4346, + 180,1113,4655,3461,2028,1698, 833,2696,1235,1322,1594,4408,3623,3013,3225,2040, +3022, 541,2881, 607,3632,2029,1665,1219, 639,1385,1686,1099,2803,3231,1938,3188, +2858, 427, 676,2772,1168,2025, 454,3253,2486,3556, 230,1950, 580, 791,1991,1280, +1086,1974,2034, 630, 257,3338,2788,4903,1017, 86,4790, 966,2789,1995,1696,1131, + 259,3095,4188,1308, 179,1463,5257, 289,4107,1248, 42,3413,1725,2288, 896,1947, + 774,4474,4254, 604,3430,4264, 392,2514,2588, 452, 237,1408,3018, 988,4531,1970, +3034,3310, 540,2370,1562,1288,2990, 502,4765,1147, 4,1853,2708, 207, 294,2814, +4078,2902,2509, 684, 34,3105,3532,2551, 644, 709,2801,2344, 573,1727,3573,3557, +2021,1081,3100,4315,2100,3681, 199,2263,1837,2385, 146,3484,1195,2776,3949, 997, +1939,3973,1008,1091,1202,1962,1847,1149,4209,5444,1076, 493, 117,5400,2521, 972, +1490,2934,1796,4542,2374,1512,2933,2657, 413,2888,1135,2762,2314,2156,1355,2369, + 766,2007,2527,2170,3124,2491,2593,2632,4757,2437, 234,3125,3591,1898,1750,1376, +1942,3468,3138, 570,2127,2145,3276,4131, 962, 132,1445,4196, 19, 941,3624,3480, +3366,1973,1374,4461,3431,2629, 283,2415,2275, 808,2887,3620,2112,2563,1353,3610, + 955,1089,3103,1053, 96, 88,4097, 823,3808,1583, 399, 292,4091,3313, 421,1128, + 642,4006, 903,2539,1877,2082, 596, 29,4066,1790, 722,2157, 130, 995,1569, 769, +1485, 464, 513,2213, 288,1923,1101,2453,4316, 133, 486,2445, 50, 625, 487,2207, + 57, 423, 481,2962, 159,3729,1558, 491, 303, 482, 501, 240,2837, 112,3648,2392, +1783, 362, 8,3433,3422, 610,2793,3277,1390,1284,1654, 21,3823, 734, 367, 623, + 193, 287, 374,1009,1483, 816, 476, 313,2255,2340,1262,2150,2899,1146,2581, 782, +2116,1659,2018,1880, 255,3586,3314,1110,2867,2137,2564, 986,2767,5185,2006, 650, + 158, 926, 762, 881,3157,2717,2362,3587, 306,3690,3245,1542,3077,2427,1691,2478, +2118,2985,3490,2438, 539,2305, 983, 129,1754, 355,4201,2386, 827,2923, 104,1773, +2838,2771, 411,2905,3919, 376, 767, 122,1114, 828,2422,1817,3506, 266,3460,1007, +1609,4998, 945,2612,4429,2274, 726,1247,1964,2914,2199,2070,4002,4108, 657,3323, +1422, 579, 455,2764,4737,1222,2895,1670, 824,1223,1487,2525, 558, 861,3080, 598, +2659,2515,1967, 752,2583,2376,2214,4180, 977, 704,2464,4999,2622,4109,1210,2961, + 819,1541, 142,2284, 44, 418, 457,1126,3730,4347,4626,1644,1876,3671,1864, 302, +1063,5694, 624, 723,1984,3745,1314,1676,2488,1610,1449,3558,3569,2166,2098, 409, +1011,2325,3704,2306, 818,1732,1383,1824,1844,3757, 999,2705,3497,1216,1423,2683, +2426,2954,2501,2726,2229,1475,2554,5064,1971,1794,1666,2014,1343, 783, 724, 191, +2434,1354,2220,5065,1763,2752,2472,4152, 131, 175,2885,3434, 92,1466,4920,2616, +3871,3872,3866, 128,1551,1632, 669,1854,3682,4691,4125,1230, 188,2973,3290,1302, +1213, 560,3266, 917, 763,3909,3249,1760, 868,1958, 764,1782,2097, 145,2277,3774, +4462, 64,1491,3062, 971,2132,3606,2442, 221,1226,1617, 218, 323,1185,3207,3147, + 571, 619,1473,1005,1744,2281, 449,1887,2396,3685, 275, 375,3816,1743,3844,3731, + 845,1983,2350,4210,1377, 773, 967,3499,3052,3743,2725,4007,1697,1022,3943,1464, +3264,2855,2722,1952,1029,2839,2467, 84,4383,2215, 820,1391,2015,2448,3672, 377, +1948,2168, 797,2545,3536,2578,2645, 94,2874,1678, 405,1259,3071, 771, 546,1315, + 470,1243,3083, 895,2468, 981, 969,2037, 846,4181, 653,1276,2928, 14,2594, 557, +3007,2474, 156, 902,1338,1740,2574, 537,2518, 973,2282,2216,2433,1928, 138,2903, +1293,2631,1612, 646,3457, 839,2935, 111, 496,2191,2847, 589,3186, 149,3994,2060, +4031,2641,4067,3145,1870, 37,3597,2136,1025,2051,3009,3383,3549,1121,1016,3261, +1301, 251,2446,2599,2153, 872,3246, 637, 334,3705, 831, 884, 921,3065,3140,4092, +2198,1944, 246,2964, 108,2045,1152,1921,2308,1031, 203,3173,4170,1907,3890, 810, +1401,2003,1690, 506, 647,1242,2828,1761,1649,3208,2249,1589,3709,2931,5156,1708, + 498, 666,2613, 834,3817,1231, 184,2851,1124, 883,3197,2261,3710,1765,1553,2658, +1178,2639,2351, 93,1193, 942,2538,2141,4402, 235,1821, 870,1591,2192,1709,1871, +3341,1618,4126,2595,2334, 603, 651, 69, 701, 268,2662,3411,2555,1380,1606, 503, + 448, 254,2371,2646, 574,1187,2309,1770, 322,2235,1292,1801, 305, 566,1133, 229, +2067,2057, 706, 167, 483,2002,2672,3295,1820,3561,3067, 316, 378,2746,3452,1112, + 136,1981, 507,1651,2917,1117, 285,4591, 182,2580,3522,1304, 335,3303,1835,2504, +1795,1792,2248, 674,1018,2106,2449,1857,2292,2845, 976,3047,1781,2600,2727,1389, +1281, 52,3152, 153, 265,3950, 672,3485,3951,4463, 430,1183, 365, 278,2169, 27, +1407,1336,2304, 209,1340,1730,2202,1852,2403,2883, 979,1737,1062, 631,2829,2542, +3876,2592, 825,2086,2226,3048,3625, 352,1417,3724, 542, 991, 431,1351,3938,1861, +2294, 826,1361,2927,3142,3503,1738, 463,2462,2723, 582,1916,1595,2808, 400,3845, +3891,2868,3621,2254, 58,2492,1123, 910,2160,2614,1372,1603,1196,1072,3385,1700, +3267,1980, 696, 480,2430, 920, 799,1570,2920,1951,2041,4047,2540,1321,4223,2469, +3562,2228,1271,2602, 401,2833,3351,2575,5157, 907,2312,1256, 410, 263,3507,1582, + 996, 678,1849,2316,1480, 908,3545,2237, 703,2322, 667,1826,2849,1531,2604,2999, +2407,3146,2151,2630,1786,3711, 469,3542, 497,3899,2409, 858, 837,4446,3393,1274, + 786, 620,1845,2001,3311, 484, 308,3367,1204,1815,3691,2332,1532,2557,1842,2020, +2724,1927,2333,4440, 567, 22,1673,2728,4475,1987,1858,1144,1597, 101,1832,3601, + 12, 974,3783,4391, 951,1412, 1,3720, 453,4608,4041, 528,1041,1027,3230,2628, +1129, 875,1051,3291,1203,2262,1069,2860,2799,2149,2615,3278, 144,1758,3040, 31, + 475,1680, 366,2685,3184, 311,1642,4008,2466,5036,1593,1493,2809, 216,1420,1668, + 233, 304,2128,3284, 232,1429,1768,1040,2008,3407,2740,2967,2543, 242,2133, 778, +1565,2022,2620, 505,2189,2756,1098,2273, 372,1614, 708, 553,2846,2094,2278, 169, +3626,2835,4161, 228,2674,3165, 809,1454,1309, 466,1705,1095, 900,3423, 880,2667, +3751,5258,2317,3109,2571,4317,2766,1503,1342, 866,4447,1118, 63,2076, 314,1881, +1348,1061, 172, 978,3515,1747, 532, 511,3970, 6, 601, 905,2699,3300,1751, 276, +1467,3725,2668, 65,4239,2544,2779,2556,1604, 578,2451,1802, 992,2331,2624,1320, +3446, 713,1513,1013, 103,2786,2447,1661, 886,1702, 916, 654,3574,2031,1556, 751, +2178,2821,2179,1498,1538,2176, 271, 914,2251,2080,1325, 638,1953,2937,3877,2432, +2754, 95,3265,1716, 260,1227,4083, 775, 106,1357,3254, 426,1607, 555,2480, 772, +1985, 244,2546, 474, 495,1046,2611,1851,2061, 71,2089,1675,2590, 742,3758,2843, +3222,1433, 267,2180,2576,2826,2233,2092,3913,2435, 956,1745,3075, 856,2113,1116, + 451, 3,1988,2896,1398, 993,2463,1878,2049,1341,2718,2721,2870,2108, 712,2904, +4363,2753,2324, 277,2872,2349,2649, 384, 987, 435, 691,3000, 922, 164,3939, 652, +1500,1184,4153,2482,3373,2165,4848,2335,3775,3508,3154,2806,2830,1554,2102,1664, +2530,1434,2408, 893,1547,2623,3447,2832,2242,2532,3169,2856,3223,2078, 49,3770, +3469, 462, 318, 656,2259,3250,3069, 679,1629,2758, 344,1138,1104,3120,1836,1283, +3115,2154,1437,4448, 934, 759,1999, 794,2862,1038, 533,2560,1722,2342, 855,2626, +1197,1663,4476,3127, 85,4240,2528, 25,1111,1181,3673, 407,3470,4561,2679,2713, + 768,1925,2841,3986,1544,1165, 932, 373,1240,2146,1930,2673, 721,4766, 354,4333, + 391,2963, 187, 61,3364,1442,1102, 330,1940,1767, 341,3809,4118, 393,2496,2062, +2211, 105, 331, 300, 439, 913,1332, 626, 379,3304,1557, 328, 689,3952, 309,1555, + 931, 317,2517,3027, 325, 569, 686,2107,3084, 60,1042,1333,2794, 264,3177,4014, +1628, 258,3712, 7,4464,1176,1043,1778, 683, 114,1975, 78,1492, 383,1886, 510, + 386, 645,5291,2891,2069,3305,4138,3867,2939,2603,2493,1935,1066,1848,3588,1015, +1282,1289,4609, 697,1453,3044,2666,3611,1856,2412, 54, 719,1330, 568,3778,2459, +1748, 788, 492, 551,1191,1000, 488,3394,3763, 282,1799, 348,2016,1523,3155,2390, +1049, 382,2019,1788,1170, 729,2968,3523, 897,3926,2785,2938,3292, 350,2319,3238, +1718,1717,2655,3453,3143,4465, 161,2889,2980,2009,1421, 56,1908,1640,2387,2232, +1917,1874,2477,4921, 148, 83,3438, 592,4245,2882,1822,1055, 741, 115,1496,1624, + 381,1638,4592,1020, 516,3214, 458, 947,4575,1432, 211,1514,2926,1865,2142, 189, + 852,1221,1400,1486, 882,2299,4036, 351, 28,1122, 700,6479,6480,6481,6482,6483, #last 512 +) + diff --git a/env/lib/python2.7/site-packages/chardet/gb2312freq.pyc b/env/lib/python2.7/site-packages/chardet/gb2312freq.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5bfd3d778f35de2323098e48bb03b6619bdbdf6a GIT binary patch literal 38337 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/gb2312prober.py b/env/lib/python2.7/site-packages/chardet/gb2312prober.py new file mode 100644 index 0000000..8446d2d --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/gb2312prober.py @@ -0,0 +1,46 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import GB2312DistributionAnalysis +from .mbcssm import GB2312_SM_MODEL + +class GB2312Prober(MultiByteCharSetProber): + def __init__(self): + super(GB2312Prober, self).__init__() + self.coding_sm = CodingStateMachine(GB2312_SM_MODEL) + self.distribution_analyzer = GB2312DistributionAnalysis() + self.reset() + + @property + def charset_name(self): + return "GB2312" + + @property + def language(self): + return "Chinese" diff --git a/env/lib/python2.7/site-packages/chardet/gb2312prober.pyc b/env/lib/python2.7/site-packages/chardet/gb2312prober.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c07c8538a14dc6fbef8476c47dccadff1dec4729 GIT binary patch literal 1300 zcmb_bOK;Oa5T5lbX;o+if&=1GPCifqt+*8gNf8%PkS&nv%gTwjsVm#DylbQ&Zt!3D zf&2mH+f74n97y7s-Py-HzWLVweP{RZ)vt>=t$#j`Z&-B3s^CvhMN|vQ1PRz4RUXwo zWxlh0ssgG*%0g!cR7F$|C>yXHk`i<&sEFt%(GQ}FY)Hj`(s;=3OTj9JG7niz`^uE# zl~I$cyi1k&)GcSKbNlyrf3hsfW|5lQsA)dGDjVhY9`WA$@$t!vBqBoAI#on%|+T^;PJ+oMUPl1Lg`#N7m#_Rd_aO?7?Qx6-i;Yj zlEwgVj+!7aCM^1tmElj&cfRV;wFfkW@yP^m#j7$T6JZte0rd6I9^%-kt>Qf1ftwHx z`&M;H024?`SvIASGC|M;Q4NmHEn-sF2}&{#SQWP*k~uK?raJ4gQ(75^7W`^eUB*0; zRr)2*My75@ZP^~p`m!pHnlGQL=U+#2?pC49W?anBiq zWNWDbr7CY0eZEjndA?371|aKRBV#EILP}XLi@svh;%pBv^h^%3N= self.MIN_FINAL_CHAR_DISTANCE: + return self.LOGICAL_HEBREW_NAME + if finalsub <= -self.MIN_FINAL_CHAR_DISTANCE: + return self.VISUAL_HEBREW_NAME + + # It's not dominant enough, try to rely on the model scores instead. + modelsub = (self._logical_prober.get_confidence() + - self._visual_prober.get_confidence()) + if modelsub > self.MIN_MODEL_DISTANCE: + return self.LOGICAL_HEBREW_NAME + if modelsub < -self.MIN_MODEL_DISTANCE: + return self.VISUAL_HEBREW_NAME + + # Still no good, back to final letter distance, maybe it'll save the + # day. + if finalsub < 0.0: + return self.VISUAL_HEBREW_NAME + + # (finalsub > 0 - Logical) or (don't know what to do) default to + # Logical. + return self.LOGICAL_HEBREW_NAME + + @property + def language(self): + return 'Hebrew' + + @property + def state(self): + # Remain active as long as any of the model probers are active. + if (self._logical_prober.state == ProbingState.NOT_ME) and \ + (self._visual_prober.state == ProbingState.NOT_ME): + return ProbingState.NOT_ME + return ProbingState.DETECTING diff --git a/env/lib/python2.7/site-packages/chardet/hebrewprober.pyc b/env/lib/python2.7/site-packages/chardet/hebrewprober.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9a2a016606fc74025858b8f30c21bb389722e4fa GIT binary patch literal 3649 zcmb_eOK%)S5U!bhdHq_)kHkqJBnZMH;g}#V?g$gZ$k*qPnR!5KFXFWdt8d2$EHFOXX#e}LRU@{8mSkv~Z8F!@8| zj*vf0?kM>qfkv}HNIQfS}nIL~$lu7a@M46)CF!__v@3AvS#GLAw z(_$X(m`6#~%11bc@JEQBAby7U1>#qT-yj}A{0{L4#Gep37L5-kA6)w3{rl&WLAI*3 zm6`eZxz}dq6J+jo82PQ+$;{bT=H}|iJ02jq$WL;eh30>Y?y#peZQDQ$pt9|8_Kd;_ zGz#a?D4a&4a3+mX#80*dJHM|9nofBLJHX4Ny%)p^nCSr)o)<=;_B@?s!)ZlaY&F6<8%ezt2YULkx3|Ki-F=Dmy}dZNC1mk7f=&L387SdZXQ@5mnI6Sh zx_p!N`mHQnZHRyGRNAi-rbws3-@L=+F{e5iLPC3zISNOZD{ z%@it46(EpmRb(M?Db!qFVgj|k;3vTbgm|(=s}67QbYnTp#+^Nfy_jX%;&}7D-4%^L2V25 zw9TY%DWR@B^+Q~COK*cG8UK%i5tU3!PUf@nX46z#290( zwy;z!OUeMGAYSiF8h~P$nCknA^)&jagXj@~ME@)+{}Fv7+Z#8Mr~$9DqL$OZdrU;$ zVFE)Uyq?<9`u_-=^)U#eo z0k_cP?^^WU_sGoByWi4XCWD+qnEqKx2`=iL48;${%!$n7m$8PP-R7QZ)2p^upqrn{ z+ku`rGLqfqBTMEKG3Vw(iq6X%?$o?E@Ac&3JYqcQY~8y^WP;0M5pMTsh34tzEL}&8 zgPj(m&@;{9ebCWyJSz}fBVEqQnzvlhQ><==O&!GER@m6`HuiPkwW8*}v>}B)Zn}~* zsi$G0Qwi`(m9@&^TGhGK(+EIKStHT01~m0{+!rE%o0~!4f5+d+NfvZ`+%DK9d&C;H zOPO(d+#1hJXG+!y)`qQ-th8!)fC`ja_?#6(4oHipnFMKVFjI0ApO)7dW=f|=4DB%B z=TgvwKsnlG8kmI&sXlE8gjEM72AT;V~x$1bP!z^B2P~K9twzl9bR`dkFyRvery2zD#xpF~Ou6xb`Lp;vo z*Q&Lv{~ne$E@x|l8*053ZH9gj)dT75@*C{4ys}ie(%s@QoaOXS+8fdUr6se`7qC(F zIH%F;qxIe3Z?==CSWtG%Dp>_<%qnDtS*Ch+*eV#n!EZbQI5@+3PLnFMH&;{RB3AudUM+AP mNa=0vFp3Avy*r57yNLl5`}ECgNzI!En75E~IYh^-vHCy4$H}n( literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/jisfreq.py b/env/lib/python2.7/site-packages/chardet/jisfreq.py new file mode 100644 index 0000000..83fc082 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/jisfreq.py @@ -0,0 +1,325 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# Sampling from about 20M text materials include literature and computer technology +# +# Japanese frequency table, applied to both S-JIS and EUC-JP +# They are sorted in order. + +# 128 --> 0.77094 +# 256 --> 0.85710 +# 512 --> 0.92635 +# 1024 --> 0.97130 +# 2048 --> 0.99431 +# +# Ideal Distribution Ratio = 0.92635 / (1-0.92635) = 12.58 +# Random Distribution Ration = 512 / (2965+62+83+86-512) = 0.191 +# +# Typical Distribution Ratio, 25% of IDR + +JIS_TYPICAL_DISTRIBUTION_RATIO = 3.0 + +# Char to FreqOrder table , +JIS_TABLE_SIZE = 4368 + +JIS_CHAR_TO_FREQ_ORDER = ( + 40, 1, 6, 182, 152, 180, 295,2127, 285, 381,3295,4304,3068,4606,3165,3510, # 16 +3511,1822,2785,4607,1193,2226,5070,4608, 171,2996,1247, 18, 179,5071, 856,1661, # 32 +1262,5072, 619, 127,3431,3512,3230,1899,1700, 232, 228,1294,1298, 284, 283,2041, # 48 +2042,1061,1062, 48, 49, 44, 45, 433, 434,1040,1041, 996, 787,2997,1255,4305, # 64 +2108,4609,1684,1648,5073,5074,5075,5076,5077,5078,3687,5079,4610,5080,3927,3928, # 80 +5081,3296,3432, 290,2285,1471,2187,5082,2580,2825,1303,2140,1739,1445,2691,3375, # 96 +1691,3297,4306,4307,4611, 452,3376,1182,2713,3688,3069,4308,5083,5084,5085,5086, # 112 +5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102, # 128 +5103,5104,5105,5106,5107,5108,5109,5110,5111,5112,4097,5113,5114,5115,5116,5117, # 144 +5118,5119,5120,5121,5122,5123,5124,5125,5126,5127,5128,5129,5130,5131,5132,5133, # 160 +5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149, # 176 +5150,5151,5152,4612,5153,5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164, # 192 +5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,1472, 598, 618, 820,1205, # 208 +1309,1412,1858,1307,1692,5176,5177,5178,5179,5180,5181,5182,1142,1452,1234,1172, # 224 +1875,2043,2149,1793,1382,2973, 925,2404,1067,1241, 960,1377,2935,1491, 919,1217, # 240 +1865,2030,1406,1499,2749,4098,5183,5184,5185,5186,5187,5188,2561,4099,3117,1804, # 256 +2049,3689,4309,3513,1663,5189,3166,3118,3298,1587,1561,3433,5190,3119,1625,2998, # 272 +3299,4613,1766,3690,2786,4614,5191,5192,5193,5194,2161, 26,3377, 2,3929, 20, # 288 +3691, 47,4100, 50, 17, 16, 35, 268, 27, 243, 42, 155, 24, 154, 29, 184, # 304 + 4, 91, 14, 92, 53, 396, 33, 289, 9, 37, 64, 620, 21, 39, 321, 5, # 320 + 12, 11, 52, 13, 3, 208, 138, 0, 7, 60, 526, 141, 151,1069, 181, 275, # 336 +1591, 83, 132,1475, 126, 331, 829, 15, 69, 160, 59, 22, 157, 55,1079, 312, # 352 + 109, 38, 23, 25, 10, 19, 79,5195, 61, 382,1124, 8, 30,5196,5197,5198, # 368 +5199,5200,5201,5202,5203,5204,5205,5206, 89, 62, 74, 34,2416, 112, 139, 196, # 384 + 271, 149, 84, 607, 131, 765, 46, 88, 153, 683, 76, 874, 101, 258, 57, 80, # 400 + 32, 364, 121,1508, 169,1547, 68, 235, 145,2999, 41, 360,3027, 70, 63, 31, # 416 + 43, 259, 262,1383, 99, 533, 194, 66, 93, 846, 217, 192, 56, 106, 58, 565, # 432 + 280, 272, 311, 256, 146, 82, 308, 71, 100, 128, 214, 655, 110, 261, 104,1140, # 448 + 54, 51, 36, 87, 67,3070, 185,2618,2936,2020, 28,1066,2390,2059,5207,5208, # 464 +5209,5210,5211,5212,5213,5214,5215,5216,4615,5217,5218,5219,5220,5221,5222,5223, # 480 +5224,5225,5226,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,3514,5237,5238, # 496 +5239,5240,5241,5242,5243,5244,2297,2031,4616,4310,3692,5245,3071,5246,3598,5247, # 512 +4617,3231,3515,5248,4101,4311,4618,3808,4312,4102,5249,4103,4104,3599,5250,5251, # 528 +5252,5253,5254,5255,5256,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267, # 544 +5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283, # 560 +5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299, # 576 +5300,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315, # 592 +5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331, # 608 +5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5347, # 624 +5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363, # 640 +5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379, # 656 +5380,5381, 363, 642,2787,2878,2788,2789,2316,3232,2317,3434,2011, 165,1942,3930, # 672 +3931,3932,3933,5382,4619,5383,4620,5384,5385,5386,5387,5388,5389,5390,5391,5392, # 688 +5393,5394,5395,5396,5397,5398,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408, # 704 +5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5421,5422,5423,5424, # 720 +5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440, # 736 +5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456, # 752 +5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472, # 768 +5473,5474,5475,5476,5477,5478,5479,5480,5481,5482,5483,5484,5485,5486,5487,5488, # 784 +5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504, # 800 +5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520, # 816 +5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536, # 832 +5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,5549,5550,5551,5552, # 848 +5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568, # 864 +5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584, # 880 +5585,5586,5587,5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600, # 896 +5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616, # 912 +5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632, # 928 +5633,5634,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648, # 944 +5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664, # 960 +5665,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,5677,5678,5679,5680, # 976 +5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696, # 992 +5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712, # 1008 +5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728, # 1024 +5729,5730,5731,5732,5733,5734,5735,5736,5737,5738,5739,5740,5741,5742,5743,5744, # 1040 +5745,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5760, # 1056 +5761,5762,5763,5764,5765,5766,5767,5768,5769,5770,5771,5772,5773,5774,5775,5776, # 1072 +5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5787,5788,5789,5790,5791,5792, # 1088 +5793,5794,5795,5796,5797,5798,5799,5800,5801,5802,5803,5804,5805,5806,5807,5808, # 1104 +5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824, # 1120 +5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840, # 1136 +5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856, # 1152 +5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5867,5868,5869,5870,5871,5872, # 1168 +5873,5874,5875,5876,5877,5878,5879,5880,5881,5882,5883,5884,5885,5886,5887,5888, # 1184 +5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904, # 1200 +5905,5906,5907,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920, # 1216 +5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936, # 1232 +5937,5938,5939,5940,5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951,5952, # 1248 +5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968, # 1264 +5969,5970,5971,5972,5973,5974,5975,5976,5977,5978,5979,5980,5981,5982,5983,5984, # 1280 +5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5997,5998,5999,6000, # 1296 +6001,6002,6003,6004,6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016, # 1312 +6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032, # 1328 +6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048, # 1344 +6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064, # 1360 +6065,6066,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080, # 1376 +6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096, # 1392 +6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112, # 1408 +6113,6114,2044,2060,4621, 997,1235, 473,1186,4622, 920,3378,6115,6116, 379,1108, # 1424 +4313,2657,2735,3934,6117,3809, 636,3233, 573,1026,3693,3435,2974,3300,2298,4105, # 1440 + 854,2937,2463, 393,2581,2417, 539, 752,1280,2750,2480, 140,1161, 440, 708,1569, # 1456 + 665,2497,1746,1291,1523,3000, 164,1603, 847,1331, 537,1997, 486, 508,1693,2418, # 1472 +1970,2227, 878,1220, 299,1030, 969, 652,2751, 624,1137,3301,2619, 65,3302,2045, # 1488 +1761,1859,3120,1930,3694,3516, 663,1767, 852, 835,3695, 269, 767,2826,2339,1305, # 1504 + 896,1150, 770,1616,6118, 506,1502,2075,1012,2519, 775,2520,2975,2340,2938,4314, # 1520 +3028,2086,1224,1943,2286,6119,3072,4315,2240,1273,1987,3935,1557, 175, 597, 985, # 1536 +3517,2419,2521,1416,3029, 585, 938,1931,1007,1052,1932,1685,6120,3379,4316,4623, # 1552 + 804, 599,3121,1333,2128,2539,1159,1554,2032,3810, 687,2033,2904, 952, 675,1467, # 1568 +3436,6121,2241,1096,1786,2440,1543,1924, 980,1813,2228, 781,2692,1879, 728,1918, # 1584 +3696,4624, 548,1950,4625,1809,1088,1356,3303,2522,1944, 502, 972, 373, 513,2827, # 1600 + 586,2377,2391,1003,1976,1631,6122,2464,1084, 648,1776,4626,2141, 324, 962,2012, # 1616 +2177,2076,1384, 742,2178,1448,1173,1810, 222, 102, 301, 445, 125,2420, 662,2498, # 1632 + 277, 200,1476,1165,1068, 224,2562,1378,1446, 450,1880, 659, 791, 582,4627,2939, # 1648 +3936,1516,1274, 555,2099,3697,1020,1389,1526,3380,1762,1723,1787,2229, 412,2114, # 1664 +1900,2392,3518, 512,2597, 427,1925,2341,3122,1653,1686,2465,2499, 697, 330, 273, # 1680 + 380,2162, 951, 832, 780, 991,1301,3073, 965,2270,3519, 668,2523,2636,1286, 535, # 1696 +1407, 518, 671, 957,2658,2378, 267, 611,2197,3030,6123, 248,2299, 967,1799,2356, # 1712 + 850,1418,3437,1876,1256,1480,2828,1718,6124,6125,1755,1664,2405,6126,4628,2879, # 1728 +2829, 499,2179, 676,4629, 557,2329,2214,2090, 325,3234, 464, 811,3001, 992,2342, # 1744 +2481,1232,1469, 303,2242, 466,1070,2163, 603,1777,2091,4630,2752,4631,2714, 322, # 1760 +2659,1964,1768, 481,2188,1463,2330,2857,3600,2092,3031,2421,4632,2318,2070,1849, # 1776 +2598,4633,1302,2254,1668,1701,2422,3811,2905,3032,3123,2046,4106,1763,1694,4634, # 1792 +1604, 943,1724,1454, 917, 868,2215,1169,2940, 552,1145,1800,1228,1823,1955, 316, # 1808 +1080,2510, 361,1807,2830,4107,2660,3381,1346,1423,1134,4108,6127, 541,1263,1229, # 1824 +1148,2540, 545, 465,1833,2880,3438,1901,3074,2482, 816,3937, 713,1788,2500, 122, # 1840 +1575, 195,1451,2501,1111,6128, 859, 374,1225,2243,2483,4317, 390,1033,3439,3075, # 1856 +2524,1687, 266, 793,1440,2599, 946, 779, 802, 507, 897,1081, 528,2189,1292, 711, # 1872 +1866,1725,1167,1640, 753, 398,2661,1053, 246, 348,4318, 137,1024,3440,1600,2077, # 1888 +2129, 825,4319, 698, 238, 521, 187,2300,1157,2423,1641,1605,1464,1610,1097,2541, # 1904 +1260,1436, 759,2255,1814,2150, 705,3235, 409,2563,3304, 561,3033,2005,2564, 726, # 1920 +1956,2343,3698,4109, 949,3812,3813,3520,1669, 653,1379,2525, 881,2198, 632,2256, # 1936 +1027, 778,1074, 733,1957, 514,1481,2466, 554,2180, 702,3938,1606,1017,1398,6129, # 1952 +1380,3521, 921, 993,1313, 594, 449,1489,1617,1166, 768,1426,1360, 495,1794,3601, # 1968 +1177,3602,1170,4320,2344, 476, 425,3167,4635,3168,1424, 401,2662,1171,3382,1998, # 1984 +1089,4110, 477,3169, 474,6130,1909, 596,2831,1842, 494, 693,1051,1028,1207,3076, # 2000 + 606,2115, 727,2790,1473,1115, 743,3522, 630, 805,1532,4321,2021, 366,1057, 838, # 2016 + 684,1114,2142,4322,2050,1492,1892,1808,2271,3814,2424,1971,1447,1373,3305,1090, # 2032 +1536,3939,3523,3306,1455,2199, 336, 369,2331,1035, 584,2393, 902, 718,2600,6131, # 2048 +2753, 463,2151,1149,1611,2467, 715,1308,3124,1268, 343,1413,3236,1517,1347,2663, # 2064 +2093,3940,2022,1131,1553,2100,2941,1427,3441,2942,1323,2484,6132,1980, 872,2368, # 2080 +2441,2943, 320,2369,2116,1082, 679,1933,3941,2791,3815, 625,1143,2023, 422,2200, # 2096 +3816,6133, 730,1695, 356,2257,1626,2301,2858,2637,1627,1778, 937, 883,2906,2693, # 2112 +3002,1769,1086, 400,1063,1325,3307,2792,4111,3077, 456,2345,1046, 747,6134,1524, # 2128 + 884,1094,3383,1474,2164,1059, 974,1688,2181,2258,1047, 345,1665,1187, 358, 875, # 2144 +3170, 305, 660,3524,2190,1334,1135,3171,1540,1649,2542,1527, 927, 968,2793, 885, # 2160 +1972,1850, 482, 500,2638,1218,1109,1085,2543,1654,2034, 876, 78,2287,1482,1277, # 2176 + 861,1675,1083,1779, 724,2754, 454, 397,1132,1612,2332, 893, 672,1237, 257,2259, # 2192 +2370, 135,3384, 337,2244, 547, 352, 340, 709,2485,1400, 788,1138,2511, 540, 772, # 2208 +1682,2260,2272,2544,2013,1843,1902,4636,1999,1562,2288,4637,2201,1403,1533, 407, # 2224 + 576,3308,1254,2071, 978,3385, 170, 136,1201,3125,2664,3172,2394, 213, 912, 873, # 2240 +3603,1713,2202, 699,3604,3699, 813,3442, 493, 531,1054, 468,2907,1483, 304, 281, # 2256 +4112,1726,1252,2094, 339,2319,2130,2639, 756,1563,2944, 748, 571,2976,1588,2425, # 2272 +2715,1851,1460,2426,1528,1392,1973,3237, 288,3309, 685,3386, 296, 892,2716,2216, # 2288 +1570,2245, 722,1747,2217, 905,3238,1103,6135,1893,1441,1965, 251,1805,2371,3700, # 2304 +2601,1919,1078, 75,2182,1509,1592,1270,2640,4638,2152,6136,3310,3817, 524, 706, # 2320 +1075, 292,3818,1756,2602, 317, 98,3173,3605,3525,1844,2218,3819,2502, 814, 567, # 2336 + 385,2908,1534,6137, 534,1642,3239, 797,6138,1670,1529, 953,4323, 188,1071, 538, # 2352 + 178, 729,3240,2109,1226,1374,2000,2357,2977, 731,2468,1116,2014,2051,6139,1261, # 2368 +1593, 803,2859,2736,3443, 556, 682, 823,1541,6140,1369,2289,1706,2794, 845, 462, # 2384 +2603,2665,1361, 387, 162,2358,1740, 739,1770,1720,1304,1401,3241,1049, 627,1571, # 2400 +2427,3526,1877,3942,1852,1500, 431,1910,1503, 677, 297,2795, 286,1433,1038,1198, # 2416 +2290,1133,1596,4113,4639,2469,1510,1484,3943,6141,2442, 108, 712,4640,2372, 866, # 2432 +3701,2755,3242,1348, 834,1945,1408,3527,2395,3243,1811, 824, 994,1179,2110,1548, # 2448 +1453, 790,3003, 690,4324,4325,2832,2909,3820,1860,3821, 225,1748, 310, 346,1780, # 2464 +2470, 821,1993,2717,2796, 828, 877,3528,2860,2471,1702,2165,2910,2486,1789, 453, # 2480 + 359,2291,1676, 73,1164,1461,1127,3311, 421, 604, 314,1037, 589, 116,2487, 737, # 2496 + 837,1180, 111, 244, 735,6142,2261,1861,1362, 986, 523, 418, 581,2666,3822, 103, # 2512 + 855, 503,1414,1867,2488,1091, 657,1597, 979, 605,1316,4641,1021,2443,2078,2001, # 2528 +1209, 96, 587,2166,1032, 260,1072,2153, 173, 94, 226,3244, 819,2006,4642,4114, # 2544 +2203, 231,1744, 782, 97,2667, 786,3387, 887, 391, 442,2219,4326,1425,6143,2694, # 2560 + 633,1544,1202, 483,2015, 592,2052,1958,2472,1655, 419, 129,4327,3444,3312,1714, # 2576 +1257,3078,4328,1518,1098, 865,1310,1019,1885,1512,1734, 469,2444, 148, 773, 436, # 2592 +1815,1868,1128,1055,4329,1245,2756,3445,2154,1934,1039,4643, 579,1238, 932,2320, # 2608 + 353, 205, 801, 115,2428, 944,2321,1881, 399,2565,1211, 678, 766,3944, 335,2101, # 2624 +1459,1781,1402,3945,2737,2131,1010, 844, 981,1326,1013, 550,1816,1545,2620,1335, # 2640 +1008, 371,2881, 936,1419,1613,3529,1456,1395,2273,1834,2604,1317,2738,2503, 416, # 2656 +1643,4330, 806,1126, 229, 591,3946,1314,1981,1576,1837,1666, 347,1790, 977,3313, # 2672 + 764,2861,1853, 688,2429,1920,1462, 77, 595, 415,2002,3034, 798,1192,4115,6144, # 2688 +2978,4331,3035,2695,2582,2072,2566, 430,2430,1727, 842,1396,3947,3702, 613, 377, # 2704 + 278, 236,1417,3388,3314,3174, 757,1869, 107,3530,6145,1194, 623,2262, 207,1253, # 2720 +2167,3446,3948, 492,1117,1935, 536,1838,2757,1246,4332, 696,2095,2406,1393,1572, # 2736 +3175,1782, 583, 190, 253,1390,2230, 830,3126,3389, 934,3245,1703,1749,2979,1870, # 2752 +2545,1656,2204, 869,2346,4116,3176,1817, 496,1764,4644, 942,1504, 404,1903,1122, # 2768 +1580,3606,2945,1022, 515, 372,1735, 955,2431,3036,6146,2797,1110,2302,2798, 617, # 2784 +6147, 441, 762,1771,3447,3607,3608,1904, 840,3037, 86, 939,1385, 572,1370,2445, # 2800 +1336, 114,3703, 898, 294, 203,3315, 703,1583,2274, 429, 961,4333,1854,1951,3390, # 2816 +2373,3704,4334,1318,1381, 966,1911,2322,1006,1155, 309, 989, 458,2718,1795,1372, # 2832 +1203, 252,1689,1363,3177, 517,1936, 168,1490, 562, 193,3823,1042,4117,1835, 551, # 2848 + 470,4645, 395, 489,3448,1871,1465,2583,2641, 417,1493, 279,1295, 511,1236,1119, # 2864 + 72,1231,1982,1812,3004, 871,1564, 984,3449,1667,2696,2096,4646,2347,2833,1673, # 2880 +3609, 695,3246,2668, 807,1183,4647, 890, 388,2333,1801,1457,2911,1765,1477,1031, # 2896 +3316,3317,1278,3391,2799,2292,2526, 163,3450,4335,2669,1404,1802,6148,2323,2407, # 2912 +1584,1728,1494,1824,1269, 298, 909,3318,1034,1632, 375, 776,1683,2061, 291, 210, # 2928 +1123, 809,1249,1002,2642,3038, 206,1011,2132, 144, 975, 882,1565, 342, 667, 754, # 2944 +1442,2143,1299,2303,2062, 447, 626,2205,1221,2739,2912,1144,1214,2206,2584, 760, # 2960 +1715, 614, 950,1281,2670,2621, 810, 577,1287,2546,4648, 242,2168, 250,2643, 691, # 2976 + 123,2644, 647, 313,1029, 689,1357,2946,1650, 216, 771,1339,1306, 808,2063, 549, # 2992 + 913,1371,2913,2914,6149,1466,1092,1174,1196,1311,2605,2396,1783,1796,3079, 406, # 3008 +2671,2117,3949,4649, 487,1825,2220,6150,2915, 448,2348,1073,6151,2397,1707, 130, # 3024 + 900,1598, 329, 176,1959,2527,1620,6152,2275,4336,3319,1983,2191,3705,3610,2155, # 3040 +3706,1912,1513,1614,6153,1988, 646, 392,2304,1589,3320,3039,1826,1239,1352,1340, # 3056 +2916, 505,2567,1709,1437,2408,2547, 906,6154,2672, 384,1458,1594,1100,1329, 710, # 3072 + 423,3531,2064,2231,2622,1989,2673,1087,1882, 333, 841,3005,1296,2882,2379, 580, # 3088 +1937,1827,1293,2585, 601, 574, 249,1772,4118,2079,1120, 645, 901,1176,1690, 795, # 3104 +2207, 478,1434, 516,1190,1530, 761,2080, 930,1264, 355, 435,1552, 644,1791, 987, # 3120 + 220,1364,1163,1121,1538, 306,2169,1327,1222, 546,2645, 218, 241, 610,1704,3321, # 3136 +1984,1839,1966,2528, 451,6155,2586,3707,2568, 907,3178, 254,2947, 186,1845,4650, # 3152 + 745, 432,1757, 428,1633, 888,2246,2221,2489,3611,2118,1258,1265, 956,3127,1784, # 3168 +4337,2490, 319, 510, 119, 457,3612, 274,2035,2007,4651,1409,3128, 970,2758, 590, # 3184 +2800, 661,2247,4652,2008,3950,1420,1549,3080,3322,3951,1651,1375,2111, 485,2491, # 3200 +1429,1156,6156,2548,2183,1495, 831,1840,2529,2446, 501,1657, 307,1894,3247,1341, # 3216 + 666, 899,2156,1539,2549,1559, 886, 349,2208,3081,2305,1736,3824,2170,2759,1014, # 3232 +1913,1386, 542,1397,2948, 490, 368, 716, 362, 159, 282,2569,1129,1658,1288,1750, # 3248 +2674, 276, 649,2016, 751,1496, 658,1818,1284,1862,2209,2087,2512,3451, 622,2834, # 3264 + 376, 117,1060,2053,1208,1721,1101,1443, 247,1250,3179,1792,3952,2760,2398,3953, # 3280 +6157,2144,3708, 446,2432,1151,2570,3452,2447,2761,2835,1210,2448,3082, 424,2222, # 3296 +1251,2449,2119,2836, 504,1581,4338, 602, 817, 857,3825,2349,2306, 357,3826,1470, # 3312 +1883,2883, 255, 958, 929,2917,3248, 302,4653,1050,1271,1751,2307,1952,1430,2697, # 3328 +2719,2359, 354,3180, 777, 158,2036,4339,1659,4340,4654,2308,2949,2248,1146,2232, # 3344 +3532,2720,1696,2623,3827,6158,3129,1550,2698,1485,1297,1428, 637, 931,2721,2145, # 3360 + 914,2550,2587, 81,2450, 612, 827,2646,1242,4655,1118,2884, 472,1855,3181,3533, # 3376 +3534, 569,1353,2699,1244,1758,2588,4119,2009,2762,2171,3709,1312,1531,6159,1152, # 3392 +1938, 134,1830, 471,3710,2276,1112,1535,3323,3453,3535, 982,1337,2950, 488, 826, # 3408 + 674,1058,1628,4120,2017, 522,2399, 211, 568,1367,3454, 350, 293,1872,1139,3249, # 3424 +1399,1946,3006,1300,2360,3324, 588, 736,6160,2606, 744, 669,3536,3828,6161,1358, # 3440 + 199, 723, 848, 933, 851,1939,1505,1514,1338,1618,1831,4656,1634,3613, 443,2740, # 3456 +3829, 717,1947, 491,1914,6162,2551,1542,4121,1025,6163,1099,1223, 198,3040,2722, # 3472 + 370, 410,1905,2589, 998,1248,3182,2380, 519,1449,4122,1710, 947, 928,1153,4341, # 3488 +2277, 344,2624,1511, 615, 105, 161,1212,1076,1960,3130,2054,1926,1175,1906,2473, # 3504 + 414,1873,2801,6164,2309, 315,1319,3325, 318,2018,2146,2157, 963, 631, 223,4342, # 3520 +4343,2675, 479,3711,1197,2625,3712,2676,2361,6165,4344,4123,6166,2451,3183,1886, # 3536 +2184,1674,1330,1711,1635,1506, 799, 219,3250,3083,3954,1677,3713,3326,2081,3614, # 3552 +1652,2073,4657,1147,3041,1752, 643,1961, 147,1974,3955,6167,1716,2037, 918,3007, # 3568 +1994, 120,1537, 118, 609,3184,4345, 740,3455,1219, 332,1615,3830,6168,1621,2980, # 3584 +1582, 783, 212, 553,2350,3714,1349,2433,2082,4124, 889,6169,2310,1275,1410, 973, # 3600 + 166,1320,3456,1797,1215,3185,2885,1846,2590,2763,4658, 629, 822,3008, 763, 940, # 3616 +1990,2862, 439,2409,1566,1240,1622, 926,1282,1907,2764, 654,2210,1607, 327,1130, # 3632 +3956,1678,1623,6170,2434,2192, 686, 608,3831,3715, 903,3957,3042,6171,2741,1522, # 3648 +1915,1105,1555,2552,1359, 323,3251,4346,3457, 738,1354,2553,2311,2334,1828,2003, # 3664 +3832,1753,2351,1227,6172,1887,4125,1478,6173,2410,1874,1712,1847, 520,1204,2607, # 3680 + 264,4659, 836,2677,2102, 600,4660,3833,2278,3084,6174,4347,3615,1342, 640, 532, # 3696 + 543,2608,1888,2400,2591,1009,4348,1497, 341,1737,3616,2723,1394, 529,3252,1321, # 3712 + 983,4661,1515,2120, 971,2592, 924, 287,1662,3186,4349,2700,4350,1519, 908,1948, # 3728 +2452, 156, 796,1629,1486,2223,2055, 694,4126,1259,1036,3392,1213,2249,2742,1889, # 3744 +1230,3958,1015, 910, 408, 559,3617,4662, 746, 725, 935,4663,3959,3009,1289, 563, # 3760 + 867,4664,3960,1567,2981,2038,2626, 988,2263,2381,4351, 143,2374, 704,1895,6175, # 3776 +1188,3716,2088, 673,3085,2362,4352, 484,1608,1921,2765,2918, 215, 904,3618,3537, # 3792 + 894, 509, 976,3043,2701,3961,4353,2837,2982, 498,6176,6177,1102,3538,1332,3393, # 3808 +1487,1636,1637, 233, 245,3962, 383, 650, 995,3044, 460,1520,1206,2352, 749,3327, # 3824 + 530, 700, 389,1438,1560,1773,3963,2264, 719,2951,2724,3834, 870,1832,1644,1000, # 3840 + 839,2474,3717, 197,1630,3394, 365,2886,3964,1285,2133, 734, 922, 818,1106, 732, # 3856 + 480,2083,1774,3458, 923,2279,1350, 221,3086, 85,2233,2234,3835,1585,3010,2147, # 3872 +1387,1705,2382,1619,2475, 133, 239,2802,1991,1016,2084,2383, 411,2838,1113, 651, # 3888 +1985,1160,3328, 990,1863,3087,1048,1276,2647, 265,2627,1599,3253,2056, 150, 638, # 3904 +2019, 656, 853, 326,1479, 680,1439,4354,1001,1759, 413,3459,3395,2492,1431, 459, # 3920 +4355,1125,3329,2265,1953,1450,2065,2863, 849, 351,2678,3131,3254,3255,1104,1577, # 3936 + 227,1351,1645,2453,2193,1421,2887, 812,2121, 634, 95,2435, 201,2312,4665,1646, # 3952 +1671,2743,1601,2554,2702,2648,2280,1315,1366,2089,3132,1573,3718,3965,1729,1189, # 3968 + 328,2679,1077,1940,1136, 558,1283, 964,1195, 621,2074,1199,1743,3460,3619,1896, # 3984 +1916,1890,3836,2952,1154,2112,1064, 862, 378,3011,2066,2113,2803,1568,2839,6178, # 4000 +3088,2919,1941,1660,2004,1992,2194, 142, 707,1590,1708,1624,1922,1023,1836,1233, # 4016 +1004,2313, 789, 741,3620,6179,1609,2411,1200,4127,3719,3720,4666,2057,3721, 593, # 4032 +2840, 367,2920,1878,6180,3461,1521, 628,1168, 692,2211,2649, 300, 720,2067,2571, # 4048 +2953,3396, 959,2504,3966,3539,3462,1977, 701,6181, 954,1043, 800, 681, 183,3722, # 4064 +1803,1730,3540,4128,2103, 815,2314, 174, 467, 230,2454,1093,2134, 755,3541,3397, # 4080 +1141,1162,6182,1738,2039, 270,3256,2513,1005,1647,2185,3837, 858,1679,1897,1719, # 4096 +2954,2324,1806, 402, 670, 167,4129,1498,2158,2104, 750,6183, 915, 189,1680,1551, # 4112 + 455,4356,1501,2455, 405,1095,2955, 338,1586,1266,1819, 570, 641,1324, 237,1556, # 4128 +2650,1388,3723,6184,1368,2384,1343,1978,3089,2436, 879,3724, 792,1191, 758,3012, # 4144 +1411,2135,1322,4357, 240,4667,1848,3725,1574,6185, 420,3045,1546,1391, 714,4358, # 4160 +1967, 941,1864, 863, 664, 426, 560,1731,2680,1785,2864,1949,2363, 403,3330,1415, # 4176 +1279,2136,1697,2335, 204, 721,2097,3838, 90,6186,2085,2505, 191,3967, 124,2148, # 4192 +1376,1798,1178,1107,1898,1405, 860,4359,1243,1272,2375,2983,1558,2456,1638, 113, # 4208 +3621, 578,1923,2609, 880, 386,4130, 784,2186,2266,1422,2956,2172,1722, 497, 263, # 4224 +2514,1267,2412,2610, 177,2703,3542, 774,1927,1344, 616,1432,1595,1018, 172,4360, # 4240 +2325, 911,4361, 438,1468,3622, 794,3968,2024,2173,1681,1829,2957, 945, 895,3090, # 4256 + 575,2212,2476, 475,2401,2681, 785,2744,1745,2293,2555,1975,3133,2865, 394,4668, # 4272 +3839, 635,4131, 639, 202,1507,2195,2766,1345,1435,2572,3726,1908,1184,1181,2457, # 4288 +3727,3134,4362, 843,2611, 437, 916,4669, 234, 769,1884,3046,3047,3623, 833,6187, # 4304 +1639,2250,2402,1355,1185,2010,2047, 999, 525,1732,1290,1488,2612, 948,1578,3728, # 4320 +2413,2477,1216,2725,2159, 334,3840,1328,3624,2921,1525,4132, 564,1056, 891,4363, # 4336 +1444,1698,2385,2251,3729,1365,2281,2235,1717,6188, 864,3841,2515, 444, 527,2767, # 4352 +2922,3625, 544, 461,6189, 566, 209,2437,3398,2098,1065,2068,3331,3626,3257,2137, # 4368 #last 512 +) + + diff --git a/env/lib/python2.7/site-packages/chardet/jisfreq.pyc b/env/lib/python2.7/site-packages/chardet/jisfreq.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0ee0fb0d4cb37d603159b7fd4cc64b7320425ef3 GIT binary patch literal 44481 zcmeI*<-1kavgdK!-QC^YU4y&3vvK#}5;QI(!964)I3y%!0z`0kcXy}fXWxFhU-duG z&${Qi-&12$)vs!dDNFWZp2&~m#>!ZBS&L2){`dbSNEjhPg}@$|EI{W75n2X}7@=jv z2%QrrY#Av+=R^q`-uL(#G6|xB)goy66Ee#tQJBcSV!{YpCo?93VoX04u|55ID~pOhpJ=3;TsM zj~w8`prf#Rya&wnj1*vukZx*hg1PGURBf@~8@yK_Ueo}IAdQ|=!%K0mAS=;qP(W}& z$OCy{wcs_7KuAKkqM^jFUeDLf9kd5!EGwcFeW8PXa8SF4;4mD4qi_tm#S3tp6-n9& zR zxDOBDAv}V|@C2U1Gk6X!Afnb@vR=V!cmr?Y9lVDKNdiQKNDvvKKvakZ(IE!Jgjf(8 z;y_%82k{{RB!one7?MCzNCwFv1*C*jkQ&lJT1W@!Ap=BlC^E7#L1xGTSs@!_ha8X- zazSp$19>4IHQ{N=PdS zrJyvFfwE8zh7kBs#v#@h(1^-w=n{UVu(}GF<20M2Zs(W*atl5Q+st(kGE~T6*4O5? z^VT464@PsGhTomLk(?IgwNU{oLM5mSRUo3c$l~(4AmUJosH-sN{ZWq1E{HMKTUAC| zarxj96y`_?VdAO@$Ktp}!7Nh2MvW28Sci zb1Mj(!Oe|8epVFy6=DVV)Zlc4%n-+woSO9*a=~|y0=|W`unB@aj1ble0^#7k0Yza3 zm5i*6tl*dgCm~dTUe1!Ftn5%xNU-%maR?S3oI?<-AlPC!0Mj7&|KL)CG7yi{OxD+s z*HK;1N=&r4U29}G5q3Jhqgl0h%Q_E&y$KEv%!kt8MK5d)6b}c{5;A%lW`pFA5`x1K zRD*g@%TXxH8ZD!<+~Al5*DBQJtpjzT9@K{h&=49yV`u_Rp@rOXP!lpiKPP%W)^ykf z@s<3N)fn2@oC&PAtbDBIFdJ5ytIg_RBf7965h%&34;i4Bx#6rU_HP9%wvDaAx(%Pg z#^At(L5!>b0%pq$Ye%zoXw1U>q2HHY9Xb;g{&K+1Cp%Zk5F3=UaL3eN|hxLG-&#5}g$T;`5F-HvuNXB$y0S;3Jp{(_lKx zfSE80K88==Q}_%%hcDnu_zJ#;Z(ufj3*W)_FbC$sJeUs)U?D7m#jpgH!ZKJ6E8quM z2|vP5@H4D}Utl$?fwiy>*24za2%BIt{0hIp7Wf_hfUU3%w!;qC3A^A=_zQN!9@qK z3vR<5xC{5-K0JVj@CY8m6L<>G;5od2m+%T+!y9-D@8CT|2wsrFB0?mH3{fB|^mL;b z@4j)_4WL~34S;nO;<)zbJMZJNdN}z{yKt7cJ$%J#8NAShwSv~r2BJ}p?W%~*io=S* ziV3m8z2Ods3-KU6B!GmF2oggQND9dyIi!G;kP1>m8b}N2AU$M&jF1U3Ll(#i*&sXQ zfSiyEazh@-3;7^F6o7(I2ns_HCU^t9`kuVBAgwZet#={lgY=Ph557-LZU_0!9ov;i3 zguh@n?18=TH~a(t!hf(2_QL@<2#4S>9D$>7435JII0>iVG@OC6a1PGH1-J;8;4)l+ zt8fjj!wt9zx8OG1fxB=I?!yCk2#??~Jb|b144%UacnPoIHN1hh@DAQXgy2neSVV{f zks%61g=i2RVn9rY1+gIx#D#be9}+-9NCb%?2_%JNkQ`D#N=OB%Aq}L3bdVl0Kt{*} znIQ{gg=~-=azIYV1-T&)seXFCxPR!C)8yLtz*UhY>ImM!|!4$Osl zFdr7cLRbWgVF@gSWw0Dpzz?tzeuSUkXIKTlz-m|nYhfL%hYhe1Ho<226@G&)@H_kg zTVWe)haIpJcEO+U7wm>TuowP@f8byE5B9-+H~6ZwSLg=a!PiG&J)kG_g5J;v`a(bG4+CHz41&Qh1ct&e7!D&~ zB#eR&VKj_^u`mwC!vvTJlVCDTfsbG+OoQn#17^Z3_!vHcPvJB89KL`r;VbwWzJb~B zEqn*x!yK3k^I$$KfQ7IK7Q+%)3d>+QtbiY2CHx3K!OyS?eu34n2G+tlSPvUuBW!}r z@GJZVTi|#21Gd68*bX~jC+vbh;V;+?dtfj84gbKu@E`1h{cr#d!XY>eN8l(NgX3@l zPQocT4QJpioP+al0WQKNc;ho?9ADtX^{Miz@6rzYn(CwvvI|-9IKJU1qF~RAs2m5Gs?%|1wQqbWkr(Fo1-Vax#1s?d0%NGCaI>X4d=KgEH;}Vg+l3r5j4kakY*J&fw8|Xy z)Gf@BQpSHa=NhRuFh|G$Dr-2_YPXM!T}tK_5{jt* z=Y*uz{S)5f(xS6Yu;!7pB ze3kV!(dkKrez&ZFYMg|RG;~yr8bW>$GM&JERvLOU48J6GL&?Gf&L|n**_lOLGr0xz zQj}hOz1${0g+L;?52#$Sb*ltFG;FT!CIXAh{U)~;`I`!Dr}6=TR|Gzy7o9ax?h$E8 zS?k2bHJs@9HZymE-e^`oB@={qYHqH%goX)O70B0C_qy&+sqqcRGe_%RqJvox<;K=- zO;!zY&EU3>O)}bP?Uu&pbCjX{k>Cd$iIi-k(<=0KNIN5KoVhg6T^rYAj5l0v_+|M1 zi96>oc7?nIeuobY2dVazv>mLZ9D6u+5tvCJ4_q)8$qseoSPDA?Hz)r&f#kZX#!9T+ zk=EPZiF8NsD=N8p3+u1HjeR4dH}5kj;^1Af-rwLgtQY*fLX}v(RBNu&KLkghmsM9Q zg-qhj%3H|s7);V8kV7Y(}?y~w=u^J zJGsYP90D6G@D7!`aN2MzbRlrhToT8lyx_R-SQ`^mTdbF)ym?tEWh~{$1y#i@wEP3C z+n`j%BmMkm&f;j0vU z(cBCf8_B0qEvF6=IDPVP95)=yk%Ck_Rx*x~RI<@a$&rk}K8}f$m%tFgmr1ptasmol z?>o7%+@&syn+vI^RAH^M{4K1XiGFF=8J3a%)S^d`%3;yN4P(&zmzAEi2+CMn33L0j z;a4?b@j2qjjjecR-4}J>D=G9b^pO#V_r61$R*n1S{)16)hh9dGgG6%@tw6L7sosW> zta6RG0vhk>kfVjb-iP7~!1EZn%@RQt>}InyK+X@m6w&sIk}FPRm~_o?XLA(P||wHQBy3abj6 zbXAj8gZD1)9oF|8&k5|8n@rDLS=-GmvM;l>7FoMD3=49cbjXehj>2)w++xG*lm|F% z<7#rfcCQ#-g>6?YWjImB zAFPhfmuhOflsiP+LuW*1)^;7t=C}wM%{7#^-6{_nHjq0@$p}I|Gglw(3yGwIgcdVf zNFvr}tP9qgLqli8t$=nmEVYZXJ?j%HpK^4yYoALirlEaAD;mb5a#lzO8K+o}bU#=~ zW1Ysg_k|4a@vb+QT5c5B7;edJ%Td|B9A{lqa=Q*%3At`=hvGw6SuOPq??oM4CEtg9 zM#0s1e-zi!ur1L`;v%t*Nb4*k0h~8?&Atq?8*9xi6Ve85YONBL2==*?qqS2Tw>VY_ z`I0BNadx{S%23op{I<5^ooSbI|`o*?yvjNhPe&bsrE!eTcmZ@X$5mrVT`y6 z>Q*$YLaG$yW%`>bql=Q)b#UD#_U9NXea2E5nGr+^TTZo4NM&c`wXEBA=!UrX4t!L@JwkF?M>27@wed_t zPh<=tUyY-<9oi8-r=iT|_VIqB+9Y#_AUQ`1qT@Ig8Fn@7DY&DO1r5JYXcy60(uz^; zE4Y)8D02J5J*_?Gokw5~+_Z$jtaY}t6kH9mmSM3O6J#9DrsvBPqLQFEvxR| zyltf&&`VJrEKu^axW$I8g`DG!EaSCmcg>YlGP7#AW&C2P11&3$+#jGgZ&Yz_q_t4! zA(bD@-I7s9$UaNWZRi(zVGYDhFtpal>JS6{XbGKp~lVM@suk zLrrww)yqT~))^VA$PY0*Z@5HSPII?)kd8H*BOcM8;gQCBv&xW9Xp7T3EtV*BP4K_a zO`*5eJB_24CF~)eL2wmw9W8pWW4=?hA9P!SXS5GZER!9N=aE^))9>K3K9SMVI2 z-hndadc&UZ!%cLV;HA%J5# zE=L{1K{7THy=Yif2jBDd<#+<;Io{d(qY72kcti511jpuGNVF=ehsE5p2i@d06Y`vQ zvW!}CH>p-xjZbBi)%am?Z49%B%jl@SH8)*wI&}}q-7Kv=p~7_Bc6~BhCQt#kzr}aV<>Bi8o$CyY1asRs@?ZC zXR?gpx{5(+jb1JbKCfhbjwsTW8ZNi2q2d+^8K>lRdV^GZpxrgRH>pH3yuo`hJAzyefD;ud43dNLLMn-Yo2fPExS9J9(H=NEdSjf z-Tk~*%?&jiBCeNecgVNl_?Sux8TnX$>hv7P9gEq-kza0CjrZ3}7TtH##xquRA%7_J z7WxR;AfucG786%i-KB;<87`A{6c*X5y6Qe8Kg`_sa=Qr5WiE*}x=Twb?t#Xyh|A*A z_*vWqCBNY4E2N|D^9V_1Psge8PF!T24idMU_cwE6)Hov~lKs1D`ArGD)5bkR|CAvt zGVf-&uMBS!7;0I`)kp#T6#szeS$a+F#!5r~!XT`Sw3e)yN|s;^5HeKmcyZat|6}g4 z^=_4sU!hBS`H6SCxVyHboNDu+oHnY4?;ojqyxGWifxl!76_-fJJ;MnWSd`vb!@pT` zEj6;Z*3#Ard83!vI%s6hKavQGs;f`LE$2PNQOMkO!}~f&BsZxxa*NB(drXb24%u|p zO&F%}dO|i+Nv?wiuz>ey_#7)f>pklT<#zCaYWrD#5J&=BYjnkLZ-Zk(G6;D}IhTfJYVDb7 zvCOp>HbA{y2Wa!gL4+MPsn3)jir4OzS)KYAT7P7q`tFZ zk6>Z=MhH&Kde4dnTg43!GRN>w)z&K1UZG)zf52Sc6dW%EuT`TfYlD&ziT2?w3%Sfy z;1nyW(jEBF!8o6DnKs{ClpK ztwKIFH{1o03VIrjU=8EFX)$#P#3ZoG++b3AErS2QO{s9c?7Db?H@WPks{bB+B0yek&xk z;XEPd)cuxT6md(1yfS=gm_f)w!4Eh(30?~cs7w^{o^@Kt867m1J6&)Gh{Rh+#&A;k zdH>?bB)5qroRansI+|N9?9T20Z1ixq*EXUYq}14NP99HzX~o->KzPK zaxW_lfkdpwIyerwwK2{fl%Vo=cwODs)!GBrm#p3D<`H~CS|69+3~6!IjUo3H^yL_6 zt{rcAX;+o}O;=xb^R>rqln;@+h zmB`|rN=wcf!qGi#!6)_ieWX@0u5z{13De)TJ0k)kv4{r z8mw*>)uM{q#M-P{9o8aJ&xKqv>}k;vDED(@_GqXr<^G0o9fkH(M%j%&$dBb6BR7`d zQ9Ah8++M@P;b$@LC+1?2UoP!uDwjDv<*06$MDPpVy!w0O>}+W<1#NZd_z5-Isyr_rRPv=I?4D=|kc)^7Mq zLl>-VA-w?vzJ>l&(we)bzYBub#6Gw(}uSIM@jeWcJdyHQ9l zt5}`jl3{usoK}2|jMy;1ZF8oOajLyDmyt@k@ZuaP4GTI2Mr!S1_{GUFA^a$)`#I4K ztbz2BYi*s7r{=y=cdN9&4TlMi$UB79fl5DhUs~1`!!gd?ovPKgFZBdJ(@+Y^O$-;) z%g2gO{s^g@a`V}e@q(*b^f<#zmXL=0aKS05MB{j^#&~i6aV({h!*Hw)qH1@mkpB9s zs$?;9=^T`QppbnTtZp#^+l0I}{L%0)!THQ>w2m+()9LvH(Wb1q;vy+IQ1HJ*XAxMa z=juYL%k3d!klmeSt{J4Vj`2i45&W~X_VC>DC%_c)gQZ>4Mrs-B)p(@jNF^IkPE79w zsd^lhm0WAluk6}5yK#wfP2QK{qK7XAvQRk;FO)nLfwzx|8I?NTb)aK%faJ*FVnz=aIO-K2)Lg_imsWw({5=ajP zsI*tDy$;eFJ|zD}+DREr)ZMGA3{(~g8NiW{z&eF;8XlKcR2#PqKhVZM<}%3mo|T@| zXi@{Dy;Wld?>p9gX*0xquc0qA^u3cXjkz|`_6b=&*{yAZ#0yjN=9odru$olM`4+e;^u}*+wP=^se{72op?*|4&zO)za>JR zsa8qdGeVAQqmISA*XhSrRLyW3m2QI5J5Y=DH&GioWGvu~Ynw_5ju1R5B!4tvl`@D0Q2@PitYg#4+sw!D>e-&>7pR7O#bs#+8B=g5C6w-7Yc z=^1kuWMmd{kIHx|-wC;Ht{Q=}YQ(dcCaldIzrt%B6qL3@$xh~a%2;8pt|l9?R))7L z_dYzbz}=ShLZK|u>IwNyFUd%?(BE|ZZ5Q{EVFaz6lTqDVd<~`GcmvId#w1XgRbJio zLSm5rO5M@)F3bId)r3?v8N2no+}u1?Bqz;H-t$!E2$`UGW!R$Auf_et5m|5-9Yo|k zsoDZHeh`w-FuxTwpw~{u5dD?b+6LGN^$Fxu?Xpg*%k6FWrD~s2nQ5*%sXU}=m>Z$z zb}}Z2+slfm5FeqpKoSo!o4naVExtu)u$Tq>fg4EIx+Xqz%q?k;x}bc8qNKC-~^f-6YN!D>ry zgt|L<6LD08$J)q1G&x5m*K`8icQgDlT%Pv`YY%)TZI*4?skLIfKSFaDFXX*yc~}P( zzhfBFt|et%m6k=PnN_PHttamuWLHSxptnLTZwI zd1(IziTi}!I@TfrEi5&Uv;*c6n~QC3DwQg7x9V??UPe1)hs{lf&1(EEEvrJmic3sB z18W7xMq4sXld%Qwu&g6;Ggwh^)$$9DMgC{OhxKxe^_97*^qPu$Oz)`NsxX*i8e~)a zZ_3Zrh(}= zl@f4|H@o7W)B9cAC#2%TZURwU#Al^_P5Dc6)%84GwT6a;1V1vDTHR7a$3Y%xcZntu z($YccWp2794p5Ozk{R-a=Z&amgaKlFRQt|;deueXf)Nn zrQ8U57=FmnTD#G$<21($s7`8`CX?yl8^f-w{zS7XUP&(#s1&rUepJR=M<(Y>0>f#F zpMqHm&7e2R@K;g~1xJTNJ{&gGGbUq zQYs&ti)pw)jV*$+X*?CjSUYqhd=E7ADV3~-Gc~zd$QVfElq#>^F_LIzdo_mjx9%@%@^b?F=v6fQ4&oTjk~WCw ze0wzqW`{48qntvqthbhi3d>lp0p6sr=-1y>w@EIe3#%@LJmL?b=UFc;`oGeZz?~*HY!Vm^d(o~jS}w%0tkE($%MD&2gKHIP^VWg7P!H-u184}1pfNOo zrqDueIj9Mlpq~@HA8R`7g7`{)$!ZMkyp~U3y=CQNHHX=-(p+s;4;#^i6^TGeR(;3- zz03_~U2z?)V8!+}qYCRbd;Y}GC)Si1eqZVWQA;y9dbZU$OX9}59Eb>kRJ*_K_~=;p$HU(Vo)4PKuIVCrJ)Rz zg>q0HDnLc31eKu*RE26#9X@~>P!noFZKwlvp&rzS2G9^1L1SnFO`#byhZfKhT0v`Q z18t!lw1*DR5jsI<=mK4#8+3;-=m9;U7xacc&=>kae;5D*VGs<4Autq%!EhJ>BViPL z2%}*PjD>M99wxv3kd$pNP!*~{b@%{k zKuxFxwV@8wg?dmQ8bCv61dX8yG=*l+99lq2Xa%jI4YY-J&>lKKN9Y8dp$l|{ZqOZk z!U{cAHQ0l>Hew#khXt?@7Qtdz0!v{TEQb~F1FVG5Q&ofepN$ATRW*437ko7lda7!$ z2Q_U(EvOB3pf1#d`p^IxLL+DlO`s_>gXYizT0$#m4Q-$;w1f800Xjk_=nP$;D|CbI z;OnE%Q&odKm}?{ELFlQf!TUcO5qhd>@Mh5$jiINi2461wGi_$y^ro~WV|`IO+E>bv zSoM7i8+xj0@L|Q@=R;3b4L%Y0u6~DeSrg& zmxi5TnG@+#ckj?sRfDe_ois7+M(C-k!FOqHJo}v>$=s#7vbLLBI@WBC&{I`|zmVIe&{I`|YsTyEVXwq(oG+oL zss`WYxtD~Vsv7*6$iLoM?dB1Bs%r3OA~(>`Q&odsg?SMPJykV$U3KpaJykWhDx498 zynbx=jx6+4)!--fKH-L*sv5l8^g(v3duQmWs==?6y_$xesv7*p&@H30KQD)#sv7)u z)oz5Isv7)|)ZHTVRMp^fnKR;BFR2rJI14>hHTVUcm()e}<+*nmp{J?_zgqJ(M(C-k z!7t987Sp}BhMuY#{1MKRG(t~R4XzLO&d^g;gAZq}k5xXehMuY#{1Zd(GD1&P4Lw!W z`>W7XRfB&rYa>EWRSo_bvRBT~Q&mGxRrSUp^iz@YgDdSyIqwUjT$$sQK?De8ujY7 zYgjS(FaL|~{}WQNQthhk8r5i7bx`on;lrmYe^9YuyT num_bytes: + self._need_to_skip_char_num = i - num_bytes + self._last_char_order = -1 + else: + if (order != -1) and (self._last_char_order != -1): + self._total_rel += 1 + if self._total_rel > self.MAX_REL_THRESHOLD: + self._done = True + break + self._rel_sample[jp2CharContext[self._last_char_order][order]] += 1 + self._last_char_order = order + + def got_enough_data(self): + return self._total_rel > self.ENOUGH_REL_THRESHOLD + + def get_confidence(self): + # This is just one way to calculate confidence. It works well for me. + if self._total_rel > self.MINIMUM_DATA_THRESHOLD: + return (self._total_rel - self._rel_sample[0]) / self._total_rel + else: + return self.DONT_KNOW + + def get_order(self, byte_str): + return -1, 1 + +class SJISContextAnalysis(JapaneseContextAnalysis): + def __init__(self): + super(SJISContextAnalysis, self).__init__() + self._charset_name = "SHIFT_JIS" + + @property + def charset_name(self): + return self._charset_name + + def get_order(self, byte_str): + if not byte_str: + return -1, 1 + # find out current char's byte length + first_char = byte_str[0] + if (0x81 <= first_char <= 0x9F) or (0xE0 <= first_char <= 0xFC): + char_len = 2 + if (first_char == 0x87) or (0xFA <= first_char <= 0xFC): + self._charset_name = "CP932" + else: + char_len = 1 + + # return its order if it is hiragana + if len(byte_str) > 1: + second_char = byte_str[1] + if (first_char == 202) and (0x9F <= second_char <= 0xF1): + return second_char - 0x9F, char_len + + return -1, char_len + +class EUCJPContextAnalysis(JapaneseContextAnalysis): + def get_order(self, byte_str): + if not byte_str: + return -1, 1 + # find out current char's byte length + first_char = byte_str[0] + if (first_char == 0x8E) or (0xA1 <= first_char <= 0xFE): + char_len = 2 + elif first_char == 0x8F: + char_len = 3 + else: + char_len = 1 + + # return its order if it is hiragana + if len(byte_str) > 1: + second_char = byte_str[1] + if (first_char == 0xA4) and (0xA1 <= second_char <= 0xF3): + return second_char - 0xA1, char_len + + return -1, char_len + + diff --git a/env/lib/python2.7/site-packages/chardet/jpcntx.pyc b/env/lib/python2.7/site-packages/chardet/jpcntx.pyc new file mode 100644 index 0000000000000000000000000000000000000000..96e15a96f61d49fcfa9296a9c075fb1e79462635 GIT binary patch literal 25120 zcmd^{&5xwlRmR_{?ists$=?2zEqa0fIFP76`V81q;Ligt9{s;dkz@`sv$m_gIcUqDUdv zC(nJ(bDneVec!6;peP&Px%b?|zxHP@T^rW__ow{(Z}87@m<_{j)}+HBKO`{y5PJ2V zJwEja)8Un!VV5Isv`LJc$1$W!8Cez#5hmMUc?5J<1_M5GxRo?Ql4Ulc0({&$JbVNK zcvCtkHU+~r4j5*cBF1*3ogF<(Qv6}W58MCyoq2M2cCUq7!oiq}Vhd(*w_qa&5z9y5 z7ESa?p-=e;s}G4eOdcN&OhuFtWB^D=J2n79ehxrj(^?B#WT%ETO9L9TN zo5g*CbFm|A);rJ5qY(?JwOqhMBrAi!834WjGM4u#^rT$i(foZoH45<5_6Pag=}7k< zrnP?V+!9lH!^SYVKt4w-j$lOQ1$wJS#66!!RfC791~3UF$UGO=+4M2x%wU$aRuQREA9I~0iLAz~pF3D40zAby>u)1*Qhip8 zz`;CY^bTN3?92#yWwt26E-xX6l1w|c;FFW5i%JF90-E{JJMUERSP^Zct+fgqL;hq` zsRn(zTWdBXD+H&T>7UL4Y=voXHN=GosE4{urgC%K-z&} z*qSxcLRplUw7zR)u#FrHoTU$2TZacwYu3I*S9;-w#uk=mJV3tZ5$HyQPqfzZrmw6^ zl89}vsh;uLnFozeN~XuQgOSYeo&`?@IP@u-W*9Uu{p2=EUj;ZEx}Eae?S+74ccLXm zQyEDsqJzcUt+VyGSCVyLO^~IWrjS`WSSzWsGKYy6pmU;v$f)wUH?Y19s&vZ?DYrY( z1rPA@jW97c>&^E{%zeI;WLcQ4Go(xA5s)QCL=Ui*2xClEL))2(LrWcd?p7hw(;3*h zG*^>Gq%ceg7(q0&kcky3NUIvtYaT?czo@pLa=Q6mn5I z6Y+FBK+~^J3PvVF)Ssx#@;-~d8U)}x3rH}GhB{DgEx?q9)P{*+x>%(^jGN1Ly`c3y z_T2G_0KoDr{Q!_`!%%_`F-jeJMq34XIyn)N1(_;wNVdo%lQL@yCrJx5sfA?Og&|2r zh9;kPQ``>%u@McxMIk`L-ZQ*1O(Fw0jI~T6Ad1~;5>1xq4De zqAegKGL>fz|FcZo;BApeib58QGNW$2r&#lp3m~ZqwtG+Z{yHSuF53XkOBE~5y^>xC zT;aVU99p*Cd1b^rGP3FsL&m|IBozigAxxI1khhkUEg-=oLrHjm%kEZrG#N~i0>meU zu}TV)bhH*jKr1=r^KJ_Sto~e7Q6i&HFew&WmW65I5g;8*&{~&R(n9Cd!E(fG;q^2o zWi4Al?pYs6Z~*0q^>3PEXGey>UbZ0O$H zFaj_F%X@P$OA`PB^)M_L=ZCjeL91Gy-KyS!UW#=<0Mkk;nvwzcniQ&0tVVwX%#)J- zM3RVeUc?#_wE}oE4g(h0j@au-;mHb#{;+&~c2j5^viH%MXcv@_Z{n3R~+*>+CVEAu^{l(zBVm>McDo3nclF-%o}v-NsY zlxXPu;=YA9V7og-^f+5(3!{24T_Ok>kpDle2Q>N;>Vq?5XhLM!kt{MXZs1Xuh|yT3 zkFCv8B7j8Z1M<}2V~c==Qa4L9k5~aE%CKTV;v8F2X7k)Bmr0C+&b`1EL^R6!rka}- z$4Z$kFocH@gzQVi#?*#PtpMI3`*vauo>a2=d){l|e&V1Q9@2Y*0T8tkv!!)-Qf3oL z^;yfwLMk39*?N{9I2E-_t{#m5(iWr1C5ADtHAKeHwg*(PWks(Kj44XYB2Yu5og`6Z&TdsAeRa@Q2e1NCtdNds z7VOMy0csGl1+y#^hXjPTkk|vq))^&hWRBQpWMQ6{+nk!M9L{-m& z;fWDM-^)^^Gm!=9HYI(wF9+LYMD~TA1qNGA6s5hQ3?Ih-?g87;FuhVkA{wzLx)V+o zJ@=m~JWcuf5p#QK2NOL&eF_EeYKSR(2XJRuJ$J1rcPcwN7#NacvcN`|V8!y_e&LWp zT37-zGK4WJ9|uSrSTbsiGLE4w*qiC2Q)Pyv94z1Sc#=X!>=(QwQEXv+EHw6o$kdQ> zr9>GdniNJR6CQCe$F$bS)-FUrln7uH5J!cinsWVl=ibCpSYvvr}@ z5P%ybTNyB<5hkr8=tqT2Er8{~VzLfw7a~i>`4Py(Ttk}@>2-1dN+JNXUdPUki9C@; znW66@sVul350b3Ch%9Z1lDfGSt7jgzeK|Y_iB(boWWfk>ft2)FQmk}ApPTV-8@6Pr z(m`xTaJ!-s*y3cQ9E~lA0oJlbz&vO)VXG!pWHnLXRiF`&0$2q=lhdh3iIrlaSyGU$ z*aCEGCC5JRq%+-L%fXQ8FG;izy@hVUqvbpqn=F{}$Sj1> z3SPz%%3YQmYSw3GOO}#EnL}Bn@JX-8^n_RGmWbG;r+Ozr3FzmHiT-Tuu1~O5_R`S8 zw2r@7mGOi`saqr0XSWIl0T=smiqBqqG`d&v)vlJLZ3TS~|6QfOu2>KGTl00$2$cimT9t|VoRge-;jvJV0l~ynU z1z<|R@PMvl{m!RWf#pPPd(V_hMj$Yv(a_UDY6$5VeXSZx6o4Hgz-=OcMIiz;wzHg6 zrm|6ZQ^dxv&(8Kv3t3-ss!YwvlzigJvrr;=vi7|({j}b|oqY12-}7jgB%@N*U!bXz z5j`t~mat{{Ov%Ov63p_cSxY0u%G{Cy7<&c{TT?ny+lv*z(82{q)4Rcp&aNQl=?KG0 z3qUX?q%^nC7)|SPG^)HM#?)%%xsVC^h`^B~DMw~BWi$)!&yEbVXu+i}#l-}cxR zMtE0Gjxc@Gn$(@FMpfU}cI3&H8yJx>%yaMW%?ZN*SdhjXfvx7f0Ia!y7`+aZ@HpU& z3W)H2^TXpHLy0ZIu!UqBHTea55zUN2gihIMp{8Vu-0Mm5Duzfd$ zC#&8A!{q4|5TCsBrX1D#6jScKMF68G0!X)FwlYM^-FjY_6vFWIeE}TC5(O}pTc{wB zRGv6hDMUbdO28;t&Y&SUg1qxOn^I=PA@iW=uSMHlEFPJ#jYeR1ZON)9!Z?NkvDxrF z$ZRPLP{x*yS$!?GqqAqoUIvNM85D?ZB<}U%Ua!(g%!1t_GYfwwtKLxj?xO>vPZw)j z_xij8e4xC9q>OpQ032K=F${|mBY@SM*H)%DmjIt0TRt*p1{kM}6^vsmc1~qs)Fk$U zNy2p5Q~sV$)*0AZ;usl5lI+Qq;iKWa@qu*7sKHj!r_a`tvK=v0$#9uqlxzVuC9>7c zto{+`+`K3^E-yoVGsb+3&_$%9~cFe z#4P{;VxqPAp4YIiJ#{2Vm+g!&@wZBIvOXHfDCwS;-@-gTK|h0Y8Z$OlEJ&1)EX{37 zR7uvU;!i5It@Zl3BhZZ~9yuU}A-XWpnF!9<>rmk%p~Z04@pv4lnjBlJZW1Gh505 z(Kt-sR6*Y*8p*i%J&z~7OrBy9>QwTi^SftG8utJH zI(!(9=gu8a+z*X+KWPg=4@3)2A`!;0kQW~qad|_Xkr3T25@W+k}*uN zC7ZKbE6L00)~G&R+!7V5G282d)wA_7qqm$ayqexb*_~qFT1~o)O5%C4B=5W$Pi@RR z-W#=ONWqJVF4{T2CXg~j7#1ZgYE8kjrGykrs&sQp)DxwQCe$JWYa&JfupQBb29l=u zxZsrmT6X;#M;69YixVxUiUlbMhGBUw0ny1Fi7jG!0a&AvDAb>nm}p_D1Vone_bF|O zIa)9>vv`tavDE~S|30mHV_N72>4Il@E&yaA=D`R&sY+!Y87%2BEdj$L5J1`&C5tW5 za-u0nmQ8~((O(8EAnFiXd|LL7&z%y*nG**MiKHAAtQEj)-`ZM_0I!&BJbQr{O@*gGt&* zPtD1)#3_eCY045A1ic|7TWT}2vS{G-A!-h2z1Hu%f*-NCK0CL>!Hv0j8169d3|TLe zOG87-N08?w$ZLZDh7uxHVofY0B33|TEAJzK0l@eiZD-183Ld2z7*e*=7R;iHDI=Oz z_5D3}Tl53KxFmb*7@5$HM31T7v8_Ux+04Fkq!t0Sk@e;9UINh>A`|4lM?K=R)w%a4 zHQF9pjVFQkXmNA4eiE#*1;^QQrSMdMc;v4vCUHKsJb%;Xijaxz4rYOgScw73lJ(U! zB32o_Rg46n5MINSvmG&{JeswXur(@<-Yu<9P9CL&2w;eU{7vgrrbZFl97;FmF@|B= zGw^Ox>sc5BUQeU4kQAa}>1@o_8&G4R0&vcbSgee#RUVmWw!QOwtyOHchxxx+`T@>m908MG3VB2xN=X;U(ESowzGW?4ff7f_#Xeaw_E5x7`9D) zt>&nI>M$4iXZfoHG;a;Vyp2?Vsbty{D2CZ&&Xn@{*}BdN)XsL9UE02jxY{gubAPcq z2biyJuCCsgA1rRHYN7)3<<-}3-B_$XQTzSHVi(PP`P$yC`L(ZHJ(%y`etq?0mAY|t zxstkhu)8=|)g{k&%ec@1x4dd?Tf^nz#w**qgJwy!Q$^Y+%ZN97~^DExDe{q}tJ__OoNPt6|RdFuIRzt~>h%Llg? z?dh&Qg68_I&t2ptU4Mma*PXZL+FsC?-&`%`%hf^a!bfFZ#Bx=0?6uE@pOtzK+NbHp zV*mZU4{g9#_>_JF%jH9a`bcbUZB6c*JTy5sIX}5~a(?gwvB({ouP3`bMf zd*0sfUjmG#KKM+>v@h)o^@4J+kMH;r?X=gVEd5+>x6f<)NZ0q>b5CD-`Z+$tyNms6i@$_f)>}19@1Iql=;}z<+dG_NKs>RWi4ZW9N3;s8u z`IhFNWi>uK$-kyscW<5FdT?uF>#o%Uq;{Tpdgo4m4bZiTl(0s`9x;_NUKztSOCVp)?T%Y>uoS&fj!Ksdy+IPp!Q%^r} zdCqX{DYvhVRa;ge1F5{pm2BET64E+LC*+{&G9a9sFVa`BuMp7;Fu%O^4<0)}L=t z-#(`P#;|)&-Nt+vzWR+}pT8dX?c8Y3dQvY){T}lB_U| zUqXACF23+9zxcVme<<#M2<^=~vhr)=p%T{%T)$Fv*+*X_?SuZx-og4$z*+q|w7(#i z3%<#A+iQ9BF@8^<;ClLh&p*rhUKscUZ%)rmewlyYp4>M*yKz51ZrhWOPW=IX5XtN( zD%1TitE7YSb&m2O}2b;tG1-(Kjy1FTrYFFxIE;4UuYjO03erxoGo@-^_I`)QsvtIV}q2e9h(E5t%exZCr{|IvL zk1PCNh4ymRUoZY=wLdBJ9m4pPtXrD>R3(nTinE`tL_LGq&s3Iw4Db1^`xhLJy>;9C z>2#hywY#^jJ{Gg1x9)>_y?z$kf3Eg*D`zK{JZpW>`O|n9ZoYhdac$Lp-25RZ{n3fv k^Ur1bz%JePk#`0nI~|6ku5Ha0$S@e`l^e~!RR$^ZZW literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/langbulgarianmodel.py b/env/lib/python2.7/site-packages/chardet/langbulgarianmodel.py new file mode 100644 index 0000000..2aa4fb2 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/langbulgarianmodel.py @@ -0,0 +1,228 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# 255: Control characters that usually does not exist in any text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 + +# Character Mapping Table: +# this table is modified base on win1251BulgarianCharToOrderMap, so +# only number <64 is sure valid + +Latin5_BulgarianCharToOrderMap = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253, 77, 90, 99,100, 72,109,107,101, 79,185, 81,102, 76, 94, 82, # 40 +110,186,108, 91, 74,119, 84, 96,111,187,115,253,253,253,253,253, # 50 +253, 65, 69, 70, 66, 63, 68,112,103, 92,194,104, 95, 86, 87, 71, # 60 +116,195, 85, 93, 97,113,196,197,198,199,200,253,253,253,253,253, # 70 +194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209, # 80 +210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225, # 90 + 81,226,227,228,229,230,105,231,232,233,234,235,236, 45,237,238, # a0 + 31, 32, 35, 43, 37, 44, 55, 47, 40, 59, 33, 46, 38, 36, 41, 30, # b0 + 39, 28, 34, 51, 48, 49, 53, 50, 54, 57, 61,239, 67,240, 60, 56, # c0 + 1, 18, 9, 20, 11, 3, 23, 15, 2, 26, 12, 10, 14, 6, 4, 13, # d0 + 7, 8, 5, 19, 29, 25, 22, 21, 27, 24, 17, 75, 52,241, 42, 16, # e0 + 62,242,243,244, 58,245, 98,246,247,248,249,250,251, 91,252,253, # f0 +) + +win1251BulgarianCharToOrderMap = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253, 77, 90, 99,100, 72,109,107,101, 79,185, 81,102, 76, 94, 82, # 40 +110,186,108, 91, 74,119, 84, 96,111,187,115,253,253,253,253,253, # 50 +253, 65, 69, 70, 66, 63, 68,112,103, 92,194,104, 95, 86, 87, 71, # 60 +116,195, 85, 93, 97,113,196,197,198,199,200,253,253,253,253,253, # 70 +206,207,208,209,210,211,212,213,120,214,215,216,217,218,219,220, # 80 +221, 78, 64, 83,121, 98,117,105,222,223,224,225,226,227,228,229, # 90 + 88,230,231,232,233,122, 89,106,234,235,236,237,238, 45,239,240, # a0 + 73, 80,118,114,241,242,243,244,245, 62, 58,246,247,248,249,250, # b0 + 31, 32, 35, 43, 37, 44, 55, 47, 40, 59, 33, 46, 38, 36, 41, 30, # c0 + 39, 28, 34, 51, 48, 49, 53, 50, 54, 57, 61,251, 67,252, 60, 56, # d0 + 1, 18, 9, 20, 11, 3, 23, 15, 2, 26, 12, 10, 14, 6, 4, 13, # e0 + 7, 8, 5, 19, 29, 25, 22, 21, 27, 24, 17, 75, 52,253, 42, 16, # f0 +) + +# Model Table: +# total sequences: 100% +# first 512 sequences: 96.9392% +# first 1024 sequences:3.0618% +# rest sequences: 0.2992% +# negative sequences: 0.0020% +BulgarianLangModel = ( +0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,2,3,3,3,3,3, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,2,2,3,2,2,1,2,2, +3,1,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,0,3,0,1, +0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,2,3,3,3,3,3,3,3,3,0,3,1,0, +0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,3,3,0,3,0,0, +0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,2,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,3,3,0,3,0,0, +0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,3,2,3,2,2,1,3,3,3,3,2,2,2,1,1,2,0,1,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,3,3,2,3,2,2,3,3,1,1,2,3,3,2,3,3,3,3,2,1,2,0,2,0,3,0,0, +0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,3,3,1,3,3,3,3,3,2,3,2,3,3,3,3,3,2,3,3,1,3,0,3,0,2,0,0, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,3,3,3,1,3,3,2,3,3,3,1,3,3,2,3,2,2,2,0,0,2,0,2,0,2,0,0, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,3,3,3,3,0,3,3,3,2,2,3,3,3,1,2,2,3,2,1,1,2,0,2,0,0,0,0, +1,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,3,3,2,3,3,1,2,3,2,2,2,3,3,3,3,3,2,2,3,1,2,0,2,1,2,0,0, +0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,1,3,3,3,3,3,2,3,3,3,2,3,3,2,3,2,2,2,3,1,2,0,1,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,3,3,3,3,3,3,1,1,1,2,2,1,3,1,3,2,2,3,0,0,1,0,1,0,1,0,0, +0,0,0,1,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,2,2,3,2,2,3,1,2,1,1,1,2,3,1,3,1,2,2,0,1,1,1,1,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,1,3,2,2,3,3,1,2,3,1,1,3,3,3,3,1,2,2,1,1,1,0,2,0,2,0,1, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,2,2,3,3,3,2,2,1,1,2,0,2,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,0,1,2,1,3,3,2,3,3,3,3,3,2,3,2,1,0,3,1,2,1,2,1,2,3,2,1,0,1,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, +1,1,1,2,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,1,3,3,2,3,3,2,2,2,0,1,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,0,0,0,0,0,0, +2,3,3,3,3,0,3,3,3,3,3,2,1,1,2,1,3,3,0,3,1,1,1,1,3,2,0,1,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,1,1,3,1,3,3,2,3,2,2,2,3,0,2,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, +3,3,3,3,3,2,3,3,2,2,3,2,1,1,1,1,1,3,1,3,1,1,0,0,0,1,0,0,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,2,3,2,0,3,2,0,3,0,2,0,0,2,1,3,1,0,0,1,0,0,0,1,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,1, +3,3,3,3,2,1,1,1,1,2,1,1,2,1,1,1,2,2,1,2,1,1,1,0,1,1,0,1,0,1,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,1, +3,3,3,3,2,1,3,1,1,2,1,3,2,1,1,0,1,2,3,2,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, +2,3,3,3,3,2,2,1,0,1,0,0,1,0,0,0,2,1,0,3,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,1, +3,3,3,2,3,2,3,3,1,3,2,1,1,1,2,1,1,2,1,3,0,1,0,0,0,1,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, +3,1,1,2,2,3,3,2,3,2,2,2,3,1,2,2,1,1,2,1,1,2,2,0,1,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, +3,3,3,3,2,1,3,1,0,2,2,1,3,2,1,0,0,2,0,2,0,1,0,0,0,0,0,0,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,3,1,2,0,2,3,1,2,3,2,0,1,3,1,2,1,1,1,0,0,1,0,0,2,2,2,3, +2,2,2,2,1,2,1,1,2,2,1,1,2,0,1,1,1,0,0,1,1,0,0,1,1,0,0,0,1,1,0,1, +3,3,3,3,3,2,1,2,2,1,2,0,2,0,1,0,1,2,1,2,1,1,0,0,0,1,0,1,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, +3,3,2,3,3,1,1,3,1,0,3,2,1,0,0,0,1,2,0,2,0,1,0,0,0,1,0,1,2,1,2,2, +1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,0,1,2,1,1,1,0,0,0,0,0,1,1,0,0, +3,1,0,1,0,2,3,2,2,2,3,2,2,2,2,2,1,0,2,1,2,1,1,1,0,1,2,1,2,2,2,1, +1,1,2,2,2,2,1,2,1,1,0,1,2,1,2,2,2,1,1,1,0,1,1,1,1,2,0,1,0,0,0,0, +2,3,2,3,3,0,0,2,1,0,2,1,0,0,0,0,2,3,0,2,0,0,0,0,0,1,0,0,2,0,1,2, +2,1,2,1,2,2,1,1,1,2,1,1,1,0,1,2,2,1,1,1,1,1,0,1,1,1,0,0,1,2,0,0, +3,3,2,2,3,0,2,3,1,1,2,0,0,0,1,0,0,2,0,2,0,0,0,1,0,1,0,1,2,0,2,2, +1,1,1,1,2,1,0,1,2,2,2,1,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,1,0,0, +2,3,2,3,3,0,0,3,0,1,1,0,1,0,0,0,2,2,1,2,0,0,0,0,0,0,0,0,2,0,1,2, +2,2,1,1,1,1,1,2,2,2,1,0,2,0,1,0,1,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0, +3,3,3,3,2,2,2,2,2,0,2,1,1,1,1,2,1,2,1,1,0,2,0,1,0,1,0,0,2,0,1,2, +1,1,1,1,1,1,1,2,2,1,1,0,2,0,1,0,2,0,0,1,1,1,0,0,2,0,0,0,1,1,0,0, +2,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,2,0,0,1,1,0,0,0,0,0,0,1,2,0,1,2, +2,2,2,1,1,2,1,1,2,2,2,1,2,0,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,0,0, +2,3,3,3,3,0,2,2,0,2,1,0,0,0,1,1,1,2,0,2,0,0,0,3,0,0,0,0,2,0,2,2, +1,1,1,2,1,2,1,1,2,2,2,1,2,0,1,1,1,0,1,1,1,1,0,2,1,0,0,0,1,1,0,0, +2,3,3,3,3,0,2,1,0,0,2,0,0,0,0,0,1,2,0,2,0,0,0,0,0,0,0,0,2,0,1,2, +1,1,1,2,1,1,1,1,2,2,2,0,1,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,0,1,0,0, +3,3,2,2,3,0,1,0,1,0,0,0,0,0,0,0,1,1,0,3,0,0,0,0,0,0,0,0,1,0,2,2, +1,1,1,1,1,2,1,1,2,2,1,2,2,1,0,1,1,1,1,1,0,1,0,0,1,0,0,0,1,1,0,0, +3,1,0,1,0,2,2,2,2,3,2,1,1,1,2,3,0,0,1,0,2,1,1,0,1,1,1,1,2,1,1,1, +1,2,2,1,2,1,2,2,1,1,0,1,2,1,2,2,1,1,1,0,0,1,1,1,2,1,0,1,0,0,0,0, +2,1,0,1,0,3,1,2,2,2,2,1,2,2,1,1,1,0,2,1,2,2,1,1,2,1,1,0,2,1,1,1, +1,2,2,2,2,2,2,2,1,2,0,1,1,0,2,1,1,1,1,1,0,0,1,1,1,1,0,1,0,0,0,0, +2,1,1,1,1,2,2,2,2,1,2,2,2,1,2,2,1,1,2,1,2,3,2,2,1,1,1,1,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, +2,2,2,3,2,0,1,2,0,1,2,1,1,0,1,0,1,2,1,2,0,0,0,1,1,0,0,0,1,0,0,2, +1,1,0,0,1,1,0,1,1,1,1,0,2,0,1,1,1,0,0,1,1,0,0,0,0,1,0,0,0,1,0,0, +2,0,0,0,0,1,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,2,1,1,1, +1,2,2,2,2,1,1,2,1,2,1,1,1,0,2,1,2,1,1,1,0,2,1,1,1,1,0,1,0,0,0,0, +3,0,0,0,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, +1,1,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,2,2,3,2,0,0,0,0,1,0,0,0,0,0,0,1,1,0,2,0,0,0,0,0,0,0,0,1,0,1,2, +1,1,1,1,1,1,0,0,2,2,2,2,2,0,1,1,0,1,1,1,1,1,0,0,1,0,0,0,1,1,0,1, +2,3,1,2,1,0,1,1,0,2,2,2,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,1,2, +1,1,1,1,2,1,1,1,1,1,1,1,1,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,1,0,0, +2,2,2,2,2,0,0,2,0,0,2,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,2,0,2,2, +1,1,1,1,1,0,0,1,2,1,1,0,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, +1,2,2,2,2,0,0,2,0,1,1,0,0,0,1,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,1,1, +0,0,0,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0, +1,2,2,3,2,0,0,1,0,0,1,0,0,0,0,0,0,1,0,2,0,0,0,1,0,0,0,0,0,0,0,2, +1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, +2,1,2,2,2,1,2,1,2,2,1,1,2,1,1,1,0,1,1,1,1,2,0,1,0,1,1,1,1,0,1,1, +1,1,2,1,1,1,1,1,1,0,0,1,2,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0, +1,0,0,1,3,1,1,0,0,0,0,0,1,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,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,2,2,2,1,0,0,1,0,2,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,2,0,0,1, +0,2,0,1,0,0,1,1,2,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, +1,2,2,2,2,0,1,1,0,2,1,0,1,1,1,0,0,1,0,2,0,1,0,0,0,0,0,0,0,0,0,1, +0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, +2,2,2,2,2,0,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1, +0,1,0,1,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, +2,0,1,0,0,1,2,1,1,1,1,1,1,2,2,1,0,0,1,0,1,0,0,0,0,1,1,1,1,0,0,0, +1,1,2,1,1,1,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,2,1,2,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1, +0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,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,1,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0, +0,1,1,0,1,1,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0, +1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,2,0,0,2,0,1,0,0,1,0,0,1, +1,1,0,0,1,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0, +1,1,1,1,1,1,1,2,0,0,0,0,0,0,2,1,0,1,1,0,0,1,1,1,0,1,0,0,0,0,0,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, +1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,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,1, +) + +Latin5BulgarianModel = { + 'char_to_order_map': Latin5_BulgarianCharToOrderMap, + 'precedence_matrix': BulgarianLangModel, + 'typical_positive_ratio': 0.969392, + 'keep_english_letter': False, + 'charset_name': "ISO-8859-5", + 'language': 'Bulgairan', +} + +Win1251BulgarianModel = { + 'char_to_order_map': win1251BulgarianCharToOrderMap, + 'precedence_matrix': BulgarianLangModel, + 'typical_positive_ratio': 0.969392, + 'keep_english_letter': False, + 'charset_name': "windows-1251", + 'language': 'Bulgarian', +} diff --git a/env/lib/python2.7/site-packages/chardet/langbulgarianmodel.pyc b/env/lib/python2.7/site-packages/chardet/langbulgarianmodel.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b6277ec1972d3883483b7117a4eb6063a4fbeb83 GIT binary patch literal 24949 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/langcyrillicmodel.py b/env/lib/python2.7/site-packages/chardet/langcyrillicmodel.py new file mode 100644 index 0000000..e5f9a1f --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/langcyrillicmodel.py @@ -0,0 +1,333 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# KOI8-R language model +# Character Mapping Table: +KOI8R_char_to_order_map = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 +155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 +253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 + 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 +191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, # 80 +207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222, # 90 +223,224,225, 68,226,227,228,229,230,231,232,233,234,235,236,237, # a0 +238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253, # b0 + 27, 3, 21, 28, 13, 2, 39, 19, 26, 4, 23, 11, 8, 12, 5, 1, # c0 + 15, 16, 9, 7, 6, 14, 24, 10, 17, 18, 20, 25, 30, 29, 22, 54, # d0 + 59, 37, 44, 58, 41, 48, 53, 46, 55, 42, 60, 36, 49, 38, 31, 34, # e0 + 35, 43, 45, 32, 40, 52, 56, 33, 61, 62, 51, 57, 47, 63, 50, 70, # f0 +) + +win1251_char_to_order_map = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 +155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 +253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 + 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 +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,227,228,229,230,231,232,233,234,235,236,237,238, +239,240,241,242,243,244,245,246, 68,247,248,249,250,251,252,253, + 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35, + 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43, + 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15, + 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16, +) + +latin5_char_to_order_map = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 +155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 +253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 + 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 +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,227,228,229,230,231,232,233,234,235,236,237,238, + 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35, + 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43, + 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15, + 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16, +239, 68,240,241,242,243,244,245,246,247,248,249,250,251,252,255, +) + +macCyrillic_char_to_order_map = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 +155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 +253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 + 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 + 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35, + 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43, +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,227,228,229,230,231,232,233,234,235,236,237,238, +239,240,241,242,243,244,245,246,247,248,249,250,251,252, 68, 16, + 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15, + 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27,255, +) + +IBM855_char_to_order_map = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 +155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 +253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 + 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 +191,192,193,194, 68,195,196,197,198,199,200,201,202,203,204,205, +206,207,208,209,210,211,212,213,214,215,216,217, 27, 59, 54, 70, + 3, 37, 21, 44, 28, 58, 13, 41, 2, 48, 39, 53, 19, 46,218,219, +220,221,222,223,224, 26, 55, 4, 42,225,226,227,228, 23, 60,229, +230,231,232,233,234,235, 11, 36,236,237,238,239,240,241,242,243, + 8, 49, 12, 38, 5, 31, 1, 34, 15,244,245,246,247, 35, 16,248, + 43, 9, 45, 7, 32, 6, 40, 14, 52, 24, 56, 10, 33, 17, 61,249, +250, 18, 62, 20, 51, 25, 57, 30, 47, 29, 63, 22, 50,251,252,255, +) + +IBM866_char_to_order_map = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 +155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 +253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 + 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 + 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35, + 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43, + 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15, +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,227,228,229,230,231,232,233,234,235,236,237,238, + 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16, +239, 68,240,241,242,243,244,245,246,247,248,249,250,251,252,255, +) + +# Model Table: +# total sequences: 100% +# first 512 sequences: 97.6601% +# first 1024 sequences: 2.3389% +# rest sequences: 0.1237% +# negative sequences: 0.0009% +RussianLangModel = ( +0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,1,3,3,3,2,3,2,3,3, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,2,2,2,2,2,0,0,2, +3,3,3,2,3,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,3,2,3,2,0, +0,0,0,0,0,0,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, +3,3,3,2,2,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,2,3,3,1,0, +0,0,0,0,0,0,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, +3,2,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,2,1, +0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,2,1, +0,0,0,0,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, +3,3,3,3,3,3,3,3,2,2,2,3,1,3,3,1,3,3,3,3,2,2,3,0,2,2,2,3,3,2,1,0, +0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,2,3,3,3,3,3,2,2,3,2,3,3,3,2,1,2,2,0,1,2,2,2,2,2,2,0, +0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,3,0,2,2,3,3,2,1,2,0, +0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,2,3,3,1,2,3,2,2,3,2,3,3,3,3,2,2,3,0,3,2,2,3,1,1,1,0, +0,0,0,0,0,0,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, +3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,2,3,3,3,3,2,2,2,0,3,3,3,2,2,2,2,0, +0,0,0,0,0,0,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, +3,3,3,3,3,3,3,3,3,3,2,3,2,3,3,3,3,3,3,2,3,2,2,0,1,3,2,1,2,2,1,0, +0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,3,2,1,1,3,0,1,1,1,1,2,1,1,0,2,2,2,1,2,0,1,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, +3,3,3,3,3,3,2,3,3,2,2,2,2,1,3,2,3,2,3,2,1,2,2,0,1,1,2,1,2,1,2,0, +0,0,0,0,0,0,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, +3,3,3,3,3,3,3,3,3,3,3,3,2,2,3,2,3,3,3,2,2,2,2,0,2,2,2,2,3,1,1,0, +0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, +3,2,3,2,2,3,3,3,3,3,3,3,3,3,1,3,2,0,0,3,3,3,3,2,3,3,3,3,2,3,2,0, +0,0,0,0,0,0,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, +2,3,3,3,3,3,2,2,3,3,0,2,1,0,3,2,3,2,3,0,0,1,2,0,0,1,0,1,2,1,1,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, +3,0,3,0,2,3,3,3,3,2,3,3,3,3,1,2,2,0,0,2,3,2,2,2,3,2,3,2,2,3,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, +3,2,3,0,2,3,2,3,0,1,2,3,3,2,0,2,3,0,0,2,3,2,2,0,1,3,1,3,2,2,1,0, +0,0,0,0,0,0,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, +3,1,3,0,2,3,3,3,3,3,3,3,3,2,1,3,2,0,0,2,2,3,3,3,2,3,3,0,2,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, +3,3,3,3,3,3,2,2,3,3,2,2,2,3,3,0,0,1,1,1,1,1,2,0,0,1,1,1,1,0,1,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, +3,3,3,3,3,3,2,2,3,3,3,3,3,3,3,0,3,2,3,3,2,3,2,0,2,1,0,1,1,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,2,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,2,3,3,3,2,2,2,2,3,1,3,2,3,1,1,2,1,0,2,2,2,2,1,3,1,0, +0,0,0,0,1,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, +2,2,3,3,3,3,3,1,2,2,1,3,1,0,3,0,0,3,0,0,0,1,1,0,1,2,1,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, +3,2,2,1,1,3,3,3,2,2,1,2,2,3,1,1,2,0,0,2,2,1,3,0,0,2,1,1,2,1,1,0, +0,0,0,0,0,0,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, +3,2,3,3,3,3,1,2,2,2,1,2,1,3,3,1,1,2,1,2,1,2,2,0,2,0,0,1,1,0,1,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, +2,3,3,3,3,3,2,1,3,2,2,3,2,0,3,2,0,3,0,1,0,1,1,0,0,1,1,1,1,0,1,0, +0,0,0,0,0,0,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, +3,3,2,3,3,3,2,2,2,3,3,1,2,1,2,1,0,1,0,1,1,0,1,0,0,2,1,1,1,0,1,0, +0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, +3,1,1,2,1,2,3,3,2,2,1,2,2,3,0,2,1,0,0,2,2,3,2,1,2,2,2,2,2,3,1,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, +3,3,3,3,3,1,1,0,1,1,2,2,1,1,3,0,0,1,3,1,1,1,0,0,0,1,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,0,0,0, +2,1,3,3,3,2,0,0,0,2,1,0,1,0,2,0,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, +2,0,1,0,0,2,3,2,2,2,1,2,2,2,1,2,1,0,0,1,1,1,0,2,0,1,1,1,0,0,1,1, +1,0,0,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0, +2,3,3,3,3,0,0,0,0,1,0,0,0,0,3,0,1,2,1,0,0,0,0,0,0,0,1,1,0,0,1,1, +1,0,1,0,1,2,0,0,1,1,2,1,0,1,1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0, +2,2,3,2,2,2,3,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,0,1,0,1,1,1,0,2,1, +1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,1,0,1,1,0, +3,3,3,2,2,2,2,3,2,2,1,1,2,2,2,2,1,1,3,1,2,1,2,0,0,1,1,0,1,0,2,1, +1,1,1,1,1,2,1,0,1,1,1,1,0,1,0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,1,1,0, +2,0,0,1,0,3,2,2,2,2,1,2,1,2,1,2,0,0,0,2,1,2,2,1,1,2,2,0,1,1,0,2, +1,1,1,1,1,0,1,1,1,2,1,1,1,2,1,0,1,2,1,1,1,1,0,1,1,1,0,0,1,0,0,1, +1,3,2,2,2,1,1,1,2,3,0,0,0,0,2,0,2,2,1,0,0,0,0,0,0,1,0,0,0,0,1,1, +1,0,1,1,0,1,0,1,1,0,1,1,0,2,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0, +2,3,2,3,2,1,2,2,2,2,1,0,0,0,2,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,2,1, +1,1,2,1,0,2,0,0,1,0,1,0,0,1,0,0,1,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0, +3,0,0,1,0,2,2,2,3,2,2,2,2,2,2,2,0,0,0,2,1,2,1,1,1,2,2,0,0,0,1,2, +1,1,1,1,1,0,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,1, +2,3,2,3,3,2,0,1,1,1,0,0,1,0,2,0,1,1,3,1,0,0,0,0,0,0,0,1,0,0,2,1, +1,1,1,1,1,1,1,0,1,0,1,1,1,1,0,1,1,1,0,0,1,1,0,1,0,0,0,0,0,0,1,0, +2,3,3,3,3,1,2,2,2,2,0,1,1,0,2,1,1,1,2,1,0,1,1,0,0,1,0,1,0,0,2,0, +0,0,0,0,0,0,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, +2,3,3,3,2,0,0,1,1,2,2,1,0,0,2,0,1,1,3,0,0,1,0,0,0,0,0,1,0,1,2,1, +1,1,2,0,1,1,1,0,1,0,1,1,0,1,0,1,1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,0, +1,3,2,3,2,1,0,0,2,2,2,0,1,0,2,0,1,1,1,0,1,0,0,0,3,0,1,1,0,0,2,1, +1,1,1,0,1,1,0,0,0,0,1,1,0,1,0,0,2,1,1,0,1,0,0,0,1,0,1,0,0,1,1,0, +3,1,2,1,1,2,2,2,2,2,2,1,2,2,1,1,0,0,0,2,2,2,0,0,0,1,2,1,0,1,0,1, +2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,1,1,1,0,1,0,1,1,0,1,1,1,0,0,1, +3,0,0,0,0,2,0,1,1,1,1,1,1,1,0,1,0,0,0,1,1,1,0,1,0,1,1,0,0,1,0,1, +1,1,0,0,1,0,0,0,1,0,1,1,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1, +1,3,3,2,2,0,0,0,2,2,0,0,0,1,2,0,1,1,2,0,0,0,0,0,0,0,0,1,0,0,2,1, +0,1,1,0,0,1,1,0,0,0,1,1,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0, +2,3,2,3,2,0,0,0,0,1,1,0,0,0,2,0,2,0,2,0,0,0,0,0,1,0,0,1,0,0,1,1, +1,1,2,0,1,2,1,0,1,1,2,1,1,1,1,1,2,1,1,0,1,0,0,1,1,1,1,1,0,1,1,0, +1,3,2,2,2,1,0,0,2,2,1,0,1,2,2,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1, +0,0,1,1,0,1,1,0,0,1,1,0,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0, +1,0,0,1,0,2,3,1,2,2,2,2,2,2,1,1,0,0,0,1,0,1,0,2,1,1,1,0,0,0,0,1, +1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0, +2,0,2,0,0,1,0,3,2,1,2,1,2,2,0,1,0,0,0,2,1,0,0,2,1,1,1,1,0,2,0,2, +2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,0,1,1,1,1,0,0,0,1,1,1,1,0,1,0,0,1, +1,2,2,2,2,1,0,0,1,0,0,0,0,0,2,0,1,1,1,1,0,0,0,0,1,0,1,2,0,0,2,0, +1,0,1,1,1,2,1,0,1,0,1,1,0,0,1,0,1,1,1,0,1,0,0,0,1,0,0,1,0,1,1,0, +2,1,2,2,2,0,3,0,1,1,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +0,0,0,1,1,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0, +1,2,2,3,2,2,0,0,1,1,2,0,1,2,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1, +0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0, +2,2,1,1,2,1,2,2,2,2,2,1,2,2,0,1,0,0,0,1,2,2,2,1,2,1,1,1,1,1,2,1, +1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,0,1, +1,2,2,2,2,0,1,0,2,2,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0, +0,0,1,0,0,1,0,0,0,0,1,0,1,1,0,0,1,1,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,2,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, +1,2,2,2,2,0,0,0,2,2,2,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1, +0,1,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,2,2,2,2,0,0,0,0,1,0,0,1,1,2,0,0,0,0,1,0,1,0,0,1,0,0,2,0,0,0,1, +0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, +1,2,2,2,1,1,2,0,2,1,1,1,1,0,2,2,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1, +0,0,1,0,1,1,0,0,0,0,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0, +1,0,2,1,2,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0, +0,0,1,0,1,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0, +1,0,0,0,0,2,0,1,2,1,0,1,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1, +0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1, +2,2,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,1, +1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,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,1, +1,1,1,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,1,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,0,1,1,0,1,0,1,0,0,0,0,1,1,0,1,1,0,0,0,0,0,1,0,1,1,0,1,0,0,0, +0,1,1,1,1,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,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0, +) + +Koi8rModel = { + 'char_to_order_map': KOI8R_char_to_order_map, + 'precedence_matrix': RussianLangModel, + 'typical_positive_ratio': 0.976601, + 'keep_english_letter': False, + 'charset_name': "KOI8-R", + 'language': 'Russian', +} + +Win1251CyrillicModel = { + 'char_to_order_map': win1251_char_to_order_map, + 'precedence_matrix': RussianLangModel, + 'typical_positive_ratio': 0.976601, + 'keep_english_letter': False, + 'charset_name': "windows-1251", + 'language': 'Russian', +} + +Latin5CyrillicModel = { + 'char_to_order_map': latin5_char_to_order_map, + 'precedence_matrix': RussianLangModel, + 'typical_positive_ratio': 0.976601, + 'keep_english_letter': False, + 'charset_name': "ISO-8859-5", + 'language': 'Russian', +} + +MacCyrillicModel = { + 'char_to_order_map': macCyrillic_char_to_order_map, + 'precedence_matrix': RussianLangModel, + 'typical_positive_ratio': 0.976601, + 'keep_english_letter': False, + 'charset_name': "MacCyrillic", + 'language': 'Russian', +} + +Ibm866Model = { + 'char_to_order_map': IBM866_char_to_order_map, + 'precedence_matrix': RussianLangModel, + 'typical_positive_ratio': 0.976601, + 'keep_english_letter': False, + 'charset_name': "IBM866", + 'language': 'Russian', +} + +Ibm855Model = { + 'char_to_order_map': IBM855_char_to_order_map, + 'precedence_matrix': RussianLangModel, + 'typical_positive_ratio': 0.976601, + 'keep_english_letter': False, + 'charset_name': "IBM855", + 'language': 'Russian', +} diff --git a/env/lib/python2.7/site-packages/chardet/langcyrillicmodel.pyc b/env/lib/python2.7/site-packages/chardet/langcyrillicmodel.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c8574359e9e3efb516b2f36c9db1ec2323c49e7f GIT binary patch literal 30669 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/langhebrewmodel.py b/env/lib/python2.7/site-packages/chardet/langhebrewmodel.py new file mode 100644 index 0000000..58f4c87 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/langhebrewmodel.py @@ -0,0 +1,200 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Simon Montagu +# Portions created by the Initial Developer are Copyright (C) 2005 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# Shoshannah Forbes - original C code (?) +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# 255: Control characters that usually does not exist in any text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 + +# Windows-1255 language model +# Character Mapping Table: +WIN1255_CHAR_TO_ORDER_MAP = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253, 69, 91, 79, 80, 92, 89, 97, 90, 68,111,112, 82, 73, 95, 85, # 40 + 78,121, 86, 71, 67,102,107, 84,114,103,115,253,253,253,253,253, # 50 +253, 50, 74, 60, 61, 42, 76, 70, 64, 53,105, 93, 56, 65, 54, 49, # 60 + 66,110, 51, 43, 44, 63, 81, 77, 98, 75,108,253,253,253,253,253, # 70 +124,202,203,204,205, 40, 58,206,207,208,209,210,211,212,213,214, +215, 83, 52, 47, 46, 72, 32, 94,216,113,217,109,218,219,220,221, + 34,116,222,118,100,223,224,117,119,104,125,225,226, 87, 99,227, +106,122,123,228, 55,229,230,101,231,232,120,233, 48, 39, 57,234, + 30, 59, 41, 88, 33, 37, 36, 31, 29, 35,235, 62, 28,236,126,237, +238, 38, 45,239,240,241,242,243,127,244,245,246,247,248,249,250, + 9, 8, 20, 16, 3, 2, 24, 14, 22, 1, 25, 15, 4, 11, 6, 23, + 12, 19, 13, 26, 18, 27, 21, 17, 7, 10, 5,251,252,128, 96,253, +) + +# Model Table: +# total sequences: 100% +# first 512 sequences: 98.4004% +# first 1024 sequences: 1.5981% +# rest sequences: 0.087% +# negative sequences: 0.0015% +HEBREW_LANG_MODEL = ( +0,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,2,3,2,1,2,0,1,0,0, +3,0,3,1,0,0,1,3,2,0,1,1,2,0,2,2,2,1,1,1,1,2,1,1,1,2,0,0,2,2,0,1, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2, +1,2,1,2,1,2,0,0,2,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2, +1,2,1,3,1,1,0,0,2,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,1,2,2,1,3, +1,2,1,1,2,2,0,0,2,2,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,1,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,2,2,2,2,3,2, +1,2,1,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,2,3,2,2,3,2,2,2,1,2,2,2,2, +1,2,1,1,2,2,0,1,2,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,0,2,2,2,2,2, +0,2,0,2,2,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,0,2,2,2, +0,2,1,2,2,2,0,0,2,1,0,0,0,0,1,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,2,1,2,3,2,2,2, +1,2,1,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0, +3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,2,0,2, +0,2,1,2,2,2,0,0,1,2,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,2,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,2,3,2,2,3,2,1,2,1,1,1, +0,1,1,1,1,1,3,0,1,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, +3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,0,1,0,0,1,0,0,0,0, +0,0,1,0,0,0,0,0,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2, +0,2,0,1,2,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,1,0, +3,3,3,3,3,3,3,3,3,2,3,3,3,2,1,2,3,3,2,3,3,3,3,2,3,2,1,2,0,2,1,2, +0,2,0,2,2,2,0,0,1,2,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0, +3,3,3,3,3,3,3,3,3,2,3,3,3,1,2,2,3,3,2,3,2,3,2,2,3,1,2,2,0,2,2,2, +0,2,1,2,2,2,0,0,1,2,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,2,2,2,3,3,3,3,1,3,2,2,2, +0,2,0,1,2,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,1,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,2,3,2,2,2,1,2,2,0,2,2,2,2, +0,2,0,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,1,3,2,3,3,2,3,3,2,2,1,2,2,2,2,2,2, +0,2,1,2,1,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,2,3,2,3,3,2,3,3,3,3,2,3,2,3,3,3,3,3,2,2,2,2,2,2,2,1, +0,2,0,1,2,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,3,2,1,2,3,3,3,3,3,3,3,2,3,2,3,2,1,2,3,0,2,1,2,2, +0,2,1,1,2,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,2,0, +3,3,3,3,3,3,3,3,3,2,3,3,3,3,2,1,3,1,2,2,2,1,2,3,3,1,2,1,2,2,2,2, +0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,0,2,3,3,3,1,3,3,3,1,2,2,2,2,1,1,2,2,2,2,2,2, +0,2,0,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,2,3,3,3,2,2,3,3,3,2,1,2,3,2,3,2,2,2,2,1,2,1,1,1,2,2, +0,2,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,1,0, +3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0, +1,0,1,0,0,0,0,0,2,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,2,3,3,2,3,1,2,2,2,2,3,2,3,1,1,2,2,1,2,2,1,1,0,2,2,2,2, +0,1,0,1,2,2,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, +3,0,0,1,1,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,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, +3,0,1,0,1,0,1,1,0,1,1,0,0,0,1,1,0,1,1,1,0,0,0,0,0,0,1,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, +3,0,0,0,1,1,0,1,0,1,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,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, +3,2,2,1,2,2,2,2,2,2,2,1,2,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,0,3,3,3, +0,3,0,2,2,2,2,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, +2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,1,2,2,2,1,1,1,2,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, +2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,0,0,0,0,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, +2,3,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,0,2,1,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, +3,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,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,1,0,0,0,0,0,0,0,0,0, +0,3,1,1,2,2,2,2,2,1,2,2,2,1,1,2,2,2,2,2,2,2,1,2,2,1,0,1,1,1,1,0, +0,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, +3,2,1,1,1,1,2,1,1,2,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0, +0,0,2,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,0,0, +2,1,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,1,2,1,1,1,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,0,0,0, +1,2,1,2,2,2,2,2,2,2,2,2,2,1,2,1,2,1,1,2,1,1,1,2,1,2,1,2,0,1,0,1, +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,3,1,2,2,2,1,2,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,2,1,2,1,1,0,1,0,1, +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, +2,1,2,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,2,2,2, +0,2,0,1,2,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,1,0, +3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,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, +2,1,1,1,1,1,1,1,0,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2,0,1,1,1,0,1,0,0,0,1,1,0,1,1,0,0,0,0,0,1,1,0,0, +0,1,1,1,2,1,2,2,2,0,2,0,2,0,1,1,2,1,1,1,1,2,1,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,0,0,0,0,0,0, +2,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, +1,0,1,0,0,0,0,0,1,0,1,2,2,0,1,0,0,1,1,2,2,1,2,0,2,0,0,0,1,2,0,1, +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,2,0,2,1,2,0,2,0,0,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1, +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,1,0,0,0,0,0,1,0,2,1,1,0,1,0,0,1,1,1,2,2,0,0,1,0,0,0,1,0,0,1, +1,1,2,1,0,1,1,1,0,1,0,1,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,2,2,1, +0,2,0,1,2,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, +2,1,0,0,1,0,1,1,1,1,0,0,0,0,0,1,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,1,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,2,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,1,0,0,0,1,1,0,1, +2,0,1,0,1,0,1,0,0,1,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, +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,1,0,1,1,1,0,1,0,0,1,1,2,1,1,2,0,1,0,0,0,1,1,0,1, +1,0,0,1,0,0,1,0,0,0,1,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,1,0,1,1,2,0,1,0,0,0,0,2,1,1,2,0,2,0,0,0,1,1,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,0,0,0,0,0,0,0,1,0,2,1,1,0,1,0,0,2,2,1,2,1,1,0,1,0,0,0,1,1,0,1, +2,0,1,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,0,0,0,1,2,2,0,0,0,0,0,1,1,0,1,0,0,1,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,1,2,2,0,0,0,0,2,1,1,1,0,2,1,1,0,0,0,2,1,0,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,1,0,1,1,2,0,1,0,0,1,1,0,2,1,1,0,1,0,0,0,1,1,0,1, +2,2,1,1,1,0,1,1,0,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,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, +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,1,0,2,1,1,0,1,0,0,1,1,0,1,2,1,0,2,0,0,0,1,1,0,1, +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,2,0,0,0,0,0, +0,1,0,0,2,0,2,1,1,0,1,0,1,0,0,1,0,0,0,0,1,0,0,0,1,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, +1,0,0,1,0,0,1,0,0,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,1,0,1,1,2,0,1,0,0,1,1,1,0,1,0,0,1,0,0,0,1,0,0,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, +1,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,0,2,1,1,1,1,1,0,1,0,0,0,0,1,0,1, +0,1,1,1,2,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,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,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,1,2,1,0,0,0,0,0,1,1,1,1,1,0,1,0,0,0,1,1,0,0, +) + +Win1255HebrewModel = { + 'char_to_order_map': WIN1255_CHAR_TO_ORDER_MAP, + 'precedence_matrix': HEBREW_LANG_MODEL, + 'typical_positive_ratio': 0.984004, + 'keep_english_letter': False, + 'charset_name': "windows-1255", + 'language': 'Hebrew', +} diff --git a/env/lib/python2.7/site-packages/chardet/langhebrewmodel.pyc b/env/lib/python2.7/site-packages/chardet/langhebrewmodel.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b55b643cc9fce735326021310226dcd049d65b3a GIT binary patch literal 23435 zcmeI4X_s7O6@_nz1`VQ!^9&ByB1s^Uh?qb^(it$5oyi2G=%k8HnI4MnNNTJ3njwFxx)xlU|edE5ggdOTuwsP`FOmDr^(37xoClLht3Qy;hhII>L~! zQD_J|g)PESVVAI8SR>pd929m4lfsBFB`g)L6;=o~#>8Z^HQ5*&?%3OzZ0&C~ zTjTp%Jy&Yo2}K#beK1-PN4kqn-Bt;n7BCVyfM3A8s`!hr8{GuBJNJYIPc| z@sZK?)PcrmtJ`f&PHE&L?eXTsk*P(OEnT*(D~BGQYIPgq!(*+k*4xn9H`zMU)u~2@ z$43qgkF>T7WW9@=_|@@B&tF=-{Qt?ptkkMR@=JQHMjThaN+|L8pqgGMY!$W%*9&`u zVPUVZR+tbv!jQ00Xb3xnEy7V@m#|(~Bitk$6m|%c!iX>>6c4#nDc1@sgq6a@!X{yz zuu51a=<{3qZ{pnfj_I{Kg}a2ig?oen;Y#6N;XdJh;Q`@6;UVE+;Su3c;W1&maJjHV zSS)N1E)Z@I9v5yFo)E@_Cxxekr-f&P*MCKyIlrQh>j!$9aHF8l4teVV+ z@{sHnRM-tOD0gA$5Dg~DA%IEBtR5`&IHwD@^31NVVg;||WEQj{C8a_#Cdv46RceJ9 z^D(Ivr?bhexMavb}Jt8s=;J^qE?FF;#AlT<380u6AIfLK z463*`Bv&%~{9M&j=B10_WjKxxK}DriYfR?nQRxsKJXF}nT0~RHjuHs9+=_nqP%bk# zNvI%T#lEPJQf!7YO!h6I*qmgyVj}`12Zb4Gy#lSQ@P%ZeP9d5)grlhdwM0|N!H3Dd zeJZX&gW$6X$U}J`o8(z}EtK;}VduJ!AqQk+T03K=$ASe zK8Cc9!EF)^w@R6HC(|#iRctc2RdF(BN-0l37cU*!+YAB9Sivd53`Z=ER!?TM5;q`) zeerP|4{6iN$p9a<_)t_>aU7=vgw1nJmz9n3Zf*qumMN=T>o-D$hfMjxNo;b6R1_bt zS%ot8s8JOkn=!1yzQOb!DPL~Dj}r~bCLo!+;B%gbvWa}usmN%5o=hs8{7UK~wToH`$;^HgQQK&c8xa|6_#cFHqXpDG+N_cP@7AeFv*(*#UBg?NBIURlRb!*Rn%76*RzzZV3t%xDw^`;))GivDD}xH z_WAML6rw>fvlUb2sI3bnizQi4g|TvY696?P-) z-5kvYDd7;Vz!%;iaC)jReHfA`_rr&BnN8q|)QNN7$nC;Iv=6>iEh#*S4@ERru?%JG zW}i)>xvgd*keY?jtO9bUqAaA)AOudanLAL8@3LD76^>n^B9-Fl9jI{+T7@SGpi(LL zoR^v}l@k7Ggxb(0m<$xkLf}j`i%&9lHfIkjkowUQ)J!?)@BKeQp&3;SfX}paFTb!Z#-rgR>U*BbwTryO4)s zeLB;{wV?sEsfrM#eM*r`H02{&kD7@$JSjh;dIq1ZE*va;7(5VBOng?9IVE)$=cUSK zYw6eDef0~B&g4U+K8aypK9dem!H1fZlyVt?;`YVKC8DAIteRoz>6oX<9$vxVbC6n# zywr~@ROF_FykO4iNm4WC4#ePAn5iz|pA{99p~8~{g0gAkwr3WSE2+>Rj5ZfduRj+D z&z(7Z1d8)gKYdrE?n3g(rUUve*si`BcK60D`V!T~nhmRm8auW&whpZw9BOP{z0Kd; zx?%8|p~2maO{=%8Z*1PWc5qWyU;nypc(nIjtLLk_J+A5#U$(k=qS+eNmss|`WAHUh zUC~oZx?`Osopxu@zC-QN=A!XkJ4Y`)yhLBw+H7@C{=dGa^?<*%bxe&GcaHkoTUYd~ jL!+&$F6uR!xMN~RL2nmq{P?~}QQbK2$FSEwXU164!$*h?hkpIMQ6btr( z(tEdJ$A(hu4GY*QzIzM#$zIR%uJ=v`NEBFX&N+LZ{hagM%gxJ|cfk`oF5dUJtKYM> z_xxWw_j)Hb@ysO+jNQ{))8M_mHS>C7_x0Ay?~O0&^_$9#y;c4By|J5mtHy5bjos2@ z3wmR>HrZ{xvD=$}-O(Gnv$tx^LhGB}s{XDQ=(p*O-Q7EH$^FgIqdkJ7~V!<|o1%f>Uy9wSdI9||v zD!uVn2`(30A-Ga-mEePd4+%aj_=w!7YMY1-A)q7u+GZQ*f8yZoxf*dj+Qp?i1WE_@dxTf-eic zBKWG{Yl78+2LxXid_(X}!M6n87JNtWUBQEb?+Lyy_<`Vuf*%PU68u>37Qs1!p9szp zJS=!b@TlN1!C``*3VtT|x!^d#F9g37{7Ud^!EXd_75rB44#C?5zZ3jk@VMYu!8-*f z2>u}Wqu@`1a|JsI-YxjE;9Y{V1y2Z06+9_;wctF#nS%2LZxoy%xIpk1!CwV`6TD7v zn&8cX*9!hF_=n)1f;S0{7Q8|5FTsU^iv-O-y}>RGti5=2dStL+WW)4We|lv7=#;Bd z)BUymvHs-Rep4DukH3H22Oe5-&4Xt@e!^f+bzU|#zIJqCWNO3A_+b2!{>b#`V0^=1 zw}yIOzdtq7pIkRFK6CNNM1L^oPtPoF>ZhHzdg;+euRLbyiop)g9Xrz>j7*NM?+>CJ1#f3_(P2hY5) zBhumh+B=@sX>$lq$!{p=aQNObT_RW|SSr{@utIQz;2^=lf|Y^;1cwOr6YMWoCOBMh zir`SezJdb<#|V}SP86IhI7)D&pnb^slI$wjOQ3J-OZ+Qco$qqZa)sbZ!Bv7+e!gG% z`PTQ~#ryg84}iXtulxu$_uS#iwjDY{;8 zgWyKNO@diI!}oe>*I_LqxTtCD5+0W0gems0wXFMW!RPdPKFu{xR4C}|z6J#IH zu>K+2NyO;_Kg0UZ_;Z!|8P<=WPb&2@tRGcZEA^A6pJDw->u1i=GpwJEhkAznuOGpk zn}eFep8FrJ1#=S3n-iDKnZ=JiT@5Ub4zFNw(1wG4Y)t9)6wwv zH_Ns-h=GELw7O;Nfi5mAQgkH)i|L5SqtRwI#_f>KvMrqXh6UjiHujB_1%qJAAnZ(= zBhp}TvBaZ=UupXG8dmMPc9t7z*TuLU(zudp2e%fID&a|C9mVust9>`07Hz|)?PuT@ zyLC<3!x3#>nwrzNk`n8hr^1RF<93K<*%r=ST|91V$qGdF<02p&!8!`oX`EplVzXWW z!cnZXIq4kwVO3hSREzbi5<8bz*KjH6;{LeP&AGK%_Hsid1K8@Svn0H9^hPaGF4mKh zIx0=yUYnb1Z+Gc>f7MlEOQ#0DSMCL1kwlIAGts_6^%7^<7Jl4N5RrP)cJM$Up+0r6aP$n+FjFUZx~5fdNa$b#6UZS6!9$ zy&FrLphiT8P2;jLhz_TSxngwObJu8YJ^)Y9;Ycg2Q7jni z$G+_>7hxUFq*3#v(bhhFiM4%+7^>FQCGO8{EJ%tD=MwAnJt?ef+`ZZAHMz}VtX`DO z+fCWBUB{#h&Rr3iL*hrsuOrpF0r(rYe*ciYOqxUA7pT^T@XV!f~XE&CEQzOyAoYp z*u&0lV+BX-21^?(qha8Vfark5fQTcBY`_^2xtB9Sj0@*tK+P^rnS~kz9gb|}%OP?~ zF9UIju#OlAF%k~1)=X>_5X<;VxIZp}WnhV59r2-90t-Q{bO!8}9(h65;`?F()_Yjz znsu-kprb}a2lv8})V7|8jo6Zn9GT!=xH@h!_N6UMNy8K(tW3l}q_m;4L1_ZS?W}d| zOB6qE9+c<+>4u|EmQjLyqF~PaGKtvRhNUQdx?@;tc${segL0pL?01{h4 zIE^h~i7X*44OCq)#F0ju&p;BX32N=VxI`2NTn>aIzy}$q5!t?jBsy5e1ojZF#q^w3 zBBE9`2pwsR0YT((o%-tB5p77=4Y6xTFtBN`aV~y{9fb=u3`&vPN(8m)k(RJWbdbgw zbTG3c6R@P{Fb%duU={XG-BEQhiw^rBN)p$Ch%{WnzCC3vT>Rx?86=MQ>bV0Q1{?`X z#PqI}#7KxrIt+-=5!rYN^P)+sktM*dS(q~ z5r;t#OcjJvYNQd_fE7v+XD}K%SWZJnEp#zPHMJFYRn=k7Xoz7QK@e4E4oO&XS`eg2 zYz0AN0v$v|7!ZZTX|Q%S1c4X{I*Sc_0Cd1ILA8b?3?SS~+8%kxc8S@Nt~8{@OhANz zYoyqhYB3r|;v7d-JE{a$o}dKLYe{L3&~->T++wEyHAgZOB^yQC}ChVQTo14YCc5OhRDS`tSM=b<9Iw0Ce& zd=uN-HizX%<|DE*5>g_>=-O*t$K?*fxjn@`bU~ET4ud1XV9ShR(zuOay+TMzYju#6 z+N!nii!`Ppjfm6+POCN8)@aG1h92legJ(3apq^YYvgtk2Cp9m&K7Ye%z1I57=B?I} zG%u3YJEUt8y=r(9cSiFD>N7Wt^(O`koAUY78~cOZH=VLc^&iC^4RKL;o6*aao0qjd z4>Nj?__D$Jsby2+Q%m2waeQKI>EwkMOf0`-nO?&^)*o#8w_bpK@$;|5UavV0pSsMi z#y+;mHcs@9-@oyiY2N7HYhH-m^7o>JZESDeqQ&j}|2n&9!Gd|)Zu)!i3$lL$0|6G3 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/langthaimodel.py b/env/lib/python2.7/site-packages/chardet/langthaimodel.py new file mode 100644 index 0000000..15f94c2 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/langthaimodel.py @@ -0,0 +1,199 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# 255: Control characters that usually does not exist in any text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 + +# The following result for thai was collected from a limited sample (1M). + +# Character Mapping Table: +TIS620CharToOrderMap = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253,182,106,107,100,183,184,185,101, 94,186,187,108,109,110,111, # 40 +188,189,190, 89, 95,112,113,191,192,193,194,253,253,253,253,253, # 50 +253, 64, 72, 73,114, 74,115,116,102, 81,201,117, 90,103, 78, 82, # 60 + 96,202, 91, 79, 84,104,105, 97, 98, 92,203,253,253,253,253,253, # 70 +209,210,211,212,213, 88,214,215,216,217,218,219,220,118,221,222, +223,224, 99, 85, 83,225,226,227,228,229,230,231,232,233,234,235, +236, 5, 30,237, 24,238, 75, 8, 26, 52, 34, 51,119, 47, 58, 57, + 49, 53, 55, 43, 20, 19, 44, 14, 48, 3, 17, 25, 39, 62, 31, 54, + 45, 9, 16, 2, 61, 15,239, 12, 42, 46, 18, 21, 76, 4, 66, 63, + 22, 10, 1, 36, 23, 13, 40, 27, 32, 35, 86,240,241,242,243,244, + 11, 28, 41, 29, 33,245, 50, 37, 6, 7, 67, 77, 38, 93,246,247, + 68, 56, 59, 65, 69, 60, 70, 80, 71, 87,248,249,250,251,252,253, +) + +# Model Table: +# total sequences: 100% +# first 512 sequences: 92.6386% +# first 1024 sequences:7.3177% +# rest sequences: 1.0230% +# negative sequences: 0.0436% +ThaiLangModel = ( +0,1,3,3,3,3,0,0,3,3,0,3,3,0,3,3,3,3,3,3,3,3,0,0,3,3,3,0,3,3,3,3, +0,3,3,0,0,0,1,3,0,3,3,2,3,3,0,1,2,3,3,3,3,0,2,0,2,0,0,3,2,1,2,2, +3,0,3,3,2,3,0,0,3,3,0,3,3,0,3,3,3,3,3,3,3,3,3,0,3,2,3,0,2,2,2,3, +0,2,3,0,0,0,0,1,0,1,2,3,1,1,3,2,2,0,1,1,0,0,1,0,0,0,0,0,0,0,1,1, +3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,3,3,2,3,2,3,3,2,2,2, +3,1,2,3,0,3,3,2,2,1,2,3,3,1,2,0,1,3,0,1,0,0,1,0,0,0,0,0,0,0,1,1, +3,3,2,2,3,3,3,3,1,2,3,3,3,3,3,2,2,2,2,3,3,2,2,3,3,2,2,3,2,3,2,2, +3,3,1,2,3,1,2,2,3,3,1,0,2,1,0,0,3,1,2,1,0,0,1,0,0,0,0,0,0,1,0,1, +3,3,3,3,3,3,2,2,3,3,3,3,2,3,2,2,3,3,2,2,3,2,2,2,2,1,1,3,1,2,1,1, +3,2,1,0,2,1,0,1,0,1,1,0,1,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0, +3,3,3,2,3,2,3,3,2,2,3,2,3,3,2,3,1,1,2,3,2,2,2,3,2,2,2,2,2,1,2,1, +2,2,1,1,3,3,2,1,0,1,2,2,0,1,3,0,0,0,1,1,0,0,0,0,0,2,3,0,0,2,1,1, +3,3,2,3,3,2,0,0,3,3,0,3,3,0,2,2,3,1,2,2,1,1,1,0,2,2,2,0,2,2,1,1, +0,2,1,0,2,0,0,2,0,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0, +3,3,2,3,3,2,0,0,3,3,0,2,3,0,2,1,2,2,2,2,1,2,0,0,2,2,2,0,2,2,1,1, +0,2,1,0,2,0,0,2,0,1,1,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0, +3,3,2,3,2,3,2,0,2,2,1,3,2,1,3,2,1,2,3,2,2,3,0,2,3,2,2,1,2,2,2,2, +1,2,2,0,0,0,0,2,0,1,2,0,1,1,1,0,1,0,3,1,1,0,0,0,0,0,0,0,0,0,1,0, +3,3,2,3,3,2,3,2,2,2,3,2,2,3,2,2,1,2,3,2,2,3,1,3,2,2,2,3,2,2,2,3, +3,2,1,3,0,1,1,1,0,2,1,1,1,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,2,0,0, +1,0,0,3,0,3,3,3,3,3,0,0,3,0,2,2,3,3,3,3,3,0,0,0,1,1,3,0,0,0,0,2, +0,0,1,0,0,0,0,0,0,0,2,3,0,0,0,3,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0, +2,0,3,3,3,3,0,0,2,3,0,0,3,0,3,3,2,3,3,3,3,3,0,0,3,3,3,0,0,0,3,3, +0,0,3,0,0,0,0,2,0,0,2,1,1,3,0,0,1,0,0,2,3,0,1,0,0,0,0,0,0,0,1,0, +3,3,3,3,2,3,3,3,3,3,3,3,1,2,1,3,3,2,2,1,2,2,2,3,1,1,2,0,2,1,2,1, +2,2,1,0,0,0,1,1,0,1,0,1,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0, +3,0,2,1,2,3,3,3,0,2,0,2,2,0,2,1,3,2,2,1,2,1,0,0,2,2,1,0,2,1,2,2, +0,1,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,2,1,3,3,1,1,3,0,2,3,1,1,3,2,1,1,2,0,2,2,3,2,1,1,1,1,1,2, +3,0,0,1,3,1,2,1,2,0,3,0,0,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0, +3,3,1,1,3,2,3,3,3,1,3,2,1,3,2,1,3,2,2,2,2,1,3,3,1,2,1,3,1,2,3,0, +2,1,1,3,2,2,2,1,2,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2, +3,3,2,3,2,3,3,2,3,2,3,2,3,3,2,1,0,3,2,2,2,1,2,2,2,1,2,2,1,2,1,1, +2,2,2,3,0,1,3,1,1,1,1,0,1,1,0,2,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,2,3,2,2,1,1,3,2,3,2,3,2,0,3,2,2,1,2,0,2,2,2,1,2,2,2,2,1, +3,2,1,2,2,1,0,2,0,1,0,0,1,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,2,3,1,2,3,3,2,2,3,0,1,1,2,0,3,3,2,2,3,0,1,1,3,0,0,0,0, +3,1,0,3,3,0,2,0,2,1,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,2,3,2,3,3,0,1,3,1,1,2,1,2,1,1,3,1,1,0,2,3,1,1,1,1,1,1,1,1, +3,1,1,2,2,2,2,1,1,1,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +3,2,2,1,1,2,1,3,3,2,3,2,2,3,2,2,3,1,2,2,1,2,0,3,2,1,2,2,2,2,2,1, +3,2,1,2,2,2,1,1,1,1,0,0,1,1,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,1,3,3,0,2,1,0,3,2,0,0,3,1,0,1,1,0,1,0,0,0,0,0,1, +1,0,0,1,0,3,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,0,2,2,2,3,0,0,1,3,0,3,2,0,3,2,2,3,3,3,3,3,1,0,2,2,2,0,2,2,1,2, +0,2,3,0,0,0,0,1,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +3,0,2,3,1,3,3,2,3,3,0,3,3,0,3,2,2,3,2,3,3,3,0,0,2,2,3,0,1,1,1,3, +0,0,3,0,0,0,2,2,0,1,3,0,1,2,2,2,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1, +3,2,3,3,2,0,3,3,2,2,3,1,3,2,1,3,2,0,1,2,2,0,2,3,2,1,0,3,0,0,0,0, +3,0,0,2,3,1,3,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,1,3,2,2,2,1,2,0,1,3,1,1,3,1,3,0,0,2,1,1,1,1,2,1,1,1,0,2,1,0,1, +1,2,0,0,0,3,1,1,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,3,1,0,0,0,1,0, +3,3,3,3,2,2,2,2,2,1,3,1,1,1,2,0,1,1,2,1,2,1,3,2,0,0,3,1,1,1,1,1, +3,1,0,2,3,0,0,0,3,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,2,3,0,3,3,0,2,0,0,0,0,0,0,0,3,0,0,1,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,2,3,1,3,0,0,1,2,0,0,2,0,3,3,2,3,3,3,2,3,0,0,2,2,2,0,0,0,2,2, +0,0,1,0,0,0,0,3,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, +0,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,1,2,3,1,3,3,0,0,1,0,3,0,0,0,0,0, +0,0,3,0,0,0,0,0,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,3,1,2,3,1,2,3,1,0,3,0,2,2,1,0,2,1,1,2,0,1,0,0,1,1,1,1,0,1,0,0, +1,0,0,0,0,1,1,0,3,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,2,1,0,1,1,1,3,1,2,2,2,2,2,2,1,1,1,1,0,3,1,0,1,3,1,1,1,1, +1,1,0,2,0,1,3,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1, +3,0,2,2,1,3,3,2,3,3,0,1,1,0,2,2,1,2,1,3,3,1,0,0,3,2,0,0,0,0,2,1, +0,1,0,0,0,0,1,2,0,1,1,3,1,1,2,2,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, +0,0,3,0,0,1,0,0,0,3,0,0,3,0,3,1,0,1,1,1,3,2,0,0,0,3,0,0,0,0,2,0, +0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0, +3,3,1,3,2,1,3,3,1,2,2,0,1,2,1,0,1,2,0,0,0,0,0,3,0,0,0,3,0,0,0,0, +3,0,0,1,1,1,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, +3,0,1,2,0,3,3,3,2,2,0,1,1,0,1,3,0,0,0,2,2,0,0,0,0,3,1,0,1,0,0,0, +0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,0,2,3,1,2,0,0,2,1,0,3,1,0,1,2,0,1,1,1,1,3,0,0,3,1,1,0,2,2,1,1, +0,2,0,0,0,0,0,1,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,0,0,3,1,2,0,0,2,2,0,1,2,0,1,0,1,3,1,2,1,0,0,0,2,0,3,0,0,0,1,0, +0,1,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, +3,0,1,1,2,2,0,0,0,2,0,2,1,0,1,1,0,1,1,1,2,1,0,0,1,1,1,0,2,1,1,1, +0,1,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1, +0,0,0,2,0,1,3,1,1,1,1,0,0,0,0,3,2,0,1,0,0,0,1,2,0,0,0,1,0,0,0,0, +0,0,0,3,0,0,0,0,0,0,0,0,0,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,3,3,3,1,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, +1,0,2,3,2,2,0,0,0,1,0,0,0,0,2,3,2,1,2,2,3,0,0,0,2,3,1,0,0,0,1,1, +0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0, +3,3,2,2,0,1,0,0,0,0,2,0,2,0,1,0,0,0,1,1,0,0,0,2,1,0,1,0,1,1,0,0, +0,1,0,2,0,0,1,0,3,0,1,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,1,0,0,1,0,0,0,0,0,1,1,2,0,0,0,0,1,0,0,1,3,1,0,0,0,0,1,1,0,0, +0,1,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0, +3,3,1,1,1,1,2,3,0,0,2,1,1,1,1,1,0,2,1,1,0,0,0,2,1,0,1,2,1,1,0,1, +2,1,0,3,0,0,0,0,3,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,1,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1, +0,0,0,2,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, +3,3,2,0,0,0,0,0,0,1,2,1,0,1,1,0,2,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,2,0,0,0,1,3,0,1,0,0,0,2,0,0,0,0,0,0,0,1,2,0,0,0,0,0, +3,3,0,0,1,1,2,0,0,1,2,1,0,1,1,1,0,1,1,0,0,2,1,1,0,1,0,0,1,1,1,0, +0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,2,2,1,0,0,0,0,1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0, +2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,3,0,0,1,1,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,1,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, +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,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,0,1,2,0,1,2,0,0,1,1,0,2,0,1,0,0,1,0,0,0,0,1,0,0,0,2,0,0,0,0, +1,0,0,1,0,1,1,0,3,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,1,1,0,1,1,0,2,1,3,0,0,0,0,1,1,0,0,0,0,0,0,0,3, +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,2,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,0,1,0,1,0,0,2,0,0,2,0,0,1,1,2,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0, +1,0,1,0,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, +1,0,0,3,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,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, +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,1,0,0,0, +2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,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, +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,1,0,0,1,3,0,0,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,2,0,0,1,0,0,0,0, +1,0,0,0,0,0,0,0,0,1,0,0,0,0,2,0,0,0,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,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,1,1,0,0,2,1,0,0,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,2,0,0,0,0,0,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,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, +) + +TIS620ThaiModel = { + 'char_to_order_map': TIS620CharToOrderMap, + 'precedence_matrix': ThaiLangModel, + 'typical_positive_ratio': 0.926386, + 'keep_english_letter': False, + 'charset_name': "TIS-620", + 'language': 'Thai', +} diff --git a/env/lib/python2.7/site-packages/chardet/langthaimodel.pyc b/env/lib/python2.7/site-packages/chardet/langthaimodel.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f920229a53a3e220bdfa9be643d4c8ef4652fe39 GIT binary patch literal 23414 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 BxhDVs literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/langturkishmodel.py b/env/lib/python2.7/site-packages/chardet/langturkishmodel.py new file mode 100644 index 0000000..a427a45 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/langturkishmodel.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Özgür Baskın - Turkish Language Model +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# 255: Control characters that usually does not exist in any text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 + +# Character Mapping Table: +Latin5_TurkishCharToOrderMap = ( +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255, 23, 37, 47, 39, 29, 52, 36, 45, 53, 60, 16, 49, 20, 46, 42, + 48, 69, 44, 35, 31, 51, 38, 62, 65, 43, 56,255,255,255,255,255, +255, 1, 21, 28, 12, 2, 18, 27, 25, 3, 24, 10, 5, 13, 4, 15, + 26, 64, 7, 8, 9, 14, 32, 57, 58, 11, 22,255,255,255,255,255, +180,179,178,177,176,175,174,173,172,171,170,169,168,167,166,165, +164,163,162,161,160,159,101,158,157,156,155,154,153,152,151,106, +150,149,148,147,146,145,144,100,143,142,141,140,139,138,137,136, + 94, 80, 93,135,105,134,133, 63,132,131,130,129,128,127,126,125, +124,104, 73, 99, 79, 85,123, 54,122, 98, 92,121,120, 91,103,119, + 68,118,117, 97,116,115, 50, 90,114,113,112,111, 55, 41, 40, 86, + 89, 70, 59, 78, 71, 82, 88, 33, 77, 66, 84, 83,110, 75, 61, 96, + 30, 67,109, 74, 87,102, 34, 95, 81,108, 76, 72, 17, 6, 19,107, +) + +TurkishLangModel = ( +3,2,3,3,3,1,3,3,3,3,3,3,3,3,2,1,1,3,3,1,3,3,0,3,3,3,3,3,0,3,1,3, +3,2,1,0,0,1,1,0,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,2,2,0,0,1,0,0,1, +3,2,2,3,3,0,3,3,3,3,3,3,3,2,3,1,0,3,3,1,3,3,0,3,3,3,3,3,0,3,0,3, +3,1,1,0,1,0,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,2,2,0,0,0,1,0,1, +3,3,2,3,3,0,3,3,3,3,3,3,3,2,3,1,1,3,3,0,3,3,1,2,3,3,3,3,0,3,0,3, +3,1,1,0,0,0,1,0,0,0,0,1,1,0,1,2,1,0,0,0,1,0,0,0,0,2,0,0,0,0,0,1, +3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,1,3,3,2,0,3,2,1,2,2,1,3,3,0,0,0,2, +2,2,0,1,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,0,0,1, +3,3,3,2,3,3,1,2,3,3,3,3,3,3,3,1,3,2,1,0,3,2,0,1,2,3,3,2,1,0,0,2, +2,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0, +1,0,1,3,3,1,3,3,3,3,3,3,3,1,2,0,0,2,3,0,2,3,0,0,2,2,2,3,0,3,0,1, +2,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, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,0,3,2,0,2,3,2,3,3,1,0,0,2, +3,2,0,0,1,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,0,2,0,0,1, +3,3,3,2,3,3,2,3,3,3,3,2,3,3,3,0,3,3,0,0,2,1,0,0,2,3,2,2,0,0,0,2, +2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,1,0,2,0,0,1, +3,3,3,2,3,3,3,3,3,3,3,2,3,3,3,0,3,2,0,1,3,2,1,1,3,2,3,2,1,0,0,2, +2,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0, +3,3,3,2,3,3,3,3,3,3,3,2,3,3,3,0,3,2,2,0,2,3,0,0,2,2,2,2,0,0,0,2, +3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,1,0,0,0, +3,3,3,3,3,3,3,2,2,2,2,3,2,3,3,0,3,3,1,1,2,2,0,0,2,2,3,2,0,0,1,3, +0,3,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1, +3,3,3,2,3,3,3,2,1,2,2,3,2,3,3,0,3,2,0,0,1,1,0,1,1,2,1,2,0,0,0,1, +0,3,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,0, +3,3,3,2,3,3,2,3,2,2,2,3,3,3,3,1,3,1,1,0,3,2,1,1,3,3,2,3,1,0,0,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,1,0,2,0,0,1, +3,2,2,3,3,0,3,3,3,3,3,3,3,2,2,1,0,3,3,1,3,3,0,1,3,3,2,3,0,3,0,3, +2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, +2,2,2,3,3,0,3,3,3,3,3,3,3,3,3,0,0,3,2,0,3,3,0,3,2,3,3,3,0,3,1,3, +2,0,0,0,0,0,0,0,0,0,0,1,0,1,2,0,1,0,0,0,0,0,0,0,2,2,0,0,1,0,0,1, +3,3,3,1,2,3,3,1,0,0,1,0,0,3,3,2,3,0,0,2,0,0,2,0,2,0,0,0,2,0,2,0, +0,3,1,0,1,0,0,0,2,2,1,0,1,1,2,1,2,2,2,0,2,1,1,0,0,0,2,0,0,0,0,0, +1,2,1,3,3,0,3,3,3,3,3,2,3,0,0,0,0,2,3,0,2,3,1,0,2,3,1,3,0,3,0,2, +3,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, +3,3,3,1,3,3,2,2,3,2,2,0,1,2,3,0,1,2,1,0,1,0,0,0,1,0,2,2,0,0,0,1, +1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0, +3,3,3,1,3,3,1,1,3,3,1,1,3,3,1,0,2,1,2,0,2,1,0,0,1,1,2,1,0,0,0,2, +2,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, +3,3,3,1,0,2,1,3,0,0,2,0,0,3,3,0,3,0,0,1,0,1,2,0,0,1,1,2,2,0,1,0, +0,1,2,1,1,0,1,0,1,1,1,1,1,0,1,1,1,2,2,1,2,0,1,0,0,0,0,0,0,1,0,0, +3,3,3,2,3,2,3,3,0,2,2,2,3,3,3,0,3,0,0,0,2,2,0,1,2,1,1,1,0,0,0,1, +0,3,0,0,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, +3,3,3,3,3,3,2,1,2,2,3,3,3,3,2,0,2,0,0,0,2,2,0,0,2,1,3,3,0,0,1,1, +1,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0, +1,1,2,3,3,0,3,3,3,3,3,3,2,2,0,2,0,2,3,2,3,2,2,2,2,2,2,2,1,3,2,3, +2,0,2,1,2,2,2,2,1,1,2,2,1,2,2,1,2,0,0,2,1,1,0,2,1,0,0,1,0,0,0,1, +2,3,3,1,1,1,0,1,1,1,2,3,2,1,1,0,0,0,0,0,0,0,0,0,0,1,0,1,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, +3,3,3,2,2,2,3,2,3,2,2,1,3,3,3,0,2,1,2,0,2,1,0,0,1,1,1,1,1,0,0,1, +2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,2,0,1,0,0,0, +3,3,3,2,3,3,3,3,3,2,3,1,2,3,3,1,2,0,0,0,0,0,0,0,3,2,1,1,0,0,0,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,1,0,0,0,0,0,0, +3,3,3,2,2,3,3,2,1,1,1,1,1,3,3,0,3,1,0,0,1,1,0,0,3,1,2,1,0,0,0,0, +0,3,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, +3,3,3,2,2,3,2,2,2,3,2,1,1,3,3,0,3,0,0,0,0,1,0,0,3,1,1,2,0,0,0,1, +1,0,0,1,0,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,1, +1,1,1,3,3,0,3,3,3,3,3,2,2,2,1,2,0,2,1,2,2,1,1,0,1,2,2,2,2,2,2,2, +0,0,2,1,2,1,2,1,0,1,1,3,1,2,1,1,2,0,0,2,0,1,0,1,0,1,0,0,0,1,0,1, +3,3,3,1,3,3,3,0,1,1,0,2,2,3,1,0,3,0,0,0,1,0,0,0,1,0,0,1,0,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, +3,3,2,0,0,2,2,1,0,0,1,0,0,3,3,1,3,0,0,1,1,0,2,0,3,0,0,0,2,0,1,1, +0,1,2,0,1,2,2,0,2,2,2,2,1,0,2,1,1,0,2,0,2,1,2,0,0,0,0,0,0,0,0,0, +3,3,3,1,3,2,3,2,0,2,2,2,1,3,2,0,2,1,2,0,1,2,0,0,1,0,2,2,0,0,0,2, +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,1,1,0,1,0,0,0, +3,3,3,0,3,3,1,1,2,3,1,0,3,2,3,0,3,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0, +1,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,3,3,0,3,3,2,3,3,2,2,0,0,0,0,1,2,0,1,3,0,0,0,3,1,1,0,3,0,2, +2,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, +3,3,3,1,2,2,1,0,3,1,1,1,1,3,3,2,3,0,0,1,0,1,2,0,2,2,0,2,2,0,2,1, +0,2,2,1,1,1,1,0,2,1,1,0,1,1,1,1,2,1,2,1,2,0,1,0,1,0,0,0,0,0,0,0, +3,3,3,0,1,1,3,0,0,1,1,0,0,2,2,0,3,0,0,1,1,0,1,0,0,0,0,0,2,0,0,0, +0,3,1,0,1,0,1,0,2,0,0,1,0,1,0,1,1,1,2,1,1,0,2,0,0,0,0,0,0,0,0,0, +3,3,3,0,2,0,2,0,1,1,1,0,0,3,3,0,2,0,0,1,0,0,2,1,1,0,1,0,1,0,1,0, +0,2,0,1,2,0,2,0,2,1,1,0,1,0,2,1,1,0,2,1,1,0,1,0,0,0,1,1,0,0,0,0, +3,2,3,0,1,0,0,0,0,0,0,0,0,1,2,0,1,0,0,1,0,0,1,0,0,0,0,0,2,0,0,0, +0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,2,1,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,0,0,2,3,0,0,1,0,1,0,2,3,2,3,0,0,1,3,0,2,1,0,0,0,0,2,0,1,0, +0,2,1,0,0,1,1,0,2,1,0,0,1,0,0,1,1,0,1,1,2,0,1,0,0,0,0,1,0,0,0,0, +3,2,2,0,0,1,1,0,0,0,0,0,0,3,1,1,1,0,0,0,0,0,1,0,0,0,0,0,2,0,1,0, +0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0, +0,0,0,3,3,0,2,3,2,2,1,2,2,1,1,2,0,1,3,2,2,2,0,0,2,2,0,0,0,1,2,1, +3,0,2,1,1,0,1,1,1,0,1,2,2,2,1,1,2,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0, +0,1,1,2,3,0,3,3,3,2,2,2,2,1,0,1,0,1,0,1,2,2,0,0,2,2,1,3,1,1,2,1, +0,0,1,1,2,0,1,1,0,0,1,2,0,2,1,1,2,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0, +3,3,2,0,0,3,1,0,0,0,0,0,0,3,2,1,2,0,0,1,0,0,2,0,0,0,0,0,2,0,1,0, +0,2,1,1,0,0,1,0,1,2,0,0,1,1,0,0,2,1,1,1,1,0,2,0,0,0,0,0,0,0,0,0, +3,3,2,0,0,1,0,0,0,0,1,0,0,3,3,2,2,0,0,1,0,0,2,0,1,0,0,0,2,0,1,0, +0,0,1,1,0,0,2,0,2,1,0,0,1,1,2,1,2,0,2,1,2,1,1,1,0,0,1,1,0,0,0,0, +3,3,2,0,0,2,2,0,0,0,1,1,0,2,2,1,3,1,0,1,0,1,2,0,0,0,0,0,1,0,1,0, +0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,2,0,0,0,1,0,0,1,0,0,2,3,1,2,0,0,1,0,0,2,0,0,0,1,0,2,0,2,0, +0,1,1,2,2,1,2,0,2,1,1,0,0,1,1,0,1,1,1,1,2,1,1,0,0,0,0,0,0,0,0,0, +3,3,3,0,2,1,2,1,0,0,1,1,0,3,3,1,2,0,0,1,0,0,2,0,2,0,1,1,2,0,0,0, +0,0,1,1,1,1,2,0,1,1,0,1,1,1,1,0,0,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0, +3,3,3,0,2,2,3,2,0,0,1,0,0,2,3,1,0,0,0,0,0,0,2,0,2,0,0,0,2,0,0,0, +0,1,1,0,0,0,1,0,0,1,0,1,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0, +3,2,3,0,0,0,0,0,0,0,1,0,0,2,2,2,2,0,0,1,0,0,2,0,0,0,0,0,2,0,1,0, +0,0,2,1,1,0,1,0,2,1,1,0,0,1,1,2,1,0,2,0,2,0,1,0,0,0,2,0,0,0,0,0, +0,0,0,2,2,0,2,1,1,1,1,2,2,0,0,1,0,1,0,0,1,3,0,0,0,0,1,0,0,2,1,0, +0,0,1,0,1,0,0,0,0,0,2,1,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0, +2,0,0,2,3,0,2,3,1,2,2,0,2,0,0,2,0,2,1,1,1,2,1,0,0,1,2,1,1,2,1,0, +1,0,2,0,1,0,1,1,0,0,2,2,1,2,1,1,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,0,2,1,2,0,0,0,1,0,0,3,2,0,1,0,0,1,0,0,2,0,0,0,1,2,1,0,1,0, +0,0,0,0,1,0,1,0,0,1,0,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0, +0,0,0,2,2,0,2,2,1,1,0,1,1,1,1,1,0,0,1,2,1,1,1,0,1,0,0,0,1,1,1,1, +0,0,2,1,0,1,1,1,0,1,1,2,1,2,1,1,2,0,1,1,2,1,0,2,0,0,0,0,0,0,0,0, +3,2,2,0,0,2,0,0,0,0,0,0,0,2,2,0,2,0,0,1,0,0,2,0,0,0,0,0,2,0,0,0, +0,2,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0, +0,0,0,3,2,0,2,2,0,1,1,0,1,0,0,1,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0, +2,0,1,0,1,0,1,1,0,0,1,2,0,1,0,1,1,0,0,1,0,1,0,2,0,0,0,0,0,0,0,0, +2,2,2,0,1,1,0,0,0,1,0,0,0,1,2,0,1,0,0,1,0,0,1,0,0,0,0,1,2,0,1,0, +0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0, +2,2,2,2,1,0,1,1,1,0,0,0,0,1,2,0,0,1,0,0,0,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,2,0,0,0,0,0,0,0, +1,1,2,0,1,0,0,0,1,0,1,0,0,0,1,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,0,0,0,0,2,0,0,0,0,0,1, +0,0,1,2,2,0,2,1,2,1,1,2,2,0,0,0,0,1,0,0,1,1,0,0,2,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,0,0,0, +2,2,2,0,0,0,1,0,0,0,0,0,0,2,2,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, +0,0,0,0,1,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,1,1,0,0,0,1,0,0,0,1,0,0,0,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,0,0,0,0,0,0,0,0,0,0, +2,2,2,0,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,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,1,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,1,0,0,0,0,0,0,0,0,0,0,2,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, +) + +Latin5TurkishModel = { + 'char_to_order_map': Latin5_TurkishCharToOrderMap, + 'precedence_matrix': TurkishLangModel, + 'typical_positive_ratio': 0.970290, + 'keep_english_letter': True, + 'charset_name': "ISO-8859-9", + 'language': 'Turkish', +} diff --git a/env/lib/python2.7/site-packages/chardet/langturkishmodel.pyc b/env/lib/python2.7/site-packages/chardet/langturkishmodel.pyc new file mode 100644 index 0000000000000000000000000000000000000000..30e859a7356b9664a31e784d8f384cdc44481dd2 GIT binary patch literal 23431 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 SEo`fv__aktLkkuk`uks}DxnAf literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/latin1prober.py b/env/lib/python2.7/site-packages/chardet/latin1prober.py new file mode 100644 index 0000000..7d1e8c2 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/latin1prober.py @@ -0,0 +1,145 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import ProbingState + +FREQ_CAT_NUM = 4 + +UDF = 0 # undefined +OTH = 1 # other +ASC = 2 # ascii capital letter +ASS = 3 # ascii small letter +ACV = 4 # accent capital vowel +ACO = 5 # accent capital other +ASV = 6 # accent small vowel +ASO = 7 # accent small other +CLASS_NUM = 8 # total classes + +Latin1_CharToClass = ( + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 00 - 07 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 08 - 0F + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 10 - 17 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 18 - 1F + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 20 - 27 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 28 - 2F + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 30 - 37 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 38 - 3F + OTH, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 40 - 47 + ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 48 - 4F + ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 50 - 57 + ASC, ASC, ASC, OTH, OTH, OTH, OTH, OTH, # 58 - 5F + OTH, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 60 - 67 + ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 68 - 6F + ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 70 - 77 + ASS, ASS, ASS, OTH, OTH, OTH, OTH, OTH, # 78 - 7F + OTH, UDF, OTH, ASO, OTH, OTH, OTH, OTH, # 80 - 87 + OTH, OTH, ACO, OTH, ACO, UDF, ACO, UDF, # 88 - 8F + UDF, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 90 - 97 + OTH, OTH, ASO, OTH, ASO, UDF, ASO, ACO, # 98 - 9F + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A0 - A7 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A8 - AF + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B0 - B7 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B8 - BF + ACV, ACV, ACV, ACV, ACV, ACV, ACO, ACO, # C0 - C7 + ACV, ACV, ACV, ACV, ACV, ACV, ACV, ACV, # C8 - CF + ACO, ACO, ACV, ACV, ACV, ACV, ACV, OTH, # D0 - D7 + ACV, ACV, ACV, ACV, ACV, ACO, ACO, ACO, # D8 - DF + ASV, ASV, ASV, ASV, ASV, ASV, ASO, ASO, # E0 - E7 + ASV, ASV, ASV, ASV, ASV, ASV, ASV, ASV, # E8 - EF + ASO, ASO, ASV, ASV, ASV, ASV, ASV, OTH, # F0 - F7 + ASV, ASV, ASV, ASV, ASV, ASO, ASO, ASO, # F8 - FF +) + +# 0 : illegal +# 1 : very unlikely +# 2 : normal +# 3 : very likely +Latin1ClassModel = ( +# UDF OTH ASC ASS ACV ACO ASV ASO + 0, 0, 0, 0, 0, 0, 0, 0, # UDF + 0, 3, 3, 3, 3, 3, 3, 3, # OTH + 0, 3, 3, 3, 3, 3, 3, 3, # ASC + 0, 3, 3, 3, 1, 1, 3, 3, # ASS + 0, 3, 3, 3, 1, 2, 1, 2, # ACV + 0, 3, 3, 3, 3, 3, 3, 3, # ACO + 0, 3, 1, 3, 1, 1, 1, 3, # ASV + 0, 3, 1, 3, 1, 1, 3, 3, # ASO +) + + +class Latin1Prober(CharSetProber): + def __init__(self): + super(Latin1Prober, self).__init__() + self._last_char_class = None + self._freq_counter = None + self.reset() + + def reset(self): + self._last_char_class = OTH + self._freq_counter = [0] * FREQ_CAT_NUM + CharSetProber.reset(self) + + @property + def charset_name(self): + return "ISO-8859-1" + + @property + def language(self): + return "" + + def feed(self, byte_str): + byte_str = self.filter_with_english_letters(byte_str) + for c in byte_str: + char_class = Latin1_CharToClass[c] + freq = Latin1ClassModel[(self._last_char_class * CLASS_NUM) + + char_class] + if freq == 0: + self._state = ProbingState.NOT_ME + break + self._freq_counter[freq] += 1 + self._last_char_class = char_class + + return self.state + + def get_confidence(self): + if self.state == ProbingState.NOT_ME: + return 0.01 + + total = sum(self._freq_counter) + if total < 0.01: + confidence = 0.0 + else: + confidence = ((self._freq_counter[3] - self._freq_counter[1] * 20.0) + / total) + if confidence < 0.0: + confidence = 0.0 + # lower the confidence of latin1 so that other more accurate + # detector can take priority. + confidence = confidence * 0.73 + return confidence diff --git a/env/lib/python2.7/site-packages/chardet/latin1prober.pyc b/env/lib/python2.7/site-packages/chardet/latin1prober.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2b6fd20612be2c033565ab04549ce8ddec625e93 GIT binary patch literal 3621 zcmdT`&2k$>5bjy6el1%jaZC(F3T`T@j7dR?Km}r>B>Yq?hn1aFwvt+8?MPm;S}EEQ zV6ZtPx$_v@cnIEv6AwUf=j$FxcG)sei7seodb@jjdV2bAl=*YM^w!6}JZ#bUr-;^p zr%y9PA%>!usH@0Vq?mRncBq>nKLZ*smqM5PEX(>i3bW+rDa?^yApTmUFi(Do!UFko z6c))ZQ&=K@o^29wMqF46fTfop%5~P z+KR$5Jtulb^w3|VaGn~~3TiPzO;VMCnFpxtH3toC?hSgodSKaQu$hjMPQx^fj$AMz zOo|)^sAY<>3~~(e3<>~-7v61}D7k9YP5J;Y`xG<%5zQa9%kql`Rzati- zKOpcRGh-6Hz!fpHgRCG0@)}j%zr{!4$!66s)As-jhN43p-=TenoxuGDbO5y$$uha0 z8-Hua;p&6N47eRD2q=2l`3S z>J1a42cm1BQ*Eqwd3mbib`@_DkX{3}X1e{ge$-#x9Y%4un%v)s-~D!t6^GhP-m!SM zFTr}Jf8epQCT7YOlDephcqSfU+r=Yq1A#~Q`0%`UX~u^rTRHa&Kjhe;kAA&2yej4|(J56CJzm?`f~INaj# z@i^#mJoW-kH8MOcf&8MewR-*fwGUUXS~FO7W>$$0I5Y@qkTkm*ml~z)HF74-KgT+R zVeFdO+QgoUn@MNb?C3u5u{~@Sr!!CS)=xk<^8pnh=0}RY*NoqK{Fsg$sT+q@j*uCS z2ug}99cJj&l_Qr9Q9z2macJ;>>jVYFX_TjXiB(%*i53)~m_Nwez%rX=PnPKcZ(Bs1 zIH7EU*>1!UGp_@*qZlO5I$Kqs9zO80_T8}L$d0pD$R3Akx(_i9pbT!oe`^ky&A zvCULY!rI-9Mnlq+y=^#)>Ra2v=50ZPl>3`xuq}BetL!Ps6{-8(1EV1~Ks!ORF>LCI za_7|JYPVSif?m9urL(lP4mn5CWmcvtYF?Ev3#yFAMTO7X6k`|il#m_)u_1+(Xm=c) zWhn{NE`M-Gfku=$ctnGbxY;7w$(thqG}{#`idMUVF1vIY(w87|h$ao4SkxOY!ggTh zXvuzVNY|`)eq8$Xv)_Msev>O!e)g_l&y85`uXi5({M%pEM}OS3e!hfno>am`VA5*R zVOK&TX<`GxAu&DEjIIBBNjnO4($X_=`vRMXN^VWmJ_TnKfD6iXDsX+#Sy6d@XG*Hd znKil;xcqS`a9RXGw-*j$kkXf>9f}nCHLenK;PD0N@pj&846XnipFpq|&mOs{zJ|t> zcgd+@u9&U36}Pxhudah5{ro=zPAwa}b1_K#n~1EPCdUDn(m%1sxpLgWtgv9y^(8;iy+EkunQC_)o>y9VQjfss$O_=CN z_FcO_dT)*RBf7EWakKNdwRya)#CB$xA~|`(=ISSJKz+Igu&5TDoRd?hp3G(SGS8JF K{+pe6a_--IcU_tQ literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/mbcharsetprober.py b/env/lib/python2.7/site-packages/chardet/mbcharsetprober.py new file mode 100644 index 0000000..6256ecf --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/mbcharsetprober.py @@ -0,0 +1,91 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# Proofpoint, Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import ProbingState, MachineState + + +class MultiByteCharSetProber(CharSetProber): + """ + MultiByteCharSetProber + """ + + def __init__(self, lang_filter=None): + super(MultiByteCharSetProber, self).__init__(lang_filter=lang_filter) + self.distribution_analyzer = None + self.coding_sm = None + self._last_char = [0, 0] + + def reset(self): + super(MultiByteCharSetProber, self).reset() + if self.coding_sm: + self.coding_sm.reset() + if self.distribution_analyzer: + self.distribution_analyzer.reset() + self._last_char = [0, 0] + + @property + def charset_name(self): + raise NotImplementedError + + @property + def language(self): + raise NotImplementedError + + def feed(self, byte_str): + for i in range(len(byte_str)): + coding_state = self.coding_sm.next_state(byte_str[i]) + if coding_state == MachineState.ERROR: + self.logger.debug('%s %s prober hit error at byte %s', + self.charset_name, self.language, i) + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + char_len = self.coding_sm.get_current_charlen() + if i == 0: + self._last_char[1] = byte_str[0] + self.distribution_analyzer.feed(self._last_char, char_len) + else: + self.distribution_analyzer.feed(byte_str[i - 1:i + 1], + char_len) + + self._last_char[0] = byte_str[-1] + + if self.state == ProbingState.DETECTING: + if (self.distribution_analyzer.got_enough_data() and + (self.get_confidence() > self.SHORTCUT_THRESHOLD)): + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + return self.distribution_analyzer.get_confidence() diff --git a/env/lib/python2.7/site-packages/chardet/mbcharsetprober.pyc b/env/lib/python2.7/site-packages/chardet/mbcharsetprober.pyc new file mode 100644 index 0000000000000000000000000000000000000000..725074b4b7ce6907da8555cdb543d4bb049fd223 GIT binary patch literal 2675 zcmb_eTW=dx5T0FcoJ(_0lQ!Za2MOT^((r-=Qd>b2Ln9HVT01}^p(ERS;;g$~JG;lI zLCFj0BmaZH#czNg0N*!jhZg#Ru)SwIb1t*r`OeH7m;P8<*m?Bp^Nx%^CH#JYmQzG{ zJV`|Qo}7B((e@?rrC*ZMlJo;P4bWQ>>&clXQ6R5GZbY7+&PX&PjcOTAVh^H9;g%rw z&s$l;x@Xy-ZL_M+?nMaNaoTOTmb2P%)asnasVzFTFym;HxcJGXvu}8~1x`;-(DDX^ z72*ZlQ(vN4ZsHYo5D+~O0-Y@jU=uC+XVomg!<-{_PMepgtjdCfjp`hoS0END_`DsB z4s{5Hja=@d<&Pm89#5|DMqheB1>FNz9!W*70k}c|br|-g>uW!N3Yes?y1N6Jw9>9Q zixX$F7^YNbA>0f^J{sCA8ptjBx>s`XIG#6G{~4E{oeE7Y|a?N?Xb0Pd0P& z80icmoPf#uZh@;x z9@j?J-TwC5?8&Vg>e)XSUWSa1kI-`B6>r;{$G5{+VY}t;dl>)V?*>yqTdyS9$K(kL zSY>ajH1-0?YB~_SHUQS~jF|<|WR@pYFPJ2pkW3aNQp+p=homPY#*ox#Fo!&gY4N}e z*hR~!h_?Y2R<+%7K|c05g8;zA&l=thg;FoFYXc+ofjjIE6Wh0`vr#R}2HDinYI=^3 z(xk1v{gk*!qxk;;Z^&veeQ-P_rpTz(wVy+u03$vgD9>1lWLR+#sw^X2#D1@f(}Tb}Ic zqCH8)yT~$9U(a_SKg=t5iW*Qkk6pzwN-Hf_X`{GfOmk6hjrdP|s@qtk^)17(T33RZ z*i>^;D^+S=I+OF_2zkglwHAiQq2pO6gKifEj_;3bd(;h=p@l0H%qg8yKW>_%nyQ5( zRS%mD_A;QpIzFi%n8T*JX*9nKn~vEAG^R7kG9;T;O2T4(YN^n&duDBb2+vs!_6M&D-|h z@s|BHe;xLwxBiwo!D_%z!ozzJA;X>2wLBN4w*q_W^&+I#Q?#N^c=aml`uP52al`$| zBQ>T!h(-xb-nYg?gN`vFb-l$xR&HH}$i_A7E?)~Y5~VNtn|am#-{r|f_y8?u%#=%I zf3ZA2w-T%b^Y7L5pO^mMdgIOwF|$Yzn~wUqW`HJ*UU<_)r&K&FID7m)QSyJos<&18 E3){0EYXATM literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/mbcsgroupprober.py b/env/lib/python2.7/site-packages/chardet/mbcsgroupprober.py new file mode 100644 index 0000000..530abe7 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/mbcsgroupprober.py @@ -0,0 +1,54 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# Proofpoint, Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetgroupprober import CharSetGroupProber +from .utf8prober import UTF8Prober +from .sjisprober import SJISProber +from .eucjpprober import EUCJPProber +from .gb2312prober import GB2312Prober +from .euckrprober import EUCKRProber +from .cp949prober import CP949Prober +from .big5prober import Big5Prober +from .euctwprober import EUCTWProber + + +class MBCSGroupProber(CharSetGroupProber): + def __init__(self, lang_filter=None): + super(MBCSGroupProber, self).__init__(lang_filter=lang_filter) + self.probers = [ + UTF8Prober(), + SJISProber(), + EUCJPProber(), + GB2312Prober(), + EUCKRProber(), + CP949Prober(), + Big5Prober(), + EUCTWProber() + ] + self.reset() diff --git a/env/lib/python2.7/site-packages/chardet/mbcsgroupprober.pyc b/env/lib/python2.7/site-packages/chardet/mbcsgroupprober.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e88e6738e154e87dc2f4dc5552358b3324edcdc3 GIT binary patch literal 1291 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 bl5vjtC5|c17M;%}=abl{cKW0~|E~BS($$G+ literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/sbcharsetprober.py b/env/lib/python2.7/site-packages/chardet/sbcharsetprober.py new file mode 100644 index 0000000..0adb51d --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/sbcharsetprober.py @@ -0,0 +1,132 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import CharacterCategory, ProbingState, SequenceLikelihood + + +class SingleByteCharSetProber(CharSetProber): + SAMPLE_SIZE = 64 + SB_ENOUGH_REL_THRESHOLD = 1024 # 0.25 * SAMPLE_SIZE^2 + POSITIVE_SHORTCUT_THRESHOLD = 0.95 + NEGATIVE_SHORTCUT_THRESHOLD = 0.05 + + def __init__(self, model, reversed=False, name_prober=None): + super(SingleByteCharSetProber, self).__init__() + self._model = model + # TRUE if we need to reverse every pair in the model lookup + self._reversed = reversed + # Optional auxiliary prober for name decision + self._name_prober = name_prober + self._last_order = None + self._seq_counters = None + self._total_seqs = None + self._total_char = None + self._freq_char = None + self.reset() + + def reset(self): + super(SingleByteCharSetProber, self).reset() + # char order of last character + self._last_order = 255 + self._seq_counters = [0] * SequenceLikelihood.get_num_categories() + self._total_seqs = 0 + self._total_char = 0 + # characters that fall in our sampling range + self._freq_char = 0 + + @property + def charset_name(self): + if self._name_prober: + return self._name_prober.charset_name + else: + return self._model['charset_name'] + + @property + def language(self): + if self._name_prober: + return self._name_prober.language + else: + return self._model.get('language') + + def feed(self, byte_str): + if not self._model['keep_english_letter']: + byte_str = self.filter_international_words(byte_str) + if not byte_str: + return self.state + char_to_order_map = self._model['char_to_order_map'] + for i, c in enumerate(byte_str): + # XXX: Order is in range 1-64, so one would think we want 0-63 here, + # but that leads to 27 more test failures than before. + order = char_to_order_map[c] + # XXX: This was SYMBOL_CAT_ORDER before, with a value of 250, but + # CharacterCategory.SYMBOL is actually 253, so we use CONTROL + # to make it closer to the original intent. The only difference + # is whether or not we count digits and control characters for + # _total_char purposes. + if order < CharacterCategory.CONTROL: + self._total_char += 1 + if order < self.SAMPLE_SIZE: + self._freq_char += 1 + if self._last_order < self.SAMPLE_SIZE: + self._total_seqs += 1 + if not self._reversed: + i = (self._last_order * self.SAMPLE_SIZE) + order + model = self._model['precedence_matrix'][i] + else: # reverse the order of the letters in the lookup + i = (order * self.SAMPLE_SIZE) + self._last_order + model = self._model['precedence_matrix'][i] + self._seq_counters[model] += 1 + self._last_order = order + + charset_name = self._model['charset_name'] + if self.state == ProbingState.DETECTING: + if self._total_seqs > self.SB_ENOUGH_REL_THRESHOLD: + confidence = self.get_confidence() + if confidence > self.POSITIVE_SHORTCUT_THRESHOLD: + self.logger.debug('%s confidence = %s, we have a winner', + charset_name, confidence) + self._state = ProbingState.FOUND_IT + elif confidence < self.NEGATIVE_SHORTCUT_THRESHOLD: + self.logger.debug('%s confidence = %s, below negative ' + 'shortcut threshhold %s', charset_name, + confidence, + self.NEGATIVE_SHORTCUT_THRESHOLD) + self._state = ProbingState.NOT_ME + + return self.state + + def get_confidence(self): + r = 0.01 + if self._total_seqs > 0: + r = ((1.0 * self._seq_counters[SequenceLikelihood.POSITIVE]) / + self._total_seqs / self._model['typical_positive_ratio']) + r = r * self._freq_char / self._total_char + if r >= 1.0: + r = 0.99 + return r diff --git a/env/lib/python2.7/site-packages/chardet/sbcharsetprober.pyc b/env/lib/python2.7/site-packages/chardet/sbcharsetprober.pyc new file mode 100644 index 0000000000000000000000000000000000000000..877d9d5a0dc24fae26145f253162b130e49d3c67 GIT binary patch literal 3554 zcmb_e-ESL35T8BUN$h;MO`MeQA>2a2s4eLW0;HC-O`IlD>Xfrn)ChEP?9KU{v(LF( zHw`3D=|2Jg0P0KsCti^HKtbXa34Sx{e2JD9;`7bz&d$!x*Un7p&+**l+dn^U(BPNC z_YU4<380C;qL8SgXhV_WxkI5tofK`PsFS9RG<7nxk-=Juw4yCV%``nDIwX3$F+|M_ zRZBx)6)1ob12Yb=(5lB(Z63zarjAQ|sJS>m*BeI13w5LYDBd$;z%o_P^{WO*GYLdh z@AP%Ip;v=#9R{r^YMM)o22rT*?HPTB{Tbcvfi7tQXkwM1(T2lHLLI0Eb)W~-(GWc+ zssK5{YCxxrENLKzL_cg9mFe)&bc~uKLN-p#tPCc|t(Hb{Sa62{rHTA4`MsL=fBKPs z&*vM!@(QsP7VstkfWcqUJ`Cwl+hKF6eVKbH+IM)tOVd8a7-U!t9tj*M*uu8=my5~3_H>5L`@xFSO4QYcHTS}LV!SAB>R24_C3?qeMEx$DoLCAInR>|hGxG)_#N?R6R?J&? z%JRiJ(WWHwF-UZ{C3q_ui+n5@pMOfQ5~d^|`2wRk)9KCig5HhIeh@ZqbRVsUH=oS$ zIZbVjzsV+JaHLi4)83xTmiQQNQUD+|rLqnlb@DVg%=ta`=+~IM#-oTkcAJEruLzcF zXV@_X#v%f(pW#(IfLHB6yjqoOQwjbCZ;lu$v9(;bk+{#jz$3PS%W}xY@wM@~{f^hL z*DKJ8%NNXL@4FKW@&FPNF5k!VG8v2V8Qz3XgUMj788(=6Y$^x%1*W(Hz!3^RP7MZa zMO8-0MV+lSIck}{BC$8{kA$F@#O3&OXBZ3voWC~AdLD1WkwDNT_ZmGoLf)uH8!lIL z2)#}z!?7FIyMDj!YYA|x2xm4?#IPIT!Sh#$k66NcS|K(t8c#AVLr?!Ah;L~Zzk5aBI&_et1EerSbed)lGPIu=T!3x3 z{(!lp+qeTM`rN@?VD6wn6bus+TvI}TDycFrN3?G&_CM#wNa9iu1r%_;oq~(R$Ab(5A=IiH~ z$fkI&Q}0Qom!)2;8@kDb8h8^2Pvuf3AA;M}q}YhMTY;<=Zx^p7*NeNl*s4F##d>i! z=yp*azI+4WrVgXsVpsch6M#NxMX_o0P0_Sa99pd?Y=U3uE$p`U=536&f)Em;m;rXN zFY2P^?4m9uw(3c5!SSw@MtvteE%WH0JVZC;03#Xqj@_l%MZ)sC+_I)YZOKa1SzWGSNtCeFYf>H{j>Q1r<2cs=#P2Bb;j)Vf(Amh7bO8lyNA#WBA@9CFMgjd zaeUhHErpyF5w9J^jobhmq#R*VH>I?T594!kkoy66!xWV8Aq2 zQra=k_I2D%_CxJ?ZV?3T6$YFe+)n@`xR&Z+qFrfgIM$`35k_dn(50F^Tjixf-edw6 z<3uGH{l8u>4ThKTO0PErz2tH76WLsTI6s`7tB41rwLQ})y4Ylu;DnM$GI2T7q#2V2 X?K}k)tK6~%{pvjym?giU-c9`jefZU# literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/sbcsgroupprober.py b/env/lib/python2.7/site-packages/chardet/sbcsgroupprober.py new file mode 100644 index 0000000..98e95dc --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/sbcsgroupprober.py @@ -0,0 +1,73 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetgroupprober import CharSetGroupProber +from .sbcharsetprober import SingleByteCharSetProber +from .langcyrillicmodel import (Win1251CyrillicModel, Koi8rModel, + Latin5CyrillicModel, MacCyrillicModel, + Ibm866Model, Ibm855Model) +from .langgreekmodel import Latin7GreekModel, Win1253GreekModel +from .langbulgarianmodel import Latin5BulgarianModel, Win1251BulgarianModel +# from .langhungarianmodel import Latin2HungarianModel, Win1250HungarianModel +from .langthaimodel import TIS620ThaiModel +from .langhebrewmodel import Win1255HebrewModel +from .hebrewprober import HebrewProber +from .langturkishmodel import Latin5TurkishModel + + +class SBCSGroupProber(CharSetGroupProber): + def __init__(self): + super(SBCSGroupProber, self).__init__() + self.probers = [ + SingleByteCharSetProber(Win1251CyrillicModel), + SingleByteCharSetProber(Koi8rModel), + SingleByteCharSetProber(Latin5CyrillicModel), + SingleByteCharSetProber(MacCyrillicModel), + SingleByteCharSetProber(Ibm866Model), + SingleByteCharSetProber(Ibm855Model), + SingleByteCharSetProber(Latin7GreekModel), + SingleByteCharSetProber(Win1253GreekModel), + SingleByteCharSetProber(Latin5BulgarianModel), + SingleByteCharSetProber(Win1251BulgarianModel), + # TODO: Restore Hungarian encodings (iso-8859-2 and windows-1250) + # after we retrain model. + # SingleByteCharSetProber(Latin2HungarianModel), + # SingleByteCharSetProber(Win1250HungarianModel), + SingleByteCharSetProber(TIS620ThaiModel), + SingleByteCharSetProber(Latin5TurkishModel), + ] + hebrew_prober = HebrewProber() + logical_hebrew_prober = SingleByteCharSetProber(Win1255HebrewModel, + False, hebrew_prober) + visual_hebrew_prober = SingleByteCharSetProber(Win1255HebrewModel, True, + hebrew_prober) + hebrew_prober.set_model_probers(logical_hebrew_prober, visual_hebrew_prober) + self.probers.extend([hebrew_prober, logical_hebrew_prober, + visual_hebrew_prober]) + + self.reset() diff --git a/env/lib/python2.7/site-packages/chardet/sbcsgroupprober.pyc b/env/lib/python2.7/site-packages/chardet/sbcsgroupprober.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b70e82381675f8ec459d5fbbecd4c2fb81db0212 GIT binary patch literal 1884 zcmb_c%WfMt6g`}=o|Y_Gwq>V47u^YH62}STc+nPx4KxYb1jWd05N-w|iIK-4N5Tx1 z)PS>c|D`|F&*-i{(0fUZVz)q7k;JR}B=6&p;ot4%SKt2eW`flxr2p?}6@L<$(oaAG zMnDP(mILSjCWH*V971ovR3IxbRmdt#4YCGPhpfXiAR91E$foz+fZl{@LAGGpkZrH6 zKySfxAUiN!$gbB`p|@drkUcNgpm$()A$Pr8hu(wfL-xJgfZm5WfIJ|%2_^7WV7iIl zfg9kByoYHEqd}VrO9hbu6Wb$lc9G;GWuN8q<>KdjK32K6?UQYkW;3l$udG^mtsJTx zyi4SDnjJkJ9-Up~sn+S_<$S8NZIa=~d3ut2afig85}RhjyKY_5zf2}~m7An|F*Ya1 z$3D1}heIb10@#9D57fI?9Soh7JHGHndx%zO+)}kP0NESXlxv`c2IWID{uT6}igh27?}Kl(#^usgUGxC!wwaA}Zcx738p zT<+mIz;(!Z3)dX34!G1dbdu=!u7wf( zJ}s92HVjA)M~V~T4y{=nF4Dz=@iNuZ2idQ`=tu7lCv@Yd%C7&5@uZmX_4mm>TwFyA z*ZZ^zCJ;M8L;UAkX^0-_tD@y>UC|NEV8HENwLVLXievX2#N3XhCedyEDb3H2D-Zi? zS_O}{Dqan~;1sw5E|mIwtG0-=usl#I+FO0m4j^uJI>}~})qCb<`2Vo63ZEc=a#^r(T)sQrVGS@hbat@xz<3)&&Sl7IKXq?#fMcsyuJY#N-Gk_M@o$Uw=PKPz h_?+E#qy2^spkaRZC7n=kqr0Lj9)^9<516BG_z!Q0m1Y0{ literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/sjisprober.py b/env/lib/python2.7/site-packages/chardet/sjisprober.py new file mode 100644 index 0000000..9e29623 --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/sjisprober.py @@ -0,0 +1,92 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import SJISDistributionAnalysis +from .jpcntx import SJISContextAnalysis +from .mbcssm import SJIS_SM_MODEL +from .enums import ProbingState, MachineState + + +class SJISProber(MultiByteCharSetProber): + def __init__(self): + super(SJISProber, self).__init__() + self.coding_sm = CodingStateMachine(SJIS_SM_MODEL) + self.distribution_analyzer = SJISDistributionAnalysis() + self.context_analyzer = SJISContextAnalysis() + self.reset() + + def reset(self): + super(SJISProber, self).reset() + self.context_analyzer.reset() + + @property + def charset_name(self): + return self.context_analyzer.charset_name + + @property + def language(self): + return "Japanese" + + def feed(self, byte_str): + for i in range(len(byte_str)): + coding_state = self.coding_sm.next_state(byte_str[i]) + if coding_state == MachineState.ERROR: + self.logger.debug('%s %s prober hit error at byte %s', + self.charset_name, self.language, i) + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + char_len = self.coding_sm.get_current_charlen() + if i == 0: + self._last_char[1] = byte_str[0] + self.context_analyzer.feed(self._last_char[2 - char_len:], + char_len) + self.distribution_analyzer.feed(self._last_char, char_len) + else: + self.context_analyzer.feed(byte_str[i + 1 - char_len:i + 3 + - char_len], char_len) + self.distribution_analyzer.feed(byte_str[i - 1:i + 1], + char_len) + + self._last_char[0] = byte_str[-1] + + if self.state == ProbingState.DETECTING: + if (self.context_analyzer.got_enough_data() and + (self.get_confidence() > self.SHORTCUT_THRESHOLD)): + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + context_conf = self.context_analyzer.get_confidence() + distrib_conf = self.distribution_analyzer.get_confidence() + return max(context_conf, distrib_conf) diff --git a/env/lib/python2.7/site-packages/chardet/sjisprober.pyc b/env/lib/python2.7/site-packages/chardet/sjisprober.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0446c654207b9bdf4cd448efdc870e3dc254752d GIT binary patch literal 2947 zcmb_eZEqVz5S}}~#d&F(gd`0hH4&|32}&!05JCmfI)SDlPIY!cwS-QNZ{wVMcXsdA zC_$}+1RwbyNd3ld<2&#?vvwL3K0)l;x!sw$-Pvbec1wRO&F_5v+q1q*epE*pp~Zei8Xu`-QlFNQg?A)whCucaXAHc-6g4Jp)aLNiNpNvf&)Hs|23Bx#xZ5ReL zASjbv2kEO@!Xgb6w{@_h3!Vsjbj6RDh&J2n`h~jTT%wERrZCpIi&GaSId0%BN{Wxr zyKB?&-Elm=b2N#Q=uYFh}_8%%lw^YI0%XdHu?>7$VSj#W=v-qhJ1lLXK1_n&#Me8mz;RFaoS9bdK}d4+*y z)374XeaTZ*s>%@QsrfaWQx38TxmQN+&C76stZ-4DyjYuky`*3NDimM4EM8VIwBbrv zaGhECs?0f2D7fyQvm;g2YcFe6KQw9(%)S{v^*$hBp!xW~oJC(kmRt zB{Wm&*qA7IQ>1CG7UJE#&R(;#-}>6pu))ZNCL2u#Ct=is4%19m8D+uA)pUzOKwo(c%y$UqQ{giRnH?D?R}c zZ_C@zlD&qaUDh5ci};GS>D9a~e-m}_9q*dI;;(|g?yb5)MBlPC(Tev$7-o2o?8qyZ zw@5QL^aZitG9HODI|sGKv#1B}ktpJvGVPr<_;wgkq3`Y$A>PM|(DVRQ#ub3V^`D^? z3`0=>8a&z5L7`UmFm&+}rlV+*7@X2n(1S^}kS{pQ?b(H(CDgjLHx_E|KOeTt(OYN* zF{yg>TD`oCe|@LbVDxENrbpBB$R%(9zGxu2YlJ3W>TY*>&u|w8p79s%6z--$FoxrP wW>4MKf@4fy;3h)XX@;3>k`|htn$db%U(t3I*82|bFW$w1y6x-U?7va^8`W4)?*IS* literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/universaldetector.py b/env/lib/python2.7/site-packages/chardet/universaldetector.py new file mode 100644 index 0000000..7b4e92d --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/universaldetector.py @@ -0,0 +1,286 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### +""" +Module containing the UniversalDetector detector class, which is the primary +class a user of ``chardet`` should use. + +:author: Mark Pilgrim (initial port to Python) +:author: Shy Shalom (original C code) +:author: Dan Blanchard (major refactoring for 3.0) +:author: Ian Cordasco +""" + + +import codecs +import logging +import re + +from .charsetgroupprober import CharSetGroupProber +from .enums import InputState, LanguageFilter, ProbingState +from .escprober import EscCharSetProber +from .latin1prober import Latin1Prober +from .mbcsgroupprober import MBCSGroupProber +from .sbcsgroupprober import SBCSGroupProber + + +class UniversalDetector(object): + """ + The ``UniversalDetector`` class underlies the ``chardet.detect`` function + and coordinates all of the different charset probers. + + To get a ``dict`` containing an encoding and its confidence, you can simply + run: + + .. code:: + + u = UniversalDetector() + u.feed(some_bytes) + u.close() + detected = u.result + + """ + + MINIMUM_THRESHOLD = 0.20 + HIGH_BYTE_DETECTOR = re.compile(b'[\x80-\xFF]') + ESC_DETECTOR = re.compile(b'(\033|~{)') + WIN_BYTE_DETECTOR = re.compile(b'[\x80-\x9F]') + ISO_WIN_MAP = {'iso-8859-1': 'Windows-1252', + 'iso-8859-2': 'Windows-1250', + 'iso-8859-5': 'Windows-1251', + 'iso-8859-6': 'Windows-1256', + 'iso-8859-7': 'Windows-1253', + 'iso-8859-8': 'Windows-1255', + 'iso-8859-9': 'Windows-1254', + 'iso-8859-13': 'Windows-1257'} + + def __init__(self, lang_filter=LanguageFilter.ALL): + self._esc_charset_prober = None + self._charset_probers = [] + self.result = None + self.done = None + self._got_data = None + self._input_state = None + self._last_char = None + self.lang_filter = lang_filter + self.logger = logging.getLogger(__name__) + self._has_win_bytes = None + self.reset() + + def reset(self): + """ + Reset the UniversalDetector and all of its probers back to their + initial states. This is called by ``__init__``, so you only need to + call this directly in between analyses of different documents. + """ + self.result = {'encoding': None, 'confidence': 0.0, 'language': None} + self.done = False + self._got_data = False + self._has_win_bytes = False + self._input_state = InputState.PURE_ASCII + self._last_char = b'' + if self._esc_charset_prober: + self._esc_charset_prober.reset() + for prober in self._charset_probers: + prober.reset() + + def feed(self, byte_str): + """ + Takes a chunk of a document and feeds it through all of the relevant + charset probers. + + After calling ``feed``, you can check the value of the ``done`` + attribute to see if you need to continue feeding the + ``UniversalDetector`` more data, or if it has made a prediction + (in the ``result`` attribute). + + .. note:: + You should always call ``close`` when you're done feeding in your + document if ``done`` is not already ``True``. + """ + if self.done: + return + + if not len(byte_str): + return + + if not isinstance(byte_str, bytearray): + byte_str = bytearray(byte_str) + + # First check for known BOMs, since these are guaranteed to be correct + if not self._got_data: + # If the data starts with BOM, we know it is UTF + if byte_str.startswith(codecs.BOM_UTF8): + # EF BB BF UTF-8 with BOM + self.result = {'encoding': "UTF-8-SIG", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith((codecs.BOM_UTF32_LE, + codecs.BOM_UTF32_BE)): + # FF FE 00 00 UTF-32, little-endian BOM + # 00 00 FE FF UTF-32, big-endian BOM + self.result = {'encoding': "UTF-32", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith(b'\xFE\xFF\x00\x00'): + # FE FF 00 00 UCS-4, unusual octet order BOM (3412) + self.result = {'encoding': "X-ISO-10646-UCS-4-3412", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith(b'\x00\x00\xFF\xFE'): + # 00 00 FF FE UCS-4, unusual octet order BOM (2143) + self.result = {'encoding': "X-ISO-10646-UCS-4-2143", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith((codecs.BOM_LE, codecs.BOM_BE)): + # FF FE UTF-16, little endian BOM + # FE FF UTF-16, big endian BOM + self.result = {'encoding': "UTF-16", + 'confidence': 1.0, + 'language': ''} + + self._got_data = True + if self.result['encoding'] is not None: + self.done = True + return + + # If none of those matched and we've only see ASCII so far, check + # for high bytes and escape sequences + if self._input_state == InputState.PURE_ASCII: + if self.HIGH_BYTE_DETECTOR.search(byte_str): + self._input_state = InputState.HIGH_BYTE + elif self._input_state == InputState.PURE_ASCII and \ + self.ESC_DETECTOR.search(self._last_char + byte_str): + self._input_state = InputState.ESC_ASCII + + self._last_char = byte_str[-1:] + + # If we've seen escape sequences, use the EscCharSetProber, which + # uses a simple state machine to check for known escape sequences in + # HZ and ISO-2022 encodings, since those are the only encodings that + # use such sequences. + if self._input_state == InputState.ESC_ASCII: + if not self._esc_charset_prober: + self._esc_charset_prober = EscCharSetProber(self.lang_filter) + if self._esc_charset_prober.feed(byte_str) == ProbingState.FOUND_IT: + self.result = {'encoding': + self._esc_charset_prober.charset_name, + 'confidence': + self._esc_charset_prober.get_confidence(), + 'language': + self._esc_charset_prober.language} + self.done = True + # If we've seen high bytes (i.e., those with values greater than 127), + # we need to do more complicated checks using all our multi-byte and + # single-byte probers that are left. The single-byte probers + # use character bigram distributions to determine the encoding, whereas + # the multi-byte probers use a combination of character unigram and + # bigram distributions. + elif self._input_state == InputState.HIGH_BYTE: + if not self._charset_probers: + self._charset_probers = [MBCSGroupProber(self.lang_filter)] + # If we're checking non-CJK encodings, use single-byte prober + if self.lang_filter & LanguageFilter.NON_CJK: + self._charset_probers.append(SBCSGroupProber()) + self._charset_probers.append(Latin1Prober()) + for prober in self._charset_probers: + if prober.feed(byte_str) == ProbingState.FOUND_IT: + self.result = {'encoding': prober.charset_name, + 'confidence': prober.get_confidence(), + 'language': prober.language} + self.done = True + break + if self.WIN_BYTE_DETECTOR.search(byte_str): + self._has_win_bytes = True + + def close(self): + """ + Stop analyzing the current document and come up with a final + prediction. + + :returns: The ``result`` attribute, a ``dict`` with the keys + `encoding`, `confidence`, and `language`. + """ + # Don't bother with checks if we're already done + if self.done: + return self.result + self.done = True + + if not self._got_data: + self.logger.debug('no data received!') + + # Default to ASCII if it is all we've seen so far + elif self._input_state == InputState.PURE_ASCII: + self.result = {'encoding': 'ascii', + 'confidence': 1.0, + 'language': ''} + + # If we have seen non-ASCII, return the best that met MINIMUM_THRESHOLD + elif self._input_state == InputState.HIGH_BYTE: + prober_confidence = None + max_prober_confidence = 0.0 + max_prober = None + for prober in self._charset_probers: + if not prober: + continue + prober_confidence = prober.get_confidence() + if prober_confidence > max_prober_confidence: + max_prober_confidence = prober_confidence + max_prober = prober + if max_prober and (max_prober_confidence > self.MINIMUM_THRESHOLD): + charset_name = max_prober.charset_name + lower_charset_name = max_prober.charset_name.lower() + confidence = max_prober.get_confidence() + # Use Windows encoding name instead of ISO-8859 if we saw any + # extra Windows-specific bytes + if lower_charset_name.startswith('iso-8859'): + if self._has_win_bytes: + charset_name = self.ISO_WIN_MAP.get(lower_charset_name, + charset_name) + self.result = {'encoding': charset_name, + 'confidence': confidence, + 'language': max_prober.language} + + # Log all prober confidences if none met MINIMUM_THRESHOLD + if self.logger.getEffectiveLevel() == logging.DEBUG: + if self.result['encoding'] is None: + self.logger.debug('no probers hit minimum threshold') + for group_prober in self._charset_probers: + if not group_prober: + continue + if isinstance(group_prober, CharSetGroupProber): + for prober in group_prober.probers: + self.logger.debug('%s %s confidence = %s', + prober.charset_name, + prober.language, + prober.get_confidence()) + else: + self.logger.debug('%s %s confidence = %s', + prober.charset_name, + prober.language, + prober.get_confidence()) + return self.result diff --git a/env/lib/python2.7/site-packages/chardet/universaldetector.pyc b/env/lib/python2.7/site-packages/chardet/universaldetector.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d47789d72d8c4f0851ce598961c81c11d9acc53f GIT binary patch literal 7031 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 N-~%tR)4*}E{{_;1Ex-T( literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/chardet/utf8prober.py b/env/lib/python2.7/site-packages/chardet/utf8prober.py new file mode 100644 index 0000000..6c3196c --- /dev/null +++ b/env/lib/python2.7/site-packages/chardet/utf8prober.py @@ -0,0 +1,82 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import ProbingState, MachineState +from .codingstatemachine import CodingStateMachine +from .mbcssm import UTF8_SM_MODEL + + + +class UTF8Prober(CharSetProber): + ONE_CHAR_PROB = 0.5 + + def __init__(self): + super(UTF8Prober, self).__init__() + self.coding_sm = CodingStateMachine(UTF8_SM_MODEL) + self._num_mb_chars = None + self.reset() + + def reset(self): + super(UTF8Prober, self).reset() + self.coding_sm.reset() + self._num_mb_chars = 0 + + @property + def charset_name(self): + return "utf-8" + + @property + def language(self): + return "" + + def feed(self, byte_str): + for c in byte_str: + coding_state = self.coding_sm.next_state(c) + if coding_state == MachineState.ERROR: + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + if self.coding_sm.get_current_charlen() >= 2: + self._num_mb_chars += 1 + + if self.state == ProbingState.DETECTING: + if self.get_confidence() > self.SHORTCUT_THRESHOLD: + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + unlike = 0.99 + if self._num_mb_chars < 6: + unlike *= self.ONE_CHAR_PROB ** self._num_mb_chars + return 1.0 - unlike + else: + return unlike diff --git a/env/lib/python2.7/site-packages/chardet/utf8prober.pyc b/env/lib/python2.7/site-packages/chardet/utf8prober.pyc new file mode 100644 index 0000000000000000000000000000000000000000..40f90f801def06b5d14834028bc1ed820bd350c0 GIT binary patch literal 2396 zcmb_eTW=dh6h5=NzU9(HNs9m>E;*wL&5s-= z{WXvLJ0=l7iiSjqqOKx^wMRpb5}&$0B>{Bv{-5Ny|3hPx?5-TQkkYb)m<5@2YZLymj@7t{IVSA1V)^R!ri(X-6W2e`D z7N=G=+}BI^`Z$_$O&G2u?{yxnnQ+JKv^SdD#SC*}$0@q>9||Ax$ak4og4^tM*8>o2 zJbTRuU=olmQRIt9j80jW!E{+6_8M%}iP!A04(k;bI^e;--`4x^83UL%c;xq(6#OVU zW1KuX^njKsd@2HZA-jf^5{^v;^sp)%ycLS0t$GbIN{}`l*-T?r0A^$2G%k$M(53@y zgS9V!nLJ?)M6Ki0N)${wPE4|I`W%g1#AP?4B%{?)JX+Zw z$HQnP{bq0Y>G!LU5ZU7LJuVK`MiSgRqf-q)KH-tWL{iIYLDkgjz^w4$zW@UO{3%Kt zAixp;pHLE~6+>tp5a=?9%w{ozI*k+%k2Esu8oYt%+dOh;gE#Y6z97&NWT3~kPE5>U z6JxTn=JbQ@n#_?hkpSAlq`k!6W!X6roV-hj|HCW>dy2?)S_IgKy>u|{4eaMUpIQT> zfD49z^ea!E|4e6!HlF@O=bq#`N1J2JHKFL-r!%e!E)k!OJj(8)LJmuk0cF}f;o@+| z6*+z?$JN)5YjW&LiN(*Lnm9N|CCXlcJ2;$0!GGbISvq-1ESH~ek#}<wb$olbn>cl-lQo$O_@4QnQnDL>;mOS?Y-89+3Lv0VdsJF6wACl;8f_3v&^Ra=E@w}RLa103~8?D z3LDK%v(edVJuYrcKRQki;>f0bTcFQ|n{C}`>~&0MQ#X0By-`Q(By&ao{%K*^vW$Bf zHyM|TlU4&Q|G(IzUmaK*p=svtGa)XwC2k;dD!8P#)H~jix}}y}#sf}Z-{2wLmScS` zedAEBwj-kKF0u|`obE5*W0r^$PSM*TlQ2SqfxE52tH;0paP!q4>oI~d>Fj^5OZRcO z;!10`nx?V&K$~6Ne(287a3o~obQm99104EYmblF$M^__NW(aPos#nKyasi+R7$YfW zOmZBJhrHAuGK2JCjrJw1+@JaGC{8u3*9#yYfI!Dp0D2OvK?8>5UC0JE}Dg+BQMWRrNZXzdk8-stcokG?eh68XkF2FPd zu;e%IdEQtv)B8HijxRo*O46Ma;}mZ=Lg0if5fidZh)BqDN_a}%QT7P$k@;X}Yy3pW z9x53?TV5*x;!TDaz#7#+v=F3rO0F94B6=w{(ySp?0ye@2X$_cK7s7*GL0K`+Ma)*- zYIv2gk_Li^wWF>9W;nEo&IO?^94lYgS_GP96IRE{`UzY!16PWf)&>L43@v`;bgh|G zw6yvp3%l6&DIL?Zm>{FGcAB_{JkPl;^E@83yz3M7wj$sxv2`tO?&r66vjIMme+Xlg sqp01;NjEHNsrb+=9@Tg=>Kgxx-N!gw+{dExpY>h#k%#SO`)NP<1|`yQJOBUy literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/easy_install.py b/env/lib/python2.7/site-packages/easy_install.py new file mode 100644 index 0000000..d87e984 --- /dev/null +++ b/env/lib/python2.7/site-packages/easy_install.py @@ -0,0 +1,5 @@ +"""Run the EasyInstall command""" + +if __name__ == '__main__': + from setuptools.command.easy_install import main + main() diff --git a/env/lib/python2.7/site-packages/easy_install.pyc b/env/lib/python2.7/site-packages/easy_install.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6c271b191e41b0d05b7a4095dbcd1fc28ae339a1 GIT binary patch literal 315 zcmYk1J5B>J5QfKgNDvAVJq25CL3VS12vI;m6QNC&G?rOg!on}%*&;QE;c|2w0LIHo zWTg3R&*S@L@qKymwfWrlFa@Xco-(gVG{6DCFwhL%IK1D2=AZ>Q4qm`P05bwU09c^e z8SLt_vUyF?4WYtUQ$4DDd?SpIoY3(Vc WNypK7D literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/idna-2.6.dist-info/DESCRIPTION.rst b/env/lib/python2.7/site-packages/idna-2.6.dist-info/DESCRIPTION.rst new file mode 100644 index 0000000..878ecd2 --- /dev/null +++ b/env/lib/python2.7/site-packages/idna-2.6.dist-info/DESCRIPTION.rst @@ -0,0 +1,213 @@ +Internationalized Domain Names in Applications (IDNA) +===================================================== + +Support for the Internationalised Domain Names in Applications +(IDNA) protocol as specified in `RFC 5891 `_. +This is the latest version of the protocol and is sometimes referred to as +“IDNA 2008”. + +This library also provides support for Unicode Technical Standard 46, +`Unicode IDNA Compatibility Processing `_. + +This acts as a suitable replacement for the “encodings.idna” module that +comes with the Python standard library, but only supports the +old, deprecated IDNA specification (`RFC 3490 `_). + +Basic functions are simply executed: + +.. code-block:: pycon + + # Python 3 + >>> import idna + >>> idna.encode('ドメイン.テスト') + b'xn--eckwd4c7c.xn--zckzah' + >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) + ドメイン.テスト + + # Python 2 + >>> import idna + >>> idna.encode(u'ドメイン.テスト') + 'xn--eckwd4c7c.xn--zckzah' + >>> print idna.decode('xn--eckwd4c7c.xn--zckzah') + ドメイン.テスト + +Packages +-------- + +The latest tagged release version is published in the PyPI repository: + +.. image:: https://badge.fury.io/py/idna.svg + :target: http://badge.fury.io/py/idna + + +Installation +------------ + +To install this library, you can use pip: + +.. code-block:: bash + + $ pip install idna + +Alternatively, you can install the package using the bundled setup script: + +.. code-block:: bash + + $ python setup.py install + +This library works with Python 2.6 or later, and Python 3.3 or later. + + +Usage +----- + +For typical usage, the ``encode`` and ``decode`` functions will take a domain +name argument and perform a conversion to A-labels or U-labels respectively. + +.. code-block:: pycon + + # Python 3 + >>> import idna + >>> idna.encode('ドメイン.テスト') + b'xn--eckwd4c7c.xn--zckzah' + >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) + ドメイン.テスト + +You may use the codec encoding and decoding methods using the +``idna.codec`` module: + +.. code-block:: pycon + + # Python 2 + >>> import idna.codec + >>> print u'домена.испытание'.encode('idna') + xn--80ahd1agd.xn--80akhbyknj4f + >>> print 'xn--80ahd1agd.xn--80akhbyknj4f'.decode('idna') + домена.испытание + +Conversions can be applied at a per-label basis using the ``ulabel`` or ``alabel`` +functions if necessary: + +.. code-block:: pycon + + # Python 2 + >>> idna.alabel(u'测试') + 'xn--0zwm56d' + +Compatibility Mapping (UTS #46) ++++++++++++++++++++++++++++++++ + +As described in `RFC 5895 `_, the IDNA +specification no longer normalizes input from different potential ways a user +may input a domain name. This functionality, known as a “mapping”, is now +considered by the specification to be a local user-interface issue distinct +from IDNA conversion functionality. + +This library provides one such mapping, that was developed by the Unicode +Consortium. Known as `Unicode IDNA Compatibility Processing `_, +it provides for both a regular mapping for typical applications, as well as +a transitional mapping to help migrate from older IDNA 2003 applications. + +For example, “Königsgäßchen” is not a permissible label as *LATIN CAPITAL +LETTER K* is not allowed (nor are capital letters in general). UTS 46 will +convert this into lower case prior to applying the IDNA conversion. + +.. code-block:: pycon + + # Python 3 + >>> import idna + >>> idna.encode(u'Königsgäßchen') + ... + idna.core.InvalidCodepoint: Codepoint U+004B at position 1 of 'Königsgäßchen' not allowed + >>> idna.encode('Königsgäßchen', uts46=True) + b'xn--knigsgchen-b4a3dun' + >>> print(idna.decode('xn--knigsgchen-b4a3dun')) + königsgäßchen + +Transitional processing provides conversions to help transition from the older +2003 standard to the current standard. For example, in the original IDNA +specification, the *LATIN SMALL LETTER SHARP S* (ß) was converted into two +*LATIN SMALL LETTER S* (ss), whereas in the current IDNA specification this +conversion is not performed. + +.. code-block:: pycon + + # Python 2 + >>> idna.encode(u'Königsgäßchen', uts46=True, transitional=True) + 'xn--knigsgsschen-lcb0w' + +Implementors should use transitional processing with caution, only in rare +cases where conversion from legacy labels to current labels must be performed +(i.e. IDNA implementations that pre-date 2008). For typical applications +that just need to convert labels, transitional processing is unlikely to be +beneficial and could produce unexpected incompatible results. + +``encodings.idna`` Compatibility +++++++++++++++++++++++++++++++++ + +Function calls from the Python built-in ``encodings.idna`` module are +mapped to their IDNA 2008 equivalents using the ``idna.compat`` module. +Simply substitute the ``import`` clause in your code to refer to the +new module name. + +Exceptions +---------- + +All errors raised during the conversion following the specification should +raise an exception derived from the ``idna.IDNAError`` base class. + +More specific exceptions that may be generated as ``idna.IDNABidiError`` +when the error reflects an illegal combination of left-to-right and right-to-left +characters in a label; ``idna.InvalidCodepoint`` when a specific codepoint is +an illegal character in an IDN label (i.e. INVALID); and ``idna.InvalidCodepointContext`` +when the codepoint is illegal based on its positional context (i.e. it is CONTEXTO +or CONTEXTJ but the contextual requirements are not satisfied.) + +Building and Diagnostics +------------------------ + +The IDNA and UTS 46 functionality relies upon pre-calculated lookup tables for +performance. These tables are derived from computing against eligibility criteria +in the respective standards. These tables are computed using the command-line +script ``tools/idna-data``. + +This tool will fetch relevant tables from the Unicode Consortium and perform the +required calculations to identify eligibility. It has three main modes: + +* ``idna-data make-libdata``. Generates ``idnadata.py`` and ``uts46data.py``, + the pre-calculated lookup tables using for IDNA and UTS 46 conversions. Implementors + who wish to track this library against a different Unicode version may use this tool + to manually generate a different version of the ``idnadata.py`` and ``uts46data.py`` + files. + +* ``idna-data make-table``. Generate a table of the IDNA disposition + (e.g. PVALID, CONTEXTJ, CONTEXTO) in the format found in Appendix B.1 of RFC + 5892 and the pre-computed tables published by `IANA `_. + +* ``idna-data U+0061``. Prints debugging output on the various properties + associated with an individual Unicode codepoint (in this case, U+0061), that are + used to assess the IDNA and UTS 46 status of a codepoint. This is helpful in debugging + or analysis. + +The tool accepts a number of arguments, described using ``idna-data -h``. Most notably, +the ``--version`` argument allows the specification of the version of Unicode to use +in computing the table data. For example, ``idna-data --version 9.0.0 make-libdata`` +will generate library data against Unicode 9.0.0. + +Note that this script requires Python 3, but all generated library data will work +in Python 2.6+. + + +Testing +------- + +The library has a test suite based on each rule of the IDNA specification, as +well as tests that are provided as part of the Unicode Technical Standard 46, +`Unicode IDNA Compatibility Processing `_. + +The tests are run automatically on each commit at Travis CI: + +.. image:: https://travis-ci.org/kjd/idna.svg?branch=master + :target: https://travis-ci.org/kjd/idna + + diff --git a/env/lib/python2.7/site-packages/idna-2.6.dist-info/INSTALLER b/env/lib/python2.7/site-packages/idna-2.6.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/env/lib/python2.7/site-packages/idna-2.6.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/env/lib/python2.7/site-packages/idna-2.6.dist-info/METADATA b/env/lib/python2.7/site-packages/idna-2.6.dist-info/METADATA new file mode 100644 index 0000000..2ccb268 --- /dev/null +++ b/env/lib/python2.7/site-packages/idna-2.6.dist-info/METADATA @@ -0,0 +1,239 @@ +Metadata-Version: 2.0 +Name: idna +Version: 2.6 +Summary: Internationalized Domain Names in Applications (IDNA) +Home-page: https://github.com/kjd/idna +Author: Kim Davies +Author-email: kim@cynosure.com.au +License: BSD-like +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Intended Audience :: System Administrators +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Topic :: Internet :: Name Service (DNS) +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Utilities + +Internationalized Domain Names in Applications (IDNA) +===================================================== + +Support for the Internationalised Domain Names in Applications +(IDNA) protocol as specified in `RFC 5891 `_. +This is the latest version of the protocol and is sometimes referred to as +“IDNA 2008”. + +This library also provides support for Unicode Technical Standard 46, +`Unicode IDNA Compatibility Processing `_. + +This acts as a suitable replacement for the “encodings.idna” module that +comes with the Python standard library, but only supports the +old, deprecated IDNA specification (`RFC 3490 `_). + +Basic functions are simply executed: + +.. code-block:: pycon + + # Python 3 + >>> import idna + >>> idna.encode('ドメイン.テスト') + b'xn--eckwd4c7c.xn--zckzah' + >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) + ドメイン.テスト + + # Python 2 + >>> import idna + >>> idna.encode(u'ドメイン.テスト') + 'xn--eckwd4c7c.xn--zckzah' + >>> print idna.decode('xn--eckwd4c7c.xn--zckzah') + ドメイン.テスト + +Packages +-------- + +The latest tagged release version is published in the PyPI repository: + +.. image:: https://badge.fury.io/py/idna.svg + :target: http://badge.fury.io/py/idna + + +Installation +------------ + +To install this library, you can use pip: + +.. code-block:: bash + + $ pip install idna + +Alternatively, you can install the package using the bundled setup script: + +.. code-block:: bash + + $ python setup.py install + +This library works with Python 2.6 or later, and Python 3.3 or later. + + +Usage +----- + +For typical usage, the ``encode`` and ``decode`` functions will take a domain +name argument and perform a conversion to A-labels or U-labels respectively. + +.. code-block:: pycon + + # Python 3 + >>> import idna + >>> idna.encode('ドメイン.テスト') + b'xn--eckwd4c7c.xn--zckzah' + >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) + ドメイン.テスト + +You may use the codec encoding and decoding methods using the +``idna.codec`` module: + +.. code-block:: pycon + + # Python 2 + >>> import idna.codec + >>> print u'домена.испытание'.encode('idna') + xn--80ahd1agd.xn--80akhbyknj4f + >>> print 'xn--80ahd1agd.xn--80akhbyknj4f'.decode('idna') + домена.испытание + +Conversions can be applied at a per-label basis using the ``ulabel`` or ``alabel`` +functions if necessary: + +.. code-block:: pycon + + # Python 2 + >>> idna.alabel(u'测试') + 'xn--0zwm56d' + +Compatibility Mapping (UTS #46) ++++++++++++++++++++++++++++++++ + +As described in `RFC 5895 `_, the IDNA +specification no longer normalizes input from different potential ways a user +may input a domain name. This functionality, known as a “mapping”, is now +considered by the specification to be a local user-interface issue distinct +from IDNA conversion functionality. + +This library provides one such mapping, that was developed by the Unicode +Consortium. Known as `Unicode IDNA Compatibility Processing `_, +it provides for both a regular mapping for typical applications, as well as +a transitional mapping to help migrate from older IDNA 2003 applications. + +For example, “Königsgäßchen” is not a permissible label as *LATIN CAPITAL +LETTER K* is not allowed (nor are capital letters in general). UTS 46 will +convert this into lower case prior to applying the IDNA conversion. + +.. code-block:: pycon + + # Python 3 + >>> import idna + >>> idna.encode(u'Königsgäßchen') + ... + idna.core.InvalidCodepoint: Codepoint U+004B at position 1 of 'Königsgäßchen' not allowed + >>> idna.encode('Königsgäßchen', uts46=True) + b'xn--knigsgchen-b4a3dun' + >>> print(idna.decode('xn--knigsgchen-b4a3dun')) + königsgäßchen + +Transitional processing provides conversions to help transition from the older +2003 standard to the current standard. For example, in the original IDNA +specification, the *LATIN SMALL LETTER SHARP S* (ß) was converted into two +*LATIN SMALL LETTER S* (ss), whereas in the current IDNA specification this +conversion is not performed. + +.. code-block:: pycon + + # Python 2 + >>> idna.encode(u'Königsgäßchen', uts46=True, transitional=True) + 'xn--knigsgsschen-lcb0w' + +Implementors should use transitional processing with caution, only in rare +cases where conversion from legacy labels to current labels must be performed +(i.e. IDNA implementations that pre-date 2008). For typical applications +that just need to convert labels, transitional processing is unlikely to be +beneficial and could produce unexpected incompatible results. + +``encodings.idna`` Compatibility +++++++++++++++++++++++++++++++++ + +Function calls from the Python built-in ``encodings.idna`` module are +mapped to their IDNA 2008 equivalents using the ``idna.compat`` module. +Simply substitute the ``import`` clause in your code to refer to the +new module name. + +Exceptions +---------- + +All errors raised during the conversion following the specification should +raise an exception derived from the ``idna.IDNAError`` base class. + +More specific exceptions that may be generated as ``idna.IDNABidiError`` +when the error reflects an illegal combination of left-to-right and right-to-left +characters in a label; ``idna.InvalidCodepoint`` when a specific codepoint is +an illegal character in an IDN label (i.e. INVALID); and ``idna.InvalidCodepointContext`` +when the codepoint is illegal based on its positional context (i.e. it is CONTEXTO +or CONTEXTJ but the contextual requirements are not satisfied.) + +Building and Diagnostics +------------------------ + +The IDNA and UTS 46 functionality relies upon pre-calculated lookup tables for +performance. These tables are derived from computing against eligibility criteria +in the respective standards. These tables are computed using the command-line +script ``tools/idna-data``. + +This tool will fetch relevant tables from the Unicode Consortium and perform the +required calculations to identify eligibility. It has three main modes: + +* ``idna-data make-libdata``. Generates ``idnadata.py`` and ``uts46data.py``, + the pre-calculated lookup tables using for IDNA and UTS 46 conversions. Implementors + who wish to track this library against a different Unicode version may use this tool + to manually generate a different version of the ``idnadata.py`` and ``uts46data.py`` + files. + +* ``idna-data make-table``. Generate a table of the IDNA disposition + (e.g. PVALID, CONTEXTJ, CONTEXTO) in the format found in Appendix B.1 of RFC + 5892 and the pre-computed tables published by `IANA `_. + +* ``idna-data U+0061``. Prints debugging output on the various properties + associated with an individual Unicode codepoint (in this case, U+0061), that are + used to assess the IDNA and UTS 46 status of a codepoint. This is helpful in debugging + or analysis. + +The tool accepts a number of arguments, described using ``idna-data -h``. Most notably, +the ``--version`` argument allows the specification of the version of Unicode to use +in computing the table data. For example, ``idna-data --version 9.0.0 make-libdata`` +will generate library data against Unicode 9.0.0. + +Note that this script requires Python 3, but all generated library data will work +in Python 2.6+. + + +Testing +------- + +The library has a test suite based on each rule of the IDNA specification, as +well as tests that are provided as part of the Unicode Technical Standard 46, +`Unicode IDNA Compatibility Processing `_. + +The tests are run automatically on each commit at Travis CI: + +.. image:: https://travis-ci.org/kjd/idna.svg?branch=master + :target: https://travis-ci.org/kjd/idna + + diff --git a/env/lib/python2.7/site-packages/idna-2.6.dist-info/RECORD b/env/lib/python2.7/site-packages/idna-2.6.dist-info/RECORD new file mode 100644 index 0000000..ea3f8fb --- /dev/null +++ b/env/lib/python2.7/site-packages/idna-2.6.dist-info/RECORD @@ -0,0 +1,23 @@ +idna/__init__.py,sha256=9Nt7xpyet3DmOrPUGooDdAwmHZZu1qUAy2EaJ93kGiQ,58 +idna/codec.py,sha256=lvYb7yu7PhAqFaAIAdWcwgaWI2UmgseUua-1c0AsG0A,3299 +idna/compat.py,sha256=R-h29D-6mrnJzbXxymrWUW7iZUvy-26TQwZ0ij57i4U,232 +idna/core.py,sha256=GafiWdYQIK5TSjWdRzCYCho704ALtMCrV_dnXXn57U0,11390 +idna/idnadata.py,sha256=-Cg83lurKoA9p7lb0lMAsos0rFz1dnKrGeBE3o8UuCA,32999 +idna/intranges.py,sha256=TY1lpxZIQWEP6tNqjZkFA5hgoMWOj1OBmnUG8ihT87E,1749 +idna/package_data.py,sha256=KMSUTS_M7ZZ7Ugl_V_EOxV-D3o7v7yVkt45JK_bpW24,21 +idna/uts46data.py,sha256=YylQYBfljAx_WVqR2D7HgcGGyVCWwPm6uF38aERuhyw,184944 +idna-2.6.dist-info/DESCRIPTION.rst,sha256=XE7tSurJDfSB3AsHWf990INfSzTE5ysMEuqivWZobW8,7828 +idna-2.6.dist-info/METADATA,sha256=k-onXnwR756XWu_ISqwb-_NRl4Khz_Es9AmYkV0TM-o,8866 +idna-2.6.dist-info/RECORD,, +idna-2.6.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 +idna-2.6.dist-info/metadata.json,sha256=f73f8l4pL23NliZdfccMvmdsd9l39J4YBcEDuTvZJY4,1097 +idna-2.6.dist-info/top_level.txt,sha256=jSag9sEDqvSPftxOQy-ABfGV_RSy7oFh4zZJpODV8k0,5 +idna-2.6.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +idna/intranges.pyc,, +idna/package_data.pyc,, +idna/idnadata.pyc,, +idna/uts46data.pyc,, +idna/core.pyc,, +idna/__init__.pyc,, +idna/compat.pyc,, +idna/codec.pyc,, diff --git a/env/lib/python2.7/site-packages/idna-2.6.dist-info/WHEEL b/env/lib/python2.7/site-packages/idna-2.6.dist-info/WHEEL new file mode 100644 index 0000000..8b6dd1b --- /dev/null +++ b/env/lib/python2.7/site-packages/idna-2.6.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.29.0) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/env/lib/python2.7/site-packages/idna-2.6.dist-info/metadata.json b/env/lib/python2.7/site-packages/idna-2.6.dist-info/metadata.json new file mode 100644 index 0000000..0e74f27 --- /dev/null +++ b/env/lib/python2.7/site-packages/idna-2.6.dist-info/metadata.json @@ -0,0 +1 @@ +{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet :: Name Service (DNS)", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities"], "extensions": {"python.details": {"contacts": [{"email": "kim@cynosure.com.au", "name": "Kim Davies", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/kjd/idna"}}}, "generator": "bdist_wheel (0.29.0)", "license": "BSD-like", "metadata_version": "2.0", "name": "idna", "summary": "Internationalized Domain Names in Applications (IDNA)", "version": "2.6"} \ No newline at end of file diff --git a/env/lib/python2.7/site-packages/idna-2.6.dist-info/top_level.txt b/env/lib/python2.7/site-packages/idna-2.6.dist-info/top_level.txt new file mode 100644 index 0000000..c40472e --- /dev/null +++ b/env/lib/python2.7/site-packages/idna-2.6.dist-info/top_level.txt @@ -0,0 +1 @@ +idna diff --git a/env/lib/python2.7/site-packages/idna/__init__.py b/env/lib/python2.7/site-packages/idna/__init__.py new file mode 100644 index 0000000..847bf93 --- /dev/null +++ b/env/lib/python2.7/site-packages/idna/__init__.py @@ -0,0 +1,2 @@ +from .package_data import __version__ +from .core import * diff --git a/env/lib/python2.7/site-packages/idna/__init__.pyc b/env/lib/python2.7/site-packages/idna/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b54dd57e387471400ca56b6de08f160b946afb8f GIT binary patch literal 226 zcmYL^T?)c549C;W2k`?uf#6$F<~)FkC-A{9(3eoxBE_yNYd7#j9?%PzGQp7i!oT^G zlJqkk%r@_90l!G7@2LEgASoFbfRe$D0gE~TlfX%)aO6F*Xhz@>VMsu1Rqb_U5xd7Y zneTZT4I_dR#Zx>KN)g0?G=#XNsA|Qd`ok|s=Am@C(=NL=+Q`ga&Sur-T3XQoQCl4l Vm+lq%e8*Uwu4f!oG2VD^dUe literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/idna/codec.py b/env/lib/python2.7/site-packages/idna/codec.py new file mode 100644 index 0000000..98c65ea --- /dev/null +++ b/env/lib/python2.7/site-packages/idna/codec.py @@ -0,0 +1,118 @@ +from .core import encode, decode, alabel, ulabel, IDNAError +import codecs +import re + +_unicode_dots_re = re.compile(u'[\u002e\u3002\uff0e\uff61]') + +class Codec(codecs.Codec): + + def encode(self, data, errors='strict'): + + if errors != 'strict': + raise IDNAError("Unsupported error handling \"{0}\"".format(errors)) + + if not data: + return "", 0 + + return encode(data), len(data) + + def decode(self, data, errors='strict'): + + if errors != 'strict': + raise IDNAError("Unsupported error handling \"{0}\"".format(errors)) + + if not data: + return u"", 0 + + return decode(data), len(data) + +class IncrementalEncoder(codecs.BufferedIncrementalEncoder): + def _buffer_encode(self, data, errors, final): + if errors != 'strict': + raise IDNAError("Unsupported error handling \"{0}\"".format(errors)) + + if not data: + return ("", 0) + + labels = _unicode_dots_re.split(data) + 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(alabel(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, data, errors, final): + if errors != 'strict': + raise IDNAError("Unsupported error handling \"{0}\"".format(errors)) + + if not data: + return (u"", 0) + + # IDNA allows decoding to operate on Unicode strings, too. + if isinstance(data, unicode): + labels = _unicode_dots_re.split(data) + else: + # Must be ASCII string + data = str(data) + unicode(data, "ascii") + labels = data.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(ulabel(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 + +def getregentry(): + return codecs.CodecInfo( + name='idna', + encode=Codec().encode, + decode=Codec().decode, + incrementalencoder=IncrementalEncoder, + incrementaldecoder=IncrementalDecoder, + streamwriter=StreamWriter, + streamreader=StreamReader, + ) diff --git a/env/lib/python2.7/site-packages/idna/codec.pyc b/env/lib/python2.7/site-packages/idna/codec.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0ea7f3b9ea3d1e5dd6a3b62032f0d36d8170fbc7 GIT binary patch literal 3771 zcmd5<%W@l45bc@K%ZeO150V%H6fHkl73m*WpN@`B2SWvv@0^^tJ1ED zsY+jvkvOyOAiO>3|0og~ZzkRj)^vO3*fBgP|<*c_cT{v~G3&|}!`3i`^ zPT&c3@?&@i=K${tc~AU}7B52=&21KkHspBn+yTkO!@3+mVZAW}_ieOz^mU(9clJS=kA}lRW=*tWc*2#BgEUIwbaUn6msfT! zVjXynq{S2Y)# z*Zdkxe1@dYqo}idp2t5%!U#L6dpPMSJag`8>1A=*PA3ierqi)puhZ!dqEUjO`c=0y zTUoio-43z9Fv+=I#ckB>NicWQFf)CV+90{3$jd@V^~3!tR8D}ILgg_q;}RQGhn$Ok z;;#at4DlfVv7mtHO`xz-B1U$~vR#twYf_}Cdzs-V} zd5Ej%yqU>IiPhQi_={pywVy@np#s$&=UE<(x?PiXifZs0B>5E(aVANn=~VEo7mr)T zZxhL;;w(C+l%DoZIZI9f-$lIWb5{QqklD750HP))cok1hH&&c^2(4+wdO--?I2?rP zlbV7AzvoK!K5w>%@YX5=M5QeaqBphEl-eBK0nKPmXC0N-~+#Ta~5 zfDamgZ=zT5JsF#9JrSt?4SYZrQ1}e^{!s8O><8b%e(?PQ@YUG3JO@6Q9Rxlm>qCHV zRtYrlgFK95Uz-!ca5M+QnRQEx0+U|>Lt;M8<21KH8XC)VI|ilCBv$$$WBS>!nF;#$ve=pfU{-@gQK?X%z>mA5X#$ve>j>Mqi1|=e z4%m)wg6Kcr&gIj*=CB;QhXB(`b0FNXitm(3ebG+LE^D4j(M%PhFxK98fyr?T` zVbQ)ax2#Uu!{1H21D{>YY;m85^%*BVZ^x%kUgVA~@w{oUzfH76*`q#&IrD%x3n(iM zd|6~FPD_zY;D>|E?Awr*R}b={IKKrBjut^VW;O^1{b8J#A{+25mLR^R#m+>}H)DFh tzq1)vo4ND*Z)3(6azYIgTrIlK>r8z)58LAD-KM*IX8FSMo9Dgr-d_$Uyz2k} literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/idna/compat.py b/env/lib/python2.7/site-packages/idna/compat.py new file mode 100644 index 0000000..4d47f33 --- /dev/null +++ b/env/lib/python2.7/site-packages/idna/compat.py @@ -0,0 +1,12 @@ +from .core import * +from .codec import * + +def ToASCII(label): + return encode(label) + +def ToUnicode(label): + return decode(label) + +def nameprep(s): + raise NotImplementedError("IDNA 2008 does not utilise nameprep protocol") + diff --git a/env/lib/python2.7/site-packages/idna/compat.pyc b/env/lib/python2.7/site-packages/idna/compat.pyc new file mode 100644 index 0000000000000000000000000000000000000000..40bb32f5554660ebd57a06692524b323df6c3a0e GIT binary patch literal 739 zcmbVJy-ve05I!d@&`3x~yg=9jqO^jA0T5MT$dVy#kzh-050)I;id`fmCg5FoKwf~m zq`<_`M)8;LeEIG-{@PEDu0J0+te*(Kw|M*og20!72AHoILl(gYz*7VwZb=NH*ODHH zKFqQm)G3CL5d?x0PDqEMPx1H!AppDryfYM$ujmA%mxfy*JG+mzu9i|~NT3COjBFHY zH*(4imn)^k&^#>k_<5v+sXE}cc2ziYFJTw|p4-W6n&&;Fo{9jrX-z`@)>Kl2t;-pp zcy1R)Q9P>c-+~U%i9^B_;E>)Jtz(u^?!uoU=6A&;Js*!RQ(>h~jScB4D6PCqO;ts!xZ7Fwqm8_P1^=tBrJ&r@gV*NTV9Yl literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/idna/core.py b/env/lib/python2.7/site-packages/idna/core.py new file mode 100644 index 0000000..b55b664 --- /dev/null +++ b/env/lib/python2.7/site-packages/idna/core.py @@ -0,0 +1,387 @@ +from . import idnadata +import bisect +import unicodedata +import re +import sys +from .intranges import intranges_contain + +_virama_combining_class = 9 +_alabel_prefix = b'xn--' +_unicode_dots_re = re.compile(u'[\u002e\u3002\uff0e\uff61]') + +if sys.version_info[0] == 3: + unicode = str + unichr = chr + +class IDNAError(UnicodeError): + """ Base exception for all IDNA-encoding related problems """ + pass + + +class IDNABidiError(IDNAError): + """ Exception when bidirectional requirements are not satisfied """ + pass + + +class InvalidCodepoint(IDNAError): + """ Exception when a disallowed or unallocated codepoint is used """ + pass + + +class InvalidCodepointContext(IDNAError): + """ Exception when the codepoint is not valid in the context it is used """ + pass + + +def _combining_class(cp): + return unicodedata.combining(unichr(cp)) + +def _is_script(cp, script): + return intranges_contain(ord(cp), idnadata.scripts[script]) + +def _punycode(s): + return s.encode('punycode') + +def _unot(s): + return 'U+{0:04X}'.format(s) + + +def valid_label_length(label): + + if len(label) > 63: + return False + return True + + +def valid_string_length(label, trailing_dot): + + if len(label) > (254 if trailing_dot else 253): + return False + return True + + +def check_bidi(label, check_ltr=False): + + # Bidi rules should only be applied if string contains RTL characters + bidi_label = False + for (idx, cp) in enumerate(label, 1): + direction = unicodedata.bidirectional(cp) + if direction == '': + # String likely comes from a newer version of Unicode + raise IDNABidiError('Unknown directionality in label {0} at position {1}'.format(repr(label), idx)) + if direction in ['R', 'AL', 'AN']: + bidi_label = True + break + if not bidi_label and not check_ltr: + return True + + # Bidi rule 1 + direction = unicodedata.bidirectional(label[0]) + if direction in ['R', 'AL']: + rtl = True + elif direction == 'L': + rtl = False + else: + raise IDNABidiError('First codepoint in label {0} must be directionality L, R or AL'.format(repr(label))) + + valid_ending = False + number_type = False + for (idx, cp) in enumerate(label, 1): + direction = unicodedata.bidirectional(cp) + + if rtl: + # Bidi rule 2 + if not direction in ['R', 'AL', 'AN', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']: + raise IDNABidiError('Invalid direction for codepoint at position {0} in a right-to-left label'.format(idx)) + # Bidi rule 3 + if direction in ['R', 'AL', 'EN', 'AN']: + valid_ending = True + elif direction != 'NSM': + valid_ending = False + # Bidi rule 4 + if direction in ['AN', 'EN']: + if not number_type: + number_type = direction + else: + if number_type != direction: + raise IDNABidiError('Can not mix numeral types in a right-to-left label') + else: + # Bidi rule 5 + if not direction in ['L', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']: + raise IDNABidiError('Invalid direction for codepoint at position {0} in a left-to-right label'.format(idx)) + # Bidi rule 6 + if direction in ['L', 'EN']: + valid_ending = True + elif direction != 'NSM': + valid_ending = False + + if not valid_ending: + raise IDNABidiError('Label ends with illegal codepoint directionality') + + return True + + +def check_initial_combiner(label): + + if unicodedata.category(label[0])[0] == 'M': + raise IDNAError('Label begins with an illegal combining character') + return True + + +def check_hyphen_ok(label): + + if label[2:4] == '--': + raise IDNAError('Label has disallowed hyphens in 3rd and 4th position') + if label[0] == '-' or label[-1] == '-': + raise IDNAError('Label must not start or end with a hyphen') + return True + + +def check_nfc(label): + + if unicodedata.normalize('NFC', label) != label: + raise IDNAError('Label must be in Normalization Form C') + + +def valid_contextj(label, pos): + + cp_value = ord(label[pos]) + + if cp_value == 0x200c: + + if pos > 0: + if _combining_class(ord(label[pos - 1])) == _virama_combining_class: + return True + + ok = False + for i in range(pos-1, -1, -1): + joining_type = idnadata.joining_types.get(ord(label[i])) + if joining_type == ord('T'): + continue + if joining_type in [ord('L'), ord('D')]: + ok = True + break + + if not ok: + return False + + ok = False + for i in range(pos+1, len(label)): + joining_type = idnadata.joining_types.get(ord(label[i])) + if joining_type == ord('T'): + continue + if joining_type in [ord('R'), ord('D')]: + ok = True + break + return ok + + if cp_value == 0x200d: + + if pos > 0: + if _combining_class(ord(label[pos - 1])) == _virama_combining_class: + return True + return False + + else: + + return False + + +def valid_contexto(label, pos, exception=False): + + cp_value = ord(label[pos]) + + if cp_value == 0x00b7: + if 0 < pos < len(label)-1: + if ord(label[pos - 1]) == 0x006c and ord(label[pos + 1]) == 0x006c: + return True + return False + + elif cp_value == 0x0375: + if pos < len(label)-1 and len(label) > 1: + return _is_script(label[pos + 1], 'Greek') + return False + + elif cp_value == 0x05f3 or cp_value == 0x05f4: + if pos > 0: + return _is_script(label[pos - 1], 'Hebrew') + return False + + elif cp_value == 0x30fb: + for cp in label: + if cp == u'\u30fb': + continue + if _is_script(cp, 'Hiragana') or _is_script(cp, 'Katakana') or _is_script(cp, 'Han'): + return True + return False + + elif 0x660 <= cp_value <= 0x669: + for cp in label: + if 0x6f0 <= ord(cp) <= 0x06f9: + return False + return True + + elif 0x6f0 <= cp_value <= 0x6f9: + for cp in label: + if 0x660 <= ord(cp) <= 0x0669: + return False + return True + + +def check_label(label): + + if isinstance(label, (bytes, bytearray)): + label = label.decode('utf-8') + if len(label) == 0: + raise IDNAError('Empty Label') + + check_nfc(label) + check_hyphen_ok(label) + check_initial_combiner(label) + + for (pos, cp) in enumerate(label): + cp_value = ord(cp) + if intranges_contain(cp_value, idnadata.codepoint_classes['PVALID']): + continue + elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTJ']): + if not valid_contextj(label, pos): + raise InvalidCodepointContext('Joiner {0} not allowed at position {1} in {2}'.format(_unot(cp_value), pos+1, repr(label))) + elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTO']): + if not valid_contexto(label, pos): + raise InvalidCodepointContext('Codepoint {0} not allowed at position {1} in {2}'.format(_unot(cp_value), pos+1, repr(label))) + else: + raise InvalidCodepoint('Codepoint {0} at position {1} of {2} not allowed'.format(_unot(cp_value), pos+1, repr(label))) + + check_bidi(label) + + +def alabel(label): + + try: + label = label.encode('ascii') + try: + ulabel(label) + except IDNAError: + raise IDNAError('The label {0} is not a valid A-label'.format(label)) + if not valid_label_length(label): + raise IDNAError('Label too long') + return label + except UnicodeEncodeError: + pass + + if not label: + raise IDNAError('No Input') + + label = unicode(label) + check_label(label) + label = _punycode(label) + label = _alabel_prefix + label + + if not valid_label_length(label): + raise IDNAError('Label too long') + + return label + + +def ulabel(label): + + if not isinstance(label, (bytes, bytearray)): + try: + label = label.encode('ascii') + except UnicodeEncodeError: + check_label(label) + return label + + label = label.lower() + if label.startswith(_alabel_prefix): + label = label[len(_alabel_prefix):] + else: + check_label(label) + return label.decode('ascii') + + label = label.decode('punycode') + check_label(label) + return label + + +def uts46_remap(domain, std3_rules=True, transitional=False): + """Re-map the characters in the string according to UTS46 processing.""" + from .uts46data import uts46data + output = u"" + try: + for pos, char in enumerate(domain): + code_point = ord(char) + uts46row = uts46data[code_point if code_point < 256 else + bisect.bisect_left(uts46data, (code_point, "Z")) - 1] + status = uts46row[1] + replacement = uts46row[2] if len(uts46row) == 3 else None + if (status == "V" or + (status == "D" and not transitional) or + (status == "3" and std3_rules and replacement is None)): + output += char + elif replacement is not None and (status == "M" or + (status == "3" and std3_rules) or + (status == "D" and transitional)): + output += replacement + elif status != "I": + raise IndexError() + return unicodedata.normalize("NFC", output) + except IndexError: + raise InvalidCodepoint( + "Codepoint {0} not allowed at position {1} in {2}".format( + _unot(code_point), pos + 1, repr(domain))) + + +def encode(s, strict=False, uts46=False, std3_rules=False, transitional=False): + + if isinstance(s, (bytes, bytearray)): + s = s.decode("ascii") + if uts46: + s = uts46_remap(s, std3_rules, transitional) + trailing_dot = False + result = [] + if strict: + labels = s.split('.') + else: + labels = _unicode_dots_re.split(s) + while labels and not labels[0]: + del labels[0] + if not labels: + raise IDNAError('Empty domain') + if labels[-1] == '': + del labels[-1] + trailing_dot = True + for label in labels: + result.append(alabel(label)) + if trailing_dot: + result.append(b'') + s = b'.'.join(result) + if not valid_string_length(s, trailing_dot): + raise IDNAError('Domain too long') + return s + + +def decode(s, strict=False, uts46=False, std3_rules=False): + + if isinstance(s, (bytes, bytearray)): + s = s.decode("ascii") + if uts46: + s = uts46_remap(s, std3_rules, False) + trailing_dot = False + result = [] + if not strict: + labels = _unicode_dots_re.split(s) + else: + labels = s.split(u'.') + while labels and not labels[0]: + del labels[0] + if not labels: + raise IDNAError('Empty domain') + if not labels[-1]: + del labels[-1] + trailing_dot = True + for label in labels: + result.append(ulabel(label)) + if trailing_dot: + result.append(u'') + return u'.'.join(result) diff --git a/env/lib/python2.7/site-packages/idna/core.pyc b/env/lib/python2.7/site-packages/idna/core.pyc new file mode 100644 index 0000000000000000000000000000000000000000..87110e651ba7dcfc6248ff545d47b85db4f757f8 GIT binary patch literal 11371 zcmcIqUu+!5d7r&I-tnlTNRgsQT9mw!6ZssQmK-TgkXmUZk*ee>Cuff`WhU}hD@gdH7hWq12|O zmMmp?8RcbFBcqm3G4-rk%698HwUq1D2h`Gl%+IMtUTqfCQUUYPJE*+8S}H0(r`Cs* zS5OZC`;hVn)OtyIgKF9RXL!}-l_14mu z@=D4dliuO9cU*axXL?7{-lNJJ?e-o?dnc4P#>Uby<&8^aQh7(EGNrr;sZ1;Hm{guo z-lSBHD}P3LQ|cjbKcT#7={%{tXQcA1@{UWzR^E(MPRaNaGXAvkPD`9%7T9XFdIRr`1F3aJjGNIrR|x{{j!CTK)u1Ex@6vGK+YSO)qpkH+F;n z!(YYpA7OtOM{c<4>sq}T;&B)h(W`SPI^pbWyM)SDUjE7Nf8%FA_|u>L-Cy1b&{jbf zMa+TM=PH-xqo^6BT*DPFvtFx} zQB}P{Kab|wc(Zl36|`oT+d;#d4d1-gICu9f_r?_UX5_!z+IBJ+JBqLDL*B|;@i1D% z?sDJ-Pe|}ZOtt4zTJNp-p}h<+kzXhAZUcmFwb9)4!&uvHlt9<^0*xbW-U9(R z-8SfKH0yGnI9{`a9ca6)e*+Yf4W8LU;p9FPUIEAZohKl4ejh^PHQ(Mt5YJ9_(hfq~ zJe6haApVWfI|#&{?Wea+G31wAbA?aFQN&8ETPn_|9VktUA0v|$BUpzpq#XvNhN?mY zyx!bghEfPuV{#3ju0=+BP)6#l9v?ml3&vzPXq*Igt=@38rq*mvh-PlJ!)! zFMcrZz|U|-RraZ(3E|d@_s@O)+=bh_Jp`eyH{Dp;&QT0GAb!+iwKn8s7L||0Ejf9E z7?9k^spuFPp$Z;I5Dk8tSn$we77Zv;0>A1uv>%fz7NT~tq3mzC%YNg4NRMH@h<8n( z)UeiSy!HxuHP23E#;jbAe^U-PgGbihD2t1cL@CEXc?~)fuvk7V6UZ%a5iLNPov70h4N@prR`lsXf9q zc0gnodP3xsV0qgjmIW0~2$rL2BdelK%V3aeg2}(gfboyOYDKo^K~?I>7Xi)Z8JY{OrP4bl43T+j{0=i3ZA zcG%wZBRGZecFWfvJ?+3aaA~3-xFk570}eN+6m38Bw0$p#*X*Ft@K=FHkEFfFX7rMc znWDNc-EdB$ZZuP0Z<%J&>FbbT4voF@Nfy+M0%3l^q4IKGU_oC3Sin5w-f%OU%2iw*-<&|~JJfXI`R{Sp9qM`K7@rZr$ZthPDRa0ZN}09# znqS|jHR4EO6hbf-L%1mLI>rm($aG)jQ4}{ssT*yK^PuxZ*9>Sa`%#U2!F@7T_ldkN z9)&@R=+I_r@sP54YsMO}N|{qu3Bk^wb=b;f$5Aixn>n6g2!s)te5Pbg;cNOiwush5 zw%0q1u_Kv!*TbMK6FWf;gCc1(cr@=9a0we1!HQ&BkQBhPk2&%OXH(AC8O<{6zk zD=7s1LJCMUtVFD_8^u(rU|OR?T-$&(T0x{v+?S`_@ewR;cHF?PH8&ohOOwG>W*l2> z@4MYE;<4dE@E-OZeg;Zf%;$vx``ivsVH3%|iQ2zV;JtAL%+B;5DZRwHrq*q@grQITxmD%OS%)!^D#^bHKf zXA#bm{&yl$O_15`Au|ab&XWc1bV8pPpI5D|_xtb>u_9vq_`ILu^S;7p;#1|Wnsg;R zzI0drioW8n*i}4Fca_9ch3&}3m7rupc2P5_JdrwadKScTNp(&PYcPzF#?BtbaEH!$ z%!EhnZVE$F>SEIwxSD#$b?6 z(tx3z!`JTbLr*f=%H`@LfKtLtkx0rZXs7g`Bz8a`f$+?5>DMVHIM!Tt1Br!;Nu&cN zBm1K(%&3eNfepK|))gSg1-X3hlS#3D=@W#piN)iB@Zd4wU%48#(y(%}O7z1$T@+jN zk66fl=fJAe6Z}Tvl(MbzTQpL1IBIu0}FKnr$ntxy+C69{P$bYmt z7tES3aZQ9w+*q-QX87M)$knIA-xVp^dKX{;9-~vRKi)I$L}oA8kw?LnGW}Tm)PVhI z0+t4WVR9w-9?Cw+Y_Qn|M~OK7PUQO=!Oy{5!T+F;JkvFQIr8rX{|o*T4$^aR)Jz>m8}WJ}(^hIQ=I$J_n6eNn39lV0oy%ku+;4CcRNDG54INXC(YMu>=4a0{ zIB9(Lfr<}v0f;b~`fFA^Ld&*3s$$_yK&6Q&sL6ONK?KIrV7&D;>rtq<2_w|16^}m# z6$y(cfQpN+p28<h<@y8|W* zJ|4_IlOA2Kxng6zepqD*?r4PrjVL2_!@4iBy}TX!TEvPqH;UYCq1f{oC5w?1AJ5^P zkMnsJ%%C|hvJj~i&lfFn0^GPRH6{b@Yv(#gl4=Ps9a?dRd*{5tf&$`v289V~Qb`xF z76Ct?Z1Wh6PuXA^;J?t+XHclj1gz>9Lb@Rf|CwnB@-bN0V{oruF=gg#FWe(@h&BB& zD%%0sXC1y%S6sIb_w1Lo7@ko%$o9sNimoZkqG^B(oBSPQ!H7d>soSZDYwyu85erlo z!y^C$vk5>u1jIRbpx>3zeQ{K(3ZOdnQ3mW4=W&v?u3phU+HX-&wH09sSJ#6;ZZ8(r z{Ju;UF1Lg~liQ$6v$C~vFKVKQxY@KD&2Uxoyem!nde~~m#*d?&5zcDMB*RqXN@s>o z#!%ccH#PITE%oI}5+tP;IL=!f%v(OFB6xzXz^Sz&ebK<1DaXIPbj4f(Ph)l?4w%_=I<%CK&{c62+QXHs@^)5mUa1+S4A4 z^A!L&$s?ITg~FS)#&HZoaEW;&;}GNF%m~`z026V#{35b{foUKgM8lui#QtURmWE{S zx35~Avq{n$QaN|$l$c4Ro%0lp9f{eHvWAUBKA0XavSL-%!)ZoJ>kuXLXdtoVSZ8V) zNo!=RQJvn!sbGucoRXx*H{}_!_`D(+QM<6lMZOb4clJk8H^J8TX{Ad^mvLC(?c#m~ zB~EZeZ462sDCE^=;Y)6v={_i`=&VJk;?C;RQa2z*=_DsTW*v-#2}TJ(Ln$CkE=l^} z4D|_^4lV~4z-JL`wvNZc;%t!g>wXJL%7TM|cT?66(XYT(VPknwV8JKA z9O22-C!j(DDb?~Q4h#7ou#7*u>9)-EayQW>xf@bkDd66P++P4;}7hdI? z6m?(2rmeo*_kKtb0Nb&?@G5V8+i1YK1v5w>wpetpui_4hbGn1nFmIIA9Bqa4|s<@L{F_9=#05xXlV-uN*_xz4%K*`uTuMw7* zO3|394HZE(_PV+0;uQx@*0FcK7UAs?Eg>u4hB3DfZo?r`GQQc4p_+|T&83-Kl-bn1 zHF;e^+#T7)sCiE&LCRxXK2XSzBW}2LdBNi;475P6;XM(zb)GWLY$!Z$nB%Od+zAB1 zL-4Ijkol94`YAEp^u0%|qiAO_vQD+j15efO1s?Td>UUpXn<8+z8*oCRCFes$3JA~! z18Nm&BQN5&k|^Rthe8z~*g{SSPldOkE;=*h`{>U_X=K%ODXm`I>X@sg?@(JawbXUy zsbA7eX!OrAbwFK&TF2@@qjQQ~b9bhBB?gIy7N>(Qngu|tt$zdH0TpE}^U&m*7{$`{ zfFK%O26{vYF_aGcIR*?S1C%CYt8!~l5i=m-@Un4;8DJTQ*b^p`yp1C-XE19yC!KcJ z^c&`X#CFgUI5-j$*@^AYtws==wqn+=eAnNzB)Cw$*D}iI44n& zgs|M!C(IcI5H50ou$2R)uNmrvM2V-C{h&Ov&OSdwQ=#V!H zd20+d>8N!GwGr@Y0rv~T)+Ab^X!E~LQs^b6Tsw4Nt_96dtUa#H3D-(4Q?HP4q%IR4 z#kDX}6xc*?o$&?o!nH_Af@|{(GY!{D)o^WI>BqSi&%w3&A7oO(uemP2<_*7MRlN9U z_*Kk-@aqr3uSoNJkUV^hUnP%PEmPYWUTkAy)UV=2QSfD&{YQP4y?p1~7kQy`Z z9XK7<=wvwCD9pv#Q8wRUai4`S5_!nM&M5~QZ7#(Q$Tvi)LB9DEDkdD+pKpft@J*S+ zMeHQA=|D3nbDu|IB43g$dfNnZ=}V9fH_!PZ3p!@vP~$D7R?zTeJH$lX^&^d3e=P`C zng&c9Id?cbivsUQIaK*FwCkhu4N0?$^qh@tB0Ec})?p+luDS{LX4s_2n#9g$Sd%DH z;>n9_N|Y!Op}6^!c5^D!14ea-1Io?o?Yq>T=)#aVzGhyo`~tT|e2-BW6!Sj{@1Fks oILcz?*ns&jX5~LuEEEf+izti5eDS5y3&rEbnc~FA%*2WR2e+WLh5!Hn literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/idna/idnadata.py b/env/lib/python2.7/site-packages/idna/idnadata.py new file mode 100644 index 0000000..c48f1b5 --- /dev/null +++ b/env/lib/python2.7/site-packages/idna/idnadata.py @@ -0,0 +1,1585 @@ +# This file is automatically generated by tools/idna-data + +__version__ = "6.3.0" +scripts = { + 'Greek': ( + 0x37000000374, + 0x37500000378, + 0x37a0000037e, + 0x38400000385, + 0x38600000387, + 0x3880000038b, + 0x38c0000038d, + 0x38e000003a2, + 0x3a3000003e2, + 0x3f000000400, + 0x1d2600001d2b, + 0x1d5d00001d62, + 0x1d6600001d6b, + 0x1dbf00001dc0, + 0x1f0000001f16, + 0x1f1800001f1e, + 0x1f2000001f46, + 0x1f4800001f4e, + 0x1f5000001f58, + 0x1f5900001f5a, + 0x1f5b00001f5c, + 0x1f5d00001f5e, + 0x1f5f00001f7e, + 0x1f8000001fb5, + 0x1fb600001fc5, + 0x1fc600001fd4, + 0x1fd600001fdc, + 0x1fdd00001ff0, + 0x1ff200001ff5, + 0x1ff600001fff, + 0x212600002127, + 0x101400001018b, + 0x1d2000001d246, + ), + 'Han': ( + 0x2e8000002e9a, + 0x2e9b00002ef4, + 0x2f0000002fd6, + 0x300500003006, + 0x300700003008, + 0x30210000302a, + 0x30380000303c, + 0x340000004db6, + 0x4e0000009fcd, + 0xf9000000fa6e, + 0xfa700000fada, + 0x200000002a6d7, + 0x2a7000002b735, + 0x2b7400002b81e, + 0x2f8000002fa1e, + ), + 'Hebrew': ( + 0x591000005c8, + 0x5d0000005eb, + 0x5f0000005f5, + 0xfb1d0000fb37, + 0xfb380000fb3d, + 0xfb3e0000fb3f, + 0xfb400000fb42, + 0xfb430000fb45, + 0xfb460000fb50, + ), + 'Hiragana': ( + 0x304100003097, + 0x309d000030a0, + 0x1b0010001b002, + 0x1f2000001f201, + ), + 'Katakana': ( + 0x30a1000030fb, + 0x30fd00003100, + 0x31f000003200, + 0x32d0000032ff, + 0x330000003358, + 0xff660000ff70, + 0xff710000ff9e, + 0x1b0000001b001, + ), +} +joining_types = { + 0x600: 85, + 0x601: 85, + 0x602: 85, + 0x603: 85, + 0x604: 85, + 0x608: 85, + 0x60b: 85, + 0x620: 68, + 0x621: 85, + 0x622: 82, + 0x623: 82, + 0x624: 82, + 0x625: 82, + 0x626: 68, + 0x627: 82, + 0x628: 68, + 0x629: 82, + 0x62a: 68, + 0x62b: 68, + 0x62c: 68, + 0x62d: 68, + 0x62e: 68, + 0x62f: 82, + 0x630: 82, + 0x631: 82, + 0x632: 82, + 0x633: 68, + 0x634: 68, + 0x635: 68, + 0x636: 68, + 0x637: 68, + 0x638: 68, + 0x639: 68, + 0x63a: 68, + 0x63b: 68, + 0x63c: 68, + 0x63d: 68, + 0x63e: 68, + 0x63f: 68, + 0x640: 67, + 0x641: 68, + 0x642: 68, + 0x643: 68, + 0x644: 68, + 0x645: 68, + 0x646: 68, + 0x647: 68, + 0x648: 82, + 0x649: 68, + 0x64a: 68, + 0x66e: 68, + 0x66f: 68, + 0x671: 82, + 0x672: 82, + 0x673: 82, + 0x674: 85, + 0x675: 82, + 0x676: 82, + 0x677: 82, + 0x678: 68, + 0x679: 68, + 0x67a: 68, + 0x67b: 68, + 0x67c: 68, + 0x67d: 68, + 0x67e: 68, + 0x67f: 68, + 0x680: 68, + 0x681: 68, + 0x682: 68, + 0x683: 68, + 0x684: 68, + 0x685: 68, + 0x686: 68, + 0x687: 68, + 0x688: 82, + 0x689: 82, + 0x68a: 82, + 0x68b: 82, + 0x68c: 82, + 0x68d: 82, + 0x68e: 82, + 0x68f: 82, + 0x690: 82, + 0x691: 82, + 0x692: 82, + 0x693: 82, + 0x694: 82, + 0x695: 82, + 0x696: 82, + 0x697: 82, + 0x698: 82, + 0x699: 82, + 0x69a: 68, + 0x69b: 68, + 0x69c: 68, + 0x69d: 68, + 0x69e: 68, + 0x69f: 68, + 0x6a0: 68, + 0x6a1: 68, + 0x6a2: 68, + 0x6a3: 68, + 0x6a4: 68, + 0x6a5: 68, + 0x6a6: 68, + 0x6a7: 68, + 0x6a8: 68, + 0x6a9: 68, + 0x6aa: 68, + 0x6ab: 68, + 0x6ac: 68, + 0x6ad: 68, + 0x6ae: 68, + 0x6af: 68, + 0x6b0: 68, + 0x6b1: 68, + 0x6b2: 68, + 0x6b3: 68, + 0x6b4: 68, + 0x6b5: 68, + 0x6b6: 68, + 0x6b7: 68, + 0x6b8: 68, + 0x6b9: 68, + 0x6ba: 68, + 0x6bb: 68, + 0x6bc: 68, + 0x6bd: 68, + 0x6be: 68, + 0x6bf: 68, + 0x6c0: 82, + 0x6c1: 68, + 0x6c2: 68, + 0x6c3: 82, + 0x6c4: 82, + 0x6c5: 82, + 0x6c6: 82, + 0x6c7: 82, + 0x6c8: 82, + 0x6c9: 82, + 0x6ca: 82, + 0x6cb: 82, + 0x6cc: 68, + 0x6cd: 82, + 0x6ce: 68, + 0x6cf: 82, + 0x6d0: 68, + 0x6d1: 68, + 0x6d2: 82, + 0x6d3: 82, + 0x6d5: 82, + 0x6dd: 85, + 0x6ee: 82, + 0x6ef: 82, + 0x6fa: 68, + 0x6fb: 68, + 0x6fc: 68, + 0x6ff: 68, + 0x710: 82, + 0x712: 68, + 0x713: 68, + 0x714: 68, + 0x715: 82, + 0x716: 82, + 0x717: 82, + 0x718: 82, + 0x719: 82, + 0x71a: 68, + 0x71b: 68, + 0x71c: 68, + 0x71d: 68, + 0x71e: 82, + 0x71f: 68, + 0x720: 68, + 0x721: 68, + 0x722: 68, + 0x723: 68, + 0x724: 68, + 0x725: 68, + 0x726: 68, + 0x727: 68, + 0x728: 82, + 0x729: 68, + 0x72a: 82, + 0x72b: 68, + 0x72c: 82, + 0x72d: 68, + 0x72e: 68, + 0x72f: 82, + 0x74d: 82, + 0x74e: 68, + 0x74f: 68, + 0x750: 68, + 0x751: 68, + 0x752: 68, + 0x753: 68, + 0x754: 68, + 0x755: 68, + 0x756: 68, + 0x757: 68, + 0x758: 68, + 0x759: 82, + 0x75a: 82, + 0x75b: 82, + 0x75c: 68, + 0x75d: 68, + 0x75e: 68, + 0x75f: 68, + 0x760: 68, + 0x761: 68, + 0x762: 68, + 0x763: 68, + 0x764: 68, + 0x765: 68, + 0x766: 68, + 0x767: 68, + 0x768: 68, + 0x769: 68, + 0x76a: 68, + 0x76b: 82, + 0x76c: 82, + 0x76d: 68, + 0x76e: 68, + 0x76f: 68, + 0x770: 68, + 0x771: 82, + 0x772: 68, + 0x773: 82, + 0x774: 82, + 0x775: 68, + 0x776: 68, + 0x777: 68, + 0x778: 82, + 0x779: 82, + 0x77a: 68, + 0x77b: 68, + 0x77c: 68, + 0x77d: 68, + 0x77e: 68, + 0x77f: 68, + 0x7ca: 68, + 0x7cb: 68, + 0x7cc: 68, + 0x7cd: 68, + 0x7ce: 68, + 0x7cf: 68, + 0x7d0: 68, + 0x7d1: 68, + 0x7d2: 68, + 0x7d3: 68, + 0x7d4: 68, + 0x7d5: 68, + 0x7d6: 68, + 0x7d7: 68, + 0x7d8: 68, + 0x7d9: 68, + 0x7da: 68, + 0x7db: 68, + 0x7dc: 68, + 0x7dd: 68, + 0x7de: 68, + 0x7df: 68, + 0x7e0: 68, + 0x7e1: 68, + 0x7e2: 68, + 0x7e3: 68, + 0x7e4: 68, + 0x7e5: 68, + 0x7e6: 68, + 0x7e7: 68, + 0x7e8: 68, + 0x7e9: 68, + 0x7ea: 68, + 0x7fa: 67, + 0x840: 82, + 0x841: 68, + 0x842: 68, + 0x843: 68, + 0x844: 68, + 0x845: 68, + 0x846: 82, + 0x847: 68, + 0x848: 68, + 0x849: 82, + 0x84a: 68, + 0x84b: 68, + 0x84c: 68, + 0x84d: 68, + 0x84e: 68, + 0x84f: 82, + 0x850: 68, + 0x851: 68, + 0x852: 68, + 0x853: 68, + 0x854: 82, + 0x855: 68, + 0x856: 85, + 0x857: 85, + 0x858: 85, + 0x8a0: 68, + 0x8a2: 68, + 0x8a3: 68, + 0x8a4: 68, + 0x8a5: 68, + 0x8a6: 68, + 0x8a7: 68, + 0x8a8: 68, + 0x8a9: 68, + 0x8aa: 82, + 0x8ab: 82, + 0x8ac: 82, + 0x1806: 85, + 0x1807: 68, + 0x180a: 67, + 0x180e: 85, + 0x1820: 68, + 0x1821: 68, + 0x1822: 68, + 0x1823: 68, + 0x1824: 68, + 0x1825: 68, + 0x1826: 68, + 0x1827: 68, + 0x1828: 68, + 0x1829: 68, + 0x182a: 68, + 0x182b: 68, + 0x182c: 68, + 0x182d: 68, + 0x182e: 68, + 0x182f: 68, + 0x1830: 68, + 0x1831: 68, + 0x1832: 68, + 0x1833: 68, + 0x1834: 68, + 0x1835: 68, + 0x1836: 68, + 0x1837: 68, + 0x1838: 68, + 0x1839: 68, + 0x183a: 68, + 0x183b: 68, + 0x183c: 68, + 0x183d: 68, + 0x183e: 68, + 0x183f: 68, + 0x1840: 68, + 0x1841: 68, + 0x1842: 68, + 0x1843: 68, + 0x1844: 68, + 0x1845: 68, + 0x1846: 68, + 0x1847: 68, + 0x1848: 68, + 0x1849: 68, + 0x184a: 68, + 0x184b: 68, + 0x184c: 68, + 0x184d: 68, + 0x184e: 68, + 0x184f: 68, + 0x1850: 68, + 0x1851: 68, + 0x1852: 68, + 0x1853: 68, + 0x1854: 68, + 0x1855: 68, + 0x1856: 68, + 0x1857: 68, + 0x1858: 68, + 0x1859: 68, + 0x185a: 68, + 0x185b: 68, + 0x185c: 68, + 0x185d: 68, + 0x185e: 68, + 0x185f: 68, + 0x1860: 68, + 0x1861: 68, + 0x1862: 68, + 0x1863: 68, + 0x1864: 68, + 0x1865: 68, + 0x1866: 68, + 0x1867: 68, + 0x1868: 68, + 0x1869: 68, + 0x186a: 68, + 0x186b: 68, + 0x186c: 68, + 0x186d: 68, + 0x186e: 68, + 0x186f: 68, + 0x1870: 68, + 0x1871: 68, + 0x1872: 68, + 0x1873: 68, + 0x1874: 68, + 0x1875: 68, + 0x1876: 68, + 0x1877: 68, + 0x1880: 85, + 0x1881: 85, + 0x1882: 85, + 0x1883: 85, + 0x1884: 85, + 0x1885: 85, + 0x1886: 85, + 0x1887: 68, + 0x1888: 68, + 0x1889: 68, + 0x188a: 68, + 0x188b: 68, + 0x188c: 68, + 0x188d: 68, + 0x188e: 68, + 0x188f: 68, + 0x1890: 68, + 0x1891: 68, + 0x1892: 68, + 0x1893: 68, + 0x1894: 68, + 0x1895: 68, + 0x1896: 68, + 0x1897: 68, + 0x1898: 68, + 0x1899: 68, + 0x189a: 68, + 0x189b: 68, + 0x189c: 68, + 0x189d: 68, + 0x189e: 68, + 0x189f: 68, + 0x18a0: 68, + 0x18a1: 68, + 0x18a2: 68, + 0x18a3: 68, + 0x18a4: 68, + 0x18a5: 68, + 0x18a6: 68, + 0x18a7: 68, + 0x18a8: 68, + 0x18aa: 68, + 0x200c: 85, + 0x200d: 67, + 0x2066: 85, + 0x2067: 85, + 0x2068: 85, + 0x2069: 85, + 0xa840: 68, + 0xa841: 68, + 0xa842: 68, + 0xa843: 68, + 0xa844: 68, + 0xa845: 68, + 0xa846: 68, + 0xa847: 68, + 0xa848: 68, + 0xa849: 68, + 0xa84a: 68, + 0xa84b: 68, + 0xa84c: 68, + 0xa84d: 68, + 0xa84e: 68, + 0xa84f: 68, + 0xa850: 68, + 0xa851: 68, + 0xa852: 68, + 0xa853: 68, + 0xa854: 68, + 0xa855: 68, + 0xa856: 68, + 0xa857: 68, + 0xa858: 68, + 0xa859: 68, + 0xa85a: 68, + 0xa85b: 68, + 0xa85c: 68, + 0xa85d: 68, + 0xa85e: 68, + 0xa85f: 68, + 0xa860: 68, + 0xa861: 68, + 0xa862: 68, + 0xa863: 68, + 0xa864: 68, + 0xa865: 68, + 0xa866: 68, + 0xa867: 68, + 0xa868: 68, + 0xa869: 68, + 0xa86a: 68, + 0xa86b: 68, + 0xa86c: 68, + 0xa86d: 68, + 0xa86e: 68, + 0xa86f: 68, + 0xa870: 68, + 0xa871: 68, + 0xa872: 76, + 0xa873: 85, +} +codepoint_classes = { + 'PVALID': ( + 0x2d0000002e, + 0x300000003a, + 0x610000007b, + 0xdf000000f7, + 0xf800000100, + 0x10100000102, + 0x10300000104, + 0x10500000106, + 0x10700000108, + 0x1090000010a, + 0x10b0000010c, + 0x10d0000010e, + 0x10f00000110, + 0x11100000112, + 0x11300000114, + 0x11500000116, + 0x11700000118, + 0x1190000011a, + 0x11b0000011c, + 0x11d0000011e, + 0x11f00000120, + 0x12100000122, + 0x12300000124, + 0x12500000126, + 0x12700000128, + 0x1290000012a, + 0x12b0000012c, + 0x12d0000012e, + 0x12f00000130, + 0x13100000132, + 0x13500000136, + 0x13700000139, + 0x13a0000013b, + 0x13c0000013d, + 0x13e0000013f, + 0x14200000143, + 0x14400000145, + 0x14600000147, + 0x14800000149, + 0x14b0000014c, + 0x14d0000014e, + 0x14f00000150, + 0x15100000152, + 0x15300000154, + 0x15500000156, + 0x15700000158, + 0x1590000015a, + 0x15b0000015c, + 0x15d0000015e, + 0x15f00000160, + 0x16100000162, + 0x16300000164, + 0x16500000166, + 0x16700000168, + 0x1690000016a, + 0x16b0000016c, + 0x16d0000016e, + 0x16f00000170, + 0x17100000172, + 0x17300000174, + 0x17500000176, + 0x17700000178, + 0x17a0000017b, + 0x17c0000017d, + 0x17e0000017f, + 0x18000000181, + 0x18300000184, + 0x18500000186, + 0x18800000189, + 0x18c0000018e, + 0x19200000193, + 0x19500000196, + 0x1990000019c, + 0x19e0000019f, + 0x1a1000001a2, + 0x1a3000001a4, + 0x1a5000001a6, + 0x1a8000001a9, + 0x1aa000001ac, + 0x1ad000001ae, + 0x1b0000001b1, + 0x1b4000001b5, + 0x1b6000001b7, + 0x1b9000001bc, + 0x1bd000001c4, + 0x1ce000001cf, + 0x1d0000001d1, + 0x1d2000001d3, + 0x1d4000001d5, + 0x1d6000001d7, + 0x1d8000001d9, + 0x1da000001db, + 0x1dc000001de, + 0x1df000001e0, + 0x1e1000001e2, + 0x1e3000001e4, + 0x1e5000001e6, + 0x1e7000001e8, + 0x1e9000001ea, + 0x1eb000001ec, + 0x1ed000001ee, + 0x1ef000001f1, + 0x1f5000001f6, + 0x1f9000001fa, + 0x1fb000001fc, + 0x1fd000001fe, + 0x1ff00000200, + 0x20100000202, + 0x20300000204, + 0x20500000206, + 0x20700000208, + 0x2090000020a, + 0x20b0000020c, + 0x20d0000020e, + 0x20f00000210, + 0x21100000212, + 0x21300000214, + 0x21500000216, + 0x21700000218, + 0x2190000021a, + 0x21b0000021c, + 0x21d0000021e, + 0x21f00000220, + 0x22100000222, + 0x22300000224, + 0x22500000226, + 0x22700000228, + 0x2290000022a, + 0x22b0000022c, + 0x22d0000022e, + 0x22f00000230, + 0x23100000232, + 0x2330000023a, + 0x23c0000023d, + 0x23f00000241, + 0x24200000243, + 0x24700000248, + 0x2490000024a, + 0x24b0000024c, + 0x24d0000024e, + 0x24f000002b0, + 0x2b9000002c2, + 0x2c6000002d2, + 0x2ec000002ed, + 0x2ee000002ef, + 0x30000000340, + 0x34200000343, + 0x3460000034f, + 0x35000000370, + 0x37100000372, + 0x37300000374, + 0x37700000378, + 0x37b0000037e, + 0x39000000391, + 0x3ac000003cf, + 0x3d7000003d8, + 0x3d9000003da, + 0x3db000003dc, + 0x3dd000003de, + 0x3df000003e0, + 0x3e1000003e2, + 0x3e3000003e4, + 0x3e5000003e6, + 0x3e7000003e8, + 0x3e9000003ea, + 0x3eb000003ec, + 0x3ed000003ee, + 0x3ef000003f0, + 0x3f3000003f4, + 0x3f8000003f9, + 0x3fb000003fd, + 0x43000000460, + 0x46100000462, + 0x46300000464, + 0x46500000466, + 0x46700000468, + 0x4690000046a, + 0x46b0000046c, + 0x46d0000046e, + 0x46f00000470, + 0x47100000472, + 0x47300000474, + 0x47500000476, + 0x47700000478, + 0x4790000047a, + 0x47b0000047c, + 0x47d0000047e, + 0x47f00000480, + 0x48100000482, + 0x48300000488, + 0x48b0000048c, + 0x48d0000048e, + 0x48f00000490, + 0x49100000492, + 0x49300000494, + 0x49500000496, + 0x49700000498, + 0x4990000049a, + 0x49b0000049c, + 0x49d0000049e, + 0x49f000004a0, + 0x4a1000004a2, + 0x4a3000004a4, + 0x4a5000004a6, + 0x4a7000004a8, + 0x4a9000004aa, + 0x4ab000004ac, + 0x4ad000004ae, + 0x4af000004b0, + 0x4b1000004b2, + 0x4b3000004b4, + 0x4b5000004b6, + 0x4b7000004b8, + 0x4b9000004ba, + 0x4bb000004bc, + 0x4bd000004be, + 0x4bf000004c0, + 0x4c2000004c3, + 0x4c4000004c5, + 0x4c6000004c7, + 0x4c8000004c9, + 0x4ca000004cb, + 0x4cc000004cd, + 0x4ce000004d0, + 0x4d1000004d2, + 0x4d3000004d4, + 0x4d5000004d6, + 0x4d7000004d8, + 0x4d9000004da, + 0x4db000004dc, + 0x4dd000004de, + 0x4df000004e0, + 0x4e1000004e2, + 0x4e3000004e4, + 0x4e5000004e6, + 0x4e7000004e8, + 0x4e9000004ea, + 0x4eb000004ec, + 0x4ed000004ee, + 0x4ef000004f0, + 0x4f1000004f2, + 0x4f3000004f4, + 0x4f5000004f6, + 0x4f7000004f8, + 0x4f9000004fa, + 0x4fb000004fc, + 0x4fd000004fe, + 0x4ff00000500, + 0x50100000502, + 0x50300000504, + 0x50500000506, + 0x50700000508, + 0x5090000050a, + 0x50b0000050c, + 0x50d0000050e, + 0x50f00000510, + 0x51100000512, + 0x51300000514, + 0x51500000516, + 0x51700000518, + 0x5190000051a, + 0x51b0000051c, + 0x51d0000051e, + 0x51f00000520, + 0x52100000522, + 0x52300000524, + 0x52500000526, + 0x52700000528, + 0x5590000055a, + 0x56100000587, + 0x591000005be, + 0x5bf000005c0, + 0x5c1000005c3, + 0x5c4000005c6, + 0x5c7000005c8, + 0x5d0000005eb, + 0x5f0000005f3, + 0x6100000061b, + 0x62000000640, + 0x64100000660, + 0x66e00000675, + 0x679000006d4, + 0x6d5000006dd, + 0x6df000006e9, + 0x6ea000006f0, + 0x6fa00000700, + 0x7100000074b, + 0x74d000007b2, + 0x7c0000007f6, + 0x8000000082e, + 0x8400000085c, + 0x8a0000008a1, + 0x8a2000008ad, + 0x8e4000008ff, + 0x90000000958, + 0x96000000964, + 0x96600000970, + 0x97100000978, + 0x97900000980, + 0x98100000984, + 0x9850000098d, + 0x98f00000991, + 0x993000009a9, + 0x9aa000009b1, + 0x9b2000009b3, + 0x9b6000009ba, + 0x9bc000009c5, + 0x9c7000009c9, + 0x9cb000009cf, + 0x9d7000009d8, + 0x9e0000009e4, + 0x9e6000009f2, + 0xa0100000a04, + 0xa0500000a0b, + 0xa0f00000a11, + 0xa1300000a29, + 0xa2a00000a31, + 0xa3200000a33, + 0xa3500000a36, + 0xa3800000a3a, + 0xa3c00000a3d, + 0xa3e00000a43, + 0xa4700000a49, + 0xa4b00000a4e, + 0xa5100000a52, + 0xa5c00000a5d, + 0xa6600000a76, + 0xa8100000a84, + 0xa8500000a8e, + 0xa8f00000a92, + 0xa9300000aa9, + 0xaaa00000ab1, + 0xab200000ab4, + 0xab500000aba, + 0xabc00000ac6, + 0xac700000aca, + 0xacb00000ace, + 0xad000000ad1, + 0xae000000ae4, + 0xae600000af0, + 0xb0100000b04, + 0xb0500000b0d, + 0xb0f00000b11, + 0xb1300000b29, + 0xb2a00000b31, + 0xb3200000b34, + 0xb3500000b3a, + 0xb3c00000b45, + 0xb4700000b49, + 0xb4b00000b4e, + 0xb5600000b58, + 0xb5f00000b64, + 0xb6600000b70, + 0xb7100000b72, + 0xb8200000b84, + 0xb8500000b8b, + 0xb8e00000b91, + 0xb9200000b96, + 0xb9900000b9b, + 0xb9c00000b9d, + 0xb9e00000ba0, + 0xba300000ba5, + 0xba800000bab, + 0xbae00000bba, + 0xbbe00000bc3, + 0xbc600000bc9, + 0xbca00000bce, + 0xbd000000bd1, + 0xbd700000bd8, + 0xbe600000bf0, + 0xc0100000c04, + 0xc0500000c0d, + 0xc0e00000c11, + 0xc1200000c29, + 0xc2a00000c34, + 0xc3500000c3a, + 0xc3d00000c45, + 0xc4600000c49, + 0xc4a00000c4e, + 0xc5500000c57, + 0xc5800000c5a, + 0xc6000000c64, + 0xc6600000c70, + 0xc8200000c84, + 0xc8500000c8d, + 0xc8e00000c91, + 0xc9200000ca9, + 0xcaa00000cb4, + 0xcb500000cba, + 0xcbc00000cc5, + 0xcc600000cc9, + 0xcca00000cce, + 0xcd500000cd7, + 0xcde00000cdf, + 0xce000000ce4, + 0xce600000cf0, + 0xcf100000cf3, + 0xd0200000d04, + 0xd0500000d0d, + 0xd0e00000d11, + 0xd1200000d3b, + 0xd3d00000d45, + 0xd4600000d49, + 0xd4a00000d4f, + 0xd5700000d58, + 0xd6000000d64, + 0xd6600000d70, + 0xd7a00000d80, + 0xd8200000d84, + 0xd8500000d97, + 0xd9a00000db2, + 0xdb300000dbc, + 0xdbd00000dbe, + 0xdc000000dc7, + 0xdca00000dcb, + 0xdcf00000dd5, + 0xdd600000dd7, + 0xdd800000de0, + 0xdf200000df4, + 0xe0100000e33, + 0xe3400000e3b, + 0xe4000000e4f, + 0xe5000000e5a, + 0xe8100000e83, + 0xe8400000e85, + 0xe8700000e89, + 0xe8a00000e8b, + 0xe8d00000e8e, + 0xe9400000e98, + 0xe9900000ea0, + 0xea100000ea4, + 0xea500000ea6, + 0xea700000ea8, + 0xeaa00000eac, + 0xead00000eb3, + 0xeb400000eba, + 0xebb00000ebe, + 0xec000000ec5, + 0xec600000ec7, + 0xec800000ece, + 0xed000000eda, + 0xede00000ee0, + 0xf0000000f01, + 0xf0b00000f0c, + 0xf1800000f1a, + 0xf2000000f2a, + 0xf3500000f36, + 0xf3700000f38, + 0xf3900000f3a, + 0xf3e00000f43, + 0xf4400000f48, + 0xf4900000f4d, + 0xf4e00000f52, + 0xf5300000f57, + 0xf5800000f5c, + 0xf5d00000f69, + 0xf6a00000f6d, + 0xf7100000f73, + 0xf7400000f75, + 0xf7a00000f81, + 0xf8200000f85, + 0xf8600000f93, + 0xf9400000f98, + 0xf9900000f9d, + 0xf9e00000fa2, + 0xfa300000fa7, + 0xfa800000fac, + 0xfad00000fb9, + 0xfba00000fbd, + 0xfc600000fc7, + 0x10000000104a, + 0x10500000109e, + 0x10d0000010fb, + 0x10fd00001100, + 0x120000001249, + 0x124a0000124e, + 0x125000001257, + 0x125800001259, + 0x125a0000125e, + 0x126000001289, + 0x128a0000128e, + 0x1290000012b1, + 0x12b2000012b6, + 0x12b8000012bf, + 0x12c0000012c1, + 0x12c2000012c6, + 0x12c8000012d7, + 0x12d800001311, + 0x131200001316, + 0x13180000135b, + 0x135d00001360, + 0x138000001390, + 0x13a0000013f5, + 0x14010000166d, + 0x166f00001680, + 0x16810000169b, + 0x16a0000016eb, + 0x17000000170d, + 0x170e00001715, + 0x172000001735, + 0x174000001754, + 0x17600000176d, + 0x176e00001771, + 0x177200001774, + 0x1780000017b4, + 0x17b6000017d4, + 0x17d7000017d8, + 0x17dc000017de, + 0x17e0000017ea, + 0x18100000181a, + 0x182000001878, + 0x1880000018ab, + 0x18b0000018f6, + 0x19000000191d, + 0x19200000192c, + 0x19300000193c, + 0x19460000196e, + 0x197000001975, + 0x1980000019ac, + 0x19b0000019ca, + 0x19d0000019da, + 0x1a0000001a1c, + 0x1a2000001a5f, + 0x1a6000001a7d, + 0x1a7f00001a8a, + 0x1a9000001a9a, + 0x1aa700001aa8, + 0x1b0000001b4c, + 0x1b5000001b5a, + 0x1b6b00001b74, + 0x1b8000001bf4, + 0x1c0000001c38, + 0x1c4000001c4a, + 0x1c4d00001c7e, + 0x1cd000001cd3, + 0x1cd400001cf7, + 0x1d0000001d2c, + 0x1d2f00001d30, + 0x1d3b00001d3c, + 0x1d4e00001d4f, + 0x1d6b00001d78, + 0x1d7900001d9b, + 0x1dc000001de7, + 0x1dfc00001e00, + 0x1e0100001e02, + 0x1e0300001e04, + 0x1e0500001e06, + 0x1e0700001e08, + 0x1e0900001e0a, + 0x1e0b00001e0c, + 0x1e0d00001e0e, + 0x1e0f00001e10, + 0x1e1100001e12, + 0x1e1300001e14, + 0x1e1500001e16, + 0x1e1700001e18, + 0x1e1900001e1a, + 0x1e1b00001e1c, + 0x1e1d00001e1e, + 0x1e1f00001e20, + 0x1e2100001e22, + 0x1e2300001e24, + 0x1e2500001e26, + 0x1e2700001e28, + 0x1e2900001e2a, + 0x1e2b00001e2c, + 0x1e2d00001e2e, + 0x1e2f00001e30, + 0x1e3100001e32, + 0x1e3300001e34, + 0x1e3500001e36, + 0x1e3700001e38, + 0x1e3900001e3a, + 0x1e3b00001e3c, + 0x1e3d00001e3e, + 0x1e3f00001e40, + 0x1e4100001e42, + 0x1e4300001e44, + 0x1e4500001e46, + 0x1e4700001e48, + 0x1e4900001e4a, + 0x1e4b00001e4c, + 0x1e4d00001e4e, + 0x1e4f00001e50, + 0x1e5100001e52, + 0x1e5300001e54, + 0x1e5500001e56, + 0x1e5700001e58, + 0x1e5900001e5a, + 0x1e5b00001e5c, + 0x1e5d00001e5e, + 0x1e5f00001e60, + 0x1e6100001e62, + 0x1e6300001e64, + 0x1e6500001e66, + 0x1e6700001e68, + 0x1e6900001e6a, + 0x1e6b00001e6c, + 0x1e6d00001e6e, + 0x1e6f00001e70, + 0x1e7100001e72, + 0x1e7300001e74, + 0x1e7500001e76, + 0x1e7700001e78, + 0x1e7900001e7a, + 0x1e7b00001e7c, + 0x1e7d00001e7e, + 0x1e7f00001e80, + 0x1e8100001e82, + 0x1e8300001e84, + 0x1e8500001e86, + 0x1e8700001e88, + 0x1e8900001e8a, + 0x1e8b00001e8c, + 0x1e8d00001e8e, + 0x1e8f00001e90, + 0x1e9100001e92, + 0x1e9300001e94, + 0x1e9500001e9a, + 0x1e9c00001e9e, + 0x1e9f00001ea0, + 0x1ea100001ea2, + 0x1ea300001ea4, + 0x1ea500001ea6, + 0x1ea700001ea8, + 0x1ea900001eaa, + 0x1eab00001eac, + 0x1ead00001eae, + 0x1eaf00001eb0, + 0x1eb100001eb2, + 0x1eb300001eb4, + 0x1eb500001eb6, + 0x1eb700001eb8, + 0x1eb900001eba, + 0x1ebb00001ebc, + 0x1ebd00001ebe, + 0x1ebf00001ec0, + 0x1ec100001ec2, + 0x1ec300001ec4, + 0x1ec500001ec6, + 0x1ec700001ec8, + 0x1ec900001eca, + 0x1ecb00001ecc, + 0x1ecd00001ece, + 0x1ecf00001ed0, + 0x1ed100001ed2, + 0x1ed300001ed4, + 0x1ed500001ed6, + 0x1ed700001ed8, + 0x1ed900001eda, + 0x1edb00001edc, + 0x1edd00001ede, + 0x1edf00001ee0, + 0x1ee100001ee2, + 0x1ee300001ee4, + 0x1ee500001ee6, + 0x1ee700001ee8, + 0x1ee900001eea, + 0x1eeb00001eec, + 0x1eed00001eee, + 0x1eef00001ef0, + 0x1ef100001ef2, + 0x1ef300001ef4, + 0x1ef500001ef6, + 0x1ef700001ef8, + 0x1ef900001efa, + 0x1efb00001efc, + 0x1efd00001efe, + 0x1eff00001f08, + 0x1f1000001f16, + 0x1f2000001f28, + 0x1f3000001f38, + 0x1f4000001f46, + 0x1f5000001f58, + 0x1f6000001f68, + 0x1f7000001f71, + 0x1f7200001f73, + 0x1f7400001f75, + 0x1f7600001f77, + 0x1f7800001f79, + 0x1f7a00001f7b, + 0x1f7c00001f7d, + 0x1fb000001fb2, + 0x1fb600001fb7, + 0x1fc600001fc7, + 0x1fd000001fd3, + 0x1fd600001fd8, + 0x1fe000001fe3, + 0x1fe400001fe8, + 0x1ff600001ff7, + 0x214e0000214f, + 0x218400002185, + 0x2c3000002c5f, + 0x2c6100002c62, + 0x2c6500002c67, + 0x2c6800002c69, + 0x2c6a00002c6b, + 0x2c6c00002c6d, + 0x2c7100002c72, + 0x2c7300002c75, + 0x2c7600002c7c, + 0x2c8100002c82, + 0x2c8300002c84, + 0x2c8500002c86, + 0x2c8700002c88, + 0x2c8900002c8a, + 0x2c8b00002c8c, + 0x2c8d00002c8e, + 0x2c8f00002c90, + 0x2c9100002c92, + 0x2c9300002c94, + 0x2c9500002c96, + 0x2c9700002c98, + 0x2c9900002c9a, + 0x2c9b00002c9c, + 0x2c9d00002c9e, + 0x2c9f00002ca0, + 0x2ca100002ca2, + 0x2ca300002ca4, + 0x2ca500002ca6, + 0x2ca700002ca8, + 0x2ca900002caa, + 0x2cab00002cac, + 0x2cad00002cae, + 0x2caf00002cb0, + 0x2cb100002cb2, + 0x2cb300002cb4, + 0x2cb500002cb6, + 0x2cb700002cb8, + 0x2cb900002cba, + 0x2cbb00002cbc, + 0x2cbd00002cbe, + 0x2cbf00002cc0, + 0x2cc100002cc2, + 0x2cc300002cc4, + 0x2cc500002cc6, + 0x2cc700002cc8, + 0x2cc900002cca, + 0x2ccb00002ccc, + 0x2ccd00002cce, + 0x2ccf00002cd0, + 0x2cd100002cd2, + 0x2cd300002cd4, + 0x2cd500002cd6, + 0x2cd700002cd8, + 0x2cd900002cda, + 0x2cdb00002cdc, + 0x2cdd00002cde, + 0x2cdf00002ce0, + 0x2ce100002ce2, + 0x2ce300002ce5, + 0x2cec00002ced, + 0x2cee00002cf2, + 0x2cf300002cf4, + 0x2d0000002d26, + 0x2d2700002d28, + 0x2d2d00002d2e, + 0x2d3000002d68, + 0x2d7f00002d97, + 0x2da000002da7, + 0x2da800002daf, + 0x2db000002db7, + 0x2db800002dbf, + 0x2dc000002dc7, + 0x2dc800002dcf, + 0x2dd000002dd7, + 0x2dd800002ddf, + 0x2de000002e00, + 0x2e2f00002e30, + 0x300500003008, + 0x302a0000302e, + 0x303c0000303d, + 0x304100003097, + 0x30990000309b, + 0x309d0000309f, + 0x30a1000030fb, + 0x30fc000030ff, + 0x31050000312e, + 0x31a0000031bb, + 0x31f000003200, + 0x340000004db6, + 0x4e0000009fcd, + 0xa0000000a48d, + 0xa4d00000a4fe, + 0xa5000000a60d, + 0xa6100000a62c, + 0xa6410000a642, + 0xa6430000a644, + 0xa6450000a646, + 0xa6470000a648, + 0xa6490000a64a, + 0xa64b0000a64c, + 0xa64d0000a64e, + 0xa64f0000a650, + 0xa6510000a652, + 0xa6530000a654, + 0xa6550000a656, + 0xa6570000a658, + 0xa6590000a65a, + 0xa65b0000a65c, + 0xa65d0000a65e, + 0xa65f0000a660, + 0xa6610000a662, + 0xa6630000a664, + 0xa6650000a666, + 0xa6670000a668, + 0xa6690000a66a, + 0xa66b0000a66c, + 0xa66d0000a670, + 0xa6740000a67e, + 0xa67f0000a680, + 0xa6810000a682, + 0xa6830000a684, + 0xa6850000a686, + 0xa6870000a688, + 0xa6890000a68a, + 0xa68b0000a68c, + 0xa68d0000a68e, + 0xa68f0000a690, + 0xa6910000a692, + 0xa6930000a694, + 0xa6950000a696, + 0xa6970000a698, + 0xa69f0000a6e6, + 0xa6f00000a6f2, + 0xa7170000a720, + 0xa7230000a724, + 0xa7250000a726, + 0xa7270000a728, + 0xa7290000a72a, + 0xa72b0000a72c, + 0xa72d0000a72e, + 0xa72f0000a732, + 0xa7330000a734, + 0xa7350000a736, + 0xa7370000a738, + 0xa7390000a73a, + 0xa73b0000a73c, + 0xa73d0000a73e, + 0xa73f0000a740, + 0xa7410000a742, + 0xa7430000a744, + 0xa7450000a746, + 0xa7470000a748, + 0xa7490000a74a, + 0xa74b0000a74c, + 0xa74d0000a74e, + 0xa74f0000a750, + 0xa7510000a752, + 0xa7530000a754, + 0xa7550000a756, + 0xa7570000a758, + 0xa7590000a75a, + 0xa75b0000a75c, + 0xa75d0000a75e, + 0xa75f0000a760, + 0xa7610000a762, + 0xa7630000a764, + 0xa7650000a766, + 0xa7670000a768, + 0xa7690000a76a, + 0xa76b0000a76c, + 0xa76d0000a76e, + 0xa76f0000a770, + 0xa7710000a779, + 0xa77a0000a77b, + 0xa77c0000a77d, + 0xa77f0000a780, + 0xa7810000a782, + 0xa7830000a784, + 0xa7850000a786, + 0xa7870000a789, + 0xa78c0000a78d, + 0xa78e0000a78f, + 0xa7910000a792, + 0xa7930000a794, + 0xa7a10000a7a2, + 0xa7a30000a7a4, + 0xa7a50000a7a6, + 0xa7a70000a7a8, + 0xa7a90000a7aa, + 0xa7fa0000a828, + 0xa8400000a874, + 0xa8800000a8c5, + 0xa8d00000a8da, + 0xa8e00000a8f8, + 0xa8fb0000a8fc, + 0xa9000000a92e, + 0xa9300000a954, + 0xa9800000a9c1, + 0xa9cf0000a9da, + 0xaa000000aa37, + 0xaa400000aa4e, + 0xaa500000aa5a, + 0xaa600000aa77, + 0xaa7a0000aa7c, + 0xaa800000aac3, + 0xaadb0000aade, + 0xaae00000aaf0, + 0xaaf20000aaf7, + 0xab010000ab07, + 0xab090000ab0f, + 0xab110000ab17, + 0xab200000ab27, + 0xab280000ab2f, + 0xabc00000abeb, + 0xabec0000abee, + 0xabf00000abfa, + 0xac000000d7a4, + 0xfa0e0000fa10, + 0xfa110000fa12, + 0xfa130000fa15, + 0xfa1f0000fa20, + 0xfa210000fa22, + 0xfa230000fa25, + 0xfa270000fa2a, + 0xfb1e0000fb1f, + 0xfe200000fe27, + 0xfe730000fe74, + 0x100000001000c, + 0x1000d00010027, + 0x100280001003b, + 0x1003c0001003e, + 0x1003f0001004e, + 0x100500001005e, + 0x10080000100fb, + 0x101fd000101fe, + 0x102800001029d, + 0x102a0000102d1, + 0x103000001031f, + 0x1033000010341, + 0x103420001034a, + 0x103800001039e, + 0x103a0000103c4, + 0x103c8000103d0, + 0x104280001049e, + 0x104a0000104aa, + 0x1080000010806, + 0x1080800010809, + 0x1080a00010836, + 0x1083700010839, + 0x1083c0001083d, + 0x1083f00010856, + 0x1090000010916, + 0x109200001093a, + 0x10980000109b8, + 0x109be000109c0, + 0x10a0000010a04, + 0x10a0500010a07, + 0x10a0c00010a14, + 0x10a1500010a18, + 0x10a1900010a34, + 0x10a3800010a3b, + 0x10a3f00010a40, + 0x10a6000010a7d, + 0x10b0000010b36, + 0x10b4000010b56, + 0x10b6000010b73, + 0x10c0000010c49, + 0x1100000011047, + 0x1106600011070, + 0x11080000110bb, + 0x110d0000110e9, + 0x110f0000110fa, + 0x1110000011135, + 0x1113600011140, + 0x11180000111c5, + 0x111d0000111da, + 0x11680000116b8, + 0x116c0000116ca, + 0x120000001236f, + 0x130000001342f, + 0x1680000016a39, + 0x16f0000016f45, + 0x16f5000016f7f, + 0x16f8f00016fa0, + 0x1b0000001b002, + 0x200000002a6d7, + 0x2a7000002b735, + 0x2b7400002b81e, + ), + 'CONTEXTJ': ( + 0x200c0000200e, + ), + 'CONTEXTO': ( + 0xb7000000b8, + 0x37500000376, + 0x5f3000005f5, + 0x6600000066a, + 0x6f0000006fa, + 0x30fb000030fc, + ), +} diff --git a/env/lib/python2.7/site-packages/idna/idnadata.pyc b/env/lib/python2.7/site-packages/idna/idnadata.pyc new file mode 100644 index 0000000000000000000000000000000000000000..013124b4ed8ff0bea1b69dc1612adb20413848bf GIT binary patch literal 28537 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 32), (r & ((1 << 32) - 1)) + + +def intranges_contain(int_, ranges): + """Determine if `int_` falls into one of the ranges in `ranges`.""" + tuple_ = _encode_range(int_, 0) + pos = bisect.bisect_left(ranges, tuple_) + # we could be immediately ahead of a tuple (start, end) + # with start < int_ <= end + if pos > 0: + left, right = _decode_range(ranges[pos-1]) + if left <= int_ < right: + return True + # or we could be immediately behind a tuple (int_, end) + if pos < len(ranges): + left, _ = _decode_range(ranges[pos]) + if left == int_: + return True + return False diff --git a/env/lib/python2.7/site-packages/idna/intranges.pyc b/env/lib/python2.7/site-packages/idna/intranges.pyc new file mode 100644 index 0000000000000000000000000000000000000000..029ade34efab58fa516f93a46474597e56ee93a8 GIT binary patch literal 2127 zcmbtV?{3^g5TCU#NpqwEg8C;EiEWV3ok%Zf_*Nxt1r?}YigYPdRDk2ydlx6Zwc}kk ziIniAJOS^35Kq8^@c{6f*}Ghk_=0-Lu4i{Nx5OCBim3Z_@yb}8>auWNS0i0m zZ^ou^8+wxFMz=L@_71DsjM}n1@59th(z4XHogA2kwPj_;x@oQJVv$wWnXL7IeFH12 zCUxr#4mYN5j5F4!zNjo8_lHK0s%Fyd^_))|e}6+8o8Rwm=&;_F^>$wm27~@UKR;xD ztvki#eDtI>PN3FLQ>V}L6uw(nQCCedE^J!L3qD$hPudp~qrd5u)wuVG_}%Xhy2ao4 zJ3y zn5Ze)3W~MxVEr1V+s6^>PClcPk}NKQ5om*U3Uc>yfi5CCipc{Q{KbI4LlGap^*Z8v z6^!8!P+oX3$KGDA!!K|LuQZ$m{XdA-h#ELGh@;I66Vjx1Y}|vc#&60=vLz%WTUV?k zfu@9cVq!M5YqLXyJoW#IyP(XHN~ev{<}A&8c@C?}84xxSa8u+o^5?wm&Of(Ys`DWv=V{fZ-6-R3GaFJ2E7(9KAom_3 zPrumfvG!S^F$ec}Eg=&sC1i-xTev>t9R3)?F*K=+qr-#u#ivyW!KX+3=+NU4cQ}rG z@Jz^kilv-;%6#)8IK@yB@#Za@40({7c^<3-cIGiV&i(ev<3IS$nbW9W^b@#nBy9wh z&O5O*0Y%3hYK{nTylM-#*HGF&zyt-4N=Hioa(t|)`iZ*(I*pAeQhcgId)!daIAAF4 ziTluRbGSF47N=0$jbIUuB1!jpoc3-P(-Y%OGbt>JY^3**PRYI=;Y;AS&sVyFV%p6^ z;&H3p590nnic6S~Z;#L_HE>YibK#{tf|!(M zwWv5VKQBIB1IT4S5XJgHu6{{wfqp?|fo@W1W=@K3URY?3L79GLN?sy_C`e4sPE1dY dPf09E)GMeg;Q;Ef$<0qG%}KQb*-;F{3;-hQA?W}B literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/idna/uts46data.py b/env/lib/python2.7/site-packages/idna/uts46data.py new file mode 100644 index 0000000..f9b3236 --- /dev/null +++ b/env/lib/python2.7/site-packages/idna/uts46data.py @@ -0,0 +1,7634 @@ +# This file is automatically generated by tools/idna-data +# vim: set fileencoding=utf-8 : + +"""IDNA Mapping Table from UTS46.""" + + +__version__ = "6.3.0" +def _seg_0(): + return [ + (0x0, '3'), + (0x1, '3'), + (0x2, '3'), + (0x3, '3'), + (0x4, '3'), + (0x5, '3'), + (0x6, '3'), + (0x7, '3'), + (0x8, '3'), + (0x9, '3'), + (0xA, '3'), + (0xB, '3'), + (0xC, '3'), + (0xD, '3'), + (0xE, '3'), + (0xF, '3'), + (0x10, '3'), + (0x11, '3'), + (0x12, '3'), + (0x13, '3'), + (0x14, '3'), + (0x15, '3'), + (0x16, '3'), + (0x17, '3'), + (0x18, '3'), + (0x19, '3'), + (0x1A, '3'), + (0x1B, '3'), + (0x1C, '3'), + (0x1D, '3'), + (0x1E, '3'), + (0x1F, '3'), + (0x20, '3'), + (0x21, '3'), + (0x22, '3'), + (0x23, '3'), + (0x24, '3'), + (0x25, '3'), + (0x26, '3'), + (0x27, '3'), + (0x28, '3'), + (0x29, '3'), + (0x2A, '3'), + (0x2B, '3'), + (0x2C, '3'), + (0x2D, 'V'), + (0x2E, 'V'), + (0x2F, '3'), + (0x30, 'V'), + (0x31, 'V'), + (0x32, 'V'), + (0x33, 'V'), + (0x34, 'V'), + (0x35, 'V'), + (0x36, 'V'), + (0x37, 'V'), + (0x38, 'V'), + (0x39, 'V'), + (0x3A, '3'), + (0x3B, '3'), + (0x3C, '3'), + (0x3D, '3'), + (0x3E, '3'), + (0x3F, '3'), + (0x40, '3'), + (0x41, 'M', u'a'), + (0x42, 'M', u'b'), + (0x43, 'M', u'c'), + (0x44, 'M', u'd'), + (0x45, 'M', u'e'), + (0x46, 'M', u'f'), + (0x47, 'M', u'g'), + (0x48, 'M', u'h'), + (0x49, 'M', u'i'), + (0x4A, 'M', u'j'), + (0x4B, 'M', u'k'), + (0x4C, 'M', u'l'), + (0x4D, 'M', u'm'), + (0x4E, 'M', u'n'), + (0x4F, 'M', u'o'), + (0x50, 'M', u'p'), + (0x51, 'M', u'q'), + (0x52, 'M', u'r'), + (0x53, 'M', u's'), + (0x54, 'M', u't'), + (0x55, 'M', u'u'), + (0x56, 'M', u'v'), + (0x57, 'M', u'w'), + (0x58, 'M', u'x'), + (0x59, 'M', u'y'), + (0x5A, 'M', u'z'), + (0x5B, '3'), + (0x5C, '3'), + (0x5D, '3'), + (0x5E, '3'), + (0x5F, '3'), + (0x60, '3'), + (0x61, 'V'), + (0x62, 'V'), + (0x63, 'V'), + ] + +def _seg_1(): + return [ + (0x64, 'V'), + (0x65, 'V'), + (0x66, 'V'), + (0x67, 'V'), + (0x68, 'V'), + (0x69, 'V'), + (0x6A, 'V'), + (0x6B, 'V'), + (0x6C, 'V'), + (0x6D, 'V'), + (0x6E, 'V'), + (0x6F, 'V'), + (0x70, 'V'), + (0x71, 'V'), + (0x72, 'V'), + (0x73, 'V'), + (0x74, 'V'), + (0x75, 'V'), + (0x76, 'V'), + (0x77, 'V'), + (0x78, 'V'), + (0x79, 'V'), + (0x7A, 'V'), + (0x7B, '3'), + (0x7C, '3'), + (0x7D, '3'), + (0x7E, '3'), + (0x7F, '3'), + (0x80, 'X'), + (0x81, 'X'), + (0x82, 'X'), + (0x83, 'X'), + (0x84, 'X'), + (0x85, 'X'), + (0x86, 'X'), + (0x87, 'X'), + (0x88, 'X'), + (0x89, 'X'), + (0x8A, 'X'), + (0x8B, 'X'), + (0x8C, 'X'), + (0x8D, 'X'), + (0x8E, 'X'), + (0x8F, 'X'), + (0x90, 'X'), + (0x91, 'X'), + (0x92, 'X'), + (0x93, 'X'), + (0x94, 'X'), + (0x95, 'X'), + (0x96, 'X'), + (0x97, 'X'), + (0x98, 'X'), + (0x99, 'X'), + (0x9A, 'X'), + (0x9B, 'X'), + (0x9C, 'X'), + (0x9D, 'X'), + (0x9E, 'X'), + (0x9F, 'X'), + (0xA0, '3', u' '), + (0xA1, 'V'), + (0xA2, 'V'), + (0xA3, 'V'), + (0xA4, 'V'), + (0xA5, 'V'), + (0xA6, 'V'), + (0xA7, 'V'), + (0xA8, '3', u' ̈'), + (0xA9, 'V'), + (0xAA, 'M', u'a'), + (0xAB, 'V'), + (0xAC, 'V'), + (0xAD, 'I'), + (0xAE, 'V'), + (0xAF, '3', u' ̄'), + (0xB0, 'V'), + (0xB1, 'V'), + (0xB2, 'M', u'2'), + (0xB3, 'M', u'3'), + (0xB4, '3', u' ́'), + (0xB5, 'M', u'μ'), + (0xB6, 'V'), + (0xB7, 'V'), + (0xB8, '3', u' ̧'), + (0xB9, 'M', u'1'), + (0xBA, 'M', u'o'), + (0xBB, 'V'), + (0xBC, 'M', u'1⁄4'), + (0xBD, 'M', u'1⁄2'), + (0xBE, 'M', u'3⁄4'), + (0xBF, 'V'), + (0xC0, 'M', u'à'), + (0xC1, 'M', u'á'), + (0xC2, 'M', u'â'), + (0xC3, 'M', u'ã'), + (0xC4, 'M', u'ä'), + (0xC5, 'M', u'å'), + (0xC6, 'M', u'æ'), + (0xC7, 'M', u'ç'), + ] + +def _seg_2(): + return [ + (0xC8, 'M', u'è'), + (0xC9, 'M', u'é'), + (0xCA, 'M', u'ê'), + (0xCB, 'M', u'ë'), + (0xCC, 'M', u'ì'), + (0xCD, 'M', u'í'), + (0xCE, 'M', u'î'), + (0xCF, 'M', u'ï'), + (0xD0, 'M', u'ð'), + (0xD1, 'M', u'ñ'), + (0xD2, 'M', u'ò'), + (0xD3, 'M', u'ó'), + (0xD4, 'M', u'ô'), + (0xD5, 'M', u'õ'), + (0xD6, 'M', u'ö'), + (0xD7, 'V'), + (0xD8, 'M', u'ø'), + (0xD9, 'M', u'ù'), + (0xDA, 'M', u'ú'), + (0xDB, 'M', u'û'), + (0xDC, 'M', u'ü'), + (0xDD, 'M', u'ý'), + (0xDE, 'M', u'þ'), + (0xDF, 'D', u'ss'), + (0xE0, 'V'), + (0xE1, 'V'), + (0xE2, 'V'), + (0xE3, 'V'), + (0xE4, 'V'), + (0xE5, 'V'), + (0xE6, 'V'), + (0xE7, 'V'), + (0xE8, 'V'), + (0xE9, 'V'), + (0xEA, 'V'), + (0xEB, 'V'), + (0xEC, 'V'), + (0xED, 'V'), + (0xEE, 'V'), + (0xEF, 'V'), + (0xF0, 'V'), + (0xF1, 'V'), + (0xF2, 'V'), + (0xF3, 'V'), + (0xF4, 'V'), + (0xF5, 'V'), + (0xF6, 'V'), + (0xF7, 'V'), + (0xF8, 'V'), + (0xF9, 'V'), + (0xFA, 'V'), + (0xFB, 'V'), + (0xFC, 'V'), + (0xFD, 'V'), + (0xFE, 'V'), + (0xFF, 'V'), + (0x100, 'M', u'ā'), + (0x101, 'V'), + (0x102, 'M', u'ă'), + (0x103, 'V'), + (0x104, 'M', u'ą'), + (0x105, 'V'), + (0x106, 'M', u'ć'), + (0x107, 'V'), + (0x108, 'M', u'ĉ'), + (0x109, 'V'), + (0x10A, 'M', u'ċ'), + (0x10B, 'V'), + (0x10C, 'M', u'č'), + (0x10D, 'V'), + (0x10E, 'M', u'ď'), + (0x10F, 'V'), + (0x110, 'M', u'đ'), + (0x111, 'V'), + (0x112, 'M', u'ē'), + (0x113, 'V'), + (0x114, 'M', u'ĕ'), + (0x115, 'V'), + (0x116, 'M', u'ė'), + (0x117, 'V'), + (0x118, 'M', u'ę'), + (0x119, 'V'), + (0x11A, 'M', u'ě'), + (0x11B, 'V'), + (0x11C, 'M', u'ĝ'), + (0x11D, 'V'), + (0x11E, 'M', u'ğ'), + (0x11F, 'V'), + (0x120, 'M', u'ġ'), + (0x121, 'V'), + (0x122, 'M', u'ģ'), + (0x123, 'V'), + (0x124, 'M', u'ĥ'), + (0x125, 'V'), + (0x126, 'M', u'ħ'), + (0x127, 'V'), + (0x128, 'M', u'ĩ'), + (0x129, 'V'), + (0x12A, 'M', u'ī'), + (0x12B, 'V'), + ] + +def _seg_3(): + return [ + (0x12C, 'M', u'ĭ'), + (0x12D, 'V'), + (0x12E, 'M', u'į'), + (0x12F, 'V'), + (0x130, 'M', u'i̇'), + (0x131, 'V'), + (0x132, 'M', u'ij'), + (0x134, 'M', u'ĵ'), + (0x135, 'V'), + (0x136, 'M', u'ķ'), + (0x137, 'V'), + (0x139, 'M', u'ĺ'), + (0x13A, 'V'), + (0x13B, 'M', u'ļ'), + (0x13C, 'V'), + (0x13D, 'M', u'ľ'), + (0x13E, 'V'), + (0x13F, 'M', u'l·'), + (0x141, 'M', u'ł'), + (0x142, 'V'), + (0x143, 'M', u'ń'), + (0x144, 'V'), + (0x145, 'M', u'ņ'), + (0x146, 'V'), + (0x147, 'M', u'ň'), + (0x148, 'V'), + (0x149, 'M', u'ʼn'), + (0x14A, 'M', u'ŋ'), + (0x14B, 'V'), + (0x14C, 'M', u'ō'), + (0x14D, 'V'), + (0x14E, 'M', u'ŏ'), + (0x14F, 'V'), + (0x150, 'M', u'ő'), + (0x151, 'V'), + (0x152, 'M', u'œ'), + (0x153, 'V'), + (0x154, 'M', u'ŕ'), + (0x155, 'V'), + (0x156, 'M', u'ŗ'), + (0x157, 'V'), + (0x158, 'M', u'ř'), + (0x159, 'V'), + (0x15A, 'M', u'ś'), + (0x15B, 'V'), + (0x15C, 'M', u'ŝ'), + (0x15D, 'V'), + (0x15E, 'M', u'ş'), + (0x15F, 'V'), + (0x160, 'M', u'š'), + (0x161, 'V'), + (0x162, 'M', u'ţ'), + (0x163, 'V'), + (0x164, 'M', u'ť'), + (0x165, 'V'), + (0x166, 'M', u'ŧ'), + (0x167, 'V'), + (0x168, 'M', u'ũ'), + (0x169, 'V'), + (0x16A, 'M', u'ū'), + (0x16B, 'V'), + (0x16C, 'M', u'ŭ'), + (0x16D, 'V'), + (0x16E, 'M', u'ů'), + (0x16F, 'V'), + (0x170, 'M', u'ű'), + (0x171, 'V'), + (0x172, 'M', u'ų'), + (0x173, 'V'), + (0x174, 'M', u'ŵ'), + (0x175, 'V'), + (0x176, 'M', u'ŷ'), + (0x177, 'V'), + (0x178, 'M', u'ÿ'), + (0x179, 'M', u'ź'), + (0x17A, 'V'), + (0x17B, 'M', u'ż'), + (0x17C, 'V'), + (0x17D, 'M', u'ž'), + (0x17E, 'V'), + (0x17F, 'M', u's'), + (0x180, 'V'), + (0x181, 'M', u'ɓ'), + (0x182, 'M', u'ƃ'), + (0x183, 'V'), + (0x184, 'M', u'ƅ'), + (0x185, 'V'), + (0x186, 'M', u'ɔ'), + (0x187, 'M', u'ƈ'), + (0x188, 'V'), + (0x189, 'M', u'ɖ'), + (0x18A, 'M', u'ɗ'), + (0x18B, 'M', u'ƌ'), + (0x18C, 'V'), + (0x18E, 'M', u'ǝ'), + (0x18F, 'M', u'ə'), + (0x190, 'M', u'ɛ'), + (0x191, 'M', u'ƒ'), + (0x192, 'V'), + (0x193, 'M', u'ɠ'), + ] + +def _seg_4(): + return [ + (0x194, 'M', u'ɣ'), + (0x195, 'V'), + (0x196, 'M', u'ɩ'), + (0x197, 'M', u'ɨ'), + (0x198, 'M', u'ƙ'), + (0x199, 'V'), + (0x19C, 'M', u'ɯ'), + (0x19D, 'M', u'ɲ'), + (0x19E, 'V'), + (0x19F, 'M', u'ɵ'), + (0x1A0, 'M', u'ơ'), + (0x1A1, 'V'), + (0x1A2, 'M', u'ƣ'), + (0x1A3, 'V'), + (0x1A4, 'M', u'ƥ'), + (0x1A5, 'V'), + (0x1A6, 'M', u'ʀ'), + (0x1A7, 'M', u'ƨ'), + (0x1A8, 'V'), + (0x1A9, 'M', u'ʃ'), + (0x1AA, 'V'), + (0x1AC, 'M', u'ƭ'), + (0x1AD, 'V'), + (0x1AE, 'M', u'ʈ'), + (0x1AF, 'M', u'ư'), + (0x1B0, 'V'), + (0x1B1, 'M', u'ʊ'), + (0x1B2, 'M', u'ʋ'), + (0x1B3, 'M', u'ƴ'), + (0x1B4, 'V'), + (0x1B5, 'M', u'ƶ'), + (0x1B6, 'V'), + (0x1B7, 'M', u'ʒ'), + (0x1B8, 'M', u'ƹ'), + (0x1B9, 'V'), + (0x1BC, 'M', u'ƽ'), + (0x1BD, 'V'), + (0x1C4, 'M', u'dž'), + (0x1C7, 'M', u'lj'), + (0x1CA, 'M', u'nj'), + (0x1CD, 'M', u'ǎ'), + (0x1CE, 'V'), + (0x1CF, 'M', u'ǐ'), + (0x1D0, 'V'), + (0x1D1, 'M', u'ǒ'), + (0x1D2, 'V'), + (0x1D3, 'M', u'ǔ'), + (0x1D4, 'V'), + (0x1D5, 'M', u'ǖ'), + (0x1D6, 'V'), + (0x1D7, 'M', u'ǘ'), + (0x1D8, 'V'), + (0x1D9, 'M', u'ǚ'), + (0x1DA, 'V'), + (0x1DB, 'M', u'ǜ'), + (0x1DC, 'V'), + (0x1DE, 'M', u'ǟ'), + (0x1DF, 'V'), + (0x1E0, 'M', u'ǡ'), + (0x1E1, 'V'), + (0x1E2, 'M', u'ǣ'), + (0x1E3, 'V'), + (0x1E4, 'M', u'ǥ'), + (0x1E5, 'V'), + (0x1E6, 'M', u'ǧ'), + (0x1E7, 'V'), + (0x1E8, 'M', u'ǩ'), + (0x1E9, 'V'), + (0x1EA, 'M', u'ǫ'), + (0x1EB, 'V'), + (0x1EC, 'M', u'ǭ'), + (0x1ED, 'V'), + (0x1EE, 'M', u'ǯ'), + (0x1EF, 'V'), + (0x1F1, 'M', u'dz'), + (0x1F4, 'M', u'ǵ'), + (0x1F5, 'V'), + (0x1F6, 'M', u'ƕ'), + (0x1F7, 'M', u'ƿ'), + (0x1F8, 'M', u'ǹ'), + (0x1F9, 'V'), + (0x1FA, 'M', u'ǻ'), + (0x1FB, 'V'), + (0x1FC, 'M', u'ǽ'), + (0x1FD, 'V'), + (0x1FE, 'M', u'ǿ'), + (0x1FF, 'V'), + (0x200, 'M', u'ȁ'), + (0x201, 'V'), + (0x202, 'M', u'ȃ'), + (0x203, 'V'), + (0x204, 'M', u'ȅ'), + (0x205, 'V'), + (0x206, 'M', u'ȇ'), + (0x207, 'V'), + (0x208, 'M', u'ȉ'), + (0x209, 'V'), + (0x20A, 'M', u'ȋ'), + (0x20B, 'V'), + (0x20C, 'M', u'ȍ'), + ] + +def _seg_5(): + return [ + (0x20D, 'V'), + (0x20E, 'M', u'ȏ'), + (0x20F, 'V'), + (0x210, 'M', u'ȑ'), + (0x211, 'V'), + (0x212, 'M', u'ȓ'), + (0x213, 'V'), + (0x214, 'M', u'ȕ'), + (0x215, 'V'), + (0x216, 'M', u'ȗ'), + (0x217, 'V'), + (0x218, 'M', u'ș'), + (0x219, 'V'), + (0x21A, 'M', u'ț'), + (0x21B, 'V'), + (0x21C, 'M', u'ȝ'), + (0x21D, 'V'), + (0x21E, 'M', u'ȟ'), + (0x21F, 'V'), + (0x220, 'M', u'ƞ'), + (0x221, 'V'), + (0x222, 'M', u'ȣ'), + (0x223, 'V'), + (0x224, 'M', u'ȥ'), + (0x225, 'V'), + (0x226, 'M', u'ȧ'), + (0x227, 'V'), + (0x228, 'M', u'ȩ'), + (0x229, 'V'), + (0x22A, 'M', u'ȫ'), + (0x22B, 'V'), + (0x22C, 'M', u'ȭ'), + (0x22D, 'V'), + (0x22E, 'M', u'ȯ'), + (0x22F, 'V'), + (0x230, 'M', u'ȱ'), + (0x231, 'V'), + (0x232, 'M', u'ȳ'), + (0x233, 'V'), + (0x23A, 'M', u'ⱥ'), + (0x23B, 'M', u'ȼ'), + (0x23C, 'V'), + (0x23D, 'M', u'ƚ'), + (0x23E, 'M', u'ⱦ'), + (0x23F, 'V'), + (0x241, 'M', u'ɂ'), + (0x242, 'V'), + (0x243, 'M', u'ƀ'), + (0x244, 'M', u'ʉ'), + (0x245, 'M', u'ʌ'), + (0x246, 'M', u'ɇ'), + (0x247, 'V'), + (0x248, 'M', u'ɉ'), + (0x249, 'V'), + (0x24A, 'M', u'ɋ'), + (0x24B, 'V'), + (0x24C, 'M', u'ɍ'), + (0x24D, 'V'), + (0x24E, 'M', u'ɏ'), + (0x24F, 'V'), + (0x2B0, 'M', u'h'), + (0x2B1, 'M', u'ɦ'), + (0x2B2, 'M', u'j'), + (0x2B3, 'M', u'r'), + (0x2B4, 'M', u'ɹ'), + (0x2B5, 'M', u'ɻ'), + (0x2B6, 'M', u'ʁ'), + (0x2B7, 'M', u'w'), + (0x2B8, 'M', u'y'), + (0x2B9, 'V'), + (0x2D8, '3', u' ̆'), + (0x2D9, '3', u' ̇'), + (0x2DA, '3', u' ̊'), + (0x2DB, '3', u' ̨'), + (0x2DC, '3', u' ̃'), + (0x2DD, '3', u' ̋'), + (0x2DE, 'V'), + (0x2E0, 'M', u'ɣ'), + (0x2E1, 'M', u'l'), + (0x2E2, 'M', u's'), + (0x2E3, 'M', u'x'), + (0x2E4, 'M', u'ʕ'), + (0x2E5, 'V'), + (0x340, 'M', u'̀'), + (0x341, 'M', u'́'), + (0x342, 'V'), + (0x343, 'M', u'̓'), + (0x344, 'M', u'̈́'), + (0x345, 'M', u'ι'), + (0x346, 'V'), + (0x34F, 'I'), + (0x350, 'V'), + (0x370, 'M', u'ͱ'), + (0x371, 'V'), + (0x372, 'M', u'ͳ'), + (0x373, 'V'), + (0x374, 'M', u'ʹ'), + (0x375, 'V'), + (0x376, 'M', u'ͷ'), + (0x377, 'V'), + ] + +def _seg_6(): + return [ + (0x378, 'X'), + (0x37A, '3', u' ι'), + (0x37B, 'V'), + (0x37E, '3', u';'), + (0x37F, 'X'), + (0x384, '3', u' ́'), + (0x385, '3', u' ̈́'), + (0x386, 'M', u'ά'), + (0x387, 'M', u'·'), + (0x388, 'M', u'έ'), + (0x389, 'M', u'ή'), + (0x38A, 'M', u'ί'), + (0x38B, 'X'), + (0x38C, 'M', u'ό'), + (0x38D, 'X'), + (0x38E, 'M', u'ύ'), + (0x38F, 'M', u'ώ'), + (0x390, 'V'), + (0x391, 'M', u'α'), + (0x392, 'M', u'β'), + (0x393, 'M', u'γ'), + (0x394, 'M', u'δ'), + (0x395, 'M', u'ε'), + (0x396, 'M', u'ζ'), + (0x397, 'M', u'η'), + (0x398, 'M', u'θ'), + (0x399, 'M', u'ι'), + (0x39A, 'M', u'κ'), + (0x39B, 'M', u'λ'), + (0x39C, 'M', u'μ'), + (0x39D, 'M', u'ν'), + (0x39E, 'M', u'ξ'), + (0x39F, 'M', u'ο'), + (0x3A0, 'M', u'π'), + (0x3A1, 'M', u'ρ'), + (0x3A2, 'X'), + (0x3A3, 'M', u'σ'), + (0x3A4, 'M', u'τ'), + (0x3A5, 'M', u'υ'), + (0x3A6, 'M', u'φ'), + (0x3A7, 'M', u'χ'), + (0x3A8, 'M', u'ψ'), + (0x3A9, 'M', u'ω'), + (0x3AA, 'M', u'ϊ'), + (0x3AB, 'M', u'ϋ'), + (0x3AC, 'V'), + (0x3C2, 'D', u'σ'), + (0x3C3, 'V'), + (0x3CF, 'M', u'ϗ'), + (0x3D0, 'M', u'β'), + (0x3D1, 'M', u'θ'), + (0x3D2, 'M', u'υ'), + (0x3D3, 'M', u'ύ'), + (0x3D4, 'M', u'ϋ'), + (0x3D5, 'M', u'φ'), + (0x3D6, 'M', u'π'), + (0x3D7, 'V'), + (0x3D8, 'M', u'ϙ'), + (0x3D9, 'V'), + (0x3DA, 'M', u'ϛ'), + (0x3DB, 'V'), + (0x3DC, 'M', u'ϝ'), + (0x3DD, 'V'), + (0x3DE, 'M', u'ϟ'), + (0x3DF, 'V'), + (0x3E0, 'M', u'ϡ'), + (0x3E1, 'V'), + (0x3E2, 'M', u'ϣ'), + (0x3E3, 'V'), + (0x3E4, 'M', u'ϥ'), + (0x3E5, 'V'), + (0x3E6, 'M', u'ϧ'), + (0x3E7, 'V'), + (0x3E8, 'M', u'ϩ'), + (0x3E9, 'V'), + (0x3EA, 'M', u'ϫ'), + (0x3EB, 'V'), + (0x3EC, 'M', u'ϭ'), + (0x3ED, 'V'), + (0x3EE, 'M', u'ϯ'), + (0x3EF, 'V'), + (0x3F0, 'M', u'κ'), + (0x3F1, 'M', u'ρ'), + (0x3F2, 'M', u'σ'), + (0x3F3, 'V'), + (0x3F4, 'M', u'θ'), + (0x3F5, 'M', u'ε'), + (0x3F6, 'V'), + (0x3F7, 'M', u'ϸ'), + (0x3F8, 'V'), + (0x3F9, 'M', u'σ'), + (0x3FA, 'M', u'ϻ'), + (0x3FB, 'V'), + (0x3FD, 'M', u'ͻ'), + (0x3FE, 'M', u'ͼ'), + (0x3FF, 'M', u'ͽ'), + (0x400, 'M', u'ѐ'), + (0x401, 'M', u'ё'), + (0x402, 'M', u'ђ'), + (0x403, 'M', u'ѓ'), + ] + +def _seg_7(): + return [ + (0x404, 'M', u'є'), + (0x405, 'M', u'ѕ'), + (0x406, 'M', u'і'), + (0x407, 'M', u'ї'), + (0x408, 'M', u'ј'), + (0x409, 'M', u'љ'), + (0x40A, 'M', u'њ'), + (0x40B, 'M', u'ћ'), + (0x40C, 'M', u'ќ'), + (0x40D, 'M', u'ѝ'), + (0x40E, 'M', u'ў'), + (0x40F, 'M', u'џ'), + (0x410, 'M', u'а'), + (0x411, 'M', u'б'), + (0x412, 'M', u'в'), + (0x413, 'M', u'г'), + (0x414, 'M', u'д'), + (0x415, 'M', u'е'), + (0x416, 'M', u'ж'), + (0x417, 'M', u'з'), + (0x418, 'M', u'и'), + (0x419, 'M', u'й'), + (0x41A, 'M', u'к'), + (0x41B, 'M', u'л'), + (0x41C, 'M', u'м'), + (0x41D, 'M', u'н'), + (0x41E, 'M', u'о'), + (0x41F, 'M', u'п'), + (0x420, 'M', u'р'), + (0x421, 'M', u'с'), + (0x422, 'M', u'т'), + (0x423, 'M', u'у'), + (0x424, 'M', u'ф'), + (0x425, 'M', u'х'), + (0x426, 'M', u'ц'), + (0x427, 'M', u'ч'), + (0x428, 'M', u'ш'), + (0x429, 'M', u'щ'), + (0x42A, 'M', u'ъ'), + (0x42B, 'M', u'ы'), + (0x42C, 'M', u'ь'), + (0x42D, 'M', u'э'), + (0x42E, 'M', u'ю'), + (0x42F, 'M', u'я'), + (0x430, 'V'), + (0x460, 'M', u'ѡ'), + (0x461, 'V'), + (0x462, 'M', u'ѣ'), + (0x463, 'V'), + (0x464, 'M', u'ѥ'), + (0x465, 'V'), + (0x466, 'M', u'ѧ'), + (0x467, 'V'), + (0x468, 'M', u'ѩ'), + (0x469, 'V'), + (0x46A, 'M', u'ѫ'), + (0x46B, 'V'), + (0x46C, 'M', u'ѭ'), + (0x46D, 'V'), + (0x46E, 'M', u'ѯ'), + (0x46F, 'V'), + (0x470, 'M', u'ѱ'), + (0x471, 'V'), + (0x472, 'M', u'ѳ'), + (0x473, 'V'), + (0x474, 'M', u'ѵ'), + (0x475, 'V'), + (0x476, 'M', u'ѷ'), + (0x477, 'V'), + (0x478, 'M', u'ѹ'), + (0x479, 'V'), + (0x47A, 'M', u'ѻ'), + (0x47B, 'V'), + (0x47C, 'M', u'ѽ'), + (0x47D, 'V'), + (0x47E, 'M', u'ѿ'), + (0x47F, 'V'), + (0x480, 'M', u'ҁ'), + (0x481, 'V'), + (0x48A, 'M', u'ҋ'), + (0x48B, 'V'), + (0x48C, 'M', u'ҍ'), + (0x48D, 'V'), + (0x48E, 'M', u'ҏ'), + (0x48F, 'V'), + (0x490, 'M', u'ґ'), + (0x491, 'V'), + (0x492, 'M', u'ғ'), + (0x493, 'V'), + (0x494, 'M', u'ҕ'), + (0x495, 'V'), + (0x496, 'M', u'җ'), + (0x497, 'V'), + (0x498, 'M', u'ҙ'), + (0x499, 'V'), + (0x49A, 'M', u'қ'), + (0x49B, 'V'), + (0x49C, 'M', u'ҝ'), + (0x49D, 'V'), + (0x49E, 'M', u'ҟ'), + ] + +def _seg_8(): + return [ + (0x49F, 'V'), + (0x4A0, 'M', u'ҡ'), + (0x4A1, 'V'), + (0x4A2, 'M', u'ң'), + (0x4A3, 'V'), + (0x4A4, 'M', u'ҥ'), + (0x4A5, 'V'), + (0x4A6, 'M', u'ҧ'), + (0x4A7, 'V'), + (0x4A8, 'M', u'ҩ'), + (0x4A9, 'V'), + (0x4AA, 'M', u'ҫ'), + (0x4AB, 'V'), + (0x4AC, 'M', u'ҭ'), + (0x4AD, 'V'), + (0x4AE, 'M', u'ү'), + (0x4AF, 'V'), + (0x4B0, 'M', u'ұ'), + (0x4B1, 'V'), + (0x4B2, 'M', u'ҳ'), + (0x4B3, 'V'), + (0x4B4, 'M', u'ҵ'), + (0x4B5, 'V'), + (0x4B6, 'M', u'ҷ'), + (0x4B7, 'V'), + (0x4B8, 'M', u'ҹ'), + (0x4B9, 'V'), + (0x4BA, 'M', u'һ'), + (0x4BB, 'V'), + (0x4BC, 'M', u'ҽ'), + (0x4BD, 'V'), + (0x4BE, 'M', u'ҿ'), + (0x4BF, 'V'), + (0x4C0, 'X'), + (0x4C1, 'M', u'ӂ'), + (0x4C2, 'V'), + (0x4C3, 'M', u'ӄ'), + (0x4C4, 'V'), + (0x4C5, 'M', u'ӆ'), + (0x4C6, 'V'), + (0x4C7, 'M', u'ӈ'), + (0x4C8, 'V'), + (0x4C9, 'M', u'ӊ'), + (0x4CA, 'V'), + (0x4CB, 'M', u'ӌ'), + (0x4CC, 'V'), + (0x4CD, 'M', u'ӎ'), + (0x4CE, 'V'), + (0x4D0, 'M', u'ӑ'), + (0x4D1, 'V'), + (0x4D2, 'M', u'ӓ'), + (0x4D3, 'V'), + (0x4D4, 'M', u'ӕ'), + (0x4D5, 'V'), + (0x4D6, 'M', u'ӗ'), + (0x4D7, 'V'), + (0x4D8, 'M', u'ә'), + (0x4D9, 'V'), + (0x4DA, 'M', u'ӛ'), + (0x4DB, 'V'), + (0x4DC, 'M', u'ӝ'), + (0x4DD, 'V'), + (0x4DE, 'M', u'ӟ'), + (0x4DF, 'V'), + (0x4E0, 'M', u'ӡ'), + (0x4E1, 'V'), + (0x4E2, 'M', u'ӣ'), + (0x4E3, 'V'), + (0x4E4, 'M', u'ӥ'), + (0x4E5, 'V'), + (0x4E6, 'M', u'ӧ'), + (0x4E7, 'V'), + (0x4E8, 'M', u'ө'), + (0x4E9, 'V'), + (0x4EA, 'M', u'ӫ'), + (0x4EB, 'V'), + (0x4EC, 'M', u'ӭ'), + (0x4ED, 'V'), + (0x4EE, 'M', u'ӯ'), + (0x4EF, 'V'), + (0x4F0, 'M', u'ӱ'), + (0x4F1, 'V'), + (0x4F2, 'M', u'ӳ'), + (0x4F3, 'V'), + (0x4F4, 'M', u'ӵ'), + (0x4F5, 'V'), + (0x4F6, 'M', u'ӷ'), + (0x4F7, 'V'), + (0x4F8, 'M', u'ӹ'), + (0x4F9, 'V'), + (0x4FA, 'M', u'ӻ'), + (0x4FB, 'V'), + (0x4FC, 'M', u'ӽ'), + (0x4FD, 'V'), + (0x4FE, 'M', u'ӿ'), + (0x4FF, 'V'), + (0x500, 'M', u'ԁ'), + (0x501, 'V'), + (0x502, 'M', u'ԃ'), + (0x503, 'V'), + ] + +def _seg_9(): + return [ + (0x504, 'M', u'ԅ'), + (0x505, 'V'), + (0x506, 'M', u'ԇ'), + (0x507, 'V'), + (0x508, 'M', u'ԉ'), + (0x509, 'V'), + (0x50A, 'M', u'ԋ'), + (0x50B, 'V'), + (0x50C, 'M', u'ԍ'), + (0x50D, 'V'), + (0x50E, 'M', u'ԏ'), + (0x50F, 'V'), + (0x510, 'M', u'ԑ'), + (0x511, 'V'), + (0x512, 'M', u'ԓ'), + (0x513, 'V'), + (0x514, 'M', u'ԕ'), + (0x515, 'V'), + (0x516, 'M', u'ԗ'), + (0x517, 'V'), + (0x518, 'M', u'ԙ'), + (0x519, 'V'), + (0x51A, 'M', u'ԛ'), + (0x51B, 'V'), + (0x51C, 'M', u'ԝ'), + (0x51D, 'V'), + (0x51E, 'M', u'ԟ'), + (0x51F, 'V'), + (0x520, 'M', u'ԡ'), + (0x521, 'V'), + (0x522, 'M', u'ԣ'), + (0x523, 'V'), + (0x524, 'M', u'ԥ'), + (0x525, 'V'), + (0x526, 'M', u'ԧ'), + (0x527, 'V'), + (0x528, 'X'), + (0x531, 'M', u'ա'), + (0x532, 'M', u'բ'), + (0x533, 'M', u'գ'), + (0x534, 'M', u'դ'), + (0x535, 'M', u'ե'), + (0x536, 'M', u'զ'), + (0x537, 'M', u'է'), + (0x538, 'M', u'ը'), + (0x539, 'M', u'թ'), + (0x53A, 'M', u'ժ'), + (0x53B, 'M', u'ի'), + (0x53C, 'M', u'լ'), + (0x53D, 'M', u'խ'), + (0x53E, 'M', u'ծ'), + (0x53F, 'M', u'կ'), + (0x540, 'M', u'հ'), + (0x541, 'M', u'ձ'), + (0x542, 'M', u'ղ'), + (0x543, 'M', u'ճ'), + (0x544, 'M', u'մ'), + (0x545, 'M', u'յ'), + (0x546, 'M', u'ն'), + (0x547, 'M', u'շ'), + (0x548, 'M', u'ո'), + (0x549, 'M', u'չ'), + (0x54A, 'M', u'պ'), + (0x54B, 'M', u'ջ'), + (0x54C, 'M', u'ռ'), + (0x54D, 'M', u'ս'), + (0x54E, 'M', u'վ'), + (0x54F, 'M', u'տ'), + (0x550, 'M', u'ր'), + (0x551, 'M', u'ց'), + (0x552, 'M', u'ւ'), + (0x553, 'M', u'փ'), + (0x554, 'M', u'ք'), + (0x555, 'M', u'օ'), + (0x556, 'M', u'ֆ'), + (0x557, 'X'), + (0x559, 'V'), + (0x560, 'X'), + (0x561, 'V'), + (0x587, 'M', u'եւ'), + (0x588, 'X'), + (0x589, 'V'), + (0x58B, 'X'), + (0x58F, 'V'), + (0x590, 'X'), + (0x591, 'V'), + (0x5C8, 'X'), + (0x5D0, 'V'), + (0x5EB, 'X'), + (0x5F0, 'V'), + (0x5F5, 'X'), + (0x606, 'V'), + (0x61C, 'X'), + (0x61E, 'V'), + (0x675, 'M', u'اٴ'), + (0x676, 'M', u'وٴ'), + (0x677, 'M', u'ۇٴ'), + (0x678, 'M', u'يٴ'), + (0x679, 'V'), + (0x6DD, 'X'), + ] + +def _seg_10(): + return [ + (0x6DE, 'V'), + (0x70E, 'X'), + (0x710, 'V'), + (0x74B, 'X'), + (0x74D, 'V'), + (0x7B2, 'X'), + (0x7C0, 'V'), + (0x7FB, 'X'), + (0x800, 'V'), + (0x82E, 'X'), + (0x830, 'V'), + (0x83F, 'X'), + (0x840, 'V'), + (0x85C, 'X'), + (0x85E, 'V'), + (0x85F, 'X'), + (0x8A0, 'V'), + (0x8A1, 'X'), + (0x8A2, 'V'), + (0x8AD, 'X'), + (0x8E4, 'V'), + (0x8FF, 'X'), + (0x900, 'V'), + (0x958, 'M', u'क़'), + (0x959, 'M', u'ख़'), + (0x95A, 'M', u'ग़'), + (0x95B, 'M', u'ज़'), + (0x95C, 'M', u'ड़'), + (0x95D, 'M', u'ढ़'), + (0x95E, 'M', u'फ़'), + (0x95F, 'M', u'य़'), + (0x960, 'V'), + (0x978, 'X'), + (0x979, 'V'), + (0x980, 'X'), + (0x981, 'V'), + (0x984, 'X'), + (0x985, 'V'), + (0x98D, 'X'), + (0x98F, 'V'), + (0x991, 'X'), + (0x993, 'V'), + (0x9A9, 'X'), + (0x9AA, 'V'), + (0x9B1, 'X'), + (0x9B2, 'V'), + (0x9B3, 'X'), + (0x9B6, 'V'), + (0x9BA, 'X'), + (0x9BC, 'V'), + (0x9C5, 'X'), + (0x9C7, 'V'), + (0x9C9, 'X'), + (0x9CB, 'V'), + (0x9CF, 'X'), + (0x9D7, 'V'), + (0x9D8, 'X'), + (0x9DC, 'M', u'ড়'), + (0x9DD, 'M', u'ঢ়'), + (0x9DE, 'X'), + (0x9DF, 'M', u'য়'), + (0x9E0, 'V'), + (0x9E4, 'X'), + (0x9E6, 'V'), + (0x9FC, 'X'), + (0xA01, 'V'), + (0xA04, 'X'), + (0xA05, 'V'), + (0xA0B, 'X'), + (0xA0F, 'V'), + (0xA11, 'X'), + (0xA13, 'V'), + (0xA29, 'X'), + (0xA2A, 'V'), + (0xA31, 'X'), + (0xA32, 'V'), + (0xA33, 'M', u'ਲ਼'), + (0xA34, 'X'), + (0xA35, 'V'), + (0xA36, 'M', u'ਸ਼'), + (0xA37, 'X'), + (0xA38, 'V'), + (0xA3A, 'X'), + (0xA3C, 'V'), + (0xA3D, 'X'), + (0xA3E, 'V'), + (0xA43, 'X'), + (0xA47, 'V'), + (0xA49, 'X'), + (0xA4B, 'V'), + (0xA4E, 'X'), + (0xA51, 'V'), + (0xA52, 'X'), + (0xA59, 'M', u'ਖ਼'), + (0xA5A, 'M', u'ਗ਼'), + (0xA5B, 'M', u'ਜ਼'), + (0xA5C, 'V'), + (0xA5D, 'X'), + (0xA5E, 'M', u'ਫ਼'), + (0xA5F, 'X'), + ] + +def _seg_11(): + return [ + (0xA66, 'V'), + (0xA76, 'X'), + (0xA81, 'V'), + (0xA84, 'X'), + (0xA85, 'V'), + (0xA8E, 'X'), + (0xA8F, 'V'), + (0xA92, 'X'), + (0xA93, 'V'), + (0xAA9, 'X'), + (0xAAA, 'V'), + (0xAB1, 'X'), + (0xAB2, 'V'), + (0xAB4, 'X'), + (0xAB5, 'V'), + (0xABA, 'X'), + (0xABC, 'V'), + (0xAC6, 'X'), + (0xAC7, 'V'), + (0xACA, 'X'), + (0xACB, 'V'), + (0xACE, 'X'), + (0xAD0, 'V'), + (0xAD1, 'X'), + (0xAE0, 'V'), + (0xAE4, 'X'), + (0xAE6, 'V'), + (0xAF2, 'X'), + (0xB01, 'V'), + (0xB04, 'X'), + (0xB05, 'V'), + (0xB0D, 'X'), + (0xB0F, 'V'), + (0xB11, 'X'), + (0xB13, 'V'), + (0xB29, 'X'), + (0xB2A, 'V'), + (0xB31, 'X'), + (0xB32, 'V'), + (0xB34, 'X'), + (0xB35, 'V'), + (0xB3A, 'X'), + (0xB3C, 'V'), + (0xB45, 'X'), + (0xB47, 'V'), + (0xB49, 'X'), + (0xB4B, 'V'), + (0xB4E, 'X'), + (0xB56, 'V'), + (0xB58, 'X'), + (0xB5C, 'M', u'ଡ଼'), + (0xB5D, 'M', u'ଢ଼'), + (0xB5E, 'X'), + (0xB5F, 'V'), + (0xB64, 'X'), + (0xB66, 'V'), + (0xB78, 'X'), + (0xB82, 'V'), + (0xB84, 'X'), + (0xB85, 'V'), + (0xB8B, 'X'), + (0xB8E, 'V'), + (0xB91, 'X'), + (0xB92, 'V'), + (0xB96, 'X'), + (0xB99, 'V'), + (0xB9B, 'X'), + (0xB9C, 'V'), + (0xB9D, 'X'), + (0xB9E, 'V'), + (0xBA0, 'X'), + (0xBA3, 'V'), + (0xBA5, 'X'), + (0xBA8, 'V'), + (0xBAB, 'X'), + (0xBAE, 'V'), + (0xBBA, 'X'), + (0xBBE, 'V'), + (0xBC3, 'X'), + (0xBC6, 'V'), + (0xBC9, 'X'), + (0xBCA, 'V'), + (0xBCE, 'X'), + (0xBD0, 'V'), + (0xBD1, 'X'), + (0xBD7, 'V'), + (0xBD8, 'X'), + (0xBE6, 'V'), + (0xBFB, 'X'), + (0xC01, 'V'), + (0xC04, 'X'), + (0xC05, 'V'), + (0xC0D, 'X'), + (0xC0E, 'V'), + (0xC11, 'X'), + (0xC12, 'V'), + (0xC29, 'X'), + (0xC2A, 'V'), + (0xC34, 'X'), + (0xC35, 'V'), + ] + +def _seg_12(): + return [ + (0xC3A, 'X'), + (0xC3D, 'V'), + (0xC45, 'X'), + (0xC46, 'V'), + (0xC49, 'X'), + (0xC4A, 'V'), + (0xC4E, 'X'), + (0xC55, 'V'), + (0xC57, 'X'), + (0xC58, 'V'), + (0xC5A, 'X'), + (0xC60, 'V'), + (0xC64, 'X'), + (0xC66, 'V'), + (0xC70, 'X'), + (0xC78, 'V'), + (0xC80, 'X'), + (0xC82, 'V'), + (0xC84, 'X'), + (0xC85, 'V'), + (0xC8D, 'X'), + (0xC8E, 'V'), + (0xC91, 'X'), + (0xC92, 'V'), + (0xCA9, 'X'), + (0xCAA, 'V'), + (0xCB4, 'X'), + (0xCB5, 'V'), + (0xCBA, 'X'), + (0xCBC, 'V'), + (0xCC5, 'X'), + (0xCC6, 'V'), + (0xCC9, 'X'), + (0xCCA, 'V'), + (0xCCE, 'X'), + (0xCD5, 'V'), + (0xCD7, 'X'), + (0xCDE, 'V'), + (0xCDF, 'X'), + (0xCE0, 'V'), + (0xCE4, 'X'), + (0xCE6, 'V'), + (0xCF0, 'X'), + (0xCF1, 'V'), + (0xCF3, 'X'), + (0xD02, 'V'), + (0xD04, 'X'), + (0xD05, 'V'), + (0xD0D, 'X'), + (0xD0E, 'V'), + (0xD11, 'X'), + (0xD12, 'V'), + (0xD3B, 'X'), + (0xD3D, 'V'), + (0xD45, 'X'), + (0xD46, 'V'), + (0xD49, 'X'), + (0xD4A, 'V'), + (0xD4F, 'X'), + (0xD57, 'V'), + (0xD58, 'X'), + (0xD60, 'V'), + (0xD64, 'X'), + (0xD66, 'V'), + (0xD76, 'X'), + (0xD79, 'V'), + (0xD80, 'X'), + (0xD82, 'V'), + (0xD84, 'X'), + (0xD85, 'V'), + (0xD97, 'X'), + (0xD9A, 'V'), + (0xDB2, 'X'), + (0xDB3, 'V'), + (0xDBC, 'X'), + (0xDBD, 'V'), + (0xDBE, 'X'), + (0xDC0, 'V'), + (0xDC7, 'X'), + (0xDCA, 'V'), + (0xDCB, 'X'), + (0xDCF, 'V'), + (0xDD5, 'X'), + (0xDD6, 'V'), + (0xDD7, 'X'), + (0xDD8, 'V'), + (0xDE0, 'X'), + (0xDF2, 'V'), + (0xDF5, 'X'), + (0xE01, 'V'), + (0xE33, 'M', u'ํา'), + (0xE34, 'V'), + (0xE3B, 'X'), + (0xE3F, 'V'), + (0xE5C, 'X'), + (0xE81, 'V'), + (0xE83, 'X'), + (0xE84, 'V'), + (0xE85, 'X'), + (0xE87, 'V'), + ] + +def _seg_13(): + return [ + (0xE89, 'X'), + (0xE8A, 'V'), + (0xE8B, 'X'), + (0xE8D, 'V'), + (0xE8E, 'X'), + (0xE94, 'V'), + (0xE98, 'X'), + (0xE99, 'V'), + (0xEA0, 'X'), + (0xEA1, 'V'), + (0xEA4, 'X'), + (0xEA5, 'V'), + (0xEA6, 'X'), + (0xEA7, 'V'), + (0xEA8, 'X'), + (0xEAA, 'V'), + (0xEAC, 'X'), + (0xEAD, 'V'), + (0xEB3, 'M', u'ໍາ'), + (0xEB4, 'V'), + (0xEBA, 'X'), + (0xEBB, 'V'), + (0xEBE, 'X'), + (0xEC0, 'V'), + (0xEC5, 'X'), + (0xEC6, 'V'), + (0xEC7, 'X'), + (0xEC8, 'V'), + (0xECE, 'X'), + (0xED0, 'V'), + (0xEDA, 'X'), + (0xEDC, 'M', u'ຫນ'), + (0xEDD, 'M', u'ຫມ'), + (0xEDE, 'V'), + (0xEE0, 'X'), + (0xF00, 'V'), + (0xF0C, 'M', u'་'), + (0xF0D, 'V'), + (0xF43, 'M', u'གྷ'), + (0xF44, 'V'), + (0xF48, 'X'), + (0xF49, 'V'), + (0xF4D, 'M', u'ཌྷ'), + (0xF4E, 'V'), + (0xF52, 'M', u'དྷ'), + (0xF53, 'V'), + (0xF57, 'M', u'བྷ'), + (0xF58, 'V'), + (0xF5C, 'M', u'ཛྷ'), + (0xF5D, 'V'), + (0xF69, 'M', u'ཀྵ'), + (0xF6A, 'V'), + (0xF6D, 'X'), + (0xF71, 'V'), + (0xF73, 'M', u'ཱི'), + (0xF74, 'V'), + (0xF75, 'M', u'ཱུ'), + (0xF76, 'M', u'ྲྀ'), + (0xF77, 'M', u'ྲཱྀ'), + (0xF78, 'M', u'ླྀ'), + (0xF79, 'M', u'ླཱྀ'), + (0xF7A, 'V'), + (0xF81, 'M', u'ཱྀ'), + (0xF82, 'V'), + (0xF93, 'M', u'ྒྷ'), + (0xF94, 'V'), + (0xF98, 'X'), + (0xF99, 'V'), + (0xF9D, 'M', u'ྜྷ'), + (0xF9E, 'V'), + (0xFA2, 'M', u'ྡྷ'), + (0xFA3, 'V'), + (0xFA7, 'M', u'ྦྷ'), + (0xFA8, 'V'), + (0xFAC, 'M', u'ྫྷ'), + (0xFAD, 'V'), + (0xFB9, 'M', u'ྐྵ'), + (0xFBA, 'V'), + (0xFBD, 'X'), + (0xFBE, 'V'), + (0xFCD, 'X'), + (0xFCE, 'V'), + (0xFDB, 'X'), + (0x1000, 'V'), + (0x10A0, 'X'), + (0x10C7, 'M', u'ⴧ'), + (0x10C8, 'X'), + (0x10CD, 'M', u'ⴭ'), + (0x10CE, 'X'), + (0x10D0, 'V'), + (0x10FC, 'M', u'ნ'), + (0x10FD, 'V'), + (0x115F, 'X'), + (0x1161, 'V'), + (0x1249, 'X'), + (0x124A, 'V'), + (0x124E, 'X'), + (0x1250, 'V'), + (0x1257, 'X'), + (0x1258, 'V'), + ] + +def _seg_14(): + return [ + (0x1259, 'X'), + (0x125A, 'V'), + (0x125E, 'X'), + (0x1260, 'V'), + (0x1289, 'X'), + (0x128A, 'V'), + (0x128E, 'X'), + (0x1290, 'V'), + (0x12B1, 'X'), + (0x12B2, 'V'), + (0x12B6, 'X'), + (0x12B8, 'V'), + (0x12BF, 'X'), + (0x12C0, 'V'), + (0x12C1, 'X'), + (0x12C2, 'V'), + (0x12C6, 'X'), + (0x12C8, 'V'), + (0x12D7, 'X'), + (0x12D8, 'V'), + (0x1311, 'X'), + (0x1312, 'V'), + (0x1316, 'X'), + (0x1318, 'V'), + (0x135B, 'X'), + (0x135D, 'V'), + (0x137D, 'X'), + (0x1380, 'V'), + (0x139A, 'X'), + (0x13A0, 'V'), + (0x13F5, 'X'), + (0x1400, 'V'), + (0x1680, 'X'), + (0x1681, 'V'), + (0x169D, 'X'), + (0x16A0, 'V'), + (0x16F1, 'X'), + (0x1700, 'V'), + (0x170D, 'X'), + (0x170E, 'V'), + (0x1715, 'X'), + (0x1720, 'V'), + (0x1737, 'X'), + (0x1740, 'V'), + (0x1754, 'X'), + (0x1760, 'V'), + (0x176D, 'X'), + (0x176E, 'V'), + (0x1771, 'X'), + (0x1772, 'V'), + (0x1774, 'X'), + (0x1780, 'V'), + (0x17B4, 'X'), + (0x17B6, 'V'), + (0x17DE, 'X'), + (0x17E0, 'V'), + (0x17EA, 'X'), + (0x17F0, 'V'), + (0x17FA, 'X'), + (0x1800, 'V'), + (0x1806, 'X'), + (0x1807, 'V'), + (0x180B, 'I'), + (0x180E, 'X'), + (0x1810, 'V'), + (0x181A, 'X'), + (0x1820, 'V'), + (0x1878, 'X'), + (0x1880, 'V'), + (0x18AB, 'X'), + (0x18B0, 'V'), + (0x18F6, 'X'), + (0x1900, 'V'), + (0x191D, 'X'), + (0x1920, 'V'), + (0x192C, 'X'), + (0x1930, 'V'), + (0x193C, 'X'), + (0x1940, 'V'), + (0x1941, 'X'), + (0x1944, 'V'), + (0x196E, 'X'), + (0x1970, 'V'), + (0x1975, 'X'), + (0x1980, 'V'), + (0x19AC, 'X'), + (0x19B0, 'V'), + (0x19CA, 'X'), + (0x19D0, 'V'), + (0x19DB, 'X'), + (0x19DE, 'V'), + (0x1A1C, 'X'), + (0x1A1E, 'V'), + (0x1A5F, 'X'), + (0x1A60, 'V'), + (0x1A7D, 'X'), + (0x1A7F, 'V'), + (0x1A8A, 'X'), + (0x1A90, 'V'), + (0x1A9A, 'X'), + ] + +def _seg_15(): + return [ + (0x1AA0, 'V'), + (0x1AAE, 'X'), + (0x1B00, 'V'), + (0x1B4C, 'X'), + (0x1B50, 'V'), + (0x1B7D, 'X'), + (0x1B80, 'V'), + (0x1BF4, 'X'), + (0x1BFC, 'V'), + (0x1C38, 'X'), + (0x1C3B, 'V'), + (0x1C4A, 'X'), + (0x1C4D, 'V'), + (0x1C80, 'X'), + (0x1CC0, 'V'), + (0x1CC8, 'X'), + (0x1CD0, 'V'), + (0x1CF7, 'X'), + (0x1D00, 'V'), + (0x1D2C, 'M', u'a'), + (0x1D2D, 'M', u'æ'), + (0x1D2E, 'M', u'b'), + (0x1D2F, 'V'), + (0x1D30, 'M', u'd'), + (0x1D31, 'M', u'e'), + (0x1D32, 'M', u'ǝ'), + (0x1D33, 'M', u'g'), + (0x1D34, 'M', u'h'), + (0x1D35, 'M', u'i'), + (0x1D36, 'M', u'j'), + (0x1D37, 'M', u'k'), + (0x1D38, 'M', u'l'), + (0x1D39, 'M', u'm'), + (0x1D3A, 'M', u'n'), + (0x1D3B, 'V'), + (0x1D3C, 'M', u'o'), + (0x1D3D, 'M', u'ȣ'), + (0x1D3E, 'M', u'p'), + (0x1D3F, 'M', u'r'), + (0x1D40, 'M', u't'), + (0x1D41, 'M', u'u'), + (0x1D42, 'M', u'w'), + (0x1D43, 'M', u'a'), + (0x1D44, 'M', u'ɐ'), + (0x1D45, 'M', u'ɑ'), + (0x1D46, 'M', u'ᴂ'), + (0x1D47, 'M', u'b'), + (0x1D48, 'M', u'd'), + (0x1D49, 'M', u'e'), + (0x1D4A, 'M', u'ə'), + (0x1D4B, 'M', u'ɛ'), + (0x1D4C, 'M', u'ɜ'), + (0x1D4D, 'M', u'g'), + (0x1D4E, 'V'), + (0x1D4F, 'M', u'k'), + (0x1D50, 'M', u'm'), + (0x1D51, 'M', u'ŋ'), + (0x1D52, 'M', u'o'), + (0x1D53, 'M', u'ɔ'), + (0x1D54, 'M', u'ᴖ'), + (0x1D55, 'M', u'ᴗ'), + (0x1D56, 'M', u'p'), + (0x1D57, 'M', u't'), + (0x1D58, 'M', u'u'), + (0x1D59, 'M', u'ᴝ'), + (0x1D5A, 'M', u'ɯ'), + (0x1D5B, 'M', u'v'), + (0x1D5C, 'M', u'ᴥ'), + (0x1D5D, 'M', u'β'), + (0x1D5E, 'M', u'γ'), + (0x1D5F, 'M', u'δ'), + (0x1D60, 'M', u'φ'), + (0x1D61, 'M', u'χ'), + (0x1D62, 'M', u'i'), + (0x1D63, 'M', u'r'), + (0x1D64, 'M', u'u'), + (0x1D65, 'M', u'v'), + (0x1D66, 'M', u'β'), + (0x1D67, 'M', u'γ'), + (0x1D68, 'M', u'ρ'), + (0x1D69, 'M', u'φ'), + (0x1D6A, 'M', u'χ'), + (0x1D6B, 'V'), + (0x1D78, 'M', u'н'), + (0x1D79, 'V'), + (0x1D9B, 'M', u'ɒ'), + (0x1D9C, 'M', u'c'), + (0x1D9D, 'M', u'ɕ'), + (0x1D9E, 'M', u'ð'), + (0x1D9F, 'M', u'ɜ'), + (0x1DA0, 'M', u'f'), + (0x1DA1, 'M', u'ɟ'), + (0x1DA2, 'M', u'ɡ'), + (0x1DA3, 'M', u'ɥ'), + (0x1DA4, 'M', u'ɨ'), + (0x1DA5, 'M', u'ɩ'), + (0x1DA6, 'M', u'ɪ'), + (0x1DA7, 'M', u'ᵻ'), + (0x1DA8, 'M', u'ʝ'), + (0x1DA9, 'M', u'ɭ'), + ] + +def _seg_16(): + return [ + (0x1DAA, 'M', u'ᶅ'), + (0x1DAB, 'M', u'ʟ'), + (0x1DAC, 'M', u'ɱ'), + (0x1DAD, 'M', u'ɰ'), + (0x1DAE, 'M', u'ɲ'), + (0x1DAF, 'M', u'ɳ'), + (0x1DB0, 'M', u'ɴ'), + (0x1DB1, 'M', u'ɵ'), + (0x1DB2, 'M', u'ɸ'), + (0x1DB3, 'M', u'ʂ'), + (0x1DB4, 'M', u'ʃ'), + (0x1DB5, 'M', u'ƫ'), + (0x1DB6, 'M', u'ʉ'), + (0x1DB7, 'M', u'ʊ'), + (0x1DB8, 'M', u'ᴜ'), + (0x1DB9, 'M', u'ʋ'), + (0x1DBA, 'M', u'ʌ'), + (0x1DBB, 'M', u'z'), + (0x1DBC, 'M', u'ʐ'), + (0x1DBD, 'M', u'ʑ'), + (0x1DBE, 'M', u'ʒ'), + (0x1DBF, 'M', u'θ'), + (0x1DC0, 'V'), + (0x1DE7, 'X'), + (0x1DFC, 'V'), + (0x1E00, 'M', u'ḁ'), + (0x1E01, 'V'), + (0x1E02, 'M', u'ḃ'), + (0x1E03, 'V'), + (0x1E04, 'M', u'ḅ'), + (0x1E05, 'V'), + (0x1E06, 'M', u'ḇ'), + (0x1E07, 'V'), + (0x1E08, 'M', u'ḉ'), + (0x1E09, 'V'), + (0x1E0A, 'M', u'ḋ'), + (0x1E0B, 'V'), + (0x1E0C, 'M', u'ḍ'), + (0x1E0D, 'V'), + (0x1E0E, 'M', u'ḏ'), + (0x1E0F, 'V'), + (0x1E10, 'M', u'ḑ'), + (0x1E11, 'V'), + (0x1E12, 'M', u'ḓ'), + (0x1E13, 'V'), + (0x1E14, 'M', u'ḕ'), + (0x1E15, 'V'), + (0x1E16, 'M', u'ḗ'), + (0x1E17, 'V'), + (0x1E18, 'M', u'ḙ'), + (0x1E19, 'V'), + (0x1E1A, 'M', u'ḛ'), + (0x1E1B, 'V'), + (0x1E1C, 'M', u'ḝ'), + (0x1E1D, 'V'), + (0x1E1E, 'M', u'ḟ'), + (0x1E1F, 'V'), + (0x1E20, 'M', u'ḡ'), + (0x1E21, 'V'), + (0x1E22, 'M', u'ḣ'), + (0x1E23, 'V'), + (0x1E24, 'M', u'ḥ'), + (0x1E25, 'V'), + (0x1E26, 'M', u'ḧ'), + (0x1E27, 'V'), + (0x1E28, 'M', u'ḩ'), + (0x1E29, 'V'), + (0x1E2A, 'M', u'ḫ'), + (0x1E2B, 'V'), + (0x1E2C, 'M', u'ḭ'), + (0x1E2D, 'V'), + (0x1E2E, 'M', u'ḯ'), + (0x1E2F, 'V'), + (0x1E30, 'M', u'ḱ'), + (0x1E31, 'V'), + (0x1E32, 'M', u'ḳ'), + (0x1E33, 'V'), + (0x1E34, 'M', u'ḵ'), + (0x1E35, 'V'), + (0x1E36, 'M', u'ḷ'), + (0x1E37, 'V'), + (0x1E38, 'M', u'ḹ'), + (0x1E39, 'V'), + (0x1E3A, 'M', u'ḻ'), + (0x1E3B, 'V'), + (0x1E3C, 'M', u'ḽ'), + (0x1E3D, 'V'), + (0x1E3E, 'M', u'ḿ'), + (0x1E3F, 'V'), + (0x1E40, 'M', u'ṁ'), + (0x1E41, 'V'), + (0x1E42, 'M', u'ṃ'), + (0x1E43, 'V'), + (0x1E44, 'M', u'ṅ'), + (0x1E45, 'V'), + (0x1E46, 'M', u'ṇ'), + (0x1E47, 'V'), + (0x1E48, 'M', u'ṉ'), + (0x1E49, 'V'), + (0x1E4A, 'M', u'ṋ'), + ] + +def _seg_17(): + return [ + (0x1E4B, 'V'), + (0x1E4C, 'M', u'ṍ'), + (0x1E4D, 'V'), + (0x1E4E, 'M', u'ṏ'), + (0x1E4F, 'V'), + (0x1E50, 'M', u'ṑ'), + (0x1E51, 'V'), + (0x1E52, 'M', u'ṓ'), + (0x1E53, 'V'), + (0x1E54, 'M', u'ṕ'), + (0x1E55, 'V'), + (0x1E56, 'M', u'ṗ'), + (0x1E57, 'V'), + (0x1E58, 'M', u'ṙ'), + (0x1E59, 'V'), + (0x1E5A, 'M', u'ṛ'), + (0x1E5B, 'V'), + (0x1E5C, 'M', u'ṝ'), + (0x1E5D, 'V'), + (0x1E5E, 'M', u'ṟ'), + (0x1E5F, 'V'), + (0x1E60, 'M', u'ṡ'), + (0x1E61, 'V'), + (0x1E62, 'M', u'ṣ'), + (0x1E63, 'V'), + (0x1E64, 'M', u'ṥ'), + (0x1E65, 'V'), + (0x1E66, 'M', u'ṧ'), + (0x1E67, 'V'), + (0x1E68, 'M', u'ṩ'), + (0x1E69, 'V'), + (0x1E6A, 'M', u'ṫ'), + (0x1E6B, 'V'), + (0x1E6C, 'M', u'ṭ'), + (0x1E6D, 'V'), + (0x1E6E, 'M', u'ṯ'), + (0x1E6F, 'V'), + (0x1E70, 'M', u'ṱ'), + (0x1E71, 'V'), + (0x1E72, 'M', u'ṳ'), + (0x1E73, 'V'), + (0x1E74, 'M', u'ṵ'), + (0x1E75, 'V'), + (0x1E76, 'M', u'ṷ'), + (0x1E77, 'V'), + (0x1E78, 'M', u'ṹ'), + (0x1E79, 'V'), + (0x1E7A, 'M', u'ṻ'), + (0x1E7B, 'V'), + (0x1E7C, 'M', u'ṽ'), + (0x1E7D, 'V'), + (0x1E7E, 'M', u'ṿ'), + (0x1E7F, 'V'), + (0x1E80, 'M', u'ẁ'), + (0x1E81, 'V'), + (0x1E82, 'M', u'ẃ'), + (0x1E83, 'V'), + (0x1E84, 'M', u'ẅ'), + (0x1E85, 'V'), + (0x1E86, 'M', u'ẇ'), + (0x1E87, 'V'), + (0x1E88, 'M', u'ẉ'), + (0x1E89, 'V'), + (0x1E8A, 'M', u'ẋ'), + (0x1E8B, 'V'), + (0x1E8C, 'M', u'ẍ'), + (0x1E8D, 'V'), + (0x1E8E, 'M', u'ẏ'), + (0x1E8F, 'V'), + (0x1E90, 'M', u'ẑ'), + (0x1E91, 'V'), + (0x1E92, 'M', u'ẓ'), + (0x1E93, 'V'), + (0x1E94, 'M', u'ẕ'), + (0x1E95, 'V'), + (0x1E9A, 'M', u'aʾ'), + (0x1E9B, 'M', u'ṡ'), + (0x1E9C, 'V'), + (0x1E9E, 'M', u'ss'), + (0x1E9F, 'V'), + (0x1EA0, 'M', u'ạ'), + (0x1EA1, 'V'), + (0x1EA2, 'M', u'ả'), + (0x1EA3, 'V'), + (0x1EA4, 'M', u'ấ'), + (0x1EA5, 'V'), + (0x1EA6, 'M', u'ầ'), + (0x1EA7, 'V'), + (0x1EA8, 'M', u'ẩ'), + (0x1EA9, 'V'), + (0x1EAA, 'M', u'ẫ'), + (0x1EAB, 'V'), + (0x1EAC, 'M', u'ậ'), + (0x1EAD, 'V'), + (0x1EAE, 'M', u'ắ'), + (0x1EAF, 'V'), + (0x1EB0, 'M', u'ằ'), + (0x1EB1, 'V'), + (0x1EB2, 'M', u'ẳ'), + (0x1EB3, 'V'), + ] + +def _seg_18(): + return [ + (0x1EB4, 'M', u'ẵ'), + (0x1EB5, 'V'), + (0x1EB6, 'M', u'ặ'), + (0x1EB7, 'V'), + (0x1EB8, 'M', u'ẹ'), + (0x1EB9, 'V'), + (0x1EBA, 'M', u'ẻ'), + (0x1EBB, 'V'), + (0x1EBC, 'M', u'ẽ'), + (0x1EBD, 'V'), + (0x1EBE, 'M', u'ế'), + (0x1EBF, 'V'), + (0x1EC0, 'M', u'ề'), + (0x1EC1, 'V'), + (0x1EC2, 'M', u'ể'), + (0x1EC3, 'V'), + (0x1EC4, 'M', u'ễ'), + (0x1EC5, 'V'), + (0x1EC6, 'M', u'ệ'), + (0x1EC7, 'V'), + (0x1EC8, 'M', u'ỉ'), + (0x1EC9, 'V'), + (0x1ECA, 'M', u'ị'), + (0x1ECB, 'V'), + (0x1ECC, 'M', u'ọ'), + (0x1ECD, 'V'), + (0x1ECE, 'M', u'ỏ'), + (0x1ECF, 'V'), + (0x1ED0, 'M', u'ố'), + (0x1ED1, 'V'), + (0x1ED2, 'M', u'ồ'), + (0x1ED3, 'V'), + (0x1ED4, 'M', u'ổ'), + (0x1ED5, 'V'), + (0x1ED6, 'M', u'ỗ'), + (0x1ED7, 'V'), + (0x1ED8, 'M', u'ộ'), + (0x1ED9, 'V'), + (0x1EDA, 'M', u'ớ'), + (0x1EDB, 'V'), + (0x1EDC, 'M', u'ờ'), + (0x1EDD, 'V'), + (0x1EDE, 'M', u'ở'), + (0x1EDF, 'V'), + (0x1EE0, 'M', u'ỡ'), + (0x1EE1, 'V'), + (0x1EE2, 'M', u'ợ'), + (0x1EE3, 'V'), + (0x1EE4, 'M', u'ụ'), + (0x1EE5, 'V'), + (0x1EE6, 'M', u'ủ'), + (0x1EE7, 'V'), + (0x1EE8, 'M', u'ứ'), + (0x1EE9, 'V'), + (0x1EEA, 'M', u'ừ'), + (0x1EEB, 'V'), + (0x1EEC, 'M', u'ử'), + (0x1EED, 'V'), + (0x1EEE, 'M', u'ữ'), + (0x1EEF, 'V'), + (0x1EF0, 'M', u'ự'), + (0x1EF1, 'V'), + (0x1EF2, 'M', u'ỳ'), + (0x1EF3, 'V'), + (0x1EF4, 'M', u'ỵ'), + (0x1EF5, 'V'), + (0x1EF6, 'M', u'ỷ'), + (0x1EF7, 'V'), + (0x1EF8, 'M', u'ỹ'), + (0x1EF9, 'V'), + (0x1EFA, 'M', u'ỻ'), + (0x1EFB, 'V'), + (0x1EFC, 'M', u'ỽ'), + (0x1EFD, 'V'), + (0x1EFE, 'M', u'ỿ'), + (0x1EFF, 'V'), + (0x1F08, 'M', u'ἀ'), + (0x1F09, 'M', u'ἁ'), + (0x1F0A, 'M', u'ἂ'), + (0x1F0B, 'M', u'ἃ'), + (0x1F0C, 'M', u'ἄ'), + (0x1F0D, 'M', u'ἅ'), + (0x1F0E, 'M', u'ἆ'), + (0x1F0F, 'M', u'ἇ'), + (0x1F10, 'V'), + (0x1F16, 'X'), + (0x1F18, 'M', u'ἐ'), + (0x1F19, 'M', u'ἑ'), + (0x1F1A, 'M', u'ἒ'), + (0x1F1B, 'M', u'ἓ'), + (0x1F1C, 'M', u'ἔ'), + (0x1F1D, 'M', u'ἕ'), + (0x1F1E, 'X'), + (0x1F20, 'V'), + (0x1F28, 'M', u'ἠ'), + (0x1F29, 'M', u'ἡ'), + (0x1F2A, 'M', u'ἢ'), + (0x1F2B, 'M', u'ἣ'), + (0x1F2C, 'M', u'ἤ'), + (0x1F2D, 'M', u'ἥ'), + ] + +def _seg_19(): + return [ + (0x1F2E, 'M', u'ἦ'), + (0x1F2F, 'M', u'ἧ'), + (0x1F30, 'V'), + (0x1F38, 'M', u'ἰ'), + (0x1F39, 'M', u'ἱ'), + (0x1F3A, 'M', u'ἲ'), + (0x1F3B, 'M', u'ἳ'), + (0x1F3C, 'M', u'ἴ'), + (0x1F3D, 'M', u'ἵ'), + (0x1F3E, 'M', u'ἶ'), + (0x1F3F, 'M', u'ἷ'), + (0x1F40, 'V'), + (0x1F46, 'X'), + (0x1F48, 'M', u'ὀ'), + (0x1F49, 'M', u'ὁ'), + (0x1F4A, 'M', u'ὂ'), + (0x1F4B, 'M', u'ὃ'), + (0x1F4C, 'M', u'ὄ'), + (0x1F4D, 'M', u'ὅ'), + (0x1F4E, 'X'), + (0x1F50, 'V'), + (0x1F58, 'X'), + (0x1F59, 'M', u'ὑ'), + (0x1F5A, 'X'), + (0x1F5B, 'M', u'ὓ'), + (0x1F5C, 'X'), + (0x1F5D, 'M', u'ὕ'), + (0x1F5E, 'X'), + (0x1F5F, 'M', u'ὗ'), + (0x1F60, 'V'), + (0x1F68, 'M', u'ὠ'), + (0x1F69, 'M', u'ὡ'), + (0x1F6A, 'M', u'ὢ'), + (0x1F6B, 'M', u'ὣ'), + (0x1F6C, 'M', u'ὤ'), + (0x1F6D, 'M', u'ὥ'), + (0x1F6E, 'M', u'ὦ'), + (0x1F6F, 'M', u'ὧ'), + (0x1F70, 'V'), + (0x1F71, 'M', u'ά'), + (0x1F72, 'V'), + (0x1F73, 'M', u'έ'), + (0x1F74, 'V'), + (0x1F75, 'M', u'ή'), + (0x1F76, 'V'), + (0x1F77, 'M', u'ί'), + (0x1F78, 'V'), + (0x1F79, 'M', u'ό'), + (0x1F7A, 'V'), + (0x1F7B, 'M', u'ύ'), + (0x1F7C, 'V'), + (0x1F7D, 'M', u'ώ'), + (0x1F7E, 'X'), + (0x1F80, 'M', u'ἀι'), + (0x1F81, 'M', u'ἁι'), + (0x1F82, 'M', u'ἂι'), + (0x1F83, 'M', u'ἃι'), + (0x1F84, 'M', u'ἄι'), + (0x1F85, 'M', u'ἅι'), + (0x1F86, 'M', u'ἆι'), + (0x1F87, 'M', u'ἇι'), + (0x1F88, 'M', u'ἀι'), + (0x1F89, 'M', u'ἁι'), + (0x1F8A, 'M', u'ἂι'), + (0x1F8B, 'M', u'ἃι'), + (0x1F8C, 'M', u'ἄι'), + (0x1F8D, 'M', u'ἅι'), + (0x1F8E, 'M', u'ἆι'), + (0x1F8F, 'M', u'ἇι'), + (0x1F90, 'M', u'ἠι'), + (0x1F91, 'M', u'ἡι'), + (0x1F92, 'M', u'ἢι'), + (0x1F93, 'M', u'ἣι'), + (0x1F94, 'M', u'ἤι'), + (0x1F95, 'M', u'ἥι'), + (0x1F96, 'M', u'ἦι'), + (0x1F97, 'M', u'ἧι'), + (0x1F98, 'M', u'ἠι'), + (0x1F99, 'M', u'ἡι'), + (0x1F9A, 'M', u'ἢι'), + (0x1F9B, 'M', u'ἣι'), + (0x1F9C, 'M', u'ἤι'), + (0x1F9D, 'M', u'ἥι'), + (0x1F9E, 'M', u'ἦι'), + (0x1F9F, 'M', u'ἧι'), + (0x1FA0, 'M', u'ὠι'), + (0x1FA1, 'M', u'ὡι'), + (0x1FA2, 'M', u'ὢι'), + (0x1FA3, 'M', u'ὣι'), + (0x1FA4, 'M', u'ὤι'), + (0x1FA5, 'M', u'ὥι'), + (0x1FA6, 'M', u'ὦι'), + (0x1FA7, 'M', u'ὧι'), + (0x1FA8, 'M', u'ὠι'), + (0x1FA9, 'M', u'ὡι'), + (0x1FAA, 'M', u'ὢι'), + (0x1FAB, 'M', u'ὣι'), + (0x1FAC, 'M', u'ὤι'), + (0x1FAD, 'M', u'ὥι'), + (0x1FAE, 'M', u'ὦι'), + ] + +def _seg_20(): + return [ + (0x1FAF, 'M', u'ὧι'), + (0x1FB0, 'V'), + (0x1FB2, 'M', u'ὰι'), + (0x1FB3, 'M', u'αι'), + (0x1FB4, 'M', u'άι'), + (0x1FB5, 'X'), + (0x1FB6, 'V'), + (0x1FB7, 'M', u'ᾶι'), + (0x1FB8, 'M', u'ᾰ'), + (0x1FB9, 'M', u'ᾱ'), + (0x1FBA, 'M', u'ὰ'), + (0x1FBB, 'M', u'ά'), + (0x1FBC, 'M', u'αι'), + (0x1FBD, '3', u' ̓'), + (0x1FBE, 'M', u'ι'), + (0x1FBF, '3', u' ̓'), + (0x1FC0, '3', u' ͂'), + (0x1FC1, '3', u' ̈͂'), + (0x1FC2, 'M', u'ὴι'), + (0x1FC3, 'M', u'ηι'), + (0x1FC4, 'M', u'ήι'), + (0x1FC5, 'X'), + (0x1FC6, 'V'), + (0x1FC7, 'M', u'ῆι'), + (0x1FC8, 'M', u'ὲ'), + (0x1FC9, 'M', u'έ'), + (0x1FCA, 'M', u'ὴ'), + (0x1FCB, 'M', u'ή'), + (0x1FCC, 'M', u'ηι'), + (0x1FCD, '3', u' ̓̀'), + (0x1FCE, '3', u' ̓́'), + (0x1FCF, '3', u' ̓͂'), + (0x1FD0, 'V'), + (0x1FD3, 'M', u'ΐ'), + (0x1FD4, 'X'), + (0x1FD6, 'V'), + (0x1FD8, 'M', u'ῐ'), + (0x1FD9, 'M', u'ῑ'), + (0x1FDA, 'M', u'ὶ'), + (0x1FDB, 'M', u'ί'), + (0x1FDC, 'X'), + (0x1FDD, '3', u' ̔̀'), + (0x1FDE, '3', u' ̔́'), + (0x1FDF, '3', u' ̔͂'), + (0x1FE0, 'V'), + (0x1FE3, 'M', u'ΰ'), + (0x1FE4, 'V'), + (0x1FE8, 'M', u'ῠ'), + (0x1FE9, 'M', u'ῡ'), + (0x1FEA, 'M', u'ὺ'), + (0x1FEB, 'M', u'ύ'), + (0x1FEC, 'M', u'ῥ'), + (0x1FED, '3', u' ̈̀'), + (0x1FEE, '3', u' ̈́'), + (0x1FEF, '3', u'`'), + (0x1FF0, 'X'), + (0x1FF2, 'M', u'ὼι'), + (0x1FF3, 'M', u'ωι'), + (0x1FF4, 'M', u'ώι'), + (0x1FF5, 'X'), + (0x1FF6, 'V'), + (0x1FF7, 'M', u'ῶι'), + (0x1FF8, 'M', u'ὸ'), + (0x1FF9, 'M', u'ό'), + (0x1FFA, 'M', u'ὼ'), + (0x1FFB, 'M', u'ώ'), + (0x1FFC, 'M', u'ωι'), + (0x1FFD, '3', u' ́'), + (0x1FFE, '3', u' ̔'), + (0x1FFF, 'X'), + (0x2000, '3', u' '), + (0x200B, 'I'), + (0x200C, 'D', u''), + (0x200E, 'X'), + (0x2010, 'V'), + (0x2011, 'M', u'‐'), + (0x2012, 'V'), + (0x2017, '3', u' ̳'), + (0x2018, 'V'), + (0x2024, 'X'), + (0x2027, 'V'), + (0x2028, 'X'), + (0x202F, '3', u' '), + (0x2030, 'V'), + (0x2033, 'M', u'′′'), + (0x2034, 'M', u'′′′'), + (0x2035, 'V'), + (0x2036, 'M', u'‵‵'), + (0x2037, 'M', u'‵‵‵'), + (0x2038, 'V'), + (0x203C, '3', u'!!'), + (0x203D, 'V'), + (0x203E, '3', u' ̅'), + (0x203F, 'V'), + (0x2047, '3', u'??'), + (0x2048, '3', u'?!'), + (0x2049, '3', u'!?'), + (0x204A, 'V'), + (0x2057, 'M', u'′′′′'), + (0x2058, 'V'), + ] + +def _seg_21(): + return [ + (0x205F, '3', u' '), + (0x2060, 'I'), + (0x2061, 'X'), + (0x2064, 'I'), + (0x2065, 'X'), + (0x2070, 'M', u'0'), + (0x2071, 'M', u'i'), + (0x2072, 'X'), + (0x2074, 'M', u'4'), + (0x2075, 'M', u'5'), + (0x2076, 'M', u'6'), + (0x2077, 'M', u'7'), + (0x2078, 'M', u'8'), + (0x2079, 'M', u'9'), + (0x207A, '3', u'+'), + (0x207B, 'M', u'−'), + (0x207C, '3', u'='), + (0x207D, '3', u'('), + (0x207E, '3', u')'), + (0x207F, 'M', u'n'), + (0x2080, 'M', u'0'), + (0x2081, 'M', u'1'), + (0x2082, 'M', u'2'), + (0x2083, 'M', u'3'), + (0x2084, 'M', u'4'), + (0x2085, 'M', u'5'), + (0x2086, 'M', u'6'), + (0x2087, 'M', u'7'), + (0x2088, 'M', u'8'), + (0x2089, 'M', u'9'), + (0x208A, '3', u'+'), + (0x208B, 'M', u'−'), + (0x208C, '3', u'='), + (0x208D, '3', u'('), + (0x208E, '3', u')'), + (0x208F, 'X'), + (0x2090, 'M', u'a'), + (0x2091, 'M', u'e'), + (0x2092, 'M', u'o'), + (0x2093, 'M', u'x'), + (0x2094, 'M', u'ə'), + (0x2095, 'M', u'h'), + (0x2096, 'M', u'k'), + (0x2097, 'M', u'l'), + (0x2098, 'M', u'm'), + (0x2099, 'M', u'n'), + (0x209A, 'M', u'p'), + (0x209B, 'M', u's'), + (0x209C, 'M', u't'), + (0x209D, 'X'), + (0x20A0, 'V'), + (0x20A8, 'M', u'rs'), + (0x20A9, 'V'), + (0x20BB, 'X'), + (0x20D0, 'V'), + (0x20F1, 'X'), + (0x2100, '3', u'a/c'), + (0x2101, '3', u'a/s'), + (0x2102, 'M', u'c'), + (0x2103, 'M', u'°c'), + (0x2104, 'V'), + (0x2105, '3', u'c/o'), + (0x2106, '3', u'c/u'), + (0x2107, 'M', u'ɛ'), + (0x2108, 'V'), + (0x2109, 'M', u'°f'), + (0x210A, 'M', u'g'), + (0x210B, 'M', u'h'), + (0x210F, 'M', u'ħ'), + (0x2110, 'M', u'i'), + (0x2112, 'M', u'l'), + (0x2114, 'V'), + (0x2115, 'M', u'n'), + (0x2116, 'M', u'no'), + (0x2117, 'V'), + (0x2119, 'M', u'p'), + (0x211A, 'M', u'q'), + (0x211B, 'M', u'r'), + (0x211E, 'V'), + (0x2120, 'M', u'sm'), + (0x2121, 'M', u'tel'), + (0x2122, 'M', u'tm'), + (0x2123, 'V'), + (0x2124, 'M', u'z'), + (0x2125, 'V'), + (0x2126, 'M', u'ω'), + (0x2127, 'V'), + (0x2128, 'M', u'z'), + (0x2129, 'V'), + (0x212A, 'M', u'k'), + (0x212B, 'M', u'å'), + (0x212C, 'M', u'b'), + (0x212D, 'M', u'c'), + (0x212E, 'V'), + (0x212F, 'M', u'e'), + (0x2131, 'M', u'f'), + (0x2132, 'X'), + (0x2133, 'M', u'm'), + (0x2134, 'M', u'o'), + (0x2135, 'M', u'א'), + ] + +def _seg_22(): + return [ + (0x2136, 'M', u'ב'), + (0x2137, 'M', u'ג'), + (0x2138, 'M', u'ד'), + (0x2139, 'M', u'i'), + (0x213A, 'V'), + (0x213B, 'M', u'fax'), + (0x213C, 'M', u'π'), + (0x213D, 'M', u'γ'), + (0x213F, 'M', u'π'), + (0x2140, 'M', u'∑'), + (0x2141, 'V'), + (0x2145, 'M', u'd'), + (0x2147, 'M', u'e'), + (0x2148, 'M', u'i'), + (0x2149, 'M', u'j'), + (0x214A, 'V'), + (0x2150, 'M', u'1⁄7'), + (0x2151, 'M', u'1⁄9'), + (0x2152, 'M', u'1⁄10'), + (0x2153, 'M', u'1⁄3'), + (0x2154, 'M', u'2⁄3'), + (0x2155, 'M', u'1⁄5'), + (0x2156, 'M', u'2⁄5'), + (0x2157, 'M', u'3⁄5'), + (0x2158, 'M', u'4⁄5'), + (0x2159, 'M', u'1⁄6'), + (0x215A, 'M', u'5⁄6'), + (0x215B, 'M', u'1⁄8'), + (0x215C, 'M', u'3⁄8'), + (0x215D, 'M', u'5⁄8'), + (0x215E, 'M', u'7⁄8'), + (0x215F, 'M', u'1⁄'), + (0x2160, 'M', u'i'), + (0x2161, 'M', u'ii'), + (0x2162, 'M', u'iii'), + (0x2163, 'M', u'iv'), + (0x2164, 'M', u'v'), + (0x2165, 'M', u'vi'), + (0x2166, 'M', u'vii'), + (0x2167, 'M', u'viii'), + (0x2168, 'M', u'ix'), + (0x2169, 'M', u'x'), + (0x216A, 'M', u'xi'), + (0x216B, 'M', u'xii'), + (0x216C, 'M', u'l'), + (0x216D, 'M', u'c'), + (0x216E, 'M', u'd'), + (0x216F, 'M', u'm'), + (0x2170, 'M', u'i'), + (0x2171, 'M', u'ii'), + (0x2172, 'M', u'iii'), + (0x2173, 'M', u'iv'), + (0x2174, 'M', u'v'), + (0x2175, 'M', u'vi'), + (0x2176, 'M', u'vii'), + (0x2177, 'M', u'viii'), + (0x2178, 'M', u'ix'), + (0x2179, 'M', u'x'), + (0x217A, 'M', u'xi'), + (0x217B, 'M', u'xii'), + (0x217C, 'M', u'l'), + (0x217D, 'M', u'c'), + (0x217E, 'M', u'd'), + (0x217F, 'M', u'm'), + (0x2180, 'V'), + (0x2183, 'X'), + (0x2184, 'V'), + (0x2189, 'M', u'0⁄3'), + (0x218A, 'X'), + (0x2190, 'V'), + (0x222C, 'M', u'∫∫'), + (0x222D, 'M', u'∫∫∫'), + (0x222E, 'V'), + (0x222F, 'M', u'∮∮'), + (0x2230, 'M', u'∮∮∮'), + (0x2231, 'V'), + (0x2260, '3'), + (0x2261, 'V'), + (0x226E, '3'), + (0x2270, 'V'), + (0x2329, 'M', u'〈'), + (0x232A, 'M', u'〉'), + (0x232B, 'V'), + (0x23F4, 'X'), + (0x2400, 'V'), + (0x2427, 'X'), + (0x2440, 'V'), + (0x244B, 'X'), + (0x2460, 'M', u'1'), + (0x2461, 'M', u'2'), + (0x2462, 'M', u'3'), + (0x2463, 'M', u'4'), + (0x2464, 'M', u'5'), + (0x2465, 'M', u'6'), + (0x2466, 'M', u'7'), + (0x2467, 'M', u'8'), + (0x2468, 'M', u'9'), + (0x2469, 'M', u'10'), + (0x246A, 'M', u'11'), + (0x246B, 'M', u'12'), + ] + +def _seg_23(): + return [ + (0x246C, 'M', u'13'), + (0x246D, 'M', u'14'), + (0x246E, 'M', u'15'), + (0x246F, 'M', u'16'), + (0x2470, 'M', u'17'), + (0x2471, 'M', u'18'), + (0x2472, 'M', u'19'), + (0x2473, 'M', u'20'), + (0x2474, '3', u'(1)'), + (0x2475, '3', u'(2)'), + (0x2476, '3', u'(3)'), + (0x2477, '3', u'(4)'), + (0x2478, '3', u'(5)'), + (0x2479, '3', u'(6)'), + (0x247A, '3', u'(7)'), + (0x247B, '3', u'(8)'), + (0x247C, '3', u'(9)'), + (0x247D, '3', u'(10)'), + (0x247E, '3', u'(11)'), + (0x247F, '3', u'(12)'), + (0x2480, '3', u'(13)'), + (0x2481, '3', u'(14)'), + (0x2482, '3', u'(15)'), + (0x2483, '3', u'(16)'), + (0x2484, '3', u'(17)'), + (0x2485, '3', u'(18)'), + (0x2486, '3', u'(19)'), + (0x2487, '3', u'(20)'), + (0x2488, 'X'), + (0x249C, '3', u'(a)'), + (0x249D, '3', u'(b)'), + (0x249E, '3', u'(c)'), + (0x249F, '3', u'(d)'), + (0x24A0, '3', u'(e)'), + (0x24A1, '3', u'(f)'), + (0x24A2, '3', u'(g)'), + (0x24A3, '3', u'(h)'), + (0x24A4, '3', u'(i)'), + (0x24A5, '3', u'(j)'), + (0x24A6, '3', u'(k)'), + (0x24A7, '3', u'(l)'), + (0x24A8, '3', u'(m)'), + (0x24A9, '3', u'(n)'), + (0x24AA, '3', u'(o)'), + (0x24AB, '3', u'(p)'), + (0x24AC, '3', u'(q)'), + (0x24AD, '3', u'(r)'), + (0x24AE, '3', u'(s)'), + (0x24AF, '3', u'(t)'), + (0x24B0, '3', u'(u)'), + (0x24B1, '3', u'(v)'), + (0x24B2, '3', u'(w)'), + (0x24B3, '3', u'(x)'), + (0x24B4, '3', u'(y)'), + (0x24B5, '3', u'(z)'), + (0x24B6, 'M', u'a'), + (0x24B7, 'M', u'b'), + (0x24B8, 'M', u'c'), + (0x24B9, 'M', u'd'), + (0x24BA, 'M', u'e'), + (0x24BB, 'M', u'f'), + (0x24BC, 'M', u'g'), + (0x24BD, 'M', u'h'), + (0x24BE, 'M', u'i'), + (0x24BF, 'M', u'j'), + (0x24C0, 'M', u'k'), + (0x24C1, 'M', u'l'), + (0x24C2, 'M', u'm'), + (0x24C3, 'M', u'n'), + (0x24C4, 'M', u'o'), + (0x24C5, 'M', u'p'), + (0x24C6, 'M', u'q'), + (0x24C7, 'M', u'r'), + (0x24C8, 'M', u's'), + (0x24C9, 'M', u't'), + (0x24CA, 'M', u'u'), + (0x24CB, 'M', u'v'), + (0x24CC, 'M', u'w'), + (0x24CD, 'M', u'x'), + (0x24CE, 'M', u'y'), + (0x24CF, 'M', u'z'), + (0x24D0, 'M', u'a'), + (0x24D1, 'M', u'b'), + (0x24D2, 'M', u'c'), + (0x24D3, 'M', u'd'), + (0x24D4, 'M', u'e'), + (0x24D5, 'M', u'f'), + (0x24D6, 'M', u'g'), + (0x24D7, 'M', u'h'), + (0x24D8, 'M', u'i'), + (0x24D9, 'M', u'j'), + (0x24DA, 'M', u'k'), + (0x24DB, 'M', u'l'), + (0x24DC, 'M', u'm'), + (0x24DD, 'M', u'n'), + (0x24DE, 'M', u'o'), + (0x24DF, 'M', u'p'), + (0x24E0, 'M', u'q'), + (0x24E1, 'M', u'r'), + (0x24E2, 'M', u's'), + ] + +def _seg_24(): + return [ + (0x24E3, 'M', u't'), + (0x24E4, 'M', u'u'), + (0x24E5, 'M', u'v'), + (0x24E6, 'M', u'w'), + (0x24E7, 'M', u'x'), + (0x24E8, 'M', u'y'), + (0x24E9, 'M', u'z'), + (0x24EA, 'M', u'0'), + (0x24EB, 'V'), + (0x2700, 'X'), + (0x2701, 'V'), + (0x2A0C, 'M', u'∫∫∫∫'), + (0x2A0D, 'V'), + (0x2A74, '3', u'::='), + (0x2A75, '3', u'=='), + (0x2A76, '3', u'==='), + (0x2A77, 'V'), + (0x2ADC, 'M', u'⫝̸'), + (0x2ADD, 'V'), + (0x2B4D, 'X'), + (0x2B50, 'V'), + (0x2B5A, 'X'), + (0x2C00, 'M', u'ⰰ'), + (0x2C01, 'M', u'ⰱ'), + (0x2C02, 'M', u'ⰲ'), + (0x2C03, 'M', u'ⰳ'), + (0x2C04, 'M', u'ⰴ'), + (0x2C05, 'M', u'ⰵ'), + (0x2C06, 'M', u'ⰶ'), + (0x2C07, 'M', u'ⰷ'), + (0x2C08, 'M', u'ⰸ'), + (0x2C09, 'M', u'ⰹ'), + (0x2C0A, 'M', u'ⰺ'), + (0x2C0B, 'M', u'ⰻ'), + (0x2C0C, 'M', u'ⰼ'), + (0x2C0D, 'M', u'ⰽ'), + (0x2C0E, 'M', u'ⰾ'), + (0x2C0F, 'M', u'ⰿ'), + (0x2C10, 'M', u'ⱀ'), + (0x2C11, 'M', u'ⱁ'), + (0x2C12, 'M', u'ⱂ'), + (0x2C13, 'M', u'ⱃ'), + (0x2C14, 'M', u'ⱄ'), + (0x2C15, 'M', u'ⱅ'), + (0x2C16, 'M', u'ⱆ'), + (0x2C17, 'M', u'ⱇ'), + (0x2C18, 'M', u'ⱈ'), + (0x2C19, 'M', u'ⱉ'), + (0x2C1A, 'M', u'ⱊ'), + (0x2C1B, 'M', u'ⱋ'), + (0x2C1C, 'M', u'ⱌ'), + (0x2C1D, 'M', u'ⱍ'), + (0x2C1E, 'M', u'ⱎ'), + (0x2C1F, 'M', u'ⱏ'), + (0x2C20, 'M', u'ⱐ'), + (0x2C21, 'M', u'ⱑ'), + (0x2C22, 'M', u'ⱒ'), + (0x2C23, 'M', u'ⱓ'), + (0x2C24, 'M', u'ⱔ'), + (0x2C25, 'M', u'ⱕ'), + (0x2C26, 'M', u'ⱖ'), + (0x2C27, 'M', u'ⱗ'), + (0x2C28, 'M', u'ⱘ'), + (0x2C29, 'M', u'ⱙ'), + (0x2C2A, 'M', u'ⱚ'), + (0x2C2B, 'M', u'ⱛ'), + (0x2C2C, 'M', u'ⱜ'), + (0x2C2D, 'M', u'ⱝ'), + (0x2C2E, 'M', u'ⱞ'), + (0x2C2F, 'X'), + (0x2C30, 'V'), + (0x2C5F, 'X'), + (0x2C60, 'M', u'ⱡ'), + (0x2C61, 'V'), + (0x2C62, 'M', u'ɫ'), + (0x2C63, 'M', u'ᵽ'), + (0x2C64, 'M', u'ɽ'), + (0x2C65, 'V'), + (0x2C67, 'M', u'ⱨ'), + (0x2C68, 'V'), + (0x2C69, 'M', u'ⱪ'), + (0x2C6A, 'V'), + (0x2C6B, 'M', u'ⱬ'), + (0x2C6C, 'V'), + (0x2C6D, 'M', u'ɑ'), + (0x2C6E, 'M', u'ɱ'), + (0x2C6F, 'M', u'ɐ'), + (0x2C70, 'M', u'ɒ'), + (0x2C71, 'V'), + (0x2C72, 'M', u'ⱳ'), + (0x2C73, 'V'), + (0x2C75, 'M', u'ⱶ'), + (0x2C76, 'V'), + (0x2C7C, 'M', u'j'), + (0x2C7D, 'M', u'v'), + (0x2C7E, 'M', u'ȿ'), + (0x2C7F, 'M', u'ɀ'), + (0x2C80, 'M', u'ⲁ'), + (0x2C81, 'V'), + (0x2C82, 'M', u'ⲃ'), + ] + +def _seg_25(): + return [ + (0x2C83, 'V'), + (0x2C84, 'M', u'ⲅ'), + (0x2C85, 'V'), + (0x2C86, 'M', u'ⲇ'), + (0x2C87, 'V'), + (0x2C88, 'M', u'ⲉ'), + (0x2C89, 'V'), + (0x2C8A, 'M', u'ⲋ'), + (0x2C8B, 'V'), + (0x2C8C, 'M', u'ⲍ'), + (0x2C8D, 'V'), + (0x2C8E, 'M', u'ⲏ'), + (0x2C8F, 'V'), + (0x2C90, 'M', u'ⲑ'), + (0x2C91, 'V'), + (0x2C92, 'M', u'ⲓ'), + (0x2C93, 'V'), + (0x2C94, 'M', u'ⲕ'), + (0x2C95, 'V'), + (0x2C96, 'M', u'ⲗ'), + (0x2C97, 'V'), + (0x2C98, 'M', u'ⲙ'), + (0x2C99, 'V'), + (0x2C9A, 'M', u'ⲛ'), + (0x2C9B, 'V'), + (0x2C9C, 'M', u'ⲝ'), + (0x2C9D, 'V'), + (0x2C9E, 'M', u'ⲟ'), + (0x2C9F, 'V'), + (0x2CA0, 'M', u'ⲡ'), + (0x2CA1, 'V'), + (0x2CA2, 'M', u'ⲣ'), + (0x2CA3, 'V'), + (0x2CA4, 'M', u'ⲥ'), + (0x2CA5, 'V'), + (0x2CA6, 'M', u'ⲧ'), + (0x2CA7, 'V'), + (0x2CA8, 'M', u'ⲩ'), + (0x2CA9, 'V'), + (0x2CAA, 'M', u'ⲫ'), + (0x2CAB, 'V'), + (0x2CAC, 'M', u'ⲭ'), + (0x2CAD, 'V'), + (0x2CAE, 'M', u'ⲯ'), + (0x2CAF, 'V'), + (0x2CB0, 'M', u'ⲱ'), + (0x2CB1, 'V'), + (0x2CB2, 'M', u'ⲳ'), + (0x2CB3, 'V'), + (0x2CB4, 'M', u'ⲵ'), + (0x2CB5, 'V'), + (0x2CB6, 'M', u'ⲷ'), + (0x2CB7, 'V'), + (0x2CB8, 'M', u'ⲹ'), + (0x2CB9, 'V'), + (0x2CBA, 'M', u'ⲻ'), + (0x2CBB, 'V'), + (0x2CBC, 'M', u'ⲽ'), + (0x2CBD, 'V'), + (0x2CBE, 'M', u'ⲿ'), + (0x2CBF, 'V'), + (0x2CC0, 'M', u'ⳁ'), + (0x2CC1, 'V'), + (0x2CC2, 'M', u'ⳃ'), + (0x2CC3, 'V'), + (0x2CC4, 'M', u'ⳅ'), + (0x2CC5, 'V'), + (0x2CC6, 'M', u'ⳇ'), + (0x2CC7, 'V'), + (0x2CC8, 'M', u'ⳉ'), + (0x2CC9, 'V'), + (0x2CCA, 'M', u'ⳋ'), + (0x2CCB, 'V'), + (0x2CCC, 'M', u'ⳍ'), + (0x2CCD, 'V'), + (0x2CCE, 'M', u'ⳏ'), + (0x2CCF, 'V'), + (0x2CD0, 'M', u'ⳑ'), + (0x2CD1, 'V'), + (0x2CD2, 'M', u'ⳓ'), + (0x2CD3, 'V'), + (0x2CD4, 'M', u'ⳕ'), + (0x2CD5, 'V'), + (0x2CD6, 'M', u'ⳗ'), + (0x2CD7, 'V'), + (0x2CD8, 'M', u'ⳙ'), + (0x2CD9, 'V'), + (0x2CDA, 'M', u'ⳛ'), + (0x2CDB, 'V'), + (0x2CDC, 'M', u'ⳝ'), + (0x2CDD, 'V'), + (0x2CDE, 'M', u'ⳟ'), + (0x2CDF, 'V'), + (0x2CE0, 'M', u'ⳡ'), + (0x2CE1, 'V'), + (0x2CE2, 'M', u'ⳣ'), + (0x2CE3, 'V'), + (0x2CEB, 'M', u'ⳬ'), + (0x2CEC, 'V'), + (0x2CED, 'M', u'ⳮ'), + ] + +def _seg_26(): + return [ + (0x2CEE, 'V'), + (0x2CF2, 'M', u'ⳳ'), + (0x2CF3, 'V'), + (0x2CF4, 'X'), + (0x2CF9, 'V'), + (0x2D26, 'X'), + (0x2D27, 'V'), + (0x2D28, 'X'), + (0x2D2D, 'V'), + (0x2D2E, 'X'), + (0x2D30, 'V'), + (0x2D68, 'X'), + (0x2D6F, 'M', u'ⵡ'), + (0x2D70, 'V'), + (0x2D71, 'X'), + (0x2D7F, 'V'), + (0x2D97, 'X'), + (0x2DA0, 'V'), + (0x2DA7, 'X'), + (0x2DA8, 'V'), + (0x2DAF, 'X'), + (0x2DB0, 'V'), + (0x2DB7, 'X'), + (0x2DB8, 'V'), + (0x2DBF, 'X'), + (0x2DC0, 'V'), + (0x2DC7, 'X'), + (0x2DC8, 'V'), + (0x2DCF, 'X'), + (0x2DD0, 'V'), + (0x2DD7, 'X'), + (0x2DD8, 'V'), + (0x2DDF, 'X'), + (0x2DE0, 'V'), + (0x2E3C, 'X'), + (0x2E80, 'V'), + (0x2E9A, 'X'), + (0x2E9B, 'V'), + (0x2E9F, 'M', u'母'), + (0x2EA0, 'V'), + (0x2EF3, 'M', u'龟'), + (0x2EF4, 'X'), + (0x2F00, 'M', u'一'), + (0x2F01, 'M', u'丨'), + (0x2F02, 'M', u'丶'), + (0x2F03, 'M', u'丿'), + (0x2F04, 'M', u'乙'), + (0x2F05, 'M', u'亅'), + (0x2F06, 'M', u'二'), + (0x2F07, 'M', u'亠'), + (0x2F08, 'M', u'人'), + (0x2F09, 'M', u'儿'), + (0x2F0A, 'M', u'入'), + (0x2F0B, 'M', u'八'), + (0x2F0C, 'M', u'冂'), + (0x2F0D, 'M', u'冖'), + (0x2F0E, 'M', u'冫'), + (0x2F0F, 'M', u'几'), + (0x2F10, 'M', u'凵'), + (0x2F11, 'M', u'刀'), + (0x2F12, 'M', u'力'), + (0x2F13, 'M', u'勹'), + (0x2F14, 'M', u'匕'), + (0x2F15, 'M', u'匚'), + (0x2F16, 'M', u'匸'), + (0x2F17, 'M', u'十'), + (0x2F18, 'M', u'卜'), + (0x2F19, 'M', u'卩'), + (0x2F1A, 'M', u'厂'), + (0x2F1B, 'M', u'厶'), + (0x2F1C, 'M', u'又'), + (0x2F1D, 'M', u'口'), + (0x2F1E, 'M', u'囗'), + (0x2F1F, 'M', u'土'), + (0x2F20, 'M', u'士'), + (0x2F21, 'M', u'夂'), + (0x2F22, 'M', u'夊'), + (0x2F23, 'M', u'夕'), + (0x2F24, 'M', u'大'), + (0x2F25, 'M', u'女'), + (0x2F26, 'M', u'子'), + (0x2F27, 'M', u'宀'), + (0x2F28, 'M', u'寸'), + (0x2F29, 'M', u'小'), + (0x2F2A, 'M', u'尢'), + (0x2F2B, 'M', u'尸'), + (0x2F2C, 'M', u'屮'), + (0x2F2D, 'M', u'山'), + (0x2F2E, 'M', u'巛'), + (0x2F2F, 'M', u'工'), + (0x2F30, 'M', u'己'), + (0x2F31, 'M', u'巾'), + (0x2F32, 'M', u'干'), + (0x2F33, 'M', u'幺'), + (0x2F34, 'M', u'广'), + (0x2F35, 'M', u'廴'), + (0x2F36, 'M', u'廾'), + (0x2F37, 'M', u'弋'), + (0x2F38, 'M', u'弓'), + (0x2F39, 'M', u'彐'), + ] + +def _seg_27(): + return [ + (0x2F3A, 'M', u'彡'), + (0x2F3B, 'M', u'彳'), + (0x2F3C, 'M', u'心'), + (0x2F3D, 'M', u'戈'), + (0x2F3E, 'M', u'戶'), + (0x2F3F, 'M', u'手'), + (0x2F40, 'M', u'支'), + (0x2F41, 'M', u'攴'), + (0x2F42, 'M', u'文'), + (0x2F43, 'M', u'斗'), + (0x2F44, 'M', u'斤'), + (0x2F45, 'M', u'方'), + (0x2F46, 'M', u'无'), + (0x2F47, 'M', u'日'), + (0x2F48, 'M', u'曰'), + (0x2F49, 'M', u'月'), + (0x2F4A, 'M', u'木'), + (0x2F4B, 'M', u'欠'), + (0x2F4C, 'M', u'止'), + (0x2F4D, 'M', u'歹'), + (0x2F4E, 'M', u'殳'), + (0x2F4F, 'M', u'毋'), + (0x2F50, 'M', u'比'), + (0x2F51, 'M', u'毛'), + (0x2F52, 'M', u'氏'), + (0x2F53, 'M', u'气'), + (0x2F54, 'M', u'水'), + (0x2F55, 'M', u'火'), + (0x2F56, 'M', u'爪'), + (0x2F57, 'M', u'父'), + (0x2F58, 'M', u'爻'), + (0x2F59, 'M', u'爿'), + (0x2F5A, 'M', u'片'), + (0x2F5B, 'M', u'牙'), + (0x2F5C, 'M', u'牛'), + (0x2F5D, 'M', u'犬'), + (0x2F5E, 'M', u'玄'), + (0x2F5F, 'M', u'玉'), + (0x2F60, 'M', u'瓜'), + (0x2F61, 'M', u'瓦'), + (0x2F62, 'M', u'甘'), + (0x2F63, 'M', u'生'), + (0x2F64, 'M', u'用'), + (0x2F65, 'M', u'田'), + (0x2F66, 'M', u'疋'), + (0x2F67, 'M', u'疒'), + (0x2F68, 'M', u'癶'), + (0x2F69, 'M', u'白'), + (0x2F6A, 'M', u'皮'), + (0x2F6B, 'M', u'皿'), + (0x2F6C, 'M', u'目'), + (0x2F6D, 'M', u'矛'), + (0x2F6E, 'M', u'矢'), + (0x2F6F, 'M', u'石'), + (0x2F70, 'M', u'示'), + (0x2F71, 'M', u'禸'), + (0x2F72, 'M', u'禾'), + (0x2F73, 'M', u'穴'), + (0x2F74, 'M', u'立'), + (0x2F75, 'M', u'竹'), + (0x2F76, 'M', u'米'), + (0x2F77, 'M', u'糸'), + (0x2F78, 'M', u'缶'), + (0x2F79, 'M', u'网'), + (0x2F7A, 'M', u'羊'), + (0x2F7B, 'M', u'羽'), + (0x2F7C, 'M', u'老'), + (0x2F7D, 'M', u'而'), + (0x2F7E, 'M', u'耒'), + (0x2F7F, 'M', u'耳'), + (0x2F80, 'M', u'聿'), + (0x2F81, 'M', u'肉'), + (0x2F82, 'M', u'臣'), + (0x2F83, 'M', u'自'), + (0x2F84, 'M', u'至'), + (0x2F85, 'M', u'臼'), + (0x2F86, 'M', u'舌'), + (0x2F87, 'M', u'舛'), + (0x2F88, 'M', u'舟'), + (0x2F89, 'M', u'艮'), + (0x2F8A, 'M', u'色'), + (0x2F8B, 'M', u'艸'), + (0x2F8C, 'M', u'虍'), + (0x2F8D, 'M', u'虫'), + (0x2F8E, 'M', u'血'), + (0x2F8F, 'M', u'行'), + (0x2F90, 'M', u'衣'), + (0x2F91, 'M', u'襾'), + (0x2F92, 'M', u'見'), + (0x2F93, 'M', u'角'), + (0x2F94, 'M', u'言'), + (0x2F95, 'M', u'谷'), + (0x2F96, 'M', u'豆'), + (0x2F97, 'M', u'豕'), + (0x2F98, 'M', u'豸'), + (0x2F99, 'M', u'貝'), + (0x2F9A, 'M', u'赤'), + (0x2F9B, 'M', u'走'), + (0x2F9C, 'M', u'足'), + (0x2F9D, 'M', u'身'), + ] + +def _seg_28(): + return [ + (0x2F9E, 'M', u'車'), + (0x2F9F, 'M', u'辛'), + (0x2FA0, 'M', u'辰'), + (0x2FA1, 'M', u'辵'), + (0x2FA2, 'M', u'邑'), + (0x2FA3, 'M', u'酉'), + (0x2FA4, 'M', u'釆'), + (0x2FA5, 'M', u'里'), + (0x2FA6, 'M', u'金'), + (0x2FA7, 'M', u'長'), + (0x2FA8, 'M', u'門'), + (0x2FA9, 'M', u'阜'), + (0x2FAA, 'M', u'隶'), + (0x2FAB, 'M', u'隹'), + (0x2FAC, 'M', u'雨'), + (0x2FAD, 'M', u'靑'), + (0x2FAE, 'M', u'非'), + (0x2FAF, 'M', u'面'), + (0x2FB0, 'M', u'革'), + (0x2FB1, 'M', u'韋'), + (0x2FB2, 'M', u'韭'), + (0x2FB3, 'M', u'音'), + (0x2FB4, 'M', u'頁'), + (0x2FB5, 'M', u'風'), + (0x2FB6, 'M', u'飛'), + (0x2FB7, 'M', u'食'), + (0x2FB8, 'M', u'首'), + (0x2FB9, 'M', u'香'), + (0x2FBA, 'M', u'馬'), + (0x2FBB, 'M', u'骨'), + (0x2FBC, 'M', u'高'), + (0x2FBD, 'M', u'髟'), + (0x2FBE, 'M', u'鬥'), + (0x2FBF, 'M', u'鬯'), + (0x2FC0, 'M', u'鬲'), + (0x2FC1, 'M', u'鬼'), + (0x2FC2, 'M', u'魚'), + (0x2FC3, 'M', u'鳥'), + (0x2FC4, 'M', u'鹵'), + (0x2FC5, 'M', u'鹿'), + (0x2FC6, 'M', u'麥'), + (0x2FC7, 'M', u'麻'), + (0x2FC8, 'M', u'黃'), + (0x2FC9, 'M', u'黍'), + (0x2FCA, 'M', u'黑'), + (0x2FCB, 'M', u'黹'), + (0x2FCC, 'M', u'黽'), + (0x2FCD, 'M', u'鼎'), + (0x2FCE, 'M', u'鼓'), + (0x2FCF, 'M', u'鼠'), + (0x2FD0, 'M', u'鼻'), + (0x2FD1, 'M', u'齊'), + (0x2FD2, 'M', u'齒'), + (0x2FD3, 'M', u'龍'), + (0x2FD4, 'M', u'龜'), + (0x2FD5, 'M', u'龠'), + (0x2FD6, 'X'), + (0x3000, '3', u' '), + (0x3001, 'V'), + (0x3002, 'M', u'.'), + (0x3003, 'V'), + (0x3036, 'M', u'〒'), + (0x3037, 'V'), + (0x3038, 'M', u'十'), + (0x3039, 'M', u'卄'), + (0x303A, 'M', u'卅'), + (0x303B, 'V'), + (0x3040, 'X'), + (0x3041, 'V'), + (0x3097, 'X'), + (0x3099, 'V'), + (0x309B, '3', u' ゙'), + (0x309C, '3', u' ゚'), + (0x309D, 'V'), + (0x309F, 'M', u'より'), + (0x30A0, 'V'), + (0x30FF, 'M', u'コト'), + (0x3100, 'X'), + (0x3105, 'V'), + (0x312E, 'X'), + (0x3131, 'M', u'ᄀ'), + (0x3132, 'M', u'ᄁ'), + (0x3133, 'M', u'ᆪ'), + (0x3134, 'M', u'ᄂ'), + (0x3135, 'M', u'ᆬ'), + (0x3136, 'M', u'ᆭ'), + (0x3137, 'M', u'ᄃ'), + (0x3138, 'M', u'ᄄ'), + (0x3139, 'M', u'ᄅ'), + (0x313A, 'M', u'ᆰ'), + (0x313B, 'M', u'ᆱ'), + (0x313C, 'M', u'ᆲ'), + (0x313D, 'M', u'ᆳ'), + (0x313E, 'M', u'ᆴ'), + (0x313F, 'M', u'ᆵ'), + (0x3140, 'M', u'ᄚ'), + (0x3141, 'M', u'ᄆ'), + (0x3142, 'M', u'ᄇ'), + (0x3143, 'M', u'ᄈ'), + (0x3144, 'M', u'ᄡ'), + ] + +def _seg_29(): + return [ + (0x3145, 'M', u'ᄉ'), + (0x3146, 'M', u'ᄊ'), + (0x3147, 'M', u'ᄋ'), + (0x3148, 'M', u'ᄌ'), + (0x3149, 'M', u'ᄍ'), + (0x314A, 'M', u'ᄎ'), + (0x314B, 'M', u'ᄏ'), + (0x314C, 'M', u'ᄐ'), + (0x314D, 'M', u'ᄑ'), + (0x314E, 'M', u'ᄒ'), + (0x314F, 'M', u'ᅡ'), + (0x3150, 'M', u'ᅢ'), + (0x3151, 'M', u'ᅣ'), + (0x3152, 'M', u'ᅤ'), + (0x3153, 'M', u'ᅥ'), + (0x3154, 'M', u'ᅦ'), + (0x3155, 'M', u'ᅧ'), + (0x3156, 'M', u'ᅨ'), + (0x3157, 'M', u'ᅩ'), + (0x3158, 'M', u'ᅪ'), + (0x3159, 'M', u'ᅫ'), + (0x315A, 'M', u'ᅬ'), + (0x315B, 'M', u'ᅭ'), + (0x315C, 'M', u'ᅮ'), + (0x315D, 'M', u'ᅯ'), + (0x315E, 'M', u'ᅰ'), + (0x315F, 'M', u'ᅱ'), + (0x3160, 'M', u'ᅲ'), + (0x3161, 'M', u'ᅳ'), + (0x3162, 'M', u'ᅴ'), + (0x3163, 'M', u'ᅵ'), + (0x3164, 'X'), + (0x3165, 'M', u'ᄔ'), + (0x3166, 'M', u'ᄕ'), + (0x3167, 'M', u'ᇇ'), + (0x3168, 'M', u'ᇈ'), + (0x3169, 'M', u'ᇌ'), + (0x316A, 'M', u'ᇎ'), + (0x316B, 'M', u'ᇓ'), + (0x316C, 'M', u'ᇗ'), + (0x316D, 'M', u'ᇙ'), + (0x316E, 'M', u'ᄜ'), + (0x316F, 'M', u'ᇝ'), + (0x3170, 'M', u'ᇟ'), + (0x3171, 'M', u'ᄝ'), + (0x3172, 'M', u'ᄞ'), + (0x3173, 'M', u'ᄠ'), + (0x3174, 'M', u'ᄢ'), + (0x3175, 'M', u'ᄣ'), + (0x3176, 'M', u'ᄧ'), + (0x3177, 'M', u'ᄩ'), + (0x3178, 'M', u'ᄫ'), + (0x3179, 'M', u'ᄬ'), + (0x317A, 'M', u'ᄭ'), + (0x317B, 'M', u'ᄮ'), + (0x317C, 'M', u'ᄯ'), + (0x317D, 'M', u'ᄲ'), + (0x317E, 'M', u'ᄶ'), + (0x317F, 'M', u'ᅀ'), + (0x3180, 'M', u'ᅇ'), + (0x3181, 'M', u'ᅌ'), + (0x3182, 'M', u'ᇱ'), + (0x3183, 'M', u'ᇲ'), + (0x3184, 'M', u'ᅗ'), + (0x3185, 'M', u'ᅘ'), + (0x3186, 'M', u'ᅙ'), + (0x3187, 'M', u'ᆄ'), + (0x3188, 'M', u'ᆅ'), + (0x3189, 'M', u'ᆈ'), + (0x318A, 'M', u'ᆑ'), + (0x318B, 'M', u'ᆒ'), + (0x318C, 'M', u'ᆔ'), + (0x318D, 'M', u'ᆞ'), + (0x318E, 'M', u'ᆡ'), + (0x318F, 'X'), + (0x3190, 'V'), + (0x3192, 'M', u'一'), + (0x3193, 'M', u'二'), + (0x3194, 'M', u'三'), + (0x3195, 'M', u'四'), + (0x3196, 'M', u'上'), + (0x3197, 'M', u'中'), + (0x3198, 'M', u'下'), + (0x3199, 'M', u'甲'), + (0x319A, 'M', u'乙'), + (0x319B, 'M', u'丙'), + (0x319C, 'M', u'丁'), + (0x319D, 'M', u'天'), + (0x319E, 'M', u'地'), + (0x319F, 'M', u'人'), + (0x31A0, 'V'), + (0x31BB, 'X'), + (0x31C0, 'V'), + (0x31E4, 'X'), + (0x31F0, 'V'), + (0x3200, '3', u'(ᄀ)'), + (0x3201, '3', u'(ᄂ)'), + (0x3202, '3', u'(ᄃ)'), + (0x3203, '3', u'(ᄅ)'), + (0x3204, '3', u'(ᄆ)'), + ] + +def _seg_30(): + return [ + (0x3205, '3', u'(ᄇ)'), + (0x3206, '3', u'(ᄉ)'), + (0x3207, '3', u'(ᄋ)'), + (0x3208, '3', u'(ᄌ)'), + (0x3209, '3', u'(ᄎ)'), + (0x320A, '3', u'(ᄏ)'), + (0x320B, '3', u'(ᄐ)'), + (0x320C, '3', u'(ᄑ)'), + (0x320D, '3', u'(ᄒ)'), + (0x320E, '3', u'(가)'), + (0x320F, '3', u'(나)'), + (0x3210, '3', u'(다)'), + (0x3211, '3', u'(라)'), + (0x3212, '3', u'(마)'), + (0x3213, '3', u'(바)'), + (0x3214, '3', u'(사)'), + (0x3215, '3', u'(아)'), + (0x3216, '3', u'(자)'), + (0x3217, '3', u'(차)'), + (0x3218, '3', u'(카)'), + (0x3219, '3', u'(타)'), + (0x321A, '3', u'(파)'), + (0x321B, '3', u'(하)'), + (0x321C, '3', u'(주)'), + (0x321D, '3', u'(오전)'), + (0x321E, '3', u'(오후)'), + (0x321F, 'X'), + (0x3220, '3', u'(一)'), + (0x3221, '3', u'(二)'), + (0x3222, '3', u'(三)'), + (0x3223, '3', u'(四)'), + (0x3224, '3', u'(五)'), + (0x3225, '3', u'(六)'), + (0x3226, '3', u'(七)'), + (0x3227, '3', u'(八)'), + (0x3228, '3', u'(九)'), + (0x3229, '3', u'(十)'), + (0x322A, '3', u'(月)'), + (0x322B, '3', u'(火)'), + (0x322C, '3', u'(水)'), + (0x322D, '3', u'(木)'), + (0x322E, '3', u'(金)'), + (0x322F, '3', u'(土)'), + (0x3230, '3', u'(日)'), + (0x3231, '3', u'(株)'), + (0x3232, '3', u'(有)'), + (0x3233, '3', u'(社)'), + (0x3234, '3', u'(名)'), + (0x3235, '3', u'(特)'), + (0x3236, '3', u'(財)'), + (0x3237, '3', u'(祝)'), + (0x3238, '3', u'(労)'), + (0x3239, '3', u'(代)'), + (0x323A, '3', u'(呼)'), + (0x323B, '3', u'(学)'), + (0x323C, '3', u'(監)'), + (0x323D, '3', u'(企)'), + (0x323E, '3', u'(資)'), + (0x323F, '3', u'(協)'), + (0x3240, '3', u'(祭)'), + (0x3241, '3', u'(休)'), + (0x3242, '3', u'(自)'), + (0x3243, '3', u'(至)'), + (0x3244, 'M', u'問'), + (0x3245, 'M', u'幼'), + (0x3246, 'M', u'文'), + (0x3247, 'M', u'箏'), + (0x3248, 'V'), + (0x3250, 'M', u'pte'), + (0x3251, 'M', u'21'), + (0x3252, 'M', u'22'), + (0x3253, 'M', u'23'), + (0x3254, 'M', u'24'), + (0x3255, 'M', u'25'), + (0x3256, 'M', u'26'), + (0x3257, 'M', u'27'), + (0x3258, 'M', u'28'), + (0x3259, 'M', u'29'), + (0x325A, 'M', u'30'), + (0x325B, 'M', u'31'), + (0x325C, 'M', u'32'), + (0x325D, 'M', u'33'), + (0x325E, 'M', u'34'), + (0x325F, 'M', u'35'), + (0x3260, 'M', u'ᄀ'), + (0x3261, 'M', u'ᄂ'), + (0x3262, 'M', u'ᄃ'), + (0x3263, 'M', u'ᄅ'), + (0x3264, 'M', u'ᄆ'), + (0x3265, 'M', u'ᄇ'), + (0x3266, 'M', u'ᄉ'), + (0x3267, 'M', u'ᄋ'), + (0x3268, 'M', u'ᄌ'), + (0x3269, 'M', u'ᄎ'), + (0x326A, 'M', u'ᄏ'), + (0x326B, 'M', u'ᄐ'), + (0x326C, 'M', u'ᄑ'), + (0x326D, 'M', u'ᄒ'), + (0x326E, 'M', u'가'), + (0x326F, 'M', u'나'), + ] + +def _seg_31(): + return [ + (0x3270, 'M', u'다'), + (0x3271, 'M', u'라'), + (0x3272, 'M', u'마'), + (0x3273, 'M', u'바'), + (0x3274, 'M', u'사'), + (0x3275, 'M', u'아'), + (0x3276, 'M', u'자'), + (0x3277, 'M', u'차'), + (0x3278, 'M', u'카'), + (0x3279, 'M', u'타'), + (0x327A, 'M', u'파'), + (0x327B, 'M', u'하'), + (0x327C, 'M', u'참고'), + (0x327D, 'M', u'주의'), + (0x327E, 'M', u'우'), + (0x327F, 'V'), + (0x3280, 'M', u'一'), + (0x3281, 'M', u'二'), + (0x3282, 'M', u'三'), + (0x3283, 'M', u'四'), + (0x3284, 'M', u'五'), + (0x3285, 'M', u'六'), + (0x3286, 'M', u'七'), + (0x3287, 'M', u'八'), + (0x3288, 'M', u'九'), + (0x3289, 'M', u'十'), + (0x328A, 'M', u'月'), + (0x328B, 'M', u'火'), + (0x328C, 'M', u'水'), + (0x328D, 'M', u'木'), + (0x328E, 'M', u'金'), + (0x328F, 'M', u'土'), + (0x3290, 'M', u'日'), + (0x3291, 'M', u'株'), + (0x3292, 'M', u'有'), + (0x3293, 'M', u'社'), + (0x3294, 'M', u'名'), + (0x3295, 'M', u'特'), + (0x3296, 'M', u'財'), + (0x3297, 'M', u'祝'), + (0x3298, 'M', u'労'), + (0x3299, 'M', u'秘'), + (0x329A, 'M', u'男'), + (0x329B, 'M', u'女'), + (0x329C, 'M', u'適'), + (0x329D, 'M', u'優'), + (0x329E, 'M', u'印'), + (0x329F, 'M', u'注'), + (0x32A0, 'M', u'項'), + (0x32A1, 'M', u'休'), + (0x32A2, 'M', u'写'), + (0x32A3, 'M', u'正'), + (0x32A4, 'M', u'上'), + (0x32A5, 'M', u'中'), + (0x32A6, 'M', u'下'), + (0x32A7, 'M', u'左'), + (0x32A8, 'M', u'右'), + (0x32A9, 'M', u'医'), + (0x32AA, 'M', u'宗'), + (0x32AB, 'M', u'学'), + (0x32AC, 'M', u'監'), + (0x32AD, 'M', u'企'), + (0x32AE, 'M', u'資'), + (0x32AF, 'M', u'協'), + (0x32B0, 'M', u'夜'), + (0x32B1, 'M', u'36'), + (0x32B2, 'M', u'37'), + (0x32B3, 'M', u'38'), + (0x32B4, 'M', u'39'), + (0x32B5, 'M', u'40'), + (0x32B6, 'M', u'41'), + (0x32B7, 'M', u'42'), + (0x32B8, 'M', u'43'), + (0x32B9, 'M', u'44'), + (0x32BA, 'M', u'45'), + (0x32BB, 'M', u'46'), + (0x32BC, 'M', u'47'), + (0x32BD, 'M', u'48'), + (0x32BE, 'M', u'49'), + (0x32BF, 'M', u'50'), + (0x32C0, 'M', u'1月'), + (0x32C1, 'M', u'2月'), + (0x32C2, 'M', u'3月'), + (0x32C3, 'M', u'4月'), + (0x32C4, 'M', u'5月'), + (0x32C5, 'M', u'6月'), + (0x32C6, 'M', u'7月'), + (0x32C7, 'M', u'8月'), + (0x32C8, 'M', u'9月'), + (0x32C9, 'M', u'10月'), + (0x32CA, 'M', u'11月'), + (0x32CB, 'M', u'12月'), + (0x32CC, 'M', u'hg'), + (0x32CD, 'M', u'erg'), + (0x32CE, 'M', u'ev'), + (0x32CF, 'M', u'ltd'), + (0x32D0, 'M', u'ア'), + (0x32D1, 'M', u'イ'), + (0x32D2, 'M', u'ウ'), + (0x32D3, 'M', u'エ'), + ] + +def _seg_32(): + return [ + (0x32D4, 'M', u'オ'), + (0x32D5, 'M', u'カ'), + (0x32D6, 'M', u'キ'), + (0x32D7, 'M', u'ク'), + (0x32D8, 'M', u'ケ'), + (0x32D9, 'M', u'コ'), + (0x32DA, 'M', u'サ'), + (0x32DB, 'M', u'シ'), + (0x32DC, 'M', u'ス'), + (0x32DD, 'M', u'セ'), + (0x32DE, 'M', u'ソ'), + (0x32DF, 'M', u'タ'), + (0x32E0, 'M', u'チ'), + (0x32E1, 'M', u'ツ'), + (0x32E2, 'M', u'テ'), + (0x32E3, 'M', u'ト'), + (0x32E4, 'M', u'ナ'), + (0x32E5, 'M', u'ニ'), + (0x32E6, 'M', u'ヌ'), + (0x32E7, 'M', u'ネ'), + (0x32E8, 'M', u'ノ'), + (0x32E9, 'M', u'ハ'), + (0x32EA, 'M', u'ヒ'), + (0x32EB, 'M', u'フ'), + (0x32EC, 'M', u'ヘ'), + (0x32ED, 'M', u'ホ'), + (0x32EE, 'M', u'マ'), + (0x32EF, 'M', u'ミ'), + (0x32F0, 'M', u'ム'), + (0x32F1, 'M', u'メ'), + (0x32F2, 'M', u'モ'), + (0x32F3, 'M', u'ヤ'), + (0x32F4, 'M', u'ユ'), + (0x32F5, 'M', u'ヨ'), + (0x32F6, 'M', u'ラ'), + (0x32F7, 'M', u'リ'), + (0x32F8, 'M', u'ル'), + (0x32F9, 'M', u'レ'), + (0x32FA, 'M', u'ロ'), + (0x32FB, 'M', u'ワ'), + (0x32FC, 'M', u'ヰ'), + (0x32FD, 'M', u'ヱ'), + (0x32FE, 'M', u'ヲ'), + (0x32FF, 'X'), + (0x3300, 'M', u'アパート'), + (0x3301, 'M', u'アルファ'), + (0x3302, 'M', u'アンペア'), + (0x3303, 'M', u'アール'), + (0x3304, 'M', u'イニング'), + (0x3305, 'M', u'インチ'), + (0x3306, 'M', u'ウォン'), + (0x3307, 'M', u'エスクード'), + (0x3308, 'M', u'エーカー'), + (0x3309, 'M', u'オンス'), + (0x330A, 'M', u'オーム'), + (0x330B, 'M', u'カイリ'), + (0x330C, 'M', u'カラット'), + (0x330D, 'M', u'カロリー'), + (0x330E, 'M', u'ガロン'), + (0x330F, 'M', u'ガンマ'), + (0x3310, 'M', u'ギガ'), + (0x3311, 'M', u'ギニー'), + (0x3312, 'M', u'キュリー'), + (0x3313, 'M', u'ギルダー'), + (0x3314, 'M', u'キロ'), + (0x3315, 'M', u'キログラム'), + (0x3316, 'M', u'キロメートル'), + (0x3317, 'M', u'キロワット'), + (0x3318, 'M', u'グラム'), + (0x3319, 'M', u'グラムトン'), + (0x331A, 'M', u'クルゼイロ'), + (0x331B, 'M', u'クローネ'), + (0x331C, 'M', u'ケース'), + (0x331D, 'M', u'コルナ'), + (0x331E, 'M', u'コーポ'), + (0x331F, 'M', u'サイクル'), + (0x3320, 'M', u'サンチーム'), + (0x3321, 'M', u'シリング'), + (0x3322, 'M', u'センチ'), + (0x3323, 'M', u'セント'), + (0x3324, 'M', u'ダース'), + (0x3325, 'M', u'デシ'), + (0x3326, 'M', u'ドル'), + (0x3327, 'M', u'トン'), + (0x3328, 'M', u'ナノ'), + (0x3329, 'M', u'ノット'), + (0x332A, 'M', u'ハイツ'), + (0x332B, 'M', u'パーセント'), + (0x332C, 'M', u'パーツ'), + (0x332D, 'M', u'バーレル'), + (0x332E, 'M', u'ピアストル'), + (0x332F, 'M', u'ピクル'), + (0x3330, 'M', u'ピコ'), + (0x3331, 'M', u'ビル'), + (0x3332, 'M', u'ファラッド'), + (0x3333, 'M', u'フィート'), + (0x3334, 'M', u'ブッシェル'), + (0x3335, 'M', u'フラン'), + (0x3336, 'M', u'ヘクタール'), + (0x3337, 'M', u'ペソ'), + ] + +def _seg_33(): + return [ + (0x3338, 'M', u'ペニヒ'), + (0x3339, 'M', u'ヘルツ'), + (0x333A, 'M', u'ペンス'), + (0x333B, 'M', u'ページ'), + (0x333C, 'M', u'ベータ'), + (0x333D, 'M', u'ポイント'), + (0x333E, 'M', u'ボルト'), + (0x333F, 'M', u'ホン'), + (0x3340, 'M', u'ポンド'), + (0x3341, 'M', u'ホール'), + (0x3342, 'M', u'ホーン'), + (0x3343, 'M', u'マイクロ'), + (0x3344, 'M', u'マイル'), + (0x3345, 'M', u'マッハ'), + (0x3346, 'M', u'マルク'), + (0x3347, 'M', u'マンション'), + (0x3348, 'M', u'ミクロン'), + (0x3349, 'M', u'ミリ'), + (0x334A, 'M', u'ミリバール'), + (0x334B, 'M', u'メガ'), + (0x334C, 'M', u'メガトン'), + (0x334D, 'M', u'メートル'), + (0x334E, 'M', u'ヤード'), + (0x334F, 'M', u'ヤール'), + (0x3350, 'M', u'ユアン'), + (0x3351, 'M', u'リットル'), + (0x3352, 'M', u'リラ'), + (0x3353, 'M', u'ルピー'), + (0x3354, 'M', u'ルーブル'), + (0x3355, 'M', u'レム'), + (0x3356, 'M', u'レントゲン'), + (0x3357, 'M', u'ワット'), + (0x3358, 'M', u'0点'), + (0x3359, 'M', u'1点'), + (0x335A, 'M', u'2点'), + (0x335B, 'M', u'3点'), + (0x335C, 'M', u'4点'), + (0x335D, 'M', u'5点'), + (0x335E, 'M', u'6点'), + (0x335F, 'M', u'7点'), + (0x3360, 'M', u'8点'), + (0x3361, 'M', u'9点'), + (0x3362, 'M', u'10点'), + (0x3363, 'M', u'11点'), + (0x3364, 'M', u'12点'), + (0x3365, 'M', u'13点'), + (0x3366, 'M', u'14点'), + (0x3367, 'M', u'15点'), + (0x3368, 'M', u'16点'), + (0x3369, 'M', u'17点'), + (0x336A, 'M', u'18点'), + (0x336B, 'M', u'19点'), + (0x336C, 'M', u'20点'), + (0x336D, 'M', u'21点'), + (0x336E, 'M', u'22点'), + (0x336F, 'M', u'23点'), + (0x3370, 'M', u'24点'), + (0x3371, 'M', u'hpa'), + (0x3372, 'M', u'da'), + (0x3373, 'M', u'au'), + (0x3374, 'M', u'bar'), + (0x3375, 'M', u'ov'), + (0x3376, 'M', u'pc'), + (0x3377, 'M', u'dm'), + (0x3378, 'M', u'dm2'), + (0x3379, 'M', u'dm3'), + (0x337A, 'M', u'iu'), + (0x337B, 'M', u'平成'), + (0x337C, 'M', u'昭和'), + (0x337D, 'M', u'大正'), + (0x337E, 'M', u'明治'), + (0x337F, 'M', u'株式会社'), + (0x3380, 'M', u'pa'), + (0x3381, 'M', u'na'), + (0x3382, 'M', u'μa'), + (0x3383, 'M', u'ma'), + (0x3384, 'M', u'ka'), + (0x3385, 'M', u'kb'), + (0x3386, 'M', u'mb'), + (0x3387, 'M', u'gb'), + (0x3388, 'M', u'cal'), + (0x3389, 'M', u'kcal'), + (0x338A, 'M', u'pf'), + (0x338B, 'M', u'nf'), + (0x338C, 'M', u'μf'), + (0x338D, 'M', u'μg'), + (0x338E, 'M', u'mg'), + (0x338F, 'M', u'kg'), + (0x3390, 'M', u'hz'), + (0x3391, 'M', u'khz'), + (0x3392, 'M', u'mhz'), + (0x3393, 'M', u'ghz'), + (0x3394, 'M', u'thz'), + (0x3395, 'M', u'μl'), + (0x3396, 'M', u'ml'), + (0x3397, 'M', u'dl'), + (0x3398, 'M', u'kl'), + (0x3399, 'M', u'fm'), + (0x339A, 'M', u'nm'), + (0x339B, 'M', u'μm'), + ] + +def _seg_34(): + return [ + (0x339C, 'M', u'mm'), + (0x339D, 'M', u'cm'), + (0x339E, 'M', u'km'), + (0x339F, 'M', u'mm2'), + (0x33A0, 'M', u'cm2'), + (0x33A1, 'M', u'm2'), + (0x33A2, 'M', u'km2'), + (0x33A3, 'M', u'mm3'), + (0x33A4, 'M', u'cm3'), + (0x33A5, 'M', u'm3'), + (0x33A6, 'M', u'km3'), + (0x33A7, 'M', u'm∕s'), + (0x33A8, 'M', u'm∕s2'), + (0x33A9, 'M', u'pa'), + (0x33AA, 'M', u'kpa'), + (0x33AB, 'M', u'mpa'), + (0x33AC, 'M', u'gpa'), + (0x33AD, 'M', u'rad'), + (0x33AE, 'M', u'rad∕s'), + (0x33AF, 'M', u'rad∕s2'), + (0x33B0, 'M', u'ps'), + (0x33B1, 'M', u'ns'), + (0x33B2, 'M', u'μs'), + (0x33B3, 'M', u'ms'), + (0x33B4, 'M', u'pv'), + (0x33B5, 'M', u'nv'), + (0x33B6, 'M', u'μv'), + (0x33B7, 'M', u'mv'), + (0x33B8, 'M', u'kv'), + (0x33B9, 'M', u'mv'), + (0x33BA, 'M', u'pw'), + (0x33BB, 'M', u'nw'), + (0x33BC, 'M', u'μw'), + (0x33BD, 'M', u'mw'), + (0x33BE, 'M', u'kw'), + (0x33BF, 'M', u'mw'), + (0x33C0, 'M', u'kω'), + (0x33C1, 'M', u'mω'), + (0x33C2, 'X'), + (0x33C3, 'M', u'bq'), + (0x33C4, 'M', u'cc'), + (0x33C5, 'M', u'cd'), + (0x33C6, 'M', u'c∕kg'), + (0x33C7, 'X'), + (0x33C8, 'M', u'db'), + (0x33C9, 'M', u'gy'), + (0x33CA, 'M', u'ha'), + (0x33CB, 'M', u'hp'), + (0x33CC, 'M', u'in'), + (0x33CD, 'M', u'kk'), + (0x33CE, 'M', u'km'), + (0x33CF, 'M', u'kt'), + (0x33D0, 'M', u'lm'), + (0x33D1, 'M', u'ln'), + (0x33D2, 'M', u'log'), + (0x33D3, 'M', u'lx'), + (0x33D4, 'M', u'mb'), + (0x33D5, 'M', u'mil'), + (0x33D6, 'M', u'mol'), + (0x33D7, 'M', u'ph'), + (0x33D8, 'X'), + (0x33D9, 'M', u'ppm'), + (0x33DA, 'M', u'pr'), + (0x33DB, 'M', u'sr'), + (0x33DC, 'M', u'sv'), + (0x33DD, 'M', u'wb'), + (0x33DE, 'M', u'v∕m'), + (0x33DF, 'M', u'a∕m'), + (0x33E0, 'M', u'1日'), + (0x33E1, 'M', u'2日'), + (0x33E2, 'M', u'3日'), + (0x33E3, 'M', u'4日'), + (0x33E4, 'M', u'5日'), + (0x33E5, 'M', u'6日'), + (0x33E6, 'M', u'7日'), + (0x33E7, 'M', u'8日'), + (0x33E8, 'M', u'9日'), + (0x33E9, 'M', u'10日'), + (0x33EA, 'M', u'11日'), + (0x33EB, 'M', u'12日'), + (0x33EC, 'M', u'13日'), + (0x33ED, 'M', u'14日'), + (0x33EE, 'M', u'15日'), + (0x33EF, 'M', u'16日'), + (0x33F0, 'M', u'17日'), + (0x33F1, 'M', u'18日'), + (0x33F2, 'M', u'19日'), + (0x33F3, 'M', u'20日'), + (0x33F4, 'M', u'21日'), + (0x33F5, 'M', u'22日'), + (0x33F6, 'M', u'23日'), + (0x33F7, 'M', u'24日'), + (0x33F8, 'M', u'25日'), + (0x33F9, 'M', u'26日'), + (0x33FA, 'M', u'27日'), + (0x33FB, 'M', u'28日'), + (0x33FC, 'M', u'29日'), + (0x33FD, 'M', u'30日'), + (0x33FE, 'M', u'31日'), + (0x33FF, 'M', u'gal'), + ] + +def _seg_35(): + return [ + (0x3400, 'V'), + (0x4DB6, 'X'), + (0x4DC0, 'V'), + (0x9FCD, 'X'), + (0xA000, 'V'), + (0xA48D, 'X'), + (0xA490, 'V'), + (0xA4C7, 'X'), + (0xA4D0, 'V'), + (0xA62C, 'X'), + (0xA640, 'M', u'ꙁ'), + (0xA641, 'V'), + (0xA642, 'M', u'ꙃ'), + (0xA643, 'V'), + (0xA644, 'M', u'ꙅ'), + (0xA645, 'V'), + (0xA646, 'M', u'ꙇ'), + (0xA647, 'V'), + (0xA648, 'M', u'ꙉ'), + (0xA649, 'V'), + (0xA64A, 'M', u'ꙋ'), + (0xA64B, 'V'), + (0xA64C, 'M', u'ꙍ'), + (0xA64D, 'V'), + (0xA64E, 'M', u'ꙏ'), + (0xA64F, 'V'), + (0xA650, 'M', u'ꙑ'), + (0xA651, 'V'), + (0xA652, 'M', u'ꙓ'), + (0xA653, 'V'), + (0xA654, 'M', u'ꙕ'), + (0xA655, 'V'), + (0xA656, 'M', u'ꙗ'), + (0xA657, 'V'), + (0xA658, 'M', u'ꙙ'), + (0xA659, 'V'), + (0xA65A, 'M', u'ꙛ'), + (0xA65B, 'V'), + (0xA65C, 'M', u'ꙝ'), + (0xA65D, 'V'), + (0xA65E, 'M', u'ꙟ'), + (0xA65F, 'V'), + (0xA660, 'M', u'ꙡ'), + (0xA661, 'V'), + (0xA662, 'M', u'ꙣ'), + (0xA663, 'V'), + (0xA664, 'M', u'ꙥ'), + (0xA665, 'V'), + (0xA666, 'M', u'ꙧ'), + (0xA667, 'V'), + (0xA668, 'M', u'ꙩ'), + (0xA669, 'V'), + (0xA66A, 'M', u'ꙫ'), + (0xA66B, 'V'), + (0xA66C, 'M', u'ꙭ'), + (0xA66D, 'V'), + (0xA680, 'M', u'ꚁ'), + (0xA681, 'V'), + (0xA682, 'M', u'ꚃ'), + (0xA683, 'V'), + (0xA684, 'M', u'ꚅ'), + (0xA685, 'V'), + (0xA686, 'M', u'ꚇ'), + (0xA687, 'V'), + (0xA688, 'M', u'ꚉ'), + (0xA689, 'V'), + (0xA68A, 'M', u'ꚋ'), + (0xA68B, 'V'), + (0xA68C, 'M', u'ꚍ'), + (0xA68D, 'V'), + (0xA68E, 'M', u'ꚏ'), + (0xA68F, 'V'), + (0xA690, 'M', u'ꚑ'), + (0xA691, 'V'), + (0xA692, 'M', u'ꚓ'), + (0xA693, 'V'), + (0xA694, 'M', u'ꚕ'), + (0xA695, 'V'), + (0xA696, 'M', u'ꚗ'), + (0xA697, 'V'), + (0xA698, 'X'), + (0xA69F, 'V'), + (0xA6F8, 'X'), + (0xA700, 'V'), + (0xA722, 'M', u'ꜣ'), + (0xA723, 'V'), + (0xA724, 'M', u'ꜥ'), + (0xA725, 'V'), + (0xA726, 'M', u'ꜧ'), + (0xA727, 'V'), + (0xA728, 'M', u'ꜩ'), + (0xA729, 'V'), + (0xA72A, 'M', u'ꜫ'), + (0xA72B, 'V'), + (0xA72C, 'M', u'ꜭ'), + (0xA72D, 'V'), + (0xA72E, 'M', u'ꜯ'), + (0xA72F, 'V'), + (0xA732, 'M', u'ꜳ'), + (0xA733, 'V'), + ] + +def _seg_36(): + return [ + (0xA734, 'M', u'ꜵ'), + (0xA735, 'V'), + (0xA736, 'M', u'ꜷ'), + (0xA737, 'V'), + (0xA738, 'M', u'ꜹ'), + (0xA739, 'V'), + (0xA73A, 'M', u'ꜻ'), + (0xA73B, 'V'), + (0xA73C, 'M', u'ꜽ'), + (0xA73D, 'V'), + (0xA73E, 'M', u'ꜿ'), + (0xA73F, 'V'), + (0xA740, 'M', u'ꝁ'), + (0xA741, 'V'), + (0xA742, 'M', u'ꝃ'), + (0xA743, 'V'), + (0xA744, 'M', u'ꝅ'), + (0xA745, 'V'), + (0xA746, 'M', u'ꝇ'), + (0xA747, 'V'), + (0xA748, 'M', u'ꝉ'), + (0xA749, 'V'), + (0xA74A, 'M', u'ꝋ'), + (0xA74B, 'V'), + (0xA74C, 'M', u'ꝍ'), + (0xA74D, 'V'), + (0xA74E, 'M', u'ꝏ'), + (0xA74F, 'V'), + (0xA750, 'M', u'ꝑ'), + (0xA751, 'V'), + (0xA752, 'M', u'ꝓ'), + (0xA753, 'V'), + (0xA754, 'M', u'ꝕ'), + (0xA755, 'V'), + (0xA756, 'M', u'ꝗ'), + (0xA757, 'V'), + (0xA758, 'M', u'ꝙ'), + (0xA759, 'V'), + (0xA75A, 'M', u'ꝛ'), + (0xA75B, 'V'), + (0xA75C, 'M', u'ꝝ'), + (0xA75D, 'V'), + (0xA75E, 'M', u'ꝟ'), + (0xA75F, 'V'), + (0xA760, 'M', u'ꝡ'), + (0xA761, 'V'), + (0xA762, 'M', u'ꝣ'), + (0xA763, 'V'), + (0xA764, 'M', u'ꝥ'), + (0xA765, 'V'), + (0xA766, 'M', u'ꝧ'), + (0xA767, 'V'), + (0xA768, 'M', u'ꝩ'), + (0xA769, 'V'), + (0xA76A, 'M', u'ꝫ'), + (0xA76B, 'V'), + (0xA76C, 'M', u'ꝭ'), + (0xA76D, 'V'), + (0xA76E, 'M', u'ꝯ'), + (0xA76F, 'V'), + (0xA770, 'M', u'ꝯ'), + (0xA771, 'V'), + (0xA779, 'M', u'ꝺ'), + (0xA77A, 'V'), + (0xA77B, 'M', u'ꝼ'), + (0xA77C, 'V'), + (0xA77D, 'M', u'ᵹ'), + (0xA77E, 'M', u'ꝿ'), + (0xA77F, 'V'), + (0xA780, 'M', u'ꞁ'), + (0xA781, 'V'), + (0xA782, 'M', u'ꞃ'), + (0xA783, 'V'), + (0xA784, 'M', u'ꞅ'), + (0xA785, 'V'), + (0xA786, 'M', u'ꞇ'), + (0xA787, 'V'), + (0xA78B, 'M', u'ꞌ'), + (0xA78C, 'V'), + (0xA78D, 'M', u'ɥ'), + (0xA78E, 'V'), + (0xA78F, 'X'), + (0xA790, 'M', u'ꞑ'), + (0xA791, 'V'), + (0xA792, 'M', u'ꞓ'), + (0xA793, 'V'), + (0xA794, 'X'), + (0xA7A0, 'M', u'ꞡ'), + (0xA7A1, 'V'), + (0xA7A2, 'M', u'ꞣ'), + (0xA7A3, 'V'), + (0xA7A4, 'M', u'ꞥ'), + (0xA7A5, 'V'), + (0xA7A6, 'M', u'ꞧ'), + (0xA7A7, 'V'), + (0xA7A8, 'M', u'ꞩ'), + (0xA7A9, 'V'), + (0xA7AA, 'M', u'ɦ'), + (0xA7AB, 'X'), + (0xA7F8, 'M', u'ħ'), + ] + +def _seg_37(): + return [ + (0xA7F9, 'M', u'œ'), + (0xA7FA, 'V'), + (0xA82C, 'X'), + (0xA830, 'V'), + (0xA83A, 'X'), + (0xA840, 'V'), + (0xA878, 'X'), + (0xA880, 'V'), + (0xA8C5, 'X'), + (0xA8CE, 'V'), + (0xA8DA, 'X'), + (0xA8E0, 'V'), + (0xA8FC, 'X'), + (0xA900, 'V'), + (0xA954, 'X'), + (0xA95F, 'V'), + (0xA97D, 'X'), + (0xA980, 'V'), + (0xA9CE, 'X'), + (0xA9CF, 'V'), + (0xA9DA, 'X'), + (0xA9DE, 'V'), + (0xA9E0, 'X'), + (0xAA00, 'V'), + (0xAA37, 'X'), + (0xAA40, 'V'), + (0xAA4E, 'X'), + (0xAA50, 'V'), + (0xAA5A, 'X'), + (0xAA5C, 'V'), + (0xAA7C, 'X'), + (0xAA80, 'V'), + (0xAAC3, 'X'), + (0xAADB, 'V'), + (0xAAF7, 'X'), + (0xAB01, 'V'), + (0xAB07, 'X'), + (0xAB09, 'V'), + (0xAB0F, 'X'), + (0xAB11, 'V'), + (0xAB17, 'X'), + (0xAB20, 'V'), + (0xAB27, 'X'), + (0xAB28, 'V'), + (0xAB2F, 'X'), + (0xABC0, 'V'), + (0xABEE, 'X'), + (0xABF0, 'V'), + (0xABFA, 'X'), + (0xAC00, 'V'), + (0xD7A4, 'X'), + (0xD7B0, 'V'), + (0xD7C7, 'X'), + (0xD7CB, 'V'), + (0xD7FC, 'X'), + (0xF900, 'M', u'豈'), + (0xF901, 'M', u'更'), + (0xF902, 'M', u'車'), + (0xF903, 'M', u'賈'), + (0xF904, 'M', u'滑'), + (0xF905, 'M', u'串'), + (0xF906, 'M', u'句'), + (0xF907, 'M', u'龜'), + (0xF909, 'M', u'契'), + (0xF90A, 'M', u'金'), + (0xF90B, 'M', u'喇'), + (0xF90C, 'M', u'奈'), + (0xF90D, 'M', u'懶'), + (0xF90E, 'M', u'癩'), + (0xF90F, 'M', u'羅'), + (0xF910, 'M', u'蘿'), + (0xF911, 'M', u'螺'), + (0xF912, 'M', u'裸'), + (0xF913, 'M', u'邏'), + (0xF914, 'M', u'樂'), + (0xF915, 'M', u'洛'), + (0xF916, 'M', u'烙'), + (0xF917, 'M', u'珞'), + (0xF918, 'M', u'落'), + (0xF919, 'M', u'酪'), + (0xF91A, 'M', u'駱'), + (0xF91B, 'M', u'亂'), + (0xF91C, 'M', u'卵'), + (0xF91D, 'M', u'欄'), + (0xF91E, 'M', u'爛'), + (0xF91F, 'M', u'蘭'), + (0xF920, 'M', u'鸞'), + (0xF921, 'M', u'嵐'), + (0xF922, 'M', u'濫'), + (0xF923, 'M', u'藍'), + (0xF924, 'M', u'襤'), + (0xF925, 'M', u'拉'), + (0xF926, 'M', u'臘'), + (0xF927, 'M', u'蠟'), + (0xF928, 'M', u'廊'), + (0xF929, 'M', u'朗'), + (0xF92A, 'M', u'浪'), + (0xF92B, 'M', u'狼'), + (0xF92C, 'M', u'郎'), + (0xF92D, 'M', u'來'), + ] + +def _seg_38(): + return [ + (0xF92E, 'M', u'冷'), + (0xF92F, 'M', u'勞'), + (0xF930, 'M', u'擄'), + (0xF931, 'M', u'櫓'), + (0xF932, 'M', u'爐'), + (0xF933, 'M', u'盧'), + (0xF934, 'M', u'老'), + (0xF935, 'M', u'蘆'), + (0xF936, 'M', u'虜'), + (0xF937, 'M', u'路'), + (0xF938, 'M', u'露'), + (0xF939, 'M', u'魯'), + (0xF93A, 'M', u'鷺'), + (0xF93B, 'M', u'碌'), + (0xF93C, 'M', u'祿'), + (0xF93D, 'M', u'綠'), + (0xF93E, 'M', u'菉'), + (0xF93F, 'M', u'錄'), + (0xF940, 'M', u'鹿'), + (0xF941, 'M', u'論'), + (0xF942, 'M', u'壟'), + (0xF943, 'M', u'弄'), + (0xF944, 'M', u'籠'), + (0xF945, 'M', u'聾'), + (0xF946, 'M', u'牢'), + (0xF947, 'M', u'磊'), + (0xF948, 'M', u'賂'), + (0xF949, 'M', u'雷'), + (0xF94A, 'M', u'壘'), + (0xF94B, 'M', u'屢'), + (0xF94C, 'M', u'樓'), + (0xF94D, 'M', u'淚'), + (0xF94E, 'M', u'漏'), + (0xF94F, 'M', u'累'), + (0xF950, 'M', u'縷'), + (0xF951, 'M', u'陋'), + (0xF952, 'M', u'勒'), + (0xF953, 'M', u'肋'), + (0xF954, 'M', u'凜'), + (0xF955, 'M', u'凌'), + (0xF956, 'M', u'稜'), + (0xF957, 'M', u'綾'), + (0xF958, 'M', u'菱'), + (0xF959, 'M', u'陵'), + (0xF95A, 'M', u'讀'), + (0xF95B, 'M', u'拏'), + (0xF95C, 'M', u'樂'), + (0xF95D, 'M', u'諾'), + (0xF95E, 'M', u'丹'), + (0xF95F, 'M', u'寧'), + (0xF960, 'M', u'怒'), + (0xF961, 'M', u'率'), + (0xF962, 'M', u'異'), + (0xF963, 'M', u'北'), + (0xF964, 'M', u'磻'), + (0xF965, 'M', u'便'), + (0xF966, 'M', u'復'), + (0xF967, 'M', u'不'), + (0xF968, 'M', u'泌'), + (0xF969, 'M', u'數'), + (0xF96A, 'M', u'索'), + (0xF96B, 'M', u'參'), + (0xF96C, 'M', u'塞'), + (0xF96D, 'M', u'省'), + (0xF96E, 'M', u'葉'), + (0xF96F, 'M', u'說'), + (0xF970, 'M', u'殺'), + (0xF971, 'M', u'辰'), + (0xF972, 'M', u'沈'), + (0xF973, 'M', u'拾'), + (0xF974, 'M', u'若'), + (0xF975, 'M', u'掠'), + (0xF976, 'M', u'略'), + (0xF977, 'M', u'亮'), + (0xF978, 'M', u'兩'), + (0xF979, 'M', u'凉'), + (0xF97A, 'M', u'梁'), + (0xF97B, 'M', u'糧'), + (0xF97C, 'M', u'良'), + (0xF97D, 'M', u'諒'), + (0xF97E, 'M', u'量'), + (0xF97F, 'M', u'勵'), + (0xF980, 'M', u'呂'), + (0xF981, 'M', u'女'), + (0xF982, 'M', u'廬'), + (0xF983, 'M', u'旅'), + (0xF984, 'M', u'濾'), + (0xF985, 'M', u'礪'), + (0xF986, 'M', u'閭'), + (0xF987, 'M', u'驪'), + (0xF988, 'M', u'麗'), + (0xF989, 'M', u'黎'), + (0xF98A, 'M', u'力'), + (0xF98B, 'M', u'曆'), + (0xF98C, 'M', u'歷'), + (0xF98D, 'M', u'轢'), + (0xF98E, 'M', u'年'), + (0xF98F, 'M', u'憐'), + (0xF990, 'M', u'戀'), + (0xF991, 'M', u'撚'), + ] + +def _seg_39(): + return [ + (0xF992, 'M', u'漣'), + (0xF993, 'M', u'煉'), + (0xF994, 'M', u'璉'), + (0xF995, 'M', u'秊'), + (0xF996, 'M', u'練'), + (0xF997, 'M', u'聯'), + (0xF998, 'M', u'輦'), + (0xF999, 'M', u'蓮'), + (0xF99A, 'M', u'連'), + (0xF99B, 'M', u'鍊'), + (0xF99C, 'M', u'列'), + (0xF99D, 'M', u'劣'), + (0xF99E, 'M', u'咽'), + (0xF99F, 'M', u'烈'), + (0xF9A0, 'M', u'裂'), + (0xF9A1, 'M', u'說'), + (0xF9A2, 'M', u'廉'), + (0xF9A3, 'M', u'念'), + (0xF9A4, 'M', u'捻'), + (0xF9A5, 'M', u'殮'), + (0xF9A6, 'M', u'簾'), + (0xF9A7, 'M', u'獵'), + (0xF9A8, 'M', u'令'), + (0xF9A9, 'M', u'囹'), + (0xF9AA, 'M', u'寧'), + (0xF9AB, 'M', u'嶺'), + (0xF9AC, 'M', u'怜'), + (0xF9AD, 'M', u'玲'), + (0xF9AE, 'M', u'瑩'), + (0xF9AF, 'M', u'羚'), + (0xF9B0, 'M', u'聆'), + (0xF9B1, 'M', u'鈴'), + (0xF9B2, 'M', u'零'), + (0xF9B3, 'M', u'靈'), + (0xF9B4, 'M', u'領'), + (0xF9B5, 'M', u'例'), + (0xF9B6, 'M', u'禮'), + (0xF9B7, 'M', u'醴'), + (0xF9B8, 'M', u'隸'), + (0xF9B9, 'M', u'惡'), + (0xF9BA, 'M', u'了'), + (0xF9BB, 'M', u'僚'), + (0xF9BC, 'M', u'寮'), + (0xF9BD, 'M', u'尿'), + (0xF9BE, 'M', u'料'), + (0xF9BF, 'M', u'樂'), + (0xF9C0, 'M', u'燎'), + (0xF9C1, 'M', u'療'), + (0xF9C2, 'M', u'蓼'), + (0xF9C3, 'M', u'遼'), + (0xF9C4, 'M', u'龍'), + (0xF9C5, 'M', u'暈'), + (0xF9C6, 'M', u'阮'), + (0xF9C7, 'M', u'劉'), + (0xF9C8, 'M', u'杻'), + (0xF9C9, 'M', u'柳'), + (0xF9CA, 'M', u'流'), + (0xF9CB, 'M', u'溜'), + (0xF9CC, 'M', u'琉'), + (0xF9CD, 'M', u'留'), + (0xF9CE, 'M', u'硫'), + (0xF9CF, 'M', u'紐'), + (0xF9D0, 'M', u'類'), + (0xF9D1, 'M', u'六'), + (0xF9D2, 'M', u'戮'), + (0xF9D3, 'M', u'陸'), + (0xF9D4, 'M', u'倫'), + (0xF9D5, 'M', u'崙'), + (0xF9D6, 'M', u'淪'), + (0xF9D7, 'M', u'輪'), + (0xF9D8, 'M', u'律'), + (0xF9D9, 'M', u'慄'), + (0xF9DA, 'M', u'栗'), + (0xF9DB, 'M', u'率'), + (0xF9DC, 'M', u'隆'), + (0xF9DD, 'M', u'利'), + (0xF9DE, 'M', u'吏'), + (0xF9DF, 'M', u'履'), + (0xF9E0, 'M', u'易'), + (0xF9E1, 'M', u'李'), + (0xF9E2, 'M', u'梨'), + (0xF9E3, 'M', u'泥'), + (0xF9E4, 'M', u'理'), + (0xF9E5, 'M', u'痢'), + (0xF9E6, 'M', u'罹'), + (0xF9E7, 'M', u'裏'), + (0xF9E8, 'M', u'裡'), + (0xF9E9, 'M', u'里'), + (0xF9EA, 'M', u'離'), + (0xF9EB, 'M', u'匿'), + (0xF9EC, 'M', u'溺'), + (0xF9ED, 'M', u'吝'), + (0xF9EE, 'M', u'燐'), + (0xF9EF, 'M', u'璘'), + (0xF9F0, 'M', u'藺'), + (0xF9F1, 'M', u'隣'), + (0xF9F2, 'M', u'鱗'), + (0xF9F3, 'M', u'麟'), + (0xF9F4, 'M', u'林'), + (0xF9F5, 'M', u'淋'), + ] + +def _seg_40(): + return [ + (0xF9F6, 'M', u'臨'), + (0xF9F7, 'M', u'立'), + (0xF9F8, 'M', u'笠'), + (0xF9F9, 'M', u'粒'), + (0xF9FA, 'M', u'狀'), + (0xF9FB, 'M', u'炙'), + (0xF9FC, 'M', u'識'), + (0xF9FD, 'M', u'什'), + (0xF9FE, 'M', u'茶'), + (0xF9FF, 'M', u'刺'), + (0xFA00, 'M', u'切'), + (0xFA01, 'M', u'度'), + (0xFA02, 'M', u'拓'), + (0xFA03, 'M', u'糖'), + (0xFA04, 'M', u'宅'), + (0xFA05, 'M', u'洞'), + (0xFA06, 'M', u'暴'), + (0xFA07, 'M', u'輻'), + (0xFA08, 'M', u'行'), + (0xFA09, 'M', u'降'), + (0xFA0A, 'M', u'見'), + (0xFA0B, 'M', u'廓'), + (0xFA0C, 'M', u'兀'), + (0xFA0D, 'M', u'嗀'), + (0xFA0E, 'V'), + (0xFA10, 'M', u'塚'), + (0xFA11, 'V'), + (0xFA12, 'M', u'晴'), + (0xFA13, 'V'), + (0xFA15, 'M', u'凞'), + (0xFA16, 'M', u'猪'), + (0xFA17, 'M', u'益'), + (0xFA18, 'M', u'礼'), + (0xFA19, 'M', u'神'), + (0xFA1A, 'M', u'祥'), + (0xFA1B, 'M', u'福'), + (0xFA1C, 'M', u'靖'), + (0xFA1D, 'M', u'精'), + (0xFA1E, 'M', u'羽'), + (0xFA1F, 'V'), + (0xFA20, 'M', u'蘒'), + (0xFA21, 'V'), + (0xFA22, 'M', u'諸'), + (0xFA23, 'V'), + (0xFA25, 'M', u'逸'), + (0xFA26, 'M', u'都'), + (0xFA27, 'V'), + (0xFA2A, 'M', u'飯'), + (0xFA2B, 'M', u'飼'), + (0xFA2C, 'M', u'館'), + (0xFA2D, 'M', u'鶴'), + (0xFA2E, 'M', u'郞'), + (0xFA2F, 'M', u'隷'), + (0xFA30, 'M', u'侮'), + (0xFA31, 'M', u'僧'), + (0xFA32, 'M', u'免'), + (0xFA33, 'M', u'勉'), + (0xFA34, 'M', u'勤'), + (0xFA35, 'M', u'卑'), + (0xFA36, 'M', u'喝'), + (0xFA37, 'M', u'嘆'), + (0xFA38, 'M', u'器'), + (0xFA39, 'M', u'塀'), + (0xFA3A, 'M', u'墨'), + (0xFA3B, 'M', u'層'), + (0xFA3C, 'M', u'屮'), + (0xFA3D, 'M', u'悔'), + (0xFA3E, 'M', u'慨'), + (0xFA3F, 'M', u'憎'), + (0xFA40, 'M', u'懲'), + (0xFA41, 'M', u'敏'), + (0xFA42, 'M', u'既'), + (0xFA43, 'M', u'暑'), + (0xFA44, 'M', u'梅'), + (0xFA45, 'M', u'海'), + (0xFA46, 'M', u'渚'), + (0xFA47, 'M', u'漢'), + (0xFA48, 'M', u'煮'), + (0xFA49, 'M', u'爫'), + (0xFA4A, 'M', u'琢'), + (0xFA4B, 'M', u'碑'), + (0xFA4C, 'M', u'社'), + (0xFA4D, 'M', u'祉'), + (0xFA4E, 'M', u'祈'), + (0xFA4F, 'M', u'祐'), + (0xFA50, 'M', u'祖'), + (0xFA51, 'M', u'祝'), + (0xFA52, 'M', u'禍'), + (0xFA53, 'M', u'禎'), + (0xFA54, 'M', u'穀'), + (0xFA55, 'M', u'突'), + (0xFA56, 'M', u'節'), + (0xFA57, 'M', u'練'), + (0xFA58, 'M', u'縉'), + (0xFA59, 'M', u'繁'), + (0xFA5A, 'M', u'署'), + (0xFA5B, 'M', u'者'), + (0xFA5C, 'M', u'臭'), + (0xFA5D, 'M', u'艹'), + (0xFA5F, 'M', u'著'), + ] + +def _seg_41(): + return [ + (0xFA60, 'M', u'褐'), + (0xFA61, 'M', u'視'), + (0xFA62, 'M', u'謁'), + (0xFA63, 'M', u'謹'), + (0xFA64, 'M', u'賓'), + (0xFA65, 'M', u'贈'), + (0xFA66, 'M', u'辶'), + (0xFA67, 'M', u'逸'), + (0xFA68, 'M', u'難'), + (0xFA69, 'M', u'響'), + (0xFA6A, 'M', u'頻'), + (0xFA6B, 'M', u'恵'), + (0xFA6C, 'M', u'𤋮'), + (0xFA6D, 'M', u'舘'), + (0xFA6E, 'X'), + (0xFA70, 'M', u'並'), + (0xFA71, 'M', u'况'), + (0xFA72, 'M', u'全'), + (0xFA73, 'M', u'侀'), + (0xFA74, 'M', u'充'), + (0xFA75, 'M', u'冀'), + (0xFA76, 'M', u'勇'), + (0xFA77, 'M', u'勺'), + (0xFA78, 'M', u'喝'), + (0xFA79, 'M', u'啕'), + (0xFA7A, 'M', u'喙'), + (0xFA7B, 'M', u'嗢'), + (0xFA7C, 'M', u'塚'), + (0xFA7D, 'M', u'墳'), + (0xFA7E, 'M', u'奄'), + (0xFA7F, 'M', u'奔'), + (0xFA80, 'M', u'婢'), + (0xFA81, 'M', u'嬨'), + (0xFA82, 'M', u'廒'), + (0xFA83, 'M', u'廙'), + (0xFA84, 'M', u'彩'), + (0xFA85, 'M', u'徭'), + (0xFA86, 'M', u'惘'), + (0xFA87, 'M', u'慎'), + (0xFA88, 'M', u'愈'), + (0xFA89, 'M', u'憎'), + (0xFA8A, 'M', u'慠'), + (0xFA8B, 'M', u'懲'), + (0xFA8C, 'M', u'戴'), + (0xFA8D, 'M', u'揄'), + (0xFA8E, 'M', u'搜'), + (0xFA8F, 'M', u'摒'), + (0xFA90, 'M', u'敖'), + (0xFA91, 'M', u'晴'), + (0xFA92, 'M', u'朗'), + (0xFA93, 'M', u'望'), + (0xFA94, 'M', u'杖'), + (0xFA95, 'M', u'歹'), + (0xFA96, 'M', u'殺'), + (0xFA97, 'M', u'流'), + (0xFA98, 'M', u'滛'), + (0xFA99, 'M', u'滋'), + (0xFA9A, 'M', u'漢'), + (0xFA9B, 'M', u'瀞'), + (0xFA9C, 'M', u'煮'), + (0xFA9D, 'M', u'瞧'), + (0xFA9E, 'M', u'爵'), + (0xFA9F, 'M', u'犯'), + (0xFAA0, 'M', u'猪'), + (0xFAA1, 'M', u'瑱'), + (0xFAA2, 'M', u'甆'), + (0xFAA3, 'M', u'画'), + (0xFAA4, 'M', u'瘝'), + (0xFAA5, 'M', u'瘟'), + (0xFAA6, 'M', u'益'), + (0xFAA7, 'M', u'盛'), + (0xFAA8, 'M', u'直'), + (0xFAA9, 'M', u'睊'), + (0xFAAA, 'M', u'着'), + (0xFAAB, 'M', u'磌'), + (0xFAAC, 'M', u'窱'), + (0xFAAD, 'M', u'節'), + (0xFAAE, 'M', u'类'), + (0xFAAF, 'M', u'絛'), + (0xFAB0, 'M', u'練'), + (0xFAB1, 'M', u'缾'), + (0xFAB2, 'M', u'者'), + (0xFAB3, 'M', u'荒'), + (0xFAB4, 'M', u'華'), + (0xFAB5, 'M', u'蝹'), + (0xFAB6, 'M', u'襁'), + (0xFAB7, 'M', u'覆'), + (0xFAB8, 'M', u'視'), + (0xFAB9, 'M', u'調'), + (0xFABA, 'M', u'諸'), + (0xFABB, 'M', u'請'), + (0xFABC, 'M', u'謁'), + (0xFABD, 'M', u'諾'), + (0xFABE, 'M', u'諭'), + (0xFABF, 'M', u'謹'), + (0xFAC0, 'M', u'變'), + (0xFAC1, 'M', u'贈'), + (0xFAC2, 'M', u'輸'), + (0xFAC3, 'M', u'遲'), + (0xFAC4, 'M', u'醙'), + ] + +def _seg_42(): + return [ + (0xFAC5, 'M', u'鉶'), + (0xFAC6, 'M', u'陼'), + (0xFAC7, 'M', u'難'), + (0xFAC8, 'M', u'靖'), + (0xFAC9, 'M', u'韛'), + (0xFACA, 'M', u'響'), + (0xFACB, 'M', u'頋'), + (0xFACC, 'M', u'頻'), + (0xFACD, 'M', u'鬒'), + (0xFACE, 'M', u'龜'), + (0xFACF, 'M', u'𢡊'), + (0xFAD0, 'M', u'𢡄'), + (0xFAD1, 'M', u'𣏕'), + (0xFAD2, 'M', u'㮝'), + (0xFAD3, 'M', u'䀘'), + (0xFAD4, 'M', u'䀹'), + (0xFAD5, 'M', u'𥉉'), + (0xFAD6, 'M', u'𥳐'), + (0xFAD7, 'M', u'𧻓'), + (0xFAD8, 'M', u'齃'), + (0xFAD9, 'M', u'龎'), + (0xFADA, 'X'), + (0xFB00, 'M', u'ff'), + (0xFB01, 'M', u'fi'), + (0xFB02, 'M', u'fl'), + (0xFB03, 'M', u'ffi'), + (0xFB04, 'M', u'ffl'), + (0xFB05, 'M', u'st'), + (0xFB07, 'X'), + (0xFB13, 'M', u'մն'), + (0xFB14, 'M', u'մե'), + (0xFB15, 'M', u'մի'), + (0xFB16, 'M', u'վն'), + (0xFB17, 'M', u'մխ'), + (0xFB18, 'X'), + (0xFB1D, 'M', u'יִ'), + (0xFB1E, 'V'), + (0xFB1F, 'M', u'ײַ'), + (0xFB20, 'M', u'ע'), + (0xFB21, 'M', u'א'), + (0xFB22, 'M', u'ד'), + (0xFB23, 'M', u'ה'), + (0xFB24, 'M', u'כ'), + (0xFB25, 'M', u'ל'), + (0xFB26, 'M', u'ם'), + (0xFB27, 'M', u'ר'), + (0xFB28, 'M', u'ת'), + (0xFB29, '3', u'+'), + (0xFB2A, 'M', u'שׁ'), + (0xFB2B, 'M', u'שׂ'), + (0xFB2C, 'M', u'שּׁ'), + (0xFB2D, 'M', u'שּׂ'), + (0xFB2E, 'M', u'אַ'), + (0xFB2F, 'M', u'אָ'), + (0xFB30, 'M', u'אּ'), + (0xFB31, 'M', u'בּ'), + (0xFB32, 'M', u'גּ'), + (0xFB33, 'M', u'דּ'), + (0xFB34, 'M', u'הּ'), + (0xFB35, 'M', u'וּ'), + (0xFB36, 'M', u'זּ'), + (0xFB37, 'X'), + (0xFB38, 'M', u'טּ'), + (0xFB39, 'M', u'יּ'), + (0xFB3A, 'M', u'ךּ'), + (0xFB3B, 'M', u'כּ'), + (0xFB3C, 'M', u'לּ'), + (0xFB3D, 'X'), + (0xFB3E, 'M', u'מּ'), + (0xFB3F, 'X'), + (0xFB40, 'M', u'נּ'), + (0xFB41, 'M', u'סּ'), + (0xFB42, 'X'), + (0xFB43, 'M', u'ףּ'), + (0xFB44, 'M', u'פּ'), + (0xFB45, 'X'), + (0xFB46, 'M', u'צּ'), + (0xFB47, 'M', u'קּ'), + (0xFB48, 'M', u'רּ'), + (0xFB49, 'M', u'שּ'), + (0xFB4A, 'M', u'תּ'), + (0xFB4B, 'M', u'וֹ'), + (0xFB4C, 'M', u'בֿ'), + (0xFB4D, 'M', u'כֿ'), + (0xFB4E, 'M', u'פֿ'), + (0xFB4F, 'M', u'אל'), + (0xFB50, 'M', u'ٱ'), + (0xFB52, 'M', u'ٻ'), + (0xFB56, 'M', u'پ'), + (0xFB5A, 'M', u'ڀ'), + (0xFB5E, 'M', u'ٺ'), + (0xFB62, 'M', u'ٿ'), + (0xFB66, 'M', u'ٹ'), + (0xFB6A, 'M', u'ڤ'), + (0xFB6E, 'M', u'ڦ'), + (0xFB72, 'M', u'ڄ'), + (0xFB76, 'M', u'ڃ'), + (0xFB7A, 'M', u'چ'), + (0xFB7E, 'M', u'ڇ'), + (0xFB82, 'M', u'ڍ'), + ] + +def _seg_43(): + return [ + (0xFB84, 'M', u'ڌ'), + (0xFB86, 'M', u'ڎ'), + (0xFB88, 'M', u'ڈ'), + (0xFB8A, 'M', u'ژ'), + (0xFB8C, 'M', u'ڑ'), + (0xFB8E, 'M', u'ک'), + (0xFB92, 'M', u'گ'), + (0xFB96, 'M', u'ڳ'), + (0xFB9A, 'M', u'ڱ'), + (0xFB9E, 'M', u'ں'), + (0xFBA0, 'M', u'ڻ'), + (0xFBA4, 'M', u'ۀ'), + (0xFBA6, 'M', u'ہ'), + (0xFBAA, 'M', u'ھ'), + (0xFBAE, 'M', u'ے'), + (0xFBB0, 'M', u'ۓ'), + (0xFBB2, 'V'), + (0xFBC2, 'X'), + (0xFBD3, 'M', u'ڭ'), + (0xFBD7, 'M', u'ۇ'), + (0xFBD9, 'M', u'ۆ'), + (0xFBDB, 'M', u'ۈ'), + (0xFBDD, 'M', u'ۇٴ'), + (0xFBDE, 'M', u'ۋ'), + (0xFBE0, 'M', u'ۅ'), + (0xFBE2, 'M', u'ۉ'), + (0xFBE4, 'M', u'ې'), + (0xFBE8, 'M', u'ى'), + (0xFBEA, 'M', u'ئا'), + (0xFBEC, 'M', u'ئە'), + (0xFBEE, 'M', u'ئو'), + (0xFBF0, 'M', u'ئۇ'), + (0xFBF2, 'M', u'ئۆ'), + (0xFBF4, 'M', u'ئۈ'), + (0xFBF6, 'M', u'ئې'), + (0xFBF9, 'M', u'ئى'), + (0xFBFC, 'M', u'ی'), + (0xFC00, 'M', u'ئج'), + (0xFC01, 'M', u'ئح'), + (0xFC02, 'M', u'ئم'), + (0xFC03, 'M', u'ئى'), + (0xFC04, 'M', u'ئي'), + (0xFC05, 'M', u'بج'), + (0xFC06, 'M', u'بح'), + (0xFC07, 'M', u'بخ'), + (0xFC08, 'M', u'بم'), + (0xFC09, 'M', u'بى'), + (0xFC0A, 'M', u'بي'), + (0xFC0B, 'M', u'تج'), + (0xFC0C, 'M', u'تح'), + (0xFC0D, 'M', u'تخ'), + (0xFC0E, 'M', u'تم'), + (0xFC0F, 'M', u'تى'), + (0xFC10, 'M', u'تي'), + (0xFC11, 'M', u'ثج'), + (0xFC12, 'M', u'ثم'), + (0xFC13, 'M', u'ثى'), + (0xFC14, 'M', u'ثي'), + (0xFC15, 'M', u'جح'), + (0xFC16, 'M', u'جم'), + (0xFC17, 'M', u'حج'), + (0xFC18, 'M', u'حم'), + (0xFC19, 'M', u'خج'), + (0xFC1A, 'M', u'خح'), + (0xFC1B, 'M', u'خم'), + (0xFC1C, 'M', u'سج'), + (0xFC1D, 'M', u'سح'), + (0xFC1E, 'M', u'سخ'), + (0xFC1F, 'M', u'سم'), + (0xFC20, 'M', u'صح'), + (0xFC21, 'M', u'صم'), + (0xFC22, 'M', u'ضج'), + (0xFC23, 'M', u'ضح'), + (0xFC24, 'M', u'ضخ'), + (0xFC25, 'M', u'ضم'), + (0xFC26, 'M', u'طح'), + (0xFC27, 'M', u'طم'), + (0xFC28, 'M', u'ظم'), + (0xFC29, 'M', u'عج'), + (0xFC2A, 'M', u'عم'), + (0xFC2B, 'M', u'غج'), + (0xFC2C, 'M', u'غم'), + (0xFC2D, 'M', u'فج'), + (0xFC2E, 'M', u'فح'), + (0xFC2F, 'M', u'فخ'), + (0xFC30, 'M', u'فم'), + (0xFC31, 'M', u'فى'), + (0xFC32, 'M', u'في'), + (0xFC33, 'M', u'قح'), + (0xFC34, 'M', u'قم'), + (0xFC35, 'M', u'قى'), + (0xFC36, 'M', u'قي'), + (0xFC37, 'M', u'كا'), + (0xFC38, 'M', u'كج'), + (0xFC39, 'M', u'كح'), + (0xFC3A, 'M', u'كخ'), + (0xFC3B, 'M', u'كل'), + (0xFC3C, 'M', u'كم'), + (0xFC3D, 'M', u'كى'), + (0xFC3E, 'M', u'كي'), + ] + +def _seg_44(): + return [ + (0xFC3F, 'M', u'لج'), + (0xFC40, 'M', u'لح'), + (0xFC41, 'M', u'لخ'), + (0xFC42, 'M', u'لم'), + (0xFC43, 'M', u'لى'), + (0xFC44, 'M', u'لي'), + (0xFC45, 'M', u'مج'), + (0xFC46, 'M', u'مح'), + (0xFC47, 'M', u'مخ'), + (0xFC48, 'M', u'مم'), + (0xFC49, 'M', u'مى'), + (0xFC4A, 'M', u'مي'), + (0xFC4B, 'M', u'نج'), + (0xFC4C, 'M', u'نح'), + (0xFC4D, 'M', u'نخ'), + (0xFC4E, 'M', u'نم'), + (0xFC4F, 'M', u'نى'), + (0xFC50, 'M', u'ني'), + (0xFC51, 'M', u'هج'), + (0xFC52, 'M', u'هم'), + (0xFC53, 'M', u'هى'), + (0xFC54, 'M', u'هي'), + (0xFC55, 'M', u'يج'), + (0xFC56, 'M', u'يح'), + (0xFC57, 'M', u'يخ'), + (0xFC58, 'M', u'يم'), + (0xFC59, 'M', u'يى'), + (0xFC5A, 'M', u'يي'), + (0xFC5B, 'M', u'ذٰ'), + (0xFC5C, 'M', u'رٰ'), + (0xFC5D, 'M', u'ىٰ'), + (0xFC5E, '3', u' ٌّ'), + (0xFC5F, '3', u' ٍّ'), + (0xFC60, '3', u' َّ'), + (0xFC61, '3', u' ُّ'), + (0xFC62, '3', u' ِّ'), + (0xFC63, '3', u' ّٰ'), + (0xFC64, 'M', u'ئر'), + (0xFC65, 'M', u'ئز'), + (0xFC66, 'M', u'ئم'), + (0xFC67, 'M', u'ئن'), + (0xFC68, 'M', u'ئى'), + (0xFC69, 'M', u'ئي'), + (0xFC6A, 'M', u'بر'), + (0xFC6B, 'M', u'بز'), + (0xFC6C, 'M', u'بم'), + (0xFC6D, 'M', u'بن'), + (0xFC6E, 'M', u'بى'), + (0xFC6F, 'M', u'بي'), + (0xFC70, 'M', u'تر'), + (0xFC71, 'M', u'تز'), + (0xFC72, 'M', u'تم'), + (0xFC73, 'M', u'تن'), + (0xFC74, 'M', u'تى'), + (0xFC75, 'M', u'تي'), + (0xFC76, 'M', u'ثر'), + (0xFC77, 'M', u'ثز'), + (0xFC78, 'M', u'ثم'), + (0xFC79, 'M', u'ثن'), + (0xFC7A, 'M', u'ثى'), + (0xFC7B, 'M', u'ثي'), + (0xFC7C, 'M', u'فى'), + (0xFC7D, 'M', u'في'), + (0xFC7E, 'M', u'قى'), + (0xFC7F, 'M', u'قي'), + (0xFC80, 'M', u'كا'), + (0xFC81, 'M', u'كل'), + (0xFC82, 'M', u'كم'), + (0xFC83, 'M', u'كى'), + (0xFC84, 'M', u'كي'), + (0xFC85, 'M', u'لم'), + (0xFC86, 'M', u'لى'), + (0xFC87, 'M', u'لي'), + (0xFC88, 'M', u'ما'), + (0xFC89, 'M', u'مم'), + (0xFC8A, 'M', u'نر'), + (0xFC8B, 'M', u'نز'), + (0xFC8C, 'M', u'نم'), + (0xFC8D, 'M', u'نن'), + (0xFC8E, 'M', u'نى'), + (0xFC8F, 'M', u'ني'), + (0xFC90, 'M', u'ىٰ'), + (0xFC91, 'M', u'ير'), + (0xFC92, 'M', u'يز'), + (0xFC93, 'M', u'يم'), + (0xFC94, 'M', u'ين'), + (0xFC95, 'M', u'يى'), + (0xFC96, 'M', u'يي'), + (0xFC97, 'M', u'ئج'), + (0xFC98, 'M', u'ئح'), + (0xFC99, 'M', u'ئخ'), + (0xFC9A, 'M', u'ئم'), + (0xFC9B, 'M', u'ئه'), + (0xFC9C, 'M', u'بج'), + (0xFC9D, 'M', u'بح'), + (0xFC9E, 'M', u'بخ'), + (0xFC9F, 'M', u'بم'), + (0xFCA0, 'M', u'به'), + (0xFCA1, 'M', u'تج'), + (0xFCA2, 'M', u'تح'), + ] + +def _seg_45(): + return [ + (0xFCA3, 'M', u'تخ'), + (0xFCA4, 'M', u'تم'), + (0xFCA5, 'M', u'ته'), + (0xFCA6, 'M', u'ثم'), + (0xFCA7, 'M', u'جح'), + (0xFCA8, 'M', u'جم'), + (0xFCA9, 'M', u'حج'), + (0xFCAA, 'M', u'حم'), + (0xFCAB, 'M', u'خج'), + (0xFCAC, 'M', u'خم'), + (0xFCAD, 'M', u'سج'), + (0xFCAE, 'M', u'سح'), + (0xFCAF, 'M', u'سخ'), + (0xFCB0, 'M', u'سم'), + (0xFCB1, 'M', u'صح'), + (0xFCB2, 'M', u'صخ'), + (0xFCB3, 'M', u'صم'), + (0xFCB4, 'M', u'ضج'), + (0xFCB5, 'M', u'ضح'), + (0xFCB6, 'M', u'ضخ'), + (0xFCB7, 'M', u'ضم'), + (0xFCB8, 'M', u'طح'), + (0xFCB9, 'M', u'ظم'), + (0xFCBA, 'M', u'عج'), + (0xFCBB, 'M', u'عم'), + (0xFCBC, 'M', u'غج'), + (0xFCBD, 'M', u'غم'), + (0xFCBE, 'M', u'فج'), + (0xFCBF, 'M', u'فح'), + (0xFCC0, 'M', u'فخ'), + (0xFCC1, 'M', u'فم'), + (0xFCC2, 'M', u'قح'), + (0xFCC3, 'M', u'قم'), + (0xFCC4, 'M', u'كج'), + (0xFCC5, 'M', u'كح'), + (0xFCC6, 'M', u'كخ'), + (0xFCC7, 'M', u'كل'), + (0xFCC8, 'M', u'كم'), + (0xFCC9, 'M', u'لج'), + (0xFCCA, 'M', u'لح'), + (0xFCCB, 'M', u'لخ'), + (0xFCCC, 'M', u'لم'), + (0xFCCD, 'M', u'له'), + (0xFCCE, 'M', u'مج'), + (0xFCCF, 'M', u'مح'), + (0xFCD0, 'M', u'مخ'), + (0xFCD1, 'M', u'مم'), + (0xFCD2, 'M', u'نج'), + (0xFCD3, 'M', u'نح'), + (0xFCD4, 'M', u'نخ'), + (0xFCD5, 'M', u'نم'), + (0xFCD6, 'M', u'نه'), + (0xFCD7, 'M', u'هج'), + (0xFCD8, 'M', u'هم'), + (0xFCD9, 'M', u'هٰ'), + (0xFCDA, 'M', u'يج'), + (0xFCDB, 'M', u'يح'), + (0xFCDC, 'M', u'يخ'), + (0xFCDD, 'M', u'يم'), + (0xFCDE, 'M', u'يه'), + (0xFCDF, 'M', u'ئم'), + (0xFCE0, 'M', u'ئه'), + (0xFCE1, 'M', u'بم'), + (0xFCE2, 'M', u'به'), + (0xFCE3, 'M', u'تم'), + (0xFCE4, 'M', u'ته'), + (0xFCE5, 'M', u'ثم'), + (0xFCE6, 'M', u'ثه'), + (0xFCE7, 'M', u'سم'), + (0xFCE8, 'M', u'سه'), + (0xFCE9, 'M', u'شم'), + (0xFCEA, 'M', u'شه'), + (0xFCEB, 'M', u'كل'), + (0xFCEC, 'M', u'كم'), + (0xFCED, 'M', u'لم'), + (0xFCEE, 'M', u'نم'), + (0xFCEF, 'M', u'نه'), + (0xFCF0, 'M', u'يم'), + (0xFCF1, 'M', u'يه'), + (0xFCF2, 'M', u'ـَّ'), + (0xFCF3, 'M', u'ـُّ'), + (0xFCF4, 'M', u'ـِّ'), + (0xFCF5, 'M', u'طى'), + (0xFCF6, 'M', u'طي'), + (0xFCF7, 'M', u'عى'), + (0xFCF8, 'M', u'عي'), + (0xFCF9, 'M', u'غى'), + (0xFCFA, 'M', u'غي'), + (0xFCFB, 'M', u'سى'), + (0xFCFC, 'M', u'سي'), + (0xFCFD, 'M', u'شى'), + (0xFCFE, 'M', u'شي'), + (0xFCFF, 'M', u'حى'), + (0xFD00, 'M', u'حي'), + (0xFD01, 'M', u'جى'), + (0xFD02, 'M', u'جي'), + (0xFD03, 'M', u'خى'), + (0xFD04, 'M', u'خي'), + (0xFD05, 'M', u'صى'), + (0xFD06, 'M', u'صي'), + ] + +def _seg_46(): + return [ + (0xFD07, 'M', u'ضى'), + (0xFD08, 'M', u'ضي'), + (0xFD09, 'M', u'شج'), + (0xFD0A, 'M', u'شح'), + (0xFD0B, 'M', u'شخ'), + (0xFD0C, 'M', u'شم'), + (0xFD0D, 'M', u'شر'), + (0xFD0E, 'M', u'سر'), + (0xFD0F, 'M', u'صر'), + (0xFD10, 'M', u'ضر'), + (0xFD11, 'M', u'طى'), + (0xFD12, 'M', u'طي'), + (0xFD13, 'M', u'عى'), + (0xFD14, 'M', u'عي'), + (0xFD15, 'M', u'غى'), + (0xFD16, 'M', u'غي'), + (0xFD17, 'M', u'سى'), + (0xFD18, 'M', u'سي'), + (0xFD19, 'M', u'شى'), + (0xFD1A, 'M', u'شي'), + (0xFD1B, 'M', u'حى'), + (0xFD1C, 'M', u'حي'), + (0xFD1D, 'M', u'جى'), + (0xFD1E, 'M', u'جي'), + (0xFD1F, 'M', u'خى'), + (0xFD20, 'M', u'خي'), + (0xFD21, 'M', u'صى'), + (0xFD22, 'M', u'صي'), + (0xFD23, 'M', u'ضى'), + (0xFD24, 'M', u'ضي'), + (0xFD25, 'M', u'شج'), + (0xFD26, 'M', u'شح'), + (0xFD27, 'M', u'شخ'), + (0xFD28, 'M', u'شم'), + (0xFD29, 'M', u'شر'), + (0xFD2A, 'M', u'سر'), + (0xFD2B, 'M', u'صر'), + (0xFD2C, 'M', u'ضر'), + (0xFD2D, 'M', u'شج'), + (0xFD2E, 'M', u'شح'), + (0xFD2F, 'M', u'شخ'), + (0xFD30, 'M', u'شم'), + (0xFD31, 'M', u'سه'), + (0xFD32, 'M', u'شه'), + (0xFD33, 'M', u'طم'), + (0xFD34, 'M', u'سج'), + (0xFD35, 'M', u'سح'), + (0xFD36, 'M', u'سخ'), + (0xFD37, 'M', u'شج'), + (0xFD38, 'M', u'شح'), + (0xFD39, 'M', u'شخ'), + (0xFD3A, 'M', u'طم'), + (0xFD3B, 'M', u'ظم'), + (0xFD3C, 'M', u'اً'), + (0xFD3E, 'V'), + (0xFD40, 'X'), + (0xFD50, 'M', u'تجم'), + (0xFD51, 'M', u'تحج'), + (0xFD53, 'M', u'تحم'), + (0xFD54, 'M', u'تخم'), + (0xFD55, 'M', u'تمج'), + (0xFD56, 'M', u'تمح'), + (0xFD57, 'M', u'تمخ'), + (0xFD58, 'M', u'جمح'), + (0xFD5A, 'M', u'حمي'), + (0xFD5B, 'M', u'حمى'), + (0xFD5C, 'M', u'سحج'), + (0xFD5D, 'M', u'سجح'), + (0xFD5E, 'M', u'سجى'), + (0xFD5F, 'M', u'سمح'), + (0xFD61, 'M', u'سمج'), + (0xFD62, 'M', u'سمم'), + (0xFD64, 'M', u'صحح'), + (0xFD66, 'M', u'صمم'), + (0xFD67, 'M', u'شحم'), + (0xFD69, 'M', u'شجي'), + (0xFD6A, 'M', u'شمخ'), + (0xFD6C, 'M', u'شمم'), + (0xFD6E, 'M', u'ضحى'), + (0xFD6F, 'M', u'ضخم'), + (0xFD71, 'M', u'طمح'), + (0xFD73, 'M', u'طمم'), + (0xFD74, 'M', u'طمي'), + (0xFD75, 'M', u'عجم'), + (0xFD76, 'M', u'عمم'), + (0xFD78, 'M', u'عمى'), + (0xFD79, 'M', u'غمم'), + (0xFD7A, 'M', u'غمي'), + (0xFD7B, 'M', u'غمى'), + (0xFD7C, 'M', u'فخم'), + (0xFD7E, 'M', u'قمح'), + (0xFD7F, 'M', u'قمم'), + (0xFD80, 'M', u'لحم'), + (0xFD81, 'M', u'لحي'), + (0xFD82, 'M', u'لحى'), + (0xFD83, 'M', u'لجج'), + (0xFD85, 'M', u'لخم'), + (0xFD87, 'M', u'لمح'), + (0xFD89, 'M', u'محج'), + (0xFD8A, 'M', u'محم'), + ] + +def _seg_47(): + return [ + (0xFD8B, 'M', u'محي'), + (0xFD8C, 'M', u'مجح'), + (0xFD8D, 'M', u'مجم'), + (0xFD8E, 'M', u'مخج'), + (0xFD8F, 'M', u'مخم'), + (0xFD90, 'X'), + (0xFD92, 'M', u'مجخ'), + (0xFD93, 'M', u'همج'), + (0xFD94, 'M', u'همم'), + (0xFD95, 'M', u'نحم'), + (0xFD96, 'M', u'نحى'), + (0xFD97, 'M', u'نجم'), + (0xFD99, 'M', u'نجى'), + (0xFD9A, 'M', u'نمي'), + (0xFD9B, 'M', u'نمى'), + (0xFD9C, 'M', u'يمم'), + (0xFD9E, 'M', u'بخي'), + (0xFD9F, 'M', u'تجي'), + (0xFDA0, 'M', u'تجى'), + (0xFDA1, 'M', u'تخي'), + (0xFDA2, 'M', u'تخى'), + (0xFDA3, 'M', u'تمي'), + (0xFDA4, 'M', u'تمى'), + (0xFDA5, 'M', u'جمي'), + (0xFDA6, 'M', u'جحى'), + (0xFDA7, 'M', u'جمى'), + (0xFDA8, 'M', u'سخى'), + (0xFDA9, 'M', u'صحي'), + (0xFDAA, 'M', u'شحي'), + (0xFDAB, 'M', u'ضحي'), + (0xFDAC, 'M', u'لجي'), + (0xFDAD, 'M', u'لمي'), + (0xFDAE, 'M', u'يحي'), + (0xFDAF, 'M', u'يجي'), + (0xFDB0, 'M', u'يمي'), + (0xFDB1, 'M', u'ممي'), + (0xFDB2, 'M', u'قمي'), + (0xFDB3, 'M', u'نحي'), + (0xFDB4, 'M', u'قمح'), + (0xFDB5, 'M', u'لحم'), + (0xFDB6, 'M', u'عمي'), + (0xFDB7, 'M', u'كمي'), + (0xFDB8, 'M', u'نجح'), + (0xFDB9, 'M', u'مخي'), + (0xFDBA, 'M', u'لجم'), + (0xFDBB, 'M', u'كمم'), + (0xFDBC, 'M', u'لجم'), + (0xFDBD, 'M', u'نجح'), + (0xFDBE, 'M', u'جحي'), + (0xFDBF, 'M', u'حجي'), + (0xFDC0, 'M', u'مجي'), + (0xFDC1, 'M', u'فمي'), + (0xFDC2, 'M', u'بحي'), + (0xFDC3, 'M', u'كمم'), + (0xFDC4, 'M', u'عجم'), + (0xFDC5, 'M', u'صمم'), + (0xFDC6, 'M', u'سخي'), + (0xFDC7, 'M', u'نجي'), + (0xFDC8, 'X'), + (0xFDF0, 'M', u'صلے'), + (0xFDF1, 'M', u'قلے'), + (0xFDF2, 'M', u'الله'), + (0xFDF3, 'M', u'اكبر'), + (0xFDF4, 'M', u'محمد'), + (0xFDF5, 'M', u'صلعم'), + (0xFDF6, 'M', u'رسول'), + (0xFDF7, 'M', u'عليه'), + (0xFDF8, 'M', u'وسلم'), + (0xFDF9, 'M', u'صلى'), + (0xFDFA, '3', u'صلى الله عليه وسلم'), + (0xFDFB, '3', u'جل جلاله'), + (0xFDFC, 'M', u'ریال'), + (0xFDFD, 'V'), + (0xFDFE, 'X'), + (0xFE00, 'I'), + (0xFE10, '3', u','), + (0xFE11, 'M', u'、'), + (0xFE12, 'X'), + (0xFE13, '3', u':'), + (0xFE14, '3', u';'), + (0xFE15, '3', u'!'), + (0xFE16, '3', u'?'), + (0xFE17, 'M', u'〖'), + (0xFE18, 'M', u'〗'), + (0xFE19, 'X'), + (0xFE20, 'V'), + (0xFE27, 'X'), + (0xFE31, 'M', u'—'), + (0xFE32, 'M', u'–'), + (0xFE33, '3', u'_'), + (0xFE35, '3', u'('), + (0xFE36, '3', u')'), + (0xFE37, '3', u'{'), + (0xFE38, '3', u'}'), + (0xFE39, 'M', u'〔'), + (0xFE3A, 'M', u'〕'), + (0xFE3B, 'M', u'【'), + (0xFE3C, 'M', u'】'), + (0xFE3D, 'M', u'《'), + (0xFE3E, 'M', u'》'), + ] + +def _seg_48(): + return [ + (0xFE3F, 'M', u'〈'), + (0xFE40, 'M', u'〉'), + (0xFE41, 'M', u'「'), + (0xFE42, 'M', u'」'), + (0xFE43, 'M', u'『'), + (0xFE44, 'M', u'』'), + (0xFE45, 'V'), + (0xFE47, '3', u'['), + (0xFE48, '3', u']'), + (0xFE49, '3', u' ̅'), + (0xFE4D, '3', u'_'), + (0xFE50, '3', u','), + (0xFE51, 'M', u'、'), + (0xFE52, 'X'), + (0xFE54, '3', u';'), + (0xFE55, '3', u':'), + (0xFE56, '3', u'?'), + (0xFE57, '3', u'!'), + (0xFE58, 'M', u'—'), + (0xFE59, '3', u'('), + (0xFE5A, '3', u')'), + (0xFE5B, '3', u'{'), + (0xFE5C, '3', u'}'), + (0xFE5D, 'M', u'〔'), + (0xFE5E, 'M', u'〕'), + (0xFE5F, '3', u'#'), + (0xFE60, '3', u'&'), + (0xFE61, '3', u'*'), + (0xFE62, '3', u'+'), + (0xFE63, 'M', u'-'), + (0xFE64, '3', u'<'), + (0xFE65, '3', u'>'), + (0xFE66, '3', u'='), + (0xFE67, 'X'), + (0xFE68, '3', u'\\'), + (0xFE69, '3', u'$'), + (0xFE6A, '3', u'%'), + (0xFE6B, '3', u'@'), + (0xFE6C, 'X'), + (0xFE70, '3', u' ً'), + (0xFE71, 'M', u'ـً'), + (0xFE72, '3', u' ٌ'), + (0xFE73, 'V'), + (0xFE74, '3', u' ٍ'), + (0xFE75, 'X'), + (0xFE76, '3', u' َ'), + (0xFE77, 'M', u'ـَ'), + (0xFE78, '3', u' ُ'), + (0xFE79, 'M', u'ـُ'), + (0xFE7A, '3', u' ِ'), + (0xFE7B, 'M', u'ـِ'), + (0xFE7C, '3', u' ّ'), + (0xFE7D, 'M', u'ـّ'), + (0xFE7E, '3', u' ْ'), + (0xFE7F, 'M', u'ـْ'), + (0xFE80, 'M', u'ء'), + (0xFE81, 'M', u'آ'), + (0xFE83, 'M', u'أ'), + (0xFE85, 'M', u'ؤ'), + (0xFE87, 'M', u'إ'), + (0xFE89, 'M', u'ئ'), + (0xFE8D, 'M', u'ا'), + (0xFE8F, 'M', u'ب'), + (0xFE93, 'M', u'ة'), + (0xFE95, 'M', u'ت'), + (0xFE99, 'M', u'ث'), + (0xFE9D, 'M', u'ج'), + (0xFEA1, 'M', u'ح'), + (0xFEA5, 'M', u'خ'), + (0xFEA9, 'M', u'د'), + (0xFEAB, 'M', u'ذ'), + (0xFEAD, 'M', u'ر'), + (0xFEAF, 'M', u'ز'), + (0xFEB1, 'M', u'س'), + (0xFEB5, 'M', u'ش'), + (0xFEB9, 'M', u'ص'), + (0xFEBD, 'M', u'ض'), + (0xFEC1, 'M', u'ط'), + (0xFEC5, 'M', u'ظ'), + (0xFEC9, 'M', u'ع'), + (0xFECD, 'M', u'غ'), + (0xFED1, 'M', u'ف'), + (0xFED5, 'M', u'ق'), + (0xFED9, 'M', u'ك'), + (0xFEDD, 'M', u'ل'), + (0xFEE1, 'M', u'م'), + (0xFEE5, 'M', u'ن'), + (0xFEE9, 'M', u'ه'), + (0xFEED, 'M', u'و'), + (0xFEEF, 'M', u'ى'), + (0xFEF1, 'M', u'ي'), + (0xFEF5, 'M', u'لآ'), + (0xFEF7, 'M', u'لأ'), + (0xFEF9, 'M', u'لإ'), + (0xFEFB, 'M', u'لا'), + (0xFEFD, 'X'), + (0xFEFF, 'I'), + (0xFF00, 'X'), + (0xFF01, '3', u'!'), + (0xFF02, '3', u'"'), + ] + +def _seg_49(): + return [ + (0xFF03, '3', u'#'), + (0xFF04, '3', u'$'), + (0xFF05, '3', u'%'), + (0xFF06, '3', u'&'), + (0xFF07, '3', u'\''), + (0xFF08, '3', u'('), + (0xFF09, '3', u')'), + (0xFF0A, '3', u'*'), + (0xFF0B, '3', u'+'), + (0xFF0C, '3', u','), + (0xFF0D, 'M', u'-'), + (0xFF0E, 'M', u'.'), + (0xFF0F, '3', u'/'), + (0xFF10, 'M', u'0'), + (0xFF11, 'M', u'1'), + (0xFF12, 'M', u'2'), + (0xFF13, 'M', u'3'), + (0xFF14, 'M', u'4'), + (0xFF15, 'M', u'5'), + (0xFF16, 'M', u'6'), + (0xFF17, 'M', u'7'), + (0xFF18, 'M', u'8'), + (0xFF19, 'M', u'9'), + (0xFF1A, '3', u':'), + (0xFF1B, '3', u';'), + (0xFF1C, '3', u'<'), + (0xFF1D, '3', u'='), + (0xFF1E, '3', u'>'), + (0xFF1F, '3', u'?'), + (0xFF20, '3', u'@'), + (0xFF21, 'M', u'a'), + (0xFF22, 'M', u'b'), + (0xFF23, 'M', u'c'), + (0xFF24, 'M', u'd'), + (0xFF25, 'M', u'e'), + (0xFF26, 'M', u'f'), + (0xFF27, 'M', u'g'), + (0xFF28, 'M', u'h'), + (0xFF29, 'M', u'i'), + (0xFF2A, 'M', u'j'), + (0xFF2B, 'M', u'k'), + (0xFF2C, 'M', u'l'), + (0xFF2D, 'M', u'm'), + (0xFF2E, 'M', u'n'), + (0xFF2F, 'M', u'o'), + (0xFF30, 'M', u'p'), + (0xFF31, 'M', u'q'), + (0xFF32, 'M', u'r'), + (0xFF33, 'M', u's'), + (0xFF34, 'M', u't'), + (0xFF35, 'M', u'u'), + (0xFF36, 'M', u'v'), + (0xFF37, 'M', u'w'), + (0xFF38, 'M', u'x'), + (0xFF39, 'M', u'y'), + (0xFF3A, 'M', u'z'), + (0xFF3B, '3', u'['), + (0xFF3C, '3', u'\\'), + (0xFF3D, '3', u']'), + (0xFF3E, '3', u'^'), + (0xFF3F, '3', u'_'), + (0xFF40, '3', u'`'), + (0xFF41, 'M', u'a'), + (0xFF42, 'M', u'b'), + (0xFF43, 'M', u'c'), + (0xFF44, 'M', u'd'), + (0xFF45, 'M', u'e'), + (0xFF46, 'M', u'f'), + (0xFF47, 'M', u'g'), + (0xFF48, 'M', u'h'), + (0xFF49, 'M', u'i'), + (0xFF4A, 'M', u'j'), + (0xFF4B, 'M', u'k'), + (0xFF4C, 'M', u'l'), + (0xFF4D, 'M', u'm'), + (0xFF4E, 'M', u'n'), + (0xFF4F, 'M', u'o'), + (0xFF50, 'M', u'p'), + (0xFF51, 'M', u'q'), + (0xFF52, 'M', u'r'), + (0xFF53, 'M', u's'), + (0xFF54, 'M', u't'), + (0xFF55, 'M', u'u'), + (0xFF56, 'M', u'v'), + (0xFF57, 'M', u'w'), + (0xFF58, 'M', u'x'), + (0xFF59, 'M', u'y'), + (0xFF5A, 'M', u'z'), + (0xFF5B, '3', u'{'), + (0xFF5C, '3', u'|'), + (0xFF5D, '3', u'}'), + (0xFF5E, '3', u'~'), + (0xFF5F, 'M', u'⦅'), + (0xFF60, 'M', u'⦆'), + (0xFF61, 'M', u'.'), + (0xFF62, 'M', u'「'), + (0xFF63, 'M', u'」'), + (0xFF64, 'M', u'、'), + (0xFF65, 'M', u'・'), + (0xFF66, 'M', u'ヲ'), + ] + +def _seg_50(): + return [ + (0xFF67, 'M', u'ァ'), + (0xFF68, 'M', u'ィ'), + (0xFF69, 'M', u'ゥ'), + (0xFF6A, 'M', u'ェ'), + (0xFF6B, 'M', u'ォ'), + (0xFF6C, 'M', u'ャ'), + (0xFF6D, 'M', u'ュ'), + (0xFF6E, 'M', u'ョ'), + (0xFF6F, 'M', u'ッ'), + (0xFF70, 'M', u'ー'), + (0xFF71, 'M', u'ア'), + (0xFF72, 'M', u'イ'), + (0xFF73, 'M', u'ウ'), + (0xFF74, 'M', u'エ'), + (0xFF75, 'M', u'オ'), + (0xFF76, 'M', u'カ'), + (0xFF77, 'M', u'キ'), + (0xFF78, 'M', u'ク'), + (0xFF79, 'M', u'ケ'), + (0xFF7A, 'M', u'コ'), + (0xFF7B, 'M', u'サ'), + (0xFF7C, 'M', u'シ'), + (0xFF7D, 'M', u'ス'), + (0xFF7E, 'M', u'セ'), + (0xFF7F, 'M', u'ソ'), + (0xFF80, 'M', u'タ'), + (0xFF81, 'M', u'チ'), + (0xFF82, 'M', u'ツ'), + (0xFF83, 'M', u'テ'), + (0xFF84, 'M', u'ト'), + (0xFF85, 'M', u'ナ'), + (0xFF86, 'M', u'ニ'), + (0xFF87, 'M', u'ヌ'), + (0xFF88, 'M', u'ネ'), + (0xFF89, 'M', u'ノ'), + (0xFF8A, 'M', u'ハ'), + (0xFF8B, 'M', u'ヒ'), + (0xFF8C, 'M', u'フ'), + (0xFF8D, 'M', u'ヘ'), + (0xFF8E, 'M', u'ホ'), + (0xFF8F, 'M', u'マ'), + (0xFF90, 'M', u'ミ'), + (0xFF91, 'M', u'ム'), + (0xFF92, 'M', u'メ'), + (0xFF93, 'M', u'モ'), + (0xFF94, 'M', u'ヤ'), + (0xFF95, 'M', u'ユ'), + (0xFF96, 'M', u'ヨ'), + (0xFF97, 'M', u'ラ'), + (0xFF98, 'M', u'リ'), + (0xFF99, 'M', u'ル'), + (0xFF9A, 'M', u'レ'), + (0xFF9B, 'M', u'ロ'), + (0xFF9C, 'M', u'ワ'), + (0xFF9D, 'M', u'ン'), + (0xFF9E, 'M', u'゙'), + (0xFF9F, 'M', u'゚'), + (0xFFA0, 'X'), + (0xFFA1, 'M', u'ᄀ'), + (0xFFA2, 'M', u'ᄁ'), + (0xFFA3, 'M', u'ᆪ'), + (0xFFA4, 'M', u'ᄂ'), + (0xFFA5, 'M', u'ᆬ'), + (0xFFA6, 'M', u'ᆭ'), + (0xFFA7, 'M', u'ᄃ'), + (0xFFA8, 'M', u'ᄄ'), + (0xFFA9, 'M', u'ᄅ'), + (0xFFAA, 'M', u'ᆰ'), + (0xFFAB, 'M', u'ᆱ'), + (0xFFAC, 'M', u'ᆲ'), + (0xFFAD, 'M', u'ᆳ'), + (0xFFAE, 'M', u'ᆴ'), + (0xFFAF, 'M', u'ᆵ'), + (0xFFB0, 'M', u'ᄚ'), + (0xFFB1, 'M', u'ᄆ'), + (0xFFB2, 'M', u'ᄇ'), + (0xFFB3, 'M', u'ᄈ'), + (0xFFB4, 'M', u'ᄡ'), + (0xFFB5, 'M', u'ᄉ'), + (0xFFB6, 'M', u'ᄊ'), + (0xFFB7, 'M', u'ᄋ'), + (0xFFB8, 'M', u'ᄌ'), + (0xFFB9, 'M', u'ᄍ'), + (0xFFBA, 'M', u'ᄎ'), + (0xFFBB, 'M', u'ᄏ'), + (0xFFBC, 'M', u'ᄐ'), + (0xFFBD, 'M', u'ᄑ'), + (0xFFBE, 'M', u'ᄒ'), + (0xFFBF, 'X'), + (0xFFC2, 'M', u'ᅡ'), + (0xFFC3, 'M', u'ᅢ'), + (0xFFC4, 'M', u'ᅣ'), + (0xFFC5, 'M', u'ᅤ'), + (0xFFC6, 'M', u'ᅥ'), + (0xFFC7, 'M', u'ᅦ'), + (0xFFC8, 'X'), + (0xFFCA, 'M', u'ᅧ'), + (0xFFCB, 'M', u'ᅨ'), + (0xFFCC, 'M', u'ᅩ'), + (0xFFCD, 'M', u'ᅪ'), + ] + +def _seg_51(): + return [ + (0xFFCE, 'M', u'ᅫ'), + (0xFFCF, 'M', u'ᅬ'), + (0xFFD0, 'X'), + (0xFFD2, 'M', u'ᅭ'), + (0xFFD3, 'M', u'ᅮ'), + (0xFFD4, 'M', u'ᅯ'), + (0xFFD5, 'M', u'ᅰ'), + (0xFFD6, 'M', u'ᅱ'), + (0xFFD7, 'M', u'ᅲ'), + (0xFFD8, 'X'), + (0xFFDA, 'M', u'ᅳ'), + (0xFFDB, 'M', u'ᅴ'), + (0xFFDC, 'M', u'ᅵ'), + (0xFFDD, 'X'), + (0xFFE0, 'M', u'¢'), + (0xFFE1, 'M', u'£'), + (0xFFE2, 'M', u'¬'), + (0xFFE3, '3', u' ̄'), + (0xFFE4, 'M', u'¦'), + (0xFFE5, 'M', u'¥'), + (0xFFE6, 'M', u'₩'), + (0xFFE7, 'X'), + (0xFFE8, 'M', u'│'), + (0xFFE9, 'M', u'←'), + (0xFFEA, 'M', u'↑'), + (0xFFEB, 'M', u'→'), + (0xFFEC, 'M', u'↓'), + (0xFFED, 'M', u'■'), + (0xFFEE, 'M', u'○'), + (0xFFEF, 'X'), + (0x10000, 'V'), + (0x1000C, 'X'), + (0x1000D, 'V'), + (0x10027, 'X'), + (0x10028, 'V'), + (0x1003B, 'X'), + (0x1003C, 'V'), + (0x1003E, 'X'), + (0x1003F, 'V'), + (0x1004E, 'X'), + (0x10050, 'V'), + (0x1005E, 'X'), + (0x10080, 'V'), + (0x100FB, 'X'), + (0x10100, 'V'), + (0x10103, 'X'), + (0x10107, 'V'), + (0x10134, 'X'), + (0x10137, 'V'), + (0x1018B, 'X'), + (0x10190, 'V'), + (0x1019C, 'X'), + (0x101D0, 'V'), + (0x101FE, 'X'), + (0x10280, 'V'), + (0x1029D, 'X'), + (0x102A0, 'V'), + (0x102D1, 'X'), + (0x10300, 'V'), + (0x1031F, 'X'), + (0x10320, 'V'), + (0x10324, 'X'), + (0x10330, 'V'), + (0x1034B, 'X'), + (0x10380, 'V'), + (0x1039E, 'X'), + (0x1039F, 'V'), + (0x103C4, 'X'), + (0x103C8, 'V'), + (0x103D6, 'X'), + (0x10400, 'M', u'𐐨'), + (0x10401, 'M', u'𐐩'), + (0x10402, 'M', u'𐐪'), + (0x10403, 'M', u'𐐫'), + (0x10404, 'M', u'𐐬'), + (0x10405, 'M', u'𐐭'), + (0x10406, 'M', u'𐐮'), + (0x10407, 'M', u'𐐯'), + (0x10408, 'M', u'𐐰'), + (0x10409, 'M', u'𐐱'), + (0x1040A, 'M', u'𐐲'), + (0x1040B, 'M', u'𐐳'), + (0x1040C, 'M', u'𐐴'), + (0x1040D, 'M', u'𐐵'), + (0x1040E, 'M', u'𐐶'), + (0x1040F, 'M', u'𐐷'), + (0x10410, 'M', u'𐐸'), + (0x10411, 'M', u'𐐹'), + (0x10412, 'M', u'𐐺'), + (0x10413, 'M', u'𐐻'), + (0x10414, 'M', u'𐐼'), + (0x10415, 'M', u'𐐽'), + (0x10416, 'M', u'𐐾'), + (0x10417, 'M', u'𐐿'), + (0x10418, 'M', u'𐑀'), + (0x10419, 'M', u'𐑁'), + (0x1041A, 'M', u'𐑂'), + (0x1041B, 'M', u'𐑃'), + (0x1041C, 'M', u'𐑄'), + (0x1041D, 'M', u'𐑅'), + ] + +def _seg_52(): + return [ + (0x1041E, 'M', u'𐑆'), + (0x1041F, 'M', u'𐑇'), + (0x10420, 'M', u'𐑈'), + (0x10421, 'M', u'𐑉'), + (0x10422, 'M', u'𐑊'), + (0x10423, 'M', u'𐑋'), + (0x10424, 'M', u'𐑌'), + (0x10425, 'M', u'𐑍'), + (0x10426, 'M', u'𐑎'), + (0x10427, 'M', u'𐑏'), + (0x10428, 'V'), + (0x1049E, 'X'), + (0x104A0, 'V'), + (0x104AA, 'X'), + (0x10800, 'V'), + (0x10806, 'X'), + (0x10808, 'V'), + (0x10809, 'X'), + (0x1080A, 'V'), + (0x10836, 'X'), + (0x10837, 'V'), + (0x10839, 'X'), + (0x1083C, 'V'), + (0x1083D, 'X'), + (0x1083F, 'V'), + (0x10856, 'X'), + (0x10857, 'V'), + (0x10860, 'X'), + (0x10900, 'V'), + (0x1091C, 'X'), + (0x1091F, 'V'), + (0x1093A, 'X'), + (0x1093F, 'V'), + (0x10940, 'X'), + (0x10980, 'V'), + (0x109B8, 'X'), + (0x109BE, 'V'), + (0x109C0, 'X'), + (0x10A00, 'V'), + (0x10A04, 'X'), + (0x10A05, 'V'), + (0x10A07, 'X'), + (0x10A0C, 'V'), + (0x10A14, 'X'), + (0x10A15, 'V'), + (0x10A18, 'X'), + (0x10A19, 'V'), + (0x10A34, 'X'), + (0x10A38, 'V'), + (0x10A3B, 'X'), + (0x10A3F, 'V'), + (0x10A48, 'X'), + (0x10A50, 'V'), + (0x10A59, 'X'), + (0x10A60, 'V'), + (0x10A80, 'X'), + (0x10B00, 'V'), + (0x10B36, 'X'), + (0x10B39, 'V'), + (0x10B56, 'X'), + (0x10B58, 'V'), + (0x10B73, 'X'), + (0x10B78, 'V'), + (0x10B80, 'X'), + (0x10C00, 'V'), + (0x10C49, 'X'), + (0x10E60, 'V'), + (0x10E7F, 'X'), + (0x11000, 'V'), + (0x1104E, 'X'), + (0x11052, 'V'), + (0x11070, 'X'), + (0x11080, 'V'), + (0x110BD, 'X'), + (0x110BE, 'V'), + (0x110C2, 'X'), + (0x110D0, 'V'), + (0x110E9, 'X'), + (0x110F0, 'V'), + (0x110FA, 'X'), + (0x11100, 'V'), + (0x11135, 'X'), + (0x11136, 'V'), + (0x11144, 'X'), + (0x11180, 'V'), + (0x111C9, 'X'), + (0x111D0, 'V'), + (0x111DA, 'X'), + (0x11680, 'V'), + (0x116B8, 'X'), + (0x116C0, 'V'), + (0x116CA, 'X'), + (0x12000, 'V'), + (0x1236F, 'X'), + (0x12400, 'V'), + (0x12463, 'X'), + (0x12470, 'V'), + (0x12474, 'X'), + (0x13000, 'V'), + (0x1342F, 'X'), + ] + +def _seg_53(): + return [ + (0x16800, 'V'), + (0x16A39, 'X'), + (0x16F00, 'V'), + (0x16F45, 'X'), + (0x16F50, 'V'), + (0x16F7F, 'X'), + (0x16F8F, 'V'), + (0x16FA0, 'X'), + (0x1B000, 'V'), + (0x1B002, 'X'), + (0x1D000, 'V'), + (0x1D0F6, 'X'), + (0x1D100, 'V'), + (0x1D127, 'X'), + (0x1D129, 'V'), + (0x1D15E, 'M', u'𝅗𝅥'), + (0x1D15F, 'M', u'𝅘𝅥'), + (0x1D160, 'M', u'𝅘𝅥𝅮'), + (0x1D161, 'M', u'𝅘𝅥𝅯'), + (0x1D162, 'M', u'𝅘𝅥𝅰'), + (0x1D163, 'M', u'𝅘𝅥𝅱'), + (0x1D164, 'M', u'𝅘𝅥𝅲'), + (0x1D165, 'V'), + (0x1D173, 'X'), + (0x1D17B, 'V'), + (0x1D1BB, 'M', u'𝆹𝅥'), + (0x1D1BC, 'M', u'𝆺𝅥'), + (0x1D1BD, 'M', u'𝆹𝅥𝅮'), + (0x1D1BE, 'M', u'𝆺𝅥𝅮'), + (0x1D1BF, 'M', u'𝆹𝅥𝅯'), + (0x1D1C0, 'M', u'𝆺𝅥𝅯'), + (0x1D1C1, 'V'), + (0x1D1DE, 'X'), + (0x1D200, 'V'), + (0x1D246, 'X'), + (0x1D300, 'V'), + (0x1D357, 'X'), + (0x1D360, 'V'), + (0x1D372, 'X'), + (0x1D400, 'M', u'a'), + (0x1D401, 'M', u'b'), + (0x1D402, 'M', u'c'), + (0x1D403, 'M', u'd'), + (0x1D404, 'M', u'e'), + (0x1D405, 'M', u'f'), + (0x1D406, 'M', u'g'), + (0x1D407, 'M', u'h'), + (0x1D408, 'M', u'i'), + (0x1D409, 'M', u'j'), + (0x1D40A, 'M', u'k'), + (0x1D40B, 'M', u'l'), + (0x1D40C, 'M', u'm'), + (0x1D40D, 'M', u'n'), + (0x1D40E, 'M', u'o'), + (0x1D40F, 'M', u'p'), + (0x1D410, 'M', u'q'), + (0x1D411, 'M', u'r'), + (0x1D412, 'M', u's'), + (0x1D413, 'M', u't'), + (0x1D414, 'M', u'u'), + (0x1D415, 'M', u'v'), + (0x1D416, 'M', u'w'), + (0x1D417, 'M', u'x'), + (0x1D418, 'M', u'y'), + (0x1D419, 'M', u'z'), + (0x1D41A, 'M', u'a'), + (0x1D41B, 'M', u'b'), + (0x1D41C, 'M', u'c'), + (0x1D41D, 'M', u'd'), + (0x1D41E, 'M', u'e'), + (0x1D41F, 'M', u'f'), + (0x1D420, 'M', u'g'), + (0x1D421, 'M', u'h'), + (0x1D422, 'M', u'i'), + (0x1D423, 'M', u'j'), + (0x1D424, 'M', u'k'), + (0x1D425, 'M', u'l'), + (0x1D426, 'M', u'm'), + (0x1D427, 'M', u'n'), + (0x1D428, 'M', u'o'), + (0x1D429, 'M', u'p'), + (0x1D42A, 'M', u'q'), + (0x1D42B, 'M', u'r'), + (0x1D42C, 'M', u's'), + (0x1D42D, 'M', u't'), + (0x1D42E, 'M', u'u'), + (0x1D42F, 'M', u'v'), + (0x1D430, 'M', u'w'), + (0x1D431, 'M', u'x'), + (0x1D432, 'M', u'y'), + (0x1D433, 'M', u'z'), + (0x1D434, 'M', u'a'), + (0x1D435, 'M', u'b'), + (0x1D436, 'M', u'c'), + (0x1D437, 'M', u'd'), + (0x1D438, 'M', u'e'), + (0x1D439, 'M', u'f'), + (0x1D43A, 'M', u'g'), + (0x1D43B, 'M', u'h'), + (0x1D43C, 'M', u'i'), + ] + +def _seg_54(): + return [ + (0x1D43D, 'M', u'j'), + (0x1D43E, 'M', u'k'), + (0x1D43F, 'M', u'l'), + (0x1D440, 'M', u'm'), + (0x1D441, 'M', u'n'), + (0x1D442, 'M', u'o'), + (0x1D443, 'M', u'p'), + (0x1D444, 'M', u'q'), + (0x1D445, 'M', u'r'), + (0x1D446, 'M', u's'), + (0x1D447, 'M', u't'), + (0x1D448, 'M', u'u'), + (0x1D449, 'M', u'v'), + (0x1D44A, 'M', u'w'), + (0x1D44B, 'M', u'x'), + (0x1D44C, 'M', u'y'), + (0x1D44D, 'M', u'z'), + (0x1D44E, 'M', u'a'), + (0x1D44F, 'M', u'b'), + (0x1D450, 'M', u'c'), + (0x1D451, 'M', u'd'), + (0x1D452, 'M', u'e'), + (0x1D453, 'M', u'f'), + (0x1D454, 'M', u'g'), + (0x1D455, 'X'), + (0x1D456, 'M', u'i'), + (0x1D457, 'M', u'j'), + (0x1D458, 'M', u'k'), + (0x1D459, 'M', u'l'), + (0x1D45A, 'M', u'm'), + (0x1D45B, 'M', u'n'), + (0x1D45C, 'M', u'o'), + (0x1D45D, 'M', u'p'), + (0x1D45E, 'M', u'q'), + (0x1D45F, 'M', u'r'), + (0x1D460, 'M', u's'), + (0x1D461, 'M', u't'), + (0x1D462, 'M', u'u'), + (0x1D463, 'M', u'v'), + (0x1D464, 'M', u'w'), + (0x1D465, 'M', u'x'), + (0x1D466, 'M', u'y'), + (0x1D467, 'M', u'z'), + (0x1D468, 'M', u'a'), + (0x1D469, 'M', u'b'), + (0x1D46A, 'M', u'c'), + (0x1D46B, 'M', u'd'), + (0x1D46C, 'M', u'e'), + (0x1D46D, 'M', u'f'), + (0x1D46E, 'M', u'g'), + (0x1D46F, 'M', u'h'), + (0x1D470, 'M', u'i'), + (0x1D471, 'M', u'j'), + (0x1D472, 'M', u'k'), + (0x1D473, 'M', u'l'), + (0x1D474, 'M', u'm'), + (0x1D475, 'M', u'n'), + (0x1D476, 'M', u'o'), + (0x1D477, 'M', u'p'), + (0x1D478, 'M', u'q'), + (0x1D479, 'M', u'r'), + (0x1D47A, 'M', u's'), + (0x1D47B, 'M', u't'), + (0x1D47C, 'M', u'u'), + (0x1D47D, 'M', u'v'), + (0x1D47E, 'M', u'w'), + (0x1D47F, 'M', u'x'), + (0x1D480, 'M', u'y'), + (0x1D481, 'M', u'z'), + (0x1D482, 'M', u'a'), + (0x1D483, 'M', u'b'), + (0x1D484, 'M', u'c'), + (0x1D485, 'M', u'd'), + (0x1D486, 'M', u'e'), + (0x1D487, 'M', u'f'), + (0x1D488, 'M', u'g'), + (0x1D489, 'M', u'h'), + (0x1D48A, 'M', u'i'), + (0x1D48B, 'M', u'j'), + (0x1D48C, 'M', u'k'), + (0x1D48D, 'M', u'l'), + (0x1D48E, 'M', u'm'), + (0x1D48F, 'M', u'n'), + (0x1D490, 'M', u'o'), + (0x1D491, 'M', u'p'), + (0x1D492, 'M', u'q'), + (0x1D493, 'M', u'r'), + (0x1D494, 'M', u's'), + (0x1D495, 'M', u't'), + (0x1D496, 'M', u'u'), + (0x1D497, 'M', u'v'), + (0x1D498, 'M', u'w'), + (0x1D499, 'M', u'x'), + (0x1D49A, 'M', u'y'), + (0x1D49B, 'M', u'z'), + (0x1D49C, 'M', u'a'), + (0x1D49D, 'X'), + (0x1D49E, 'M', u'c'), + (0x1D49F, 'M', u'd'), + (0x1D4A0, 'X'), + ] + +def _seg_55(): + return [ + (0x1D4A2, 'M', u'g'), + (0x1D4A3, 'X'), + (0x1D4A5, 'M', u'j'), + (0x1D4A6, 'M', u'k'), + (0x1D4A7, 'X'), + (0x1D4A9, 'M', u'n'), + (0x1D4AA, 'M', u'o'), + (0x1D4AB, 'M', u'p'), + (0x1D4AC, 'M', u'q'), + (0x1D4AD, 'X'), + (0x1D4AE, 'M', u's'), + (0x1D4AF, 'M', u't'), + (0x1D4B0, 'M', u'u'), + (0x1D4B1, 'M', u'v'), + (0x1D4B2, 'M', u'w'), + (0x1D4B3, 'M', u'x'), + (0x1D4B4, 'M', u'y'), + (0x1D4B5, 'M', u'z'), + (0x1D4B6, 'M', u'a'), + (0x1D4B7, 'M', u'b'), + (0x1D4B8, 'M', u'c'), + (0x1D4B9, 'M', u'd'), + (0x1D4BA, 'X'), + (0x1D4BB, 'M', u'f'), + (0x1D4BC, 'X'), + (0x1D4BD, 'M', u'h'), + (0x1D4BE, 'M', u'i'), + (0x1D4BF, 'M', u'j'), + (0x1D4C0, 'M', u'k'), + (0x1D4C1, 'M', u'l'), + (0x1D4C2, 'M', u'm'), + (0x1D4C3, 'M', u'n'), + (0x1D4C4, 'X'), + (0x1D4C5, 'M', u'p'), + (0x1D4C6, 'M', u'q'), + (0x1D4C7, 'M', u'r'), + (0x1D4C8, 'M', u's'), + (0x1D4C9, 'M', u't'), + (0x1D4CA, 'M', u'u'), + (0x1D4CB, 'M', u'v'), + (0x1D4CC, 'M', u'w'), + (0x1D4CD, 'M', u'x'), + (0x1D4CE, 'M', u'y'), + (0x1D4CF, 'M', u'z'), + (0x1D4D0, 'M', u'a'), + (0x1D4D1, 'M', u'b'), + (0x1D4D2, 'M', u'c'), + (0x1D4D3, 'M', u'd'), + (0x1D4D4, 'M', u'e'), + (0x1D4D5, 'M', u'f'), + (0x1D4D6, 'M', u'g'), + (0x1D4D7, 'M', u'h'), + (0x1D4D8, 'M', u'i'), + (0x1D4D9, 'M', u'j'), + (0x1D4DA, 'M', u'k'), + (0x1D4DB, 'M', u'l'), + (0x1D4DC, 'M', u'm'), + (0x1D4DD, 'M', u'n'), + (0x1D4DE, 'M', u'o'), + (0x1D4DF, 'M', u'p'), + (0x1D4E0, 'M', u'q'), + (0x1D4E1, 'M', u'r'), + (0x1D4E2, 'M', u's'), + (0x1D4E3, 'M', u't'), + (0x1D4E4, 'M', u'u'), + (0x1D4E5, 'M', u'v'), + (0x1D4E6, 'M', u'w'), + (0x1D4E7, 'M', u'x'), + (0x1D4E8, 'M', u'y'), + (0x1D4E9, 'M', u'z'), + (0x1D4EA, 'M', u'a'), + (0x1D4EB, 'M', u'b'), + (0x1D4EC, 'M', u'c'), + (0x1D4ED, 'M', u'd'), + (0x1D4EE, 'M', u'e'), + (0x1D4EF, 'M', u'f'), + (0x1D4F0, 'M', u'g'), + (0x1D4F1, 'M', u'h'), + (0x1D4F2, 'M', u'i'), + (0x1D4F3, 'M', u'j'), + (0x1D4F4, 'M', u'k'), + (0x1D4F5, 'M', u'l'), + (0x1D4F6, 'M', u'm'), + (0x1D4F7, 'M', u'n'), + (0x1D4F8, 'M', u'o'), + (0x1D4F9, 'M', u'p'), + (0x1D4FA, 'M', u'q'), + (0x1D4FB, 'M', u'r'), + (0x1D4FC, 'M', u's'), + (0x1D4FD, 'M', u't'), + (0x1D4FE, 'M', u'u'), + (0x1D4FF, 'M', u'v'), + (0x1D500, 'M', u'w'), + (0x1D501, 'M', u'x'), + (0x1D502, 'M', u'y'), + (0x1D503, 'M', u'z'), + (0x1D504, 'M', u'a'), + (0x1D505, 'M', u'b'), + (0x1D506, 'X'), + (0x1D507, 'M', u'd'), + ] + +def _seg_56(): + return [ + (0x1D508, 'M', u'e'), + (0x1D509, 'M', u'f'), + (0x1D50A, 'M', u'g'), + (0x1D50B, 'X'), + (0x1D50D, 'M', u'j'), + (0x1D50E, 'M', u'k'), + (0x1D50F, 'M', u'l'), + (0x1D510, 'M', u'm'), + (0x1D511, 'M', u'n'), + (0x1D512, 'M', u'o'), + (0x1D513, 'M', u'p'), + (0x1D514, 'M', u'q'), + (0x1D515, 'X'), + (0x1D516, 'M', u's'), + (0x1D517, 'M', u't'), + (0x1D518, 'M', u'u'), + (0x1D519, 'M', u'v'), + (0x1D51A, 'M', u'w'), + (0x1D51B, 'M', u'x'), + (0x1D51C, 'M', u'y'), + (0x1D51D, 'X'), + (0x1D51E, 'M', u'a'), + (0x1D51F, 'M', u'b'), + (0x1D520, 'M', u'c'), + (0x1D521, 'M', u'd'), + (0x1D522, 'M', u'e'), + (0x1D523, 'M', u'f'), + (0x1D524, 'M', u'g'), + (0x1D525, 'M', u'h'), + (0x1D526, 'M', u'i'), + (0x1D527, 'M', u'j'), + (0x1D528, 'M', u'k'), + (0x1D529, 'M', u'l'), + (0x1D52A, 'M', u'm'), + (0x1D52B, 'M', u'n'), + (0x1D52C, 'M', u'o'), + (0x1D52D, 'M', u'p'), + (0x1D52E, 'M', u'q'), + (0x1D52F, 'M', u'r'), + (0x1D530, 'M', u's'), + (0x1D531, 'M', u't'), + (0x1D532, 'M', u'u'), + (0x1D533, 'M', u'v'), + (0x1D534, 'M', u'w'), + (0x1D535, 'M', u'x'), + (0x1D536, 'M', u'y'), + (0x1D537, 'M', u'z'), + (0x1D538, 'M', u'a'), + (0x1D539, 'M', u'b'), + (0x1D53A, 'X'), + (0x1D53B, 'M', u'd'), + (0x1D53C, 'M', u'e'), + (0x1D53D, 'M', u'f'), + (0x1D53E, 'M', u'g'), + (0x1D53F, 'X'), + (0x1D540, 'M', u'i'), + (0x1D541, 'M', u'j'), + (0x1D542, 'M', u'k'), + (0x1D543, 'M', u'l'), + (0x1D544, 'M', u'm'), + (0x1D545, 'X'), + (0x1D546, 'M', u'o'), + (0x1D547, 'X'), + (0x1D54A, 'M', u's'), + (0x1D54B, 'M', u't'), + (0x1D54C, 'M', u'u'), + (0x1D54D, 'M', u'v'), + (0x1D54E, 'M', u'w'), + (0x1D54F, 'M', u'x'), + (0x1D550, 'M', u'y'), + (0x1D551, 'X'), + (0x1D552, 'M', u'a'), + (0x1D553, 'M', u'b'), + (0x1D554, 'M', u'c'), + (0x1D555, 'M', u'd'), + (0x1D556, 'M', u'e'), + (0x1D557, 'M', u'f'), + (0x1D558, 'M', u'g'), + (0x1D559, 'M', u'h'), + (0x1D55A, 'M', u'i'), + (0x1D55B, 'M', u'j'), + (0x1D55C, 'M', u'k'), + (0x1D55D, 'M', u'l'), + (0x1D55E, 'M', u'm'), + (0x1D55F, 'M', u'n'), + (0x1D560, 'M', u'o'), + (0x1D561, 'M', u'p'), + (0x1D562, 'M', u'q'), + (0x1D563, 'M', u'r'), + (0x1D564, 'M', u's'), + (0x1D565, 'M', u't'), + (0x1D566, 'M', u'u'), + (0x1D567, 'M', u'v'), + (0x1D568, 'M', u'w'), + (0x1D569, 'M', u'x'), + (0x1D56A, 'M', u'y'), + (0x1D56B, 'M', u'z'), + (0x1D56C, 'M', u'a'), + (0x1D56D, 'M', u'b'), + (0x1D56E, 'M', u'c'), + ] + +def _seg_57(): + return [ + (0x1D56F, 'M', u'd'), + (0x1D570, 'M', u'e'), + (0x1D571, 'M', u'f'), + (0x1D572, 'M', u'g'), + (0x1D573, 'M', u'h'), + (0x1D574, 'M', u'i'), + (0x1D575, 'M', u'j'), + (0x1D576, 'M', u'k'), + (0x1D577, 'M', u'l'), + (0x1D578, 'M', u'm'), + (0x1D579, 'M', u'n'), + (0x1D57A, 'M', u'o'), + (0x1D57B, 'M', u'p'), + (0x1D57C, 'M', u'q'), + (0x1D57D, 'M', u'r'), + (0x1D57E, 'M', u's'), + (0x1D57F, 'M', u't'), + (0x1D580, 'M', u'u'), + (0x1D581, 'M', u'v'), + (0x1D582, 'M', u'w'), + (0x1D583, 'M', u'x'), + (0x1D584, 'M', u'y'), + (0x1D585, 'M', u'z'), + (0x1D586, 'M', u'a'), + (0x1D587, 'M', u'b'), + (0x1D588, 'M', u'c'), + (0x1D589, 'M', u'd'), + (0x1D58A, 'M', u'e'), + (0x1D58B, 'M', u'f'), + (0x1D58C, 'M', u'g'), + (0x1D58D, 'M', u'h'), + (0x1D58E, 'M', u'i'), + (0x1D58F, 'M', u'j'), + (0x1D590, 'M', u'k'), + (0x1D591, 'M', u'l'), + (0x1D592, 'M', u'm'), + (0x1D593, 'M', u'n'), + (0x1D594, 'M', u'o'), + (0x1D595, 'M', u'p'), + (0x1D596, 'M', u'q'), + (0x1D597, 'M', u'r'), + (0x1D598, 'M', u's'), + (0x1D599, 'M', u't'), + (0x1D59A, 'M', u'u'), + (0x1D59B, 'M', u'v'), + (0x1D59C, 'M', u'w'), + (0x1D59D, 'M', u'x'), + (0x1D59E, 'M', u'y'), + (0x1D59F, 'M', u'z'), + (0x1D5A0, 'M', u'a'), + (0x1D5A1, 'M', u'b'), + (0x1D5A2, 'M', u'c'), + (0x1D5A3, 'M', u'd'), + (0x1D5A4, 'M', u'e'), + (0x1D5A5, 'M', u'f'), + (0x1D5A6, 'M', u'g'), + (0x1D5A7, 'M', u'h'), + (0x1D5A8, 'M', u'i'), + (0x1D5A9, 'M', u'j'), + (0x1D5AA, 'M', u'k'), + (0x1D5AB, 'M', u'l'), + (0x1D5AC, 'M', u'm'), + (0x1D5AD, 'M', u'n'), + (0x1D5AE, 'M', u'o'), + (0x1D5AF, 'M', u'p'), + (0x1D5B0, 'M', u'q'), + (0x1D5B1, 'M', u'r'), + (0x1D5B2, 'M', u's'), + (0x1D5B3, 'M', u't'), + (0x1D5B4, 'M', u'u'), + (0x1D5B5, 'M', u'v'), + (0x1D5B6, 'M', u'w'), + (0x1D5B7, 'M', u'x'), + (0x1D5B8, 'M', u'y'), + (0x1D5B9, 'M', u'z'), + (0x1D5BA, 'M', u'a'), + (0x1D5BB, 'M', u'b'), + (0x1D5BC, 'M', u'c'), + (0x1D5BD, 'M', u'd'), + (0x1D5BE, 'M', u'e'), + (0x1D5BF, 'M', u'f'), + (0x1D5C0, 'M', u'g'), + (0x1D5C1, 'M', u'h'), + (0x1D5C2, 'M', u'i'), + (0x1D5C3, 'M', u'j'), + (0x1D5C4, 'M', u'k'), + (0x1D5C5, 'M', u'l'), + (0x1D5C6, 'M', u'm'), + (0x1D5C7, 'M', u'n'), + (0x1D5C8, 'M', u'o'), + (0x1D5C9, 'M', u'p'), + (0x1D5CA, 'M', u'q'), + (0x1D5CB, 'M', u'r'), + (0x1D5CC, 'M', u's'), + (0x1D5CD, 'M', u't'), + (0x1D5CE, 'M', u'u'), + (0x1D5CF, 'M', u'v'), + (0x1D5D0, 'M', u'w'), + (0x1D5D1, 'M', u'x'), + (0x1D5D2, 'M', u'y'), + ] + +def _seg_58(): + return [ + (0x1D5D3, 'M', u'z'), + (0x1D5D4, 'M', u'a'), + (0x1D5D5, 'M', u'b'), + (0x1D5D6, 'M', u'c'), + (0x1D5D7, 'M', u'd'), + (0x1D5D8, 'M', u'e'), + (0x1D5D9, 'M', u'f'), + (0x1D5DA, 'M', u'g'), + (0x1D5DB, 'M', u'h'), + (0x1D5DC, 'M', u'i'), + (0x1D5DD, 'M', u'j'), + (0x1D5DE, 'M', u'k'), + (0x1D5DF, 'M', u'l'), + (0x1D5E0, 'M', u'm'), + (0x1D5E1, 'M', u'n'), + (0x1D5E2, 'M', u'o'), + (0x1D5E3, 'M', u'p'), + (0x1D5E4, 'M', u'q'), + (0x1D5E5, 'M', u'r'), + (0x1D5E6, 'M', u's'), + (0x1D5E7, 'M', u't'), + (0x1D5E8, 'M', u'u'), + (0x1D5E9, 'M', u'v'), + (0x1D5EA, 'M', u'w'), + (0x1D5EB, 'M', u'x'), + (0x1D5EC, 'M', u'y'), + (0x1D5ED, 'M', u'z'), + (0x1D5EE, 'M', u'a'), + (0x1D5EF, 'M', u'b'), + (0x1D5F0, 'M', u'c'), + (0x1D5F1, 'M', u'd'), + (0x1D5F2, 'M', u'e'), + (0x1D5F3, 'M', u'f'), + (0x1D5F4, 'M', u'g'), + (0x1D5F5, 'M', u'h'), + (0x1D5F6, 'M', u'i'), + (0x1D5F7, 'M', u'j'), + (0x1D5F8, 'M', u'k'), + (0x1D5F9, 'M', u'l'), + (0x1D5FA, 'M', u'm'), + (0x1D5FB, 'M', u'n'), + (0x1D5FC, 'M', u'o'), + (0x1D5FD, 'M', u'p'), + (0x1D5FE, 'M', u'q'), + (0x1D5FF, 'M', u'r'), + (0x1D600, 'M', u's'), + (0x1D601, 'M', u't'), + (0x1D602, 'M', u'u'), + (0x1D603, 'M', u'v'), + (0x1D604, 'M', u'w'), + (0x1D605, 'M', u'x'), + (0x1D606, 'M', u'y'), + (0x1D607, 'M', u'z'), + (0x1D608, 'M', u'a'), + (0x1D609, 'M', u'b'), + (0x1D60A, 'M', u'c'), + (0x1D60B, 'M', u'd'), + (0x1D60C, 'M', u'e'), + (0x1D60D, 'M', u'f'), + (0x1D60E, 'M', u'g'), + (0x1D60F, 'M', u'h'), + (0x1D610, 'M', u'i'), + (0x1D611, 'M', u'j'), + (0x1D612, 'M', u'k'), + (0x1D613, 'M', u'l'), + (0x1D614, 'M', u'm'), + (0x1D615, 'M', u'n'), + (0x1D616, 'M', u'o'), + (0x1D617, 'M', u'p'), + (0x1D618, 'M', u'q'), + (0x1D619, 'M', u'r'), + (0x1D61A, 'M', u's'), + (0x1D61B, 'M', u't'), + (0x1D61C, 'M', u'u'), + (0x1D61D, 'M', u'v'), + (0x1D61E, 'M', u'w'), + (0x1D61F, 'M', u'x'), + (0x1D620, 'M', u'y'), + (0x1D621, 'M', u'z'), + (0x1D622, 'M', u'a'), + (0x1D623, 'M', u'b'), + (0x1D624, 'M', u'c'), + (0x1D625, 'M', u'd'), + (0x1D626, 'M', u'e'), + (0x1D627, 'M', u'f'), + (0x1D628, 'M', u'g'), + (0x1D629, 'M', u'h'), + (0x1D62A, 'M', u'i'), + (0x1D62B, 'M', u'j'), + (0x1D62C, 'M', u'k'), + (0x1D62D, 'M', u'l'), + (0x1D62E, 'M', u'm'), + (0x1D62F, 'M', u'n'), + (0x1D630, 'M', u'o'), + (0x1D631, 'M', u'p'), + (0x1D632, 'M', u'q'), + (0x1D633, 'M', u'r'), + (0x1D634, 'M', u's'), + (0x1D635, 'M', u't'), + (0x1D636, 'M', u'u'), + ] + +def _seg_59(): + return [ + (0x1D637, 'M', u'v'), + (0x1D638, 'M', u'w'), + (0x1D639, 'M', u'x'), + (0x1D63A, 'M', u'y'), + (0x1D63B, 'M', u'z'), + (0x1D63C, 'M', u'a'), + (0x1D63D, 'M', u'b'), + (0x1D63E, 'M', u'c'), + (0x1D63F, 'M', u'd'), + (0x1D640, 'M', u'e'), + (0x1D641, 'M', u'f'), + (0x1D642, 'M', u'g'), + (0x1D643, 'M', u'h'), + (0x1D644, 'M', u'i'), + (0x1D645, 'M', u'j'), + (0x1D646, 'M', u'k'), + (0x1D647, 'M', u'l'), + (0x1D648, 'M', u'm'), + (0x1D649, 'M', u'n'), + (0x1D64A, 'M', u'o'), + (0x1D64B, 'M', u'p'), + (0x1D64C, 'M', u'q'), + (0x1D64D, 'M', u'r'), + (0x1D64E, 'M', u's'), + (0x1D64F, 'M', u't'), + (0x1D650, 'M', u'u'), + (0x1D651, 'M', u'v'), + (0x1D652, 'M', u'w'), + (0x1D653, 'M', u'x'), + (0x1D654, 'M', u'y'), + (0x1D655, 'M', u'z'), + (0x1D656, 'M', u'a'), + (0x1D657, 'M', u'b'), + (0x1D658, 'M', u'c'), + (0x1D659, 'M', u'd'), + (0x1D65A, 'M', u'e'), + (0x1D65B, 'M', u'f'), + (0x1D65C, 'M', u'g'), + (0x1D65D, 'M', u'h'), + (0x1D65E, 'M', u'i'), + (0x1D65F, 'M', u'j'), + (0x1D660, 'M', u'k'), + (0x1D661, 'M', u'l'), + (0x1D662, 'M', u'm'), + (0x1D663, 'M', u'n'), + (0x1D664, 'M', u'o'), + (0x1D665, 'M', u'p'), + (0x1D666, 'M', u'q'), + (0x1D667, 'M', u'r'), + (0x1D668, 'M', u's'), + (0x1D669, 'M', u't'), + (0x1D66A, 'M', u'u'), + (0x1D66B, 'M', u'v'), + (0x1D66C, 'M', u'w'), + (0x1D66D, 'M', u'x'), + (0x1D66E, 'M', u'y'), + (0x1D66F, 'M', u'z'), + (0x1D670, 'M', u'a'), + (0x1D671, 'M', u'b'), + (0x1D672, 'M', u'c'), + (0x1D673, 'M', u'd'), + (0x1D674, 'M', u'e'), + (0x1D675, 'M', u'f'), + (0x1D676, 'M', u'g'), + (0x1D677, 'M', u'h'), + (0x1D678, 'M', u'i'), + (0x1D679, 'M', u'j'), + (0x1D67A, 'M', u'k'), + (0x1D67B, 'M', u'l'), + (0x1D67C, 'M', u'm'), + (0x1D67D, 'M', u'n'), + (0x1D67E, 'M', u'o'), + (0x1D67F, 'M', u'p'), + (0x1D680, 'M', u'q'), + (0x1D681, 'M', u'r'), + (0x1D682, 'M', u's'), + (0x1D683, 'M', u't'), + (0x1D684, 'M', u'u'), + (0x1D685, 'M', u'v'), + (0x1D686, 'M', u'w'), + (0x1D687, 'M', u'x'), + (0x1D688, 'M', u'y'), + (0x1D689, 'M', u'z'), + (0x1D68A, 'M', u'a'), + (0x1D68B, 'M', u'b'), + (0x1D68C, 'M', u'c'), + (0x1D68D, 'M', u'd'), + (0x1D68E, 'M', u'e'), + (0x1D68F, 'M', u'f'), + (0x1D690, 'M', u'g'), + (0x1D691, 'M', u'h'), + (0x1D692, 'M', u'i'), + (0x1D693, 'M', u'j'), + (0x1D694, 'M', u'k'), + (0x1D695, 'M', u'l'), + (0x1D696, 'M', u'm'), + (0x1D697, 'M', u'n'), + (0x1D698, 'M', u'o'), + (0x1D699, 'M', u'p'), + (0x1D69A, 'M', u'q'), + ] + +def _seg_60(): + return [ + (0x1D69B, 'M', u'r'), + (0x1D69C, 'M', u's'), + (0x1D69D, 'M', u't'), + (0x1D69E, 'M', u'u'), + (0x1D69F, 'M', u'v'), + (0x1D6A0, 'M', u'w'), + (0x1D6A1, 'M', u'x'), + (0x1D6A2, 'M', u'y'), + (0x1D6A3, 'M', u'z'), + (0x1D6A4, 'M', u'ı'), + (0x1D6A5, 'M', u'ȷ'), + (0x1D6A6, 'X'), + (0x1D6A8, 'M', u'α'), + (0x1D6A9, 'M', u'β'), + (0x1D6AA, 'M', u'γ'), + (0x1D6AB, 'M', u'δ'), + (0x1D6AC, 'M', u'ε'), + (0x1D6AD, 'M', u'ζ'), + (0x1D6AE, 'M', u'η'), + (0x1D6AF, 'M', u'θ'), + (0x1D6B0, 'M', u'ι'), + (0x1D6B1, 'M', u'κ'), + (0x1D6B2, 'M', u'λ'), + (0x1D6B3, 'M', u'μ'), + (0x1D6B4, 'M', u'ν'), + (0x1D6B5, 'M', u'ξ'), + (0x1D6B6, 'M', u'ο'), + (0x1D6B7, 'M', u'π'), + (0x1D6B8, 'M', u'ρ'), + (0x1D6B9, 'M', u'θ'), + (0x1D6BA, 'M', u'σ'), + (0x1D6BB, 'M', u'τ'), + (0x1D6BC, 'M', u'υ'), + (0x1D6BD, 'M', u'φ'), + (0x1D6BE, 'M', u'χ'), + (0x1D6BF, 'M', u'ψ'), + (0x1D6C0, 'M', u'ω'), + (0x1D6C1, 'M', u'∇'), + (0x1D6C2, 'M', u'α'), + (0x1D6C3, 'M', u'β'), + (0x1D6C4, 'M', u'γ'), + (0x1D6C5, 'M', u'δ'), + (0x1D6C6, 'M', u'ε'), + (0x1D6C7, 'M', u'ζ'), + (0x1D6C8, 'M', u'η'), + (0x1D6C9, 'M', u'θ'), + (0x1D6CA, 'M', u'ι'), + (0x1D6CB, 'M', u'κ'), + (0x1D6CC, 'M', u'λ'), + (0x1D6CD, 'M', u'μ'), + (0x1D6CE, 'M', u'ν'), + (0x1D6CF, 'M', u'ξ'), + (0x1D6D0, 'M', u'ο'), + (0x1D6D1, 'M', u'π'), + (0x1D6D2, 'M', u'ρ'), + (0x1D6D3, 'M', u'σ'), + (0x1D6D5, 'M', u'τ'), + (0x1D6D6, 'M', u'υ'), + (0x1D6D7, 'M', u'φ'), + (0x1D6D8, 'M', u'χ'), + (0x1D6D9, 'M', u'ψ'), + (0x1D6DA, 'M', u'ω'), + (0x1D6DB, 'M', u'∂'), + (0x1D6DC, 'M', u'ε'), + (0x1D6DD, 'M', u'θ'), + (0x1D6DE, 'M', u'κ'), + (0x1D6DF, 'M', u'φ'), + (0x1D6E0, 'M', u'ρ'), + (0x1D6E1, 'M', u'π'), + (0x1D6E2, 'M', u'α'), + (0x1D6E3, 'M', u'β'), + (0x1D6E4, 'M', u'γ'), + (0x1D6E5, 'M', u'δ'), + (0x1D6E6, 'M', u'ε'), + (0x1D6E7, 'M', u'ζ'), + (0x1D6E8, 'M', u'η'), + (0x1D6E9, 'M', u'θ'), + (0x1D6EA, 'M', u'ι'), + (0x1D6EB, 'M', u'κ'), + (0x1D6EC, 'M', u'λ'), + (0x1D6ED, 'M', u'μ'), + (0x1D6EE, 'M', u'ν'), + (0x1D6EF, 'M', u'ξ'), + (0x1D6F0, 'M', u'ο'), + (0x1D6F1, 'M', u'π'), + (0x1D6F2, 'M', u'ρ'), + (0x1D6F3, 'M', u'θ'), + (0x1D6F4, 'M', u'σ'), + (0x1D6F5, 'M', u'τ'), + (0x1D6F6, 'M', u'υ'), + (0x1D6F7, 'M', u'φ'), + (0x1D6F8, 'M', u'χ'), + (0x1D6F9, 'M', u'ψ'), + (0x1D6FA, 'M', u'ω'), + (0x1D6FB, 'M', u'∇'), + (0x1D6FC, 'M', u'α'), + (0x1D6FD, 'M', u'β'), + (0x1D6FE, 'M', u'γ'), + (0x1D6FF, 'M', u'δ'), + (0x1D700, 'M', u'ε'), + ] + +def _seg_61(): + return [ + (0x1D701, 'M', u'ζ'), + (0x1D702, 'M', u'η'), + (0x1D703, 'M', u'θ'), + (0x1D704, 'M', u'ι'), + (0x1D705, 'M', u'κ'), + (0x1D706, 'M', u'λ'), + (0x1D707, 'M', u'μ'), + (0x1D708, 'M', u'ν'), + (0x1D709, 'M', u'ξ'), + (0x1D70A, 'M', u'ο'), + (0x1D70B, 'M', u'π'), + (0x1D70C, 'M', u'ρ'), + (0x1D70D, 'M', u'σ'), + (0x1D70F, 'M', u'τ'), + (0x1D710, 'M', u'υ'), + (0x1D711, 'M', u'φ'), + (0x1D712, 'M', u'χ'), + (0x1D713, 'M', u'ψ'), + (0x1D714, 'M', u'ω'), + (0x1D715, 'M', u'∂'), + (0x1D716, 'M', u'ε'), + (0x1D717, 'M', u'θ'), + (0x1D718, 'M', u'κ'), + (0x1D719, 'M', u'φ'), + (0x1D71A, 'M', u'ρ'), + (0x1D71B, 'M', u'π'), + (0x1D71C, 'M', u'α'), + (0x1D71D, 'M', u'β'), + (0x1D71E, 'M', u'γ'), + (0x1D71F, 'M', u'δ'), + (0x1D720, 'M', u'ε'), + (0x1D721, 'M', u'ζ'), + (0x1D722, 'M', u'η'), + (0x1D723, 'M', u'θ'), + (0x1D724, 'M', u'ι'), + (0x1D725, 'M', u'κ'), + (0x1D726, 'M', u'λ'), + (0x1D727, 'M', u'μ'), + (0x1D728, 'M', u'ν'), + (0x1D729, 'M', u'ξ'), + (0x1D72A, 'M', u'ο'), + (0x1D72B, 'M', u'π'), + (0x1D72C, 'M', u'ρ'), + (0x1D72D, 'M', u'θ'), + (0x1D72E, 'M', u'σ'), + (0x1D72F, 'M', u'τ'), + (0x1D730, 'M', u'υ'), + (0x1D731, 'M', u'φ'), + (0x1D732, 'M', u'χ'), + (0x1D733, 'M', u'ψ'), + (0x1D734, 'M', u'ω'), + (0x1D735, 'M', u'∇'), + (0x1D736, 'M', u'α'), + (0x1D737, 'M', u'β'), + (0x1D738, 'M', u'γ'), + (0x1D739, 'M', u'δ'), + (0x1D73A, 'M', u'ε'), + (0x1D73B, 'M', u'ζ'), + (0x1D73C, 'M', u'η'), + (0x1D73D, 'M', u'θ'), + (0x1D73E, 'M', u'ι'), + (0x1D73F, 'M', u'κ'), + (0x1D740, 'M', u'λ'), + (0x1D741, 'M', u'μ'), + (0x1D742, 'M', u'ν'), + (0x1D743, 'M', u'ξ'), + (0x1D744, 'M', u'ο'), + (0x1D745, 'M', u'π'), + (0x1D746, 'M', u'ρ'), + (0x1D747, 'M', u'σ'), + (0x1D749, 'M', u'τ'), + (0x1D74A, 'M', u'υ'), + (0x1D74B, 'M', u'φ'), + (0x1D74C, 'M', u'χ'), + (0x1D74D, 'M', u'ψ'), + (0x1D74E, 'M', u'ω'), + (0x1D74F, 'M', u'∂'), + (0x1D750, 'M', u'ε'), + (0x1D751, 'M', u'θ'), + (0x1D752, 'M', u'κ'), + (0x1D753, 'M', u'φ'), + (0x1D754, 'M', u'ρ'), + (0x1D755, 'M', u'π'), + (0x1D756, 'M', u'α'), + (0x1D757, 'M', u'β'), + (0x1D758, 'M', u'γ'), + (0x1D759, 'M', u'δ'), + (0x1D75A, 'M', u'ε'), + (0x1D75B, 'M', u'ζ'), + (0x1D75C, 'M', u'η'), + (0x1D75D, 'M', u'θ'), + (0x1D75E, 'M', u'ι'), + (0x1D75F, 'M', u'κ'), + (0x1D760, 'M', u'λ'), + (0x1D761, 'M', u'μ'), + (0x1D762, 'M', u'ν'), + (0x1D763, 'M', u'ξ'), + (0x1D764, 'M', u'ο'), + (0x1D765, 'M', u'π'), + (0x1D766, 'M', u'ρ'), + ] + +def _seg_62(): + return [ + (0x1D767, 'M', u'θ'), + (0x1D768, 'M', u'σ'), + (0x1D769, 'M', u'τ'), + (0x1D76A, 'M', u'υ'), + (0x1D76B, 'M', u'φ'), + (0x1D76C, 'M', u'χ'), + (0x1D76D, 'M', u'ψ'), + (0x1D76E, 'M', u'ω'), + (0x1D76F, 'M', u'∇'), + (0x1D770, 'M', u'α'), + (0x1D771, 'M', u'β'), + (0x1D772, 'M', u'γ'), + (0x1D773, 'M', u'δ'), + (0x1D774, 'M', u'ε'), + (0x1D775, 'M', u'ζ'), + (0x1D776, 'M', u'η'), + (0x1D777, 'M', u'θ'), + (0x1D778, 'M', u'ι'), + (0x1D779, 'M', u'κ'), + (0x1D77A, 'M', u'λ'), + (0x1D77B, 'M', u'μ'), + (0x1D77C, 'M', u'ν'), + (0x1D77D, 'M', u'ξ'), + (0x1D77E, 'M', u'ο'), + (0x1D77F, 'M', u'π'), + (0x1D780, 'M', u'ρ'), + (0x1D781, 'M', u'σ'), + (0x1D783, 'M', u'τ'), + (0x1D784, 'M', u'υ'), + (0x1D785, 'M', u'φ'), + (0x1D786, 'M', u'χ'), + (0x1D787, 'M', u'ψ'), + (0x1D788, 'M', u'ω'), + (0x1D789, 'M', u'∂'), + (0x1D78A, 'M', u'ε'), + (0x1D78B, 'M', u'θ'), + (0x1D78C, 'M', u'κ'), + (0x1D78D, 'M', u'φ'), + (0x1D78E, 'M', u'ρ'), + (0x1D78F, 'M', u'π'), + (0x1D790, 'M', u'α'), + (0x1D791, 'M', u'β'), + (0x1D792, 'M', u'γ'), + (0x1D793, 'M', u'δ'), + (0x1D794, 'M', u'ε'), + (0x1D795, 'M', u'ζ'), + (0x1D796, 'M', u'η'), + (0x1D797, 'M', u'θ'), + (0x1D798, 'M', u'ι'), + (0x1D799, 'M', u'κ'), + (0x1D79A, 'M', u'λ'), + (0x1D79B, 'M', u'μ'), + (0x1D79C, 'M', u'ν'), + (0x1D79D, 'M', u'ξ'), + (0x1D79E, 'M', u'ο'), + (0x1D79F, 'M', u'π'), + (0x1D7A0, 'M', u'ρ'), + (0x1D7A1, 'M', u'θ'), + (0x1D7A2, 'M', u'σ'), + (0x1D7A3, 'M', u'τ'), + (0x1D7A4, 'M', u'υ'), + (0x1D7A5, 'M', u'φ'), + (0x1D7A6, 'M', u'χ'), + (0x1D7A7, 'M', u'ψ'), + (0x1D7A8, 'M', u'ω'), + (0x1D7A9, 'M', u'∇'), + (0x1D7AA, 'M', u'α'), + (0x1D7AB, 'M', u'β'), + (0x1D7AC, 'M', u'γ'), + (0x1D7AD, 'M', u'δ'), + (0x1D7AE, 'M', u'ε'), + (0x1D7AF, 'M', u'ζ'), + (0x1D7B0, 'M', u'η'), + (0x1D7B1, 'M', u'θ'), + (0x1D7B2, 'M', u'ι'), + (0x1D7B3, 'M', u'κ'), + (0x1D7B4, 'M', u'λ'), + (0x1D7B5, 'M', u'μ'), + (0x1D7B6, 'M', u'ν'), + (0x1D7B7, 'M', u'ξ'), + (0x1D7B8, 'M', u'ο'), + (0x1D7B9, 'M', u'π'), + (0x1D7BA, 'M', u'ρ'), + (0x1D7BB, 'M', u'σ'), + (0x1D7BD, 'M', u'τ'), + (0x1D7BE, 'M', u'υ'), + (0x1D7BF, 'M', u'φ'), + (0x1D7C0, 'M', u'χ'), + (0x1D7C1, 'M', u'ψ'), + (0x1D7C2, 'M', u'ω'), + (0x1D7C3, 'M', u'∂'), + (0x1D7C4, 'M', u'ε'), + (0x1D7C5, 'M', u'θ'), + (0x1D7C6, 'M', u'κ'), + (0x1D7C7, 'M', u'φ'), + (0x1D7C8, 'M', u'ρ'), + (0x1D7C9, 'M', u'π'), + (0x1D7CA, 'M', u'ϝ'), + (0x1D7CC, 'X'), + (0x1D7CE, 'M', u'0'), + ] + +def _seg_63(): + return [ + (0x1D7CF, 'M', u'1'), + (0x1D7D0, 'M', u'2'), + (0x1D7D1, 'M', u'3'), + (0x1D7D2, 'M', u'4'), + (0x1D7D3, 'M', u'5'), + (0x1D7D4, 'M', u'6'), + (0x1D7D5, 'M', u'7'), + (0x1D7D6, 'M', u'8'), + (0x1D7D7, 'M', u'9'), + (0x1D7D8, 'M', u'0'), + (0x1D7D9, 'M', u'1'), + (0x1D7DA, 'M', u'2'), + (0x1D7DB, 'M', u'3'), + (0x1D7DC, 'M', u'4'), + (0x1D7DD, 'M', u'5'), + (0x1D7DE, 'M', u'6'), + (0x1D7DF, 'M', u'7'), + (0x1D7E0, 'M', u'8'), + (0x1D7E1, 'M', u'9'), + (0x1D7E2, 'M', u'0'), + (0x1D7E3, 'M', u'1'), + (0x1D7E4, 'M', u'2'), + (0x1D7E5, 'M', u'3'), + (0x1D7E6, 'M', u'4'), + (0x1D7E7, 'M', u'5'), + (0x1D7E8, 'M', u'6'), + (0x1D7E9, 'M', u'7'), + (0x1D7EA, 'M', u'8'), + (0x1D7EB, 'M', u'9'), + (0x1D7EC, 'M', u'0'), + (0x1D7ED, 'M', u'1'), + (0x1D7EE, 'M', u'2'), + (0x1D7EF, 'M', u'3'), + (0x1D7F0, 'M', u'4'), + (0x1D7F1, 'M', u'5'), + (0x1D7F2, 'M', u'6'), + (0x1D7F3, 'M', u'7'), + (0x1D7F4, 'M', u'8'), + (0x1D7F5, 'M', u'9'), + (0x1D7F6, 'M', u'0'), + (0x1D7F7, 'M', u'1'), + (0x1D7F8, 'M', u'2'), + (0x1D7F9, 'M', u'3'), + (0x1D7FA, 'M', u'4'), + (0x1D7FB, 'M', u'5'), + (0x1D7FC, 'M', u'6'), + (0x1D7FD, 'M', u'7'), + (0x1D7FE, 'M', u'8'), + (0x1D7FF, 'M', u'9'), + (0x1D800, 'X'), + (0x1EE00, 'M', u'ا'), + (0x1EE01, 'M', u'ب'), + (0x1EE02, 'M', u'ج'), + (0x1EE03, 'M', u'د'), + (0x1EE04, 'X'), + (0x1EE05, 'M', u'و'), + (0x1EE06, 'M', u'ز'), + (0x1EE07, 'M', u'ح'), + (0x1EE08, 'M', u'ط'), + (0x1EE09, 'M', u'ي'), + (0x1EE0A, 'M', u'ك'), + (0x1EE0B, 'M', u'ل'), + (0x1EE0C, 'M', u'م'), + (0x1EE0D, 'M', u'ن'), + (0x1EE0E, 'M', u'س'), + (0x1EE0F, 'M', u'ع'), + (0x1EE10, 'M', u'ف'), + (0x1EE11, 'M', u'ص'), + (0x1EE12, 'M', u'ق'), + (0x1EE13, 'M', u'ر'), + (0x1EE14, 'M', u'ش'), + (0x1EE15, 'M', u'ت'), + (0x1EE16, 'M', u'ث'), + (0x1EE17, 'M', u'خ'), + (0x1EE18, 'M', u'ذ'), + (0x1EE19, 'M', u'ض'), + (0x1EE1A, 'M', u'ظ'), + (0x1EE1B, 'M', u'غ'), + (0x1EE1C, 'M', u'ٮ'), + (0x1EE1D, 'M', u'ں'), + (0x1EE1E, 'M', u'ڡ'), + (0x1EE1F, 'M', u'ٯ'), + (0x1EE20, 'X'), + (0x1EE21, 'M', u'ب'), + (0x1EE22, 'M', u'ج'), + (0x1EE23, 'X'), + (0x1EE24, 'M', u'ه'), + (0x1EE25, 'X'), + (0x1EE27, 'M', u'ح'), + (0x1EE28, 'X'), + (0x1EE29, 'M', u'ي'), + (0x1EE2A, 'M', u'ك'), + (0x1EE2B, 'M', u'ل'), + (0x1EE2C, 'M', u'م'), + (0x1EE2D, 'M', u'ن'), + (0x1EE2E, 'M', u'س'), + (0x1EE2F, 'M', u'ع'), + (0x1EE30, 'M', u'ف'), + (0x1EE31, 'M', u'ص'), + (0x1EE32, 'M', u'ق'), + ] + +def _seg_64(): + return [ + (0x1EE33, 'X'), + (0x1EE34, 'M', u'ش'), + (0x1EE35, 'M', u'ت'), + (0x1EE36, 'M', u'ث'), + (0x1EE37, 'M', u'خ'), + (0x1EE38, 'X'), + (0x1EE39, 'M', u'ض'), + (0x1EE3A, 'X'), + (0x1EE3B, 'M', u'غ'), + (0x1EE3C, 'X'), + (0x1EE42, 'M', u'ج'), + (0x1EE43, 'X'), + (0x1EE47, 'M', u'ح'), + (0x1EE48, 'X'), + (0x1EE49, 'M', u'ي'), + (0x1EE4A, 'X'), + (0x1EE4B, 'M', u'ل'), + (0x1EE4C, 'X'), + (0x1EE4D, 'M', u'ن'), + (0x1EE4E, 'M', u'س'), + (0x1EE4F, 'M', u'ع'), + (0x1EE50, 'X'), + (0x1EE51, 'M', u'ص'), + (0x1EE52, 'M', u'ق'), + (0x1EE53, 'X'), + (0x1EE54, 'M', u'ش'), + (0x1EE55, 'X'), + (0x1EE57, 'M', u'خ'), + (0x1EE58, 'X'), + (0x1EE59, 'M', u'ض'), + (0x1EE5A, 'X'), + (0x1EE5B, 'M', u'غ'), + (0x1EE5C, 'X'), + (0x1EE5D, 'M', u'ں'), + (0x1EE5E, 'X'), + (0x1EE5F, 'M', u'ٯ'), + (0x1EE60, 'X'), + (0x1EE61, 'M', u'ب'), + (0x1EE62, 'M', u'ج'), + (0x1EE63, 'X'), + (0x1EE64, 'M', u'ه'), + (0x1EE65, 'X'), + (0x1EE67, 'M', u'ح'), + (0x1EE68, 'M', u'ط'), + (0x1EE69, 'M', u'ي'), + (0x1EE6A, 'M', u'ك'), + (0x1EE6B, 'X'), + (0x1EE6C, 'M', u'م'), + (0x1EE6D, 'M', u'ن'), + (0x1EE6E, 'M', u'س'), + (0x1EE6F, 'M', u'ع'), + (0x1EE70, 'M', u'ف'), + (0x1EE71, 'M', u'ص'), + (0x1EE72, 'M', u'ق'), + (0x1EE73, 'X'), + (0x1EE74, 'M', u'ش'), + (0x1EE75, 'M', u'ت'), + (0x1EE76, 'M', u'ث'), + (0x1EE77, 'M', u'خ'), + (0x1EE78, 'X'), + (0x1EE79, 'M', u'ض'), + (0x1EE7A, 'M', u'ظ'), + (0x1EE7B, 'M', u'غ'), + (0x1EE7C, 'M', u'ٮ'), + (0x1EE7D, 'X'), + (0x1EE7E, 'M', u'ڡ'), + (0x1EE7F, 'X'), + (0x1EE80, 'M', u'ا'), + (0x1EE81, 'M', u'ب'), + (0x1EE82, 'M', u'ج'), + (0x1EE83, 'M', u'د'), + (0x1EE84, 'M', u'ه'), + (0x1EE85, 'M', u'و'), + (0x1EE86, 'M', u'ز'), + (0x1EE87, 'M', u'ح'), + (0x1EE88, 'M', u'ط'), + (0x1EE89, 'M', u'ي'), + (0x1EE8A, 'X'), + (0x1EE8B, 'M', u'ل'), + (0x1EE8C, 'M', u'م'), + (0x1EE8D, 'M', u'ن'), + (0x1EE8E, 'M', u'س'), + (0x1EE8F, 'M', u'ع'), + (0x1EE90, 'M', u'ف'), + (0x1EE91, 'M', u'ص'), + (0x1EE92, 'M', u'ق'), + (0x1EE93, 'M', u'ر'), + (0x1EE94, 'M', u'ش'), + (0x1EE95, 'M', u'ت'), + (0x1EE96, 'M', u'ث'), + (0x1EE97, 'M', u'خ'), + (0x1EE98, 'M', u'ذ'), + (0x1EE99, 'M', u'ض'), + (0x1EE9A, 'M', u'ظ'), + (0x1EE9B, 'M', u'غ'), + (0x1EE9C, 'X'), + (0x1EEA1, 'M', u'ب'), + (0x1EEA2, 'M', u'ج'), + (0x1EEA3, 'M', u'د'), + (0x1EEA4, 'X'), + ] + +def _seg_65(): + return [ + (0x1EEA5, 'M', u'و'), + (0x1EEA6, 'M', u'ز'), + (0x1EEA7, 'M', u'ح'), + (0x1EEA8, 'M', u'ط'), + (0x1EEA9, 'M', u'ي'), + (0x1EEAA, 'X'), + (0x1EEAB, 'M', u'ل'), + (0x1EEAC, 'M', u'م'), + (0x1EEAD, 'M', u'ن'), + (0x1EEAE, 'M', u'س'), + (0x1EEAF, 'M', u'ع'), + (0x1EEB0, 'M', u'ف'), + (0x1EEB1, 'M', u'ص'), + (0x1EEB2, 'M', u'ق'), + (0x1EEB3, 'M', u'ر'), + (0x1EEB4, 'M', u'ش'), + (0x1EEB5, 'M', u'ت'), + (0x1EEB6, 'M', u'ث'), + (0x1EEB7, 'M', u'خ'), + (0x1EEB8, 'M', u'ذ'), + (0x1EEB9, 'M', u'ض'), + (0x1EEBA, 'M', u'ظ'), + (0x1EEBB, 'M', u'غ'), + (0x1EEBC, 'X'), + (0x1EEF0, 'V'), + (0x1EEF2, 'X'), + (0x1F000, 'V'), + (0x1F02C, 'X'), + (0x1F030, 'V'), + (0x1F094, 'X'), + (0x1F0A0, 'V'), + (0x1F0AF, 'X'), + (0x1F0B1, 'V'), + (0x1F0BF, 'X'), + (0x1F0C1, 'V'), + (0x1F0D0, 'X'), + (0x1F0D1, 'V'), + (0x1F0E0, 'X'), + (0x1F101, '3', u'0,'), + (0x1F102, '3', u'1,'), + (0x1F103, '3', u'2,'), + (0x1F104, '3', u'3,'), + (0x1F105, '3', u'4,'), + (0x1F106, '3', u'5,'), + (0x1F107, '3', u'6,'), + (0x1F108, '3', u'7,'), + (0x1F109, '3', u'8,'), + (0x1F10A, '3', u'9,'), + (0x1F10B, 'X'), + (0x1F110, '3', u'(a)'), + (0x1F111, '3', u'(b)'), + (0x1F112, '3', u'(c)'), + (0x1F113, '3', u'(d)'), + (0x1F114, '3', u'(e)'), + (0x1F115, '3', u'(f)'), + (0x1F116, '3', u'(g)'), + (0x1F117, '3', u'(h)'), + (0x1F118, '3', u'(i)'), + (0x1F119, '3', u'(j)'), + (0x1F11A, '3', u'(k)'), + (0x1F11B, '3', u'(l)'), + (0x1F11C, '3', u'(m)'), + (0x1F11D, '3', u'(n)'), + (0x1F11E, '3', u'(o)'), + (0x1F11F, '3', u'(p)'), + (0x1F120, '3', u'(q)'), + (0x1F121, '3', u'(r)'), + (0x1F122, '3', u'(s)'), + (0x1F123, '3', u'(t)'), + (0x1F124, '3', u'(u)'), + (0x1F125, '3', u'(v)'), + (0x1F126, '3', u'(w)'), + (0x1F127, '3', u'(x)'), + (0x1F128, '3', u'(y)'), + (0x1F129, '3', u'(z)'), + (0x1F12A, 'M', u'〔s〕'), + (0x1F12B, 'M', u'c'), + (0x1F12C, 'M', u'r'), + (0x1F12D, 'M', u'cd'), + (0x1F12E, 'M', u'wz'), + (0x1F12F, 'X'), + (0x1F130, 'M', u'a'), + (0x1F131, 'M', u'b'), + (0x1F132, 'M', u'c'), + (0x1F133, 'M', u'd'), + (0x1F134, 'M', u'e'), + (0x1F135, 'M', u'f'), + (0x1F136, 'M', u'g'), + (0x1F137, 'M', u'h'), + (0x1F138, 'M', u'i'), + (0x1F139, 'M', u'j'), + (0x1F13A, 'M', u'k'), + (0x1F13B, 'M', u'l'), + (0x1F13C, 'M', u'm'), + (0x1F13D, 'M', u'n'), + (0x1F13E, 'M', u'o'), + (0x1F13F, 'M', u'p'), + (0x1F140, 'M', u'q'), + (0x1F141, 'M', u'r'), + (0x1F142, 'M', u's'), + ] + +def _seg_66(): + return [ + (0x1F143, 'M', u't'), + (0x1F144, 'M', u'u'), + (0x1F145, 'M', u'v'), + (0x1F146, 'M', u'w'), + (0x1F147, 'M', u'x'), + (0x1F148, 'M', u'y'), + (0x1F149, 'M', u'z'), + (0x1F14A, 'M', u'hv'), + (0x1F14B, 'M', u'mv'), + (0x1F14C, 'M', u'sd'), + (0x1F14D, 'M', u'ss'), + (0x1F14E, 'M', u'ppv'), + (0x1F14F, 'M', u'wc'), + (0x1F150, 'V'), + (0x1F16A, 'M', u'mc'), + (0x1F16B, 'M', u'md'), + (0x1F16C, 'X'), + (0x1F170, 'V'), + (0x1F190, 'M', u'dj'), + (0x1F191, 'V'), + (0x1F19B, 'X'), + (0x1F1E6, 'V'), + (0x1F200, 'M', u'ほか'), + (0x1F201, 'M', u'ココ'), + (0x1F202, 'M', u'サ'), + (0x1F203, 'X'), + (0x1F210, 'M', u'手'), + (0x1F211, 'M', u'字'), + (0x1F212, 'M', u'双'), + (0x1F213, 'M', u'デ'), + (0x1F214, 'M', u'二'), + (0x1F215, 'M', u'多'), + (0x1F216, 'M', u'解'), + (0x1F217, 'M', u'天'), + (0x1F218, 'M', u'交'), + (0x1F219, 'M', u'映'), + (0x1F21A, 'M', u'無'), + (0x1F21B, 'M', u'料'), + (0x1F21C, 'M', u'前'), + (0x1F21D, 'M', u'後'), + (0x1F21E, 'M', u'再'), + (0x1F21F, 'M', u'新'), + (0x1F220, 'M', u'初'), + (0x1F221, 'M', u'終'), + (0x1F222, 'M', u'生'), + (0x1F223, 'M', u'販'), + (0x1F224, 'M', u'声'), + (0x1F225, 'M', u'吹'), + (0x1F226, 'M', u'演'), + (0x1F227, 'M', u'投'), + (0x1F228, 'M', u'捕'), + (0x1F229, 'M', u'一'), + (0x1F22A, 'M', u'三'), + (0x1F22B, 'M', u'遊'), + (0x1F22C, 'M', u'左'), + (0x1F22D, 'M', u'中'), + (0x1F22E, 'M', u'右'), + (0x1F22F, 'M', u'指'), + (0x1F230, 'M', u'走'), + (0x1F231, 'M', u'打'), + (0x1F232, 'M', u'禁'), + (0x1F233, 'M', u'空'), + (0x1F234, 'M', u'合'), + (0x1F235, 'M', u'満'), + (0x1F236, 'M', u'有'), + (0x1F237, 'M', u'月'), + (0x1F238, 'M', u'申'), + (0x1F239, 'M', u'割'), + (0x1F23A, 'M', u'営'), + (0x1F23B, 'X'), + (0x1F240, 'M', u'〔本〕'), + (0x1F241, 'M', u'〔三〕'), + (0x1F242, 'M', u'〔二〕'), + (0x1F243, 'M', u'〔安〕'), + (0x1F244, 'M', u'〔点〕'), + (0x1F245, 'M', u'〔打〕'), + (0x1F246, 'M', u'〔盗〕'), + (0x1F247, 'M', u'〔勝〕'), + (0x1F248, 'M', u'〔敗〕'), + (0x1F249, 'X'), + (0x1F250, 'M', u'得'), + (0x1F251, 'M', u'可'), + (0x1F252, 'X'), + (0x1F300, 'V'), + (0x1F321, 'X'), + (0x1F330, 'V'), + (0x1F336, 'X'), + (0x1F337, 'V'), + (0x1F37D, 'X'), + (0x1F380, 'V'), + (0x1F394, 'X'), + (0x1F3A0, 'V'), + (0x1F3C5, 'X'), + (0x1F3C6, 'V'), + (0x1F3CB, 'X'), + (0x1F3E0, 'V'), + (0x1F3F1, 'X'), + (0x1F400, 'V'), + (0x1F43F, 'X'), + (0x1F440, 'V'), + ] + +def _seg_67(): + return [ + (0x1F441, 'X'), + (0x1F442, 'V'), + (0x1F4F8, 'X'), + (0x1F4F9, 'V'), + (0x1F4FD, 'X'), + (0x1F500, 'V'), + (0x1F53E, 'X'), + (0x1F540, 'V'), + (0x1F544, 'X'), + (0x1F550, 'V'), + (0x1F568, 'X'), + (0x1F5FB, 'V'), + (0x1F641, 'X'), + (0x1F645, 'V'), + (0x1F650, 'X'), + (0x1F680, 'V'), + (0x1F6C6, 'X'), + (0x1F700, 'V'), + (0x1F774, 'X'), + (0x20000, 'V'), + (0x2A6D7, 'X'), + (0x2A700, 'V'), + (0x2B735, 'X'), + (0x2B740, 'V'), + (0x2B81E, 'X'), + (0x2F800, 'M', u'丽'), + (0x2F801, 'M', u'丸'), + (0x2F802, 'M', u'乁'), + (0x2F803, 'M', u'𠄢'), + (0x2F804, 'M', u'你'), + (0x2F805, 'M', u'侮'), + (0x2F806, 'M', u'侻'), + (0x2F807, 'M', u'倂'), + (0x2F808, 'M', u'偺'), + (0x2F809, 'M', u'備'), + (0x2F80A, 'M', u'僧'), + (0x2F80B, 'M', u'像'), + (0x2F80C, 'M', u'㒞'), + (0x2F80D, 'M', u'𠘺'), + (0x2F80E, 'M', u'免'), + (0x2F80F, 'M', u'兔'), + (0x2F810, 'M', u'兤'), + (0x2F811, 'M', u'具'), + (0x2F812, 'M', u'𠔜'), + (0x2F813, 'M', u'㒹'), + (0x2F814, 'M', u'內'), + (0x2F815, 'M', u'再'), + (0x2F816, 'M', u'𠕋'), + (0x2F817, 'M', u'冗'), + (0x2F818, 'M', u'冤'), + (0x2F819, 'M', u'仌'), + (0x2F81A, 'M', u'冬'), + (0x2F81B, 'M', u'况'), + (0x2F81C, 'M', u'𩇟'), + (0x2F81D, 'M', u'凵'), + (0x2F81E, 'M', u'刃'), + (0x2F81F, 'M', u'㓟'), + (0x2F820, 'M', u'刻'), + (0x2F821, 'M', u'剆'), + (0x2F822, 'M', u'割'), + (0x2F823, 'M', u'剷'), + (0x2F824, 'M', u'㔕'), + (0x2F825, 'M', u'勇'), + (0x2F826, 'M', u'勉'), + (0x2F827, 'M', u'勤'), + (0x2F828, 'M', u'勺'), + (0x2F829, 'M', u'包'), + (0x2F82A, 'M', u'匆'), + (0x2F82B, 'M', u'北'), + (0x2F82C, 'M', u'卉'), + (0x2F82D, 'M', u'卑'), + (0x2F82E, 'M', u'博'), + (0x2F82F, 'M', u'即'), + (0x2F830, 'M', u'卽'), + (0x2F831, 'M', u'卿'), + (0x2F834, 'M', u'𠨬'), + (0x2F835, 'M', u'灰'), + (0x2F836, 'M', u'及'), + (0x2F837, 'M', u'叟'), + (0x2F838, 'M', u'𠭣'), + (0x2F839, 'M', u'叫'), + (0x2F83A, 'M', u'叱'), + (0x2F83B, 'M', u'吆'), + (0x2F83C, 'M', u'咞'), + (0x2F83D, 'M', u'吸'), + (0x2F83E, 'M', u'呈'), + (0x2F83F, 'M', u'周'), + (0x2F840, 'M', u'咢'), + (0x2F841, 'M', u'哶'), + (0x2F842, 'M', u'唐'), + (0x2F843, 'M', u'啓'), + (0x2F844, 'M', u'啣'), + (0x2F845, 'M', u'善'), + (0x2F847, 'M', u'喙'), + (0x2F848, 'M', u'喫'), + (0x2F849, 'M', u'喳'), + (0x2F84A, 'M', u'嗂'), + (0x2F84B, 'M', u'圖'), + (0x2F84C, 'M', u'嘆'), + (0x2F84D, 'M', u'圗'), + ] + +def _seg_68(): + return [ + (0x2F84E, 'M', u'噑'), + (0x2F84F, 'M', u'噴'), + (0x2F850, 'M', u'切'), + (0x2F851, 'M', u'壮'), + (0x2F852, 'M', u'城'), + (0x2F853, 'M', u'埴'), + (0x2F854, 'M', u'堍'), + (0x2F855, 'M', u'型'), + (0x2F856, 'M', u'堲'), + (0x2F857, 'M', u'報'), + (0x2F858, 'M', u'墬'), + (0x2F859, 'M', u'𡓤'), + (0x2F85A, 'M', u'売'), + (0x2F85B, 'M', u'壷'), + (0x2F85C, 'M', u'夆'), + (0x2F85D, 'M', u'多'), + (0x2F85E, 'M', u'夢'), + (0x2F85F, 'M', u'奢'), + (0x2F860, 'M', u'𡚨'), + (0x2F861, 'M', u'𡛪'), + (0x2F862, 'M', u'姬'), + (0x2F863, 'M', u'娛'), + (0x2F864, 'M', u'娧'), + (0x2F865, 'M', u'姘'), + (0x2F866, 'M', u'婦'), + (0x2F867, 'M', u'㛮'), + (0x2F868, 'X'), + (0x2F869, 'M', u'嬈'), + (0x2F86A, 'M', u'嬾'), + (0x2F86C, 'M', u'𡧈'), + (0x2F86D, 'M', u'寃'), + (0x2F86E, 'M', u'寘'), + (0x2F86F, 'M', u'寧'), + (0x2F870, 'M', u'寳'), + (0x2F871, 'M', u'𡬘'), + (0x2F872, 'M', u'寿'), + (0x2F873, 'M', u'将'), + (0x2F874, 'X'), + (0x2F875, 'M', u'尢'), + (0x2F876, 'M', u'㞁'), + (0x2F877, 'M', u'屠'), + (0x2F878, 'M', u'屮'), + (0x2F879, 'M', u'峀'), + (0x2F87A, 'M', u'岍'), + (0x2F87B, 'M', u'𡷤'), + (0x2F87C, 'M', u'嵃'), + (0x2F87D, 'M', u'𡷦'), + (0x2F87E, 'M', u'嵮'), + (0x2F87F, 'M', u'嵫'), + (0x2F880, 'M', u'嵼'), + (0x2F881, 'M', u'巡'), + (0x2F882, 'M', u'巢'), + (0x2F883, 'M', u'㠯'), + (0x2F884, 'M', u'巽'), + (0x2F885, 'M', u'帨'), + (0x2F886, 'M', u'帽'), + (0x2F887, 'M', u'幩'), + (0x2F888, 'M', u'㡢'), + (0x2F889, 'M', u'𢆃'), + (0x2F88A, 'M', u'㡼'), + (0x2F88B, 'M', u'庰'), + (0x2F88C, 'M', u'庳'), + (0x2F88D, 'M', u'庶'), + (0x2F88E, 'M', u'廊'), + (0x2F88F, 'M', u'𪎒'), + (0x2F890, 'M', u'廾'), + (0x2F891, 'M', u'𢌱'), + (0x2F893, 'M', u'舁'), + (0x2F894, 'M', u'弢'), + (0x2F896, 'M', u'㣇'), + (0x2F897, 'M', u'𣊸'), + (0x2F898, 'M', u'𦇚'), + (0x2F899, 'M', u'形'), + (0x2F89A, 'M', u'彫'), + (0x2F89B, 'M', u'㣣'), + (0x2F89C, 'M', u'徚'), + (0x2F89D, 'M', u'忍'), + (0x2F89E, 'M', u'志'), + (0x2F89F, 'M', u'忹'), + (0x2F8A0, 'M', u'悁'), + (0x2F8A1, 'M', u'㤺'), + (0x2F8A2, 'M', u'㤜'), + (0x2F8A3, 'M', u'悔'), + (0x2F8A4, 'M', u'𢛔'), + (0x2F8A5, 'M', u'惇'), + (0x2F8A6, 'M', u'慈'), + (0x2F8A7, 'M', u'慌'), + (0x2F8A8, 'M', u'慎'), + (0x2F8A9, 'M', u'慌'), + (0x2F8AA, 'M', u'慺'), + (0x2F8AB, 'M', u'憎'), + (0x2F8AC, 'M', u'憲'), + (0x2F8AD, 'M', u'憤'), + (0x2F8AE, 'M', u'憯'), + (0x2F8AF, 'M', u'懞'), + (0x2F8B0, 'M', u'懲'), + (0x2F8B1, 'M', u'懶'), + (0x2F8B2, 'M', u'成'), + (0x2F8B3, 'M', u'戛'), + (0x2F8B4, 'M', u'扝'), + ] + +def _seg_69(): + return [ + (0x2F8B5, 'M', u'抱'), + (0x2F8B6, 'M', u'拔'), + (0x2F8B7, 'M', u'捐'), + (0x2F8B8, 'M', u'𢬌'), + (0x2F8B9, 'M', u'挽'), + (0x2F8BA, 'M', u'拼'), + (0x2F8BB, 'M', u'捨'), + (0x2F8BC, 'M', u'掃'), + (0x2F8BD, 'M', u'揤'), + (0x2F8BE, 'M', u'𢯱'), + (0x2F8BF, 'M', u'搢'), + (0x2F8C0, 'M', u'揅'), + (0x2F8C1, 'M', u'掩'), + (0x2F8C2, 'M', u'㨮'), + (0x2F8C3, 'M', u'摩'), + (0x2F8C4, 'M', u'摾'), + (0x2F8C5, 'M', u'撝'), + (0x2F8C6, 'M', u'摷'), + (0x2F8C7, 'M', u'㩬'), + (0x2F8C8, 'M', u'敏'), + (0x2F8C9, 'M', u'敬'), + (0x2F8CA, 'M', u'𣀊'), + (0x2F8CB, 'M', u'旣'), + (0x2F8CC, 'M', u'書'), + (0x2F8CD, 'M', u'晉'), + (0x2F8CE, 'M', u'㬙'), + (0x2F8CF, 'M', u'暑'), + (0x2F8D0, 'M', u'㬈'), + (0x2F8D1, 'M', u'㫤'), + (0x2F8D2, 'M', u'冒'), + (0x2F8D3, 'M', u'冕'), + (0x2F8D4, 'M', u'最'), + (0x2F8D5, 'M', u'暜'), + (0x2F8D6, 'M', u'肭'), + (0x2F8D7, 'M', u'䏙'), + (0x2F8D8, 'M', u'朗'), + (0x2F8D9, 'M', u'望'), + (0x2F8DA, 'M', u'朡'), + (0x2F8DB, 'M', u'杞'), + (0x2F8DC, 'M', u'杓'), + (0x2F8DD, 'M', u'𣏃'), + (0x2F8DE, 'M', u'㭉'), + (0x2F8DF, 'M', u'柺'), + (0x2F8E0, 'M', u'枅'), + (0x2F8E1, 'M', u'桒'), + (0x2F8E2, 'M', u'梅'), + (0x2F8E3, 'M', u'𣑭'), + (0x2F8E4, 'M', u'梎'), + (0x2F8E5, 'M', u'栟'), + (0x2F8E6, 'M', u'椔'), + (0x2F8E7, 'M', u'㮝'), + (0x2F8E8, 'M', u'楂'), + (0x2F8E9, 'M', u'榣'), + (0x2F8EA, 'M', u'槪'), + (0x2F8EB, 'M', u'檨'), + (0x2F8EC, 'M', u'𣚣'), + (0x2F8ED, 'M', u'櫛'), + (0x2F8EE, 'M', u'㰘'), + (0x2F8EF, 'M', u'次'), + (0x2F8F0, 'M', u'𣢧'), + (0x2F8F1, 'M', u'歔'), + (0x2F8F2, 'M', u'㱎'), + (0x2F8F3, 'M', u'歲'), + (0x2F8F4, 'M', u'殟'), + (0x2F8F5, 'M', u'殺'), + (0x2F8F6, 'M', u'殻'), + (0x2F8F7, 'M', u'𣪍'), + (0x2F8F8, 'M', u'𡴋'), + (0x2F8F9, 'M', u'𣫺'), + (0x2F8FA, 'M', u'汎'), + (0x2F8FB, 'M', u'𣲼'), + (0x2F8FC, 'M', u'沿'), + (0x2F8FD, 'M', u'泍'), + (0x2F8FE, 'M', u'汧'), + (0x2F8FF, 'M', u'洖'), + (0x2F900, 'M', u'派'), + (0x2F901, 'M', u'海'), + (0x2F902, 'M', u'流'), + (0x2F903, 'M', u'浩'), + (0x2F904, 'M', u'浸'), + (0x2F905, 'M', u'涅'), + (0x2F906, 'M', u'𣴞'), + (0x2F907, 'M', u'洴'), + (0x2F908, 'M', u'港'), + (0x2F909, 'M', u'湮'), + (0x2F90A, 'M', u'㴳'), + (0x2F90B, 'M', u'滋'), + (0x2F90C, 'M', u'滇'), + (0x2F90D, 'M', u'𣻑'), + (0x2F90E, 'M', u'淹'), + (0x2F90F, 'M', u'潮'), + (0x2F910, 'M', u'𣽞'), + (0x2F911, 'M', u'𣾎'), + (0x2F912, 'M', u'濆'), + (0x2F913, 'M', u'瀹'), + (0x2F914, 'M', u'瀞'), + (0x2F915, 'M', u'瀛'), + (0x2F916, 'M', u'㶖'), + (0x2F917, 'M', u'灊'), + (0x2F918, 'M', u'災'), + ] + +def _seg_70(): + return [ + (0x2F919, 'M', u'灷'), + (0x2F91A, 'M', u'炭'), + (0x2F91B, 'M', u'𠔥'), + (0x2F91C, 'M', u'煅'), + (0x2F91D, 'M', u'𤉣'), + (0x2F91E, 'M', u'熜'), + (0x2F91F, 'X'), + (0x2F920, 'M', u'爨'), + (0x2F921, 'M', u'爵'), + (0x2F922, 'M', u'牐'), + (0x2F923, 'M', u'𤘈'), + (0x2F924, 'M', u'犀'), + (0x2F925, 'M', u'犕'), + (0x2F926, 'M', u'𤜵'), + (0x2F927, 'M', u'𤠔'), + (0x2F928, 'M', u'獺'), + (0x2F929, 'M', u'王'), + (0x2F92A, 'M', u'㺬'), + (0x2F92B, 'M', u'玥'), + (0x2F92C, 'M', u'㺸'), + (0x2F92E, 'M', u'瑇'), + (0x2F92F, 'M', u'瑜'), + (0x2F930, 'M', u'瑱'), + (0x2F931, 'M', u'璅'), + (0x2F932, 'M', u'瓊'), + (0x2F933, 'M', u'㼛'), + (0x2F934, 'M', u'甤'), + (0x2F935, 'M', u'𤰶'), + (0x2F936, 'M', u'甾'), + (0x2F937, 'M', u'𤲒'), + (0x2F938, 'M', u'異'), + (0x2F939, 'M', u'𢆟'), + (0x2F93A, 'M', u'瘐'), + (0x2F93B, 'M', u'𤾡'), + (0x2F93C, 'M', u'𤾸'), + (0x2F93D, 'M', u'𥁄'), + (0x2F93E, 'M', u'㿼'), + (0x2F93F, 'M', u'䀈'), + (0x2F940, 'M', u'直'), + (0x2F941, 'M', u'𥃳'), + (0x2F942, 'M', u'𥃲'), + (0x2F943, 'M', u'𥄙'), + (0x2F944, 'M', u'𥄳'), + (0x2F945, 'M', u'眞'), + (0x2F946, 'M', u'真'), + (0x2F948, 'M', u'睊'), + (0x2F949, 'M', u'䀹'), + (0x2F94A, 'M', u'瞋'), + (0x2F94B, 'M', u'䁆'), + (0x2F94C, 'M', u'䂖'), + (0x2F94D, 'M', u'𥐝'), + (0x2F94E, 'M', u'硎'), + (0x2F94F, 'M', u'碌'), + (0x2F950, 'M', u'磌'), + (0x2F951, 'M', u'䃣'), + (0x2F952, 'M', u'𥘦'), + (0x2F953, 'M', u'祖'), + (0x2F954, 'M', u'𥚚'), + (0x2F955, 'M', u'𥛅'), + (0x2F956, 'M', u'福'), + (0x2F957, 'M', u'秫'), + (0x2F958, 'M', u'䄯'), + (0x2F959, 'M', u'穀'), + (0x2F95A, 'M', u'穊'), + (0x2F95B, 'M', u'穏'), + (0x2F95C, 'M', u'𥥼'), + (0x2F95D, 'M', u'𥪧'), + (0x2F95F, 'X'), + (0x2F960, 'M', u'䈂'), + (0x2F961, 'M', u'𥮫'), + (0x2F962, 'M', u'篆'), + (0x2F963, 'M', u'築'), + (0x2F964, 'M', u'䈧'), + (0x2F965, 'M', u'𥲀'), + (0x2F966, 'M', u'糒'), + (0x2F967, 'M', u'䊠'), + (0x2F968, 'M', u'糨'), + (0x2F969, 'M', u'糣'), + (0x2F96A, 'M', u'紀'), + (0x2F96B, 'M', u'𥾆'), + (0x2F96C, 'M', u'絣'), + (0x2F96D, 'M', u'䌁'), + (0x2F96E, 'M', u'緇'), + (0x2F96F, 'M', u'縂'), + (0x2F970, 'M', u'繅'), + (0x2F971, 'M', u'䌴'), + (0x2F972, 'M', u'𦈨'), + (0x2F973, 'M', u'𦉇'), + (0x2F974, 'M', u'䍙'), + (0x2F975, 'M', u'𦋙'), + (0x2F976, 'M', u'罺'), + (0x2F977, 'M', u'𦌾'), + (0x2F978, 'M', u'羕'), + (0x2F979, 'M', u'翺'), + (0x2F97A, 'M', u'者'), + (0x2F97B, 'M', u'𦓚'), + (0x2F97C, 'M', u'𦔣'), + (0x2F97D, 'M', u'聠'), + (0x2F97E, 'M', u'𦖨'), + (0x2F97F, 'M', u'聰'), + ] + +def _seg_71(): + return [ + (0x2F980, 'M', u'𣍟'), + (0x2F981, 'M', u'䏕'), + (0x2F982, 'M', u'育'), + (0x2F983, 'M', u'脃'), + (0x2F984, 'M', u'䐋'), + (0x2F985, 'M', u'脾'), + (0x2F986, 'M', u'媵'), + (0x2F987, 'M', u'𦞧'), + (0x2F988, 'M', u'𦞵'), + (0x2F989, 'M', u'𣎓'), + (0x2F98A, 'M', u'𣎜'), + (0x2F98B, 'M', u'舁'), + (0x2F98C, 'M', u'舄'), + (0x2F98D, 'M', u'辞'), + (0x2F98E, 'M', u'䑫'), + (0x2F98F, 'M', u'芑'), + (0x2F990, 'M', u'芋'), + (0x2F991, 'M', u'芝'), + (0x2F992, 'M', u'劳'), + (0x2F993, 'M', u'花'), + (0x2F994, 'M', u'芳'), + (0x2F995, 'M', u'芽'), + (0x2F996, 'M', u'苦'), + (0x2F997, 'M', u'𦬼'), + (0x2F998, 'M', u'若'), + (0x2F999, 'M', u'茝'), + (0x2F99A, 'M', u'荣'), + (0x2F99B, 'M', u'莭'), + (0x2F99C, 'M', u'茣'), + (0x2F99D, 'M', u'莽'), + (0x2F99E, 'M', u'菧'), + (0x2F99F, 'M', u'著'), + (0x2F9A0, 'M', u'荓'), + (0x2F9A1, 'M', u'菊'), + (0x2F9A2, 'M', u'菌'), + (0x2F9A3, 'M', u'菜'), + (0x2F9A4, 'M', u'𦰶'), + (0x2F9A5, 'M', u'𦵫'), + (0x2F9A6, 'M', u'𦳕'), + (0x2F9A7, 'M', u'䔫'), + (0x2F9A8, 'M', u'蓱'), + (0x2F9A9, 'M', u'蓳'), + (0x2F9AA, 'M', u'蔖'), + (0x2F9AB, 'M', u'𧏊'), + (0x2F9AC, 'M', u'蕤'), + (0x2F9AD, 'M', u'𦼬'), + (0x2F9AE, 'M', u'䕝'), + (0x2F9AF, 'M', u'䕡'), + (0x2F9B0, 'M', u'𦾱'), + (0x2F9B1, 'M', u'𧃒'), + (0x2F9B2, 'M', u'䕫'), + (0x2F9B3, 'M', u'虐'), + (0x2F9B4, 'M', u'虜'), + (0x2F9B5, 'M', u'虧'), + (0x2F9B6, 'M', u'虩'), + (0x2F9B7, 'M', u'蚩'), + (0x2F9B8, 'M', u'蚈'), + (0x2F9B9, 'M', u'蜎'), + (0x2F9BA, 'M', u'蛢'), + (0x2F9BB, 'M', u'蝹'), + (0x2F9BC, 'M', u'蜨'), + (0x2F9BD, 'M', u'蝫'), + (0x2F9BE, 'M', u'螆'), + (0x2F9BF, 'X'), + (0x2F9C0, 'M', u'蟡'), + (0x2F9C1, 'M', u'蠁'), + (0x2F9C2, 'M', u'䗹'), + (0x2F9C3, 'M', u'衠'), + (0x2F9C4, 'M', u'衣'), + (0x2F9C5, 'M', u'𧙧'), + (0x2F9C6, 'M', u'裗'), + (0x2F9C7, 'M', u'裞'), + (0x2F9C8, 'M', u'䘵'), + (0x2F9C9, 'M', u'裺'), + (0x2F9CA, 'M', u'㒻'), + (0x2F9CB, 'M', u'𧢮'), + (0x2F9CC, 'M', u'𧥦'), + (0x2F9CD, 'M', u'䚾'), + (0x2F9CE, 'M', u'䛇'), + (0x2F9CF, 'M', u'誠'), + (0x2F9D0, 'M', u'諭'), + (0x2F9D1, 'M', u'變'), + (0x2F9D2, 'M', u'豕'), + (0x2F9D3, 'M', u'𧲨'), + (0x2F9D4, 'M', u'貫'), + (0x2F9D5, 'M', u'賁'), + (0x2F9D6, 'M', u'贛'), + (0x2F9D7, 'M', u'起'), + (0x2F9D8, 'M', u'𧼯'), + (0x2F9D9, 'M', u'𠠄'), + (0x2F9DA, 'M', u'跋'), + (0x2F9DB, 'M', u'趼'), + (0x2F9DC, 'M', u'跰'), + (0x2F9DD, 'M', u'𠣞'), + (0x2F9DE, 'M', u'軔'), + (0x2F9DF, 'M', u'輸'), + (0x2F9E0, 'M', u'𨗒'), + (0x2F9E1, 'M', u'𨗭'), + (0x2F9E2, 'M', u'邔'), + (0x2F9E3, 'M', u'郱'), + ] + +def _seg_72(): + return [ + (0x2F9E4, 'M', u'鄑'), + (0x2F9E5, 'M', u'𨜮'), + (0x2F9E6, 'M', u'鄛'), + (0x2F9E7, 'M', u'鈸'), + (0x2F9E8, 'M', u'鋗'), + (0x2F9E9, 'M', u'鋘'), + (0x2F9EA, 'M', u'鉼'), + (0x2F9EB, 'M', u'鏹'), + (0x2F9EC, 'M', u'鐕'), + (0x2F9ED, 'M', u'𨯺'), + (0x2F9EE, 'M', u'開'), + (0x2F9EF, 'M', u'䦕'), + (0x2F9F0, 'M', u'閷'), + (0x2F9F1, 'M', u'𨵷'), + (0x2F9F2, 'M', u'䧦'), + (0x2F9F3, 'M', u'雃'), + (0x2F9F4, 'M', u'嶲'), + (0x2F9F5, 'M', u'霣'), + (0x2F9F6, 'M', u'𩅅'), + (0x2F9F7, 'M', u'𩈚'), + (0x2F9F8, 'M', u'䩮'), + (0x2F9F9, 'M', u'䩶'), + (0x2F9FA, 'M', u'韠'), + (0x2F9FB, 'M', u'𩐊'), + (0x2F9FC, 'M', u'䪲'), + (0x2F9FD, 'M', u'𩒖'), + (0x2F9FE, 'M', u'頋'), + (0x2FA00, 'M', u'頩'), + (0x2FA01, 'M', u'𩖶'), + (0x2FA02, 'M', u'飢'), + (0x2FA03, 'M', u'䬳'), + (0x2FA04, 'M', u'餩'), + (0x2FA05, 'M', u'馧'), + (0x2FA06, 'M', u'駂'), + (0x2FA07, 'M', u'駾'), + (0x2FA08, 'M', u'䯎'), + (0x2FA09, 'M', u'𩬰'), + (0x2FA0A, 'M', u'鬒'), + (0x2FA0B, 'M', u'鱀'), + (0x2FA0C, 'M', u'鳽'), + (0x2FA0D, 'M', u'䳎'), + (0x2FA0E, 'M', u'䳭'), + (0x2FA0F, 'M', u'鵧'), + (0x2FA10, 'M', u'𪃎'), + (0x2FA11, 'M', u'䳸'), + (0x2FA12, 'M', u'𪄅'), + (0x2FA13, 'M', u'𪈎'), + (0x2FA14, 'M', u'𪊑'), + (0x2FA15, 'M', u'麻'), + (0x2FA16, 'M', u'䵖'), + (0x2FA17, 'M', u'黹'), + (0x2FA18, 'M', u'黾'), + (0x2FA19, 'M', u'鼅'), + (0x2FA1A, 'M', u'鼏'), + (0x2FA1B, 'M', u'鼖'), + (0x2FA1C, 'M', u'鼻'), + (0x2FA1D, 'M', u'𪘀'), + (0x2FA1E, 'X'), + (0xE0100, 'I'), + (0xE01F0, 'X'), + ] + +uts46data = tuple( + _seg_0() + + _seg_1() + + _seg_2() + + _seg_3() + + _seg_4() + + _seg_5() + + _seg_6() + + _seg_7() + + _seg_8() + + _seg_9() + + _seg_10() + + _seg_11() + + _seg_12() + + _seg_13() + + _seg_14() + + _seg_15() + + _seg_16() + + _seg_17() + + _seg_18() + + _seg_19() + + _seg_20() + + _seg_21() + + _seg_22() + + _seg_23() + + _seg_24() + + _seg_25() + + _seg_26() + + _seg_27() + + _seg_28() + + _seg_29() + + _seg_30() + + _seg_31() + + _seg_32() + + _seg_33() + + _seg_34() + + _seg_35() + + _seg_36() + + _seg_37() + + _seg_38() + + _seg_39() + + _seg_40() + + _seg_41() + + _seg_42() + + _seg_43() + + _seg_44() + + _seg_45() + + _seg_46() + + _seg_47() + + _seg_48() + + _seg_49() + + _seg_50() + + _seg_51() + + _seg_52() + + _seg_53() + + _seg_54() + + _seg_55() + + _seg_56() + + _seg_57() + + _seg_58() + + _seg_59() + + _seg_60() + + _seg_61() + + _seg_62() + + _seg_63() + + _seg_64() + + _seg_65() + + _seg_66() + + _seg_67() + + _seg_68() + + _seg_69() + + _seg_70() + + _seg_71() + + _seg_72() +) diff --git a/env/lib/python2.7/site-packages/idna/uts46data.pyc b/env/lib/python2.7/site-packages/idna/uts46data.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3578f70c3db6c47c445115967d8ea7ac51e88104 GIT binary patch literal 272219 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 ...' % action) + + thedir = convert_path(words[1]) + patterns = [convert_path(word) for word in words[2:]] + + elif action in ('graft', 'prune'): + if len(words) != 2: + raise DistlibException( + '%r expects a single ' % action) + + dir_pattern = convert_path(words[1]) + + else: + raise DistlibException('unknown action %r' % action) + + return action, patterns, thedir, dir_pattern + + def _include_pattern(self, pattern, anchor=True, prefix=None, + is_regex=False): + """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 True if files are found. + """ + # XXX docstring lying about what the special chars are? + found = False + pattern_re = self._translate_pattern(pattern, anchor, prefix, is_regex) + + # delayed loading of allfiles list + if self.allfiles is None: + self.findall() + + for name in self.allfiles: + if pattern_re.search(name): + self.files.add(name) + found = True + return found + + def _exclude_pattern(self, pattern, anchor=True, prefix=None, + is_regex=False): + """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 True if files are + found. + + This API is public to allow e.g. exclusion of SCM subdirs, e.g. when + packaging source distributions + """ + found = False + pattern_re = self._translate_pattern(pattern, anchor, prefix, is_regex) + for f in list(self.files): + if pattern_re.search(f): + self.files.remove(f) + found = True + return found + + def _translate_pattern(self, pattern, anchor=True, prefix=None, + is_regex=False): + """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 _PYTHON_VERSION > (3, 2): + # ditch start and end characters + start, _, end = self._glob_to_re('_').partition('_') + + if pattern: + pattern_re = self._glob_to_re(pattern) + if _PYTHON_VERSION > (3, 2): + assert pattern_re.startswith(start) and pattern_re.endswith(end) + else: + pattern_re = '' + + base = re.escape(os.path.join(self.base, '')) + if prefix is not None: + # ditch end of pattern character + if _PYTHON_VERSION <= (3, 2): + empty_pattern = self._glob_to_re('') + prefix_re = self._glob_to_re(prefix)[:-len(empty_pattern)] + else: + prefix_re = self._glob_to_re(prefix) + assert prefix_re.startswith(start) and prefix_re.endswith(end) + prefix_re = prefix_re[len(start): len(prefix_re) - len(end)] + sep = os.sep + if os.sep == '\\': + sep = r'\\' + if _PYTHON_VERSION <= (3, 2): + pattern_re = '^' + base + sep.join((prefix_re, + '.*' + pattern_re)) + else: + pattern_re = pattern_re[len(start): len(pattern_re) - len(end)] + pattern_re = r'%s%s%s%s.*%s%s' % (start, base, prefix_re, sep, + pattern_re, end) + else: # no prefix -- respect anchor flag + if anchor: + if _PYTHON_VERSION <= (3, 2): + pattern_re = '^' + base + pattern_re + else: + pattern_re = r'%s%s%s' % (start, base, pattern_re[len(start):]) + + return re.compile(pattern_re) + + def _glob_to_re(self, 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 (currently: just os.sep). + sep = os.sep + if os.sep == '\\': + # we're using a regex to manipulate a regex, so we need + # to escape the backslash twice + sep = r'\\\\' + escaped = r'\1[^%s]' % sep + pattern_re = re.sub(r'((?K!IN5BE1OOKF@n*W|xwz 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 y, + 'gte': lambda x, y: x >= y, + 'in': lambda x, y: x in y, + 'lt': lambda x, y: x < y, + 'lte': lambda x, y: x <= y, + 'not': lambda x: not x, + 'noteq': lambda x, y: x != y, + 'notin': lambda x, y: x not in y, + } + + allowed_values = { + 'sys_platform': sys.platform, + 'python_version': '%s.%s' % sys.version_info[:2], + # parsing sys.platform is not reliable, but there is no other + # way to get e.g. 2.7.2+, and the PEP is defined with sys.version + 'python_full_version': sys.version.split(' ', 1)[0], + 'os_name': os.name, + 'platform_in_venv': str(in_venv()), + 'platform_release': platform.release(), + 'platform_version': platform.version(), + 'platform_machine': platform.machine(), + 'platform_python_implementation': python_implementation(), + } + + def __init__(self, context=None): + """ + Initialise an instance. + + :param context: If specified, names are looked up in this mapping. + """ + self.context = context or {} + self.source = None + + def get_fragment(self, offset): + """ + Get the part of the source which is causing a problem. + """ + fragment_len = 10 + s = '%r' % (self.source[offset:offset + fragment_len]) + if offset + fragment_len < len(self.source): + s += '...' + return s + + def get_handler(self, node_type): + """ + Get a handler for the specified AST node type. + """ + return getattr(self, 'do_%s' % node_type, None) + + def evaluate(self, node, filename=None): + """ + Evaluate a source string or node, using ``filename`` when + displaying errors. + """ + if isinstance(node, string_types): + self.source = node + kwargs = {'mode': 'eval'} + if filename: + kwargs['filename'] = filename + try: + node = ast.parse(node, **kwargs) + except SyntaxError as e: + s = self.get_fragment(e.offset) + raise SyntaxError('syntax error %s' % s) + node_type = node.__class__.__name__.lower() + handler = self.get_handler(node_type) + if handler is None: + if self.source is None: + s = '(source not available)' + else: + s = self.get_fragment(node.col_offset) + raise SyntaxError("don't know how to evaluate %r %s" % ( + node_type, s)) + return handler(node) + + def get_attr_key(self, node): + assert isinstance(node, ast.Attribute), 'attribute node expected' + return '%s.%s' % (node.value.id, node.attr) + + def do_attribute(self, node): + if not isinstance(node.value, ast.Name): + valid = False + else: + key = self.get_attr_key(node) + valid = key in self.context or key in self.allowed_values + if not valid: + raise SyntaxError('invalid expression: %s' % key) + if key in self.context: + result = self.context[key] + else: + result = self.allowed_values[key] + return result + + def do_boolop(self, node): + result = self.evaluate(node.values[0]) + is_or = node.op.__class__ is ast.Or + is_and = node.op.__class__ is ast.And + assert is_or or is_and + if (is_and and result) or (is_or and not result): + for n in node.values[1:]: + result = self.evaluate(n) + if (is_or and result) or (is_and and not result): + break + return result + + def do_compare(self, node): + def sanity_check(lhsnode, rhsnode): + valid = True + if isinstance(lhsnode, ast.Str) and isinstance(rhsnode, ast.Str): + valid = False + #elif (isinstance(lhsnode, ast.Attribute) + # and isinstance(rhsnode, ast.Attribute)): + # klhs = self.get_attr_key(lhsnode) + # krhs = self.get_attr_key(rhsnode) + # valid = klhs != krhs + if not valid: + s = self.get_fragment(node.col_offset) + raise SyntaxError('Invalid comparison: %s' % s) + + lhsnode = node.left + lhs = self.evaluate(lhsnode) + result = True + for op, rhsnode in zip(node.ops, node.comparators): + sanity_check(lhsnode, rhsnode) + op = op.__class__.__name__.lower() + if op not in self.operators: + raise SyntaxError('unsupported operation: %r' % op) + rhs = self.evaluate(rhsnode) + result = self.operators[op](lhs, rhs) + if not result: + break + lhs = rhs + lhsnode = rhsnode + return result + + def do_expression(self, node): + return self.evaluate(node.body) + + def do_name(self, node): + valid = False + if node.id in self.context: + valid = True + result = self.context[node.id] + elif node.id in self.allowed_values: + valid = True + result = self.allowed_values[node.id] + if not valid: + raise SyntaxError('invalid expression: %s' % node.id) + return result + + def do_str(self, node): + return node.s + + +def interpret(marker, execution_context=None): + """ + Interpret a marker and return a result depending on environment. + + :param marker: The marker to interpret. + :type marker: str + :param execution_context: The context used for name lookup. + :type execution_context: mapping + """ + return Evaluator(execution_context).evaluate(marker.strip()) diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyc b/env/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyc new file mode 100644 index 0000000000000000000000000000000000000000..38fd67dd07c28d3f7219cf491bf15f416019d631 GIT binary patch literal 8007 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 C)|Kl3 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/metadata.py b/env/lib/python2.7/site-packages/pip/_vendor/distlib/metadata.py new file mode 100644 index 0000000..75bfd68 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/distlib/metadata.py @@ -0,0 +1,1068 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""Implementation of the Metadata for Python packages PEPs. + +Supports all metadata formats (1.0, 1.1, 1.2, and 2.0 experimental). +""" +from __future__ import unicode_literals + +import codecs +from email import message_from_file +import json +import logging +import re + + +from . import DistlibException, __version__ +from .compat import StringIO, string_types, text_type +from .markers import interpret +from .util import extract_by_key, get_extras +from .version import get_scheme, PEP440_VERSION_RE + +logger = logging.getLogger(__name__) + + +class MetadataMissingError(DistlibException): + """A required metadata is missing""" + + +class MetadataConflictError(DistlibException): + """Attempt to read or write metadata fields that are conflictual.""" + + +class MetadataUnrecognizedVersionError(DistlibException): + """Unknown metadata version number.""" + + +class MetadataInvalidError(DistlibException): + """A metadata value is invalid""" + +# public API of this module +__all__ = ['Metadata', 'PKG_INFO_ENCODING', 'PKG_INFO_PREFERRED_VERSION'] + +# Encoding used for the PKG-INFO files +PKG_INFO_ENCODING = 'utf-8' + +# preferred version. Hopefully will be changed +# to 1.2 once PEP 345 is supported everywhere +PKG_INFO_PREFERRED_VERSION = '1.1' + +_LINE_PREFIX_1_2 = re.compile('\n \|') +_LINE_PREFIX_PRE_1_2 = re.compile('\n ') +_241_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'License') + +_314_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Supported-Platform', 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'License', 'Classifier', 'Download-URL', 'Obsoletes', + 'Provides', 'Requires') + +_314_MARKERS = ('Obsoletes', 'Provides', 'Requires', 'Classifier', + 'Download-URL') + +_345_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Supported-Platform', 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'Maintainer', 'Maintainer-email', 'License', + 'Classifier', 'Download-URL', 'Obsoletes-Dist', + 'Project-URL', 'Provides-Dist', 'Requires-Dist', + 'Requires-Python', 'Requires-External') + +_345_MARKERS = ('Provides-Dist', 'Requires-Dist', 'Requires-Python', + 'Obsoletes-Dist', 'Requires-External', 'Maintainer', + 'Maintainer-email', 'Project-URL') + +_426_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Supported-Platform', 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'Maintainer', 'Maintainer-email', 'License', + 'Classifier', 'Download-URL', 'Obsoletes-Dist', + 'Project-URL', 'Provides-Dist', 'Requires-Dist', + 'Requires-Python', 'Requires-External', 'Private-Version', + 'Obsoleted-By', 'Setup-Requires-Dist', 'Extension', + 'Provides-Extra') + +_426_MARKERS = ('Private-Version', 'Provides-Extra', 'Obsoleted-By', + 'Setup-Requires-Dist', 'Extension') + +_ALL_FIELDS = set() +_ALL_FIELDS.update(_241_FIELDS) +_ALL_FIELDS.update(_314_FIELDS) +_ALL_FIELDS.update(_345_FIELDS) +_ALL_FIELDS.update(_426_FIELDS) + +EXTRA_RE = re.compile(r'''extra\s*==\s*("([^"]+)"|'([^']+)')''') + + +def _version2fieldlist(version): + if version == '1.0': + return _241_FIELDS + elif version == '1.1': + return _314_FIELDS + elif version == '1.2': + return _345_FIELDS + elif version == '2.0': + return _426_FIELDS + raise MetadataUnrecognizedVersionError(version) + + +def _best_version(fields): + """Detect the best version depending on the fields used.""" + def _has_marker(keys, markers): + for marker in markers: + if marker in keys: + return True + return False + + keys = [] + for key, value in fields.items(): + if value in ([], 'UNKNOWN', None): + continue + keys.append(key) + + possible_versions = ['1.0', '1.1', '1.2', '2.0'] + + # first let's try to see if a field is not part of one of the version + for key in keys: + if key not in _241_FIELDS and '1.0' in possible_versions: + possible_versions.remove('1.0') + if key not in _314_FIELDS and '1.1' in possible_versions: + possible_versions.remove('1.1') + if key not in _345_FIELDS and '1.2' in possible_versions: + possible_versions.remove('1.2') + if key not in _426_FIELDS and '2.0' in possible_versions: + possible_versions.remove('2.0') + + # possible_version contains qualified versions + if len(possible_versions) == 1: + return possible_versions[0] # found ! + elif len(possible_versions) == 0: + raise MetadataConflictError('Unknown metadata set') + + # let's see if one unique marker is found + is_1_1 = '1.1' in possible_versions and _has_marker(keys, _314_MARKERS) + is_1_2 = '1.2' in possible_versions and _has_marker(keys, _345_MARKERS) + is_2_0 = '2.0' in possible_versions and _has_marker(keys, _426_MARKERS) + if int(is_1_1) + int(is_1_2) + int(is_2_0) > 1: + raise MetadataConflictError('You used incompatible 1.1/1.2/2.0 fields') + + # we have the choice, 1.0, or 1.2, or 2.0 + # - 1.0 has a broken Summary field but works with all tools + # - 1.1 is to avoid + # - 1.2 fixes Summary but has little adoption + # - 2.0 adds more features and is very new + if not is_1_1 and not is_1_2 and not is_2_0: + # we couldn't find any specific marker + if PKG_INFO_PREFERRED_VERSION in possible_versions: + return PKG_INFO_PREFERRED_VERSION + if is_1_1: + return '1.1' + if is_1_2: + return '1.2' + + return '2.0' + +_ATTR2FIELD = { + 'metadata_version': 'Metadata-Version', + 'name': 'Name', + 'version': 'Version', + 'platform': 'Platform', + 'supported_platform': 'Supported-Platform', + 'summary': 'Summary', + 'description': 'Description', + 'keywords': 'Keywords', + 'home_page': 'Home-page', + 'author': 'Author', + 'author_email': 'Author-email', + 'maintainer': 'Maintainer', + 'maintainer_email': 'Maintainer-email', + 'license': 'License', + 'classifier': 'Classifier', + 'download_url': 'Download-URL', + 'obsoletes_dist': 'Obsoletes-Dist', + 'provides_dist': 'Provides-Dist', + 'requires_dist': 'Requires-Dist', + 'setup_requires_dist': 'Setup-Requires-Dist', + 'requires_python': 'Requires-Python', + 'requires_external': 'Requires-External', + 'requires': 'Requires', + 'provides': 'Provides', + 'obsoletes': 'Obsoletes', + 'project_url': 'Project-URL', + 'private_version': 'Private-Version', + 'obsoleted_by': 'Obsoleted-By', + 'extension': 'Extension', + 'provides_extra': 'Provides-Extra', +} + +_PREDICATE_FIELDS = ('Requires-Dist', 'Obsoletes-Dist', 'Provides-Dist') +_VERSIONS_FIELDS = ('Requires-Python',) +_VERSION_FIELDS = ('Version',) +_LISTFIELDS = ('Platform', 'Classifier', 'Obsoletes', + 'Requires', 'Provides', 'Obsoletes-Dist', + 'Provides-Dist', 'Requires-Dist', 'Requires-External', + 'Project-URL', 'Supported-Platform', 'Setup-Requires-Dist', + 'Provides-Extra', 'Extension') +_LISTTUPLEFIELDS = ('Project-URL',) + +_ELEMENTSFIELD = ('Keywords',) + +_UNICODEFIELDS = ('Author', 'Maintainer', 'Summary', 'Description') + +_MISSING = object() + +_FILESAFE = re.compile('[^A-Za-z0-9.]+') + + +def _get_name_and_version(name, version, for_filename=False): + """Return the distribution name with version. + + If for_filename is true, return a filename-escaped form.""" + if for_filename: + # For both name and version any runs of non-alphanumeric or '.' + # characters are replaced with a single '-'. Additionally any + # spaces in the version string become '.' + name = _FILESAFE.sub('-', name) + version = _FILESAFE.sub('-', version.replace(' ', '.')) + return '%s-%s' % (name, version) + + +class LegacyMetadata(object): + """The legacy metadata of a release. + + Supports versions 1.0, 1.1 and 1.2 (auto-detected). You can + instantiate the class with one of these arguments (or none): + - *path*, the path to a metadata file + - *fileobj* give a file-like object with metadata as content + - *mapping* is a dict-like object + - *scheme* is a version scheme name + """ + # TODO document the mapping API and UNKNOWN default key + + def __init__(self, path=None, fileobj=None, mapping=None, + scheme='default'): + if [path, fileobj, mapping].count(None) < 2: + raise TypeError('path, fileobj and mapping are exclusive') + self._fields = {} + self.requires_files = [] + self._dependencies = None + self.scheme = scheme + if path is not None: + self.read(path) + elif fileobj is not None: + self.read_file(fileobj) + elif mapping is not None: + self.update(mapping) + self.set_metadata_version() + + def set_metadata_version(self): + self._fields['Metadata-Version'] = _best_version(self._fields) + + def _write_field(self, fileobj, name, value): + fileobj.write('%s: %s\n' % (name, value)) + + def __getitem__(self, name): + return self.get(name) + + def __setitem__(self, name, value): + return self.set(name, value) + + def __delitem__(self, name): + field_name = self._convert_name(name) + try: + del self._fields[field_name] + except KeyError: + raise KeyError(name) + + def __contains__(self, name): + return (name in self._fields or + self._convert_name(name) in self._fields) + + def _convert_name(self, name): + if name in _ALL_FIELDS: + return name + name = name.replace('-', '_').lower() + return _ATTR2FIELD.get(name, name) + + def _default_value(self, name): + if name in _LISTFIELDS or name in _ELEMENTSFIELD: + return [] + return 'UNKNOWN' + + def _remove_line_prefix(self, value): + if self.metadata_version in ('1.0', '1.1'): + return _LINE_PREFIX_PRE_1_2.sub('\n', value) + else: + return _LINE_PREFIX_1_2.sub('\n', value) + + def __getattr__(self, name): + if name in _ATTR2FIELD: + return self[name] + raise AttributeError(name) + + # + # Public API + # + +# dependencies = property(_get_dependencies, _set_dependencies) + + def get_fullname(self, filesafe=False): + """Return the distribution name with version. + + If filesafe is true, return a filename-escaped form.""" + return _get_name_and_version(self['Name'], self['Version'], filesafe) + + def is_field(self, name): + """return True if name is a valid metadata key""" + name = self._convert_name(name) + return name in _ALL_FIELDS + + def is_multi_field(self, name): + name = self._convert_name(name) + return name in _LISTFIELDS + + def read(self, filepath): + """Read the metadata values from a file path.""" + fp = codecs.open(filepath, 'r', encoding='utf-8') + try: + self.read_file(fp) + finally: + fp.close() + + def read_file(self, fileob): + """Read the metadata values from a file object.""" + msg = message_from_file(fileob) + self._fields['Metadata-Version'] = msg['metadata-version'] + + # When reading, get all the fields we can + for field in _ALL_FIELDS: + if field not in msg: + continue + if field in _LISTFIELDS: + # we can have multiple lines + values = msg.get_all(field) + if field in _LISTTUPLEFIELDS and values is not None: + values = [tuple(value.split(',')) for value in values] + self.set(field, values) + else: + # single line + value = msg[field] + if value is not None and value != 'UNKNOWN': + self.set(field, value) + self.set_metadata_version() + + def write(self, filepath, skip_unknown=False): + """Write the metadata fields to filepath.""" + fp = codecs.open(filepath, 'w', encoding='utf-8') + try: + self.write_file(fp, skip_unknown) + finally: + fp.close() + + def write_file(self, fileobject, skip_unknown=False): + """Write the PKG-INFO format data to a file object.""" + self.set_metadata_version() + + for field in _version2fieldlist(self['Metadata-Version']): + values = self.get(field) + if skip_unknown and values in ('UNKNOWN', [], ['UNKNOWN']): + continue + if field in _ELEMENTSFIELD: + self._write_field(fileobject, field, ','.join(values)) + continue + if field not in _LISTFIELDS: + if field == 'Description': + if self.metadata_version in ('1.0', '1.1'): + values = values.replace('\n', '\n ') + else: + values = values.replace('\n', '\n |') + values = [values] + + if field in _LISTTUPLEFIELDS: + values = [','.join(value) for value in values] + + for value in values: + self._write_field(fileobject, field, value) + + def update(self, other=None, **kwargs): + """Set metadata values from the given iterable `other` and kwargs. + + Behavior is like `dict.update`: If `other` has a ``keys`` method, + they are looped over and ``self[key]`` is assigned ``other[key]``. + Else, ``other`` is an iterable of ``(key, value)`` iterables. + + Keys that don't match a metadata field or that have an empty value are + dropped. + """ + def _set(key, value): + if key in _ATTR2FIELD and value: + self.set(self._convert_name(key), value) + + if not other: + # other is None or empty container + pass + elif hasattr(other, 'keys'): + for k in other.keys(): + _set(k, other[k]) + else: + for k, v in other: + _set(k, v) + + if kwargs: + for k, v in kwargs.items(): + _set(k, v) + + def set(self, name, value): + """Control then set a metadata field.""" + name = self._convert_name(name) + + if ((name in _ELEMENTSFIELD or name == 'Platform') and + not isinstance(value, (list, tuple))): + if isinstance(value, string_types): + value = [v.strip() for v in value.split(',')] + else: + value = [] + elif (name in _LISTFIELDS and + not isinstance(value, (list, tuple))): + if isinstance(value, string_types): + value = [value] + else: + value = [] + + if logger.isEnabledFor(logging.WARNING): + project_name = self['Name'] + + scheme = get_scheme(self.scheme) + if name in _PREDICATE_FIELDS and value is not None: + for v in value: + # check that the values are valid + if not scheme.is_valid_matcher(v.split(';')[0]): + logger.warning( + "'%s': '%s' is not valid (field '%s')", + project_name, v, name) + # FIXME this rejects UNKNOWN, is that right? + elif name in _VERSIONS_FIELDS and value is not None: + if not scheme.is_valid_constraint_list(value): + logger.warning("'%s': '%s' is not a valid version (field '%s')", + project_name, value, name) + elif name in _VERSION_FIELDS and value is not None: + if not scheme.is_valid_version(value): + logger.warning("'%s': '%s' is not a valid version (field '%s')", + project_name, value, name) + + if name in _UNICODEFIELDS: + if name == 'Description': + value = self._remove_line_prefix(value) + + self._fields[name] = value + + def get(self, name, default=_MISSING): + """Get a metadata field.""" + name = self._convert_name(name) + if name not in self._fields: + if default is _MISSING: + default = self._default_value(name) + return default + if name in _UNICODEFIELDS: + value = self._fields[name] + return value + elif name in _LISTFIELDS: + value = self._fields[name] + if value is None: + return [] + res = [] + for val in value: + if name not in _LISTTUPLEFIELDS: + res.append(val) + else: + # That's for Project-URL + res.append((val[0], val[1])) + return res + + elif name in _ELEMENTSFIELD: + value = self._fields[name] + if isinstance(value, string_types): + return value.split(',') + return self._fields[name] + + def check(self, strict=False): + """Check if the metadata is compliant. If strict is True then raise if + no Name or Version are provided""" + self.set_metadata_version() + + # XXX should check the versions (if the file was loaded) + missing, warnings = [], [] + + for attr in ('Name', 'Version'): # required by PEP 345 + if attr not in self: + missing.append(attr) + + if strict and missing != []: + msg = 'missing required metadata: %s' % ', '.join(missing) + raise MetadataMissingError(msg) + + for attr in ('Home-page', 'Author'): + if attr not in self: + missing.append(attr) + + # checking metadata 1.2 (XXX needs to check 1.1, 1.0) + if self['Metadata-Version'] != '1.2': + return missing, warnings + + scheme = get_scheme(self.scheme) + + def are_valid_constraints(value): + for v in value: + if not scheme.is_valid_matcher(v.split(';')[0]): + return False + return True + + for fields, controller in ((_PREDICATE_FIELDS, are_valid_constraints), + (_VERSIONS_FIELDS, + scheme.is_valid_constraint_list), + (_VERSION_FIELDS, + scheme.is_valid_version)): + for field in fields: + value = self.get(field, None) + if value is not None and not controller(value): + warnings.append("Wrong value for '%s': %s" % (field, value)) + + return missing, warnings + + def todict(self, skip_missing=False): + """Return fields as a dict. + + Field names will be converted to use the underscore-lowercase style + instead of hyphen-mixed case (i.e. home_page instead of Home-page). + """ + self.set_metadata_version() + + mapping_1_0 = ( + ('metadata_version', 'Metadata-Version'), + ('name', 'Name'), + ('version', 'Version'), + ('summary', 'Summary'), + ('home_page', 'Home-page'), + ('author', 'Author'), + ('author_email', 'Author-email'), + ('license', 'License'), + ('description', 'Description'), + ('keywords', 'Keywords'), + ('platform', 'Platform'), + ('classifiers', 'Classifier'), + ('download_url', 'Download-URL'), + ) + + data = {} + for key, field_name in mapping_1_0: + if not skip_missing or field_name in self._fields: + data[key] = self[field_name] + + if self['Metadata-Version'] == '1.2': + mapping_1_2 = ( + ('requires_dist', 'Requires-Dist'), + ('requires_python', 'Requires-Python'), + ('requires_external', 'Requires-External'), + ('provides_dist', 'Provides-Dist'), + ('obsoletes_dist', 'Obsoletes-Dist'), + ('project_url', 'Project-URL'), + ('maintainer', 'Maintainer'), + ('maintainer_email', 'Maintainer-email'), + ) + for key, field_name in mapping_1_2: + if not skip_missing or field_name in self._fields: + if key != 'project_url': + data[key] = self[field_name] + else: + data[key] = [','.join(u) for u in self[field_name]] + + elif self['Metadata-Version'] == '1.1': + mapping_1_1 = ( + ('provides', 'Provides'), + ('requires', 'Requires'), + ('obsoletes', 'Obsoletes'), + ) + for key, field_name in mapping_1_1: + if not skip_missing or field_name in self._fields: + data[key] = self[field_name] + + return data + + def add_requirements(self, requirements): + if self['Metadata-Version'] == '1.1': + # we can't have 1.1 metadata *and* Setuptools requires + for field in ('Obsoletes', 'Requires', 'Provides'): + if field in self: + del self[field] + self['Requires-Dist'] += requirements + + # Mapping API + # TODO could add iter* variants + + def keys(self): + return list(_version2fieldlist(self['Metadata-Version'])) + + def __iter__(self): + for key in self.keys(): + yield key + + def values(self): + return [self[key] for key in self.keys()] + + def items(self): + return [(key, self[key]) for key in self.keys()] + + def __repr__(self): + return '<%s %s %s>' % (self.__class__.__name__, self.name, + self.version) + + +METADATA_FILENAME = 'pydist.json' +WHEEL_METADATA_FILENAME = 'metadata.json' + + +class Metadata(object): + """ + The metadata of a release. This implementation uses 2.0 (JSON) + metadata where possible. If not possible, it wraps a LegacyMetadata + instance which handles the key-value metadata format. + """ + + METADATA_VERSION_MATCHER = re.compile('^\d+(\.\d+)*$') + + NAME_MATCHER = re.compile('^[0-9A-Z]([0-9A-Z_.-]*[0-9A-Z])?$', re.I) + + VERSION_MATCHER = PEP440_VERSION_RE + + SUMMARY_MATCHER = re.compile('.{1,2047}') + + METADATA_VERSION = '2.0' + + GENERATOR = 'distlib (%s)' % __version__ + + MANDATORY_KEYS = { + 'name': (), + 'version': (), + 'summary': ('legacy',), + } + + INDEX_KEYS = ('name version license summary description author ' + 'author_email keywords platform home_page classifiers ' + 'download_url') + + DEPENDENCY_KEYS = ('extras run_requires test_requires build_requires ' + 'dev_requires provides meta_requires obsoleted_by ' + 'supports_environments') + + SYNTAX_VALIDATORS = { + 'metadata_version': (METADATA_VERSION_MATCHER, ()), + 'name': (NAME_MATCHER, ('legacy',)), + 'version': (VERSION_MATCHER, ('legacy',)), + 'summary': (SUMMARY_MATCHER, ('legacy',)), + } + + __slots__ = ('_legacy', '_data', 'scheme') + + def __init__(self, path=None, fileobj=None, mapping=None, + scheme='default'): + if [path, fileobj, mapping].count(None) < 2: + raise TypeError('path, fileobj and mapping are exclusive') + self._legacy = None + self._data = None + self.scheme = scheme + #import pdb; pdb.set_trace() + if mapping is not None: + try: + self._validate_mapping(mapping, scheme) + self._data = mapping + except MetadataUnrecognizedVersionError: + self._legacy = LegacyMetadata(mapping=mapping, scheme=scheme) + self.validate() + else: + data = None + if path: + with open(path, 'rb') as f: + data = f.read() + elif fileobj: + data = fileobj.read() + if data is None: + # Initialised with no args - to be added + self._data = { + 'metadata_version': self.METADATA_VERSION, + 'generator': self.GENERATOR, + } + else: + if not isinstance(data, text_type): + data = data.decode('utf-8') + try: + self._data = json.loads(data) + self._validate_mapping(self._data, scheme) + except ValueError: + # Note: MetadataUnrecognizedVersionError does not + # inherit from ValueError (it's a DistlibException, + # which should not inherit from ValueError). + # The ValueError comes from the json.load - if that + # succeeds and we get a validation error, we want + # that to propagate + self._legacy = LegacyMetadata(fileobj=StringIO(data), + scheme=scheme) + self.validate() + + common_keys = set(('name', 'version', 'license', 'keywords', 'summary')) + + none_list = (None, list) + none_dict = (None, dict) + + mapped_keys = { + 'run_requires': ('Requires-Dist', list), + 'build_requires': ('Setup-Requires-Dist', list), + 'dev_requires': none_list, + 'test_requires': none_list, + 'meta_requires': none_list, + 'extras': ('Provides-Extra', list), + 'modules': none_list, + 'namespaces': none_list, + 'exports': none_dict, + 'commands': none_dict, + 'classifiers': ('Classifier', list), + 'source_url': ('Download-URL', None), + 'metadata_version': ('Metadata-Version', None), + } + + del none_list, none_dict + + def __getattribute__(self, key): + common = object.__getattribute__(self, 'common_keys') + mapped = object.__getattribute__(self, 'mapped_keys') + if key in mapped: + lk, maker = mapped[key] + if self._legacy: + if lk is None: + result = None if maker is None else maker() + else: + result = self._legacy.get(lk) + else: + value = None if maker is None else maker() + if key not in ('commands', 'exports', 'modules', 'namespaces', + 'classifiers'): + result = self._data.get(key, value) + else: + # special cases for PEP 459 + sentinel = object() + result = sentinel + d = self._data.get('extensions') + if d: + if key == 'commands': + result = d.get('python.commands', value) + elif key == 'classifiers': + d = d.get('python.details') + if d: + result = d.get(key, value) + else: + d = d.get('python.exports') + if not d: + d = self._data.get('python.exports') + if d: + result = d.get(key, value) + if result is sentinel: + result = value + elif key not in common: + result = object.__getattribute__(self, key) + elif self._legacy: + result = self._legacy.get(key) + else: + result = self._data.get(key) + return result + + def _validate_value(self, key, value, scheme=None): + if key in self.SYNTAX_VALIDATORS: + pattern, exclusions = self.SYNTAX_VALIDATORS[key] + if (scheme or self.scheme) not in exclusions: + m = pattern.match(value) + if not m: + raise MetadataInvalidError("'%s' is an invalid value for " + "the '%s' property" % (value, + key)) + + def __setattr__(self, key, value): + self._validate_value(key, value) + common = object.__getattribute__(self, 'common_keys') + mapped = object.__getattribute__(self, 'mapped_keys') + if key in mapped: + lk, _ = mapped[key] + if self._legacy: + if lk is None: + raise NotImplementedError + self._legacy[lk] = value + elif key not in ('commands', 'exports', 'modules', 'namespaces', + 'classifiers'): + self._data[key] = value + else: + # special cases for PEP 459 + d = self._data.setdefault('extensions', {}) + if key == 'commands': + d['python.commands'] = value + elif key == 'classifiers': + d = d.setdefault('python.details', {}) + d[key] = value + else: + d = d.setdefault('python.exports', {}) + d[key] = value + elif key not in common: + object.__setattr__(self, key, value) + else: + if key == 'keywords': + if isinstance(value, string_types): + value = value.strip() + if value: + value = value.split() + else: + value = [] + if self._legacy: + self._legacy[key] = value + else: + self._data[key] = value + + @property + def name_and_version(self): + return _get_name_and_version(self.name, self.version, True) + + @property + def provides(self): + if self._legacy: + result = self._legacy['Provides-Dist'] + else: + result = self._data.setdefault('provides', []) + s = '%s (%s)' % (self.name, self.version) + if s not in result: + result.append(s) + return result + + @provides.setter + def provides(self, value): + if self._legacy: + self._legacy['Provides-Dist'] = value + else: + self._data['provides'] = value + + def get_requirements(self, reqts, extras=None, env=None): + """ + Base method to get dependencies, given a set of extras + to satisfy and an optional environment context. + :param reqts: A list of sometimes-wanted dependencies, + perhaps dependent on extras and environment. + :param extras: A list of optional components being requested. + :param env: An optional environment for marker evaluation. + """ + if self._legacy: + result = reqts + else: + result = [] + extras = get_extras(extras or [], self.extras) + for d in reqts: + if 'extra' not in d and 'environment' not in d: + # unconditional + include = True + else: + if 'extra' not in d: + # Not extra-dependent - only environment-dependent + include = True + else: + include = d.get('extra') in extras + if include: + # Not excluded because of extras, check environment + marker = d.get('environment') + if marker: + include = interpret(marker, env) + if include: + result.extend(d['requires']) + for key in ('build', 'dev', 'test'): + e = ':%s:' % key + if e in extras: + extras.remove(e) + # A recursive call, but it should terminate since 'test' + # has been removed from the extras + reqts = self._data.get('%s_requires' % key, []) + result.extend(self.get_requirements(reqts, extras=extras, + env=env)) + return result + + @property + def dictionary(self): + if self._legacy: + return self._from_legacy() + return self._data + + @property + def dependencies(self): + if self._legacy: + raise NotImplementedError + else: + return extract_by_key(self._data, self.DEPENDENCY_KEYS) + + @dependencies.setter + def dependencies(self, value): + if self._legacy: + raise NotImplementedError + else: + self._data.update(value) + + def _validate_mapping(self, mapping, scheme): + if mapping.get('metadata_version') != self.METADATA_VERSION: + raise MetadataUnrecognizedVersionError() + missing = [] + for key, exclusions in self.MANDATORY_KEYS.items(): + if key not in mapping: + if scheme not in exclusions: + missing.append(key) + if missing: + msg = 'Missing metadata items: %s' % ', '.join(missing) + raise MetadataMissingError(msg) + for k, v in mapping.items(): + self._validate_value(k, v, scheme) + + def validate(self): + if self._legacy: + missing, warnings = self._legacy.check(True) + if missing or warnings: + logger.warning('Metadata: missing: %s, warnings: %s', + missing, warnings) + else: + self._validate_mapping(self._data, self.scheme) + + def todict(self): + if self._legacy: + return self._legacy.todict(True) + else: + result = extract_by_key(self._data, self.INDEX_KEYS) + return result + + def _from_legacy(self): + assert self._legacy and not self._data + result = { + 'metadata_version': self.METADATA_VERSION, + 'generator': self.GENERATOR, + } + lmd = self._legacy.todict(True) # skip missing ones + for k in ('name', 'version', 'license', 'summary', 'description', + 'classifier'): + if k in lmd: + if k == 'classifier': + nk = 'classifiers' + else: + nk = k + result[nk] = lmd[k] + kw = lmd.get('Keywords', []) + if kw == ['']: + kw = [] + result['keywords'] = kw + keys = (('requires_dist', 'run_requires'), + ('setup_requires_dist', 'build_requires')) + for ok, nk in keys: + if ok in lmd and lmd[ok]: + result[nk] = [{'requires': lmd[ok]}] + result['provides'] = self.provides + author = {} + maintainer = {} + return result + + LEGACY_MAPPING = { + 'name': 'Name', + 'version': 'Version', + 'license': 'License', + 'summary': 'Summary', + 'description': 'Description', + 'classifiers': 'Classifier', + } + + def _to_legacy(self): + def process_entries(entries): + reqts = set() + for e in entries: + extra = e.get('extra') + env = e.get('environment') + rlist = e['requires'] + for r in rlist: + if not env and not extra: + reqts.add(r) + else: + marker = '' + if extra: + marker = 'extra == "%s"' % extra + if env: + if marker: + marker = '(%s) and %s' % (env, marker) + else: + marker = env + reqts.add(';'.join((r, marker))) + return reqts + + assert self._data and not self._legacy + result = LegacyMetadata() + nmd = self._data + for nk, ok in self.LEGACY_MAPPING.items(): + if nk in nmd: + result[ok] = nmd[nk] + r1 = process_entries(self.run_requires + self.meta_requires) + r2 = process_entries(self.build_requires + self.dev_requires) + if self.extras: + result['Provides-Extra'] = sorted(self.extras) + result['Requires-Dist'] = sorted(r1) + result['Setup-Requires-Dist'] = sorted(r2) + # TODO: other fields such as contacts + return result + + def write(self, path=None, fileobj=None, legacy=False, skip_unknown=True): + if [path, fileobj].count(None) != 1: + raise ValueError('Exactly one of path and fileobj is needed') + self.validate() + if legacy: + if self._legacy: + legacy_md = self._legacy + else: + legacy_md = self._to_legacy() + if path: + legacy_md.write(path, skip_unknown=skip_unknown) + else: + legacy_md.write_file(fileobj, skip_unknown=skip_unknown) + else: + if self._legacy: + d = self._from_legacy() + else: + d = self._data + if fileobj: + json.dump(d, fileobj, ensure_ascii=True, indent=2, + sort_keys=True) + else: + with codecs.open(path, 'w', 'utf-8') as f: + json.dump(d, f, ensure_ascii=True, indent=2, + sort_keys=True) + + def add_requirements(self, requirements): + if self._legacy: + self._legacy.add_requirements(requirements) + else: + run_requires = self._data.setdefault('run_requires', []) + always = None + for entry in run_requires: + if 'environment' not in entry and 'extra' not in entry: + always = entry + break + if always is None: + always = { 'requires': requirements } + run_requires.insert(0, always) + else: + rset = set(always['requires']) | set(requirements) + always['requires'] = sorted(rset) + + def __repr__(self): + name = self.name or '(no name)' + version = self.version or 'no version' + return '<%s %s %s (%s)>' % (self.__class__.__name__, + self.metadata_version, name, version) diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/metadata.pyc b/env/lib/python2.7/site-packages/pip/_vendor/distlib/metadata.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b2330943c99bb3f9c772bab7ac948992acc234dd GIT binary patch literal 34712 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 _frozen_importlib_external + try: + import _frozen_importlib_external as _fi + except ImportError: + import _frozen_importlib as _fi + _finder_registry[_fi.SourceFileLoader] = ResourceFinder + _finder_registry[_fi.FileFinder] = ResourceFinder + del _fi +except (ImportError, AttributeError): + pass + + +def register_finder(loader, finder_maker): + _finder_registry[type(loader)] = finder_maker + +_finder_cache = {} + + +def finder(package): + """ + Return a resource finder for a package. + :param package: The name of the package. + :return: A :class:`ResourceFinder` instance for the package. + """ + if package in _finder_cache: + result = _finder_cache[package] + else: + if package not in sys.modules: + __import__(package) + module = sys.modules[package] + path = getattr(module, '__path__', None) + if path is None: + raise DistlibException('You cannot get a finder for a module, ' + 'only for a package') + loader = getattr(module, '__loader__', None) + finder_maker = _finder_registry.get(type(loader)) + if finder_maker is None: + raise DistlibException('Unable to locate finder for %r' % package) + result = finder_maker(module) + _finder_cache[package] = result + return result + + +_dummy_module = types.ModuleType(str('__dummy__')) + + +def finder_for_path(path): + """ + Return a resource finder for a path, which should represent a container. + + :param path: The path. + :return: A :class:`ResourceFinder` instance for the path. + """ + result = None + # calls any path hooks, gets importer into cache + pkgutil.get_importer(path) + loader = sys.path_importer_cache.get(path) + finder = _finder_registry.get(type(loader)) + if finder: + module = _dummy_module + module.__file__ = os.path.join(path, '') + module.__loader__ = loader + result = finder(module) + return result diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/resources.pyc b/env/lib/python2.7/site-packages/pip/_vendor/distlib/resources.pyc new file mode 100644 index 0000000000000000000000000000000000000000..565bb1797f07e8aaf823b4f2190a28cb164d7a57 GIT binary patch literal 13682 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 + + + + + + + + + + + +'''.strip() + +# check if Python is called on the first line with this expression +FIRST_LINE_RE = re.compile(b'^#!.*pythonw?[0-9.]*([ \t].*)?$') +SCRIPT_TEMPLATE = '''# -*- coding: utf-8 -*- +if __name__ == '__main__': + import sys, re + + def _resolve(module, func): + __import__(module) + mod = sys.modules[module] + parts = func.split('.') + result = getattr(mod, parts.pop(0)) + for p in parts: + result = getattr(result, p) + return result + + try: + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + + func = _resolve('%(module)s', '%(func)s') + rc = func() # None interpreted as 0 + except Exception as e: # only supporting Python >= 2.6 + sys.stderr.write('%%s\\n' %% e) + rc = 1 + sys.exit(rc) +''' + + +def _enquote_executable(executable): + if ' ' in executable: + # make sure we quote only the executable in case of env + # for example /usr/bin/env "/dir with spaces/bin/jython" + # instead of "/usr/bin/env /dir with spaces/bin/jython" + # otherwise whole + if executable.startswith('/usr/bin/env '): + env, _executable = executable.split(' ', 1) + if ' ' in _executable and not _executable.startswith('"'): + executable = '%s "%s"' % (env, _executable) + else: + if not executable.startswith('"'): + executable = '"%s"' % executable + return executable + + +class ScriptMaker(object): + """ + A class to copy or create scripts from source scripts or callable + specifications. + """ + script_template = SCRIPT_TEMPLATE + + executable = None # for shebangs + + def __init__(self, source_dir, target_dir, add_launchers=True, + dry_run=False, fileop=None): + self.source_dir = source_dir + self.target_dir = target_dir + self.add_launchers = add_launchers + self.force = False + self.clobber = False + # It only makes sense to set mode bits on POSIX. + self.set_mode = (os.name == 'posix') or (os.name == 'java' and + os._name == 'posix') + self.variants = set(('', 'X.Y')) + self._fileop = fileop or FileOperator(dry_run) + + self._is_nt = os.name == 'nt' or ( + os.name == 'java' and os._name == 'nt') + + def _get_alternate_executable(self, executable, options): + if options.get('gui', False) and self._is_nt: # pragma: no cover + dn, fn = os.path.split(executable) + fn = fn.replace('python', 'pythonw') + executable = os.path.join(dn, fn) + return executable + + if sys.platform.startswith('java'): # pragma: no cover + def _is_shell(self, executable): + """ + Determine if the specified executable is a script + (contains a #! line) + """ + try: + with open(executable) as fp: + return fp.read(2) == '#!' + except (OSError, IOError): + logger.warning('Failed to open %s', executable) + return False + + def _fix_jython_executable(self, executable): + if self._is_shell(executable): + # Workaround for Jython is not needed on Linux systems. + import java + + if java.lang.System.getProperty('os.name') == 'Linux': + return executable + elif executable.lower().endswith('jython.exe'): + # Use wrapper exe for Jython on Windows + return executable + return '/usr/bin/env %s' % executable + + def _get_shebang(self, encoding, post_interp=b'', options=None): + enquote = True + if self.executable: + executable = self.executable + enquote = False # assume this will be taken care of + elif not sysconfig.is_python_build(): + executable = get_executable() + elif in_venv(): # pragma: no cover + executable = os.path.join(sysconfig.get_path('scripts'), + 'python%s' % sysconfig.get_config_var('EXE')) + else: # pragma: no cover + executable = os.path.join( + sysconfig.get_config_var('BINDIR'), + 'python%s%s' % (sysconfig.get_config_var('VERSION'), + sysconfig.get_config_var('EXE'))) + if options: + executable = self._get_alternate_executable(executable, options) + + if sys.platform.startswith('java'): # pragma: no cover + executable = self._fix_jython_executable(executable) + # Normalise case for Windows + executable = os.path.normcase(executable) + # If the user didn't specify an executable, it may be necessary to + # cater for executable paths with spaces (not uncommon on Windows) + if enquote: + executable = _enquote_executable(executable) + # Issue #51: don't use fsencode, since we later try to + # check that the shebang is decodable using utf-8. + executable = executable.encode('utf-8') + # in case of IronPython, play safe and enable frames support + if (sys.platform == 'cli' and '-X:Frames' not in post_interp + and '-X:FullFrames' not in post_interp): # pragma: no cover + post_interp += b' -X:Frames' + shebang = b'#!' + executable + post_interp + b'\n' + # Python parser starts to read a script using UTF-8 until + # it gets a #coding:xxx cookie. The shebang has to be the + # first line of a file, the #coding:xxx cookie cannot be + # written before. So the shebang has to be decodable from + # UTF-8. + try: + shebang.decode('utf-8') + except UnicodeDecodeError: # pragma: no cover + raise ValueError( + 'The shebang (%r) is not decodable from utf-8' % shebang) + # If the script is encoded to a custom encoding (use a + # #coding:xxx cookie), the shebang has to be decodable from + # the script encoding too. + if encoding != 'utf-8': + try: + shebang.decode(encoding) + except UnicodeDecodeError: # pragma: no cover + raise ValueError( + 'The shebang (%r) is not decodable ' + 'from the script encoding (%r)' % (shebang, encoding)) + return shebang + + def _get_script_text(self, entry): + return self.script_template % dict(module=entry.prefix, + func=entry.suffix) + + manifest = _DEFAULT_MANIFEST + + def get_manifest(self, exename): + base = os.path.basename(exename) + return self.manifest % base + + def _write_script(self, names, shebang, script_bytes, filenames, ext): + use_launcher = self.add_launchers and self._is_nt + linesep = os.linesep.encode('utf-8') + if not use_launcher: + script_bytes = shebang + linesep + script_bytes + else: # pragma: no cover + if ext == 'py': + launcher = self._get_launcher('t') + else: + launcher = self._get_launcher('w') + stream = BytesIO() + with ZipFile(stream, 'w') as zf: + zf.writestr('__main__.py', script_bytes) + zip_data = stream.getvalue() + script_bytes = launcher + shebang + linesep + zip_data + for name in names: + outname = os.path.join(self.target_dir, name) + if use_launcher: # pragma: no cover + n, e = os.path.splitext(outname) + if e.startswith('.py'): + outname = n + outname = '%s.exe' % outname + try: + self._fileop.write_binary_file(outname, script_bytes) + except Exception: + # Failed writing an executable - it might be in use. + logger.warning('Failed to write executable - trying to ' + 'use .deleteme logic') + dfname = '%s.deleteme' % outname + if os.path.exists(dfname): + os.remove(dfname) # Not allowed to fail here + os.rename(outname, dfname) # nor here + self._fileop.write_binary_file(outname, script_bytes) + logger.debug('Able to replace executable using ' + '.deleteme logic') + try: + os.remove(dfname) + except Exception: + pass # still in use - ignore error + else: + if self._is_nt and not outname.endswith('.' + ext): # pragma: no cover + outname = '%s.%s' % (outname, ext) + if os.path.exists(outname) and not self.clobber: + logger.warning('Skipping existing file %s', outname) + continue + self._fileop.write_binary_file(outname, script_bytes) + if self.set_mode: + self._fileop.set_executable_mode([outname]) + filenames.append(outname) + + def _make_script(self, entry, filenames, options=None): + post_interp = b'' + if options: + args = options.get('interpreter_args', []) + if args: + args = ' %s' % ' '.join(args) + post_interp = args.encode('utf-8') + shebang = self._get_shebang('utf-8', post_interp, options=options) + script = self._get_script_text(entry).encode('utf-8') + name = entry.name + scriptnames = set() + if '' in self.variants: + scriptnames.add(name) + if 'X' in self.variants: + scriptnames.add('%s%s' % (name, sys.version[0])) + if 'X.Y' in self.variants: + scriptnames.add('%s-%s' % (name, sys.version[:3])) + if options and options.get('gui', False): + ext = 'pyw' + else: + ext = 'py' + self._write_script(scriptnames, shebang, script, filenames, ext) + + def _copy_script(self, script, filenames): + adjust = False + script = os.path.join(self.source_dir, convert_path(script)) + outname = os.path.join(self.target_dir, os.path.basename(script)) + if not self.force and not self._fileop.newer(script, outname): + logger.debug('not copying %s (up-to-date)', script) + return + + # 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, 'rb') + except IOError: # pragma: no cover + if not self.dry_run: + raise + f = None + else: + first_line = f.readline() + if not first_line: # pragma: no cover + logger.warning('%s: %s is an empty file (skipping)', + self.get_command_name(), script) + return + + match = FIRST_LINE_RE.match(first_line.replace(b'\r\n', b'\n')) + if match: + adjust = True + post_interp = match.group(1) or b'' + + if not adjust: + if f: + f.close() + self._fileop.copy_file(script, outname) + if self.set_mode: + self._fileop.set_executable_mode([outname]) + filenames.append(outname) + else: + logger.info('copying and adjusting %s -> %s', script, + self.target_dir) + if not self._fileop.dry_run: + encoding, lines = detect_encoding(f.readline) + f.seek(0) + shebang = self._get_shebang(encoding, post_interp) + if b'pythonw' in first_line: # pragma: no cover + ext = 'pyw' + else: + ext = 'py' + n = os.path.basename(outname) + self._write_script([n], shebang, f.read(), filenames, ext) + if f: + f.close() + + @property + def dry_run(self): + return self._fileop.dry_run + + @dry_run.setter + def dry_run(self, value): + self._fileop.dry_run = value + + if os.name == 'nt' or (os.name == 'java' and os._name == 'nt'): # pragma: no cover + # Executable launcher support. + # Launchers are from https://bitbucket.org/vinay.sajip/simple_launcher/ + + def _get_launcher(self, kind): + if struct.calcsize('P') == 8: # 64-bit + bits = '64' + else: + bits = '32' + name = '%s%s.exe' % (kind, bits) + # Issue 31: don't hardcode an absolute package name, but + # determine it relative to the current package + distlib_package = __name__.rsplit('.', 1)[0] + result = finder(distlib_package).find(name).bytes + return result + + # Public API follows + + def make(self, specification, options=None): + """ + Make a script. + + :param specification: The specification, which is either a valid export + entry specification (to make a script from a + callable) or a filename (to make a script by + copying from a source location). + :param options: A dictionary of options controlling script generation. + :return: A list of all absolute pathnames written to. + """ + filenames = [] + entry = get_export_entry(specification) + if entry is None: + self._copy_script(specification, filenames) + else: + self._make_script(entry, filenames, options=options) + return filenames + + def make_multiple(self, specifications, options=None): + """ + Take a list of specifications and make scripts from them, + :param specifications: A list of specifications. + :return: A list of all absolute pathnames written to, + """ + filenames = [] + for specification in specifications: + filenames.extend(self.make(specification, options)) + return filenames diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/scripts.pyc b/env/lib/python2.7/site-packages/pip/_vendor/distlib/scripts.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3b76ffdd0f249ef6d6c41ee9f61784430a30408d GIT binary patch literal 12338 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≫*an|s~C9@ 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�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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/t64.exe b/env/lib/python2.7/site-packages/pip/_vendor/distlib/t64.exe new file mode 100644 index 0000000000000000000000000000000000000000..a401b59d602d4823e0a69138a0268f0bfbec3de2 GIT binary patch literal 97792 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

glbnuCDs(r>mVmR+fI>`{mhynxBLJ z&%e=BehDJPP!tm-icSF>wPkk7v`X_ytgbDPAU#?fhSD884yC>@!B z^%G+Qe{dcY2+jTc%4sAusiRqX zLHNHZ*6~_;QMfM^A~bX9@<6sbP`1Fz_FsHQ&oz(P0?mN1L(>IL$GAhquQd6Y$8?bz z(@Uc4&&DY>1Wh;qiJ_)FBnU1(sgH!WL>R|A^W)16hvnQx`SH}H;*|>Th?h_|uGhC4 zBU_D?aAU52@=C$!e|kBO2`XwCp@~pZ7@BqwEd*nCuB1b|M~ZjhB=0WDF77~+rgy-r zWl+|uZ)!MFwRe;I67nATfsP-rYW-Ap>U0}e8eSRJ`#LyL9jVTkP=t(P z|Cf%*fj+LmgzNJXkUNEn;L`X(YfSaBuW ztK10p&<2Hl8k`9?4H6@S$VtaZ>oct2Aj$33T$JyLh=u_OxeN8BsrYW3Tbu8gNfljG z%UBN3k4$QJ#Hz^FjB1mim`f|y@xi_3-aY)JtoULdq#?{n)2ljI=UHh5j&z=WZMD|) z|C}1xn=%dO7PLwak$%|EQuE(-gwBX|#C;&nzBPqVkI_txQ0S~lDW{(nm9gB+@+_AY z734X3O_$^0vC|@7+Q1siJn1yUtV%=6yDW=VCqgzGBV6-5*$=RN9+W;u)t9LHO+dHJA7&*o((R2~SmATOd$*yo1%dat!a@DGG^|o44%W6w4Ys}hJA7kaJJL+A` zE%lLF(OYU0yC3RxwW8M1RyVNIf%IK{8`L_^b|CMHhBYlO1+D>+@3U`62;24jBnzt; zOX<@d^IkhE)D1idoEI)nc@luS)tAS)K{Tvvg`4JkkRXpA3yGrhtlU1I?WvqUV)&AiPa8M{R9+%M8&ZCb#k}GfdOM3z3V*hDijuv zq7(4r(9oe1#RRGoNJJhMA<)IJwt5W7PN6YHrgN7G5|%tKOhW5oZ zNs#7ik8B*h9fdnl6Ioh8lGbD?FI&%ar zx!a(xKrIX!v|l50Qfb(1YGn4!$V{@F&AvNhh7Ft4u}xX=r;%x$X3a0M)ifdRJNpjh zf61CN;wfZ!T_fmCLzQkMmqh7IDA`Oj`I`#y9=3=D(9!1A;pDC(>5vc|&DR({yuoMo zm_XE*^ohd{=l~C=4MAE`QK$(j&^<@R(@HZz#kV7~F%{3xm^DU>-L8}ex7EkVvBMYu z8x;KL{C9xb&V*O!p7Uy@(oA^u*2rw^)y7D}ad_x($X~?asl%}?T zWVIkm9*XsnB!xSQ-+AlHwTcITC=>PCNQ12|$X0L==j%M-B!us52ERV6%zz{LL$YgL zjDMA#s?P(6%ba*to1hill6@rA0(B~*=aWY0j*TvkjR5cL7c@p2iw~E?hreYZtPMBL zv$836m&NW4S*!ZY&at;b96nh-ctyeoKGZmTNVfaxphF+S_wC-RI9;}iI$Ev-1)q-F z*3a!de@{A_ab}OX!$;A$49EoT$ssSjz_-2#e8d%e>~AIkPh5p~9|fbU%Zky>HCHMf zbbZq;ZMrty*U7uxYdsvh*G*Bw6i7uA|LbYYb*A8B@Jw;xg0syP>5PueH`2ivNLK7b z;oyTnfS6-rb&O8wnhou7A&cld^rP?#op0uOnitDh10BfO@n(HN@qiLR7=g`ZK*5jl3K*u zQCHQX!}1cOk#^acw7ROgY6df37yWC}^6Xi4MdT~$n(9H~dCRpGr^j?xcL~Of$Z_C3 zFHVCZ;w}Temls;fyUUKgfG*O@xH|AR%i)r%LqpBhw|cx&<;!ki3tVhG7boptgroup + # element, or if there is no more content in the parent + # element. + if type == "StartTag": + return next["name"] in ('option', 'optgroup') + else: + return type == "EndTag" or type is None + elif tagname in ('rt', 'rp'): + # An rt element's end tag may be omitted if the rt element is + # immediately followed by an rt or rp element, or if there is + # no more content in the parent element. + # An rp element's end tag may be omitted if the rp element is + # immediately followed by an rt or rp element, or if there is + # no more content in the parent element. + if type == "StartTag": + return next["name"] in ('rt', 'rp') + else: + return type == "EndTag" or type is None + elif tagname == 'colgroup': + # A colgroup element's end tag may be omitted if the colgroup + # element is not immediately followed by a space character or + # a comment. + if type in ("Comment", "SpaceCharacters"): + return False + elif type == "StartTag": + # XXX: we also look for an immediately following colgroup + # element. See is_optional_start. + return next["name"] != 'colgroup' + else: + return True + elif tagname in ('thead', 'tbody'): + # A thead element's end tag may be omitted if the thead element + # is immediately followed by a tbody or tfoot element. + # A tbody element's end tag may be omitted if the tbody element + # is immediately followed by a tbody or tfoot element, or if + # there is no more content in the parent element. + # A tfoot element's end tag may be omitted if the tfoot element + # is immediately followed by a tbody element, or if there is no + # more content in the parent element. + # XXX: we never omit the end tag when the following element is + # a tbody. See is_optional_start. + if type == "StartTag": + return next["name"] in ['tbody', 'tfoot'] + elif tagname == 'tbody': + return type == "EndTag" or type is None + else: + return False + elif tagname == 'tfoot': + # A tfoot element's end tag may be omitted if the tfoot element + # is immediately followed by a tbody element, or if there is no + # more content in the parent element. + # XXX: we never omit the end tag when the following element is + # a tbody. See is_optional_start. + if type == "StartTag": + return next["name"] == 'tbody' + else: + return type == "EndTag" or type is None + elif tagname in ('td', 'th'): + # A td element's end tag may be omitted if the td element is + # immediately followed by a td or th element, or if there is + # no more content in the parent element. + # A th element's end tag may be omitted if the th element is + # immediately followed by a td or th element, or if there is + # no more content in the parent element. + if type == "StartTag": + return next["name"] in ('td', 'th') + else: + return type == "EndTag" or type is None + return False diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/optionaltags.pyc b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/optionaltags.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b0abd903f6214ba59c4acfa8e5e75735804824e7 GIT binary patch literal 4362 zcmds4y>A>v6n}GjKF9VsaXttbMWjOqO0W|0O-Mq%1dWB(QKDFcV|}}4Z@hPV*_{os zWFtihhzbdXE*%XO4N%chL4)Y2_ygz=1%iV2`_1`oZ4wfsq#@4E&d$8|=6(L&ocG)0 z_^&6wxZ0BbKTqFh-m6IdmQF(bZzK`v7@0THsmOdqI-bmXV#11qo+MT2jL7_mepe+L zk?S>S8wp3`uE-sctMfGpYckguRcSGfXy5?5O^0A1Pm{t%&A8J`Gi$f#S{UDq^EmC= zDg7wAaVrg@W)j;d3z9rGy4b*At2!(Md1Pxkxfmx(Ft7jwXJNrUokRk~)ehB1bysUJ z@kF)9qzW4_84-W3QB{T(*fHS;#4PDYsNZWw)+%!Agsh5OH*)^kjI4RGO6kjEk{y-R z3O-joX?t?nbOm3^q6^AYo<+o~He)-znO@x6zfiV|1Hvt&ET;Ur#|Y16m)Oxm*=mLRdgV*W~Rg?`VIIE*qxHb=O`jGHM_H``53XLUnQ zLJh>I1yA1B$*s@mKW4}IYahuwbdGunzGQ%=*Q&CrfvL!HMY4dao=oSL`;G@yRi>S% z?|4$r?t$jAxp7Z!Op0Vw{CpX|3AI@XquZPhe#|l*F zMz<^{(BQQa#f-bP|oLsfE; z_Zm%~Y&%An*;mwk~~66D3w4{^!z8C+gY)m^jx9 zTG6?sAPZU=m7K}86b0eNTtpNubb59Li8)NeVQNDDLK?1cGjC;a&lU(@ZdVeQ*R3>J z%+jJ)0FL#8+m<{av^L#|O|g^m*cl>ep513;N`TAYRL^?kS2^>!wOf zt=BlKZmo=(`bd5K?d?{~ts1PhU^`6Os}GCxLk%0USBunTZ@)-g*E-D1)gslbJu)cL zqg-9)s;fJn+!I7xlndzV$nf4GsYI5yXaVi6pvI4p{o4}zr|azDaqJNZSa;diq;jIZ zDv4t8es3Vo)#D%BJVDXF48*RAoR1MzoG~otP>l&sZel+~s=hIA zk^Oa^_aN{&Z-7~~HRoQ9t4dbl;zUfX*cvw4*l2C81BnP-g8G*Z<_~F(4~iWq&;xK|1$J0#UCdDoZHZG z`&j^YtrytPr-QtB=+YzV*YQ0dk4hUG(`tB<9po017Q=7}M*5KJ@5Hb}2mV^(72C(f z_GvfpNj>9=K6zV*K?5JJYjd79Xy03Ln@0N{t(#FJ{lC%mUA%RN)UNG&Z1xi+PDm-y zH4rfVerPrUcFm>*KsB44G%OPR/ + (?P[-a-zA-Z0-9.]+/[-a-zA-Z0-9.]+) + # Match any character set and encoding + (?:(?:;charset=(?:[-a-zA-Z0-9]+)(?:;(?:base64))?) + |(?:;(?:base64))?(?:;charset=(?:[-a-zA-Z0-9]+))?) + # Assume the rest is data + ,.* + $ + ''', + re.VERBOSE) + + +class Filter(base.Filter): + """ sanitization of XHTML+MathML+SVG and of inline style attributes.""" + def __init__(self, + source, + allowed_elements=allowed_elements, + allowed_attributes=allowed_attributes, + allowed_css_properties=allowed_css_properties, + allowed_css_keywords=allowed_css_keywords, + allowed_svg_properties=allowed_svg_properties, + allowed_protocols=allowed_protocols, + allowed_content_types=allowed_content_types, + attr_val_is_uri=attr_val_is_uri, + svg_attr_val_allows_ref=svg_attr_val_allows_ref, + svg_allow_local_href=svg_allow_local_href): + super(Filter, self).__init__(source) + self.allowed_elements = allowed_elements + self.allowed_attributes = allowed_attributes + self.allowed_css_properties = allowed_css_properties + self.allowed_css_keywords = allowed_css_keywords + self.allowed_svg_properties = allowed_svg_properties + self.allowed_protocols = allowed_protocols + self.allowed_content_types = allowed_content_types + self.attr_val_is_uri = attr_val_is_uri + self.svg_attr_val_allows_ref = svg_attr_val_allows_ref + self.svg_allow_local_href = svg_allow_local_href + + def __iter__(self): + for token in base.Filter.__iter__(self): + token = self.sanitize_token(token) + if token: + yield token + + # Sanitize the +html+, escaping all elements not in ALLOWED_ELEMENTS, and + # stripping out all # attributes not in ALLOWED_ATTRIBUTES. Style + # attributes are parsed, and a restricted set, # specified by + # ALLOWED_CSS_PROPERTIES and ALLOWED_CSS_KEYWORDS, are allowed through. + # attributes in ATTR_VAL_IS_URI are scanned, and only URI schemes specified + # in ALLOWED_PROTOCOLS are allowed. + # + # sanitize_html('') + # => <script> do_nasty_stuff() </script> + # sanitize_html('Click here for $100') + # => Click here for $100 + def sanitize_token(self, token): + + # accommodate filters which use token_type differently + token_type = token["type"] + if token_type in ("StartTag", "EndTag", "EmptyTag"): + name = token["name"] + namespace = token["namespace"] + if ((namespace, name) in self.allowed_elements or + (namespace is None and + (namespaces["html"], name) in self.allowed_elements)): + return self.allowed_token(token) + else: + return self.disallowed_token(token) + elif token_type == "Comment": + pass + else: + return token + + def allowed_token(self, token): + if "data" in token: + attrs = token["data"] + attr_names = set(attrs.keys()) + + # Remove forbidden attributes + for to_remove in (attr_names - self.allowed_attributes): + del token["data"][to_remove] + attr_names.remove(to_remove) + + # Remove attributes with disallowed URL values + for attr in (attr_names & self.attr_val_is_uri): + assert attr in attrs + # I don't have a clue where this regexp comes from or why it matches those + # characters, nor why we call unescape. I just know it's always been here. + # Should you be worried by this comment in a sanitizer? Yes. On the other hand, all + # this will do is remove *more* than it otherwise would. + val_unescaped = re.sub("[`\x00-\x20\x7f-\xa0\s]+", '', + unescape(attrs[attr])).lower() + # remove replacement characters from unescaped characters + val_unescaped = val_unescaped.replace("\ufffd", "") + try: + uri = urlparse.urlparse(val_unescaped) + except ValueError: + uri = None + del attrs[attr] + if uri and uri.scheme: + if uri.scheme not in self.allowed_protocols: + del attrs[attr] + if uri.scheme == 'data': + m = data_content_type.match(uri.path) + if not m: + del attrs[attr] + elif m.group('content_type') not in self.allowed_content_types: + del attrs[attr] + + for attr in self.svg_attr_val_allows_ref: + if attr in attrs: + attrs[attr] = re.sub(r'url\s*\(\s*[^#\s][^)]+?\)', + ' ', + unescape(attrs[attr])) + if (token["name"] in self.svg_allow_local_href and + (namespaces['xlink'], 'href') in attrs and re.search('^\s*[^#\s].*', + attrs[(namespaces['xlink'], 'href')])): + del attrs[(namespaces['xlink'], 'href')] + if (None, 'style') in attrs: + attrs[(None, 'style')] = self.sanitize_css(attrs[(None, 'style')]) + token["data"] = attrs + return token + + def disallowed_token(self, token): + token_type = token["type"] + if token_type == "EndTag": + token["data"] = "" % token["name"] + elif token["data"]: + assert token_type in ("StartTag", "EmptyTag") + attrs = [] + for (ns, name), v in token["data"].items(): + attrs.append(' %s="%s"' % (name if ns is None else "%s:%s" % (prefixes[ns], name), escape(v))) + token["data"] = "<%s%s>" % (token["name"], ''.join(attrs)) + else: + token["data"] = "<%s>" % token["name"] + if token.get("selfClosing"): + token["data"] = token["data"][:-1] + "/>" + + token["type"] = "Characters" + + del token["name"] + return token + + def sanitize_css(self, style): + # disallow urls + style = re.compile('url\s*\(\s*[^\s)]+?\s*\)\s*').sub(' ', style) + + # gauntlet + if not re.match("""^([:,;#%.\sa-zA-Z0-9!]|\w-\w|'[\s\w]+'|"[\s\w]+"|\([\d,\s]+\))*$""", style): + return '' + if not re.match("^\s*([-\w]+\s*:[^:;]*(;\s*|$))*$", style): + return '' + + clean = [] + for prop, value in re.findall("([-\w]+)\s*:\s*([^:;]*)", style): + if not value: + continue + if prop.lower() in self.allowed_css_properties: + clean.append(prop + ': ' + value + ';') + elif prop.split('-')[0].lower() in ['background', 'border', 'margin', + 'padding']: + for keyword in value.split(): + if keyword not in self.allowed_css_keywords and \ + not re.match("^(#[0-9a-f]+|rgb\(\d+%?,\d*%?,?\d*%?\)?|\d{0,2}\.?\d{0,2}(cm|em|ex|in|mm|pc|pt|px|%|,|\))?)$", keyword): # noqa + break + else: + clean.append(prop + ': ' + value + ';') + elif prop.lower() in self.allowed_svg_properties: + clean.append(prop + ': ' + value + ';') + + return ' '.join(clean) diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/sanitizer.pyc b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/sanitizer.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e5a42374f535441b501e1bb7d7d66f5343b2a4df GIT binary patch literal 25715 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/whitespace.py b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/whitespace.py new file mode 100644 index 0000000..8921052 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/whitespace.py @@ -0,0 +1,38 @@ +from __future__ import absolute_import, division, unicode_literals + +import re + +from . import base +from ..constants import rcdataElements, spaceCharacters +spaceCharacters = "".join(spaceCharacters) + +SPACES_REGEX = re.compile("[%s]+" % spaceCharacters) + + +class Filter(base.Filter): + + spacePreserveElements = frozenset(["pre", "textarea"] + list(rcdataElements)) + + def __iter__(self): + preserve = 0 + for token in base.Filter.__iter__(self): + type = token["type"] + if type == "StartTag" \ + and (preserve or token["name"] in self.spacePreserveElements): + preserve += 1 + + elif type == "EndTag" and preserve: + preserve -= 1 + + elif not preserve and type == "SpaceCharacters" and token["data"]: + # Test on token["data"] above to not introduce spaces where there were not + token["data"] = " " + + elif not preserve and type == "Characters": + token["data"] = collapse_spaces(token["data"]) + + yield token + + +def collapse_spaces(text): + return SPACES_REGEX.sub(' ', text) diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/whitespace.pyc b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/whitespace.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b820c2c244561996b34a19a5a259aa3480f142d6 GIT binary patch literal 1635 zcmb_cO>PrQ5U%cVCbnY(0s%4ti4Bqk3SJ>tLJ1ZI^-eV9N#xrd)rss$0p75h& z1!v#{NZf%#Z~?Bsjtfv<+rfHoohVc8uBxt|@2hU_cfb2<=iBpyR(~GY)1psvL1~vh6MZ6j9`-5S!X`X}l+$64OUqF25Y^hV zEaI6dbz@bOT#yo^cPRWegr(Xd7-!m zK}xQGeJx3Oz=6BJ30?FJ5!DHVs(IoGv#z#m%MX59ir+o?LC~#F=Y7@g%IC ziMIp#CnaWli~E~6${X};KU7OZri_Pu8ozehBF>d#wE+*~B836NG5sHF2mxvv;CQ_O zifc}XpfdpM0m8URiXu!+6xoZcaWk-AE2HW|^`GfTO0DC{sK~jPp(_=_C_Q(9m`Qic zB8e^E@L-+vGh_`pVfJ`6vUxSCvTA$QWIEjr?EYj=L*c&YP!(xej}C0E@91ncn!Bkp zqjv{fsY`#m`Vee#APm2`!h(b^2BIr^Ec^02f7fJRUJ#e%5Pqvh0U|dFOrj_+(?(<4 z;qAOGKdQng>q^#{u>ooiFqtmXx`R`013ci)8|3rlRp~AO$OBEgxB%#KIrn@GF!y*T zaFZuXl9#s{L8ki;cgNEx7(W^RYjNH*v-LB8E4J?A^q2sEH;@c9kr-kuS0K+D+tdtl z084&8HyHc@S1nm& literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/html5parser.py b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/html5parser.py new file mode 100644 index 0000000..f7043cb --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/html5parser.py @@ -0,0 +1,2733 @@ +from __future__ import absolute_import, division, unicode_literals +from pip._vendor.six import with_metaclass, viewkeys, PY3 + +import types + +try: + from collections import OrderedDict +except ImportError: + from pip._vendor.ordereddict import OrderedDict + +from . import _inputstream +from . import _tokenizer + +from . import treebuilders +from .treebuilders.base import Marker + +from . import _utils +from .constants import ( + spaceCharacters, asciiUpper2Lower, + specialElements, headingElements, cdataElements, rcdataElements, + tokenTypes, tagTokenTypes, + namespaces, + htmlIntegrationPointElements, mathmlTextIntegrationPointElements, + adjustForeignAttributes as adjustForeignAttributesMap, + adjustMathMLAttributes, adjustSVGAttributes, + E, + ReparseException +) + + +def parse(doc, treebuilder="etree", namespaceHTMLElements=True, **kwargs): + """Parse a string or file-like object into a tree""" + tb = treebuilders.getTreeBuilder(treebuilder) + p = HTMLParser(tb, namespaceHTMLElements=namespaceHTMLElements) + return p.parse(doc, **kwargs) + + +def parseFragment(doc, container="div", treebuilder="etree", namespaceHTMLElements=True, **kwargs): + tb = treebuilders.getTreeBuilder(treebuilder) + p = HTMLParser(tb, namespaceHTMLElements=namespaceHTMLElements) + return p.parseFragment(doc, container=container, **kwargs) + + +def method_decorator_metaclass(function): + class Decorated(type): + def __new__(meta, classname, bases, classDict): + for attributeName, attribute in classDict.items(): + if isinstance(attribute, types.FunctionType): + attribute = function(attribute) + + classDict[attributeName] = attribute + return type.__new__(meta, classname, bases, classDict) + return Decorated + + +class HTMLParser(object): + """HTML parser. Generates a tree structure from a stream of (possibly + malformed) HTML""" + + def __init__(self, tree=None, strict=False, namespaceHTMLElements=True, debug=False): + """ + strict - raise an exception when a parse error is encountered + + tree - a treebuilder class controlling the type of tree that will be + returned. Built in treebuilders can be accessed through + html5lib.treebuilders.getTreeBuilder(treeType) + """ + + # Raise an exception on the first error encountered + self.strict = strict + + if tree is None: + tree = treebuilders.getTreeBuilder("etree") + self.tree = tree(namespaceHTMLElements) + self.errors = [] + + self.phases = dict([(name, cls(self, self.tree)) for name, cls in + getPhases(debug).items()]) + + def _parse(self, stream, innerHTML=False, container="div", scripting=False, **kwargs): + + self.innerHTMLMode = innerHTML + self.container = container + self.scripting = scripting + self.tokenizer = _tokenizer.HTMLTokenizer(stream, parser=self, **kwargs) + self.reset() + + try: + self.mainLoop() + except ReparseException: + self.reset() + self.mainLoop() + + def reset(self): + self.tree.reset() + self.firstStartTag = False + self.errors = [] + self.log = [] # only used with debug mode + # "quirks" / "limited quirks" / "no quirks" + self.compatMode = "no quirks" + + if self.innerHTMLMode: + self.innerHTML = self.container.lower() + + if self.innerHTML in cdataElements: + self.tokenizer.state = self.tokenizer.rcdataState + elif self.innerHTML in rcdataElements: + self.tokenizer.state = self.tokenizer.rawtextState + elif self.innerHTML == 'plaintext': + self.tokenizer.state = self.tokenizer.plaintextState + else: + # state already is data state + # self.tokenizer.state = self.tokenizer.dataState + pass + self.phase = self.phases["beforeHtml"] + self.phase.insertHtmlElement() + self.resetInsertionMode() + else: + self.innerHTML = False # pylint:disable=redefined-variable-type + self.phase = self.phases["initial"] + + self.lastPhase = None + + self.beforeRCDataPhase = None + + self.framesetOK = True + + @property + def documentEncoding(self): + """The name of the character encoding + that was used to decode the input stream, + or :obj:`None` if that is not determined yet. + + """ + if not hasattr(self, 'tokenizer'): + return None + return self.tokenizer.stream.charEncoding[0].name + + def isHTMLIntegrationPoint(self, element): + if (element.name == "annotation-xml" and + element.namespace == namespaces["mathml"]): + return ("encoding" in element.attributes and + element.attributes["encoding"].translate( + asciiUpper2Lower) in + ("text/html", "application/xhtml+xml")) + else: + return (element.namespace, element.name) in htmlIntegrationPointElements + + def isMathMLTextIntegrationPoint(self, element): + return (element.namespace, element.name) in mathmlTextIntegrationPointElements + + def mainLoop(self): + CharactersToken = tokenTypes["Characters"] + SpaceCharactersToken = tokenTypes["SpaceCharacters"] + StartTagToken = tokenTypes["StartTag"] + EndTagToken = tokenTypes["EndTag"] + CommentToken = tokenTypes["Comment"] + DoctypeToken = tokenTypes["Doctype"] + ParseErrorToken = tokenTypes["ParseError"] + + for token in self.normalizedTokens(): + prev_token = None + new_token = token + while new_token is not None: + prev_token = new_token + currentNode = self.tree.openElements[-1] if self.tree.openElements else None + currentNodeNamespace = currentNode.namespace if currentNode else None + currentNodeName = currentNode.name if currentNode else None + + type = new_token["type"] + + if type == ParseErrorToken: + self.parseError(new_token["data"], new_token.get("datavars", {})) + new_token = None + else: + if (len(self.tree.openElements) == 0 or + currentNodeNamespace == self.tree.defaultNamespace or + (self.isMathMLTextIntegrationPoint(currentNode) and + ((type == StartTagToken and + token["name"] not in frozenset(["mglyph", "malignmark"])) or + type in (CharactersToken, SpaceCharactersToken))) or + (currentNodeNamespace == namespaces["mathml"] and + currentNodeName == "annotation-xml" and + type == StartTagToken and + token["name"] == "svg") or + (self.isHTMLIntegrationPoint(currentNode) and + type in (StartTagToken, CharactersToken, SpaceCharactersToken))): + phase = self.phase + else: + phase = self.phases["inForeignContent"] + + if type == CharactersToken: + new_token = phase.processCharacters(new_token) + elif type == SpaceCharactersToken: + new_token = phase.processSpaceCharacters(new_token) + elif type == StartTagToken: + new_token = phase.processStartTag(new_token) + elif type == EndTagToken: + new_token = phase.processEndTag(new_token) + elif type == CommentToken: + new_token = phase.processComment(new_token) + elif type == DoctypeToken: + new_token = phase.processDoctype(new_token) + + if (type == StartTagToken and prev_token["selfClosing"] and + not prev_token["selfClosingAcknowledged"]): + self.parseError("non-void-element-with-trailing-solidus", + {"name": prev_token["name"]}) + + # When the loop finishes it's EOF + reprocess = True + phases = [] + while reprocess: + phases.append(self.phase) + reprocess = self.phase.processEOF() + if reprocess: + assert self.phase not in phases + + def normalizedTokens(self): + for token in self.tokenizer: + yield self.normalizeToken(token) + + def parse(self, stream, *args, **kwargs): + """Parse a HTML document into a well-formed tree + + stream - a filelike object or string containing the HTML to be parsed + + The optional encoding parameter must be a string that indicates + the encoding. If specified, that encoding will be used, + regardless of any BOM or later declaration (such as in a meta + element) + + scripting - treat noscript elements as if javascript was turned on + """ + self._parse(stream, False, None, *args, **kwargs) + return self.tree.getDocument() + + def parseFragment(self, stream, *args, **kwargs): + """Parse a HTML fragment into a well-formed tree fragment + + container - name of the element we're setting the innerHTML property + if set to None, default to 'div' + + stream - a filelike object or string containing the HTML to be parsed + + The optional encoding parameter must be a string that indicates + the encoding. If specified, that encoding will be used, + regardless of any BOM or later declaration (such as in a meta + element) + + scripting - treat noscript elements as if javascript was turned on + """ + self._parse(stream, True, *args, **kwargs) + return self.tree.getFragment() + + def parseError(self, errorcode="XXX-undefined-error", datavars=None): + # XXX The idea is to make errorcode mandatory. + if datavars is None: + datavars = {} + self.errors.append((self.tokenizer.stream.position(), errorcode, datavars)) + if self.strict: + raise ParseError(E[errorcode] % datavars) + + def normalizeToken(self, token): + """ HTML5 specific normalizations to the token stream """ + + if token["type"] == tokenTypes["StartTag"]: + raw = token["data"] + token["data"] = OrderedDict(raw) + if len(raw) > len(token["data"]): + # we had some duplicated attribute, fix so first wins + token["data"].update(raw[::-1]) + + return token + + def adjustMathMLAttributes(self, token): + adjust_attributes(token, adjustMathMLAttributes) + + def adjustSVGAttributes(self, token): + adjust_attributes(token, adjustSVGAttributes) + + def adjustForeignAttributes(self, token): + adjust_attributes(token, adjustForeignAttributesMap) + + def reparseTokenNormal(self, token): + # pylint:disable=unused-argument + self.parser.phase() + + def resetInsertionMode(self): + # The name of this method is mostly historical. (It's also used in the + # specification.) + last = False + newModes = { + "select": "inSelect", + "td": "inCell", + "th": "inCell", + "tr": "inRow", + "tbody": "inTableBody", + "thead": "inTableBody", + "tfoot": "inTableBody", + "caption": "inCaption", + "colgroup": "inColumnGroup", + "table": "inTable", + "head": "inBody", + "body": "inBody", + "frameset": "inFrameset", + "html": "beforeHead" + } + for node in self.tree.openElements[::-1]: + nodeName = node.name + new_phase = None + if node == self.tree.openElements[0]: + assert self.innerHTML + last = True + nodeName = self.innerHTML + # Check for conditions that should only happen in the innerHTML + # case + if nodeName in ("select", "colgroup", "head", "html"): + assert self.innerHTML + + if not last and node.namespace != self.tree.defaultNamespace: + continue + + if nodeName in newModes: + new_phase = self.phases[newModes[nodeName]] + break + elif last: + new_phase = self.phases["inBody"] + break + + self.phase = new_phase + + def parseRCDataRawtext(self, token, contentType): + """Generic RCDATA/RAWTEXT Parsing algorithm + contentType - RCDATA or RAWTEXT + """ + assert contentType in ("RAWTEXT", "RCDATA") + + self.tree.insertElement(token) + + if contentType == "RAWTEXT": + self.tokenizer.state = self.tokenizer.rawtextState + else: + self.tokenizer.state = self.tokenizer.rcdataState + + self.originalPhase = self.phase + + self.phase = self.phases["text"] + + +@_utils.memoize +def getPhases(debug): + def log(function): + """Logger that records which phase processes each token""" + type_names = dict((value, key) for key, value in + tokenTypes.items()) + + def wrapped(self, *args, **kwargs): + if function.__name__.startswith("process") and len(args) > 0: + token = args[0] + try: + info = {"type": type_names[token['type']]} + except: + raise + if token['type'] in tagTokenTypes: + info["name"] = token['name'] + + self.parser.log.append((self.parser.tokenizer.state.__name__, + self.parser.phase.__class__.__name__, + self.__class__.__name__, + function.__name__, + info)) + return function(self, *args, **kwargs) + else: + return function(self, *args, **kwargs) + return wrapped + + def getMetaclass(use_metaclass, metaclass_func): + if use_metaclass: + return method_decorator_metaclass(metaclass_func) + else: + return type + + # pylint:disable=unused-argument + class Phase(with_metaclass(getMetaclass(debug, log))): + """Base class for helper object that implements each phase of processing + """ + + def __init__(self, parser, tree): + self.parser = parser + self.tree = tree + + def processEOF(self): + raise NotImplementedError + + def processComment(self, token): + # For most phases the following is correct. Where it's not it will be + # overridden. + self.tree.insertComment(token, self.tree.openElements[-1]) + + def processDoctype(self, token): + self.parser.parseError("unexpected-doctype") + + def processCharacters(self, token): + self.tree.insertText(token["data"]) + + def processSpaceCharacters(self, token): + self.tree.insertText(token["data"]) + + def processStartTag(self, token): + return self.startTagHandler[token["name"]](token) + + def startTagHtml(self, token): + if not self.parser.firstStartTag and token["name"] == "html": + self.parser.parseError("non-html-root") + # XXX Need a check here to see if the first start tag token emitted is + # this token... If it's not, invoke self.parser.parseError(). + for attr, value in token["data"].items(): + if attr not in self.tree.openElements[0].attributes: + self.tree.openElements[0].attributes[attr] = value + self.parser.firstStartTag = False + + def processEndTag(self, token): + return self.endTagHandler[token["name"]](token) + + class InitialPhase(Phase): + def processSpaceCharacters(self, token): + pass + + def processComment(self, token): + self.tree.insertComment(token, self.tree.document) + + def processDoctype(self, token): + name = token["name"] + publicId = token["publicId"] + systemId = token["systemId"] + correct = token["correct"] + + if (name != "html" or publicId is not None or + systemId is not None and systemId != "about:legacy-compat"): + self.parser.parseError("unknown-doctype") + + if publicId is None: + publicId = "" + + self.tree.insertDoctype(token) + + if publicId != "": + publicId = publicId.translate(asciiUpper2Lower) + + if (not correct or token["name"] != "html" or + publicId.startswith( + ("+//silmaril//dtd html pro v0r11 19970101//", + "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", + "-//as//dtd html 3.0 aswedit + extensions//", + "-//ietf//dtd html 2.0 level 1//", + "-//ietf//dtd html 2.0 level 2//", + "-//ietf//dtd html 2.0 strict level 1//", + "-//ietf//dtd html 2.0 strict level 2//", + "-//ietf//dtd html 2.0 strict//", + "-//ietf//dtd html 2.0//", + "-//ietf//dtd html 2.1e//", + "-//ietf//dtd html 3.0//", + "-//ietf//dtd html 3.2 final//", + "-//ietf//dtd html 3.2//", + "-//ietf//dtd html 3//", + "-//ietf//dtd html level 0//", + "-//ietf//dtd html level 1//", + "-//ietf//dtd html level 2//", + "-//ietf//dtd html level 3//", + "-//ietf//dtd html strict level 0//", + "-//ietf//dtd html strict level 1//", + "-//ietf//dtd html strict level 2//", + "-//ietf//dtd html strict level 3//", + "-//ietf//dtd html strict//", + "-//ietf//dtd html//", + "-//metrius//dtd metrius presentational//", + "-//microsoft//dtd internet explorer 2.0 html strict//", + "-//microsoft//dtd internet explorer 2.0 html//", + "-//microsoft//dtd internet explorer 2.0 tables//", + "-//microsoft//dtd internet explorer 3.0 html strict//", + "-//microsoft//dtd internet explorer 3.0 html//", + "-//microsoft//dtd internet explorer 3.0 tables//", + "-//netscape comm. corp.//dtd html//", + "-//netscape comm. corp.//dtd strict html//", + "-//o'reilly and associates//dtd html 2.0//", + "-//o'reilly and associates//dtd html extended 1.0//", + "-//o'reilly and associates//dtd html extended relaxed 1.0//", + "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//", + "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//", + "-//spyglass//dtd html 2.0 extended//", + "-//sq//dtd html 2.0 hotmetal + extensions//", + "-//sun microsystems corp.//dtd hotjava html//", + "-//sun microsystems corp.//dtd hotjava strict html//", + "-//w3c//dtd html 3 1995-03-24//", + "-//w3c//dtd html 3.2 draft//", + "-//w3c//dtd html 3.2 final//", + "-//w3c//dtd html 3.2//", + "-//w3c//dtd html 3.2s draft//", + "-//w3c//dtd html 4.0 frameset//", + "-//w3c//dtd html 4.0 transitional//", + "-//w3c//dtd html experimental 19960712//", + "-//w3c//dtd html experimental 970421//", + "-//w3c//dtd w3 html//", + "-//w3o//dtd w3 html 3.0//", + "-//webtechs//dtd mozilla html 2.0//", + "-//webtechs//dtd mozilla html//")) or + publicId in ("-//w3o//dtd w3 html strict 3.0//en//", + "-/w3c/dtd html 4.0 transitional/en", + "html") or + publicId.startswith( + ("-//w3c//dtd html 4.01 frameset//", + "-//w3c//dtd html 4.01 transitional//")) and + systemId is None or + systemId and systemId.lower() == "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"): + self.parser.compatMode = "quirks" + elif (publicId.startswith( + ("-//w3c//dtd xhtml 1.0 frameset//", + "-//w3c//dtd xhtml 1.0 transitional//")) or + publicId.startswith( + ("-//w3c//dtd html 4.01 frameset//", + "-//w3c//dtd html 4.01 transitional//")) and + systemId is not None): + self.parser.compatMode = "limited quirks" + + self.parser.phase = self.parser.phases["beforeHtml"] + + def anythingElse(self): + self.parser.compatMode = "quirks" + self.parser.phase = self.parser.phases["beforeHtml"] + + def processCharacters(self, token): + self.parser.parseError("expected-doctype-but-got-chars") + self.anythingElse() + return token + + def processStartTag(self, token): + self.parser.parseError("expected-doctype-but-got-start-tag", + {"name": token["name"]}) + self.anythingElse() + return token + + def processEndTag(self, token): + self.parser.parseError("expected-doctype-but-got-end-tag", + {"name": token["name"]}) + self.anythingElse() + return token + + def processEOF(self): + self.parser.parseError("expected-doctype-but-got-eof") + self.anythingElse() + return True + + class BeforeHtmlPhase(Phase): + # helper methods + def insertHtmlElement(self): + self.tree.insertRoot(impliedTagToken("html", "StartTag")) + self.parser.phase = self.parser.phases["beforeHead"] + + # other + def processEOF(self): + self.insertHtmlElement() + return True + + def processComment(self, token): + self.tree.insertComment(token, self.tree.document) + + def processSpaceCharacters(self, token): + pass + + def processCharacters(self, token): + self.insertHtmlElement() + return token + + def processStartTag(self, token): + if token["name"] == "html": + self.parser.firstStartTag = True + self.insertHtmlElement() + return token + + def processEndTag(self, token): + if token["name"] not in ("head", "body", "html", "br"): + self.parser.parseError("unexpected-end-tag-before-html", + {"name": token["name"]}) + else: + self.insertHtmlElement() + return token + + class BeforeHeadPhase(Phase): + def __init__(self, parser, tree): + Phase.__init__(self, parser, tree) + + self.startTagHandler = _utils.MethodDispatcher([ + ("html", self.startTagHtml), + ("head", self.startTagHead) + ]) + self.startTagHandler.default = self.startTagOther + + self.endTagHandler = _utils.MethodDispatcher([ + (("head", "body", "html", "br"), self.endTagImplyHead) + ]) + self.endTagHandler.default = self.endTagOther + + def processEOF(self): + self.startTagHead(impliedTagToken("head", "StartTag")) + return True + + def processSpaceCharacters(self, token): + pass + + def processCharacters(self, token): + self.startTagHead(impliedTagToken("head", "StartTag")) + return token + + def startTagHtml(self, token): + return self.parser.phases["inBody"].processStartTag(token) + + def startTagHead(self, token): + self.tree.insertElement(token) + self.tree.headPointer = self.tree.openElements[-1] + self.parser.phase = self.parser.phases["inHead"] + + def startTagOther(self, token): + self.startTagHead(impliedTagToken("head", "StartTag")) + return token + + def endTagImplyHead(self, token): + self.startTagHead(impliedTagToken("head", "StartTag")) + return token + + def endTagOther(self, token): + self.parser.parseError("end-tag-after-implied-root", + {"name": token["name"]}) + + class InHeadPhase(Phase): + def __init__(self, parser, tree): + Phase.__init__(self, parser, tree) + + self.startTagHandler = _utils.MethodDispatcher([ + ("html", self.startTagHtml), + ("title", self.startTagTitle), + (("noframes", "style"), self.startTagNoFramesStyle), + ("noscript", self.startTagNoscript), + ("script", self.startTagScript), + (("base", "basefont", "bgsound", "command", "link"), + self.startTagBaseLinkCommand), + ("meta", self.startTagMeta), + ("head", self.startTagHead) + ]) + self.startTagHandler.default = self.startTagOther + + self.endTagHandler = _utils.MethodDispatcher([ + ("head", self.endTagHead), + (("br", "html", "body"), self.endTagHtmlBodyBr) + ]) + self.endTagHandler.default = self.endTagOther + + # the real thing + def processEOF(self): + self.anythingElse() + return True + + def processCharacters(self, token): + self.anythingElse() + return token + + def startTagHtml(self, token): + return self.parser.phases["inBody"].processStartTag(token) + + def startTagHead(self, token): + self.parser.parseError("two-heads-are-not-better-than-one") + + def startTagBaseLinkCommand(self, token): + self.tree.insertElement(token) + self.tree.openElements.pop() + token["selfClosingAcknowledged"] = True + + def startTagMeta(self, token): + self.tree.insertElement(token) + self.tree.openElements.pop() + token["selfClosingAcknowledged"] = True + + attributes = token["data"] + if self.parser.tokenizer.stream.charEncoding[1] == "tentative": + if "charset" in attributes: + self.parser.tokenizer.stream.changeEncoding(attributes["charset"]) + elif ("content" in attributes and + "http-equiv" in attributes and + attributes["http-equiv"].lower() == "content-type"): + # Encoding it as UTF-8 here is a hack, as really we should pass + # the abstract Unicode string, and just use the + # ContentAttrParser on that, but using UTF-8 allows all chars + # to be encoded and as a ASCII-superset works. + data = _inputstream.EncodingBytes(attributes["content"].encode("utf-8")) + parser = _inputstream.ContentAttrParser(data) + codec = parser.parse() + self.parser.tokenizer.stream.changeEncoding(codec) + + def startTagTitle(self, token): + self.parser.parseRCDataRawtext(token, "RCDATA") + + def startTagNoFramesStyle(self, token): + # Need to decide whether to implement the scripting-disabled case + self.parser.parseRCDataRawtext(token, "RAWTEXT") + + def startTagNoscript(self, token): + if self.parser.scripting: + self.parser.parseRCDataRawtext(token, "RAWTEXT") + else: + self.tree.insertElement(token) + self.parser.phase = self.parser.phases["inHeadNoscript"] + + def startTagScript(self, token): + self.tree.insertElement(token) + self.parser.tokenizer.state = self.parser.tokenizer.scriptDataState + self.parser.originalPhase = self.parser.phase + self.parser.phase = self.parser.phases["text"] + + def startTagOther(self, token): + self.anythingElse() + return token + + def endTagHead(self, token): + node = self.parser.tree.openElements.pop() + assert node.name == "head", "Expected head got %s" % node.name + self.parser.phase = self.parser.phases["afterHead"] + + def endTagHtmlBodyBr(self, token): + self.anythingElse() + return token + + def endTagOther(self, token): + self.parser.parseError("unexpected-end-tag", {"name": token["name"]}) + + def anythingElse(self): + self.endTagHead(impliedTagToken("head")) + + class InHeadNoscriptPhase(Phase): + def __init__(self, parser, tree): + Phase.__init__(self, parser, tree) + + self.startTagHandler = _utils.MethodDispatcher([ + ("html", self.startTagHtml), + (("basefont", "bgsound", "link", "meta", "noframes", "style"), self.startTagBaseLinkCommand), + (("head", "noscript"), self.startTagHeadNoscript), + ]) + self.startTagHandler.default = self.startTagOther + + self.endTagHandler = _utils.MethodDispatcher([ + ("noscript", self.endTagNoscript), + ("br", self.endTagBr), + ]) + self.endTagHandler.default = self.endTagOther + + def processEOF(self): + self.parser.parseError("eof-in-head-noscript") + self.anythingElse() + return True + + def processComment(self, token): + return self.parser.phases["inHead"].processComment(token) + + def processCharacters(self, token): + self.parser.parseError("char-in-head-noscript") + self.anythingElse() + return token + + def processSpaceCharacters(self, token): + return self.parser.phases["inHead"].processSpaceCharacters(token) + + def startTagHtml(self, token): + return self.parser.phases["inBody"].processStartTag(token) + + def startTagBaseLinkCommand(self, token): + return self.parser.phases["inHead"].processStartTag(token) + + def startTagHeadNoscript(self, token): + self.parser.parseError("unexpected-start-tag", {"name": token["name"]}) + + def startTagOther(self, token): + self.parser.parseError("unexpected-inhead-noscript-tag", {"name": token["name"]}) + self.anythingElse() + return token + + def endTagNoscript(self, token): + node = self.parser.tree.openElements.pop() + assert node.name == "noscript", "Expected noscript got %s" % node.name + self.parser.phase = self.parser.phases["inHead"] + + def endTagBr(self, token): + self.parser.parseError("unexpected-inhead-noscript-tag", {"name": token["name"]}) + self.anythingElse() + return token + + def endTagOther(self, token): + self.parser.parseError("unexpected-end-tag", {"name": token["name"]}) + + def anythingElse(self): + # Caller must raise parse error first! + self.endTagNoscript(impliedTagToken("noscript")) + + class AfterHeadPhase(Phase): + def __init__(self, parser, tree): + Phase.__init__(self, parser, tree) + + self.startTagHandler = _utils.MethodDispatcher([ + ("html", self.startTagHtml), + ("body", self.startTagBody), + ("frameset", self.startTagFrameset), + (("base", "basefont", "bgsound", "link", "meta", "noframes", "script", + "style", "title"), + self.startTagFromHead), + ("head", self.startTagHead) + ]) + self.startTagHandler.default = self.startTagOther + self.endTagHandler = _utils.MethodDispatcher([(("body", "html", "br"), + self.endTagHtmlBodyBr)]) + self.endTagHandler.default = self.endTagOther + + def processEOF(self): + self.anythingElse() + return True + + def processCharacters(self, token): + self.anythingElse() + return token + + def startTagHtml(self, token): + return self.parser.phases["inBody"].processStartTag(token) + + def startTagBody(self, token): + self.parser.framesetOK = False + self.tree.insertElement(token) + self.parser.phase = self.parser.phases["inBody"] + + def startTagFrameset(self, token): + self.tree.insertElement(token) + self.parser.phase = self.parser.phases["inFrameset"] + + def startTagFromHead(self, token): + self.parser.parseError("unexpected-start-tag-out-of-my-head", + {"name": token["name"]}) + self.tree.openElements.append(self.tree.headPointer) + self.parser.phases["inHead"].processStartTag(token) + for node in self.tree.openElements[::-1]: + if node.name == "head": + self.tree.openElements.remove(node) + break + + def startTagHead(self, token): + self.parser.parseError("unexpected-start-tag", {"name": token["name"]}) + + def startTagOther(self, token): + self.anythingElse() + return token + + def endTagHtmlBodyBr(self, token): + self.anythingElse() + return token + + def endTagOther(self, token): + self.parser.parseError("unexpected-end-tag", {"name": token["name"]}) + + def anythingElse(self): + self.tree.insertElement(impliedTagToken("body", "StartTag")) + self.parser.phase = self.parser.phases["inBody"] + self.parser.framesetOK = True + + class InBodyPhase(Phase): + # http://www.whatwg.org/specs/web-apps/current-work/#parsing-main-inbody + # the really-really-really-very crazy mode + def __init__(self, parser, tree): + Phase.__init__(self, parser, tree) + + # Set this to the default handler + self.processSpaceCharacters = self.processSpaceCharactersNonPre + + self.startTagHandler = _utils.MethodDispatcher([ + ("html", self.startTagHtml), + (("base", "basefont", "bgsound", "command", "link", "meta", + "script", "style", "title"), + self.startTagProcessInHead), + ("body", self.startTagBody), + ("frameset", self.startTagFrameset), + (("address", "article", "aside", "blockquote", "center", "details", + "dir", "div", "dl", "fieldset", "figcaption", "figure", + "footer", "header", "hgroup", "main", "menu", "nav", "ol", "p", + "section", "summary", "ul"), + self.startTagCloseP), + (headingElements, self.startTagHeading), + (("pre", "listing"), self.startTagPreListing), + ("form", self.startTagForm), + (("li", "dd", "dt"), self.startTagListItem), + ("plaintext", self.startTagPlaintext), + ("a", self.startTagA), + (("b", "big", "code", "em", "font", "i", "s", "small", "strike", + "strong", "tt", "u"), self.startTagFormatting), + ("nobr", self.startTagNobr), + ("button", self.startTagButton), + (("applet", "marquee", "object"), self.startTagAppletMarqueeObject), + ("xmp", self.startTagXmp), + ("table", self.startTagTable), + (("area", "br", "embed", "img", "keygen", "wbr"), + self.startTagVoidFormatting), + (("param", "source", "track"), self.startTagParamSource), + ("input", self.startTagInput), + ("hr", self.startTagHr), + ("image", self.startTagImage), + ("isindex", self.startTagIsIndex), + ("textarea", self.startTagTextarea), + ("iframe", self.startTagIFrame), + ("noscript", self.startTagNoscript), + (("noembed", "noframes"), self.startTagRawtext), + ("select", self.startTagSelect), + (("rp", "rt"), self.startTagRpRt), + (("option", "optgroup"), self.startTagOpt), + (("math"), self.startTagMath), + (("svg"), self.startTagSvg), + (("caption", "col", "colgroup", "frame", "head", + "tbody", "td", "tfoot", "th", "thead", + "tr"), self.startTagMisplaced) + ]) + self.startTagHandler.default = self.startTagOther + + self.endTagHandler = _utils.MethodDispatcher([ + ("body", self.endTagBody), + ("html", self.endTagHtml), + (("address", "article", "aside", "blockquote", "button", "center", + "details", "dialog", "dir", "div", "dl", "fieldset", "figcaption", "figure", + "footer", "header", "hgroup", "listing", "main", "menu", "nav", "ol", "pre", + "section", "summary", "ul"), self.endTagBlock), + ("form", self.endTagForm), + ("p", self.endTagP), + (("dd", "dt", "li"), self.endTagListItem), + (headingElements, self.endTagHeading), + (("a", "b", "big", "code", "em", "font", "i", "nobr", "s", "small", + "strike", "strong", "tt", "u"), self.endTagFormatting), + (("applet", "marquee", "object"), self.endTagAppletMarqueeObject), + ("br", self.endTagBr), + ]) + self.endTagHandler.default = self.endTagOther + + def isMatchingFormattingElement(self, node1, node2): + return (node1.name == node2.name and + node1.namespace == node2.namespace and + node1.attributes == node2.attributes) + + # helper + def addFormattingElement(self, token): + self.tree.insertElement(token) + element = self.tree.openElements[-1] + + matchingElements = [] + for node in self.tree.activeFormattingElements[::-1]: + if node is Marker: + break + elif self.isMatchingFormattingElement(node, element): + matchingElements.append(node) + + assert len(matchingElements) <= 3 + if len(matchingElements) == 3: + self.tree.activeFormattingElements.remove(matchingElements[-1]) + self.tree.activeFormattingElements.append(element) + + # the real deal + def processEOF(self): + allowed_elements = frozenset(("dd", "dt", "li", "p", "tbody", "td", + "tfoot", "th", "thead", "tr", "body", + "html")) + for node in self.tree.openElements[::-1]: + if node.name not in allowed_elements: + self.parser.parseError("expected-closing-tag-but-got-eof") + break + # Stop parsing + + def processSpaceCharactersDropNewline(self, token): + # Sometimes (start of

, , and 

2sEA0b+{i8mF-p`}3k2M$gw;4Z-{ z%OWs+5k2*{04t8mS*?xP?wk@{RahBwHcl^2l(dZv;|(J}-_^mtwh~gsa{0<^_?;U1!Ay53w@#5t)J)5~>v#-He&j}mAX9!OI{>pyf~rWb z>eCzGs`Ox&c5f;Dr(f$u!|ZlWyXRu^r#}K7vgEba-rS&c@~VvgZdhltsWC2oT2v-D zp*1GQhDB?k^bjJCcjPxF5eQIAG#@x3BkcV5BfJ8Y+W%{W^;fwgtcQ#KcOyKFfqZs^ zK^Y-e#=4WWNOGvVuw{)dlAm14O_cnk>aY=&f^B(<%V5(M^+IFzv-#k|fP67OSaEbk z%W7U!#aiSg>v#?@#+)ZVi2LIz4&3b?jKFDU=fqvy+pm;)9+XKF5l8N3lj(Mscf$@n zbzhlGZ4{T%R9Q7!l>kWH$K%etRqBgWb#b1PdLURO1qdFI;E|PUGe{}3zbF_jpZ>6Q z*c~u*ARIiR-BSQS6c(ZFYn7&@hep;%73sBT5FLM>sxHG% z!Io+|G#HT^M2$}&;dIs@TtSRxSP02PWeB>#sq`se4woTx>d82Hb!;N%G z_aTqsBQ9%meN|s0Dmx-{%Hpf)dJoHS*n?F=zN+FqTt(Cp zqLd`^t1D!p#Sypfa=|Z=enB3;{pv3TS?u+^T=a3rcs0;rjK|u)97?dyAUNb|BxB>3 z=W@C_ZsiMcKRS9!^PB2$BaUe&IhXpDmFZS~8)9(2_E<;8C)@N&)Q)09C>&Xk$wzjl zCiS~=@QnZYyyAEMTM!9Zv-LlnS3JNPUGVSED}EQHuf2`Sk&#~XWb}T~fShhWPDGad z(pB2$pI6+AfF9-!#q4>-bK&cco>zRm6Z}s37k!UB!7gL!u=9$gWQ_gi^NQ)OVTH+^ zSM2&fo>we9+U@WDLWcCO-G&EDSJG`6t{hhod8nH+3!gf#80E-h?!4j~P_Cor6>~=$ z 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 1.2, < 2.0 [bar, baz]' +# +# The regex can seem a bit hairy, so we build it up out of smaller pieces +# which are manageable. +# + +COMMA = r'\s*,\s*' +COMMA_RE = re.compile(COMMA) + +IDENT = r'(\w|[.-])+' +EXTRA_IDENT = r'(\*|:(\*|\w+):|' + IDENT + ')' +VERSPEC = IDENT + r'\*?' + +RELOP = '([<>=!~]=)|[<>]' + +# +# The first relop is optional - if absent, will be taken as '~=' +# +BARE_CONSTRAINTS = ('(' + RELOP + r')?\s*(' + VERSPEC + ')(' + COMMA + '(' + + RELOP + r')\s*(' + VERSPEC + '))*') + +DIRECT_REF = '(from\s+(?P.*))' + +# +# Either the bare constraints or the bare constraints in parentheses +# +CONSTRAINTS = (r'\(\s*(?P' + BARE_CONSTRAINTS + '|' + DIRECT_REF + + r')\s*\)|(?P' + BARE_CONSTRAINTS + '\s*)') + +EXTRA_LIST = EXTRA_IDENT + '(' + COMMA + EXTRA_IDENT + ')*' +EXTRAS = r'\[\s*(?P' + EXTRA_LIST + r')?\s*\]' +REQUIREMENT = ('(?P' + IDENT + r')\s*(' + EXTRAS + r'\s*)?(\s*' + + CONSTRAINTS + ')?$') +REQUIREMENT_RE = re.compile(REQUIREMENT) + +# +# Used to scan through the constraints +# +RELOP_IDENT = '(?P' + RELOP + r')\s*(?P' + VERSPEC + ')' +RELOP_IDENT_RE = re.compile(RELOP_IDENT) + +def parse_requirement(s): + + def get_constraint(m): + d = m.groupdict() + return d['op'], d['vn'] + + result = None + m = REQUIREMENT_RE.match(s) + if m: + d = m.groupdict() + name = d['dn'] + cons = d['c1'] or d['c2'] + if not d['diref']: + url = None + else: + # direct reference + cons = None + url = d['diref'].strip() + if not cons: + cons = None + constr = '' + rs = d['dn'] + else: + if cons[0] not in '<>!=': + cons = '~=' + cons + iterator = RELOP_IDENT_RE.finditer(cons) + cons = [get_constraint(m) for m in iterator] + rs = '%s (%s)' % (name, ', '.join(['%s %s' % con for con in cons])) + if not d['ex']: + extras = None + else: + extras = COMMA_RE.split(d['ex']) + result = Container(name=name, constraints=cons, extras=extras, + requirement=rs, source=s, url=url) + return result + + +def get_resources_dests(resources_root, rules): + """Find destinations for resources files""" + + def get_rel_path(base, path): + # normalizes and returns a lstripped-/-separated path + base = base.replace(os.path.sep, '/') + path = path.replace(os.path.sep, '/') + assert path.startswith(base) + return path[len(base):].lstrip('/') + + + destinations = {} + for base, suffix, dest in rules: + prefix = os.path.join(resources_root, base) + for abs_base in iglob(prefix): + abs_glob = os.path.join(abs_base, suffix) + for abs_path in iglob(abs_glob): + resource_file = get_rel_path(resources_root, abs_path) + if dest is None: # remove the entry if it was here + destinations.pop(resource_file, None) + else: + rel_path = get_rel_path(abs_base, abs_path) + rel_dest = dest.replace(os.path.sep, '/').rstrip('/') + destinations[resource_file] = rel_dest + '/' + rel_path + return destinations + + +def in_venv(): + if hasattr(sys, 'real_prefix'): + # virtualenv venvs + result = True + else: + # PEP 405 venvs + result = sys.prefix != getattr(sys, 'base_prefix', sys.prefix) + return result + + +def get_executable(): +# The __PYVENV_LAUNCHER__ dance is apparently no longer needed, as +# changes to the stub launcher mean that sys.executable always points +# to the stub on macOS +# if sys.platform == 'darwin' and ('__PYVENV_LAUNCHER__' +# in os.environ): +# result = os.environ['__PYVENV_LAUNCHER__'] +# else: +# result = sys.executable +# return result + result = os.path.normcase(sys.executable) + if not isinstance(result, text_type): + result = fsdecode(result) + return result + + +def proceed(prompt, allowed_chars, error_prompt=None, default=None): + p = prompt + while True: + s = raw_input(p) + p = prompt + if not s and default: + s = default + if s: + c = s[0].lower() + if c in allowed_chars: + break + if error_prompt: + p = '%c: %s\n%s' % (c, error_prompt, prompt) + return c + + +def extract_by_key(d, keys): + if isinstance(keys, string_types): + keys = keys.split() + result = {} + for key in keys: + if key in d: + result[key] = d[key] + return result + +def read_exports(stream): + if sys.version_info[0] >= 3: + # needs to be a text stream + stream = codecs.getreader('utf-8')(stream) + # Try to load as JSON, falling back on legacy format + data = stream.read() + stream = StringIO(data) + try: + jdata = json.load(stream) + result = jdata['extensions']['python.exports']['exports'] + for group, entries in result.items(): + for k, v in entries.items(): + s = '%s = %s' % (k, v) + entry = get_export_entry(s) + assert entry is not None + entries[k] = entry + return result + except Exception: + stream.seek(0, 0) + + def read_stream(cp, stream): + if hasattr(cp, 'read_file'): + cp.read_file(stream) + else: + cp.readfp(stream) + + cp = configparser.ConfigParser() + try: + read_stream(cp, stream) + except configparser.MissingSectionHeaderError: + stream.close() + data = textwrap.dedent(data) + stream = StringIO(data) + read_stream(cp, stream) + + result = {} + for key in cp.sections(): + result[key] = entries = {} + for name, value in cp.items(key): + s = '%s = %s' % (name, value) + entry = get_export_entry(s) + assert entry is not None + #entry.dist = self + entries[name] = entry + return result + + +def write_exports(exports, stream): + if sys.version_info[0] >= 3: + # needs to be a text stream + stream = codecs.getwriter('utf-8')(stream) + cp = configparser.ConfigParser() + for k, v in exports.items(): + # TODO check k, v for valid values + cp.add_section(k) + for entry in v.values(): + if entry.suffix is None: + s = entry.prefix + else: + s = '%s:%s' % (entry.prefix, entry.suffix) + if entry.flags: + s = '%s [%s]' % (s, ', '.join(entry.flags)) + cp.set(k, entry.name, s) + cp.write(stream) + + +@contextlib.contextmanager +def tempdir(): + td = tempfile.mkdtemp() + try: + yield td + finally: + shutil.rmtree(td) + +@contextlib.contextmanager +def chdir(d): + cwd = os.getcwd() + try: + os.chdir(d) + yield + finally: + os.chdir(cwd) + + +@contextlib.contextmanager +def socket_timeout(seconds=15): + cto = socket.getdefaulttimeout() + try: + socket.setdefaulttimeout(seconds) + yield + finally: + socket.setdefaulttimeout(cto) + + +class cached_property(object): + def __init__(self, func): + self.func = func + #for attr in ('__name__', '__module__', '__doc__'): + # setattr(self, attr, getattr(func, attr, None)) + + def __get__(self, obj, cls=None): + if obj is None: + return self + value = self.func(obj) + object.__setattr__(obj, self.func.__name__, value) + #obj.__dict__[self.func.__name__] = value = self.func(obj) + return value + +def convert_path(pathname): + """Return 'pathname' as a name that will work on the native filesystem. + + The path is split on '/' and put 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 = pathname.split('/') + while os.curdir in paths: + paths.remove(os.curdir) + if not paths: + return os.curdir + return os.path.join(*paths) + + +class FileOperator(object): + def __init__(self, dry_run=False): + self.dry_run = dry_run + self.ensured = set() + self._init_record() + + def _init_record(self): + self.record = False + self.files_written = set() + self.dirs_created = set() + + def record_as_written(self, path): + if self.record: + self.files_written.add(path) + + def newer(self, source, target): + """Tell if the target is newer than the source. + + Returns true if 'source' exists and is more recently modified than + 'target', or if 'source' exists and 'target' doesn't. + + Returns false if both exist and 'target' is the same age or younger + than 'source'. Raise PackagingFileError 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 DistlibException("file '%r' 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 copy_file(self, infile, outfile, check=True): + """Copy a file respecting dry-run and force flags. + """ + self.ensure_dir(os.path.dirname(outfile)) + logger.info('Copying %s to %s', infile, outfile) + if not self.dry_run: + msg = None + if check: + if os.path.islink(outfile): + msg = '%s is a symlink' % outfile + elif os.path.exists(outfile) and not os.path.isfile(outfile): + msg = '%s is a non-regular file' % outfile + if msg: + raise ValueError(msg + ' which would be overwritten') + shutil.copyfile(infile, outfile) + self.record_as_written(outfile) + + def copy_stream(self, instream, outfile, encoding=None): + assert not os.path.isdir(outfile) + self.ensure_dir(os.path.dirname(outfile)) + logger.info('Copying stream %s to %s', instream, outfile) + if not self.dry_run: + if encoding is None: + outstream = open(outfile, 'wb') + else: + outstream = codecs.open(outfile, 'w', encoding=encoding) + try: + shutil.copyfileobj(instream, outstream) + finally: + outstream.close() + self.record_as_written(outfile) + + def write_binary_file(self, path, data): + self.ensure_dir(os.path.dirname(path)) + if not self.dry_run: + with open(path, 'wb') as f: + f.write(data) + self.record_as_written(path) + + def write_text_file(self, path, data, encoding): + self.ensure_dir(os.path.dirname(path)) + if not self.dry_run: + with open(path, 'wb') as f: + f.write(data.encode(encoding)) + self.record_as_written(path) + + def set_mode(self, bits, mask, files): + if os.name == 'posix' or (os.name == 'java' and os._name == 'posix'): + # Set the executable bits (owner, group, and world) on + # all the files specified. + for f in files: + if self.dry_run: + logger.info("changing mode of %s", f) + else: + mode = (os.stat(f).st_mode | bits) & mask + logger.info("changing mode of %s to %o", f, mode) + os.chmod(f, mode) + + set_executable_mode = lambda s, f: s.set_mode(0o555, 0o7777, f) + + def ensure_dir(self, path): + path = os.path.abspath(path) + if path not in self.ensured and not os.path.exists(path): + self.ensured.add(path) + d, f = os.path.split(path) + self.ensure_dir(d) + logger.info('Creating %s' % path) + if not self.dry_run: + os.mkdir(path) + if self.record: + self.dirs_created.add(path) + + def byte_compile(self, path, optimize=False, force=False, prefix=None): + dpath = cache_from_source(path, not optimize) + logger.info('Byte-compiling %s to %s', path, dpath) + if not self.dry_run: + if force or self.newer(path, dpath): + if not prefix: + diagpath = None + else: + assert path.startswith(prefix) + diagpath = path[len(prefix):] + py_compile.compile(path, dpath, diagpath, True) # raise error + self.record_as_written(dpath) + return dpath + + def ensure_removed(self, path): + if os.path.exists(path): + if os.path.isdir(path) and not os.path.islink(path): + logger.debug('Removing directory tree at %s', path) + if not self.dry_run: + shutil.rmtree(path) + if self.record: + if path in self.dirs_created: + self.dirs_created.remove(path) + else: + if os.path.islink(path): + s = 'link' + else: + s = 'file' + logger.debug('Removing %s %s', s, path) + if not self.dry_run: + os.remove(path) + if self.record: + if path in self.files_written: + self.files_written.remove(path) + + def is_writable(self, path): + result = False + while not result: + if os.path.exists(path): + result = os.access(path, os.W_OK) + break + parent = os.path.dirname(path) + if parent == path: + break + path = parent + return result + + def commit(self): + """ + Commit recorded changes, turn off recording, return + changes. + """ + assert self.record + result = self.files_written, self.dirs_created + self._init_record() + return result + + def rollback(self): + if not self.dry_run: + for f in list(self.files_written): + if os.path.exists(f): + os.remove(f) + # dirs should all be empty now, except perhaps for + # __pycache__ subdirs + # reverse so that subdirs appear before their parents + dirs = sorted(self.dirs_created, reverse=True) + for d in dirs: + flist = os.listdir(d) + if flist: + assert flist == ['__pycache__'] + sd = os.path.join(d, flist[0]) + os.rmdir(sd) + os.rmdir(d) # should fail if non-empty + self._init_record() + +def resolve(module_name, dotted_path): + if module_name in sys.modules: + mod = sys.modules[module_name] + else: + mod = __import__(module_name) + if dotted_path is None: + result = mod + else: + parts = dotted_path.split('.') + result = getattr(mod, parts.pop(0)) + for p in parts: + result = getattr(result, p) + return result + + +class ExportEntry(object): + def __init__(self, name, prefix, suffix, flags): + self.name = name + self.prefix = prefix + self.suffix = suffix + self.flags = flags + + @cached_property + def value(self): + return resolve(self.prefix, self.suffix) + + def __repr__(self): # pragma: no cover + return '' % (self.name, self.prefix, + self.suffix, self.flags) + + def __eq__(self, other): + if not isinstance(other, ExportEntry): + result = False + else: + result = (self.name == other.name and + self.prefix == other.prefix and + self.suffix == other.suffix and + self.flags == other.flags) + return result + + __hash__ = object.__hash__ + + +ENTRY_RE = re.compile(r'''(?P(\w|[-.+])+) + \s*=\s*(?P(\w+)([:\.]\w+)*) + \s*(\[\s*(?P\w+(=\w+)?(,\s*\w+(=\w+)?)*)\s*\])? + ''', re.VERBOSE) + +def get_export_entry(specification): + m = ENTRY_RE.search(specification) + if not m: + result = None + if '[' in specification or ']' in specification: + raise DistlibException("Invalid specification " + "'%s'" % specification) + else: + d = m.groupdict() + name = d['name'] + path = d['callable'] + colons = path.count(':') + if colons == 0: + prefix, suffix = path, None + else: + if colons != 1: + raise DistlibException("Invalid specification " + "'%s'" % specification) + prefix, suffix = path.split(':') + flags = d['flags'] + if flags is None: + if '[' in specification or ']' in specification: + raise DistlibException("Invalid specification " + "'%s'" % specification) + flags = [] + else: + flags = [f.strip() for f in flags.split(',')] + result = ExportEntry(name, prefix, suffix, flags) + return result + + +def get_cache_base(suffix=None): + """ + Return the default base location for distlib caches. If the directory does + not exist, it is created. Use the suffix provided for the base directory, + and default to '.distlib' if it isn't provided. + + On Windows, if LOCALAPPDATA is defined in the environment, then it is + assumed to be a directory, and will be the parent directory of the result. + On POSIX, and on Windows if LOCALAPPDATA is not defined, the user's home + directory - using os.expanduser('~') - will be the parent directory of + the result. + + The result is just the directory '.distlib' in the parent directory as + determined above, or with the name specified with ``suffix``. + """ + if suffix is None: + suffix = '.distlib' + if os.name == 'nt' and 'LOCALAPPDATA' in os.environ: + result = os.path.expandvars('$localappdata') + else: + # Assume posix, or old Windows + result = os.path.expanduser('~') + # we use 'isdir' instead of 'exists', because we want to + # fail if there's a file with that name + if os.path.isdir(result): + usable = os.access(result, os.W_OK) + if not usable: + logger.warning('Directory exists but is not writable: %s', result) + else: + try: + os.makedirs(result) + usable = True + except OSError: + logger.warning('Unable to create %s', result, exc_info=True) + usable = False + if not usable: + result = tempfile.mkdtemp() + logger.warning('Default location unusable, using %s', result) + return os.path.join(result, suffix) + + +def path_to_cache_dir(path): + """ + Convert an absolute path to a directory name for use in a cache. + + The algorithm used is: + + #. On Windows, any ``':'`` in the drive is replaced with ``'---'``. + #. Any occurrence of ``os.sep`` is replaced with ``'--'``. + #. ``'.cache'`` is appended. + """ + d, p = os.path.splitdrive(os.path.abspath(path)) + if d: + d = d.replace(':', '---') + p = p.replace(os.sep, '--') + return d + p + '.cache' + + +def ensure_slash(s): + if not s.endswith('/'): + return s + '/' + return s + + +def parse_credentials(netloc): + username = password = None + if '@' in netloc: + prefix, netloc = netloc.split('@', 1) + if ':' not in prefix: + username = prefix + else: + username, password = prefix.split(':', 1) + return username, password, netloc + + +def get_process_umask(): + result = os.umask(0o22) + os.umask(result) + return result + +def is_string_sequence(seq): + result = True + i = None + for i, s in enumerate(seq): + if not isinstance(s, string_types): + result = False + break + assert i is not None + return result + +PROJECT_NAME_AND_VERSION = re.compile('([a-z0-9_]+([.-][a-z_][a-z0-9_]*)*)-' + '([a-z0-9_.+-]+)', re.I) +PYTHON_VERSION = re.compile(r'-py(\d\.?\d?)') + + +def split_filename(filename, project_name=None): + """ + Extract name, version, python version from a filename (no extension) + + Return name, version, pyver or None + """ + result = None + pyver = None + filename = unquote(filename).replace(' ', '-') + m = PYTHON_VERSION.search(filename) + if m: + pyver = m.group(1) + filename = filename[:m.start()] + if project_name and len(filename) > len(project_name) + 1: + m = re.match(re.escape(project_name) + r'\b', filename) + if m: + n = m.end() + result = filename[:n], filename[n + 1:], pyver + if result is None: + m = PROJECT_NAME_AND_VERSION.match(filename) + if m: + result = m.group(1), m.group(3), pyver + return result + +# Allow spaces in name because of legacy dists like "Twisted Core" +NAME_VERSION_RE = re.compile(r'(?P[\w .-]+)\s*' + r'\(\s*(?P[^\s)]+)\)$') + +def parse_name_and_version(p): + """ + A utility method used to get name and version from a string. + + From e.g. a Provides-Dist value. + + :param p: A value in a form 'foo (1.0)' + :return: The name and version as a tuple. + """ + m = NAME_VERSION_RE.match(p) + if not m: + raise DistlibException('Ill-formed name/version string: \'%s\'' % p) + d = m.groupdict() + return d['name'].strip().lower(), d['ver'] + +def get_extras(requested, available): + result = set() + requested = set(requested or []) + available = set(available or []) + if '*' in requested: + requested.remove('*') + result |= available + for r in requested: + if r == '-': + result.add(r) + elif r.startswith('-'): + unwanted = r[1:] + if unwanted not in available: + logger.warning('undeclared extra: %s' % unwanted) + if unwanted in result: + result.remove(unwanted) + else: + if r not in available: + logger.warning('undeclared extra: %s' % r) + result.add(r) + return result +# +# Extended metadata functionality +# + +def _get_external_data(url): + result = {} + try: + # urlopen might fail if it runs into redirections, + # because of Python issue #13696. Fixed in locators + # using a custom redirect handler. + resp = urlopen(url) + headers = resp.info() + ct = headers.get('Content-Type') + if not ct.startswith('application/json'): + logger.debug('Unexpected response for JSON request: %s', ct) + else: + reader = codecs.getreader('utf-8')(resp) + #data = reader.read().decode('utf-8') + #result = json.loads(data) + result = json.load(reader) + except Exception as e: + logger.exception('Failed to get external data for %s: %s', url, e) + return result + +_external_data_base_url = 'https://www.red-dove.com/pypi/projects/' + +def get_project_data(name): + url = '%s/%s/project.json' % (name[0].upper(), name) + url = urljoin(_external_data_base_url, url) + result = _get_external_data(url) + return result + +def get_package_data(name, version): + url = '%s/%s/package-%s.json' % (name[0].upper(), name, version) + url = urljoin(_external_data_base_url, url) + return _get_external_data(url) + + +class Cache(object): + """ + A class implementing a cache for resources that need to live in the file system + e.g. shared libraries. This class was moved from resources to here because it + could be used by other modules, e.g. the wheel module. + """ + + def __init__(self, base): + """ + Initialise an instance. + + :param base: The base directory where the cache should be located. + """ + # we use 'isdir' instead of 'exists', because we want to + # fail if there's a file with that name + if not os.path.isdir(base): # pragma: no cover + os.makedirs(base) + if (os.stat(base).st_mode & 0o77) != 0: + logger.warning('Directory \'%s\' is not private', base) + self.base = os.path.abspath(os.path.normpath(base)) + + def prefix_to_dir(self, prefix): + """ + Converts a resource prefix to a directory name in the cache. + """ + return path_to_cache_dir(prefix) + + def clear(self): + """ + Clear the cache. + """ + not_removed = [] + for fn in os.listdir(self.base): + fn = os.path.join(self.base, fn) + try: + if os.path.islink(fn) or os.path.isfile(fn): + os.remove(fn) + elif os.path.isdir(fn): + shutil.rmtree(fn) + except Exception: + not_removed.append(fn) + return not_removed + + +class EventMixin(object): + """ + A very simple publish/subscribe system. + """ + def __init__(self): + self._subscribers = {} + + def add(self, event, subscriber, append=True): + """ + Add a subscriber for an event. + + :param event: The name of an event. + :param subscriber: The subscriber to be added (and called when the + event is published). + :param append: Whether to append or prepend the subscriber to an + existing subscriber list for the event. + """ + subs = self._subscribers + if event not in subs: + subs[event] = deque([subscriber]) + else: + sq = subs[event] + if append: + sq.append(subscriber) + else: + sq.appendleft(subscriber) + + def remove(self, event, subscriber): + """ + Remove a subscriber for an event. + + :param event: The name of an event. + :param subscriber: The subscriber to be removed. + """ + subs = self._subscribers + if event not in subs: + raise ValueError('No subscribers: %r' % event) + subs[event].remove(subscriber) + + def get_subscribers(self, event): + """ + Return an iterator for the subscribers for an event. + :param event: The event to return subscribers for. + """ + return iter(self._subscribers.get(event, ())) + + def publish(self, event, *args, **kwargs): + """ + Publish a event and return a list of values returned by its + subscribers. + + :param event: The event to publish. + :param args: The positional arguments to pass to the event's + subscribers. + :param kwargs: The keyword arguments to pass to the event's + subscribers. + """ + result = [] + for subscriber in self.get_subscribers(event): + try: + value = subscriber(event, *args, **kwargs) + except Exception: + logger.exception('Exception during event publication') + value = None + result.append(value) + logger.debug('publish %s: args = %s, kwargs = %s, result = %s', + event, args, kwargs, result) + return result + +# +# Simple sequencing +# +class Sequencer(object): + def __init__(self): + self._preds = {} + self._succs = {} + self._nodes = set() # nodes with no preds/succs + + def add_node(self, node): + self._nodes.add(node) + + def remove_node(self, node, edges=False): + if node in self._nodes: + self._nodes.remove(node) + if edges: + for p in set(self._preds.get(node, ())): + self.remove(p, node) + for s in set(self._succs.get(node, ())): + self.remove(node, s) + # Remove empties + for k, v in list(self._preds.items()): + if not v: + del self._preds[k] + for k, v in list(self._succs.items()): + if not v: + del self._succs[k] + + def add(self, pred, succ): + assert pred != succ + self._preds.setdefault(succ, set()).add(pred) + self._succs.setdefault(pred, set()).add(succ) + + def remove(self, pred, succ): + assert pred != succ + try: + preds = self._preds[succ] + succs = self._succs[pred] + except KeyError: # pragma: no cover + raise ValueError('%r not a successor of anything' % succ) + try: + preds.remove(pred) + succs.remove(succ) + except KeyError: # pragma: no cover + raise ValueError('%r not a successor of %r' % (succ, pred)) + + def is_step(self, step): + return (step in self._preds or step in self._succs or + step in self._nodes) + + def get_steps(self, final): + if not self.is_step(final): + raise ValueError('Unknown: %r' % final) + result = [] + todo = [] + seen = set() + todo.append(final) + while todo: + step = todo.pop(0) + if step in seen: + # if a step was already seen, + # move it to the end (so it will appear earlier + # when reversed on return) ... but not for the + # final step, as that would be confusing for + # users + if step != final: + result.remove(step) + result.append(step) + else: + seen.add(step) + result.append(step) + preds = self._preds.get(step, ()) + todo.extend(preds) + return reversed(result) + + @property + def strong_connections(self): + #http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm + index_counter = [0] + stack = [] + lowlinks = {} + index = {} + result = [] + + graph = self._succs + + def strongconnect(node): + # set the depth index for this node to the smallest unused index + index[node] = index_counter[0] + lowlinks[node] = index_counter[0] + index_counter[0] += 1 + stack.append(node) + + # Consider successors + try: + successors = graph[node] + except Exception: + successors = [] + for successor in successors: + if successor not in lowlinks: + # Successor has not yet been visited + strongconnect(successor) + lowlinks[node] = min(lowlinks[node],lowlinks[successor]) + elif successor in stack: + # the successor is in the stack and hence in the current + # strongly connected component (SCC) + lowlinks[node] = min(lowlinks[node],index[successor]) + + # If `node` is a root node, pop the stack and generate an SCC + if lowlinks[node] == index[node]: + connected_component = [] + + while True: + successor = stack.pop() + connected_component.append(successor) + if successor == node: break + component = tuple(connected_component) + # storing the result + result.append(component) + + for node in graph: + if node not in lowlinks: + strongconnect(node) + + return result + + @property + def dot(self): + result = ['digraph G {'] + for succ in self._preds: + preds = self._preds[succ] + for pred in preds: + result.append(' %s -> %s;' % (pred, succ)) + for node in self._nodes: + result.append(' %s;' % node) + result.append('}') + return '\n'.join(result) + +# +# Unarchiving functionality for zip, tar, tgz, tbz, whl +# + +ARCHIVE_EXTENSIONS = ('.tar.gz', '.tar.bz2', '.tar', '.zip', + '.tgz', '.tbz', '.whl') + +def unarchive(archive_filename, dest_dir, format=None, check=True): + + def check_path(path): + if not isinstance(path, text_type): + path = path.decode('utf-8') + p = os.path.abspath(os.path.join(dest_dir, path)) + if not p.startswith(dest_dir) or p[plen] != os.sep: + raise ValueError('path outside destination: %r' % p) + + dest_dir = os.path.abspath(dest_dir) + plen = len(dest_dir) + archive = None + if format is None: + if archive_filename.endswith(('.zip', '.whl')): + format = 'zip' + elif archive_filename.endswith(('.tar.gz', '.tgz')): + format = 'tgz' + mode = 'r:gz' + elif archive_filename.endswith(('.tar.bz2', '.tbz')): + format = 'tbz' + mode = 'r:bz2' + elif archive_filename.endswith('.tar'): + format = 'tar' + mode = 'r' + else: # pragma: no cover + raise ValueError('Unknown format for %r' % archive_filename) + try: + if format == 'zip': + archive = ZipFile(archive_filename, 'r') + if check: + names = archive.namelist() + for name in names: + check_path(name) + else: + archive = tarfile.open(archive_filename, mode) + if check: + names = archive.getnames() + for name in names: + check_path(name) + if format != 'zip' and sys.version_info[0] < 3: + # See Python issue 17153. If the dest path contains Unicode, + # tarfile extraction fails on Python 2.x if a member path name + # contains non-ASCII characters - it leads to an implicit + # bytes -> unicode conversion using ASCII to decode. + for tarinfo in archive.getmembers(): + if not isinstance(tarinfo.name, text_type): + tarinfo.name = tarinfo.name.decode('utf-8') + archive.extractall(dest_dir) + + finally: + if archive: + archive.close() + + +def zip_dir(directory): + """zip a directory tree into a BytesIO object""" + result = io.BytesIO() + dlen = len(directory) + with ZipFile(result, "w") as zf: + for root, dirs, files in os.walk(directory): + for name in files: + full = os.path.join(root, name) + rel = root[dlen:] + dest = os.path.join(rel, name) + zf.write(full, dest) + return result + +# +# Simple progress bar +# + +UNITS = ('', 'K', 'M', 'G','T','P') + + +class Progress(object): + unknown = 'UNKNOWN' + + def __init__(self, minval=0, maxval=100): + assert maxval is None or maxval >= minval + self.min = self.cur = minval + self.max = maxval + self.started = None + self.elapsed = 0 + self.done = False + + def update(self, curval): + assert self.min <= curval + assert self.max is None or curval <= self.max + self.cur = curval + now = time.time() + if self.started is None: + self.started = now + else: + self.elapsed = now - self.started + + def increment(self, incr): + assert incr >= 0 + self.update(self.cur + incr) + + def start(self): + self.update(self.min) + return self + + def stop(self): + if self.max is not None: + self.update(self.max) + self.done = True + + @property + def maximum(self): + return self.unknown if self.max is None else self.max + + @property + def percentage(self): + if self.done: + result = '100 %' + elif self.max is None: + result = ' ?? %' + else: + v = 100.0 * (self.cur - self.min) / (self.max - self.min) + result = '%3d %%' % v + return result + + def format_duration(self, duration): + if (duration <= 0) and self.max is None or self.cur == self.min: + result = '??:??:??' + #elif duration < 1: + # result = '--:--:--' + else: + result = time.strftime('%H:%M:%S', time.gmtime(duration)) + return result + + @property + def ETA(self): + if self.done: + prefix = 'Done' + t = self.elapsed + #import pdb; pdb.set_trace() + else: + prefix = 'ETA ' + if self.max is None: + t = -1 + elif self.elapsed == 0 or (self.cur == self.min): + t = 0 + else: + #import pdb; pdb.set_trace() + t = float(self.max - self.min) + t /= self.cur - self.min + t = (t - 1) * self.elapsed + return '%s: %s' % (prefix, self.format_duration(t)) + + @property + def speed(self): + if self.elapsed == 0: + result = 0.0 + else: + result = (self.cur - self.min) / self.elapsed + for unit in UNITS: + if result < 1000: + break + result /= 1000.0 + return '%d %sB/s' % (result, unit) + +# +# Glob functionality +# + +RICH_GLOB = re.compile(r'\{([^}]*)\}') +_CHECK_RECURSIVE_GLOB = re.compile(r'[^/\\,{]\*\*|\*\*[^/\\,}]') +_CHECK_MISMATCH_SET = re.compile(r'^[^{]*\}|\{[^}]*$') + + +def iglob(path_glob): + """Extended globbing function that supports ** and {opt1,opt2,opt3}.""" + if _CHECK_RECURSIVE_GLOB.search(path_glob): + msg = """invalid glob %r: recursive glob "**" must be used alone""" + raise ValueError(msg % path_glob) + if _CHECK_MISMATCH_SET.search(path_glob): + msg = """invalid glob %r: mismatching set marker '{' or '}'""" + raise ValueError(msg % path_glob) + return _iglob(path_glob) + + +def _iglob(path_glob): + rich_path_glob = RICH_GLOB.split(path_glob, 1) + if len(rich_path_glob) > 1: + assert len(rich_path_glob) == 3, rich_path_glob + prefix, set, suffix = rich_path_glob + for item in set.split(','): + for path in _iglob(''.join((prefix, item, suffix))): + yield path + else: + if '**' not in path_glob: + for item in std_iglob(path_glob): + yield item + else: + prefix, radical = path_glob.split('**', 1) + if prefix == '': + prefix = '.' + if radical == '': + radical = '*' + else: + # we support both + radical = radical.lstrip('/') + radical = radical.lstrip('\\') + for path, dir, files in os.walk(prefix): + path = os.path.normpath(path) + for fn in _iglob(os.path.join(path, radical)): + yield fn + +if ssl: + from .compat import (HTTPSHandler as BaseHTTPSHandler, match_hostname, + CertificateError) + + +# +# HTTPSConnection which verifies certificates/matches domains +# + + class HTTPSConnection(httplib.HTTPSConnection): + ca_certs = None # set this to the path to the certs file (.pem) + check_domain = True # only used if ca_certs is not None + + # noinspection PyPropertyAccess + def connect(self): + sock = socket.create_connection((self.host, self.port), self.timeout) + if getattr(self, '_tunnel_host', False): + self.sock = sock + self._tunnel() + + if not hasattr(ssl, 'SSLContext'): + # For 2.x + if self.ca_certs: + cert_reqs = ssl.CERT_REQUIRED + else: + cert_reqs = ssl.CERT_NONE + self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, + cert_reqs=cert_reqs, + ssl_version=ssl.PROTOCOL_SSLv23, + ca_certs=self.ca_certs) + else: # pragma: no cover + context = ssl.SSLContext(ssl.PROTOCOL_SSLv23) + context.options |= ssl.OP_NO_SSLv2 + if self.cert_file: + context.load_cert_chain(self.cert_file, self.key_file) + kwargs = {} + if self.ca_certs: + context.verify_mode = ssl.CERT_REQUIRED + context.load_verify_locations(cafile=self.ca_certs) + if getattr(ssl, 'HAS_SNI', False): + kwargs['server_hostname'] = self.host + self.sock = context.wrap_socket(sock, **kwargs) + if self.ca_certs and self.check_domain: + try: + match_hostname(self.sock.getpeercert(), self.host) + logger.debug('Host verified: %s', self.host) + except CertificateError: # pragma: no cover + self.sock.shutdown(socket.SHUT_RDWR) + self.sock.close() + raise + + class HTTPSHandler(BaseHTTPSHandler): + def __init__(self, ca_certs, check_domain=True): + BaseHTTPSHandler.__init__(self) + self.ca_certs = ca_certs + self.check_domain = check_domain + + def _conn_maker(self, *args, **kwargs): + """ + This is called to create a connection instance. Normally you'd + pass a connection class to do_open, but it doesn't actually check for + a class, and just expects a callable. As long as we behave just as a + constructor would have, we should be OK. If it ever changes so that + we *must* pass a class, we'll create an UnsafeHTTPSConnection class + which just sets check_domain to False in the class definition, and + choose which one to pass to do_open. + """ + result = HTTPSConnection(*args, **kwargs) + if self.ca_certs: + result.ca_certs = self.ca_certs + result.check_domain = self.check_domain + return result + + def https_open(self, req): + try: + return self.do_open(self._conn_maker, req) + except URLError as e: + if 'certificate verify failed' in str(e.reason): + raise CertificateError('Unable to verify server certificate ' + 'for %s' % req.host) + else: + raise + + # + # To prevent against mixing HTTP traffic with HTTPS (examples: A Man-In-The- + # Middle proxy using HTTP listens on port 443, or an index mistakenly serves + # HTML containing a http://xyz link when it should be https://xyz), + # you can use the following handler class, which does not allow HTTP traffic. + # + # It works by inheriting from HTTPHandler - so build_opener won't add a + # handler for HTTP itself. + # + class HTTPSOnlyHandler(HTTPSHandler, HTTPHandler): + def http_open(self, req): + raise URLError('Unexpected HTTP request on what should be a secure ' + 'connection: %s' % req) + +# +# XML-RPC with timeouts +# + +_ver_info = sys.version_info[:2] + +if _ver_info == (2, 6): + class HTTP(httplib.HTTP): + def __init__(self, host='', port=None, **kwargs): + if port == 0: # 0 means use port 0, not the default port + port = None + self._setup(self._connection_class(host, port, **kwargs)) + + + if ssl: + class HTTPS(httplib.HTTPS): + def __init__(self, host='', port=None, **kwargs): + if port == 0: # 0 means use port 0, not the default port + port = None + self._setup(self._connection_class(host, port, **kwargs)) + + +class Transport(xmlrpclib.Transport): + def __init__(self, timeout, use_datetime=0): + self.timeout = timeout + xmlrpclib.Transport.__init__(self, use_datetime) + + def make_connection(self, host): + h, eh, x509 = self.get_host_info(host) + if _ver_info == (2, 6): + result = HTTP(h, timeout=self.timeout) + else: + if not self._connection or host != self._connection[0]: + self._extra_headers = eh + self._connection = host, httplib.HTTPConnection(h) + result = self._connection[1] + return result + +if ssl: + class SafeTransport(xmlrpclib.SafeTransport): + def __init__(self, timeout, use_datetime=0): + self.timeout = timeout + xmlrpclib.SafeTransport.__init__(self, use_datetime) + + def make_connection(self, host): + h, eh, kwargs = self.get_host_info(host) + if not kwargs: + kwargs = {} + kwargs['timeout'] = self.timeout + if _ver_info == (2, 6): + result = HTTPS(host, None, **kwargs) + else: + if not self._connection or host != self._connection[0]: + self._extra_headers = eh + self._connection = host, httplib.HTTPSConnection(h, None, + **kwargs) + result = self._connection[1] + return result + + +class ServerProxy(xmlrpclib.ServerProxy): + def __init__(self, uri, **kwargs): + self.timeout = timeout = kwargs.pop('timeout', None) + # The above classes only come into play if a timeout + # is specified + if timeout is not None: + scheme, _ = splittype(uri) + use_datetime = kwargs.get('use_datetime', 0) + if scheme == 'https': + tcls = SafeTransport + else: + tcls = Transport + kwargs['transport'] = t = tcls(timeout, use_datetime=use_datetime) + self.transport = t + xmlrpclib.ServerProxy.__init__(self, uri, **kwargs) + +# +# CSV functionality. This is provided because on 2.x, the csv module can't +# handle Unicode. However, we need to deal with Unicode in e.g. RECORD files. +# + +def _csv_open(fn, mode, **kwargs): + if sys.version_info[0] < 3: + mode += 'b' + else: + kwargs['newline'] = '' + return open(fn, mode, **kwargs) + + +class CSVBase(object): + defaults = { + 'delimiter': str(','), # The strs are used because we need native + 'quotechar': str('"'), # str in the csv API (2.x won't take + 'lineterminator': str('\n') # Unicode) + } + + def __enter__(self): + return self + + def __exit__(self, *exc_info): + self.stream.close() + + +class CSVReader(CSVBase): + def __init__(self, **kwargs): + if 'stream' in kwargs: + stream = kwargs['stream'] + if sys.version_info[0] >= 3: + # needs to be a text stream + stream = codecs.getreader('utf-8')(stream) + self.stream = stream + else: + self.stream = _csv_open(kwargs['path'], 'r') + self.reader = csv.reader(self.stream, **self.defaults) + + def __iter__(self): + return self + + def next(self): + result = next(self.reader) + if sys.version_info[0] < 3: + for i, item in enumerate(result): + if not isinstance(item, text_type): + result[i] = item.decode('utf-8') + return result + + __next__ = next + +class CSVWriter(CSVBase): + def __init__(self, fn, **kwargs): + self.stream = _csv_open(fn, 'w') + self.writer = csv.writer(self.stream, **self.defaults) + + def writerow(self, row): + if sys.version_info[0] < 3: + r = [] + for item in row: + if isinstance(item, text_type): + item = item.encode('utf-8') + r.append(item) + row = r + self.writer.writerow(row) + +# +# Configurator functionality +# + +class Configurator(BaseConfigurator): + + value_converters = dict(BaseConfigurator.value_converters) + value_converters['inc'] = 'inc_convert' + + def __init__(self, config, base=None): + super(Configurator, self).__init__(config) + self.base = base or os.getcwd() + + def configure_custom(self, config): + def convert(o): + if isinstance(o, (list, tuple)): + result = type(o)([convert(i) for i in o]) + elif isinstance(o, dict): + if '()' in o: + result = self.configure_custom(o) + else: + result = {} + for k in o: + result[k] = convert(o[k]) + else: + result = self.convert(o) + return result + + c = config.pop('()') + if not callable(c): + c = self.resolve(c) + props = config.pop('.', None) + # Check for valid identifiers + args = config.pop('[]', ()) + if args: + args = tuple([convert(o) for o in args]) + items = [(k, convert(config[k])) for k in config if valid_ident(k)] + kwargs = dict(items) + result = c(*args, **kwargs) + if props: + for n, v in props.items(): + setattr(result, n, convert(v)) + return result + + def __getitem__(self, key): + result = self.config[key] + if isinstance(result, dict) and '()' in result: + self.config[key] = result = self.configure_custom(result) + return result + + def inc_convert(self, value): + """Default converter for the inc:// protocol.""" + if not os.path.isabs(value): + value = os.path.join(self.base, value) + with codecs.open(value, 'r', encoding='utf-8') as f: + result = json.load(f) + return result + +# +# Mixin for running subprocesses and capturing their output +# + +class SubprocessMixin(object): + def __init__(self, verbose=False, progress=None): + self.verbose = verbose + self.progress = progress + + def reader(self, stream, context): + """ + Read lines from a subprocess' output stream and either pass to a progress + callable (if specified) or write progress information to sys.stderr. + """ + progress = self.progress + verbose = self.verbose + while True: + s = stream.readline() + if not s: + break + if progress is not None: + progress(s, context) + else: + if not verbose: + sys.stderr.write('.') + else: + sys.stderr.write(s.decode('utf-8')) + sys.stderr.flush() + stream.close() + + def run_command(self, cmd, **kwargs): + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, + stderr=subprocess.PIPE, **kwargs) + t1 = threading.Thread(target=self.reader, args=(p.stdout, 'stdout')) + t1.start() + t2 = threading.Thread(target=self.reader, args=(p.stderr, 'stderr')) + t2.start() + p.wait() + t1.join() + t2.join() + if self.progress is not None: + self.progress('done.', 'main') + elif self.verbose: + sys.stderr.write('done.\n') + return p + + +def normalize_name(name): + """Normalize a python package name a la PEP 503""" + # https://www.python.org/dev/peps/pep-0503/#normalized-names + return re.sub('[-_.]+', '-', name).lower() diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyc b/env/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f1254aef0469c25d298ac7910255384aa5c4ccc2 GIT binary patch literal 55930 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/version.py b/env/lib/python2.7/site-packages/pip/_vendor/distlib/version.py new file mode 100644 index 0000000..48c17c0 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/distlib/version.py @@ -0,0 +1,742 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2016 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +""" +Implementation of a flexible versioning scheme providing support for PEP-440, +setuptools-compatible and semantic versioning. +""" + +import logging +import re + +from .compat import string_types + +__all__ = ['NormalizedVersion', 'NormalizedMatcher', + 'LegacyVersion', 'LegacyMatcher', + 'SemanticVersion', 'SemanticMatcher', + 'UnsupportedVersionError', 'get_scheme'] + +logger = logging.getLogger(__name__) + + +class UnsupportedVersionError(ValueError): + """This is an unsupported version.""" + pass + + +class Version(object): + def __init__(self, s): + self._string = s = s.strip() + self._parts = parts = self.parse(s) + assert isinstance(parts, tuple) + assert len(parts) > 0 + + def parse(self, s): + raise NotImplementedError('please implement in a subclass') + + def _check_compatible(self, other): + if type(self) != type(other): + raise TypeError('cannot compare %r and %r' % (self, other)) + + def __eq__(self, other): + self._check_compatible(other) + return self._parts == other._parts + + def __ne__(self, other): + return not self.__eq__(other) + + def __lt__(self, other): + self._check_compatible(other) + return self._parts < other._parts + + def __gt__(self, other): + return not (self.__lt__(other) or self.__eq__(other)) + + def __le__(self, other): + return self.__lt__(other) or self.__eq__(other) + + def __ge__(self, other): + return self.__gt__(other) or self.__eq__(other) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + def __hash__(self): + return hash(self._parts) + + def __repr__(self): + return "%s('%s')" % (self.__class__.__name__, self._string) + + def __str__(self): + return self._string + + @property + def is_prerelease(self): + raise NotImplementedError('Please implement in subclasses.') + + +class Matcher(object): + version_class = None + + dist_re = re.compile(r"^(\w[\s\w'.-]*)(\((.*)\))?") + comp_re = re.compile(r'^(<=|>=|<|>|!=|={2,3}|~=)?\s*([^\s,]+)$') + num_re = re.compile(r'^\d+(\.\d+)*$') + + # value is either a callable or the name of a method + _operators = { + '<': lambda v, c, p: v < c, + '>': lambda v, c, p: v > c, + '<=': lambda v, c, p: v == c or v < c, + '>=': lambda v, c, p: v == c or v > c, + '==': lambda v, c, p: v == c, + '===': lambda v, c, p: v == c, + # by default, compatible => >=. + '~=': lambda v, c, p: v == c or v > c, + '!=': lambda v, c, p: v != c, + } + + def __init__(self, s): + if self.version_class is None: + raise ValueError('Please specify a version class') + self._string = s = s.strip() + m = self.dist_re.match(s) + if not m: + raise ValueError('Not valid: %r' % s) + groups = m.groups('') + self.name = groups[0].strip() + self.key = self.name.lower() # for case-insensitive comparisons + clist = [] + if groups[2]: + constraints = [c.strip() for c in groups[2].split(',')] + for c in constraints: + m = self.comp_re.match(c) + if not m: + raise ValueError('Invalid %r in %r' % (c, s)) + groups = m.groups() + op = groups[0] or '~=' + s = groups[1] + if s.endswith('.*'): + if op not in ('==', '!='): + raise ValueError('\'.*\' not allowed for ' + '%r constraints' % op) + # Could be a partial version (e.g. for '2.*') which + # won't parse as a version, so keep it as a string + vn, prefix = s[:-2], True + if not self.num_re.match(vn): + # Just to check that vn is a valid version + self.version_class(vn) + else: + # Should parse as a version, so we can create an + # instance for the comparison + vn, prefix = self.version_class(s), False + clist.append((op, vn, prefix)) + self._parts = tuple(clist) + + def match(self, version): + """ + Check if the provided version matches the constraints. + + :param version: The version to match against this instance. + :type version: String or :class:`Version` instance. + """ + if isinstance(version, string_types): + version = self.version_class(version) + for operator, constraint, prefix in self._parts: + f = self._operators.get(operator) + if isinstance(f, string_types): + f = getattr(self, f) + if not f: + msg = ('%r not implemented ' + 'for %s' % (operator, self.__class__.__name__)) + raise NotImplementedError(msg) + if not f(version, constraint, prefix): + return False + return True + + @property + def exact_version(self): + result = None + if len(self._parts) == 1 and self._parts[0][0] in ('==', '==='): + result = self._parts[0][1] + return result + + def _check_compatible(self, other): + if type(self) != type(other) or self.name != other.name: + raise TypeError('cannot compare %s and %s' % (self, other)) + + def __eq__(self, other): + self._check_compatible(other) + return self.key == other.key and self._parts == other._parts + + def __ne__(self, other): + return not self.__eq__(other) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + def __hash__(self): + return hash(self.key) + hash(self._parts) + + def __repr__(self): + return "%s(%r)" % (self.__class__.__name__, self._string) + + def __str__(self): + return self._string + + +PEP440_VERSION_RE = re.compile(r'^v?(\d+!)?(\d+(\.\d+)*)((a|b|c|rc)(\d+))?' + r'(\.(post)(\d+))?(\.(dev)(\d+))?' + r'(\+([a-zA-Z\d]+(\.[a-zA-Z\d]+)?))?$') + + +def _pep_440_key(s): + s = s.strip() + m = PEP440_VERSION_RE.match(s) + if not m: + raise UnsupportedVersionError('Not a valid version: %s' % s) + groups = m.groups() + nums = tuple(int(v) for v in groups[1].split('.')) + while len(nums) > 1 and nums[-1] == 0: + nums = nums[:-1] + + if not groups[0]: + epoch = 0 + else: + epoch = int(groups[0]) + pre = groups[4:6] + post = groups[7:9] + dev = groups[10:12] + local = groups[13] + if pre == (None, None): + pre = () + else: + pre = pre[0], int(pre[1]) + if post == (None, None): + post = () + else: + post = post[0], int(post[1]) + if dev == (None, None): + dev = () + else: + dev = dev[0], int(dev[1]) + if local is None: + local = () + else: + parts = [] + for part in local.split('.'): + # to ensure that numeric compares as > lexicographic, avoid + # comparing them directly, but encode a tuple which ensures + # correct sorting + if part.isdigit(): + part = (1, int(part)) + else: + part = (0, part) + parts.append(part) + local = tuple(parts) + if not pre: + # either before pre-release, or final release and after + if not post and dev: + # before pre-release + pre = ('a', -1) # to sort before a0 + else: + pre = ('z',) # to sort after all pre-releases + # now look at the state of post and dev. + if not post: + post = ('_',) # sort before 'a' + if not dev: + dev = ('final',) + + #print('%s -> %s' % (s, m.groups())) + return epoch, nums, pre, post, dev, local + + +_normalized_key = _pep_440_key + + +class NormalizedVersion(Version): + """A rational version. + + Good: + 1.2 # equivalent to "1.2.0" + 1.2.0 + 1.2a1 + 1.2.3a2 + 1.2.3b1 + 1.2.3c1 + 1.2.3.4 + TODO: fill this out + + Bad: + 1 # minimum two numbers + 1.2a # release level must have a release serial + 1.2.3b + """ + def parse(self, s): + result = _normalized_key(s) + # _normalized_key loses trailing zeroes in the release + # clause, since that's needed to ensure that X.Y == X.Y.0 == X.Y.0.0 + # However, PEP 440 prefix matching needs it: for example, + # (~= 1.4.5.0) matches differently to (~= 1.4.5.0.0). + m = PEP440_VERSION_RE.match(s) # must succeed + groups = m.groups() + self._release_clause = tuple(int(v) for v in groups[1].split('.')) + return result + + PREREL_TAGS = set(['a', 'b', 'c', 'rc', 'dev']) + + @property + def is_prerelease(self): + return any(t[0] in self.PREREL_TAGS for t in self._parts if t) + + +def _match_prefix(x, y): + x = str(x) + y = str(y) + if x == y: + return True + if not x.startswith(y): + return False + n = len(y) + return x[n] == '.' + + +class NormalizedMatcher(Matcher): + version_class = NormalizedVersion + + # value is either a callable or the name of a method + _operators = { + '~=': '_match_compatible', + '<': '_match_lt', + '>': '_match_gt', + '<=': '_match_le', + '>=': '_match_ge', + '==': '_match_eq', + '===': '_match_arbitrary', + '!=': '_match_ne', + } + + def _adjust_local(self, version, constraint, prefix): + if prefix: + strip_local = '+' not in constraint and version._parts[-1] + else: + # both constraint and version are + # NormalizedVersion instances. + # If constraint does not have a local component, + # ensure the version doesn't, either. + strip_local = not constraint._parts[-1] and version._parts[-1] + if strip_local: + s = version._string.split('+', 1)[0] + version = self.version_class(s) + return version, constraint + + def _match_lt(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if version >= constraint: + return False + release_clause = constraint._release_clause + pfx = '.'.join([str(i) for i in release_clause]) + return not _match_prefix(version, pfx) + + def _match_gt(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if version <= constraint: + return False + release_clause = constraint._release_clause + pfx = '.'.join([str(i) for i in release_clause]) + return not _match_prefix(version, pfx) + + def _match_le(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + return version <= constraint + + def _match_ge(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + return version >= constraint + + def _match_eq(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if not prefix: + result = (version == constraint) + else: + result = _match_prefix(version, constraint) + return result + + def _match_arbitrary(self, version, constraint, prefix): + return str(version) == str(constraint) + + def _match_ne(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if not prefix: + result = (version != constraint) + else: + result = not _match_prefix(version, constraint) + return result + + def _match_compatible(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if version == constraint: + return True + if version < constraint: + return False +# if not prefix: +# return True + release_clause = constraint._release_clause + if len(release_clause) > 1: + release_clause = release_clause[:-1] + pfx = '.'.join([str(i) for i in release_clause]) + return _match_prefix(version, pfx) + +_REPLACEMENTS = ( + (re.compile('[.+-]$'), ''), # remove trailing puncts + (re.compile(r'^[.](\d)'), r'0.\1'), # .N -> 0.N at start + (re.compile('^[.-]'), ''), # remove leading puncts + (re.compile(r'^\((.*)\)$'), r'\1'), # remove parentheses + (re.compile(r'^v(ersion)?\s*(\d+)'), r'\2'), # remove leading v(ersion) + (re.compile(r'^r(ev)?\s*(\d+)'), r'\2'), # remove leading v(ersion) + (re.compile('[.]{2,}'), '.'), # multiple runs of '.' + (re.compile(r'\b(alfa|apha)\b'), 'alpha'), # misspelt alpha + (re.compile(r'\b(pre-alpha|prealpha)\b'), + 'pre.alpha'), # standardise + (re.compile(r'\(beta\)$'), 'beta'), # remove parentheses +) + +_SUFFIX_REPLACEMENTS = ( + (re.compile('^[:~._+-]+'), ''), # remove leading puncts + (re.compile('[,*")([\]]'), ''), # remove unwanted chars + (re.compile('[~:+_ -]'), '.'), # replace illegal chars + (re.compile('[.]{2,}'), '.'), # multiple runs of '.' + (re.compile(r'\.$'), ''), # trailing '.' +) + +_NUMERIC_PREFIX = re.compile(r'(\d+(\.\d+)*)') + + +def _suggest_semantic_version(s): + """ + Try to suggest a semantic form for a version for which + _suggest_normalized_version couldn't come up with anything. + """ + result = s.strip().lower() + for pat, repl in _REPLACEMENTS: + result = pat.sub(repl, result) + if not result: + result = '0.0.0' + + # Now look for numeric prefix, and separate it out from + # the rest. + #import pdb; pdb.set_trace() + m = _NUMERIC_PREFIX.match(result) + if not m: + prefix = '0.0.0' + suffix = result + else: + prefix = m.groups()[0].split('.') + prefix = [int(i) for i in prefix] + while len(prefix) < 3: + prefix.append(0) + if len(prefix) == 3: + suffix = result[m.end():] + else: + suffix = '.'.join([str(i) for i in prefix[3:]]) + result[m.end():] + prefix = prefix[:3] + prefix = '.'.join([str(i) for i in prefix]) + suffix = suffix.strip() + if suffix: + #import pdb; pdb.set_trace() + # massage the suffix. + for pat, repl in _SUFFIX_REPLACEMENTS: + suffix = pat.sub(repl, suffix) + + if not suffix: + result = prefix + else: + sep = '-' if 'dev' in suffix else '+' + result = prefix + sep + suffix + if not is_semver(result): + result = None + return result + + +def _suggest_normalized_version(s): + """Suggest a normalized version close to the given version string. + + If you have a version string that isn't rational (i.e. NormalizedVersion + doesn't like it) then you might be able to get an equivalent (or close) + rational version from this function. + + This does a number of simple normalizations to the given string, based + on observation of versions currently in use on PyPI. Given a dump of + those version during PyCon 2009, 4287 of them: + - 2312 (53.93%) match NormalizedVersion without change + with the automatic suggestion + - 3474 (81.04%) match when using this suggestion method + + @param s {str} An irrational version string. + @returns A rational version string, or None, if couldn't determine one. + """ + try: + _normalized_key(s) + return s # already rational + except UnsupportedVersionError: + pass + + rs = s.lower() + + # part of this could use maketrans + for orig, repl in (('-alpha', 'a'), ('-beta', 'b'), ('alpha', 'a'), + ('beta', 'b'), ('rc', 'c'), ('-final', ''), + ('-pre', 'c'), + ('-release', ''), ('.release', ''), ('-stable', ''), + ('+', '.'), ('_', '.'), (' ', ''), ('.final', ''), + ('final', '')): + rs = rs.replace(orig, repl) + + # if something ends with dev or pre, we add a 0 + rs = re.sub(r"pre$", r"pre0", rs) + rs = re.sub(r"dev$", r"dev0", rs) + + # if we have something like "b-2" or "a.2" at the end of the + # version, that is probably beta, alpha, etc + # let's remove the dash or dot + rs = re.sub(r"([abc]|rc)[\-\.](\d+)$", r"\1\2", rs) + + # 1.0-dev-r371 -> 1.0.dev371 + # 0.1-dev-r79 -> 0.1.dev79 + rs = re.sub(r"[\-\.](dev)[\-\.]?r?(\d+)$", r".\1\2", rs) + + # Clean: 2.0.a.3, 2.0.b1, 0.9.0~c1 + rs = re.sub(r"[.~]?([abc])\.?", r"\1", rs) + + # Clean: v0.3, v1.0 + if rs.startswith('v'): + rs = rs[1:] + + # Clean leading '0's on numbers. + #TODO: unintended side-effect on, e.g., "2003.05.09" + # PyPI stats: 77 (~2%) better + rs = re.sub(r"\b0+(\d+)(?!\d)", r"\1", rs) + + # Clean a/b/c with no version. E.g. "1.0a" -> "1.0a0". Setuptools infers + # zero. + # PyPI stats: 245 (7.56%) better + rs = re.sub(r"(\d+[abc])$", r"\g<1>0", rs) + + # the 'dev-rNNN' tag is a dev tag + rs = re.sub(r"\.?(dev-r|dev\.r)\.?(\d+)$", r".dev\2", rs) + + # clean the - when used as a pre delimiter + rs = re.sub(r"-(a|b|c)(\d+)$", r"\1\2", rs) + + # a terminal "dev" or "devel" can be changed into ".dev0" + rs = re.sub(r"[\.\-](dev|devel)$", r".dev0", rs) + + # a terminal "dev" can be changed into ".dev0" + rs = re.sub(r"(?![\.\-])dev$", r".dev0", rs) + + # a terminal "final" or "stable" can be removed + rs = re.sub(r"(final|stable)$", "", rs) + + # The 'r' and the '-' tags are post release tags + # 0.4a1.r10 -> 0.4a1.post10 + # 0.9.33-17222 -> 0.9.33.post17222 + # 0.9.33-r17222 -> 0.9.33.post17222 + rs = re.sub(r"\.?(r|-|-r)\.?(\d+)$", r".post\2", rs) + + # Clean 'r' instead of 'dev' usage: + # 0.9.33+r17222 -> 0.9.33.dev17222 + # 1.0dev123 -> 1.0.dev123 + # 1.0.git123 -> 1.0.dev123 + # 1.0.bzr123 -> 1.0.dev123 + # 0.1a0dev.123 -> 0.1a0.dev123 + # PyPI stats: ~150 (~4%) better + rs = re.sub(r"\.?(dev|git|bzr)\.?(\d+)$", r".dev\2", rs) + + # Clean '.pre' (normalized from '-pre' above) instead of 'c' usage: + # 0.2.pre1 -> 0.2c1 + # 0.2-c1 -> 0.2c1 + # 1.0preview123 -> 1.0c123 + # PyPI stats: ~21 (0.62%) better + rs = re.sub(r"\.?(pre|preview|-c)(\d+)$", r"c\g<2>", rs) + + # Tcl/Tk uses "px" for their post release markers + rs = re.sub(r"p(\d+)$", r".post\1", rs) + + try: + _normalized_key(rs) + except UnsupportedVersionError: + rs = None + return rs + +# +# Legacy version processing (distribute-compatible) +# + +_VERSION_PART = re.compile(r'([a-z]+|\d+|[\.-])', re.I) +_VERSION_REPLACE = { + 'pre': 'c', + 'preview': 'c', + '-': 'final-', + 'rc': 'c', + 'dev': '@', + '': None, + '.': None, +} + + +def _legacy_key(s): + def get_parts(s): + result = [] + for p in _VERSION_PART.split(s.lower()): + p = _VERSION_REPLACE.get(p, p) + if p: + if '0' <= p[:1] <= '9': + p = p.zfill(8) + else: + p = '*' + p + result.append(p) + result.append('*final') + return result + + result = [] + for p in get_parts(s): + if p.startswith('*'): + if p < '*final': + while result and result[-1] == '*final-': + result.pop() + while result and result[-1] == '00000000': + result.pop() + result.append(p) + return tuple(result) + + +class LegacyVersion(Version): + def parse(self, s): + return _legacy_key(s) + + @property + def is_prerelease(self): + result = False + for x in self._parts: + if (isinstance(x, string_types) and x.startswith('*') and + x < '*final'): + result = True + break + return result + + +class LegacyMatcher(Matcher): + version_class = LegacyVersion + + _operators = dict(Matcher._operators) + _operators['~='] = '_match_compatible' + + numeric_re = re.compile('^(\d+(\.\d+)*)') + + def _match_compatible(self, version, constraint, prefix): + if version < constraint: + return False + m = self.numeric_re.match(str(constraint)) + if not m: + logger.warning('Cannot compute compatible match for version %s ' + ' and constraint %s', version, constraint) + return True + s = m.groups()[0] + if '.' in s: + s = s.rsplit('.', 1)[0] + return _match_prefix(version, s) + +# +# Semantic versioning +# + +_SEMVER_RE = re.compile(r'^(\d+)\.(\d+)\.(\d+)' + r'(-[a-z0-9]+(\.[a-z0-9-]+)*)?' + r'(\+[a-z0-9]+(\.[a-z0-9-]+)*)?$', re.I) + + +def is_semver(s): + return _SEMVER_RE.match(s) + + +def _semantic_key(s): + def make_tuple(s, absent): + if s is None: + result = (absent,) + else: + parts = s[1:].split('.') + # We can't compare ints and strings on Python 3, so fudge it + # by zero-filling numeric values so simulate a numeric comparison + result = tuple([p.zfill(8) if p.isdigit() else p for p in parts]) + return result + + m = is_semver(s) + if not m: + raise UnsupportedVersionError(s) + groups = m.groups() + major, minor, patch = [int(i) for i in groups[:3]] + # choose the '|' and '*' so that versions sort correctly + pre, build = make_tuple(groups[3], '|'), make_tuple(groups[5], '*') + return (major, minor, patch), pre, build + + +class SemanticVersion(Version): + def parse(self, s): + return _semantic_key(s) + + @property + def is_prerelease(self): + return self._parts[1][0] != '|' + + +class SemanticMatcher(Matcher): + version_class = SemanticVersion + + +class VersionScheme(object): + def __init__(self, key, matcher, suggester=None): + self.key = key + self.matcher = matcher + self.suggester = suggester + + def is_valid_version(self, s): + try: + self.matcher.version_class(s) + result = True + except UnsupportedVersionError: + result = False + return result + + def is_valid_matcher(self, s): + try: + self.matcher(s) + result = True + except UnsupportedVersionError: + result = False + return result + + def is_valid_constraint_list(self, s): + """ + Used for processing some metadata fields + """ + return self.is_valid_matcher('dummy_name (%s)' % s) + + def suggest(self, s): + if self.suggester is None: + result = None + else: + result = self.suggester(s) + return result + +_SCHEMES = { + 'normalized': VersionScheme(_normalized_key, NormalizedMatcher, + _suggest_normalized_version), + 'legacy': VersionScheme(_legacy_key, LegacyMatcher, lambda self, s: s), + 'semantic': VersionScheme(_semantic_key, SemanticMatcher, + _suggest_semantic_version), +} + +_SCHEMES['default'] = _SCHEMES['normalized'] + + +def get_scheme(name): + if name not in _SCHEMES: + raise ValueError('unknown scheme name: %r' % name) + return _SCHEMES[name] diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/version.pyc b/env/lib/python2.7/site-packages/pip/_vendor/distlib/version.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ccd64ac221aad14d4c56a27a3301e76c83fc6380 GIT binary patch literal 25885 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/w32.exe b/env/lib/python2.7/site-packages/pip/_vendor/distlib/w32.exe new file mode 100644 index 0000000000000000000000000000000000000000..85a90a5f51a9596679a7365eadd3352443b95782 GIT binary patch literal 85504 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[^-]+) +-(?P\d+[^-]*) +(-(?P\d+[^-]*))? +-(?P\w+\d+(\.\w+\d+)*) +-(?P\w+) +-(?P\w+(\.\w+)*) +\.whl$ +''', re.IGNORECASE | re.VERBOSE) + +NAME_VERSION_RE = re.compile(r''' +(?P[^-]+) +-(?P\d+[^-]*) +(-(?P\d+[^-]*))?$ +''', re.IGNORECASE | re.VERBOSE) + +SHEBANG_RE = re.compile(br'\s*#![^\r\n]*') +SHEBANG_DETAIL_RE = re.compile(br'^(\s*#!("[^"]+"|\S+))\s+(.*)$') +SHEBANG_PYTHON = b'#!python' +SHEBANG_PYTHONW = b'#!pythonw' + +if os.sep == '/': + to_posix = lambda o: o +else: + to_posix = lambda o: o.replace(os.sep, '/') + + +class Mounter(object): + def __init__(self): + self.impure_wheels = {} + self.libs = {} + + def add(self, pathname, extensions): + self.impure_wheels[pathname] = extensions + self.libs.update(extensions) + + def remove(self, pathname): + extensions = self.impure_wheels.pop(pathname) + for k, v in extensions: + if k in self.libs: + del self.libs[k] + + def find_module(self, fullname, path=None): + if fullname in self.libs: + result = self + else: + result = None + return result + + def load_module(self, fullname): + if fullname in sys.modules: + result = sys.modules[fullname] + else: + if fullname not in self.libs: + raise ImportError('unable to find extension for %s' % fullname) + result = imp.load_dynamic(fullname, self.libs[fullname]) + result.__loader__ = self + parts = fullname.rsplit('.', 1) + if len(parts) > 1: + result.__package__ = parts[0] + return result + +_hook = Mounter() + + +class Wheel(object): + """ + Class to build and install from Wheel files (PEP 427). + """ + + wheel_version = (1, 1) + hash_kind = 'sha256' + + def __init__(self, filename=None, sign=False, verify=False): + """ + Initialise an instance using a (valid) filename. + """ + self.sign = sign + self.should_verify = verify + self.buildver = '' + self.pyver = [PYVER] + self.abi = ['none'] + self.arch = ['any'] + self.dirname = os.getcwd() + if filename is None: + self.name = 'dummy' + self.version = '0.1' + self._filename = self.filename + else: + m = NAME_VERSION_RE.match(filename) + if m: + info = m.groupdict('') + self.name = info['nm'] + # Reinstate the local version separator + self.version = info['vn'].replace('_', '-') + self.buildver = info['bn'] + self._filename = self.filename + else: + dirname, filename = os.path.split(filename) + m = FILENAME_RE.match(filename) + if not m: + raise DistlibException('Invalid name or ' + 'filename: %r' % filename) + if dirname: + self.dirname = os.path.abspath(dirname) + self._filename = filename + info = m.groupdict('') + self.name = info['nm'] + self.version = info['vn'] + self.buildver = info['bn'] + self.pyver = info['py'].split('.') + self.abi = info['bi'].split('.') + self.arch = info['ar'].split('.') + + @property + def filename(self): + """ + Build and return a filename from the various components. + """ + if self.buildver: + buildver = '-' + self.buildver + else: + buildver = '' + pyver = '.'.join(self.pyver) + abi = '.'.join(self.abi) + arch = '.'.join(self.arch) + # replace - with _ as a local version separator + version = self.version.replace('-', '_') + return '%s-%s%s-%s-%s-%s.whl' % (self.name, version, buildver, + pyver, abi, arch) + + @property + def exists(self): + path = os.path.join(self.dirname, self.filename) + return os.path.isfile(path) + + @property + def tags(self): + for pyver in self.pyver: + for abi in self.abi: + for arch in self.arch: + yield pyver, abi, arch + + @cached_property + def metadata(self): + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + wrapper = codecs.getreader('utf-8') + with ZipFile(pathname, 'r') as zf: + wheel_metadata = self.get_wheel_metadata(zf) + wv = wheel_metadata['Wheel-Version'].split('.', 1) + file_version = tuple([int(i) for i in wv]) + if file_version < (1, 1): + fn = 'METADATA' + else: + fn = METADATA_FILENAME + try: + metadata_filename = posixpath.join(info_dir, fn) + with zf.open(metadata_filename) as bf: + wf = wrapper(bf) + result = Metadata(fileobj=wf) + except KeyError: + raise ValueError('Invalid wheel, because %s is ' + 'missing' % fn) + return result + + def get_wheel_metadata(self, zf): + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + metadata_filename = posixpath.join(info_dir, 'WHEEL') + with zf.open(metadata_filename) as bf: + wf = codecs.getreader('utf-8')(bf) + message = message_from_file(wf) + return dict(message) + + @cached_property + def info(self): + pathname = os.path.join(self.dirname, self.filename) + with ZipFile(pathname, 'r') as zf: + result = self.get_wheel_metadata(zf) + return result + + def process_shebang(self, data): + m = SHEBANG_RE.match(data) + if m: + end = m.end() + shebang, data_after_shebang = data[:end], data[end:] + # Preserve any arguments after the interpreter + if b'pythonw' in shebang.lower(): + shebang_python = SHEBANG_PYTHONW + else: + shebang_python = SHEBANG_PYTHON + m = SHEBANG_DETAIL_RE.match(shebang) + if m: + args = b' ' + m.groups()[-1] + else: + args = b'' + shebang = shebang_python + args + data = shebang + data_after_shebang + else: + cr = data.find(b'\r') + lf = data.find(b'\n') + if cr < 0 or cr > lf: + term = b'\n' + else: + if data[cr:cr + 2] == b'\r\n': + term = b'\r\n' + else: + term = b'\r' + data = SHEBANG_PYTHON + term + data + return data + + def get_hash(self, data, hash_kind=None): + if hash_kind is None: + hash_kind = self.hash_kind + try: + hasher = getattr(hashlib, hash_kind) + except AttributeError: + raise DistlibException('Unsupported hash algorithm: %r' % hash_kind) + result = hasher(data).digest() + result = base64.urlsafe_b64encode(result).rstrip(b'=').decode('ascii') + return hash_kind, result + + def write_record(self, records, record_path, base): + records = list(records) # make a copy for sorting + p = to_posix(os.path.relpath(record_path, base)) + records.append((p, '', '')) + records.sort() + with CSVWriter(record_path) as writer: + for row in records: + writer.writerow(row) + + def write_records(self, info, libdir, archive_paths): + records = [] + distinfo, info_dir = info + hasher = getattr(hashlib, self.hash_kind) + for ap, p in archive_paths: + with open(p, 'rb') as f: + data = f.read() + digest = '%s=%s' % self.get_hash(data) + size = os.path.getsize(p) + records.append((ap, digest, size)) + + p = os.path.join(distinfo, 'RECORD') + self.write_record(records, p, libdir) + ap = to_posix(os.path.join(info_dir, 'RECORD')) + archive_paths.append((ap, p)) + + def build_zip(self, pathname, archive_paths): + with ZipFile(pathname, 'w', zipfile.ZIP_DEFLATED) as zf: + for ap, p in archive_paths: + logger.debug('Wrote %s to %s in wheel', p, ap) + zf.write(p, ap) + + def build(self, paths, tags=None, wheel_version=None): + """ + Build a wheel from files in specified paths, and use any specified tags + when determining the name of the wheel. + """ + if tags is None: + tags = {} + + libkey = list(filter(lambda o: o in paths, ('purelib', 'platlib')))[0] + if libkey == 'platlib': + is_pure = 'false' + default_pyver = [IMPVER] + default_abi = [ABI] + default_arch = [ARCH] + else: + is_pure = 'true' + default_pyver = [PYVER] + default_abi = ['none'] + default_arch = ['any'] + + self.pyver = tags.get('pyver', default_pyver) + self.abi = tags.get('abi', default_abi) + self.arch = tags.get('arch', default_arch) + + libdir = paths[libkey] + + name_ver = '%s-%s' % (self.name, self.version) + data_dir = '%s.data' % name_ver + info_dir = '%s.dist-info' % name_ver + + archive_paths = [] + + # First, stuff which is not in site-packages + for key in ('data', 'headers', 'scripts'): + if key not in paths: + continue + path = paths[key] + if os.path.isdir(path): + for root, dirs, files in os.walk(path): + for fn in files: + p = fsdecode(os.path.join(root, fn)) + rp = os.path.relpath(p, path) + ap = to_posix(os.path.join(data_dir, key, rp)) + archive_paths.append((ap, p)) + if key == 'scripts' and not p.endswith('.exe'): + with open(p, 'rb') as f: + data = f.read() + data = self.process_shebang(data) + with open(p, 'wb') as f: + f.write(data) + + # Now, stuff which is in site-packages, other than the + # distinfo stuff. + path = libdir + distinfo = None + for root, dirs, files in os.walk(path): + if root == path: + # At the top level only, save distinfo for later + # and skip it for now + for i, dn in enumerate(dirs): + dn = fsdecode(dn) + if dn.endswith('.dist-info'): + distinfo = os.path.join(root, dn) + del dirs[i] + break + assert distinfo, '.dist-info directory expected, not found' + + for fn in files: + # comment out next suite to leave .pyc files in + if fsdecode(fn).endswith(('.pyc', '.pyo')): + continue + p = os.path.join(root, fn) + rp = to_posix(os.path.relpath(p, path)) + archive_paths.append((rp, p)) + + # Now distinfo. Assumed to be flat, i.e. os.listdir is enough. + files = os.listdir(distinfo) + for fn in files: + if fn not in ('RECORD', 'INSTALLER', 'SHARED', 'WHEEL'): + p = fsdecode(os.path.join(distinfo, fn)) + ap = to_posix(os.path.join(info_dir, fn)) + archive_paths.append((ap, p)) + + wheel_metadata = [ + 'Wheel-Version: %d.%d' % (wheel_version or self.wheel_version), + 'Generator: distlib %s' % __version__, + 'Root-Is-Purelib: %s' % is_pure, + ] + for pyver, abi, arch in self.tags: + wheel_metadata.append('Tag: %s-%s-%s' % (pyver, abi, arch)) + p = os.path.join(distinfo, 'WHEEL') + with open(p, 'w') as f: + f.write('\n'.join(wheel_metadata)) + ap = to_posix(os.path.join(info_dir, 'WHEEL')) + archive_paths.append((ap, p)) + + # Now, at last, RECORD. + # Paths in here are archive paths - nothing else makes sense. + self.write_records((distinfo, info_dir), libdir, archive_paths) + # Now, ready to build the zip file + pathname = os.path.join(self.dirname, self.filename) + self.build_zip(pathname, archive_paths) + return pathname + + def install(self, paths, maker, **kwargs): + """ + Install a wheel to the specified paths. If kwarg ``warner`` is + specified, it should be a callable, which will be called with two + tuples indicating the wheel version of this software and the wheel + version in the file, if there is a discrepancy in the versions. + This can be used to issue any warnings to raise any exceptions. + If kwarg ``lib_only`` is True, only the purelib/platlib files are + installed, and the headers, scripts, data and dist-info metadata are + not written. + + The return value is a :class:`InstalledDistribution` instance unless + ``options.lib_only`` is True, in which case the return value is ``None``. + """ + + dry_run = maker.dry_run + warner = kwargs.get('warner') + lib_only = kwargs.get('lib_only', False) + + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + data_dir = '%s.data' % name_ver + info_dir = '%s.dist-info' % name_ver + + metadata_name = posixpath.join(info_dir, METADATA_FILENAME) + wheel_metadata_name = posixpath.join(info_dir, 'WHEEL') + record_name = posixpath.join(info_dir, 'RECORD') + + wrapper = codecs.getreader('utf-8') + + with ZipFile(pathname, 'r') as zf: + with zf.open(wheel_metadata_name) as bwf: + wf = wrapper(bwf) + message = message_from_file(wf) + wv = message['Wheel-Version'].split('.', 1) + file_version = tuple([int(i) for i in wv]) + if (file_version != self.wheel_version) and warner: + warner(self.wheel_version, file_version) + + if message['Root-Is-Purelib'] == 'true': + libdir = paths['purelib'] + else: + libdir = paths['platlib'] + + records = {} + with zf.open(record_name) as bf: + with CSVReader(stream=bf) as reader: + for row in reader: + p = row[0] + records[p] = row + + data_pfx = posixpath.join(data_dir, '') + info_pfx = posixpath.join(info_dir, '') + script_pfx = posixpath.join(data_dir, 'scripts', '') + + # make a new instance rather than a copy of maker's, + # as we mutate it + fileop = FileOperator(dry_run=dry_run) + fileop.record = True # so we can rollback if needed + + bc = not sys.dont_write_bytecode # Double negatives. Lovely! + + outfiles = [] # for RECORD writing + + # for script copying/shebang processing + workdir = tempfile.mkdtemp() + # set target dir later + # we default add_launchers to False, as the + # Python Launcher should be used instead + maker.source_dir = workdir + maker.target_dir = None + try: + for zinfo in zf.infolist(): + arcname = zinfo.filename + if isinstance(arcname, text_type): + u_arcname = arcname + else: + u_arcname = arcname.decode('utf-8') + # The signature file won't be in RECORD, + # and we don't currently don't do anything with it + if u_arcname.endswith('/RECORD.jws'): + continue + row = records[u_arcname] + if row[2] and str(zinfo.file_size) != row[2]: + raise DistlibException('size mismatch for ' + '%s' % u_arcname) + if row[1]: + kind, value = row[1].split('=', 1) + with zf.open(arcname) as bf: + data = bf.read() + _, digest = self.get_hash(data, kind) + if digest != value: + raise DistlibException('digest mismatch for ' + '%s' % arcname) + + if lib_only and u_arcname.startswith((info_pfx, data_pfx)): + logger.debug('lib_only: skipping %s', u_arcname) + continue + is_script = (u_arcname.startswith(script_pfx) + and not u_arcname.endswith('.exe')) + + if u_arcname.startswith(data_pfx): + _, where, rp = u_arcname.split('/', 2) + outfile = os.path.join(paths[where], convert_path(rp)) + else: + # meant for site-packages. + if u_arcname in (wheel_metadata_name, record_name): + continue + outfile = os.path.join(libdir, convert_path(u_arcname)) + if not is_script: + with zf.open(arcname) as bf: + fileop.copy_stream(bf, outfile) + outfiles.append(outfile) + # Double check the digest of the written file + if not dry_run and row[1]: + with open(outfile, 'rb') as bf: + data = bf.read() + _, newdigest = self.get_hash(data, kind) + if newdigest != digest: + raise DistlibException('digest mismatch ' + 'on write for ' + '%s' % outfile) + if bc and outfile.endswith('.py'): + try: + pyc = fileop.byte_compile(outfile) + outfiles.append(pyc) + except Exception: + # Don't give up if byte-compilation fails, + # but log it and perhaps warn the user + logger.warning('Byte-compilation failed', + exc_info=True) + else: + fn = os.path.basename(convert_path(arcname)) + workname = os.path.join(workdir, fn) + with zf.open(arcname) as bf: + fileop.copy_stream(bf, workname) + + dn, fn = os.path.split(outfile) + maker.target_dir = dn + filenames = maker.make(fn) + fileop.set_executable_mode(filenames) + outfiles.extend(filenames) + + if lib_only: + logger.debug('lib_only: returning None') + dist = None + else: + # Generate scripts + + # Try to get pydist.json so we can see if there are + # any commands to generate. If this fails (e.g. because + # of a legacy wheel), log a warning but don't give up. + commands = None + file_version = self.info['Wheel-Version'] + if file_version == '1.0': + # Use legacy info + ep = posixpath.join(info_dir, 'entry_points.txt') + try: + with zf.open(ep) as bwf: + epdata = read_exports(bwf) + commands = {} + for key in ('console', 'gui'): + k = '%s_scripts' % key + if k in epdata: + commands['wrap_%s' % key] = d = {} + for v in epdata[k].values(): + s = '%s:%s' % (v.prefix, v.suffix) + if v.flags: + s += ' %s' % v.flags + d[v.name] = s + except Exception: + logger.warning('Unable to read legacy script ' + 'metadata, so cannot generate ' + 'scripts') + else: + try: + with zf.open(metadata_name) as bwf: + wf = wrapper(bwf) + commands = json.load(wf).get('extensions') + if commands: + commands = commands.get('python.commands') + except Exception: + logger.warning('Unable to read JSON metadata, so ' + 'cannot generate scripts') + if commands: + console_scripts = commands.get('wrap_console', {}) + gui_scripts = commands.get('wrap_gui', {}) + if console_scripts or gui_scripts: + script_dir = paths.get('scripts', '') + if not os.path.isdir(script_dir): + raise ValueError('Valid script path not ' + 'specified') + maker.target_dir = script_dir + for k, v in console_scripts.items(): + script = '%s = %s' % (k, v) + filenames = maker.make(script) + fileop.set_executable_mode(filenames) + + if gui_scripts: + options = {'gui': True } + for k, v in gui_scripts.items(): + script = '%s = %s' % (k, v) + filenames = maker.make(script, options) + fileop.set_executable_mode(filenames) + + p = os.path.join(libdir, info_dir) + dist = InstalledDistribution(p) + + # Write SHARED + paths = dict(paths) # don't change passed in dict + del paths['purelib'] + del paths['platlib'] + paths['lib'] = libdir + p = dist.write_shared_locations(paths, dry_run) + if p: + outfiles.append(p) + + # Write RECORD + dist.write_installed_files(outfiles, paths['prefix'], + dry_run) + return dist + except Exception: # pragma: no cover + logger.exception('installation failed.') + fileop.rollback() + raise + finally: + shutil.rmtree(workdir) + + def _get_dylib_cache(self): + global cache + if cache is None: + # Use native string to avoid issues on 2.x: see Python #20140. + base = os.path.join(get_cache_base(), str('dylib-cache'), + sys.version[:3]) + cache = Cache(base) + return cache + + def _get_extensions(self): + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + arcname = posixpath.join(info_dir, 'EXTENSIONS') + wrapper = codecs.getreader('utf-8') + result = [] + with ZipFile(pathname, 'r') as zf: + try: + with zf.open(arcname) as bf: + wf = wrapper(bf) + extensions = json.load(wf) + cache = self._get_dylib_cache() + prefix = cache.prefix_to_dir(pathname) + cache_base = os.path.join(cache.base, prefix) + if not os.path.isdir(cache_base): + os.makedirs(cache_base) + for name, relpath in extensions.items(): + dest = os.path.join(cache_base, convert_path(relpath)) + if not os.path.exists(dest): + extract = True + else: + file_time = os.stat(dest).st_mtime + file_time = datetime.datetime.fromtimestamp(file_time) + info = zf.getinfo(relpath) + wheel_time = datetime.datetime(*info.date_time) + extract = wheel_time > file_time + if extract: + zf.extract(relpath, cache_base) + result.append((name, dest)) + except KeyError: + pass + return result + + def is_compatible(self): + """ + Determine if a wheel is compatible with the running system. + """ + return is_compatible(self) + + def is_mountable(self): + """ + Determine if a wheel is asserted as mountable by its metadata. + """ + return True # for now - metadata details TBD + + def mount(self, append=False): + pathname = os.path.abspath(os.path.join(self.dirname, self.filename)) + if not self.is_compatible(): + msg = 'Wheel %s not compatible with this Python.' % pathname + raise DistlibException(msg) + if not self.is_mountable(): + msg = 'Wheel %s is marked as not mountable.' % pathname + raise DistlibException(msg) + if pathname in sys.path: + logger.debug('%s already in path', pathname) + else: + if append: + sys.path.append(pathname) + else: + sys.path.insert(0, pathname) + extensions = self._get_extensions() + if extensions: + if _hook not in sys.meta_path: + sys.meta_path.append(_hook) + _hook.add(pathname, extensions) + + def unmount(self): + pathname = os.path.abspath(os.path.join(self.dirname, self.filename)) + if pathname not in sys.path: + logger.debug('%s not in path', pathname) + else: + sys.path.remove(pathname) + if pathname in _hook.impure_wheels: + _hook.remove(pathname) + if not _hook.impure_wheels: + if _hook in sys.meta_path: + sys.meta_path.remove(_hook) + + def verify(self): + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + data_dir = '%s.data' % name_ver + info_dir = '%s.dist-info' % name_ver + + metadata_name = posixpath.join(info_dir, METADATA_FILENAME) + wheel_metadata_name = posixpath.join(info_dir, 'WHEEL') + record_name = posixpath.join(info_dir, 'RECORD') + + wrapper = codecs.getreader('utf-8') + + with ZipFile(pathname, 'r') as zf: + with zf.open(wheel_metadata_name) as bwf: + wf = wrapper(bwf) + message = message_from_file(wf) + wv = message['Wheel-Version'].split('.', 1) + file_version = tuple([int(i) for i in wv]) + # TODO version verification + + records = {} + with zf.open(record_name) as bf: + with CSVReader(stream=bf) as reader: + for row in reader: + p = row[0] + records[p] = row + + for zinfo in zf.infolist(): + arcname = zinfo.filename + if isinstance(arcname, text_type): + u_arcname = arcname + else: + u_arcname = arcname.decode('utf-8') + if '..' in u_arcname: + raise DistlibException('invalid entry in ' + 'wheel: %r' % u_arcname) + + # The signature file won't be in RECORD, + # and we don't currently don't do anything with it + if u_arcname.endswith('/RECORD.jws'): + continue + row = records[u_arcname] + if row[2] and str(zinfo.file_size) != row[2]: + raise DistlibException('size mismatch for ' + '%s' % u_arcname) + if row[1]: + kind, value = row[1].split('=', 1) + with zf.open(arcname) as bf: + data = bf.read() + _, digest = self.get_hash(data, kind) + if digest != value: + raise DistlibException('digest mismatch for ' + '%s' % arcname) + + def update(self, modifier, dest_dir=None, **kwargs): + """ + Update the contents of a wheel in a generic way. The modifier should + be a callable which expects a dictionary argument: its keys are + archive-entry paths, and its values are absolute filesystem paths + where the contents the corresponding archive entries can be found. The + modifier is free to change the contents of the files pointed to, add + new entries and remove entries, before returning. This method will + extract the entire contents of the wheel to a temporary location, call + the modifier, and then use the passed (and possibly updated) + dictionary to write a new wheel. If ``dest_dir`` is specified, the new + wheel is written there -- otherwise, the original wheel is overwritten. + + The modifier should return True if it updated the wheel, else False. + This method returns the same value the modifier returns. + """ + + def get_version(path_map, info_dir): + version = path = None + key = '%s/%s' % (info_dir, METADATA_FILENAME) + if key not in path_map: + key = '%s/PKG-INFO' % info_dir + if key in path_map: + path = path_map[key] + version = Metadata(path=path).version + return version, path + + def update_version(version, path): + updated = None + try: + v = NormalizedVersion(version) + i = version.find('-') + if i < 0: + updated = '%s+1' % version + else: + parts = [int(s) for s in version[i + 1:].split('.')] + parts[-1] += 1 + updated = '%s+%s' % (version[:i], + '.'.join(str(i) for i in parts)) + except UnsupportedVersionError: + logger.debug('Cannot update non-compliant (PEP-440) ' + 'version %r', version) + if updated: + md = Metadata(path=path) + md.version = updated + legacy = not path.endswith(METADATA_FILENAME) + md.write(path=path, legacy=legacy) + logger.debug('Version updated from %r to %r', version, + updated) + + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + record_name = posixpath.join(info_dir, 'RECORD') + with tempdir() as workdir: + with ZipFile(pathname, 'r') as zf: + path_map = {} + for zinfo in zf.infolist(): + arcname = zinfo.filename + if isinstance(arcname, text_type): + u_arcname = arcname + else: + u_arcname = arcname.decode('utf-8') + if u_arcname == record_name: + continue + if '..' in u_arcname: + raise DistlibException('invalid entry in ' + 'wheel: %r' % u_arcname) + zf.extract(zinfo, workdir) + path = os.path.join(workdir, convert_path(u_arcname)) + path_map[u_arcname] = path + + # Remember the version. + original_version, _ = get_version(path_map, info_dir) + # Files extracted. Call the modifier. + modified = modifier(path_map, **kwargs) + if modified: + # Something changed - need to build a new wheel. + current_version, path = get_version(path_map, info_dir) + if current_version and (current_version == original_version): + # Add or update local version to signify changes. + update_version(current_version, path) + # Decide where the new wheel goes. + if dest_dir is None: + fd, newpath = tempfile.mkstemp(suffix='.whl', + prefix='wheel-update-', + dir=workdir) + os.close(fd) + else: + if not os.path.isdir(dest_dir): + raise DistlibException('Not a directory: %r' % dest_dir) + newpath = os.path.join(dest_dir, self.filename) + archive_paths = list(path_map.items()) + distinfo = os.path.join(workdir, info_dir) + info = distinfo, info_dir + self.write_records(info, workdir, archive_paths) + self.build_zip(newpath, archive_paths) + if dest_dir is None: + shutil.copyfile(newpath, pathname) + return modified + +def compatible_tags(): + """ + Return (pyver, abi, arch) tuples compatible with this Python. + """ + versions = [VER_SUFFIX] + major = VER_SUFFIX[0] + for minor in range(sys.version_info[1] - 1, - 1, -1): + versions.append(''.join([major, str(minor)])) + + abis = [] + for suffix, _, _ in imp.get_suffixes(): + if suffix.startswith('.abi'): + abis.append(suffix.split('.', 2)[1]) + abis.sort() + if ABI != 'none': + abis.insert(0, ABI) + abis.append('none') + result = [] + + arches = [ARCH] + if sys.platform == 'darwin': + m = re.match('(\w+)_(\d+)_(\d+)_(\w+)$', ARCH) + if m: + name, major, minor, arch = m.groups() + minor = int(minor) + matches = [arch] + if arch in ('i386', 'ppc'): + matches.append('fat') + if arch in ('i386', 'ppc', 'x86_64'): + matches.append('fat3') + if arch in ('ppc64', 'x86_64'): + matches.append('fat64') + if arch in ('i386', 'x86_64'): + matches.append('intel') + if arch in ('i386', 'x86_64', 'intel', 'ppc', 'ppc64'): + matches.append('universal') + while minor >= 0: + for match in matches: + s = '%s_%s_%s_%s' % (name, major, minor, match) + if s != ARCH: # already there + arches.append(s) + minor -= 1 + + # Most specific - our Python version, ABI and arch + for abi in abis: + for arch in arches: + result.append((''.join((IMP_PREFIX, versions[0])), abi, arch)) + + # where no ABI / arch dependency, but IMP_PREFIX dependency + for i, version in enumerate(versions): + result.append((''.join((IMP_PREFIX, version)), 'none', 'any')) + if i == 0: + result.append((''.join((IMP_PREFIX, version[0])), 'none', 'any')) + + # no IMP_PREFIX, ABI or arch dependency + for i, version in enumerate(versions): + result.append((''.join(('py', version)), 'none', 'any')) + if i == 0: + result.append((''.join(('py', version[0])), 'none', 'any')) + return set(result) + + +COMPATIBLE_TAGS = compatible_tags() + +del compatible_tags + + +def is_compatible(wheel, tags=None): + if not isinstance(wheel, Wheel): + wheel = Wheel(wheel) # assume it's a filename + result = False + if tags is None: + tags = COMPATIBLE_TAGS + for ver, abi, arch in tags: + if ver in wheel.pyver and abi in wheel.abi and arch in wheel.arch: + result = True + break + return result diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyc b/env/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ea572ee8e26055f9051b99fd61a1724087224df6 GIT binary patch literal 30884 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 for +more information. +""" + +import os +import re +import sys +import json +import shlex +import logging +import subprocess + + +if not sys.platform.startswith('linux'): + raise ImportError('Unsupported platform: {0}'.format(sys.platform)) + +_UNIXCONFDIR = '/etc' +_OS_RELEASE_BASENAME = 'os-release' + +#: Translation table for normalizing the "ID" attribute defined in os-release +#: files, for use by the :func:`distro.id` method. +#: +#: * Key: Value as defined in the os-release file, translated to lower case, +#: with blanks translated to underscores. +#: +#: * Value: Normalized value. +NORMALIZED_OS_ID = {} + +#: Translation table for normalizing the "Distributor ID" attribute returned by +#: the lsb_release command, for use by the :func:`distro.id` method. +#: +#: * Key: Value as returned by the lsb_release command, translated to lower +#: case, with blanks translated to underscores. +#: +#: * Value: Normalized value. +NORMALIZED_LSB_ID = { + 'enterpriseenterprise': 'oracle', # Oracle Enterprise Linux + 'redhatenterpriseworkstation': 'rhel', # RHEL 6.7 +} + +#: Translation table for normalizing the distro ID derived from the file name +#: of distro release files, for use by the :func:`distro.id` method. +#: +#: * Key: Value as derived from the file name of a distro release file, +#: translated to lower case, with blanks translated to underscores. +#: +#: * Value: Normalized value. +NORMALIZED_DISTRO_ID = { + 'redhat': 'rhel', # RHEL 6.x, 7.x +} + +# Pattern for content of distro release file (reversed) +_DISTRO_RELEASE_CONTENT_REVERSED_PATTERN = re.compile( + r'(?:[^)]*\)(.*)\()? *(?:STL )?([\d.+\-a-z]*\d) *(?:esaeler *)?(.+)') + +# Pattern for base file name of distro release file +_DISTRO_RELEASE_BASENAME_PATTERN = re.compile( + r'(\w+)[-_](release|version)$') + +# Base file names to be ignored when searching for distro release file +_DISTRO_RELEASE_IGNORE_BASENAMES = ( + 'debian_version', + 'lsb-release', + 'oem-release', + _OS_RELEASE_BASENAME, + 'system-release' +) + + +def linux_distribution(full_distribution_name=True): + """ + Return information about the current Linux distribution as a tuple + ``(id_name, version, codename)`` with items as follows: + + * ``id_name``: If *full_distribution_name* is false, the result of + :func:`distro.id`. Otherwise, the result of :func:`distro.name`. + + * ``version``: The result of :func:`distro.version`. + + * ``codename``: The result of :func:`distro.codename`. + + The interface of this function is compatible with the original + :py:func:`platform.linux_distribution` function, supporting a subset of + its parameters. + + The data it returns may not exactly be the same, because it uses more data + sources than the original function, and that may lead to different data if + the Linux distribution is not consistent across multiple data sources it + provides (there are indeed such distributions ...). + + Another reason for differences is the fact that the :func:`distro.id` + method normalizes the distro ID string to a reliable machine-readable value + for a number of popular Linux distributions. + """ + return _distro.linux_distribution(full_distribution_name) + + +def id(): + """ + Return the distro ID of the current Linux distribution, as a + machine-readable string. + + For a number of Linux distributions, the returned distro ID value is + *reliable*, in the sense that it is documented and that it does not change + across releases of the distribution. + + This package maintains the following reliable distro ID values: + + ============== ========================================= + Distro ID Distribution + ============== ========================================= + "ubuntu" Ubuntu + "debian" Debian + "rhel" RedHat Enterprise Linux + "centos" CentOS + "fedora" Fedora + "sles" SUSE Linux Enterprise Server + "opensuse" openSUSE + "amazon" Amazon Linux + "arch" Arch Linux + "cloudlinux" CloudLinux OS + "exherbo" Exherbo Linux + "gentoo" GenToo Linux + "ibm_powerkvm" IBM PowerKVM + "kvmibm" KVM for IBM z Systems + "linuxmint" Linux Mint + "mageia" Mageia + "mandriva" Mandriva Linux + "parallels" Parallels + "pidora" Pidora + "raspbian" Raspbian + "oracle" Oracle Linux (and Oracle Enterprise Linux) + "scientific" Scientific Linux + "slackware" Slackware + "xenserver" XenServer + ============== ========================================= + + If you have a need to get distros for reliable IDs added into this set, + or if you find that the :func:`distro.id` function returns a different + distro ID for one of the listed distros, please create an issue in the + `distro issue tracker`_. + + **Lookup hierarchy and transformations:** + + First, the ID is obtained from the following sources, in the specified + order. The first available and non-empty value is used: + + * the value of the "ID" attribute of the os-release file, + + * the value of the "Distributor ID" attribute returned by the lsb_release + command, + + * the first part of the file name of the distro release file, + + The so determined ID value then passes the following transformations, + before it is returned by this method: + + * it is translated to lower case, + + * blanks (which should not be there anyway) are translated to underscores, + + * a normalization of the ID is performed, based upon + `normalization tables`_. The purpose of this normalization is to ensure + that the ID is as reliable as possible, even across incompatible changes + in the Linux distributions. A common reason for an incompatible change is + the addition of an os-release file, or the addition of the lsb_release + command, with ID values that differ from what was previously determined + from the distro release file name. + """ + return _distro.id() + + +def name(pretty=False): + """ + Return the name of the current Linux distribution, as a human-readable + string. + + If *pretty* is false, the name is returned without version or codename. + (e.g. "CentOS Linux") + + If *pretty* is true, the version and codename are appended. + (e.g. "CentOS Linux 7.1.1503 (Core)") + + **Lookup hierarchy:** + + The name is obtained from the following sources, in the specified order. + The first available and non-empty value is used: + + * If *pretty* is false: + + - the value of the "NAME" attribute of the os-release file, + + - the value of the "Distributor ID" attribute returned by the lsb_release + command, + + - the value of the "" field of the distro release file. + + * If *pretty* is true: + + - the value of the "PRETTY_NAME" attribute of the os-release file, + + - the value of the "Description" attribute returned by the lsb_release + command, + + - the value of the "" field of the distro release file, appended + with the value of the pretty version ("" and "" + fields) of the distro release file, if available. + """ + return _distro.name(pretty) + + +def version(pretty=False, best=False): + """ + Return the version of the current Linux distribution, as a human-readable + string. + + If *pretty* is false, the version is returned without codename (e.g. + "7.0"). + + If *pretty* is true, the codename in parenthesis is appended, if the + codename is non-empty (e.g. "7.0 (Maipo)"). + + Some distributions provide version numbers with different precisions in + the different sources of distribution information. Examining the different + sources in a fixed priority order does not always yield the most precise + version (e.g. for Debian 8.2, or CentOS 7.1). + + The *best* parameter can be used to control the approach for the returned + version: + + If *best* is false, the first non-empty version number in priority order of + the examined sources is returned. + + If *best* is true, the most precise version number out of all examined + sources is returned. + + **Lookup hierarchy:** + + In all cases, the version number is obtained from the following sources. + If *best* is false, this order represents the priority order: + + * the value of the "VERSION_ID" attribute of the os-release file, + * the value of the "Release" attribute returned by the lsb_release + command, + * the version number parsed from the "" field of the first line + of the distro release file, + * the version number parsed from the "PRETTY_NAME" attribute of the + os-release file, if it follows the format of the distro release files. + * the version number parsed from the "Description" attribute returned by + the lsb_release command, if it follows the format of the distro release + files. + """ + return _distro.version(pretty, best) + + +def version_parts(best=False): + """ + Return the version of the current Linux distribution as a tuple + ``(major, minor, build_number)`` with items as follows: + + * ``major``: The result of :func:`distro.major_version`. + + * ``minor``: The result of :func:`distro.minor_version`. + + * ``build_number``: The result of :func:`distro.build_number`. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.version_parts(best) + + +def major_version(best=False): + """ + Return the major version of the current Linux distribution, as a string, + if provided. + Otherwise, the empty string is returned. The major version is the first + part of the dot-separated version string. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.major_version(best) + + +def minor_version(best=False): + """ + Return the minor version of the current Linux distribution, as a string, + if provided. + Otherwise, the empty string is returned. The minor version is the second + part of the dot-separated version string. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.minor_version(best) + + +def build_number(best=False): + """ + Return the build number of the current Linux distribution, as a string, + if provided. + Otherwise, the empty string is returned. The build number is the third part + of the dot-separated version string. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.build_number(best) + + +def like(): + """ + Return a space-separated list of distro IDs of distributions that are + closely related to the current Linux distribution in regards to packaging + and programming interfaces, for example distributions the current + distribution is a derivative from. + + **Lookup hierarchy:** + + This information item is only provided by the os-release file. + For details, see the description of the "ID_LIKE" attribute in the + `os-release man page + `_. + """ + return _distro.like() + + +def codename(): + """ + Return the codename for the release of the current Linux distribution, + as a string. + + If the distribution does not have a codename, an empty string is returned. + + Note that the returned codename is not always really a codename. For + example, openSUSE returns "x86_64". This function does not handle such + cases in any special way and just returns the string it finds, if any. + + **Lookup hierarchy:** + + * the codename within the "VERSION" attribute of the os-release file, if + provided, + + * the value of the "Codename" attribute returned by the lsb_release + command, + + * the value of the "" field of the distro release file. + """ + return _distro.codename() + + +def info(pretty=False, best=False): + """ + Return certain machine-readable information items about the current Linux + distribution in a dictionary, as shown in the following example: + + .. sourcecode:: python + + { + 'id': 'rhel', + 'version': '7.0', + 'version_parts': { + 'major': '7', + 'minor': '0', + 'build_number': '' + }, + 'like': 'fedora', + 'codename': 'Maipo' + } + + The dictionary structure and keys are always the same, regardless of which + information items are available in the underlying data sources. The values + for the various keys are as follows: + + * ``id``: The result of :func:`distro.id`. + + * ``version``: The result of :func:`distro.version`. + + * ``version_parts -> major``: The result of :func:`distro.major_version`. + + * ``version_parts -> minor``: The result of :func:`distro.minor_version`. + + * ``version_parts -> build_number``: The result of + :func:`distro.build_number`. + + * ``like``: The result of :func:`distro.like`. + + * ``codename``: The result of :func:`distro.codename`. + + For a description of the *pretty* and *best* parameters, see the + :func:`distro.version` method. + """ + return _distro.info(pretty, best) + + +def os_release_info(): + """ + Return a dictionary containing key-value pairs for the information items + from the os-release file data source of the current Linux distribution. + + See `os-release file`_ for details about these information items. + """ + return _distro.os_release_info() + + +def lsb_release_info(): + """ + Return a dictionary containing key-value pairs for the information items + from the lsb_release command data source of the current Linux distribution. + + See `lsb_release command output`_ for details about these information + items. + """ + return _distro.lsb_release_info() + + +def distro_release_info(): + """ + Return a dictionary containing key-value pairs for the information items + from the distro release file data source of the current Linux distribution. + + See `distro release file`_ for details about these information items. + """ + return _distro.distro_release_info() + + +def os_release_attr(attribute): + """ + Return a single named information item from the os-release file data source + of the current Linux distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + + See `os-release file`_ for details about these information items. + """ + return _distro.os_release_attr(attribute) + + +def lsb_release_attr(attribute): + """ + Return a single named information item from the lsb_release command output + data source of the current Linux distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + + See `lsb_release command output`_ for details about these information + items. + """ + return _distro.lsb_release_attr(attribute) + + +def distro_release_attr(attribute): + """ + Return a single named information item from the distro release file + data source of the current Linux distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + + See `distro release file`_ for details about these information items. + """ + return _distro.distro_release_attr(attribute) + + +class LinuxDistribution(object): + """ + Provides information about a Linux distribution. + + This package creates a private module-global instance of this class with + default initialization arguments, that is used by the + `consolidated accessor functions`_ and `single source accessor functions`_. + By using default initialization arguments, that module-global instance + returns data about the current Linux distribution (i.e. the distro this + package runs on). + + Normally, it is not necessary to create additional instances of this class. + However, in situations where control is needed over the exact data sources + that are used, instances of this class can be created with a specific + distro release file, or a specific os-release file, or without invoking the + lsb_release command. + """ + + def __init__(self, + include_lsb=True, + os_release_file='', + distro_release_file=''): + """ + The initialization method of this class gathers information from the + available data sources, and stores that in private instance attributes. + Subsequent access to the information items uses these private instance + attributes, so that the data sources are read only once. + + Parameters: + + * ``include_lsb`` (bool): Controls whether the + `lsb_release command output`_ is included as a data source. + + If the lsb_release command is not available in the program execution + path, the data source for the lsb_release command will be empty. + + * ``os_release_file`` (string): The path name of the + `os-release file`_ that is to be used as a data source. + + An empty string (the default) will cause the default path name to + be used (see `os-release file`_ for details). + + If the specified or defaulted os-release file does not exist, the + data source for the os-release file will be empty. + + * ``distro_release_file`` (string): The path name of the + `distro release file`_ that is to be used as a data source. + + An empty string (the default) will cause a default search algorithm + to be used (see `distro release file`_ for details). + + If the specified distro release file does not exist, or if no default + distro release file can be found, the data source for the distro + release file will be empty. + + Public instance attributes: + + * ``os_release_file`` (string): The path name of the + `os-release file`_ that is actually used as a data source. The + empty string if no distro release file is used as a data source. + + * ``distro_release_file`` (string): The path name of the + `distro release file`_ that is actually used as a data source. The + empty string if no distro release file is used as a data source. + + Raises: + + * :py:exc:`IOError`: Some I/O issue with an os-release file or distro + release file. + + * :py:exc:`subprocess.CalledProcessError`: The lsb_release command had + some issue (other than not being available in the program execution + path). + + * :py:exc:`UnicodeError`: A data source has unexpected characters or + uses an unexpected encoding. + """ + self.os_release_file = os_release_file or \ + os.path.join(_UNIXCONFDIR, _OS_RELEASE_BASENAME) + self.distro_release_file = distro_release_file or '' # updated later + self._os_release_info = self._get_os_release_info() + self._lsb_release_info = self._get_lsb_release_info() \ + if include_lsb else {} + self._distro_release_info = self._get_distro_release_info() + + def __repr__(self): + """Return repr of all info + """ + return \ + "LinuxDistribution(" \ + "os_release_file={0!r}, " \ + "distro_release_file={1!r}, " \ + "_os_release_info={2!r}, " \ + "_lsb_release_info={3!r}, " \ + "_distro_release_info={4!r})".format( + self.os_release_file, + self.distro_release_file, + self._os_release_info, + self._lsb_release_info, + self._distro_release_info) + + def linux_distribution(self, full_distribution_name=True): + """ + Return information about the Linux distribution that is compatible + with Python's :func:`platform.linux_distribution`, supporting a subset + of its parameters. + + For details, see :func:`distro.linux_distribution`. + """ + return ( + self.name() if full_distribution_name else self.id(), + self.version(), + self.codename() + ) + + def id(self): + """Return the distro ID of the Linux distribution, as a string. + + For details, see :func:`distro.id`. + """ + def normalize(distro_id, table): + distro_id = distro_id.lower().replace(' ', '_') + return table.get(distro_id, distro_id) + + distro_id = self.os_release_attr('id') + if distro_id: + return normalize(distro_id, NORMALIZED_OS_ID) + + distro_id = self.lsb_release_attr('distributor_id') + if distro_id: + return normalize(distro_id, NORMALIZED_LSB_ID) + + distro_id = self.distro_release_attr('id') + if distro_id: + return normalize(distro_id, NORMALIZED_DISTRO_ID) + + return '' + + def name(self, pretty=False): + """ + Return the name of the Linux distribution, as a string. + + For details, see :func:`distro.name`. + """ + name = self.os_release_attr('name') \ + or self.lsb_release_attr('distributor_id') \ + or self.distro_release_attr('name') + if pretty: + name = self.os_release_attr('pretty_name') \ + or self.lsb_release_attr('description') + if not name: + name = self.distro_release_attr('name') + version = self.version(pretty=True) + if version: + name = name + ' ' + version + return name or '' + + def version(self, pretty=False, best=False): + """ + Return the version of the Linux distribution, as a string. + + For details, see :func:`distro.version`. + """ + versions = [ + self.os_release_attr('version_id'), + self.lsb_release_attr('release'), + self.distro_release_attr('version_id'), + self._parse_distro_release_content( + self.os_release_attr('pretty_name')).get('version_id', ''), + self._parse_distro_release_content( + self.lsb_release_attr('description')).get('version_id', '') + ] + version = '' + if best: + # This algorithm uses the last version in priority order that has + # the best precision. If the versions are not in conflict, that + # does not matter; otherwise, using the last one instead of the + # first one might be considered a surprise. + for v in versions: + if v.count(".") > version.count(".") or version == '': + version = v + else: + for v in versions: + if v != '': + version = v + break + if pretty and version and self.codename(): + version = u'{0} ({1})'.format(version, self.codename()) + return version + + def version_parts(self, best=False): + """ + Return the version of the Linux distribution, as a tuple of version + numbers. + + For details, see :func:`distro.version_parts`. + """ + version_str = self.version(best=best) + if version_str: + version_regex = re.compile(r'(\d+)\.?(\d+)?\.?(\d+)?') + matches = version_regex.match(version_str) + if matches: + major, minor, build_number = matches.groups() + return major, minor or '', build_number or '' + return '', '', '' + + def major_version(self, best=False): + """ + Return the major version number of the current distribution. + + For details, see :func:`distro.major_version`. + """ + return self.version_parts(best)[0] + + def minor_version(self, best=False): + """ + Return the minor version number of the Linux distribution. + + For details, see :func:`distro.minor_version`. + """ + return self.version_parts(best)[1] + + def build_number(self, best=False): + """ + Return the build number of the Linux distribution. + + For details, see :func:`distro.build_number`. + """ + return self.version_parts(best)[2] + + def like(self): + """ + Return the IDs of distributions that are like the Linux distribution. + + For details, see :func:`distro.like`. + """ + return self.os_release_attr('id_like') or '' + + def codename(self): + """ + Return the codename of the Linux distribution. + + For details, see :func:`distro.codename`. + """ + return self.os_release_attr('codename') \ + or self.lsb_release_attr('codename') \ + or self.distro_release_attr('codename') \ + or '' + + def info(self, pretty=False, best=False): + """ + Return certain machine-readable information about the Linux + distribution. + + For details, see :func:`distro.info`. + """ + return dict( + id=self.id(), + version=self.version(pretty, best), + version_parts=dict( + major=self.major_version(best), + minor=self.minor_version(best), + build_number=self.build_number(best) + ), + like=self.like(), + codename=self.codename(), + ) + + def os_release_info(self): + """ + Return a dictionary containing key-value pairs for the information + items from the os-release file data source of the Linux distribution. + + For details, see :func:`distro.os_release_info`. + """ + return self._os_release_info + + def lsb_release_info(self): + """ + Return a dictionary containing key-value pairs for the information + items from the lsb_release command data source of the Linux + distribution. + + For details, see :func:`distro.lsb_release_info`. + """ + return self._lsb_release_info + + def distro_release_info(self): + """ + Return a dictionary containing key-value pairs for the information + items from the distro release file data source of the Linux + distribution. + + For details, see :func:`distro.distro_release_info`. + """ + return self._distro_release_info + + def os_release_attr(self, attribute): + """ + Return a single named information item from the os-release file data + source of the Linux distribution. + + For details, see :func:`distro.os_release_attr`. + """ + return self._os_release_info.get(attribute, '') + + def lsb_release_attr(self, attribute): + """ + Return a single named information item from the lsb_release command + output data source of the Linux distribution. + + For details, see :func:`distro.lsb_release_attr`. + """ + return self._lsb_release_info.get(attribute, '') + + def distro_release_attr(self, attribute): + """ + Return a single named information item from the distro release file + data source of the Linux distribution. + + For details, see :func:`distro.distro_release_attr`. + """ + return self._distro_release_info.get(attribute, '') + + def _get_os_release_info(self): + """ + Get the information items from the specified os-release file. + + Returns: + A dictionary containing all information items. + """ + if os.path.isfile(self.os_release_file): + with open(self.os_release_file) as release_file: + return self._parse_os_release_content(release_file) + return {} + + @staticmethod + def _parse_os_release_content(lines): + """ + Parse the lines of an os-release file. + + Parameters: + + * lines: Iterable through the lines in the os-release file. + Each line must be a unicode string or a UTF-8 encoded byte + string. + + Returns: + A dictionary containing all information items. + """ + props = {} + lexer = shlex.shlex(lines, posix=True) + lexer.whitespace_split = True + + # The shlex module defines its `wordchars` variable using literals, + # making it dependent on the encoding of the Python source file. + # In Python 2.6 and 2.7, the shlex source file is encoded in + # 'iso-8859-1', and the `wordchars` variable is defined as a byte + # string. This causes a UnicodeDecodeError to be raised when the + # parsed content is a unicode object. The following fix resolves that + # (... but it should be fixed in shlex...): + if sys.version_info[0] == 2 and isinstance(lexer.wordchars, bytes): + lexer.wordchars = lexer.wordchars.decode('iso-8859-1') + + tokens = list(lexer) + for token in tokens: + # At this point, all shell-like parsing has been done (i.e. + # comments processed, quotes and backslash escape sequences + # processed, multi-line values assembled, trailing newlines + # stripped, etc.), so the tokens are now either: + # * variable assignments: var=value + # * commands or their arguments (not allowed in os-release) + if '=' in token: + k, v = token.split('=', 1) + if isinstance(v, bytes): + v = v.decode('utf-8') + props[k.lower()] = v + if k == 'VERSION': + # this handles cases in which the codename is in + # the `(CODENAME)` (rhel, centos, fedora) format + # or in the `, CODENAME` format (Ubuntu). + codename = re.search(r'(\(\D+\))|,(\s+)?\D+', v) + if codename: + codename = codename.group() + codename = codename.strip('()') + codename = codename.strip(',') + codename = codename.strip() + # codename appears within paranthese. + props['codename'] = codename + else: + props['codename'] = '' + else: + # Ignore any tokens that are not variable assignments + pass + return props + + def _get_lsb_release_info(self): + """ + Get the information items from the lsb_release command output. + + Returns: + A dictionary containing all information items. + """ + cmd = 'lsb_release -a' + process = subprocess.Popen( + cmd, + shell=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + stdout, stderr = process.communicate() + stdout, stderr = stdout.decode('utf-8'), stderr.decode('utf-8') + code = process.returncode + if code == 0: + content = stdout.splitlines() + return self._parse_lsb_release_content(content) + elif code == 127: # Command not found + return {} + else: + if sys.version_info[:2] >= (3, 5): + raise subprocess.CalledProcessError(code, cmd, stdout, stderr) + elif sys.version_info[:2] >= (2, 7): + raise subprocess.CalledProcessError(code, cmd, stdout) + elif sys.version_info[:2] == (2, 6): + raise subprocess.CalledProcessError(code, cmd) + + @staticmethod + def _parse_lsb_release_content(lines): + """ + Parse the output of the lsb_release command. + + Parameters: + + * lines: Iterable through the lines of the lsb_release output. + Each line must be a unicode string or a UTF-8 encoded byte + string. + + Returns: + A dictionary containing all information items. + """ + props = {} + for line in lines: + line = line.decode('utf-8') if isinstance(line, bytes) else line + kv = line.strip('\n').split(':', 1) + if len(kv) != 2: + # Ignore lines without colon. + continue + k, v = kv + props.update({k.replace(' ', '_').lower(): v.strip()}) + return props + + def _get_distro_release_info(self): + """ + Get the information items from the specified distro release file. + + Returns: + A dictionary containing all information items. + """ + if self.distro_release_file: + # If it was specified, we use it and parse what we can, even if + # its file name or content does not match the expected pattern. + distro_info = self._parse_distro_release_file( + self.distro_release_file) + basename = os.path.basename(self.distro_release_file) + # The file name pattern for user-specified distro release files + # is somewhat more tolerant (compared to when searching for the + # file), because we want to use what was specified as best as + # possible. + match = _DISTRO_RELEASE_BASENAME_PATTERN.match(basename) + if match: + distro_info['id'] = match.group(1) + return distro_info + else: + basenames = os.listdir(_UNIXCONFDIR) + # We sort for repeatability in cases where there are multiple + # distro specific files; e.g. CentOS, Oracle, Enterprise all + # containing `redhat-release` on top of their own. + basenames.sort() + for basename in basenames: + if basename in _DISTRO_RELEASE_IGNORE_BASENAMES: + continue + match = _DISTRO_RELEASE_BASENAME_PATTERN.match(basename) + if match: + filepath = os.path.join(_UNIXCONFDIR, basename) + distro_info = self._parse_distro_release_file(filepath) + if 'name' in distro_info: + # The name is always present if the pattern matches + self.distro_release_file = filepath + distro_info['id'] = match.group(1) + return distro_info + return {} + + def _parse_distro_release_file(self, filepath): + """ + Parse a distro release file. + + Parameters: + + * filepath: Path name of the distro release file. + + Returns: + A dictionary containing all information items. + """ + if os.path.isfile(filepath): + with open(filepath) as fp: + # Only parse the first line. For instance, on SLES there + # are multiple lines. We don't want them... + return self._parse_distro_release_content(fp.readline()) + return {} + + @staticmethod + def _parse_distro_release_content(line): + """ + Parse a line from a distro release file. + + Parameters: + * line: Line from the distro release file. Must be a unicode string + or a UTF-8 encoded byte string. + + Returns: + A dictionary containing all information items. + """ + if isinstance(line, bytes): + line = line.decode('utf-8') + matches = _DISTRO_RELEASE_CONTENT_REVERSED_PATTERN.match( + line.strip()[::-1]) + distro_info = {} + if matches: + # regexp ensures non-None + distro_info['name'] = matches.group(3)[::-1] + if matches.group(2): + distro_info['version_id'] = matches.group(2)[::-1] + if matches.group(1): + distro_info['codename'] = matches.group(1)[::-1] + elif line: + distro_info['name'] = line.strip() + return distro_info + + +_distro = LinuxDistribution() + + +def main(): + import argparse + + logger = logging.getLogger(__name__) + logger.setLevel(logging.DEBUG) + logger.addHandler(logging.StreamHandler(sys.stdout)) + + parser = argparse.ArgumentParser(description="Linux distro info tool") + parser.add_argument( + '--json', + '-j', + help="Output in machine readable format", + action="store_true") + args = parser.parse_args() + + if args.json: + logger.info(json.dumps(info(), indent=4, sort_keys=True)) + else: + logger.info('Name: %s', name(pretty=True)) + distribution_version = version(pretty=True) + if distribution_version: + logger.info('Version: %s', distribution_version) + distribution_codename = codename() + if distribution_codename: + logger.info('Codename: %s', distribution_codename) + + +if __name__ == '__main__': + main() diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distro.pyc b/env/lib/python2.7/site-packages/pip/_vendor/distro.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3520abcdd7bf5b510bec70c5b81591d32c2f2efc GIT binary patch literal 35622 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 Tdh*F%c)##Yj}DGLJ6`xdUZb10 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/__init__.py b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/__init__.py new file mode 100644 index 0000000..7427eb1 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/__init__.py @@ -0,0 +1,25 @@ +""" +HTML parsing library based on the WHATWG "HTML5" +specification. The parser is designed to be compatible with existing +HTML found in the wild and implements well-defined error recovery that +is largely compatible with modern desktop web browsers. + +Example usage: + +import html5lib +f = open("my_document.html") +tree = html5lib.parse(f) +""" + +from __future__ import absolute_import, division, unicode_literals + +from .html5parser import HTMLParser, parse, parseFragment +from .treebuilders import getTreeBuilder +from .treewalkers import getTreeWalker +from .serializer import serialize + +__all__ = ["HTMLParser", "parse", "parseFragment", "getTreeBuilder", + "getTreeWalker", "serialize"] + +# this has to be at the top level, see how setup.py parses this +__version__ = "1.0b10" diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/__init__.pyc b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7d247ba3828f7decfaa04519b79f450463394f08 GIT binary patch literal 1091 zcmZWo%}yIJ5T0y85|#w$or9HAIFP`B3u>#j>JNv4&^8k4UR-bN1Pgn2WqS$fQ}iwR za=rBhI)+q!uz9-p|L#Ww{ueGJK#JG`8G&hmjUbJ{ zwjphU?LgXrmTZIUfY|}tg|rK{2Wby%AJTraw*zJuYz%4K*j+GtU&S%n7$ih)UYm!Dwj+*EGum!6J*=cD68_|*-9C6BGp3EiORXcF{kFmgF=bnPJ|d4 zjc`k4)-R}RA(hKX(0wRMJSt<@LGkAF&_|!t587kn zLOp?8&rv2fIw&WM*Eo<(evB(>_)Xo~u!Ckz6NcN>XD61VYD`ICA7QD&45fXju$9U+ zehT0CZ-u$vx_8lyt+vgGhaLi_ zu5uoTn)5{!DyKM4(1L^tN+N`?hfue%jS>T-TF-jW@C~>Me=(H2rRL6dkn==@$)JgZ4j${vfCT literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_ihatexml.py b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_ihatexml.py new file mode 100644 index 0000000..d6d1d6f --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_ihatexml.py @@ -0,0 +1,288 @@ +from __future__ import absolute_import, division, unicode_literals + +import re +import warnings + +from .constants import DataLossWarning + +baseChar = """ +[#x0041-#x005A] | [#x0061-#x007A] | [#x00C0-#x00D6] | [#x00D8-#x00F6] | +[#x00F8-#x00FF] | [#x0100-#x0131] | [#x0134-#x013E] | [#x0141-#x0148] | +[#x014A-#x017E] | [#x0180-#x01C3] | [#x01CD-#x01F0] | [#x01F4-#x01F5] | +[#x01FA-#x0217] | [#x0250-#x02A8] | [#x02BB-#x02C1] | #x0386 | +[#x0388-#x038A] | #x038C | [#x038E-#x03A1] | [#x03A3-#x03CE] | +[#x03D0-#x03D6] | #x03DA | #x03DC | #x03DE | #x03E0 | [#x03E2-#x03F3] | +[#x0401-#x040C] | [#x040E-#x044F] | [#x0451-#x045C] | [#x045E-#x0481] | +[#x0490-#x04C4] | [#x04C7-#x04C8] | [#x04CB-#x04CC] | [#x04D0-#x04EB] | +[#x04EE-#x04F5] | [#x04F8-#x04F9] | [#x0531-#x0556] | #x0559 | +[#x0561-#x0586] | [#x05D0-#x05EA] | [#x05F0-#x05F2] | [#x0621-#x063A] | +[#x0641-#x064A] | [#x0671-#x06B7] | [#x06BA-#x06BE] | [#x06C0-#x06CE] | +[#x06D0-#x06D3] | #x06D5 | [#x06E5-#x06E6] | [#x0905-#x0939] | #x093D | +[#x0958-#x0961] | [#x0985-#x098C] | [#x098F-#x0990] | [#x0993-#x09A8] | +[#x09AA-#x09B0] | #x09B2 | [#x09B6-#x09B9] | [#x09DC-#x09DD] | +[#x09DF-#x09E1] | [#x09F0-#x09F1] | [#x0A05-#x0A0A] | [#x0A0F-#x0A10] | +[#x0A13-#x0A28] | [#x0A2A-#x0A30] | [#x0A32-#x0A33] | [#x0A35-#x0A36] | +[#x0A38-#x0A39] | [#x0A59-#x0A5C] | #x0A5E | [#x0A72-#x0A74] | +[#x0A85-#x0A8B] | #x0A8D | [#x0A8F-#x0A91] | [#x0A93-#x0AA8] | +[#x0AAA-#x0AB0] | [#x0AB2-#x0AB3] | [#x0AB5-#x0AB9] | #x0ABD | #x0AE0 | +[#x0B05-#x0B0C] | [#x0B0F-#x0B10] | [#x0B13-#x0B28] | [#x0B2A-#x0B30] | +[#x0B32-#x0B33] | [#x0B36-#x0B39] | #x0B3D | [#x0B5C-#x0B5D] | +[#x0B5F-#x0B61] | [#x0B85-#x0B8A] | [#x0B8E-#x0B90] | [#x0B92-#x0B95] | +[#x0B99-#x0B9A] | #x0B9C | [#x0B9E-#x0B9F] | [#x0BA3-#x0BA4] | +[#x0BA8-#x0BAA] | [#x0BAE-#x0BB5] | [#x0BB7-#x0BB9] | [#x0C05-#x0C0C] | +[#x0C0E-#x0C10] | [#x0C12-#x0C28] | [#x0C2A-#x0C33] | [#x0C35-#x0C39] | +[#x0C60-#x0C61] | [#x0C85-#x0C8C] | [#x0C8E-#x0C90] | [#x0C92-#x0CA8] | +[#x0CAA-#x0CB3] | [#x0CB5-#x0CB9] | #x0CDE | [#x0CE0-#x0CE1] | +[#x0D05-#x0D0C] | [#x0D0E-#x0D10] | [#x0D12-#x0D28] | [#x0D2A-#x0D39] | +[#x0D60-#x0D61] | [#x0E01-#x0E2E] | #x0E30 | [#x0E32-#x0E33] | +[#x0E40-#x0E45] | [#x0E81-#x0E82] | #x0E84 | [#x0E87-#x0E88] | #x0E8A | +#x0E8D | [#x0E94-#x0E97] | [#x0E99-#x0E9F] | [#x0EA1-#x0EA3] | #x0EA5 | +#x0EA7 | [#x0EAA-#x0EAB] | [#x0EAD-#x0EAE] | #x0EB0 | [#x0EB2-#x0EB3] | +#x0EBD | [#x0EC0-#x0EC4] | [#x0F40-#x0F47] | [#x0F49-#x0F69] | +[#x10A0-#x10C5] | [#x10D0-#x10F6] | #x1100 | [#x1102-#x1103] | +[#x1105-#x1107] | #x1109 | [#x110B-#x110C] | [#x110E-#x1112] | #x113C | +#x113E | #x1140 | #x114C | #x114E | #x1150 | [#x1154-#x1155] | #x1159 | +[#x115F-#x1161] | #x1163 | #x1165 | #x1167 | #x1169 | [#x116D-#x116E] | +[#x1172-#x1173] | #x1175 | #x119E | #x11A8 | #x11AB | [#x11AE-#x11AF] | +[#x11B7-#x11B8] | #x11BA | [#x11BC-#x11C2] | #x11EB | #x11F0 | #x11F9 | +[#x1E00-#x1E9B] | [#x1EA0-#x1EF9] | [#x1F00-#x1F15] | [#x1F18-#x1F1D] | +[#x1F20-#x1F45] | [#x1F48-#x1F4D] | [#x1F50-#x1F57] | #x1F59 | #x1F5B | +#x1F5D | [#x1F5F-#x1F7D] | [#x1F80-#x1FB4] | [#x1FB6-#x1FBC] | #x1FBE | +[#x1FC2-#x1FC4] | [#x1FC6-#x1FCC] | [#x1FD0-#x1FD3] | [#x1FD6-#x1FDB] | +[#x1FE0-#x1FEC] | [#x1FF2-#x1FF4] | [#x1FF6-#x1FFC] | #x2126 | +[#x212A-#x212B] | #x212E | [#x2180-#x2182] | [#x3041-#x3094] | +[#x30A1-#x30FA] | [#x3105-#x312C] | [#xAC00-#xD7A3]""" + +ideographic = """[#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]""" + +combiningCharacter = """ +[#x0300-#x0345] | [#x0360-#x0361] | [#x0483-#x0486] | [#x0591-#x05A1] | +[#x05A3-#x05B9] | [#x05BB-#x05BD] | #x05BF | [#x05C1-#x05C2] | #x05C4 | +[#x064B-#x0652] | #x0670 | [#x06D6-#x06DC] | [#x06DD-#x06DF] | +[#x06E0-#x06E4] | [#x06E7-#x06E8] | [#x06EA-#x06ED] | [#x0901-#x0903] | +#x093C | [#x093E-#x094C] | #x094D | [#x0951-#x0954] | [#x0962-#x0963] | +[#x0981-#x0983] | #x09BC | #x09BE | #x09BF | [#x09C0-#x09C4] | +[#x09C7-#x09C8] | [#x09CB-#x09CD] | #x09D7 | [#x09E2-#x09E3] | #x0A02 | +#x0A3C | #x0A3E | #x0A3F | [#x0A40-#x0A42] | [#x0A47-#x0A48] | +[#x0A4B-#x0A4D] | [#x0A70-#x0A71] | [#x0A81-#x0A83] | #x0ABC | +[#x0ABE-#x0AC5] | [#x0AC7-#x0AC9] | [#x0ACB-#x0ACD] | [#x0B01-#x0B03] | +#x0B3C | [#x0B3E-#x0B43] | [#x0B47-#x0B48] | [#x0B4B-#x0B4D] | +[#x0B56-#x0B57] | [#x0B82-#x0B83] | [#x0BBE-#x0BC2] | [#x0BC6-#x0BC8] | +[#x0BCA-#x0BCD] | #x0BD7 | [#x0C01-#x0C03] | [#x0C3E-#x0C44] | +[#x0C46-#x0C48] | [#x0C4A-#x0C4D] | [#x0C55-#x0C56] | [#x0C82-#x0C83] | +[#x0CBE-#x0CC4] | [#x0CC6-#x0CC8] | [#x0CCA-#x0CCD] | [#x0CD5-#x0CD6] | +[#x0D02-#x0D03] | [#x0D3E-#x0D43] | [#x0D46-#x0D48] | [#x0D4A-#x0D4D] | +#x0D57 | #x0E31 | [#x0E34-#x0E3A] | [#x0E47-#x0E4E] | #x0EB1 | +[#x0EB4-#x0EB9] | [#x0EBB-#x0EBC] | [#x0EC8-#x0ECD] | [#x0F18-#x0F19] | +#x0F35 | #x0F37 | #x0F39 | #x0F3E | #x0F3F | [#x0F71-#x0F84] | +[#x0F86-#x0F8B] | [#x0F90-#x0F95] | #x0F97 | [#x0F99-#x0FAD] | +[#x0FB1-#x0FB7] | #x0FB9 | [#x20D0-#x20DC] | #x20E1 | [#x302A-#x302F] | +#x3099 | #x309A""" + +digit = """ +[#x0030-#x0039] | [#x0660-#x0669] | [#x06F0-#x06F9] | [#x0966-#x096F] | +[#x09E6-#x09EF] | [#x0A66-#x0A6F] | [#x0AE6-#x0AEF] | [#x0B66-#x0B6F] | +[#x0BE7-#x0BEF] | [#x0C66-#x0C6F] | [#x0CE6-#x0CEF] | [#x0D66-#x0D6F] | +[#x0E50-#x0E59] | [#x0ED0-#x0ED9] | [#x0F20-#x0F29]""" + +extender = """ +#x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | #x0E46 | #x0EC6 | #x3005 | +#[#x3031-#x3035] | [#x309D-#x309E] | [#x30FC-#x30FE]""" + +letter = " | ".join([baseChar, ideographic]) + +# Without the +name = " | ".join([letter, digit, ".", "-", "_", combiningCharacter, + extender]) +nameFirst = " | ".join([letter, "_"]) + +reChar = re.compile(r"#x([\d|A-F]{4,4})") +reCharRange = re.compile(r"\[#x([\d|A-F]{4,4})-#x([\d|A-F]{4,4})\]") + + +def charStringToList(chars): + charRanges = [item.strip() for item in chars.split(" | ")] + rv = [] + for item in charRanges: + foundMatch = False + for regexp in (reChar, reCharRange): + match = regexp.match(item) + if match is not None: + rv.append([hexToInt(item) for item in match.groups()]) + if len(rv[-1]) == 1: + rv[-1] = rv[-1] * 2 + foundMatch = True + break + if not foundMatch: + assert len(item) == 1 + + rv.append([ord(item)] * 2) + rv = normaliseCharList(rv) + return rv + + +def normaliseCharList(charList): + charList = sorted(charList) + for item in charList: + assert item[1] >= item[0] + rv = [] + i = 0 + while i < len(charList): + j = 1 + rv.append(charList[i]) + while i + j < len(charList) and charList[i + j][0] <= rv[-1][1] + 1: + rv[-1][1] = charList[i + j][1] + j += 1 + i += j + return rv + +# We don't really support characters above the BMP :( +max_unicode = int("FFFF", 16) + + +def missingRanges(charList): + rv = [] + if charList[0] != 0: + rv.append([0, charList[0][0] - 1]) + for i, item in enumerate(charList[:-1]): + rv.append([item[1] + 1, charList[i + 1][0] - 1]) + if charList[-1][1] != max_unicode: + rv.append([charList[-1][1] + 1, max_unicode]) + return rv + + +def listToRegexpStr(charList): + rv = [] + for item in charList: + if item[0] == item[1]: + rv.append(escapeRegexp(chr(item[0]))) + else: + rv.append(escapeRegexp(chr(item[0])) + "-" + + escapeRegexp(chr(item[1]))) + return "[%s]" % "".join(rv) + + +def hexToInt(hex_str): + return int(hex_str, 16) + + +def escapeRegexp(string): + specialCharacters = (".", "^", "$", "*", "+", "?", "{", "}", + "[", "]", "|", "(", ")", "-") + for char in specialCharacters: + string = string.replace(char, "\\" + char) + + return string + +# output from the above +nonXmlNameBMPRegexp = re.compile('[\x00-,/:-@\\[-\\^`\\{-\xb6\xb8-\xbf\xd7\xf7\u0132-\u0133\u013f-\u0140\u0149\u017f\u01c4-\u01cc\u01f1-\u01f3\u01f6-\u01f9\u0218-\u024f\u02a9-\u02ba\u02c2-\u02cf\u02d2-\u02ff\u0346-\u035f\u0362-\u0385\u038b\u038d\u03a2\u03cf\u03d7-\u03d9\u03db\u03dd\u03df\u03e1\u03f4-\u0400\u040d\u0450\u045d\u0482\u0487-\u048f\u04c5-\u04c6\u04c9-\u04ca\u04cd-\u04cf\u04ec-\u04ed\u04f6-\u04f7\u04fa-\u0530\u0557-\u0558\u055a-\u0560\u0587-\u0590\u05a2\u05ba\u05be\u05c0\u05c3\u05c5-\u05cf\u05eb-\u05ef\u05f3-\u0620\u063b-\u063f\u0653-\u065f\u066a-\u066f\u06b8-\u06b9\u06bf\u06cf\u06d4\u06e9\u06ee-\u06ef\u06fa-\u0900\u0904\u093a-\u093b\u094e-\u0950\u0955-\u0957\u0964-\u0965\u0970-\u0980\u0984\u098d-\u098e\u0991-\u0992\u09a9\u09b1\u09b3-\u09b5\u09ba-\u09bb\u09bd\u09c5-\u09c6\u09c9-\u09ca\u09ce-\u09d6\u09d8-\u09db\u09de\u09e4-\u09e5\u09f2-\u0a01\u0a03-\u0a04\u0a0b-\u0a0e\u0a11-\u0a12\u0a29\u0a31\u0a34\u0a37\u0a3a-\u0a3b\u0a3d\u0a43-\u0a46\u0a49-\u0a4a\u0a4e-\u0a58\u0a5d\u0a5f-\u0a65\u0a75-\u0a80\u0a84\u0a8c\u0a8e\u0a92\u0aa9\u0ab1\u0ab4\u0aba-\u0abb\u0ac6\u0aca\u0ace-\u0adf\u0ae1-\u0ae5\u0af0-\u0b00\u0b04\u0b0d-\u0b0e\u0b11-\u0b12\u0b29\u0b31\u0b34-\u0b35\u0b3a-\u0b3b\u0b44-\u0b46\u0b49-\u0b4a\u0b4e-\u0b55\u0b58-\u0b5b\u0b5e\u0b62-\u0b65\u0b70-\u0b81\u0b84\u0b8b-\u0b8d\u0b91\u0b96-\u0b98\u0b9b\u0b9d\u0ba0-\u0ba2\u0ba5-\u0ba7\u0bab-\u0bad\u0bb6\u0bba-\u0bbd\u0bc3-\u0bc5\u0bc9\u0bce-\u0bd6\u0bd8-\u0be6\u0bf0-\u0c00\u0c04\u0c0d\u0c11\u0c29\u0c34\u0c3a-\u0c3d\u0c45\u0c49\u0c4e-\u0c54\u0c57-\u0c5f\u0c62-\u0c65\u0c70-\u0c81\u0c84\u0c8d\u0c91\u0ca9\u0cb4\u0cba-\u0cbd\u0cc5\u0cc9\u0cce-\u0cd4\u0cd7-\u0cdd\u0cdf\u0ce2-\u0ce5\u0cf0-\u0d01\u0d04\u0d0d\u0d11\u0d29\u0d3a-\u0d3d\u0d44-\u0d45\u0d49\u0d4e-\u0d56\u0d58-\u0d5f\u0d62-\u0d65\u0d70-\u0e00\u0e2f\u0e3b-\u0e3f\u0e4f\u0e5a-\u0e80\u0e83\u0e85-\u0e86\u0e89\u0e8b-\u0e8c\u0e8e-\u0e93\u0e98\u0ea0\u0ea4\u0ea6\u0ea8-\u0ea9\u0eac\u0eaf\u0eba\u0ebe-\u0ebf\u0ec5\u0ec7\u0ece-\u0ecf\u0eda-\u0f17\u0f1a-\u0f1f\u0f2a-\u0f34\u0f36\u0f38\u0f3a-\u0f3d\u0f48\u0f6a-\u0f70\u0f85\u0f8c-\u0f8f\u0f96\u0f98\u0fae-\u0fb0\u0fb8\u0fba-\u109f\u10c6-\u10cf\u10f7-\u10ff\u1101\u1104\u1108\u110a\u110d\u1113-\u113b\u113d\u113f\u1141-\u114b\u114d\u114f\u1151-\u1153\u1156-\u1158\u115a-\u115e\u1162\u1164\u1166\u1168\u116a-\u116c\u116f-\u1171\u1174\u1176-\u119d\u119f-\u11a7\u11a9-\u11aa\u11ac-\u11ad\u11b0-\u11b6\u11b9\u11bb\u11c3-\u11ea\u11ec-\u11ef\u11f1-\u11f8\u11fa-\u1dff\u1e9c-\u1e9f\u1efa-\u1eff\u1f16-\u1f17\u1f1e-\u1f1f\u1f46-\u1f47\u1f4e-\u1f4f\u1f58\u1f5a\u1f5c\u1f5e\u1f7e-\u1f7f\u1fb5\u1fbd\u1fbf-\u1fc1\u1fc5\u1fcd-\u1fcf\u1fd4-\u1fd5\u1fdc-\u1fdf\u1fed-\u1ff1\u1ff5\u1ffd-\u20cf\u20dd-\u20e0\u20e2-\u2125\u2127-\u2129\u212c-\u212d\u212f-\u217f\u2183-\u3004\u3006\u3008-\u3020\u3030\u3036-\u3040\u3095-\u3098\u309b-\u309c\u309f-\u30a0\u30fb\u30ff-\u3104\u312d-\u4dff\u9fa6-\uabff\ud7a4-\uffff]') # noqa + +nonXmlNameFirstBMPRegexp = re.compile('[\x00-@\\[-\\^`\\{-\xbf\xd7\xf7\u0132-\u0133\u013f-\u0140\u0149\u017f\u01c4-\u01cc\u01f1-\u01f3\u01f6-\u01f9\u0218-\u024f\u02a9-\u02ba\u02c2-\u0385\u0387\u038b\u038d\u03a2\u03cf\u03d7-\u03d9\u03db\u03dd\u03df\u03e1\u03f4-\u0400\u040d\u0450\u045d\u0482-\u048f\u04c5-\u04c6\u04c9-\u04ca\u04cd-\u04cf\u04ec-\u04ed\u04f6-\u04f7\u04fa-\u0530\u0557-\u0558\u055a-\u0560\u0587-\u05cf\u05eb-\u05ef\u05f3-\u0620\u063b-\u0640\u064b-\u0670\u06b8-\u06b9\u06bf\u06cf\u06d4\u06d6-\u06e4\u06e7-\u0904\u093a-\u093c\u093e-\u0957\u0962-\u0984\u098d-\u098e\u0991-\u0992\u09a9\u09b1\u09b3-\u09b5\u09ba-\u09db\u09de\u09e2-\u09ef\u09f2-\u0a04\u0a0b-\u0a0e\u0a11-\u0a12\u0a29\u0a31\u0a34\u0a37\u0a3a-\u0a58\u0a5d\u0a5f-\u0a71\u0a75-\u0a84\u0a8c\u0a8e\u0a92\u0aa9\u0ab1\u0ab4\u0aba-\u0abc\u0abe-\u0adf\u0ae1-\u0b04\u0b0d-\u0b0e\u0b11-\u0b12\u0b29\u0b31\u0b34-\u0b35\u0b3a-\u0b3c\u0b3e-\u0b5b\u0b5e\u0b62-\u0b84\u0b8b-\u0b8d\u0b91\u0b96-\u0b98\u0b9b\u0b9d\u0ba0-\u0ba2\u0ba5-\u0ba7\u0bab-\u0bad\u0bb6\u0bba-\u0c04\u0c0d\u0c11\u0c29\u0c34\u0c3a-\u0c5f\u0c62-\u0c84\u0c8d\u0c91\u0ca9\u0cb4\u0cba-\u0cdd\u0cdf\u0ce2-\u0d04\u0d0d\u0d11\u0d29\u0d3a-\u0d5f\u0d62-\u0e00\u0e2f\u0e31\u0e34-\u0e3f\u0e46-\u0e80\u0e83\u0e85-\u0e86\u0e89\u0e8b-\u0e8c\u0e8e-\u0e93\u0e98\u0ea0\u0ea4\u0ea6\u0ea8-\u0ea9\u0eac\u0eaf\u0eb1\u0eb4-\u0ebc\u0ebe-\u0ebf\u0ec5-\u0f3f\u0f48\u0f6a-\u109f\u10c6-\u10cf\u10f7-\u10ff\u1101\u1104\u1108\u110a\u110d\u1113-\u113b\u113d\u113f\u1141-\u114b\u114d\u114f\u1151-\u1153\u1156-\u1158\u115a-\u115e\u1162\u1164\u1166\u1168\u116a-\u116c\u116f-\u1171\u1174\u1176-\u119d\u119f-\u11a7\u11a9-\u11aa\u11ac-\u11ad\u11b0-\u11b6\u11b9\u11bb\u11c3-\u11ea\u11ec-\u11ef\u11f1-\u11f8\u11fa-\u1dff\u1e9c-\u1e9f\u1efa-\u1eff\u1f16-\u1f17\u1f1e-\u1f1f\u1f46-\u1f47\u1f4e-\u1f4f\u1f58\u1f5a\u1f5c\u1f5e\u1f7e-\u1f7f\u1fb5\u1fbd\u1fbf-\u1fc1\u1fc5\u1fcd-\u1fcf\u1fd4-\u1fd5\u1fdc-\u1fdf\u1fed-\u1ff1\u1ff5\u1ffd-\u2125\u2127-\u2129\u212c-\u212d\u212f-\u217f\u2183-\u3006\u3008-\u3020\u302a-\u3040\u3095-\u30a0\u30fb-\u3104\u312d-\u4dff\u9fa6-\uabff\ud7a4-\uffff]') # noqa + +# Simpler things +nonPubidCharRegexp = re.compile("[^\x20\x0D\x0Aa-zA-Z0-9\-\'()+,./:=?;!*#@$_%]") + + +class InfosetFilter(object): + replacementRegexp = re.compile(r"U[\dA-F]{5,5}") + + def __init__(self, + dropXmlnsLocalName=False, + dropXmlnsAttrNs=False, + preventDoubleDashComments=False, + preventDashAtCommentEnd=False, + replaceFormFeedCharacters=True, + preventSingleQuotePubid=False): + + self.dropXmlnsLocalName = dropXmlnsLocalName + self.dropXmlnsAttrNs = dropXmlnsAttrNs + + self.preventDoubleDashComments = preventDoubleDashComments + self.preventDashAtCommentEnd = preventDashAtCommentEnd + + self.replaceFormFeedCharacters = replaceFormFeedCharacters + + self.preventSingleQuotePubid = preventSingleQuotePubid + + self.replaceCache = {} + + def coerceAttribute(self, name, namespace=None): + if self.dropXmlnsLocalName and name.startswith("xmlns:"): + warnings.warn("Attributes cannot begin with xmlns", DataLossWarning) + return None + elif (self.dropXmlnsAttrNs and + namespace == "http://www.w3.org/2000/xmlns/"): + warnings.warn("Attributes cannot be in the xml namespace", DataLossWarning) + return None + else: + return self.toXmlName(name) + + def coerceElement(self, name): + return self.toXmlName(name) + + def coerceComment(self, data): + if self.preventDoubleDashComments: + while "--" in data: + warnings.warn("Comments cannot contain adjacent dashes", DataLossWarning) + data = data.replace("--", "- -") + if data.endswith("-"): + warnings.warn("Comments cannot end in a dash", DataLossWarning) + data += " " + return data + + def coerceCharacters(self, data): + if self.replaceFormFeedCharacters: + for _ in range(data.count("\x0C")): + warnings.warn("Text cannot contain U+000C", DataLossWarning) + data = data.replace("\x0C", " ") + # Other non-xml characters + return data + + def coercePubid(self, data): + dataOutput = data + for char in nonPubidCharRegexp.findall(data): + warnings.warn("Coercing non-XML pubid", DataLossWarning) + replacement = self.getReplacementCharacter(char) + dataOutput = dataOutput.replace(char, replacement) + if self.preventSingleQuotePubid and dataOutput.find("'") >= 0: + warnings.warn("Pubid cannot contain single quote", DataLossWarning) + dataOutput = dataOutput.replace("'", self.getReplacementCharacter("'")) + return dataOutput + + def toXmlName(self, name): + nameFirst = name[0] + nameRest = name[1:] + m = nonXmlNameFirstBMPRegexp.match(nameFirst) + if m: + warnings.warn("Coercing non-XML name", DataLossWarning) + nameFirstOutput = self.getReplacementCharacter(nameFirst) + else: + nameFirstOutput = nameFirst + + nameRestOutput = nameRest + replaceChars = set(nonXmlNameBMPRegexp.findall(nameRest)) + for char in replaceChars: + warnings.warn("Coercing non-XML name", DataLossWarning) + replacement = self.getReplacementCharacter(char) + nameRestOutput = nameRestOutput.replace(char, replacement) + return nameFirstOutput + nameRestOutput + + def getReplacementCharacter(self, char): + if char in self.replaceCache: + replacement = self.replaceCache[char] + else: + replacement = self.escapeChar(char) + return replacement + + def fromXmlName(self, name): + for item in set(self.replacementRegexp.findall(name)): + name = name.replace(item, self.unescapeChar(item)) + return name + + def escapeChar(self, char): + replacement = "U%05X" % ord(char) + self.replaceCache[char] = replacement + return replacement + + def unescapeChar(self, charcode): + return chr(int(charcode[1:], 16)) diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_ihatexml.pyc b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_ihatexml.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8c02e87ae8f558203e9bd0bfd677e2ddbf20918b GIT binary patch literal 15414 zcmeHOYj9jecJ7gE*)ldZ55HJgi&r7Q7td%O(y;8Z_ujcTAqxr_LtyP zOfx^A!7I1n0+F2|HeDk!S2NAE-s60JyiQ~mh>8%at{0hWxUf)U7m3WZB6FSCfsrj1 znd`ZJiO4ME!cvi0#DyC~W-%AOJa6!sh);vb5~37sO1Q&` zHt}$xO{@fdWxB1RO%}C^>i)Q*dX#HSl9{y;O>tjQr7@yT>1fUc;=={YEm&cXv(>1Dd#^X(9;~pCro@Gh;p>>jg|9_M(J<%!4HThK>5o^-{CE7yuQ`HmDH5~}w^id_q$CQ@$% zl*P~^ESTQl`-a}Yg6UCTcs@V}{a?p)iUDXeekh0v|JyJY*y31EY~-6BtQ$0BV%^71yWi!DjYKd9hwmq)eLlKDjk}E#!Tg7 zCTmRbNibZPfm%$Z7BiT7rc#R;sKr!jF#~TgmA9CIZ`BDK)@UFr1VcPAV9VrIrAzfpHA>vZCI4VJVNYSU)U=6=T7y zm~RWKiGk5-VmPJdO)=L@Ruh}aYT{|mudqnX;ezLfR+1N1E9v8^rToVVoW#;q7rKX{ zmJSqUK6<0qmr}2#^IRrhwRB#@E!`iN;g3trQ;TiEe0WxJD}~`!u#nkm$ac(^(2lW( z+X;e7QcEPPlUgES(^E?%%*Y=J^9Ba|6iaLUV zNJKdam!dAi1g&3OLz?G;FKU7mj#l0-B@$uCMdlg~C9iqXlSglI`RE1;JY=5lk%&$x zq4dM^JrXfoM?#5qJ4|d4jzuD-uMLa%P?hZ|!S=>w@s2TKB|RsJSjupgzq>#yHl-c$ zO=(96ks@})gUX2AplJMA5V2#5CPp+Yn9aMvh#mKAYSS)-1heCiknCm0-C2MVE8K1j zn)9YKVjJFu3Pl2QWb6rCf(}_fw#go4`%W9NO-1bQwIa51NLy`1NOg8f(WJcHSHx!6 zLFPM~Z7a@pAcn14*{&E3kp_29ixMs3$lUc5C9*R5YKZV~ka?S~s5%!!!$}YMqhX%r z(Xj0ye^kwjXr#fDM>p9zsYXCS`7WG2z&oa_nzVJ-k)z?Tiwe;&@9dBz*Omunx+fC6 zhnV50Z@q9-fnqcO#aI*XP-2&CB$Et6ao&}a)^Va?ns~4Z#npa4Zm=1N#IThD!f{hI z_xuzUfJx?)i1EHS5%&-@(df=mY!^w{$UFt0$f%Y`d6NS>NFGkY@=Syp#@&SFZ?6)T z+N)Zge}$6@^^*#O&_|L`glvTpueZsVYhjqkL+hkE3MAuxU&#b7s>y^0X5pk-5Ry$E zS|<$!LfCAoNsof3mZXB)BzrDvBdN{}$>7|OROg1I>1j2Y@=!mi4m3&2>q`$~KTC+N z^KiJ}cB)6cPIZOoddzdiupVQL>A^8kS4PqO2_4oOSLwP3GFnELwHi6<}vi}&q2@Kx^rjprYnOO`|iE75YnH@G`EQT3~ zYN}JX8K~Ec^G?}Rr#ceDRHB+JDvMz%QB5D`!ln|{47|luqMCtL&6MKIXJzJ-;uRQ6 zw6DyRk~tNqH>G4w1v00U%qgW_2$+hiH4rBEj6fdo!|DI-&O}%yUDkX z-Ne?h)iH=Vwbg0f=1o18EL33tMlqX#{IN>D}RwsD##TrhiGibtJ!^6o0k0_b&K{9En z8jEVUm9A)XrcpJDMh|EVMPmef3t68(Qjd;#-e`Lv%kcO4Xt?L#(G4+r`$IV#`di2`Lza z#MT_vH~By^2J6cyqJB-(y>5h+0ieeX{wyIPrs$%JiurS2^HrKB2Eax*1v8ZZ18?xP9=~@ufgZb0 zmFv>hm2>SGEnRxJIn_=T{A>9(2G&_vv9Z+A9&gXBThWr+*jmbVceLNr^=BLdr|wrm zgZT}Qbds#_JW;%b`UusBYC`kyyDl_8G&i(7v?#O?PqXn`Qgt(G+Q`Mp7Nkse@qa*} z#4b+u6r#JH+#RUudO0pXmcmQO$)21kir0x!hcDd_$qose*Y$U0@Q)VVDu!k z;?TtjoDTD06Z`~yRI{Uoy4O(=KDhW-=+C({^kOOXhlcRXr6d7R`>(+D5Sk zW@byP=1?!02*1UkBP*b!Ock)&`~Wo1T-ctlHc2qyN^r>=YK*sm1n9)G7ser!(Fj-g zs)$VkJQO0EFL&S`sFY>g=xFV3aW9D2uIVp3)hdom$&T`XxoWUQH7Yc>V{jwqOvN zE$TgNqW(gg8Kq&*&v_5)Ee@)|PqkT$jM_a0RL9LE%}r*vXk|TlPcvW1vBurymHcY; z?ZvfaQ|Lyef10jj1J*y;uEY}!`o`7g%K9qQH1lLqw~0iW%a_yx*$s`nYj0#P;r$5t!hG_G#gHG!O(umW zt*oa7t(k47Hb_r!`8H1P;`DA#@8|S8oNncGHK%Ji-NI=-r+0FyHd<@yNj$E&!t4W8 z7qVULt!-I#FHBAey+D!0#1ub(k`W&QwX}K4eFXT-( zRFx}OJ68*B`HFkBudi9Ht$E^GYrdm>|K#^iY2Tmz!D~Nw_lHNdA0GSRwDzN(AMN_l z^!pX<{b%1F*WN$&{z>iq_x@_H_SbuUJgEJ6;)Ctl2YWtvQTt%}Cw|dOH~Za5QV+ApR*eM$Rt|EELRr(>U;(ms3dv+47D&cA$q@cgKD ze(d~&CJ*$;0~L9IN|UnxIZgIIFZ*9X_L}TJfUIBkAJOE&9(k}L5AH_kIeG8}WG~8t zgYw|GJa`NbC*(meI5;T}PRW5@O%C+QfnCU+mIL58@Twfxi|h?K@Rl3^(}8|Da8#3r zw#h>~kX7WNXOKN74}tNa7v-Trd1zc7IxY{rD-VJ1p-FjYN)Cc_uul$x@8HvN5PS#s z%E5hda6d}@a`1#EhkE2tMGieHhn|x|FUp}oIW#VZj>{o18Jd)b`{d!L}ha^x*J@(xP;x1XOXN zSDx467yGDR~-Vo}Q9Z-<4CSo;o7W^vW~OYVyn;dFEAlX0JRm ziU(Aml4m9~XZwC?dS6HOmec!=(|f?_J?Qiva(ahQHSF|`Ascskk2}35 zHK%W%)3+blfYUdKY{=;wMmFN~9YJ=|>3h%Vn{;;W(43t^&Q84AIp*vfM|R5D32EP* zb|&7`oQeI;B%UUxozv+3^lQ%Pw~+03rZAGJozB#A$o4o>d!4D*ovAmSskfY|GpL$& z&YW=0OgU$!HD`L8Gu`VATqTU6kIw*mLA!&q?j#ww{aI zU(qgZ-+OWU8_3?gxP3pew=eFPytrdpyI84Qtc+-X|L*iJ&m7eLacugZ-#VcE>-6;6 z^1ont1`uBY!oMT_0&sVJG35SkfO{Fje%kZtGuo#|E(OfIchui`_wsvI-22u0zjE_kw|@P$mfP3zvFw5T z`cA}^>|8r`h;6ioqyK0ZZ%|y14r*C^2N@Ds4o+k^Xo0UdvokOGtD!QE2Nis{Ig3BR ztP&M`or#Y)tLa-t`i^r37x01ROfKLv%^EJuqYpia2A^`y<^sOgtmVQ2`f!t8;WN#v zxNxmVudJuTK$((95y9jDW_)>kYa7W-KRP1tnZQH=M*-~gTlnBj1&-NK0VhNRTu{KF z4gp3K@Q45-3Nz_jODb@%aV2lIn^l;LLJpZiXV>E$?fK$^oo%h{&8;0-{+`mW)=Q;A zbFs7(q+Nw9VpOG6XL((FHq~0(Xm)mVprTk>e92qX>m~P%g-{)}bocc(qHT6Io4I5U ze@V-g*y*=t|D@bm%066Pm&@=u(`{+Cwr$KRp=W?!G26aAy&Q$KM#(*tte_-J37wv< z+?jx*KrJn~e6G~eG6mM^oH@HTR9nTrs@keHtV(>w#4$lxYds23Iu7WCdafMQyRJtu>$TEY+>cZph{9p30Rr)-hfACXj6`mAdX-vEr$xp1S9$=slf< z4J#VL;qVG3SW&+7H!!LLqteDK@u|zhV~SmLXqydcHVQ{YizNhgi_{$}@G13Ot~#{Q zLz+~UrehY{kfS=K&c{301yukcikBQypgx!&=nSu}P-K;&32mJ~i>$A+pP|Z)=PW@y zXGW+N;W*?~Z8RIbAJ0mfxXRA1N!qwT1gEZ*;8uH<=HcI> z!V4*QLXwtQ(9I~g4%s2P8^{|W@ssemuTl(Y6G!q8$sva%f90Sm@Qz{(2>Z@Oi~+U4 zMffbdxWj8SlP)>jM!>*EBJL1*bVi{(La^pC38QIzCF4Pc=ap^vzPlCf)SB4@AIg{N zGQf{)k?$0=Iu&`)*i|oYiD)_bVJo-butXilu@o94&}F)j685t@P+~tsD|X7jEbL(! zd_MkvVj5TKzeE47N7W)kzW@PxN*9FKqew)8H8xZl1=mo`qFdvLtg;W!c_=@%b`eE` zpm(wo3NzUNo0lmY0p|fWp5;7C5PuaMnp>s_^CQ{r(&a{Y^lnUk)72%Jj`5UlLkj+- zOdGB{O6kwhZ!l@oUqf3s6&9TH&#=Nc;EG*g=&rx4*OXAJv_i0 zp|b8jq~IU07>}&TM!Lgr@fd+tg~z0QETYh$e~*EslifQ|b) zm;uz#Ixb64>9X{Zn}}c+EYr+eQ7dL-Ac{khxXop{U@&QrSPbj(oq6r?haRl!qUDgy zatGFOY!@g@#cSl{7NnSTd$w*fEu!_cpeoTC4?avydUHdzWZm_-e5SR%{W4qfVvY;A zw2H+Mu=x5;(>&t!m1hkxV7V2(vDFFDX*T_FxztrIrSHO{d$-4-Jz{qSeS+fA3Iln7 z|AxmRjhF&=i!iJBp%=gm@G>v0*_LaSVr!kJcJEO*H|+|;TxVo z`97D?PWgx;nkn*d5V!_=4K8+Zu~eExZlRor{AiZwzF%ya#dj)OXa6RCxcCJvZhUbG zj1&xN8G&oW<|2F!{A6I@r+K`jcL?>KqR_hOO;N6nCPN8{r35wF(xzfWW%U%r$ zinCD=vW;xD!KX1LQH0Vcf562%@mc9m$X)^c!v3(yw7dHgsSOE9s zagb0x^3kCSgTQRWI541Pv>vhjR0pb0P0wTn(GOE+%p*ALrV)!n3k4~&P=(T9*MA!1>Vw9(9xA^&!!(mIZc*K)9yYU zqlAz!O`l<;@1x{?N=!=rh!WbWGwh`wqY|kxO`-%N&fNZ0k1EY$^{HKjVh6bibR@?vzkf?Bn-UR zP~+%@Lpg7JS#j%H)%PvD4(Br2&JBguu8p}i-Wxz=>u|QsZ}1m+-tT2{8}Q8z*%&|tXvTY^S(iPS`kL5n)G+!g-6=^o!ST#2^w`xHcP`{+6re;P>)xzo}IP5J1 aD$cL2U0AyS=~ehQqqcT_)%@!D)&C8)7its$ literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_inputstream.py b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_inputstream.py new file mode 100644 index 0000000..7c5639f --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_inputstream.py @@ -0,0 +1,923 @@ +from __future__ import absolute_import, division, unicode_literals + +from pip._vendor.six import text_type, binary_type +from pip._vendor.six.moves import http_client, urllib + +import codecs +import re + +from pip._vendor import webencodings + +from .constants import EOF, spaceCharacters, asciiLetters, asciiUppercase +from .constants import ReparseException +from . import _utils + +from io import StringIO + +try: + from io import BytesIO +except ImportError: + BytesIO = StringIO + +# Non-unicode versions of constants for use in the pre-parser +spaceCharactersBytes = frozenset([item.encode("ascii") for item in spaceCharacters]) +asciiLettersBytes = frozenset([item.encode("ascii") for item in asciiLetters]) +asciiUppercaseBytes = frozenset([item.encode("ascii") for item in asciiUppercase]) +spacesAngleBrackets = spaceCharactersBytes | frozenset([b">", b"<"]) + + +invalid_unicode_no_surrogate = "[\u0001-\u0008\u000B\u000E-\u001F\u007F-\u009F\uFDD0-\uFDEF\uFFFE\uFFFF\U0001FFFE\U0001FFFF\U0002FFFE\U0002FFFF\U0003FFFE\U0003FFFF\U0004FFFE\U0004FFFF\U0005FFFE\U0005FFFF\U0006FFFE\U0006FFFF\U0007FFFE\U0007FFFF\U0008FFFE\U0008FFFF\U0009FFFE\U0009FFFF\U000AFFFE\U000AFFFF\U000BFFFE\U000BFFFF\U000CFFFE\U000CFFFF\U000DFFFE\U000DFFFF\U000EFFFE\U000EFFFF\U000FFFFE\U000FFFFF\U0010FFFE\U0010FFFF]" # noqa + +if _utils.supports_lone_surrogates: + # Use one extra step of indirection and create surrogates with + # eval. Not using this indirection would introduce an illegal + # unicode literal on platforms not supporting such lone + # surrogates. + assert invalid_unicode_no_surrogate[-1] == "]" and invalid_unicode_no_surrogate.count("]") == 1 + invalid_unicode_re = re.compile(invalid_unicode_no_surrogate[:-1] + + eval('"\\uD800-\\uDFFF"') + # pylint:disable=eval-used + "]") +else: + invalid_unicode_re = re.compile(invalid_unicode_no_surrogate) + +non_bmp_invalid_codepoints = set([0x1FFFE, 0x1FFFF, 0x2FFFE, 0x2FFFF, 0x3FFFE, + 0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE, 0x5FFFF, + 0x6FFFE, 0x6FFFF, 0x7FFFE, 0x7FFFF, 0x8FFFE, + 0x8FFFF, 0x9FFFE, 0x9FFFF, 0xAFFFE, 0xAFFFF, + 0xBFFFE, 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE, + 0xDFFFF, 0xEFFFE, 0xEFFFF, 0xFFFFE, 0xFFFFF, + 0x10FFFE, 0x10FFFF]) + +ascii_punctuation_re = re.compile("[\u0009-\u000D\u0020-\u002F\u003A-\u0040\u005B-\u0060\u007B-\u007E]") + +# Cache for charsUntil() +charsUntilRegEx = {} + + +class BufferedStream(object): + """Buffering for streams that do not have buffering of their own + + The buffer is implemented as a list of chunks on the assumption that + joining many strings will be slow since it is O(n**2) + """ + + def __init__(self, stream): + self.stream = stream + self.buffer = [] + self.position = [-1, 0] # chunk number, offset + + def tell(self): + pos = 0 + for chunk in self.buffer[:self.position[0]]: + pos += len(chunk) + pos += self.position[1] + return pos + + def seek(self, pos): + assert pos <= self._bufferedBytes() + offset = pos + i = 0 + while len(self.buffer[i]) < offset: + offset -= len(self.buffer[i]) + i += 1 + self.position = [i, offset] + + def read(self, bytes): + if not self.buffer: + return self._readStream(bytes) + elif (self.position[0] == len(self.buffer) and + self.position[1] == len(self.buffer[-1])): + return self._readStream(bytes) + else: + return self._readFromBuffer(bytes) + + def _bufferedBytes(self): + return sum([len(item) for item in self.buffer]) + + def _readStream(self, bytes): + data = self.stream.read(bytes) + self.buffer.append(data) + self.position[0] += 1 + self.position[1] = len(data) + return data + + def _readFromBuffer(self, bytes): + remainingBytes = bytes + rv = [] + bufferIndex = self.position[0] + bufferOffset = self.position[1] + while bufferIndex < len(self.buffer) and remainingBytes != 0: + assert remainingBytes > 0 + bufferedData = self.buffer[bufferIndex] + + if remainingBytes <= len(bufferedData) - bufferOffset: + bytesToRead = remainingBytes + self.position = [bufferIndex, bufferOffset + bytesToRead] + else: + bytesToRead = len(bufferedData) - bufferOffset + self.position = [bufferIndex, len(bufferedData)] + bufferIndex += 1 + rv.append(bufferedData[bufferOffset:bufferOffset + bytesToRead]) + remainingBytes -= bytesToRead + + bufferOffset = 0 + + if remainingBytes: + rv.append(self._readStream(remainingBytes)) + + return b"".join(rv) + + +def HTMLInputStream(source, **kwargs): + # Work around Python bug #20007: read(0) closes the connection. + # http://bugs.python.org/issue20007 + if (isinstance(source, http_client.HTTPResponse) or + # Also check for addinfourl wrapping HTTPResponse + (isinstance(source, urllib.response.addbase) and + isinstance(source.fp, http_client.HTTPResponse))): + isUnicode = False + elif hasattr(source, "read"): + isUnicode = isinstance(source.read(0), text_type) + else: + isUnicode = isinstance(source, text_type) + + if isUnicode: + encodings = [x for x in kwargs if x.endswith("_encoding")] + if encodings: + raise TypeError("Cannot set an encoding with a unicode input, set %r" % encodings) + + return HTMLUnicodeInputStream(source, **kwargs) + else: + return HTMLBinaryInputStream(source, **kwargs) + + +class HTMLUnicodeInputStream(object): + """Provides a unicode stream of characters to the HTMLTokenizer. + + This class takes care of character encoding and removing or replacing + incorrect byte-sequences and also provides column and line tracking. + + """ + + _defaultChunkSize = 10240 + + def __init__(self, source): + """Initialises the HTMLInputStream. + + HTMLInputStream(source, [encoding]) -> Normalized stream from source + for use by html5lib. + + source can be either a file-object, local filename or a string. + + The optional encoding parameter must be a string that indicates + the encoding. If specified, that encoding will be used, + regardless of any BOM or later declaration (such as in a meta + element) + + """ + + if not _utils.supports_lone_surrogates: + # Such platforms will have already checked for such + # surrogate errors, so no need to do this checking. + self.reportCharacterErrors = None + elif len("\U0010FFFF") == 1: + self.reportCharacterErrors = self.characterErrorsUCS4 + else: + self.reportCharacterErrors = self.characterErrorsUCS2 + + # List of where new lines occur + self.newLines = [0] + + self.charEncoding = (lookupEncoding("utf-8"), "certain") + self.dataStream = self.openStream(source) + + self.reset() + + def reset(self): + self.chunk = "" + self.chunkSize = 0 + self.chunkOffset = 0 + self.errors = [] + + # number of (complete) lines in previous chunks + self.prevNumLines = 0 + # number of columns in the last line of the previous chunk + self.prevNumCols = 0 + + # Deal with CR LF and surrogates split over chunk boundaries + self._bufferedCharacter = None + + def openStream(self, source): + """Produces a file object from source. + + source can be either a file object, local filename or a string. + + """ + # Already a file object + if hasattr(source, 'read'): + stream = source + else: + stream = StringIO(source) + + return stream + + def _position(self, offset): + chunk = self.chunk + nLines = chunk.count('\n', 0, offset) + positionLine = self.prevNumLines + nLines + lastLinePos = chunk.rfind('\n', 0, offset) + if lastLinePos == -1: + positionColumn = self.prevNumCols + offset + else: + positionColumn = offset - (lastLinePos + 1) + return (positionLine, positionColumn) + + def position(self): + """Returns (line, col) of the current position in the stream.""" + line, col = self._position(self.chunkOffset) + return (line + 1, col) + + def char(self): + """ Read one character from the stream or queue if available. Return + EOF when EOF is reached. + """ + # Read a new chunk from the input stream if necessary + if self.chunkOffset >= self.chunkSize: + if not self.readChunk(): + return EOF + + chunkOffset = self.chunkOffset + char = self.chunk[chunkOffset] + self.chunkOffset = chunkOffset + 1 + + return char + + def readChunk(self, chunkSize=None): + if chunkSize is None: + chunkSize = self._defaultChunkSize + + self.prevNumLines, self.prevNumCols = self._position(self.chunkSize) + + self.chunk = "" + self.chunkSize = 0 + self.chunkOffset = 0 + + data = self.dataStream.read(chunkSize) + + # Deal with CR LF and surrogates broken across chunks + if self._bufferedCharacter: + data = self._bufferedCharacter + data + self._bufferedCharacter = None + elif not data: + # We have no more data, bye-bye stream + return False + + if len(data) > 1: + lastv = ord(data[-1]) + if lastv == 0x0D or 0xD800 <= lastv <= 0xDBFF: + self._bufferedCharacter = data[-1] + data = data[:-1] + + if self.reportCharacterErrors: + self.reportCharacterErrors(data) + + # Replace invalid characters + data = data.replace("\r\n", "\n") + data = data.replace("\r", "\n") + + self.chunk = data + self.chunkSize = len(data) + + return True + + def characterErrorsUCS4(self, data): + for _ in range(len(invalid_unicode_re.findall(data))): + self.errors.append("invalid-codepoint") + + def characterErrorsUCS2(self, data): + # Someone picked the wrong compile option + # You lose + skip = False + for match in invalid_unicode_re.finditer(data): + if skip: + continue + codepoint = ord(match.group()) + pos = match.start() + # Pretty sure there should be endianness issues here + if _utils.isSurrogatePair(data[pos:pos + 2]): + # We have a surrogate pair! + char_val = _utils.surrogatePairToCodepoint(data[pos:pos + 2]) + if char_val in non_bmp_invalid_codepoints: + self.errors.append("invalid-codepoint") + skip = True + elif (codepoint >= 0xD800 and codepoint <= 0xDFFF and + pos == len(data) - 1): + self.errors.append("invalid-codepoint") + else: + skip = False + self.errors.append("invalid-codepoint") + + def charsUntil(self, characters, opposite=False): + """ Returns a string of characters from the stream up to but not + including any character in 'characters' or EOF. 'characters' must be + a container that supports the 'in' method and iteration over its + characters. + """ + + # Use a cache of regexps to find the required characters + try: + chars = charsUntilRegEx[(characters, opposite)] + except KeyError: + if __debug__: + for c in characters: + assert(ord(c) < 128) + regex = "".join(["\\x%02x" % ord(c) for c in characters]) + if not opposite: + regex = "^%s" % regex + chars = charsUntilRegEx[(characters, opposite)] = re.compile("[%s]+" % regex) + + rv = [] + + while True: + # Find the longest matching prefix + m = chars.match(self.chunk, self.chunkOffset) + if m is None: + # If nothing matched, and it wasn't because we ran out of chunk, + # then stop + if self.chunkOffset != self.chunkSize: + break + else: + end = m.end() + # If not the whole chunk matched, return everything + # up to the part that didn't match + if end != self.chunkSize: + rv.append(self.chunk[self.chunkOffset:end]) + self.chunkOffset = end + break + # If the whole remainder of the chunk matched, + # use it all and read the next chunk + rv.append(self.chunk[self.chunkOffset:]) + if not self.readChunk(): + # Reached EOF + break + + r = "".join(rv) + return r + + def unget(self, char): + # Only one character is allowed to be ungotten at once - it must + # be consumed again before any further call to unget + if char is not None: + if self.chunkOffset == 0: + # unget is called quite rarely, so it's a good idea to do + # more work here if it saves a bit of work in the frequently + # called char and charsUntil. + # So, just prepend the ungotten character onto the current + # chunk: + self.chunk = char + self.chunk + self.chunkSize += 1 + else: + self.chunkOffset -= 1 + assert self.chunk[self.chunkOffset] == char + + +class HTMLBinaryInputStream(HTMLUnicodeInputStream): + """Provides a unicode stream of characters to the HTMLTokenizer. + + This class takes care of character encoding and removing or replacing + incorrect byte-sequences and also provides column and line tracking. + + """ + + def __init__(self, source, override_encoding=None, transport_encoding=None, + same_origin_parent_encoding=None, likely_encoding=None, + default_encoding="windows-1252", useChardet=True): + """Initialises the HTMLInputStream. + + HTMLInputStream(source, [encoding]) -> Normalized stream from source + for use by html5lib. + + source can be either a file-object, local filename or a string. + + The optional encoding parameter must be a string that indicates + the encoding. If specified, that encoding will be used, + regardless of any BOM or later declaration (such as in a meta + element) + + """ + # Raw Stream - for unicode objects this will encode to utf-8 and set + # self.charEncoding as appropriate + self.rawStream = self.openStream(source) + + HTMLUnicodeInputStream.__init__(self, self.rawStream) + + # Encoding Information + # Number of bytes to use when looking for a meta element with + # encoding information + self.numBytesMeta = 1024 + # Number of bytes to use when using detecting encoding using chardet + self.numBytesChardet = 100 + # Things from args + self.override_encoding = override_encoding + self.transport_encoding = transport_encoding + self.same_origin_parent_encoding = same_origin_parent_encoding + self.likely_encoding = likely_encoding + self.default_encoding = default_encoding + + # Determine encoding + self.charEncoding = self.determineEncoding(useChardet) + assert self.charEncoding[0] is not None + + # Call superclass + self.reset() + + def reset(self): + self.dataStream = self.charEncoding[0].codec_info.streamreader(self.rawStream, 'replace') + HTMLUnicodeInputStream.reset(self) + + def openStream(self, source): + """Produces a file object from source. + + source can be either a file object, local filename or a string. + + """ + # Already a file object + if hasattr(source, 'read'): + stream = source + else: + stream = BytesIO(source) + + try: + stream.seek(stream.tell()) + except: # pylint:disable=bare-except + stream = BufferedStream(stream) + + return stream + + def determineEncoding(self, chardet=True): + # BOMs take precedence over everything + # This will also read past the BOM if present + charEncoding = self.detectBOM(), "certain" + if charEncoding[0] is not None: + return charEncoding + + # If we've been overriden, we've been overriden + charEncoding = lookupEncoding(self.override_encoding), "certain" + if charEncoding[0] is not None: + return charEncoding + + # Now check the transport layer + charEncoding = lookupEncoding(self.transport_encoding), "certain" + if charEncoding[0] is not None: + return charEncoding + + # Look for meta elements with encoding information + charEncoding = self.detectEncodingMeta(), "tentative" + if charEncoding[0] is not None: + return charEncoding + + # Parent document encoding + charEncoding = lookupEncoding(self.same_origin_parent_encoding), "tentative" + if charEncoding[0] is not None and not charEncoding[0].name.startswith("utf-16"): + return charEncoding + + # "likely" encoding + charEncoding = lookupEncoding(self.likely_encoding), "tentative" + if charEncoding[0] is not None: + return charEncoding + + # Guess with chardet, if available + if chardet: + try: + from chardet.universaldetector import UniversalDetector + except ImportError: + pass + else: + buffers = [] + detector = UniversalDetector() + while not detector.done: + buffer = self.rawStream.read(self.numBytesChardet) + assert isinstance(buffer, bytes) + if not buffer: + break + buffers.append(buffer) + detector.feed(buffer) + detector.close() + encoding = lookupEncoding(detector.result['encoding']) + self.rawStream.seek(0) + if encoding is not None: + return encoding, "tentative" + + # Try the default encoding + charEncoding = lookupEncoding(self.default_encoding), "tentative" + if charEncoding[0] is not None: + return charEncoding + + # Fallback to html5lib's default if even that hasn't worked + return lookupEncoding("windows-1252"), "tentative" + + def changeEncoding(self, newEncoding): + assert self.charEncoding[1] != "certain" + newEncoding = lookupEncoding(newEncoding) + if newEncoding is None: + return + if newEncoding.name in ("utf-16be", "utf-16le"): + newEncoding = lookupEncoding("utf-8") + assert newEncoding is not None + elif newEncoding == self.charEncoding[0]: + self.charEncoding = (self.charEncoding[0], "certain") + else: + self.rawStream.seek(0) + self.charEncoding = (newEncoding, "certain") + self.reset() + raise ReparseException("Encoding changed from %s to %s" % (self.charEncoding[0], newEncoding)) + + def detectBOM(self): + """Attempts to detect at BOM at the start of the stream. If + an encoding can be determined from the BOM return the name of the + encoding otherwise return None""" + bomDict = { + codecs.BOM_UTF8: 'utf-8', + codecs.BOM_UTF16_LE: 'utf-16le', codecs.BOM_UTF16_BE: 'utf-16be', + codecs.BOM_UTF32_LE: 'utf-32le', codecs.BOM_UTF32_BE: 'utf-32be' + } + + # Go to beginning of file and read in 4 bytes + string = self.rawStream.read(4) + assert isinstance(string, bytes) + + # Try detecting the BOM using bytes from the string + encoding = bomDict.get(string[:3]) # UTF-8 + seek = 3 + if not encoding: + # Need to detect UTF-32 before UTF-16 + encoding = bomDict.get(string) # UTF-32 + seek = 4 + if not encoding: + encoding = bomDict.get(string[:2]) # UTF-16 + seek = 2 + + # Set the read position past the BOM if one was found, otherwise + # set it to the start of the stream + if encoding: + self.rawStream.seek(seek) + return lookupEncoding(encoding) + else: + self.rawStream.seek(0) + return None + + def detectEncodingMeta(self): + """Report the encoding declared by the meta element + """ + buffer = self.rawStream.read(self.numBytesMeta) + assert isinstance(buffer, bytes) + parser = EncodingParser(buffer) + self.rawStream.seek(0) + encoding = parser.getEncoding() + + if encoding is not None and encoding.name in ("utf-16be", "utf-16le"): + encoding = lookupEncoding("utf-8") + + return encoding + + +class EncodingBytes(bytes): + """String-like object with an associated position and various extra methods + If the position is ever greater than the string length then an exception is + raised""" + def __new__(self, value): + assert isinstance(value, bytes) + return bytes.__new__(self, value.lower()) + + def __init__(self, value): + # pylint:disable=unused-argument + self._position = -1 + + def __iter__(self): + return self + + def __next__(self): + p = self._position = self._position + 1 + if p >= len(self): + raise StopIteration + elif p < 0: + raise TypeError + return self[p:p + 1] + + def next(self): + # Py2 compat + return self.__next__() + + def previous(self): + p = self._position + if p >= len(self): + raise StopIteration + elif p < 0: + raise TypeError + self._position = p = p - 1 + return self[p:p + 1] + + def setPosition(self, position): + if self._position >= len(self): + raise StopIteration + self._position = position + + def getPosition(self): + if self._position >= len(self): + raise StopIteration + if self._position >= 0: + return self._position + else: + return None + + position = property(getPosition, setPosition) + + def getCurrentByte(self): + return self[self.position:self.position + 1] + + currentByte = property(getCurrentByte) + + def skip(self, chars=spaceCharactersBytes): + """Skip past a list of characters""" + p = self.position # use property for the error-checking + while p < len(self): + c = self[p:p + 1] + if c not in chars: + self._position = p + return c + p += 1 + self._position = p + return None + + def skipUntil(self, chars): + p = self.position + while p < len(self): + c = self[p:p + 1] + if c in chars: + self._position = p + return c + p += 1 + self._position = p + return None + + def matchBytes(self, bytes): + """Look for a sequence of bytes at the start of a string. If the bytes + are found return True and advance the position to the byte after the + match. Otherwise return False and leave the position alone""" + p = self.position + data = self[p:p + len(bytes)] + rv = data.startswith(bytes) + if rv: + self.position += len(bytes) + return rv + + def jumpTo(self, bytes): + """Look for the next sequence of bytes matching a given sequence. If + a match is found advance the position to the last byte of the match""" + newPosition = self[self.position:].find(bytes) + if newPosition > -1: + # XXX: This is ugly, but I can't see a nicer way to fix this. + if self._position == -1: + self._position = 0 + self._position += (newPosition + len(bytes) - 1) + return True + else: + raise StopIteration + + +class EncodingParser(object): + """Mini parser for detecting character encoding from meta elements""" + + def __init__(self, data): + """string - the data to work on for encoding detection""" + self.data = EncodingBytes(data) + self.encoding = None + + def getEncoding(self): + methodDispatch = ( + (b"") + + def handleMeta(self): + if self.data.currentByte not in spaceCharactersBytes: + # if we have ") + + def getAttribute(self): + """Return a name,value pair for the next attribute in the stream, + if one is found, or None""" + data = self.data + # Step 1 (skip chars) + c = data.skip(spaceCharactersBytes | frozenset([b"/"])) + assert c is None or len(c) == 1 + # Step 2 + if c in (b">", None): + return None + # Step 3 + attrName = [] + attrValue = [] + # Step 4 attribute name + while True: + if c == b"=" and attrName: + break + elif c in spaceCharactersBytes: + # Step 6! + c = data.skip() + break + elif c in (b"/", b">"): + return b"".join(attrName), b"" + elif c in asciiUppercaseBytes: + attrName.append(c.lower()) + elif c is None: + return None + else: + attrName.append(c) + # Step 5 + c = next(data) + # Step 7 + if c != b"=": + data.previous() + return b"".join(attrName), b"" + # Step 8 + next(data) + # Step 9 + c = data.skip() + # Step 10 + if c in (b"'", b'"'): + # 10.1 + quoteChar = c + while True: + # 10.2 + c = next(data) + # 10.3 + if c == quoteChar: + next(data) + return b"".join(attrName), b"".join(attrValue) + # 10.4 + elif c in asciiUppercaseBytes: + attrValue.append(c.lower()) + # 10.5 + else: + attrValue.append(c) + elif c == b">": + return b"".join(attrName), b"" + elif c in asciiUppercaseBytes: + attrValue.append(c.lower()) + elif c is None: + return None + else: + attrValue.append(c) + # Step 11 + while True: + c = next(data) + if c in spacesAngleBrackets: + return b"".join(attrName), b"".join(attrValue) + elif c in asciiUppercaseBytes: + attrValue.append(c.lower()) + elif c is None: + return None + else: + attrValue.append(c) + + +class ContentAttrParser(object): + def __init__(self, data): + assert isinstance(data, bytes) + self.data = data + + def parse(self): + try: + # Check if the attr name is charset + # otherwise return + self.data.jumpTo(b"charset") + self.data.position += 1 + self.data.skip() + if not self.data.currentByte == b"=": + # If there is no = sign keep looking for attrs + return None + self.data.position += 1 + self.data.skip() + # Look for an encoding between matching quote marks + if self.data.currentByte in (b'"', b"'"): + quoteMark = self.data.currentByte + self.data.position += 1 + oldPosition = self.data.position + if self.data.jumpTo(quoteMark): + return self.data[oldPosition:self.data.position] + else: + return None + else: + # Unquoted value + oldPosition = self.data.position + try: + self.data.skipUntil(spaceCharactersBytes) + return self.data[oldPosition:self.data.position] + except StopIteration: + # Return the whole remaining value + return self.data[oldPosition:] + except StopIteration: + return None + + +def lookupEncoding(encoding): + """Return the python codec name corresponding to an encoding or None if the + string doesn't correspond to a valid encoding.""" + if isinstance(encoding, binary_type): + try: + encoding = encoding.decode("ascii") + except UnicodeDecodeError: + return None + + if encoding is not None: + try: + return webencodings.lookup(encoding) + except AttributeError: + return None + else: + return None diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_inputstream.pyc b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_inputstream.pyc new file mode 100644 index 0000000000000000000000000000000000000000..474b8d7700f0b48df147e3576d4363d7ecea746e GIT binary patch literal 27376 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 0x10FFFF)): + char = "\uFFFD" + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "illegal-codepoint-for-numeric-entity", + "datavars": {"charAsInt": charAsInt}}) + else: + # Should speed up this check somehow (e.g. move the set to a constant) + if ((0x0001 <= charAsInt <= 0x0008) or + (0x000E <= charAsInt <= 0x001F) or + (0x007F <= charAsInt <= 0x009F) or + (0xFDD0 <= charAsInt <= 0xFDEF) or + charAsInt in frozenset([0x000B, 0xFFFE, 0xFFFF, 0x1FFFE, + 0x1FFFF, 0x2FFFE, 0x2FFFF, 0x3FFFE, + 0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE, + 0x5FFFF, 0x6FFFE, 0x6FFFF, 0x7FFFE, + 0x7FFFF, 0x8FFFE, 0x8FFFF, 0x9FFFE, + 0x9FFFF, 0xAFFFE, 0xAFFFF, 0xBFFFE, + 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE, + 0xDFFFF, 0xEFFFE, 0xEFFFF, 0xFFFFE, + 0xFFFFF, 0x10FFFE, 0x10FFFF])): + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": + "illegal-codepoint-for-numeric-entity", + "datavars": {"charAsInt": charAsInt}}) + try: + # Try/except needed as UCS-2 Python builds' unichar only works + # within the BMP. + char = chr(charAsInt) + except ValueError: + v = charAsInt - 0x10000 + char = chr(0xD800 | (v >> 10)) + chr(0xDC00 | (v & 0x3FF)) + + # Discard the ; if present. Otherwise, put it back on the queue and + # invoke parseError on parser. + if c != ";": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "numeric-entity-without-semicolon"}) + self.stream.unget(c) + + return char + + def consumeEntity(self, allowedChar=None, fromAttribute=False): + # Initialise to the default output for when no entity is matched + output = "&" + + charStack = [self.stream.char()] + if (charStack[0] in spaceCharacters or charStack[0] in (EOF, "<", "&") or + (allowedChar is not None and allowedChar == charStack[0])): + self.stream.unget(charStack[0]) + + elif charStack[0] == "#": + # Read the next character to see if it's hex or decimal + hex = False + charStack.append(self.stream.char()) + if charStack[-1] in ("x", "X"): + hex = True + charStack.append(self.stream.char()) + + # charStack[-1] should be the first digit + if (hex and charStack[-1] in hexDigits) \ + or (not hex and charStack[-1] in digits): + # At least one digit found, so consume the whole number + self.stream.unget(charStack[-1]) + output = self.consumeNumberEntity(hex) + else: + # No digits found + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "expected-numeric-entity"}) + self.stream.unget(charStack.pop()) + output = "&" + "".join(charStack) + + else: + # At this point in the process might have named entity. Entities + # are stored in the global variable "entities". + # + # Consume characters and compare to these to a substring of the + # entity names in the list until the substring no longer matches. + while (charStack[-1] is not EOF): + if not entitiesTrie.has_keys_with_prefix("".join(charStack)): + break + charStack.append(self.stream.char()) + + # At this point we have a string that starts with some characters + # that may match an entity + # Try to find the longest entity the string will match to take care + # of ¬i for instance. + try: + entityName = entitiesTrie.longest_prefix("".join(charStack[:-1])) + entityLength = len(entityName) + except KeyError: + entityName = None + + if entityName is not None: + if entityName[-1] != ";": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "named-entity-without-semicolon"}) + if (entityName[-1] != ";" and fromAttribute and + (charStack[entityLength] in asciiLetters or + charStack[entityLength] in digits or + charStack[entityLength] == "=")): + self.stream.unget(charStack.pop()) + output = "&" + "".join(charStack) + else: + output = entities[entityName] + self.stream.unget(charStack.pop()) + output += "".join(charStack[entityLength:]) + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-named-entity"}) + self.stream.unget(charStack.pop()) + output = "&" + "".join(charStack) + + if fromAttribute: + self.currentToken["data"][-1][1] += output + else: + if output in spaceCharacters: + tokenType = "SpaceCharacters" + else: + tokenType = "Characters" + self.tokenQueue.append({"type": tokenTypes[tokenType], "data": output}) + + def processEntityInAttribute(self, allowedChar): + """This method replaces the need for "entityInAttributeValueState". + """ + self.consumeEntity(allowedChar=allowedChar, fromAttribute=True) + + def emitCurrentToken(self): + """This method is a generic handler for emitting the tags. It also sets + the state to "data" because that's what's needed after a token has been + emitted. + """ + token = self.currentToken + # Add token to the queue to be yielded + if (token["type"] in tagTokenTypes): + token["name"] = token["name"].translate(asciiUpper2Lower) + if token["type"] == tokenTypes["EndTag"]: + if token["data"]: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "attributes-in-end-tag"}) + if token["selfClosing"]: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "self-closing-flag-on-end-tag"}) + self.tokenQueue.append(token) + self.state = self.dataState + + # Below are the various tokenizer states worked out. + def dataState(self): + data = self.stream.char() + if data == "&": + self.state = self.entityDataState + elif data == "<": + self.state = self.tagOpenState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\u0000"}) + elif data is EOF: + # Tokenization ends. + return False + elif data in spaceCharacters: + # Directly after emitting a token you switch back to the "data + # state". At that point spaceCharacters are important so they are + # emitted separately. + self.tokenQueue.append({"type": tokenTypes["SpaceCharacters"], "data": + data + self.stream.charsUntil(spaceCharacters, True)}) + # No need to update lastFourChars here, since the first space will + # have already been appended to lastFourChars and will have broken + # any sequences + else: + chars = self.stream.charsUntil(("&", "<", "\u0000")) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + chars}) + return True + + def entityDataState(self): + self.consumeEntity() + self.state = self.dataState + return True + + def rcdataState(self): + data = self.stream.char() + if data == "&": + self.state = self.characterReferenceInRcdata + elif data == "<": + self.state = self.rcdataLessThanSignState + elif data == EOF: + # Tokenization ends. + return False + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + elif data in spaceCharacters: + # Directly after emitting a token you switch back to the "data + # state". At that point spaceCharacters are important so they are + # emitted separately. + self.tokenQueue.append({"type": tokenTypes["SpaceCharacters"], "data": + data + self.stream.charsUntil(spaceCharacters, True)}) + # No need to update lastFourChars here, since the first space will + # have already been appended to lastFourChars and will have broken + # any sequences + else: + chars = self.stream.charsUntil(("&", "<", "\u0000")) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + chars}) + return True + + def characterReferenceInRcdata(self): + self.consumeEntity() + self.state = self.rcdataState + return True + + def rawtextState(self): + data = self.stream.char() + if data == "<": + self.state = self.rawtextLessThanSignState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + elif data == EOF: + # Tokenization ends. + return False + else: + chars = self.stream.charsUntil(("<", "\u0000")) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + chars}) + return True + + def scriptDataState(self): + data = self.stream.char() + if data == "<": + self.state = self.scriptDataLessThanSignState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + elif data == EOF: + # Tokenization ends. + return False + else: + chars = self.stream.charsUntil(("<", "\u0000")) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + chars}) + return True + + def plaintextState(self): + data = self.stream.char() + if data == EOF: + # Tokenization ends. + return False + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + self.stream.charsUntil("\u0000")}) + return True + + def tagOpenState(self): + data = self.stream.char() + if data == "!": + self.state = self.markupDeclarationOpenState + elif data == "/": + self.state = self.closeTagOpenState + elif data in asciiLetters: + self.currentToken = {"type": tokenTypes["StartTag"], + "name": data, "data": [], + "selfClosing": False, + "selfClosingAcknowledged": False} + self.state = self.tagNameState + elif data == ">": + # XXX In theory it could be something besides a tag name. But + # do we really care? + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-tag-name-but-got-right-bracket"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<>"}) + self.state = self.dataState + elif data == "?": + # XXX In theory it could be something besides a tag name. But + # do we really care? + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-tag-name-but-got-question-mark"}) + self.stream.unget(data) + self.state = self.bogusCommentState + else: + # XXX + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-tag-name"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.stream.unget(data) + self.state = self.dataState + return True + + def closeTagOpenState(self): + data = self.stream.char() + if data in asciiLetters: + self.currentToken = {"type": tokenTypes["EndTag"], "name": data, + "data": [], "selfClosing": False} + self.state = self.tagNameState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-closing-tag-but-got-right-bracket"}) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-closing-tag-but-got-eof"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "": + self.emitCurrentToken() + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-tag-name"}) + self.state = self.dataState + elif data == "/": + self.state = self.selfClosingStartTagState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["name"] += "\uFFFD" + else: + self.currentToken["name"] += data + # (Don't use charsUntil here, because tag names are + # very short and it's faster to not do anything fancy) + return True + + def rcdataLessThanSignState(self): + data = self.stream.char() + if data == "/": + self.temporaryBuffer = "" + self.state = self.rcdataEndTagOpenState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.stream.unget(data) + self.state = self.rcdataState + return True + + def rcdataEndTagOpenState(self): + data = self.stream.char() + if data in asciiLetters: + self.temporaryBuffer += data + self.state = self.rcdataEndTagNameState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "" and appropriate: + self.currentToken = {"type": tokenTypes["EndTag"], + "name": self.temporaryBuffer, + "data": [], "selfClosing": False} + self.emitCurrentToken() + self.state = self.dataState + elif data in asciiLetters: + self.temporaryBuffer += data + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "" and appropriate: + self.currentToken = {"type": tokenTypes["EndTag"], + "name": self.temporaryBuffer, + "data": [], "selfClosing": False} + self.emitCurrentToken() + self.state = self.dataState + elif data in asciiLetters: + self.temporaryBuffer += data + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "" and appropriate: + self.currentToken = {"type": tokenTypes["EndTag"], + "name": self.temporaryBuffer, + "data": [], "selfClosing": False} + self.emitCurrentToken() + self.state = self.dataState + elif data in asciiLetters: + self.temporaryBuffer += data + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": ">"}) + self.state = self.scriptDataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + self.state = self.scriptDataEscapedState + elif data == EOF: + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.state = self.scriptDataEscapedState + return True + + def scriptDataEscapedLessThanSignState(self): + data = self.stream.char() + if data == "/": + self.temporaryBuffer = "" + self.state = self.scriptDataEscapedEndTagOpenState + elif data in asciiLetters: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<" + data}) + self.temporaryBuffer = data + self.state = self.scriptDataDoubleEscapeStartState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.stream.unget(data) + self.state = self.scriptDataEscapedState + return True + + def scriptDataEscapedEndTagOpenState(self): + data = self.stream.char() + if data in asciiLetters: + self.temporaryBuffer = data + self.state = self.scriptDataEscapedEndTagNameState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "" and appropriate: + self.currentToken = {"type": tokenTypes["EndTag"], + "name": self.temporaryBuffer, + "data": [], "selfClosing": False} + self.emitCurrentToken() + self.state = self.dataState + elif data in asciiLetters: + self.temporaryBuffer += data + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": ""))): + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + if self.temporaryBuffer.lower() == "script": + self.state = self.scriptDataDoubleEscapedState + else: + self.state = self.scriptDataEscapedState + elif data in asciiLetters: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.temporaryBuffer += data + else: + self.stream.unget(data) + self.state = self.scriptDataEscapedState + return True + + def scriptDataDoubleEscapedState(self): + data = self.stream.char() + if data == "-": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "-"}) + self.state = self.scriptDataDoubleEscapedDashState + elif data == "<": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.state = self.scriptDataDoubleEscapedLessThanSignState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + elif data == EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-script-in-script"}) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + return True + + def scriptDataDoubleEscapedDashState(self): + data = self.stream.char() + if data == "-": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "-"}) + self.state = self.scriptDataDoubleEscapedDashDashState + elif data == "<": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.state = self.scriptDataDoubleEscapedLessThanSignState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + self.state = self.scriptDataDoubleEscapedState + elif data == EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-script-in-script"}) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.state = self.scriptDataDoubleEscapedState + return True + + def scriptDataDoubleEscapedDashDashState(self): + data = self.stream.char() + if data == "-": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "-"}) + elif data == "<": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.state = self.scriptDataDoubleEscapedLessThanSignState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": ">"}) + self.state = self.scriptDataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + self.state = self.scriptDataDoubleEscapedState + elif data == EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-script-in-script"}) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.state = self.scriptDataDoubleEscapedState + return True + + def scriptDataDoubleEscapedLessThanSignState(self): + data = self.stream.char() + if data == "/": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "/"}) + self.temporaryBuffer = "" + self.state = self.scriptDataDoubleEscapeEndState + else: + self.stream.unget(data) + self.state = self.scriptDataDoubleEscapedState + return True + + def scriptDataDoubleEscapeEndState(self): + data = self.stream.char() + if data in (spaceCharacters | frozenset(("/", ">"))): + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + if self.temporaryBuffer.lower() == "script": + self.state = self.scriptDataEscapedState + else: + self.state = self.scriptDataDoubleEscapedState + elif data in asciiLetters: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.temporaryBuffer += data + else: + self.stream.unget(data) + self.state = self.scriptDataDoubleEscapedState + return True + + def beforeAttributeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + self.stream.charsUntil(spaceCharacters, True) + elif data in asciiLetters: + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + elif data == ">": + self.emitCurrentToken() + elif data == "/": + self.state = self.selfClosingStartTagState + elif data in ("'", '"', "=", "<"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "invalid-character-in-attribute-name"}) + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"].append(["\uFFFD", ""]) + self.state = self.attributeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-attribute-name-but-got-eof"}) + self.state = self.dataState + else: + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + return True + + def attributeNameState(self): + data = self.stream.char() + leavingThisState = True + emitToken = False + if data == "=": + self.state = self.beforeAttributeValueState + elif data in asciiLetters: + self.currentToken["data"][-1][0] += data +\ + self.stream.charsUntil(asciiLetters, True) + leavingThisState = False + elif data == ">": + # XXX If we emit here the attributes are converted to a dict + # without being checked and when the code below runs we error + # because data is a dict not a list + emitToken = True + elif data in spaceCharacters: + self.state = self.afterAttributeNameState + elif data == "/": + self.state = self.selfClosingStartTagState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][0] += "\uFFFD" + leavingThisState = False + elif data in ("'", '"', "<"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": + "invalid-character-in-attribute-name"}) + self.currentToken["data"][-1][0] += data + leavingThisState = False + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "eof-in-attribute-name"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][0] += data + leavingThisState = False + + if leavingThisState: + # Attributes are not dropped at this stage. That happens when the + # start tag token is emitted so values can still be safely appended + # to attributes, but we do want to report the parse error in time. + self.currentToken["data"][-1][0] = ( + self.currentToken["data"][-1][0].translate(asciiUpper2Lower)) + for name, _ in self.currentToken["data"][:-1]: + if self.currentToken["data"][-1][0] == name: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "duplicate-attribute"}) + break + # XXX Fix for above XXX + if emitToken: + self.emitCurrentToken() + return True + + def afterAttributeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + self.stream.charsUntil(spaceCharacters, True) + elif data == "=": + self.state = self.beforeAttributeValueState + elif data == ">": + self.emitCurrentToken() + elif data in asciiLetters: + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + elif data == "/": + self.state = self.selfClosingStartTagState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"].append(["\uFFFD", ""]) + self.state = self.attributeNameState + elif data in ("'", '"', "<"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "invalid-character-after-attribute-name"}) + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-end-of-tag-but-got-eof"}) + self.state = self.dataState + else: + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + return True + + def beforeAttributeValueState(self): + data = self.stream.char() + if data in spaceCharacters: + self.stream.charsUntil(spaceCharacters, True) + elif data == "\"": + self.state = self.attributeValueDoubleQuotedState + elif data == "&": + self.state = self.attributeValueUnQuotedState + self.stream.unget(data) + elif data == "'": + self.state = self.attributeValueSingleQuotedState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-attribute-value-but-got-right-bracket"}) + self.emitCurrentToken() + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][1] += "\uFFFD" + self.state = self.attributeValueUnQuotedState + elif data in ("=", "<", "`"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "equals-in-unquoted-attribute-value"}) + self.currentToken["data"][-1][1] += data + self.state = self.attributeValueUnQuotedState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-attribute-value-but-got-eof"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][1] += data + self.state = self.attributeValueUnQuotedState + return True + + def attributeValueDoubleQuotedState(self): + data = self.stream.char() + if data == "\"": + self.state = self.afterAttributeValueState + elif data == "&": + self.processEntityInAttribute('"') + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][1] += "\uFFFD" + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-attribute-value-double-quote"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][1] += data +\ + self.stream.charsUntil(("\"", "&", "\u0000")) + return True + + def attributeValueSingleQuotedState(self): + data = self.stream.char() + if data == "'": + self.state = self.afterAttributeValueState + elif data == "&": + self.processEntityInAttribute("'") + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][1] += "\uFFFD" + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-attribute-value-single-quote"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][1] += data +\ + self.stream.charsUntil(("'", "&", "\u0000")) + return True + + def attributeValueUnQuotedState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeAttributeNameState + elif data == "&": + self.processEntityInAttribute(">") + elif data == ">": + self.emitCurrentToken() + elif data in ('"', "'", "=", "<", "`"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-character-in-unquoted-attribute-value"}) + self.currentToken["data"][-1][1] += data + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][1] += "\uFFFD" + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-attribute-value-no-quotes"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][1] += data + self.stream.charsUntil( + frozenset(("&", ">", '"', "'", "=", "<", "`", "\u0000")) | spaceCharacters) + return True + + def afterAttributeValueState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeAttributeNameState + elif data == ">": + self.emitCurrentToken() + elif data == "/": + self.state = self.selfClosingStartTagState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-EOF-after-attribute-value"}) + self.stream.unget(data) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-character-after-attribute-value"}) + self.stream.unget(data) + self.state = self.beforeAttributeNameState + return True + + def selfClosingStartTagState(self): + data = self.stream.char() + if data == ">": + self.currentToken["selfClosing"] = True + self.emitCurrentToken() + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": + "unexpected-EOF-after-solidus-in-tag"}) + self.stream.unget(data) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-character-after-solidus-in-tag"}) + self.stream.unget(data) + self.state = self.beforeAttributeNameState + return True + + def bogusCommentState(self): + # Make a new comment token and give it as value all the characters + # until the first > or EOF (charsUntil checks for EOF automatically) + # and emit it. + data = self.stream.charsUntil(">") + data = data.replace("\u0000", "\uFFFD") + self.tokenQueue.append( + {"type": tokenTypes["Comment"], "data": data}) + + # Eat the character directly after the bogus comment which is either a + # ">" or an EOF. + self.stream.char() + self.state = self.dataState + return True + + def markupDeclarationOpenState(self): + charStack = [self.stream.char()] + if charStack[-1] == "-": + charStack.append(self.stream.char()) + if charStack[-1] == "-": + self.currentToken = {"type": tokenTypes["Comment"], "data": ""} + self.state = self.commentStartState + return True + elif charStack[-1] in ('d', 'D'): + matched = True + for expected in (('o', 'O'), ('c', 'C'), ('t', 'T'), + ('y', 'Y'), ('p', 'P'), ('e', 'E')): + charStack.append(self.stream.char()) + if charStack[-1] not in expected: + matched = False + break + if matched: + self.currentToken = {"type": tokenTypes["Doctype"], + "name": "", + "publicId": None, "systemId": None, + "correct": True} + self.state = self.doctypeState + return True + elif (charStack[-1] == "[" and + self.parser is not None and + self.parser.tree.openElements and + self.parser.tree.openElements[-1].namespace != self.parser.tree.defaultNamespace): + matched = True + for expected in ["C", "D", "A", "T", "A", "["]: + charStack.append(self.stream.char()) + if charStack[-1] != expected: + matched = False + break + if matched: + self.state = self.cdataSectionState + return True + + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-dashes-or-doctype"}) + + while charStack: + self.stream.unget(charStack.pop()) + self.state = self.bogusCommentState + return True + + def commentStartState(self): + data = self.stream.char() + if data == "-": + self.state = self.commentStartDashState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "incorrect-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += data + self.state = self.commentState + return True + + def commentStartDashState(self): + data = self.stream.char() + if data == "-": + self.state = self.commentEndState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "-\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "incorrect-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += "-" + data + self.state = self.commentState + return True + + def commentState(self): + data = self.stream.char() + if data == "-": + self.state = self.commentEndDashState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "\uFFFD" + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "eof-in-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += data + \ + self.stream.charsUntil(("-", "\u0000")) + return True + + def commentEndDashState(self): + data = self.stream.char() + if data == "-": + self.state = self.commentEndState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "-\uFFFD" + self.state = self.commentState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment-end-dash"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += "-" + data + self.state = self.commentState + return True + + def commentEndState(self): + data = self.stream.char() + if data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "--\uFFFD" + self.state = self.commentState + elif data == "!": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-bang-after-double-dash-in-comment"}) + self.state = self.commentEndBangState + elif data == "-": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-dash-after-double-dash-in-comment"}) + self.currentToken["data"] += data + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment-double-dash"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + # XXX + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-comment"}) + self.currentToken["data"] += "--" + data + self.state = self.commentState + return True + + def commentEndBangState(self): + data = self.stream.char() + if data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == "-": + self.currentToken["data"] += "--!" + self.state = self.commentEndDashState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "--!\uFFFD" + self.state = self.commentState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment-end-bang-state"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += "--!" + data + self.state = self.commentState + return True + + def doctypeState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeDoctypeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-doctype-name-but-got-eof"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "need-space-after-doctype"}) + self.stream.unget(data) + self.state = self.beforeDoctypeNameState + return True + + def beforeDoctypeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-doctype-name-but-got-right-bracket"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["name"] = "\uFFFD" + self.state = self.doctypeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-doctype-name-but-got-eof"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["name"] = data + self.state = self.doctypeNameState + return True + + def doctypeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + self.currentToken["name"] = self.currentToken["name"].translate(asciiUpper2Lower) + self.state = self.afterDoctypeNameState + elif data == ">": + self.currentToken["name"] = self.currentToken["name"].translate(asciiUpper2Lower) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["name"] += "\uFFFD" + self.state = self.doctypeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype-name"}) + self.currentToken["correct"] = False + self.currentToken["name"] = self.currentToken["name"].translate(asciiUpper2Lower) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["name"] += data + return True + + def afterDoctypeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.currentToken["correct"] = False + self.stream.unget(data) + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + if data in ("p", "P"): + matched = True + for expected in (("u", "U"), ("b", "B"), ("l", "L"), + ("i", "I"), ("c", "C")): + data = self.stream.char() + if data not in expected: + matched = False + break + if matched: + self.state = self.afterDoctypePublicKeywordState + return True + elif data in ("s", "S"): + matched = True + for expected in (("y", "Y"), ("s", "S"), ("t", "T"), + ("e", "E"), ("m", "M")): + data = self.stream.char() + if data not in expected: + matched = False + break + if matched: + self.state = self.afterDoctypeSystemKeywordState + return True + + # All the characters read before the current 'data' will be + # [a-zA-Z], so they're garbage in the bogus doctype and can be + # discarded; only the latest character might be '>' or EOF + # and needs to be ungetted + self.stream.unget(data) + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-space-or-right-bracket-in-doctype", "datavars": + {"data": data}}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + + return True + + def afterDoctypePublicKeywordState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeDoctypePublicIdentifierState + elif data in ("'", '"'): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.stream.unget(data) + self.state = self.beforeDoctypePublicIdentifierState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.stream.unget(data) + self.state = self.beforeDoctypePublicIdentifierState + return True + + def beforeDoctypePublicIdentifierState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == "\"": + self.currentToken["publicId"] = "" + self.state = self.doctypePublicIdentifierDoubleQuotedState + elif data == "'": + self.currentToken["publicId"] = "" + self.state = self.doctypePublicIdentifierSingleQuotedState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + return True + + def doctypePublicIdentifierDoubleQuotedState(self): + data = self.stream.char() + if data == "\"": + self.state = self.afterDoctypePublicIdentifierState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["publicId"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["publicId"] += data + return True + + def doctypePublicIdentifierSingleQuotedState(self): + data = self.stream.char() + if data == "'": + self.state = self.afterDoctypePublicIdentifierState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["publicId"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["publicId"] += data + return True + + def afterDoctypePublicIdentifierState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.betweenDoctypePublicAndSystemIdentifiersState + elif data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == '"': + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierDoubleQuotedState + elif data == "'": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierSingleQuotedState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + return True + + def betweenDoctypePublicAndSystemIdentifiersState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == '"': + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierDoubleQuotedState + elif data == "'": + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierSingleQuotedState + elif data == EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + return True + + def afterDoctypeSystemKeywordState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeDoctypeSystemIdentifierState + elif data in ("'", '"'): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.stream.unget(data) + self.state = self.beforeDoctypeSystemIdentifierState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.stream.unget(data) + self.state = self.beforeDoctypeSystemIdentifierState + return True + + def beforeDoctypeSystemIdentifierState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == "\"": + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierDoubleQuotedState + elif data == "'": + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierSingleQuotedState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + return True + + def doctypeSystemIdentifierDoubleQuotedState(self): + data = self.stream.char() + if data == "\"": + self.state = self.afterDoctypeSystemIdentifierState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["systemId"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["systemId"] += data + return True + + def doctypeSystemIdentifierSingleQuotedState(self): + data = self.stream.char() + if data == "'": + self.state = self.afterDoctypeSystemIdentifierState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["systemId"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["systemId"] += data + return True + + def afterDoctypeSystemIdentifierState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.state = self.bogusDoctypeState + return True + + def bogusDoctypeState(self): + data = self.stream.char() + if data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + # XXX EMIT + self.stream.unget(data) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + pass + return True + + def cdataSectionState(self): + data = [] + while True: + data.append(self.stream.charsUntil("]")) + data.append(self.stream.charsUntil(">")) + char = self.stream.char() + if char == EOF: + break + else: + assert char == ">" + if data[-1][-2:] == "]]": + data[-1] = data[-1][:-2] + break + else: + data.append(char) + + data = "".join(data) # pylint:disable=redefined-variable-type + # Deal with null here rather than in the parser + nullCount = data.count("\u0000") + if nullCount > 0: + for _ in range(nullCount): + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + data = data.replace("\u0000", "\uFFFD") + if data: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": data}) + self.state = self.dataState + return True diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_tokenizer.pyc b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_tokenizer.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ebe0775ea76c07088cc628e7f449edf070c817d9 GIT binary patch literal 53345 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/__init__.py b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/__init__.py new file mode 100644 index 0000000..a5ba4bf --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/__init__.py @@ -0,0 +1,14 @@ +from __future__ import absolute_import, division, unicode_literals + +from .py import Trie as PyTrie + +Trie = PyTrie + +# pylint:disable=wrong-import-position +try: + from .datrie import Trie as DATrie +except ImportError: + pass +else: + Trie = DATrie +# pylint:enable=wrong-import-position diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/__init__.pyc b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6311f30690c01538fe482fb853d98c2b00b80721 GIT binary patch literal 435 zcmYL^!A`?442GSg>&DPvNIUWXy^Nl?O=w8tz-5{W60Dc7EkQ&iO_jQn`b4}OH(mgz z8X}Uv`2X$5j`*33zZYNI1Dwu)?&TYYMo~hc7+3(upk&}UlpLIZQUFsNlmMH68$g)? z(QU@g2|Q(SqKVTpLBLDGZr^y@qL#+h zJ|K?BQ|4$I<13t!Xe)E@N=s`{hn;NPm5oLp y@~A82L;iuz-deNIWgL-9X)1$K-qcfgc5S_J?v<)p36@>VbazG*iK~6nU5FdpLB0>%lB2rnLc+#8Y?Oy z8b?&bG>%E}vxsbqiZ+egn8#$=G*gtd=m*hvq7UN^Wo;VuJ6I~`_4~YfxP&2{_|n$F z=)9;(7s4uXS^hcqc{vZ8nAG!pT4qMuJQ$Z+-&g$U3WhgnRps;j&_evq<>nlEgv4`( zzKy^TBL+wy1_;pj0S+z340Hetyc__c;2p0}(jcvG-uS-6tSELtfDc(LV8Hckd>Bjp;0= z!#2N*hi;pvA0s;6mUo5tP&5o&&)1c430D^dj?Af-U|7ygV12y_q09dvb-{nh!$JT2 zZEx%>@OD(r%<_|jLx3ha>0=-n{9{CeP*j5|uO3Y5+-47w@OHRsIU%?HZ01?%1_zc*lP1LRv&dx+rVE=zVOhS}Y_E}B6<2-&Ey zK_Q~i@dmvIxzR!l<|9QCt|Ii`x!Q<6uV5Afu=!9L%_aHBq3beQwjHciLYap`=&@rX5ZX}QljF_t5(!gm(|8!t!QqR%TtD@byiNbPB?CS z%}1cHNv_0EFjM6P&+_OkfKENWmg66sA*}f enFgHJKH;sB18M0nMYx?tswWIUguNAQ#(w~$+hPm= literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/datrie.py b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/datrie.py new file mode 100644 index 0000000..e2e5f86 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/datrie.py @@ -0,0 +1,44 @@ +from __future__ import absolute_import, division, unicode_literals + +from datrie import Trie as DATrie +from pip._vendor.six import text_type + +from ._base import Trie as ABCTrie + + +class Trie(ABCTrie): + def __init__(self, data): + chars = set() + for key in data.keys(): + if not isinstance(key, text_type): + raise TypeError("All keys must be strings") + for char in key: + chars.add(char) + + self._data = DATrie("".join(chars)) + for key, value in data.items(): + self._data[key] = value + + def __contains__(self, key): + return key in self._data + + def __len__(self): + return len(self._data) + + def __iter__(self): + raise NotImplementedError() + + def __getitem__(self, key): + return self._data[key] + + def keys(self, prefix=None): + return self._data.keys(prefix) + + def has_keys_with_prefix(self, prefix): + return self._data.has_keys_with_prefix(prefix) + + def longest_prefix(self, prefix): + return self._data.longest_prefix(prefix) + + def longest_prefix_item(self, prefix): + return self._data.longest_prefix_item(prefix) diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/datrie.pyc b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/datrie.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8876bc4f82f25882d8db0e7ef217b821593cc541 GIT binary patch literal 2702 zcmcguTW=dh6h5=-dlMQ6Ee$OYAt5ZG#!tMUs3K{2;Ki!8m7-d$rfcswnRGAC&TMcb z=K<1R!V7-o-Y&W3+%_I}_0?fHb3zYy>5Uj^i*U=lov zQld=JNKqEhD4;B)QAmpC0!kZ{HEGnU`yr)m$~rXapx==BuFUt)Z<6WJR8i8RH$>M& z&qqy4+Vr&Ffhf!J`z+nx28qY6NGor&&1OaEJugY@g>|;b{T4b^ZYM=zbZWgR+pgm@>zk=~%imQO;PiUd&OtEE- zULMj_NIswiXh_#s{2gltRM(1rQIr$S@AK@@%Wb-9&?2C-CM_B~t|Sm884pTrJhxX+j8gQd}1P2-m_z#!6!eIC7jD!;v@lDXnw%% zlig>9&3zMNI*ENO9DJR*KChD%&ZJXe-Y%G&#-)=3AzP++MD||9X=VD@NgUtf8 zo*mvaWabDg8uB7v2m{vuAK=k)Ign z{}0fgEiLeVpg9BI1RsSmZ{cPy86MT_P576C=W{p|Z$l3KvPKC@t09=!W%wL*BzaC+`yc zwDMKS;4wsz+#MXll7DrrlH($-Q1Wes`nI>MZF|nn>yj*mb{wO0^M!kG_?YYP`ZW{l U@7MNz#8_Pikye%f~~R{Wb9Z?1xDF z2u6yZkzAxO(l=5>(vPHQNWUS5ZIR@$6iw+j>+go-Eh(0yzl85t(x&8XDLT?$#&=8H zvW$$ROY%bGxya*wN7A!=aohxWiz>(ZtnNuc2x;^KKYy?nWVFzq%!c^{~oZ(u8pufCwM= z7=W)}IHBKg6^P+FfMcI4}QNuz}fe&+#(i-xQJ`BpCOXy79 zz}Bq~FjC~Oi$b*UpTgP>#bkSuO>XZ_vpl_>gl~Eea#rYLpSdy}SKE7`$Un@p-EA8{ z%=YAHYjWgC>YXR9bcd7bF6s1KrzO)j@cKN@HxJyA-z=s+Z0@>EkCEjQKSkRtsWd4F za**eUn+W@BsysxNd{I?MFvi8EgD?m!SROSltt(GE+u>li=P-TXT)8X51rE~M$v7*6 zuY;gLb@@n_;*<-Egzf@svoZ_Tk_1l#Vs4m~sAJYm$DAe@Bcus-5eC=f1 z<`QPJP>0gmtN#|EvP~`e-%z#{C6};v;~Y#%0LmOgg(LYGD?a^Iz9kUE1X_(>b1ubAomS7fUM*APMo&S_ zqTaZ4$t6_jhV(9|;6iMx;D5}*Ucv)1d7TBdM)!tx9i(ZO5w3SLg=|u}QFaI)Ay{L5 z?PV%!I-3f0mQYC+mIXT7P0XlgikMsGVzg>j%+2VkYE&F;m^E_=_DZB`MdjtAY4Hn; zI%u_8RabZp?VxJEP6coZ>c7^g$LFX=Ou-yjJV!m4FINTbo;HDYRGu;2;%sF4CxN!^ z%=*Qk8LPb_LOersXDdSwtEo%gV%6WMAZs-rbm>dnOPn6L%1FYnB%3VWVeu}Cg~dIr zVYa=2w>+;b)5O-~e}sBZy%ewzD;L+J)o2}duS@D@r%E{}oVA*2))wP*n&UI!tO-Ri zxyFLJlf22|Itva@-a~QbhFbse#McWMBkmc`mg#gljr#w>wO*GpGlMyrhG|8ZsFFk# zj;XFUNL($pX4i@>pB?HgMGyD-GN@apKH+xBm6i10*eehlmGw# literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_utils.py b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_utils.py new file mode 100644 index 0000000..55d6747 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_utils.py @@ -0,0 +1,127 @@ +from __future__ import absolute_import, division, unicode_literals + +import sys +from types import ModuleType + +from pip._vendor.six import text_type + +try: + import xml.etree.cElementTree as default_etree +except ImportError: + import xml.etree.ElementTree as default_etree + + +__all__ = ["default_etree", "MethodDispatcher", "isSurrogatePair", + "surrogatePairToCodepoint", "moduleFactoryFactory", + "supports_lone_surrogates", "PY27"] + + +PY27 = sys.version_info[0] == 2 and sys.version_info[1] >= 7 + +# Platforms not supporting lone surrogates (\uD800-\uDFFF) should be +# caught by the below test. In general this would be any platform +# using UTF-16 as its encoding of unicode strings, such as +# Jython. This is because UTF-16 itself is based on the use of such +# surrogates, and there is no mechanism to further escape such +# escapes. +try: + _x = eval('"\\uD800"') # pylint:disable=eval-used + if not isinstance(_x, text_type): + # We need this with u"" because of http://bugs.jython.org/issue2039 + _x = eval('u"\\uD800"') # pylint:disable=eval-used + assert isinstance(_x, text_type) +except: # pylint:disable=bare-except + supports_lone_surrogates = False +else: + supports_lone_surrogates = True + + +class MethodDispatcher(dict): + """Dict with 2 special properties: + + On initiation, keys that are lists, sets or tuples are converted to + multiple keys so accessing any one of the items in the original + list-like object returns the matching value + + md = MethodDispatcher({("foo", "bar"):"baz"}) + md["foo"] == "baz" + + A default value which can be set through the default attribute. + """ + + def __init__(self, items=()): + # Using _dictEntries instead of directly assigning to self is about + # twice as fast. Please do careful performance testing before changing + # anything here. + _dictEntries = [] + for name, value in items: + if isinstance(name, (list, tuple, frozenset, set)): + for item in name: + _dictEntries.append((item, value)) + else: + _dictEntries.append((name, value)) + dict.__init__(self, _dictEntries) + assert len(self) == len(_dictEntries) + self.default = None + + def __getitem__(self, key): + return dict.get(self, key, self.default) + + +# Some utility functions to deal with weirdness around UCS2 vs UCS4 +# python builds + +def isSurrogatePair(data): + return (len(data) == 2 and + ord(data[0]) >= 0xD800 and ord(data[0]) <= 0xDBFF and + ord(data[1]) >= 0xDC00 and ord(data[1]) <= 0xDFFF) + + +def surrogatePairToCodepoint(data): + char_val = (0x10000 + (ord(data[0]) - 0xD800) * 0x400 + + (ord(data[1]) - 0xDC00)) + return char_val + +# Module Factory Factory (no, this isn't Java, I know) +# Here to stop this being duplicated all over the place. + + +def moduleFactoryFactory(factory): + moduleCache = {} + + def moduleFactory(baseModule, *args, **kwargs): + if isinstance(ModuleType.__name__, type("")): + name = "_%s_factory" % baseModule.__name__ + else: + name = b"_%s_factory" % baseModule.__name__ + + kwargs_tuple = tuple(kwargs.items()) + + try: + return moduleCache[name][args][kwargs_tuple] + except KeyError: + mod = ModuleType(name) + objs = factory(baseModule, *args, **kwargs) + mod.__dict__.update(objs) + if "name" not in moduleCache: + moduleCache[name] = {} + if "args" not in moduleCache[name]: + moduleCache[name][args] = {} + if "kwargs" not in moduleCache[name][args]: + moduleCache[name][args][kwargs_tuple] = {} + moduleCache[name][args][kwargs_tuple] = mod + return mod + + return moduleFactory + + +def memoize(func): + cache = {} + + def wrapped(*args, **kwargs): + key = (tuple(args), tuple(kwargs.items())) + if key not in cache: + cache[key] = func(*args, **kwargs) + return cache[key] + + return wrapped diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_utils.pyc b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_utils.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8408457cf4bccd3d3d83b6720b87c9ae44429e74 GIT binary patch literal 4383 zcmb_fOK%*<5w4zDE}tt>6kjXJ(tyfi1xTc#II!VJfgMst9xx*e1xQ*;m<(rnxkJv* ztfzY@t|DGSBUUc{4Y}o%OMv`={DoWsBtZT^Zn*|XzN%S1ZTLbHoZjl{>gwuxxBH*Q z#J?Z>@p(kUzft^t_-lvE3q=&;Ur|cbQ`A<}bExf5&!x6Yiq{-UYt*g@olEHm_3G5F zS8Fv&N2xbP?J-h=1t9_XIPFZ(&Lp*`=xKI~YPvzY6I2|MQb!yw3CT2*WQv}}BNW#u z9;JAU;&F;6D4wM4QEJbSuF=kA=G=^@XxE|quSci`P?uCFV%a zlg2nkhq&aZ;-#6dU$P7ITSXZ`(gw??7pc8O*(g2JO@`vjq_0v(Q9MhZ6CDygZ(pPM z3QyYCDV`JH9g61#xIyuP05@52o2^A?I$^E1Tnu&^L%3z~w6r=%di}hxb_}>U*-K24 zXLbgYGE1U7)o@BP1!(vZP{y2udB@Um*S4i0JO1|&%i*o(_d-s-0zCd|2liQyc z_tEpuv~F4xfe!}HYUloy)YYiP?DE-z*&1RZ_nURndC*Xon&DuJovb~ zX|fB_tsM>F3vJ6HV}Z2SV>2?ly)Z3xC44XT9(w0B*ZNIsxs&J1cf94TuvotR0e)UD zAKb3Qj6apdm)^sNy#9K*;`EU>^q`8p_o|yjT`vkVZ%gz2AwrRt+g%amh%~geNVee9 zE5bWsQ`PaYz1P@ee*&;gbl}i_LT?nUzYOVxLkBJ$)W{OOamgyO4p{&->eM)Ji%)6) zJziRW*`$LJdgIUzM*M@q;c!-;{g|G9);L;mPp>rSsjbt_D7^uDP&=d$YM5Xj1Hu6L z#QcHmIOhO36IO#s1~w(UHd<4VTLKT!nHd{qk%o9gY#=+ri|h&5Pt+;$*E)lSa0SE? zepv%yzpt}c_Qdc)3HBghM+*WWOm${2f$$?^*d6oi5yG;N4IA(k%PJhIxy1}+#ptvn z$BPSDmNH=Wk22Un8==X5tN6Yc(islA4wNz~@}^E!_Hfi9+G7UBE&3|qcFS$C$UBTl6J z@#&)2E&vW8@oXeQu94duPQV}?HsSBckSLR1!PaP3ox+Y(wDq&JL+mKiZnjt-8&yUJ zgwpnR4FCJbQG%y`^7LOvW@E<|v*krx6)bj#IJDu3nl7XvDX8aa*)MQ}D2&vsx}!v4 zY}aE?yw5Tq35d>4G_(}gXl`+cJ=Vq2;sG?tS7(K9pq8tupjTICu2pU0tIHkz8z8LQ z_9h?+`KTKf0Rr*cy7o7f>&G~Bc>kuFKe<2az~y9o9RTj}dqrOmeW5s)LLI+DdLG`C zDK|uKd}nsTo4jukZU^lKmI8nFQ(co^tFCeF*lY+;c%#nPm+L z2ada=RQ#DQS8;!Uz7DPB@F-sV+sPsyEd=!=0+xk|{(F{)4d0908CvA_W04`C;vgwRD#g`ju~>%ntB6b}`eFA)R)9C6(WY96&UEYpcM$0X|^)_ctC*lP8bhxxG1cS`i!DEmH8>K=N&CwQI-3qecxomt{gIP;d1aQnGD8LP18 zusz{>nk{FX({sLW5QJ%p{J?RJ2Ma$o(S~+%u`EB+1kk8a=)yt1Uu7YFD~gyO;~}bT zRd>Gr!6yu!6s49X&S&58Jsy^MxW~i07%FoDsGy5kl6~hv6^%b(3mHD' instead.", + "expected-tag-name-but-got-question-mark": + "Expected tag name. Got '?' instead. (HTML doesn't " + "support processing instructions.)", + "expected-tag-name": + "Expected tag name. Got something else instead", + "expected-closing-tag-but-got-right-bracket": + "Expected closing tag. Got '>' instead. Ignoring ''.", + "expected-closing-tag-but-got-eof": + "Expected closing tag. Unexpected end of file.", + "expected-closing-tag-but-got-char": + "Expected closing tag. Unexpected character '%(data)s' found.", + "eof-in-tag-name": + "Unexpected end of file in the tag name.", + "expected-attribute-name-but-got-eof": + "Unexpected end of file. Expected attribute name instead.", + "eof-in-attribute-name": + "Unexpected end of file in attribute name.", + "invalid-character-in-attribute-name": + "Invalid character in attribute name", + "duplicate-attribute": + "Dropped duplicate attribute on tag.", + "expected-end-of-tag-name-but-got-eof": + "Unexpected end of file. Expected = or end of tag.", + "expected-attribute-value-but-got-eof": + "Unexpected end of file. Expected attribute value.", + "expected-attribute-value-but-got-right-bracket": + "Expected attribute value. Got '>' instead.", + 'equals-in-unquoted-attribute-value': + "Unexpected = in unquoted attribute", + 'unexpected-character-in-unquoted-attribute-value': + "Unexpected character in unquoted attribute", + "invalid-character-after-attribute-name": + "Unexpected character after attribute name.", + "unexpected-character-after-attribute-value": + "Unexpected character after attribute value.", + "eof-in-attribute-value-double-quote": + "Unexpected end of file in attribute value (\").", + "eof-in-attribute-value-single-quote": + "Unexpected end of file in attribute value (').", + "eof-in-attribute-value-no-quotes": + "Unexpected end of file in attribute value.", + "unexpected-EOF-after-solidus-in-tag": + "Unexpected end of file in tag. Expected >", + "unexpected-character-after-solidus-in-tag": + "Unexpected character after / in tag. Expected >", + "expected-dashes-or-doctype": + "Expected '--' or 'DOCTYPE'. Not found.", + "unexpected-bang-after-double-dash-in-comment": + "Unexpected ! after -- in comment", + "unexpected-space-after-double-dash-in-comment": + "Unexpected space after -- in comment", + "incorrect-comment": + "Incorrect comment.", + "eof-in-comment": + "Unexpected end of file in comment.", + "eof-in-comment-end-dash": + "Unexpected end of file in comment (-)", + "unexpected-dash-after-double-dash-in-comment": + "Unexpected '-' after '--' found in comment.", + "eof-in-comment-double-dash": + "Unexpected end of file in comment (--).", + "eof-in-comment-end-space-state": + "Unexpected end of file in comment.", + "eof-in-comment-end-bang-state": + "Unexpected end of file in comment.", + "unexpected-char-in-comment": + "Unexpected character in comment found.", + "need-space-after-doctype": + "No space after literal string 'DOCTYPE'.", + "expected-doctype-name-but-got-right-bracket": + "Unexpected > character. Expected DOCTYPE name.", + "expected-doctype-name-but-got-eof": + "Unexpected end of file. Expected DOCTYPE name.", + "eof-in-doctype-name": + "Unexpected end of file in DOCTYPE name.", + "eof-in-doctype": + "Unexpected end of file in DOCTYPE.", + "expected-space-or-right-bracket-in-doctype": + "Expected space or '>'. Got '%(data)s'", + "unexpected-end-of-doctype": + "Unexpected end of DOCTYPE.", + "unexpected-char-in-doctype": + "Unexpected character in DOCTYPE.", + "eof-in-innerhtml": + "XXX innerHTML EOF", + "unexpected-doctype": + "Unexpected DOCTYPE. Ignored.", + "non-html-root": + "html needs to be the first start tag.", + "expected-doctype-but-got-eof": + "Unexpected End of file. Expected DOCTYPE.", + "unknown-doctype": + "Erroneous DOCTYPE.", + "expected-doctype-but-got-chars": + "Unexpected non-space characters. Expected DOCTYPE.", + "expected-doctype-but-got-start-tag": + "Unexpected start tag (%(name)s). Expected DOCTYPE.", + "expected-doctype-but-got-end-tag": + "Unexpected end tag (%(name)s). Expected DOCTYPE.", + "end-tag-after-implied-root": + "Unexpected end tag (%(name)s) after the (implied) root element.", + "expected-named-closing-tag-but-got-eof": + "Unexpected end of file. Expected end tag (%(name)s).", + "two-heads-are-not-better-than-one": + "Unexpected start tag head in existing head. Ignored.", + "unexpected-end-tag": + "Unexpected end tag (%(name)s). Ignored.", + "unexpected-start-tag-out-of-my-head": + "Unexpected start tag (%(name)s) that can be in head. Moved.", + "unexpected-start-tag": + "Unexpected start tag (%(name)s).", + "missing-end-tag": + "Missing end tag (%(name)s).", + "missing-end-tags": + "Missing end tags (%(name)s).", + "unexpected-start-tag-implies-end-tag": + "Unexpected start tag (%(startName)s) " + "implies end tag (%(endName)s).", + "unexpected-start-tag-treated-as": + "Unexpected start tag (%(originalName)s). Treated as %(newName)s.", + "deprecated-tag": + "Unexpected start tag %(name)s. Don't use it!", + "unexpected-start-tag-ignored": + "Unexpected start tag %(name)s. Ignored.", + "expected-one-end-tag-but-got-another": + "Unexpected end tag (%(gotName)s). " + "Missing end tag (%(expectedName)s).", + "end-tag-too-early": + "End tag (%(name)s) seen too early. Expected other end tag.", + "end-tag-too-early-named": + "Unexpected end tag (%(gotName)s). Expected end tag (%(expectedName)s).", + "end-tag-too-early-ignored": + "End tag (%(name)s) seen too early. Ignored.", + "adoption-agency-1.1": + "End tag (%(name)s) violates step 1, " + "paragraph 1 of the adoption agency algorithm.", + "adoption-agency-1.2": + "End tag (%(name)s) violates step 1, " + "paragraph 2 of the adoption agency algorithm.", + "adoption-agency-1.3": + "End tag (%(name)s) violates step 1, " + "paragraph 3 of the adoption agency algorithm.", + "adoption-agency-4.4": + "End tag (%(name)s) violates step 4, " + "paragraph 4 of the adoption agency algorithm.", + "unexpected-end-tag-treated-as": + "Unexpected end tag (%(originalName)s). Treated as %(newName)s.", + "no-end-tag": + "This element (%(name)s) has no end tag.", + "unexpected-implied-end-tag-in-table": + "Unexpected implied end tag (%(name)s) in the table phase.", + "unexpected-implied-end-tag-in-table-body": + "Unexpected implied end tag (%(name)s) in the table body phase.", + "unexpected-char-implies-table-voodoo": + "Unexpected non-space characters in " + "table context caused voodoo mode.", + "unexpected-hidden-input-in-table": + "Unexpected input with type hidden in table context.", + "unexpected-form-in-table": + "Unexpected form in table context.", + "unexpected-start-tag-implies-table-voodoo": + "Unexpected start tag (%(name)s) in " + "table context caused voodoo mode.", + "unexpected-end-tag-implies-table-voodoo": + "Unexpected end tag (%(name)s) in " + "table context caused voodoo mode.", + "unexpected-cell-in-table-body": + "Unexpected table cell start tag (%(name)s) " + "in the table body phase.", + "unexpected-cell-end-tag": + "Got table cell end tag (%(name)s) " + "while required end tags are missing.", + "unexpected-end-tag-in-table-body": + "Unexpected end tag (%(name)s) in the table body phase. Ignored.", + "unexpected-implied-end-tag-in-table-row": + "Unexpected implied end tag (%(name)s) in the table row phase.", + "unexpected-end-tag-in-table-row": + "Unexpected end tag (%(name)s) in the table row phase. Ignored.", + "unexpected-select-in-select": + "Unexpected select start tag in the select phase " + "treated as select end tag.", + "unexpected-input-in-select": + "Unexpected input start tag in the select phase.", + "unexpected-start-tag-in-select": + "Unexpected start tag token (%(name)s in the select phase. " + "Ignored.", + "unexpected-end-tag-in-select": + "Unexpected end tag (%(name)s) in the select phase. Ignored.", + "unexpected-table-element-start-tag-in-select-in-table": + "Unexpected table element start tag (%(name)s) in the select in table phase.", + "unexpected-table-element-end-tag-in-select-in-table": + "Unexpected table element end tag (%(name)s) in the select in table phase.", + "unexpected-char-after-body": + "Unexpected non-space characters in the after body phase.", + "unexpected-start-tag-after-body": + "Unexpected start tag token (%(name)s)" + " in the after body phase.", + "unexpected-end-tag-after-body": + "Unexpected end tag token (%(name)s)" + " in the after body phase.", + "unexpected-char-in-frameset": + "Unexpected characters in the frameset phase. Characters ignored.", + "unexpected-start-tag-in-frameset": + "Unexpected start tag token (%(name)s)" + " in the frameset phase. Ignored.", + "unexpected-frameset-in-frameset-innerhtml": + "Unexpected end tag token (frameset) " + "in the frameset phase (innerHTML).", + "unexpected-end-tag-in-frameset": + "Unexpected end tag token (%(name)s)" + " in the frameset phase. Ignored.", + "unexpected-char-after-frameset": + "Unexpected non-space characters in the " + "after frameset phase. Ignored.", + "unexpected-start-tag-after-frameset": + "Unexpected start tag (%(name)s)" + " in the after frameset phase. Ignored.", + "unexpected-end-tag-after-frameset": + "Unexpected end tag (%(name)s)" + " in the after frameset phase. Ignored.", + "unexpected-end-tag-after-body-innerhtml": + "Unexpected end tag after body(innerHtml)", + "expected-eof-but-got-char": + "Unexpected non-space characters. Expected end of file.", + "expected-eof-but-got-start-tag": + "Unexpected start tag (%(name)s)" + ". Expected end of file.", + "expected-eof-but-got-end-tag": + "Unexpected end tag (%(name)s)" + ". Expected end of file.", + "eof-in-table": + "Unexpected end of file. Expected table content.", + "eof-in-select": + "Unexpected end of file. Expected select content.", + "eof-in-frameset": + "Unexpected end of file. Expected frameset content.", + "eof-in-script-in-script": + "Unexpected end of file. Expected script content.", + "eof-in-foreign-lands": + "Unexpected end of file. Expected foreign content", + "non-void-element-with-trailing-solidus": + "Trailing solidus not allowed on element %(name)s", + "unexpected-html-element-in-foreign-content": + "Element %(name)s not allowed in a non-html context", + "unexpected-end-tag-before-html": + "Unexpected end tag (%(name)s) before html.", + "unexpected-inhead-noscript-tag": + "Element %(name)s not allowed in a inhead-noscript context", + "eof-in-head-noscript": + "Unexpected end of file. Expected inhead-noscript content", + "char-in-head-noscript": + "Unexpected non-space character. Expected inhead-noscript content", + "XXX-undefined-error": + "Undefined error (this sucks and should be fixed)", +} + +namespaces = { + "html": "http://www.w3.org/1999/xhtml", + "mathml": "http://www.w3.org/1998/Math/MathML", + "svg": "http://www.w3.org/2000/svg", + "xlink": "http://www.w3.org/1999/xlink", + "xml": "http://www.w3.org/XML/1998/namespace", + "xmlns": "http://www.w3.org/2000/xmlns/" +} + +scopingElements = frozenset([ + (namespaces["html"], "applet"), + (namespaces["html"], "caption"), + (namespaces["html"], "html"), + (namespaces["html"], "marquee"), + (namespaces["html"], "object"), + (namespaces["html"], "table"), + (namespaces["html"], "td"), + (namespaces["html"], "th"), + (namespaces["mathml"], "mi"), + (namespaces["mathml"], "mo"), + (namespaces["mathml"], "mn"), + (namespaces["mathml"], "ms"), + (namespaces["mathml"], "mtext"), + (namespaces["mathml"], "annotation-xml"), + (namespaces["svg"], "foreignObject"), + (namespaces["svg"], "desc"), + (namespaces["svg"], "title"), +]) + +formattingElements = frozenset([ + (namespaces["html"], "a"), + (namespaces["html"], "b"), + (namespaces["html"], "big"), + (namespaces["html"], "code"), + (namespaces["html"], "em"), + (namespaces["html"], "font"), + (namespaces["html"], "i"), + (namespaces["html"], "nobr"), + (namespaces["html"], "s"), + (namespaces["html"], "small"), + (namespaces["html"], "strike"), + (namespaces["html"], "strong"), + (namespaces["html"], "tt"), + (namespaces["html"], "u") +]) + +specialElements = frozenset([ + (namespaces["html"], "address"), + (namespaces["html"], "applet"), + (namespaces["html"], "area"), + (namespaces["html"], "article"), + (namespaces["html"], "aside"), + (namespaces["html"], "base"), + (namespaces["html"], "basefont"), + (namespaces["html"], "bgsound"), + (namespaces["html"], "blockquote"), + (namespaces["html"], "body"), + (namespaces["html"], "br"), + (namespaces["html"], "button"), + (namespaces["html"], "caption"), + (namespaces["html"], "center"), + (namespaces["html"], "col"), + (namespaces["html"], "colgroup"), + (namespaces["html"], "command"), + (namespaces["html"], "dd"), + (namespaces["html"], "details"), + (namespaces["html"], "dir"), + (namespaces["html"], "div"), + (namespaces["html"], "dl"), + (namespaces["html"], "dt"), + (namespaces["html"], "embed"), + (namespaces["html"], "fieldset"), + (namespaces["html"], "figure"), + (namespaces["html"], "footer"), + (namespaces["html"], "form"), + (namespaces["html"], "frame"), + (namespaces["html"], "frameset"), + (namespaces["html"], "h1"), + (namespaces["html"], "h2"), + (namespaces["html"], "h3"), + (namespaces["html"], "h4"), + (namespaces["html"], "h5"), + (namespaces["html"], "h6"), + (namespaces["html"], "head"), + (namespaces["html"], "header"), + (namespaces["html"], "hr"), + (namespaces["html"], "html"), + (namespaces["html"], "iframe"), + # Note that image is commented out in the spec as "this isn't an + # element that can end up on the stack, so it doesn't matter," + (namespaces["html"], "image"), + (namespaces["html"], "img"), + (namespaces["html"], "input"), + (namespaces["html"], "isindex"), + (namespaces["html"], "li"), + (namespaces["html"], "link"), + (namespaces["html"], "listing"), + (namespaces["html"], "marquee"), + (namespaces["html"], "menu"), + (namespaces["html"], "meta"), + (namespaces["html"], "nav"), + (namespaces["html"], "noembed"), + (namespaces["html"], "noframes"), + (namespaces["html"], "noscript"), + (namespaces["html"], "object"), + (namespaces["html"], "ol"), + (namespaces["html"], "p"), + (namespaces["html"], "param"), + (namespaces["html"], "plaintext"), + (namespaces["html"], "pre"), + (namespaces["html"], "script"), + (namespaces["html"], "section"), + (namespaces["html"], "select"), + (namespaces["html"], "style"), + (namespaces["html"], "table"), + (namespaces["html"], "tbody"), + (namespaces["html"], "td"), + (namespaces["html"], "textarea"), + (namespaces["html"], "tfoot"), + (namespaces["html"], "th"), + (namespaces["html"], "thead"), + (namespaces["html"], "title"), + (namespaces["html"], "tr"), + (namespaces["html"], "ul"), + (namespaces["html"], "wbr"), + (namespaces["html"], "xmp"), + (namespaces["svg"], "foreignObject") +]) + +htmlIntegrationPointElements = frozenset([ + (namespaces["mathml"], "annotaion-xml"), + (namespaces["svg"], "foreignObject"), + (namespaces["svg"], "desc"), + (namespaces["svg"], "title") +]) + +mathmlTextIntegrationPointElements = frozenset([ + (namespaces["mathml"], "mi"), + (namespaces["mathml"], "mo"), + (namespaces["mathml"], "mn"), + (namespaces["mathml"], "ms"), + (namespaces["mathml"], "mtext") +]) + +adjustSVGAttributes = { + "attributename": "attributeName", + "attributetype": "attributeType", + "basefrequency": "baseFrequency", + "baseprofile": "baseProfile", + "calcmode": "calcMode", + "clippathunits": "clipPathUnits", + "contentscripttype": "contentScriptType", + "contentstyletype": "contentStyleType", + "diffuseconstant": "diffuseConstant", + "edgemode": "edgeMode", + "externalresourcesrequired": "externalResourcesRequired", + "filterres": "filterRes", + "filterunits": "filterUnits", + "glyphref": "glyphRef", + "gradienttransform": "gradientTransform", + "gradientunits": "gradientUnits", + "kernelmatrix": "kernelMatrix", + "kernelunitlength": "kernelUnitLength", + "keypoints": "keyPoints", + "keysplines": "keySplines", + "keytimes": "keyTimes", + "lengthadjust": "lengthAdjust", + "limitingconeangle": "limitingConeAngle", + "markerheight": "markerHeight", + "markerunits": "markerUnits", + "markerwidth": "markerWidth", + "maskcontentunits": "maskContentUnits", + "maskunits": "maskUnits", + "numoctaves": "numOctaves", + "pathlength": "pathLength", + "patterncontentunits": "patternContentUnits", + "patterntransform": "patternTransform", + "patternunits": "patternUnits", + "pointsatx": "pointsAtX", + "pointsaty": "pointsAtY", + "pointsatz": "pointsAtZ", + "preservealpha": "preserveAlpha", + "preserveaspectratio": "preserveAspectRatio", + "primitiveunits": "primitiveUnits", + "refx": "refX", + "refy": "refY", + "repeatcount": "repeatCount", + "repeatdur": "repeatDur", + "requiredextensions": "requiredExtensions", + "requiredfeatures": "requiredFeatures", + "specularconstant": "specularConstant", + "specularexponent": "specularExponent", + "spreadmethod": "spreadMethod", + "startoffset": "startOffset", + "stddeviation": "stdDeviation", + "stitchtiles": "stitchTiles", + "surfacescale": "surfaceScale", + "systemlanguage": "systemLanguage", + "tablevalues": "tableValues", + "targetx": "targetX", + "targety": "targetY", + "textlength": "textLength", + "viewbox": "viewBox", + "viewtarget": "viewTarget", + "xchannelselector": "xChannelSelector", + "ychannelselector": "yChannelSelector", + "zoomandpan": "zoomAndPan" +} + +adjustMathMLAttributes = {"definitionurl": "definitionURL"} + +adjustForeignAttributes = { + "xlink:actuate": ("xlink", "actuate", namespaces["xlink"]), + "xlink:arcrole": ("xlink", "arcrole", namespaces["xlink"]), + "xlink:href": ("xlink", "href", namespaces["xlink"]), + "xlink:role": ("xlink", "role", namespaces["xlink"]), + "xlink:show": ("xlink", "show", namespaces["xlink"]), + "xlink:title": ("xlink", "title", namespaces["xlink"]), + "xlink:type": ("xlink", "type", namespaces["xlink"]), + "xml:base": ("xml", "base", namespaces["xml"]), + "xml:lang": ("xml", "lang", namespaces["xml"]), + "xml:space": ("xml", "space", namespaces["xml"]), + "xmlns": (None, "xmlns", namespaces["xmlns"]), + "xmlns:xlink": ("xmlns", "xlink", namespaces["xmlns"]) +} + +unadjustForeignAttributes = dict([((ns, local), qname) for qname, (prefix, local, ns) in + adjustForeignAttributes.items()]) + +spaceCharacters = frozenset([ + "\t", + "\n", + "\u000C", + " ", + "\r" +]) + +tableInsertModeElements = frozenset([ + "table", + "tbody", + "tfoot", + "thead", + "tr" +]) + +asciiLowercase = frozenset(string.ascii_lowercase) +asciiUppercase = frozenset(string.ascii_uppercase) +asciiLetters = frozenset(string.ascii_letters) +digits = frozenset(string.digits) +hexDigits = frozenset(string.hexdigits) + +asciiUpper2Lower = dict([(ord(c), ord(c.lower())) + for c in string.ascii_uppercase]) + +# Heading elements need to be ordered +headingElements = ( + "h1", + "h2", + "h3", + "h4", + "h5", + "h6" +) + +voidElements = frozenset([ + "base", + "command", + "event-source", + "link", + "meta", + "hr", + "br", + "img", + "embed", + "param", + "area", + "col", + "input", + "source", + "track" +]) + +cdataElements = frozenset(['title', 'textarea']) + +rcdataElements = frozenset([ + 'style', + 'script', + 'xmp', + 'iframe', + 'noembed', + 'noframes', + 'noscript' +]) + +booleanAttributes = { + "": frozenset(["irrelevant"]), + "style": frozenset(["scoped"]), + "img": frozenset(["ismap"]), + "audio": frozenset(["autoplay", "controls"]), + "video": frozenset(["autoplay", "controls"]), + "script": frozenset(["defer", "async"]), + "details": frozenset(["open"]), + "datagrid": frozenset(["multiple", "disabled"]), + "command": frozenset(["hidden", "disabled", "checked", "default"]), + "hr": frozenset(["noshade"]), + "menu": frozenset(["autosubmit"]), + "fieldset": frozenset(["disabled", "readonly"]), + "option": frozenset(["disabled", "readonly", "selected"]), + "optgroup": frozenset(["disabled", "readonly"]), + "button": frozenset(["disabled", "autofocus"]), + "input": frozenset(["disabled", "readonly", "required", "autofocus", "checked", "ismap"]), + "select": frozenset(["disabled", "readonly", "autofocus", "multiple"]), + "output": frozenset(["disabled", "readonly"]), +} + +# entitiesWindows1252 has to be _ordered_ and needs to have an index. It +# therefore can't be a frozenset. +entitiesWindows1252 = ( + 8364, # 0x80 0x20AC EURO SIGN + 65533, # 0x81 UNDEFINED + 8218, # 0x82 0x201A SINGLE LOW-9 QUOTATION MARK + 402, # 0x83 0x0192 LATIN SMALL LETTER F WITH HOOK + 8222, # 0x84 0x201E DOUBLE LOW-9 QUOTATION MARK + 8230, # 0x85 0x2026 HORIZONTAL ELLIPSIS + 8224, # 0x86 0x2020 DAGGER + 8225, # 0x87 0x2021 DOUBLE DAGGER + 710, # 0x88 0x02C6 MODIFIER LETTER CIRCUMFLEX ACCENT + 8240, # 0x89 0x2030 PER MILLE SIGN + 352, # 0x8A 0x0160 LATIN CAPITAL LETTER S WITH CARON + 8249, # 0x8B 0x2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK + 338, # 0x8C 0x0152 LATIN CAPITAL LIGATURE OE + 65533, # 0x8D UNDEFINED + 381, # 0x8E 0x017D LATIN CAPITAL LETTER Z WITH CARON + 65533, # 0x8F UNDEFINED + 65533, # 0x90 UNDEFINED + 8216, # 0x91 0x2018 LEFT SINGLE QUOTATION MARK + 8217, # 0x92 0x2019 RIGHT SINGLE QUOTATION MARK + 8220, # 0x93 0x201C LEFT DOUBLE QUOTATION MARK + 8221, # 0x94 0x201D RIGHT DOUBLE QUOTATION MARK + 8226, # 0x95 0x2022 BULLET + 8211, # 0x96 0x2013 EN DASH + 8212, # 0x97 0x2014 EM DASH + 732, # 0x98 0x02DC SMALL TILDE + 8482, # 0x99 0x2122 TRADE MARK SIGN + 353, # 0x9A 0x0161 LATIN SMALL LETTER S WITH CARON + 8250, # 0x9B 0x203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + 339, # 0x9C 0x0153 LATIN SMALL LIGATURE OE + 65533, # 0x9D UNDEFINED + 382, # 0x9E 0x017E LATIN SMALL LETTER Z WITH CARON + 376 # 0x9F 0x0178 LATIN CAPITAL LETTER Y WITH DIAERESIS +) + +xmlEntities = frozenset(['lt;', 'gt;', 'amp;', 'apos;', 'quot;']) + +entities = { + "AElig": "\xc6", + "AElig;": "\xc6", + "AMP": "&", + "AMP;": "&", + "Aacute": "\xc1", + "Aacute;": "\xc1", + "Abreve;": "\u0102", + "Acirc": "\xc2", + "Acirc;": "\xc2", + "Acy;": "\u0410", + "Afr;": "\U0001d504", + "Agrave": "\xc0", + "Agrave;": "\xc0", + "Alpha;": "\u0391", + "Amacr;": "\u0100", + "And;": "\u2a53", + "Aogon;": "\u0104", + "Aopf;": "\U0001d538", + "ApplyFunction;": "\u2061", + "Aring": "\xc5", + "Aring;": "\xc5", + "Ascr;": "\U0001d49c", + "Assign;": "\u2254", + "Atilde": "\xc3", + "Atilde;": "\xc3", + "Auml": "\xc4", + "Auml;": "\xc4", + "Backslash;": "\u2216", + "Barv;": "\u2ae7", + "Barwed;": "\u2306", + "Bcy;": "\u0411", + "Because;": "\u2235", + "Bernoullis;": "\u212c", + "Beta;": "\u0392", + "Bfr;": "\U0001d505", + "Bopf;": "\U0001d539", + "Breve;": "\u02d8", + "Bscr;": "\u212c", + "Bumpeq;": "\u224e", + "CHcy;": "\u0427", + "COPY": "\xa9", + "COPY;": "\xa9", + "Cacute;": "\u0106", + "Cap;": "\u22d2", + "CapitalDifferentialD;": "\u2145", + "Cayleys;": "\u212d", + "Ccaron;": "\u010c", + "Ccedil": "\xc7", + "Ccedil;": "\xc7", + "Ccirc;": "\u0108", + "Cconint;": "\u2230", + "Cdot;": "\u010a", + "Cedilla;": "\xb8", + "CenterDot;": "\xb7", + "Cfr;": "\u212d", + "Chi;": "\u03a7", + "CircleDot;": "\u2299", + "CircleMinus;": "\u2296", + "CirclePlus;": "\u2295", + "CircleTimes;": "\u2297", + "ClockwiseContourIntegral;": "\u2232", + "CloseCurlyDoubleQuote;": "\u201d", + "CloseCurlyQuote;": "\u2019", + "Colon;": "\u2237", + "Colone;": "\u2a74", + "Congruent;": "\u2261", + "Conint;": "\u222f", + "ContourIntegral;": "\u222e", + "Copf;": "\u2102", + "Coproduct;": "\u2210", + "CounterClockwiseContourIntegral;": "\u2233", + "Cross;": "\u2a2f", + "Cscr;": "\U0001d49e", + "Cup;": "\u22d3", + "CupCap;": "\u224d", + "DD;": "\u2145", + "DDotrahd;": "\u2911", + "DJcy;": "\u0402", + "DScy;": "\u0405", + "DZcy;": "\u040f", + "Dagger;": "\u2021", + "Darr;": "\u21a1", + "Dashv;": "\u2ae4", + "Dcaron;": "\u010e", + "Dcy;": "\u0414", + "Del;": "\u2207", + "Delta;": "\u0394", + "Dfr;": "\U0001d507", + "DiacriticalAcute;": "\xb4", + "DiacriticalDot;": "\u02d9", + "DiacriticalDoubleAcute;": "\u02dd", + "DiacriticalGrave;": "`", + "DiacriticalTilde;": "\u02dc", + "Diamond;": "\u22c4", + "DifferentialD;": "\u2146", + "Dopf;": "\U0001d53b", + "Dot;": "\xa8", + "DotDot;": "\u20dc", + "DotEqual;": "\u2250", + "DoubleContourIntegral;": "\u222f", + "DoubleDot;": "\xa8", + "DoubleDownArrow;": "\u21d3", + "DoubleLeftArrow;": "\u21d0", + "DoubleLeftRightArrow;": "\u21d4", + "DoubleLeftTee;": "\u2ae4", + "DoubleLongLeftArrow;": "\u27f8", + "DoubleLongLeftRightArrow;": "\u27fa", + "DoubleLongRightArrow;": "\u27f9", + "DoubleRightArrow;": "\u21d2", + "DoubleRightTee;": "\u22a8", + "DoubleUpArrow;": "\u21d1", + "DoubleUpDownArrow;": "\u21d5", + "DoubleVerticalBar;": "\u2225", + "DownArrow;": "\u2193", + "DownArrowBar;": "\u2913", + "DownArrowUpArrow;": "\u21f5", + "DownBreve;": "\u0311", + "DownLeftRightVector;": "\u2950", + "DownLeftTeeVector;": "\u295e", + "DownLeftVector;": "\u21bd", + "DownLeftVectorBar;": "\u2956", + "DownRightTeeVector;": "\u295f", + "DownRightVector;": "\u21c1", + "DownRightVectorBar;": "\u2957", + "DownTee;": "\u22a4", + "DownTeeArrow;": "\u21a7", + "Downarrow;": "\u21d3", + "Dscr;": "\U0001d49f", + "Dstrok;": "\u0110", + "ENG;": "\u014a", + "ETH": "\xd0", + "ETH;": "\xd0", + "Eacute": "\xc9", + "Eacute;": "\xc9", + "Ecaron;": "\u011a", + "Ecirc": "\xca", + "Ecirc;": "\xca", + "Ecy;": "\u042d", + "Edot;": "\u0116", + "Efr;": "\U0001d508", + "Egrave": "\xc8", + "Egrave;": "\xc8", + "Element;": "\u2208", + "Emacr;": "\u0112", + "EmptySmallSquare;": "\u25fb", + "EmptyVerySmallSquare;": "\u25ab", + "Eogon;": "\u0118", + "Eopf;": "\U0001d53c", + "Epsilon;": "\u0395", + "Equal;": "\u2a75", + "EqualTilde;": "\u2242", + "Equilibrium;": "\u21cc", + "Escr;": "\u2130", + "Esim;": "\u2a73", + "Eta;": "\u0397", + "Euml": "\xcb", + "Euml;": "\xcb", + "Exists;": "\u2203", + "ExponentialE;": "\u2147", + "Fcy;": "\u0424", + "Ffr;": "\U0001d509", + "FilledSmallSquare;": "\u25fc", + "FilledVerySmallSquare;": "\u25aa", + "Fopf;": "\U0001d53d", + "ForAll;": "\u2200", + "Fouriertrf;": "\u2131", + "Fscr;": "\u2131", + "GJcy;": "\u0403", + "GT": ">", + "GT;": ">", + "Gamma;": "\u0393", + "Gammad;": "\u03dc", + "Gbreve;": "\u011e", + "Gcedil;": "\u0122", + "Gcirc;": "\u011c", + "Gcy;": "\u0413", + "Gdot;": "\u0120", + "Gfr;": "\U0001d50a", + "Gg;": "\u22d9", + "Gopf;": "\U0001d53e", + "GreaterEqual;": "\u2265", + "GreaterEqualLess;": "\u22db", + "GreaterFullEqual;": "\u2267", + "GreaterGreater;": "\u2aa2", + "GreaterLess;": "\u2277", + "GreaterSlantEqual;": "\u2a7e", + "GreaterTilde;": "\u2273", + "Gscr;": "\U0001d4a2", + "Gt;": "\u226b", + "HARDcy;": "\u042a", + "Hacek;": "\u02c7", + "Hat;": "^", + "Hcirc;": "\u0124", + "Hfr;": "\u210c", + "HilbertSpace;": "\u210b", + "Hopf;": "\u210d", + "HorizontalLine;": "\u2500", + "Hscr;": "\u210b", + "Hstrok;": "\u0126", + "HumpDownHump;": "\u224e", + "HumpEqual;": "\u224f", + "IEcy;": "\u0415", + "IJlig;": "\u0132", + "IOcy;": "\u0401", + "Iacute": "\xcd", + "Iacute;": "\xcd", + "Icirc": "\xce", + "Icirc;": "\xce", + "Icy;": "\u0418", + "Idot;": "\u0130", + "Ifr;": "\u2111", + "Igrave": "\xcc", + "Igrave;": "\xcc", + "Im;": "\u2111", + "Imacr;": "\u012a", + "ImaginaryI;": "\u2148", + "Implies;": "\u21d2", + "Int;": "\u222c", + "Integral;": "\u222b", + "Intersection;": "\u22c2", + "InvisibleComma;": "\u2063", + "InvisibleTimes;": "\u2062", + "Iogon;": "\u012e", + "Iopf;": "\U0001d540", + "Iota;": "\u0399", + "Iscr;": "\u2110", + "Itilde;": "\u0128", + "Iukcy;": "\u0406", + "Iuml": "\xcf", + "Iuml;": "\xcf", + "Jcirc;": "\u0134", + "Jcy;": "\u0419", + "Jfr;": "\U0001d50d", + "Jopf;": "\U0001d541", + "Jscr;": "\U0001d4a5", + "Jsercy;": "\u0408", + "Jukcy;": "\u0404", + "KHcy;": "\u0425", + "KJcy;": "\u040c", + "Kappa;": "\u039a", + "Kcedil;": "\u0136", + "Kcy;": "\u041a", + "Kfr;": "\U0001d50e", + "Kopf;": "\U0001d542", + "Kscr;": "\U0001d4a6", + "LJcy;": "\u0409", + "LT": "<", + "LT;": "<", + "Lacute;": "\u0139", + "Lambda;": "\u039b", + "Lang;": "\u27ea", + "Laplacetrf;": "\u2112", + "Larr;": "\u219e", + "Lcaron;": "\u013d", + "Lcedil;": "\u013b", + "Lcy;": "\u041b", + "LeftAngleBracket;": "\u27e8", + "LeftArrow;": "\u2190", + "LeftArrowBar;": "\u21e4", + "LeftArrowRightArrow;": "\u21c6", + "LeftCeiling;": "\u2308", + "LeftDoubleBracket;": "\u27e6", + "LeftDownTeeVector;": "\u2961", + "LeftDownVector;": "\u21c3", + "LeftDownVectorBar;": "\u2959", + "LeftFloor;": "\u230a", + "LeftRightArrow;": "\u2194", + "LeftRightVector;": "\u294e", + "LeftTee;": "\u22a3", + "LeftTeeArrow;": "\u21a4", + "LeftTeeVector;": "\u295a", + "LeftTriangle;": "\u22b2", + "LeftTriangleBar;": "\u29cf", + "LeftTriangleEqual;": "\u22b4", + "LeftUpDownVector;": "\u2951", + "LeftUpTeeVector;": "\u2960", + "LeftUpVector;": "\u21bf", + "LeftUpVectorBar;": "\u2958", + "LeftVector;": "\u21bc", + "LeftVectorBar;": "\u2952", + "Leftarrow;": "\u21d0", + "Leftrightarrow;": "\u21d4", + "LessEqualGreater;": "\u22da", + "LessFullEqual;": "\u2266", + "LessGreater;": "\u2276", + "LessLess;": "\u2aa1", + "LessSlantEqual;": "\u2a7d", + "LessTilde;": "\u2272", + "Lfr;": "\U0001d50f", + "Ll;": "\u22d8", + "Lleftarrow;": "\u21da", + "Lmidot;": "\u013f", + "LongLeftArrow;": "\u27f5", + "LongLeftRightArrow;": "\u27f7", + "LongRightArrow;": "\u27f6", + "Longleftarrow;": "\u27f8", + "Longleftrightarrow;": "\u27fa", + "Longrightarrow;": "\u27f9", + "Lopf;": "\U0001d543", + "LowerLeftArrow;": "\u2199", + "LowerRightArrow;": "\u2198", + "Lscr;": "\u2112", + "Lsh;": "\u21b0", + "Lstrok;": "\u0141", + "Lt;": "\u226a", + "Map;": "\u2905", + "Mcy;": "\u041c", + "MediumSpace;": "\u205f", + "Mellintrf;": "\u2133", + "Mfr;": "\U0001d510", + "MinusPlus;": "\u2213", + "Mopf;": "\U0001d544", + "Mscr;": "\u2133", + "Mu;": "\u039c", + "NJcy;": "\u040a", + "Nacute;": "\u0143", + "Ncaron;": "\u0147", + "Ncedil;": "\u0145", + "Ncy;": "\u041d", + "NegativeMediumSpace;": "\u200b", + "NegativeThickSpace;": "\u200b", + "NegativeThinSpace;": "\u200b", + "NegativeVeryThinSpace;": "\u200b", + "NestedGreaterGreater;": "\u226b", + "NestedLessLess;": "\u226a", + "NewLine;": "\n", + "Nfr;": "\U0001d511", + "NoBreak;": "\u2060", + "NonBreakingSpace;": "\xa0", + "Nopf;": "\u2115", + "Not;": "\u2aec", + "NotCongruent;": "\u2262", + "NotCupCap;": "\u226d", + "NotDoubleVerticalBar;": "\u2226", + "NotElement;": "\u2209", + "NotEqual;": "\u2260", + "NotEqualTilde;": "\u2242\u0338", + "NotExists;": "\u2204", + "NotGreater;": "\u226f", + "NotGreaterEqual;": "\u2271", + "NotGreaterFullEqual;": "\u2267\u0338", + "NotGreaterGreater;": "\u226b\u0338", + "NotGreaterLess;": "\u2279", + "NotGreaterSlantEqual;": "\u2a7e\u0338", + "NotGreaterTilde;": "\u2275", + "NotHumpDownHump;": "\u224e\u0338", + "NotHumpEqual;": "\u224f\u0338", + "NotLeftTriangle;": "\u22ea", + "NotLeftTriangleBar;": "\u29cf\u0338", + "NotLeftTriangleEqual;": "\u22ec", + "NotLess;": "\u226e", + "NotLessEqual;": "\u2270", + "NotLessGreater;": "\u2278", + "NotLessLess;": "\u226a\u0338", + "NotLessSlantEqual;": "\u2a7d\u0338", + "NotLessTilde;": "\u2274", + "NotNestedGreaterGreater;": "\u2aa2\u0338", + "NotNestedLessLess;": "\u2aa1\u0338", + "NotPrecedes;": "\u2280", + "NotPrecedesEqual;": "\u2aaf\u0338", + "NotPrecedesSlantEqual;": "\u22e0", + "NotReverseElement;": "\u220c", + "NotRightTriangle;": "\u22eb", + "NotRightTriangleBar;": "\u29d0\u0338", + "NotRightTriangleEqual;": "\u22ed", + "NotSquareSubset;": "\u228f\u0338", + "NotSquareSubsetEqual;": "\u22e2", + "NotSquareSuperset;": "\u2290\u0338", + "NotSquareSupersetEqual;": "\u22e3", + "NotSubset;": "\u2282\u20d2", + "NotSubsetEqual;": "\u2288", + "NotSucceeds;": "\u2281", + "NotSucceedsEqual;": "\u2ab0\u0338", + "NotSucceedsSlantEqual;": "\u22e1", + "NotSucceedsTilde;": "\u227f\u0338", + "NotSuperset;": "\u2283\u20d2", + "NotSupersetEqual;": "\u2289", + "NotTilde;": "\u2241", + "NotTildeEqual;": "\u2244", + "NotTildeFullEqual;": "\u2247", + "NotTildeTilde;": "\u2249", + "NotVerticalBar;": "\u2224", + "Nscr;": "\U0001d4a9", + "Ntilde": "\xd1", + "Ntilde;": "\xd1", + "Nu;": "\u039d", + "OElig;": "\u0152", + "Oacute": "\xd3", + "Oacute;": "\xd3", + "Ocirc": "\xd4", + "Ocirc;": "\xd4", + "Ocy;": "\u041e", + "Odblac;": "\u0150", + "Ofr;": "\U0001d512", + "Ograve": "\xd2", + "Ograve;": "\xd2", + "Omacr;": "\u014c", + "Omega;": "\u03a9", + "Omicron;": "\u039f", + "Oopf;": "\U0001d546", + "OpenCurlyDoubleQuote;": "\u201c", + "OpenCurlyQuote;": "\u2018", + "Or;": "\u2a54", + "Oscr;": "\U0001d4aa", + "Oslash": "\xd8", + "Oslash;": "\xd8", + "Otilde": "\xd5", + "Otilde;": "\xd5", + "Otimes;": "\u2a37", + "Ouml": "\xd6", + "Ouml;": "\xd6", + "OverBar;": "\u203e", + "OverBrace;": "\u23de", + "OverBracket;": "\u23b4", + "OverParenthesis;": "\u23dc", + "PartialD;": "\u2202", + "Pcy;": "\u041f", + "Pfr;": "\U0001d513", + "Phi;": "\u03a6", + "Pi;": "\u03a0", + "PlusMinus;": "\xb1", + "Poincareplane;": "\u210c", + "Popf;": "\u2119", + "Pr;": "\u2abb", + "Precedes;": "\u227a", + "PrecedesEqual;": "\u2aaf", + "PrecedesSlantEqual;": "\u227c", + "PrecedesTilde;": "\u227e", + "Prime;": "\u2033", + "Product;": "\u220f", + "Proportion;": "\u2237", + "Proportional;": "\u221d", + "Pscr;": "\U0001d4ab", + "Psi;": "\u03a8", + "QUOT": "\"", + "QUOT;": "\"", + "Qfr;": "\U0001d514", + "Qopf;": "\u211a", + "Qscr;": "\U0001d4ac", + "RBarr;": "\u2910", + "REG": "\xae", + "REG;": "\xae", + "Racute;": "\u0154", + "Rang;": "\u27eb", + "Rarr;": "\u21a0", + "Rarrtl;": "\u2916", + "Rcaron;": "\u0158", + "Rcedil;": "\u0156", + "Rcy;": "\u0420", + "Re;": "\u211c", + "ReverseElement;": "\u220b", + "ReverseEquilibrium;": "\u21cb", + "ReverseUpEquilibrium;": "\u296f", + "Rfr;": "\u211c", + "Rho;": "\u03a1", + "RightAngleBracket;": "\u27e9", + "RightArrow;": "\u2192", + "RightArrowBar;": "\u21e5", + "RightArrowLeftArrow;": "\u21c4", + "RightCeiling;": "\u2309", + "RightDoubleBracket;": "\u27e7", + "RightDownTeeVector;": "\u295d", + "RightDownVector;": "\u21c2", + "RightDownVectorBar;": "\u2955", + "RightFloor;": "\u230b", + "RightTee;": "\u22a2", + "RightTeeArrow;": "\u21a6", + "RightTeeVector;": "\u295b", + "RightTriangle;": "\u22b3", + "RightTriangleBar;": "\u29d0", + "RightTriangleEqual;": "\u22b5", + "RightUpDownVector;": "\u294f", + "RightUpTeeVector;": "\u295c", + "RightUpVector;": "\u21be", + "RightUpVectorBar;": "\u2954", + "RightVector;": "\u21c0", + "RightVectorBar;": "\u2953", + "Rightarrow;": "\u21d2", + "Ropf;": "\u211d", + "RoundImplies;": "\u2970", + "Rrightarrow;": "\u21db", + "Rscr;": "\u211b", + "Rsh;": "\u21b1", + "RuleDelayed;": "\u29f4", + "SHCHcy;": "\u0429", + "SHcy;": "\u0428", + "SOFTcy;": "\u042c", + "Sacute;": "\u015a", + "Sc;": "\u2abc", + "Scaron;": "\u0160", + "Scedil;": "\u015e", + "Scirc;": "\u015c", + "Scy;": "\u0421", + "Sfr;": "\U0001d516", + "ShortDownArrow;": "\u2193", + "ShortLeftArrow;": "\u2190", + "ShortRightArrow;": "\u2192", + "ShortUpArrow;": "\u2191", + "Sigma;": "\u03a3", + "SmallCircle;": "\u2218", + "Sopf;": "\U0001d54a", + "Sqrt;": "\u221a", + "Square;": "\u25a1", + "SquareIntersection;": "\u2293", + "SquareSubset;": "\u228f", + "SquareSubsetEqual;": "\u2291", + "SquareSuperset;": "\u2290", + "SquareSupersetEqual;": "\u2292", + "SquareUnion;": "\u2294", + "Sscr;": "\U0001d4ae", + "Star;": "\u22c6", + "Sub;": "\u22d0", + "Subset;": "\u22d0", + "SubsetEqual;": "\u2286", + "Succeeds;": "\u227b", + "SucceedsEqual;": "\u2ab0", + "SucceedsSlantEqual;": "\u227d", + "SucceedsTilde;": "\u227f", + "SuchThat;": "\u220b", + "Sum;": "\u2211", + "Sup;": "\u22d1", + "Superset;": "\u2283", + "SupersetEqual;": "\u2287", + "Supset;": "\u22d1", + "THORN": "\xde", + "THORN;": "\xde", + "TRADE;": "\u2122", + "TSHcy;": "\u040b", + "TScy;": "\u0426", + "Tab;": "\t", + "Tau;": "\u03a4", + "Tcaron;": "\u0164", + "Tcedil;": "\u0162", + "Tcy;": "\u0422", + "Tfr;": "\U0001d517", + "Therefore;": "\u2234", + "Theta;": "\u0398", + "ThickSpace;": "\u205f\u200a", + "ThinSpace;": "\u2009", + "Tilde;": "\u223c", + "TildeEqual;": "\u2243", + "TildeFullEqual;": "\u2245", + "TildeTilde;": "\u2248", + "Topf;": "\U0001d54b", + "TripleDot;": "\u20db", + "Tscr;": "\U0001d4af", + "Tstrok;": "\u0166", + "Uacute": "\xda", + "Uacute;": "\xda", + "Uarr;": "\u219f", + "Uarrocir;": "\u2949", + "Ubrcy;": "\u040e", + "Ubreve;": "\u016c", + "Ucirc": "\xdb", + "Ucirc;": "\xdb", + "Ucy;": "\u0423", + "Udblac;": "\u0170", + "Ufr;": "\U0001d518", + "Ugrave": "\xd9", + "Ugrave;": "\xd9", + "Umacr;": "\u016a", + "UnderBar;": "_", + "UnderBrace;": "\u23df", + "UnderBracket;": "\u23b5", + "UnderParenthesis;": "\u23dd", + "Union;": "\u22c3", + "UnionPlus;": "\u228e", + "Uogon;": "\u0172", + "Uopf;": "\U0001d54c", + "UpArrow;": "\u2191", + "UpArrowBar;": "\u2912", + "UpArrowDownArrow;": "\u21c5", + "UpDownArrow;": "\u2195", + "UpEquilibrium;": "\u296e", + "UpTee;": "\u22a5", + "UpTeeArrow;": "\u21a5", + "Uparrow;": "\u21d1", + "Updownarrow;": "\u21d5", + "UpperLeftArrow;": "\u2196", + "UpperRightArrow;": "\u2197", + "Upsi;": "\u03d2", + "Upsilon;": "\u03a5", + "Uring;": "\u016e", + "Uscr;": "\U0001d4b0", + "Utilde;": "\u0168", + "Uuml": "\xdc", + "Uuml;": "\xdc", + "VDash;": "\u22ab", + "Vbar;": "\u2aeb", + "Vcy;": "\u0412", + "Vdash;": "\u22a9", + "Vdashl;": "\u2ae6", + "Vee;": "\u22c1", + "Verbar;": "\u2016", + "Vert;": "\u2016", + "VerticalBar;": "\u2223", + "VerticalLine;": "|", + "VerticalSeparator;": "\u2758", + "VerticalTilde;": "\u2240", + "VeryThinSpace;": "\u200a", + "Vfr;": "\U0001d519", + "Vopf;": "\U0001d54d", + "Vscr;": "\U0001d4b1", + "Vvdash;": "\u22aa", + "Wcirc;": "\u0174", + "Wedge;": "\u22c0", + "Wfr;": "\U0001d51a", + "Wopf;": "\U0001d54e", + "Wscr;": "\U0001d4b2", + "Xfr;": "\U0001d51b", + "Xi;": "\u039e", + "Xopf;": "\U0001d54f", + "Xscr;": "\U0001d4b3", + "YAcy;": "\u042f", + "YIcy;": "\u0407", + "YUcy;": "\u042e", + "Yacute": "\xdd", + "Yacute;": "\xdd", + "Ycirc;": "\u0176", + "Ycy;": "\u042b", + "Yfr;": "\U0001d51c", + "Yopf;": "\U0001d550", + "Yscr;": "\U0001d4b4", + "Yuml;": "\u0178", + "ZHcy;": "\u0416", + "Zacute;": "\u0179", + "Zcaron;": "\u017d", + "Zcy;": "\u0417", + "Zdot;": "\u017b", + "ZeroWidthSpace;": "\u200b", + "Zeta;": "\u0396", + "Zfr;": "\u2128", + "Zopf;": "\u2124", + "Zscr;": "\U0001d4b5", + "aacute": "\xe1", + "aacute;": "\xe1", + "abreve;": "\u0103", + "ac;": "\u223e", + "acE;": "\u223e\u0333", + "acd;": "\u223f", + "acirc": "\xe2", + "acirc;": "\xe2", + "acute": "\xb4", + "acute;": "\xb4", + "acy;": "\u0430", + "aelig": "\xe6", + "aelig;": "\xe6", + "af;": "\u2061", + "afr;": "\U0001d51e", + "agrave": "\xe0", + "agrave;": "\xe0", + "alefsym;": "\u2135", + "aleph;": "\u2135", + "alpha;": "\u03b1", + "amacr;": "\u0101", + "amalg;": "\u2a3f", + "amp": "&", + "amp;": "&", + "and;": "\u2227", + "andand;": "\u2a55", + "andd;": "\u2a5c", + "andslope;": "\u2a58", + "andv;": "\u2a5a", + "ang;": "\u2220", + "ange;": "\u29a4", + "angle;": "\u2220", + "angmsd;": "\u2221", + "angmsdaa;": "\u29a8", + "angmsdab;": "\u29a9", + "angmsdac;": "\u29aa", + "angmsdad;": "\u29ab", + "angmsdae;": "\u29ac", + "angmsdaf;": "\u29ad", + "angmsdag;": "\u29ae", + "angmsdah;": "\u29af", + "angrt;": "\u221f", + "angrtvb;": "\u22be", + "angrtvbd;": "\u299d", + "angsph;": "\u2222", + "angst;": "\xc5", + "angzarr;": "\u237c", + "aogon;": "\u0105", + "aopf;": "\U0001d552", + "ap;": "\u2248", + "apE;": "\u2a70", + "apacir;": "\u2a6f", + "ape;": "\u224a", + "apid;": "\u224b", + "apos;": "'", + "approx;": "\u2248", + "approxeq;": "\u224a", + "aring": "\xe5", + "aring;": "\xe5", + "ascr;": "\U0001d4b6", + "ast;": "*", + "asymp;": "\u2248", + "asympeq;": "\u224d", + "atilde": "\xe3", + "atilde;": "\xe3", + "auml": "\xe4", + "auml;": "\xe4", + "awconint;": "\u2233", + "awint;": "\u2a11", + "bNot;": "\u2aed", + "backcong;": "\u224c", + "backepsilon;": "\u03f6", + "backprime;": "\u2035", + "backsim;": "\u223d", + "backsimeq;": "\u22cd", + "barvee;": "\u22bd", + "barwed;": "\u2305", + "barwedge;": "\u2305", + "bbrk;": "\u23b5", + "bbrktbrk;": "\u23b6", + "bcong;": "\u224c", + "bcy;": "\u0431", + "bdquo;": "\u201e", + "becaus;": "\u2235", + "because;": "\u2235", + "bemptyv;": "\u29b0", + "bepsi;": "\u03f6", + "bernou;": "\u212c", + "beta;": "\u03b2", + "beth;": "\u2136", + "between;": "\u226c", + "bfr;": "\U0001d51f", + "bigcap;": "\u22c2", + "bigcirc;": "\u25ef", + "bigcup;": "\u22c3", + "bigodot;": "\u2a00", + "bigoplus;": "\u2a01", + "bigotimes;": "\u2a02", + "bigsqcup;": "\u2a06", + "bigstar;": "\u2605", + "bigtriangledown;": "\u25bd", + "bigtriangleup;": "\u25b3", + "biguplus;": "\u2a04", + "bigvee;": "\u22c1", + "bigwedge;": "\u22c0", + "bkarow;": "\u290d", + "blacklozenge;": "\u29eb", + "blacksquare;": "\u25aa", + "blacktriangle;": "\u25b4", + "blacktriangledown;": "\u25be", + "blacktriangleleft;": "\u25c2", + "blacktriangleright;": "\u25b8", + "blank;": "\u2423", + "blk12;": "\u2592", + "blk14;": "\u2591", + "blk34;": "\u2593", + "block;": "\u2588", + "bne;": "=\u20e5", + "bnequiv;": "\u2261\u20e5", + "bnot;": "\u2310", + "bopf;": "\U0001d553", + "bot;": "\u22a5", + "bottom;": "\u22a5", + "bowtie;": "\u22c8", + "boxDL;": "\u2557", + "boxDR;": "\u2554", + "boxDl;": "\u2556", + "boxDr;": "\u2553", + "boxH;": "\u2550", + "boxHD;": "\u2566", + "boxHU;": "\u2569", + "boxHd;": "\u2564", + "boxHu;": "\u2567", + "boxUL;": "\u255d", + "boxUR;": "\u255a", + "boxUl;": "\u255c", + "boxUr;": "\u2559", + "boxV;": "\u2551", + "boxVH;": "\u256c", + "boxVL;": "\u2563", + "boxVR;": "\u2560", + "boxVh;": "\u256b", + "boxVl;": "\u2562", + "boxVr;": "\u255f", + "boxbox;": "\u29c9", + "boxdL;": "\u2555", + "boxdR;": "\u2552", + "boxdl;": "\u2510", + "boxdr;": "\u250c", + "boxh;": "\u2500", + "boxhD;": "\u2565", + "boxhU;": "\u2568", + "boxhd;": "\u252c", + "boxhu;": "\u2534", + "boxminus;": "\u229f", + "boxplus;": "\u229e", + "boxtimes;": "\u22a0", + "boxuL;": "\u255b", + "boxuR;": "\u2558", + "boxul;": "\u2518", + "boxur;": "\u2514", + "boxv;": "\u2502", + "boxvH;": "\u256a", + "boxvL;": "\u2561", + "boxvR;": "\u255e", + "boxvh;": "\u253c", + "boxvl;": "\u2524", + "boxvr;": "\u251c", + "bprime;": "\u2035", + "breve;": "\u02d8", + "brvbar": "\xa6", + "brvbar;": "\xa6", + "bscr;": "\U0001d4b7", + "bsemi;": "\u204f", + "bsim;": "\u223d", + "bsime;": "\u22cd", + "bsol;": "\\", + "bsolb;": "\u29c5", + "bsolhsub;": "\u27c8", + "bull;": "\u2022", + "bullet;": "\u2022", + "bump;": "\u224e", + "bumpE;": "\u2aae", + "bumpe;": "\u224f", + "bumpeq;": "\u224f", + "cacute;": "\u0107", + "cap;": "\u2229", + "capand;": "\u2a44", + "capbrcup;": "\u2a49", + "capcap;": "\u2a4b", + "capcup;": "\u2a47", + "capdot;": "\u2a40", + "caps;": "\u2229\ufe00", + "caret;": "\u2041", + "caron;": "\u02c7", + "ccaps;": "\u2a4d", + "ccaron;": "\u010d", + "ccedil": "\xe7", + "ccedil;": "\xe7", + "ccirc;": "\u0109", + "ccups;": "\u2a4c", + "ccupssm;": "\u2a50", + "cdot;": "\u010b", + "cedil": "\xb8", + "cedil;": "\xb8", + "cemptyv;": "\u29b2", + "cent": "\xa2", + "cent;": "\xa2", + "centerdot;": "\xb7", + "cfr;": "\U0001d520", + "chcy;": "\u0447", + "check;": "\u2713", + "checkmark;": "\u2713", + "chi;": "\u03c7", + "cir;": "\u25cb", + "cirE;": "\u29c3", + "circ;": "\u02c6", + "circeq;": "\u2257", + "circlearrowleft;": "\u21ba", + "circlearrowright;": "\u21bb", + "circledR;": "\xae", + "circledS;": "\u24c8", + "circledast;": "\u229b", + "circledcirc;": "\u229a", + "circleddash;": "\u229d", + "cire;": "\u2257", + "cirfnint;": "\u2a10", + "cirmid;": "\u2aef", + "cirscir;": "\u29c2", + "clubs;": "\u2663", + "clubsuit;": "\u2663", + "colon;": ":", + "colone;": "\u2254", + "coloneq;": "\u2254", + "comma;": ",", + "commat;": "@", + "comp;": "\u2201", + "compfn;": "\u2218", + "complement;": "\u2201", + "complexes;": "\u2102", + "cong;": "\u2245", + "congdot;": "\u2a6d", + "conint;": "\u222e", + "copf;": "\U0001d554", + "coprod;": "\u2210", + "copy": "\xa9", + "copy;": "\xa9", + "copysr;": "\u2117", + "crarr;": "\u21b5", + "cross;": "\u2717", + "cscr;": "\U0001d4b8", + "csub;": "\u2acf", + "csube;": "\u2ad1", + "csup;": "\u2ad0", + "csupe;": "\u2ad2", + "ctdot;": "\u22ef", + "cudarrl;": "\u2938", + "cudarrr;": "\u2935", + "cuepr;": "\u22de", + "cuesc;": "\u22df", + "cularr;": "\u21b6", + "cularrp;": "\u293d", + "cup;": "\u222a", + "cupbrcap;": "\u2a48", + "cupcap;": "\u2a46", + "cupcup;": "\u2a4a", + "cupdot;": "\u228d", + "cupor;": "\u2a45", + "cups;": "\u222a\ufe00", + "curarr;": "\u21b7", + "curarrm;": "\u293c", + "curlyeqprec;": "\u22de", + "curlyeqsucc;": "\u22df", + "curlyvee;": "\u22ce", + "curlywedge;": "\u22cf", + "curren": "\xa4", + "curren;": "\xa4", + "curvearrowleft;": "\u21b6", + "curvearrowright;": "\u21b7", + "cuvee;": "\u22ce", + "cuwed;": "\u22cf", + "cwconint;": "\u2232", + "cwint;": "\u2231", + "cylcty;": "\u232d", + "dArr;": "\u21d3", + "dHar;": "\u2965", + "dagger;": "\u2020", + "daleth;": "\u2138", + "darr;": "\u2193", + "dash;": "\u2010", + "dashv;": "\u22a3", + "dbkarow;": "\u290f", + "dblac;": "\u02dd", + "dcaron;": "\u010f", + "dcy;": "\u0434", + "dd;": "\u2146", + "ddagger;": "\u2021", + "ddarr;": "\u21ca", + "ddotseq;": "\u2a77", + "deg": "\xb0", + "deg;": "\xb0", + "delta;": "\u03b4", + "demptyv;": "\u29b1", + "dfisht;": "\u297f", + "dfr;": "\U0001d521", + "dharl;": "\u21c3", + "dharr;": "\u21c2", + "diam;": "\u22c4", + "diamond;": "\u22c4", + "diamondsuit;": "\u2666", + "diams;": "\u2666", + "die;": "\xa8", + "digamma;": "\u03dd", + "disin;": "\u22f2", + "div;": "\xf7", + "divide": "\xf7", + "divide;": "\xf7", + "divideontimes;": "\u22c7", + "divonx;": "\u22c7", + "djcy;": "\u0452", + "dlcorn;": "\u231e", + "dlcrop;": "\u230d", + "dollar;": "$", + "dopf;": "\U0001d555", + "dot;": "\u02d9", + "doteq;": "\u2250", + "doteqdot;": "\u2251", + "dotminus;": "\u2238", + "dotplus;": "\u2214", + "dotsquare;": "\u22a1", + "doublebarwedge;": "\u2306", + "downarrow;": "\u2193", + "downdownarrows;": "\u21ca", + "downharpoonleft;": "\u21c3", + "downharpoonright;": "\u21c2", + "drbkarow;": "\u2910", + "drcorn;": "\u231f", + "drcrop;": "\u230c", + "dscr;": "\U0001d4b9", + "dscy;": "\u0455", + "dsol;": "\u29f6", + "dstrok;": "\u0111", + "dtdot;": "\u22f1", + "dtri;": "\u25bf", + "dtrif;": "\u25be", + "duarr;": "\u21f5", + "duhar;": "\u296f", + "dwangle;": "\u29a6", + "dzcy;": "\u045f", + "dzigrarr;": "\u27ff", + "eDDot;": "\u2a77", + "eDot;": "\u2251", + "eacute": "\xe9", + "eacute;": "\xe9", + "easter;": "\u2a6e", + "ecaron;": "\u011b", + "ecir;": "\u2256", + "ecirc": "\xea", + "ecirc;": "\xea", + "ecolon;": "\u2255", + "ecy;": "\u044d", + "edot;": "\u0117", + "ee;": "\u2147", + "efDot;": "\u2252", + "efr;": "\U0001d522", + "eg;": "\u2a9a", + "egrave": "\xe8", + "egrave;": "\xe8", + "egs;": "\u2a96", + "egsdot;": "\u2a98", + "el;": "\u2a99", + "elinters;": "\u23e7", + "ell;": "\u2113", + "els;": "\u2a95", + "elsdot;": "\u2a97", + "emacr;": "\u0113", + "empty;": "\u2205", + "emptyset;": "\u2205", + "emptyv;": "\u2205", + "emsp13;": "\u2004", + "emsp14;": "\u2005", + "emsp;": "\u2003", + "eng;": "\u014b", + "ensp;": "\u2002", + "eogon;": "\u0119", + "eopf;": "\U0001d556", + "epar;": "\u22d5", + "eparsl;": "\u29e3", + "eplus;": "\u2a71", + "epsi;": "\u03b5", + "epsilon;": "\u03b5", + "epsiv;": "\u03f5", + "eqcirc;": "\u2256", + "eqcolon;": "\u2255", + "eqsim;": "\u2242", + "eqslantgtr;": "\u2a96", + "eqslantless;": "\u2a95", + "equals;": "=", + "equest;": "\u225f", + "equiv;": "\u2261", + "equivDD;": "\u2a78", + "eqvparsl;": "\u29e5", + "erDot;": "\u2253", + "erarr;": "\u2971", + "escr;": "\u212f", + "esdot;": "\u2250", + "esim;": "\u2242", + "eta;": "\u03b7", + "eth": "\xf0", + "eth;": "\xf0", + "euml": "\xeb", + "euml;": "\xeb", + "euro;": "\u20ac", + "excl;": "!", + "exist;": "\u2203", + "expectation;": "\u2130", + "exponentiale;": "\u2147", + "fallingdotseq;": "\u2252", + "fcy;": "\u0444", + "female;": "\u2640", + "ffilig;": "\ufb03", + "fflig;": "\ufb00", + "ffllig;": "\ufb04", + "ffr;": "\U0001d523", + "filig;": "\ufb01", + "fjlig;": "fj", + "flat;": "\u266d", + "fllig;": "\ufb02", + "fltns;": "\u25b1", + "fnof;": "\u0192", + "fopf;": "\U0001d557", + "forall;": "\u2200", + "fork;": "\u22d4", + "forkv;": "\u2ad9", + "fpartint;": "\u2a0d", + "frac12": "\xbd", + "frac12;": "\xbd", + "frac13;": "\u2153", + "frac14": "\xbc", + "frac14;": "\xbc", + "frac15;": "\u2155", + "frac16;": "\u2159", + "frac18;": "\u215b", + "frac23;": "\u2154", + "frac25;": "\u2156", + "frac34": "\xbe", + "frac34;": "\xbe", + "frac35;": "\u2157", + "frac38;": "\u215c", + "frac45;": "\u2158", + "frac56;": "\u215a", + "frac58;": "\u215d", + "frac78;": "\u215e", + "frasl;": "\u2044", + "frown;": "\u2322", + "fscr;": "\U0001d4bb", + "gE;": "\u2267", + "gEl;": "\u2a8c", + "gacute;": "\u01f5", + "gamma;": "\u03b3", + "gammad;": "\u03dd", + "gap;": "\u2a86", + "gbreve;": "\u011f", + "gcirc;": "\u011d", + "gcy;": "\u0433", + "gdot;": "\u0121", + "ge;": "\u2265", + "gel;": "\u22db", + "geq;": "\u2265", + "geqq;": "\u2267", + "geqslant;": "\u2a7e", + "ges;": "\u2a7e", + "gescc;": "\u2aa9", + "gesdot;": "\u2a80", + "gesdoto;": "\u2a82", + "gesdotol;": "\u2a84", + "gesl;": "\u22db\ufe00", + "gesles;": "\u2a94", + "gfr;": "\U0001d524", + "gg;": "\u226b", + "ggg;": "\u22d9", + "gimel;": "\u2137", + "gjcy;": "\u0453", + "gl;": "\u2277", + "glE;": "\u2a92", + "gla;": "\u2aa5", + "glj;": "\u2aa4", + "gnE;": "\u2269", + "gnap;": "\u2a8a", + "gnapprox;": "\u2a8a", + "gne;": "\u2a88", + "gneq;": "\u2a88", + "gneqq;": "\u2269", + "gnsim;": "\u22e7", + "gopf;": "\U0001d558", + "grave;": "`", + "gscr;": "\u210a", + "gsim;": "\u2273", + "gsime;": "\u2a8e", + "gsiml;": "\u2a90", + "gt": ">", + "gt;": ">", + "gtcc;": "\u2aa7", + "gtcir;": "\u2a7a", + "gtdot;": "\u22d7", + "gtlPar;": "\u2995", + "gtquest;": "\u2a7c", + "gtrapprox;": "\u2a86", + "gtrarr;": "\u2978", + "gtrdot;": "\u22d7", + "gtreqless;": "\u22db", + "gtreqqless;": "\u2a8c", + "gtrless;": "\u2277", + "gtrsim;": "\u2273", + "gvertneqq;": "\u2269\ufe00", + "gvnE;": "\u2269\ufe00", + "hArr;": "\u21d4", + "hairsp;": "\u200a", + "half;": "\xbd", + "hamilt;": "\u210b", + "hardcy;": "\u044a", + "harr;": "\u2194", + "harrcir;": "\u2948", + "harrw;": "\u21ad", + "hbar;": "\u210f", + "hcirc;": "\u0125", + "hearts;": "\u2665", + "heartsuit;": "\u2665", + "hellip;": "\u2026", + "hercon;": "\u22b9", + "hfr;": "\U0001d525", + "hksearow;": "\u2925", + "hkswarow;": "\u2926", + "hoarr;": "\u21ff", + "homtht;": "\u223b", + "hookleftarrow;": "\u21a9", + "hookrightarrow;": "\u21aa", + "hopf;": "\U0001d559", + "horbar;": "\u2015", + "hscr;": "\U0001d4bd", + "hslash;": "\u210f", + "hstrok;": "\u0127", + "hybull;": "\u2043", + "hyphen;": "\u2010", + "iacute": "\xed", + "iacute;": "\xed", + "ic;": "\u2063", + "icirc": "\xee", + "icirc;": "\xee", + "icy;": "\u0438", + "iecy;": "\u0435", + "iexcl": "\xa1", + "iexcl;": "\xa1", + "iff;": "\u21d4", + "ifr;": "\U0001d526", + "igrave": "\xec", + "igrave;": "\xec", + "ii;": "\u2148", + "iiiint;": "\u2a0c", + "iiint;": "\u222d", + "iinfin;": "\u29dc", + "iiota;": "\u2129", + "ijlig;": "\u0133", + "imacr;": "\u012b", + "image;": "\u2111", + "imagline;": "\u2110", + "imagpart;": "\u2111", + "imath;": "\u0131", + "imof;": "\u22b7", + "imped;": "\u01b5", + "in;": "\u2208", + "incare;": "\u2105", + "infin;": "\u221e", + "infintie;": "\u29dd", + "inodot;": "\u0131", + "int;": "\u222b", + "intcal;": "\u22ba", + "integers;": "\u2124", + "intercal;": "\u22ba", + "intlarhk;": "\u2a17", + "intprod;": "\u2a3c", + "iocy;": "\u0451", + "iogon;": "\u012f", + "iopf;": "\U0001d55a", + "iota;": "\u03b9", + "iprod;": "\u2a3c", + "iquest": "\xbf", + "iquest;": "\xbf", + "iscr;": "\U0001d4be", + "isin;": "\u2208", + "isinE;": "\u22f9", + "isindot;": "\u22f5", + "isins;": "\u22f4", + "isinsv;": "\u22f3", + "isinv;": "\u2208", + "it;": "\u2062", + "itilde;": "\u0129", + "iukcy;": "\u0456", + "iuml": "\xef", + "iuml;": "\xef", + "jcirc;": "\u0135", + "jcy;": "\u0439", + "jfr;": "\U0001d527", + "jmath;": "\u0237", + "jopf;": "\U0001d55b", + "jscr;": "\U0001d4bf", + "jsercy;": "\u0458", + "jukcy;": "\u0454", + "kappa;": "\u03ba", + "kappav;": "\u03f0", + "kcedil;": "\u0137", + "kcy;": "\u043a", + "kfr;": "\U0001d528", + "kgreen;": "\u0138", + "khcy;": "\u0445", + "kjcy;": "\u045c", + "kopf;": "\U0001d55c", + "kscr;": "\U0001d4c0", + "lAarr;": "\u21da", + "lArr;": "\u21d0", + "lAtail;": "\u291b", + "lBarr;": "\u290e", + "lE;": "\u2266", + "lEg;": "\u2a8b", + "lHar;": "\u2962", + "lacute;": "\u013a", + "laemptyv;": "\u29b4", + "lagran;": "\u2112", + "lambda;": "\u03bb", + "lang;": "\u27e8", + "langd;": "\u2991", + "langle;": "\u27e8", + "lap;": "\u2a85", + "laquo": "\xab", + "laquo;": "\xab", + "larr;": "\u2190", + "larrb;": "\u21e4", + "larrbfs;": "\u291f", + "larrfs;": "\u291d", + "larrhk;": "\u21a9", + "larrlp;": "\u21ab", + "larrpl;": "\u2939", + "larrsim;": "\u2973", + "larrtl;": "\u21a2", + "lat;": "\u2aab", + "latail;": "\u2919", + "late;": "\u2aad", + "lates;": "\u2aad\ufe00", + "lbarr;": "\u290c", + "lbbrk;": "\u2772", + "lbrace;": "{", + "lbrack;": "[", + "lbrke;": "\u298b", + "lbrksld;": "\u298f", + "lbrkslu;": "\u298d", + "lcaron;": "\u013e", + "lcedil;": "\u013c", + "lceil;": "\u2308", + "lcub;": "{", + "lcy;": "\u043b", + "ldca;": "\u2936", + "ldquo;": "\u201c", + "ldquor;": "\u201e", + "ldrdhar;": "\u2967", + "ldrushar;": "\u294b", + "ldsh;": "\u21b2", + "le;": "\u2264", + "leftarrow;": "\u2190", + "leftarrowtail;": "\u21a2", + "leftharpoondown;": "\u21bd", + "leftharpoonup;": "\u21bc", + "leftleftarrows;": "\u21c7", + "leftrightarrow;": "\u2194", + "leftrightarrows;": "\u21c6", + "leftrightharpoons;": "\u21cb", + "leftrightsquigarrow;": "\u21ad", + "leftthreetimes;": "\u22cb", + "leg;": "\u22da", + "leq;": "\u2264", + "leqq;": "\u2266", + "leqslant;": "\u2a7d", + "les;": "\u2a7d", + "lescc;": "\u2aa8", + "lesdot;": "\u2a7f", + "lesdoto;": "\u2a81", + "lesdotor;": "\u2a83", + "lesg;": "\u22da\ufe00", + "lesges;": "\u2a93", + "lessapprox;": "\u2a85", + "lessdot;": "\u22d6", + "lesseqgtr;": "\u22da", + "lesseqqgtr;": "\u2a8b", + "lessgtr;": "\u2276", + "lesssim;": "\u2272", + "lfisht;": "\u297c", + "lfloor;": "\u230a", + "lfr;": "\U0001d529", + "lg;": "\u2276", + "lgE;": "\u2a91", + "lhard;": "\u21bd", + "lharu;": "\u21bc", + "lharul;": "\u296a", + "lhblk;": "\u2584", + "ljcy;": "\u0459", + "ll;": "\u226a", + "llarr;": "\u21c7", + "llcorner;": "\u231e", + "llhard;": "\u296b", + "lltri;": "\u25fa", + "lmidot;": "\u0140", + "lmoust;": "\u23b0", + "lmoustache;": "\u23b0", + "lnE;": "\u2268", + "lnap;": "\u2a89", + "lnapprox;": "\u2a89", + "lne;": "\u2a87", + "lneq;": "\u2a87", + "lneqq;": "\u2268", + "lnsim;": "\u22e6", + "loang;": "\u27ec", + "loarr;": "\u21fd", + "lobrk;": "\u27e6", + "longleftarrow;": "\u27f5", + "longleftrightarrow;": "\u27f7", + "longmapsto;": "\u27fc", + "longrightarrow;": "\u27f6", + "looparrowleft;": "\u21ab", + "looparrowright;": "\u21ac", + "lopar;": "\u2985", + "lopf;": "\U0001d55d", + "loplus;": "\u2a2d", + "lotimes;": "\u2a34", + "lowast;": "\u2217", + "lowbar;": "_", + "loz;": "\u25ca", + "lozenge;": "\u25ca", + "lozf;": "\u29eb", + "lpar;": "(", + "lparlt;": "\u2993", + "lrarr;": "\u21c6", + "lrcorner;": "\u231f", + "lrhar;": "\u21cb", + "lrhard;": "\u296d", + "lrm;": "\u200e", + "lrtri;": "\u22bf", + "lsaquo;": "\u2039", + "lscr;": "\U0001d4c1", + "lsh;": "\u21b0", + "lsim;": "\u2272", + "lsime;": "\u2a8d", + "lsimg;": "\u2a8f", + "lsqb;": "[", + "lsquo;": "\u2018", + "lsquor;": "\u201a", + "lstrok;": "\u0142", + "lt": "<", + "lt;": "<", + "ltcc;": "\u2aa6", + "ltcir;": "\u2a79", + "ltdot;": "\u22d6", + "lthree;": "\u22cb", + "ltimes;": "\u22c9", + "ltlarr;": "\u2976", + "ltquest;": "\u2a7b", + "ltrPar;": "\u2996", + "ltri;": "\u25c3", + "ltrie;": "\u22b4", + "ltrif;": "\u25c2", + "lurdshar;": "\u294a", + "luruhar;": "\u2966", + "lvertneqq;": "\u2268\ufe00", + "lvnE;": "\u2268\ufe00", + "mDDot;": "\u223a", + "macr": "\xaf", + "macr;": "\xaf", + "male;": "\u2642", + "malt;": "\u2720", + "maltese;": "\u2720", + "map;": "\u21a6", + "mapsto;": "\u21a6", + "mapstodown;": "\u21a7", + "mapstoleft;": "\u21a4", + "mapstoup;": "\u21a5", + "marker;": "\u25ae", + "mcomma;": "\u2a29", + "mcy;": "\u043c", + "mdash;": "\u2014", + "measuredangle;": "\u2221", + "mfr;": "\U0001d52a", + "mho;": "\u2127", + "micro": "\xb5", + "micro;": "\xb5", + "mid;": "\u2223", + "midast;": "*", + "midcir;": "\u2af0", + "middot": "\xb7", + "middot;": "\xb7", + "minus;": "\u2212", + "minusb;": "\u229f", + "minusd;": "\u2238", + "minusdu;": "\u2a2a", + "mlcp;": "\u2adb", + "mldr;": "\u2026", + "mnplus;": "\u2213", + "models;": "\u22a7", + "mopf;": "\U0001d55e", + "mp;": "\u2213", + "mscr;": "\U0001d4c2", + "mstpos;": "\u223e", + "mu;": "\u03bc", + "multimap;": "\u22b8", + "mumap;": "\u22b8", + "nGg;": "\u22d9\u0338", + "nGt;": "\u226b\u20d2", + "nGtv;": "\u226b\u0338", + "nLeftarrow;": "\u21cd", + "nLeftrightarrow;": "\u21ce", + "nLl;": "\u22d8\u0338", + "nLt;": "\u226a\u20d2", + "nLtv;": "\u226a\u0338", + "nRightarrow;": "\u21cf", + "nVDash;": "\u22af", + "nVdash;": "\u22ae", + "nabla;": "\u2207", + "nacute;": "\u0144", + "nang;": "\u2220\u20d2", + "nap;": "\u2249", + "napE;": "\u2a70\u0338", + "napid;": "\u224b\u0338", + "napos;": "\u0149", + "napprox;": "\u2249", + "natur;": "\u266e", + "natural;": "\u266e", + "naturals;": "\u2115", + "nbsp": "\xa0", + "nbsp;": "\xa0", + "nbump;": "\u224e\u0338", + "nbumpe;": "\u224f\u0338", + "ncap;": "\u2a43", + "ncaron;": "\u0148", + "ncedil;": "\u0146", + "ncong;": "\u2247", + "ncongdot;": "\u2a6d\u0338", + "ncup;": "\u2a42", + "ncy;": "\u043d", + "ndash;": "\u2013", + "ne;": "\u2260", + "neArr;": "\u21d7", + "nearhk;": "\u2924", + "nearr;": "\u2197", + "nearrow;": "\u2197", + "nedot;": "\u2250\u0338", + "nequiv;": "\u2262", + "nesear;": "\u2928", + "nesim;": "\u2242\u0338", + "nexist;": "\u2204", + "nexists;": "\u2204", + "nfr;": "\U0001d52b", + "ngE;": "\u2267\u0338", + "nge;": "\u2271", + "ngeq;": "\u2271", + "ngeqq;": "\u2267\u0338", + "ngeqslant;": "\u2a7e\u0338", + "nges;": "\u2a7e\u0338", + "ngsim;": "\u2275", + "ngt;": "\u226f", + "ngtr;": "\u226f", + "nhArr;": "\u21ce", + "nharr;": "\u21ae", + "nhpar;": "\u2af2", + "ni;": "\u220b", + "nis;": "\u22fc", + "nisd;": "\u22fa", + "niv;": "\u220b", + "njcy;": "\u045a", + "nlArr;": "\u21cd", + "nlE;": "\u2266\u0338", + "nlarr;": "\u219a", + "nldr;": "\u2025", + "nle;": "\u2270", + "nleftarrow;": "\u219a", + "nleftrightarrow;": "\u21ae", + "nleq;": "\u2270", + "nleqq;": "\u2266\u0338", + "nleqslant;": "\u2a7d\u0338", + "nles;": "\u2a7d\u0338", + "nless;": "\u226e", + "nlsim;": "\u2274", + "nlt;": "\u226e", + "nltri;": "\u22ea", + "nltrie;": "\u22ec", + "nmid;": "\u2224", + "nopf;": "\U0001d55f", + "not": "\xac", + "not;": "\xac", + "notin;": "\u2209", + "notinE;": "\u22f9\u0338", + "notindot;": "\u22f5\u0338", + "notinva;": "\u2209", + "notinvb;": "\u22f7", + "notinvc;": "\u22f6", + "notni;": "\u220c", + "notniva;": "\u220c", + "notnivb;": "\u22fe", + "notnivc;": "\u22fd", + "npar;": "\u2226", + "nparallel;": "\u2226", + "nparsl;": "\u2afd\u20e5", + "npart;": "\u2202\u0338", + "npolint;": "\u2a14", + "npr;": "\u2280", + "nprcue;": "\u22e0", + "npre;": "\u2aaf\u0338", + "nprec;": "\u2280", + "npreceq;": "\u2aaf\u0338", + "nrArr;": "\u21cf", + "nrarr;": "\u219b", + "nrarrc;": "\u2933\u0338", + "nrarrw;": "\u219d\u0338", + "nrightarrow;": "\u219b", + "nrtri;": "\u22eb", + "nrtrie;": "\u22ed", + "nsc;": "\u2281", + "nsccue;": "\u22e1", + "nsce;": "\u2ab0\u0338", + "nscr;": "\U0001d4c3", + "nshortmid;": "\u2224", + "nshortparallel;": "\u2226", + "nsim;": "\u2241", + "nsime;": "\u2244", + "nsimeq;": "\u2244", + "nsmid;": "\u2224", + "nspar;": "\u2226", + "nsqsube;": "\u22e2", + "nsqsupe;": "\u22e3", + "nsub;": "\u2284", + "nsubE;": "\u2ac5\u0338", + "nsube;": "\u2288", + "nsubset;": "\u2282\u20d2", + "nsubseteq;": "\u2288", + "nsubseteqq;": "\u2ac5\u0338", + "nsucc;": "\u2281", + "nsucceq;": "\u2ab0\u0338", + "nsup;": "\u2285", + "nsupE;": "\u2ac6\u0338", + "nsupe;": "\u2289", + "nsupset;": "\u2283\u20d2", + "nsupseteq;": "\u2289", + "nsupseteqq;": "\u2ac6\u0338", + "ntgl;": "\u2279", + "ntilde": "\xf1", + "ntilde;": "\xf1", + "ntlg;": "\u2278", + "ntriangleleft;": "\u22ea", + "ntrianglelefteq;": "\u22ec", + "ntriangleright;": "\u22eb", + "ntrianglerighteq;": "\u22ed", + "nu;": "\u03bd", + "num;": "#", + "numero;": "\u2116", + "numsp;": "\u2007", + "nvDash;": "\u22ad", + "nvHarr;": "\u2904", + "nvap;": "\u224d\u20d2", + "nvdash;": "\u22ac", + "nvge;": "\u2265\u20d2", + "nvgt;": ">\u20d2", + "nvinfin;": "\u29de", + "nvlArr;": "\u2902", + "nvle;": "\u2264\u20d2", + "nvlt;": "<\u20d2", + "nvltrie;": "\u22b4\u20d2", + "nvrArr;": "\u2903", + "nvrtrie;": "\u22b5\u20d2", + "nvsim;": "\u223c\u20d2", + "nwArr;": "\u21d6", + "nwarhk;": "\u2923", + "nwarr;": "\u2196", + "nwarrow;": "\u2196", + "nwnear;": "\u2927", + "oS;": "\u24c8", + "oacute": "\xf3", + "oacute;": "\xf3", + "oast;": "\u229b", + "ocir;": "\u229a", + "ocirc": "\xf4", + "ocirc;": "\xf4", + "ocy;": "\u043e", + "odash;": "\u229d", + "odblac;": "\u0151", + "odiv;": "\u2a38", + "odot;": "\u2299", + "odsold;": "\u29bc", + "oelig;": "\u0153", + "ofcir;": "\u29bf", + "ofr;": "\U0001d52c", + "ogon;": "\u02db", + "ograve": "\xf2", + "ograve;": "\xf2", + "ogt;": "\u29c1", + "ohbar;": "\u29b5", + "ohm;": "\u03a9", + "oint;": "\u222e", + "olarr;": "\u21ba", + "olcir;": "\u29be", + "olcross;": "\u29bb", + "oline;": "\u203e", + "olt;": "\u29c0", + "omacr;": "\u014d", + "omega;": "\u03c9", + "omicron;": "\u03bf", + "omid;": "\u29b6", + "ominus;": "\u2296", + "oopf;": "\U0001d560", + "opar;": "\u29b7", + "operp;": "\u29b9", + "oplus;": "\u2295", + "or;": "\u2228", + "orarr;": "\u21bb", + "ord;": "\u2a5d", + "order;": "\u2134", + "orderof;": "\u2134", + "ordf": "\xaa", + "ordf;": "\xaa", + "ordm": "\xba", + "ordm;": "\xba", + "origof;": "\u22b6", + "oror;": "\u2a56", + "orslope;": "\u2a57", + "orv;": "\u2a5b", + "oscr;": "\u2134", + "oslash": "\xf8", + "oslash;": "\xf8", + "osol;": "\u2298", + "otilde": "\xf5", + "otilde;": "\xf5", + "otimes;": "\u2297", + "otimesas;": "\u2a36", + "ouml": "\xf6", + "ouml;": "\xf6", + "ovbar;": "\u233d", + "par;": "\u2225", + "para": "\xb6", + "para;": "\xb6", + "parallel;": "\u2225", + "parsim;": "\u2af3", + "parsl;": "\u2afd", + "part;": "\u2202", + "pcy;": "\u043f", + "percnt;": "%", + "period;": ".", + "permil;": "\u2030", + "perp;": "\u22a5", + "pertenk;": "\u2031", + "pfr;": "\U0001d52d", + "phi;": "\u03c6", + "phiv;": "\u03d5", + "phmmat;": "\u2133", + "phone;": "\u260e", + "pi;": "\u03c0", + "pitchfork;": "\u22d4", + "piv;": "\u03d6", + "planck;": "\u210f", + "planckh;": "\u210e", + "plankv;": "\u210f", + "plus;": "+", + "plusacir;": "\u2a23", + "plusb;": "\u229e", + "pluscir;": "\u2a22", + "plusdo;": "\u2214", + "plusdu;": "\u2a25", + "pluse;": "\u2a72", + "plusmn": "\xb1", + "plusmn;": "\xb1", + "plussim;": "\u2a26", + "plustwo;": "\u2a27", + "pm;": "\xb1", + "pointint;": "\u2a15", + "popf;": "\U0001d561", + "pound": "\xa3", + "pound;": "\xa3", + "pr;": "\u227a", + "prE;": "\u2ab3", + "prap;": "\u2ab7", + "prcue;": "\u227c", + "pre;": "\u2aaf", + "prec;": "\u227a", + "precapprox;": "\u2ab7", + "preccurlyeq;": "\u227c", + "preceq;": "\u2aaf", + "precnapprox;": "\u2ab9", + "precneqq;": "\u2ab5", + "precnsim;": "\u22e8", + "precsim;": "\u227e", + "prime;": "\u2032", + "primes;": "\u2119", + "prnE;": "\u2ab5", + "prnap;": "\u2ab9", + "prnsim;": "\u22e8", + "prod;": "\u220f", + "profalar;": "\u232e", + "profline;": "\u2312", + "profsurf;": "\u2313", + "prop;": "\u221d", + "propto;": "\u221d", + "prsim;": "\u227e", + "prurel;": "\u22b0", + "pscr;": "\U0001d4c5", + "psi;": "\u03c8", + "puncsp;": "\u2008", + "qfr;": "\U0001d52e", + "qint;": "\u2a0c", + "qopf;": "\U0001d562", + "qprime;": "\u2057", + "qscr;": "\U0001d4c6", + "quaternions;": "\u210d", + "quatint;": "\u2a16", + "quest;": "?", + "questeq;": "\u225f", + "quot": "\"", + "quot;": "\"", + "rAarr;": "\u21db", + "rArr;": "\u21d2", + "rAtail;": "\u291c", + "rBarr;": "\u290f", + "rHar;": "\u2964", + "race;": "\u223d\u0331", + "racute;": "\u0155", + "radic;": "\u221a", + "raemptyv;": "\u29b3", + "rang;": "\u27e9", + "rangd;": "\u2992", + "range;": "\u29a5", + "rangle;": "\u27e9", + "raquo": "\xbb", + "raquo;": "\xbb", + "rarr;": "\u2192", + "rarrap;": "\u2975", + "rarrb;": "\u21e5", + "rarrbfs;": "\u2920", + "rarrc;": "\u2933", + "rarrfs;": "\u291e", + "rarrhk;": "\u21aa", + "rarrlp;": "\u21ac", + "rarrpl;": "\u2945", + "rarrsim;": "\u2974", + "rarrtl;": "\u21a3", + "rarrw;": "\u219d", + "ratail;": "\u291a", + "ratio;": "\u2236", + "rationals;": "\u211a", + "rbarr;": "\u290d", + "rbbrk;": "\u2773", + "rbrace;": "}", + "rbrack;": "]", + "rbrke;": "\u298c", + "rbrksld;": "\u298e", + "rbrkslu;": "\u2990", + "rcaron;": "\u0159", + "rcedil;": "\u0157", + "rceil;": "\u2309", + "rcub;": "}", + "rcy;": "\u0440", + "rdca;": "\u2937", + "rdldhar;": "\u2969", + "rdquo;": "\u201d", + "rdquor;": "\u201d", + "rdsh;": "\u21b3", + "real;": "\u211c", + "realine;": "\u211b", + "realpart;": "\u211c", + "reals;": "\u211d", + "rect;": "\u25ad", + "reg": "\xae", + "reg;": "\xae", + "rfisht;": "\u297d", + "rfloor;": "\u230b", + "rfr;": "\U0001d52f", + "rhard;": "\u21c1", + "rharu;": "\u21c0", + "rharul;": "\u296c", + "rho;": "\u03c1", + "rhov;": "\u03f1", + "rightarrow;": "\u2192", + "rightarrowtail;": "\u21a3", + "rightharpoondown;": "\u21c1", + "rightharpoonup;": "\u21c0", + "rightleftarrows;": "\u21c4", + "rightleftharpoons;": "\u21cc", + "rightrightarrows;": "\u21c9", + "rightsquigarrow;": "\u219d", + "rightthreetimes;": "\u22cc", + "ring;": "\u02da", + "risingdotseq;": "\u2253", + "rlarr;": "\u21c4", + "rlhar;": "\u21cc", + "rlm;": "\u200f", + "rmoust;": "\u23b1", + "rmoustache;": "\u23b1", + "rnmid;": "\u2aee", + "roang;": "\u27ed", + "roarr;": "\u21fe", + "robrk;": "\u27e7", + "ropar;": "\u2986", + "ropf;": "\U0001d563", + "roplus;": "\u2a2e", + "rotimes;": "\u2a35", + "rpar;": ")", + "rpargt;": "\u2994", + "rppolint;": "\u2a12", + "rrarr;": "\u21c9", + "rsaquo;": "\u203a", + "rscr;": "\U0001d4c7", + "rsh;": "\u21b1", + "rsqb;": "]", + "rsquo;": "\u2019", + "rsquor;": "\u2019", + "rthree;": "\u22cc", + "rtimes;": "\u22ca", + "rtri;": "\u25b9", + "rtrie;": "\u22b5", + "rtrif;": "\u25b8", + "rtriltri;": "\u29ce", + "ruluhar;": "\u2968", + "rx;": "\u211e", + "sacute;": "\u015b", + "sbquo;": "\u201a", + "sc;": "\u227b", + "scE;": "\u2ab4", + "scap;": "\u2ab8", + "scaron;": "\u0161", + "sccue;": "\u227d", + "sce;": "\u2ab0", + "scedil;": "\u015f", + "scirc;": "\u015d", + "scnE;": "\u2ab6", + "scnap;": "\u2aba", + "scnsim;": "\u22e9", + "scpolint;": "\u2a13", + "scsim;": "\u227f", + "scy;": "\u0441", + "sdot;": "\u22c5", + "sdotb;": "\u22a1", + "sdote;": "\u2a66", + "seArr;": "\u21d8", + "searhk;": "\u2925", + "searr;": "\u2198", + "searrow;": "\u2198", + "sect": "\xa7", + "sect;": "\xa7", + "semi;": ";", + "seswar;": "\u2929", + "setminus;": "\u2216", + "setmn;": "\u2216", + "sext;": "\u2736", + "sfr;": "\U0001d530", + "sfrown;": "\u2322", + "sharp;": "\u266f", + "shchcy;": "\u0449", + "shcy;": "\u0448", + "shortmid;": "\u2223", + "shortparallel;": "\u2225", + "shy": "\xad", + "shy;": "\xad", + "sigma;": "\u03c3", + "sigmaf;": "\u03c2", + "sigmav;": "\u03c2", + "sim;": "\u223c", + "simdot;": "\u2a6a", + "sime;": "\u2243", + "simeq;": "\u2243", + "simg;": "\u2a9e", + "simgE;": "\u2aa0", + "siml;": "\u2a9d", + "simlE;": "\u2a9f", + "simne;": "\u2246", + "simplus;": "\u2a24", + "simrarr;": "\u2972", + "slarr;": "\u2190", + "smallsetminus;": "\u2216", + "smashp;": "\u2a33", + "smeparsl;": "\u29e4", + "smid;": "\u2223", + "smile;": "\u2323", + "smt;": "\u2aaa", + "smte;": "\u2aac", + "smtes;": "\u2aac\ufe00", + "softcy;": "\u044c", + "sol;": "/", + "solb;": "\u29c4", + "solbar;": "\u233f", + "sopf;": "\U0001d564", + "spades;": "\u2660", + "spadesuit;": "\u2660", + "spar;": "\u2225", + "sqcap;": "\u2293", + "sqcaps;": "\u2293\ufe00", + "sqcup;": "\u2294", + "sqcups;": "\u2294\ufe00", + "sqsub;": "\u228f", + "sqsube;": "\u2291", + "sqsubset;": "\u228f", + "sqsubseteq;": "\u2291", + "sqsup;": "\u2290", + "sqsupe;": "\u2292", + "sqsupset;": "\u2290", + "sqsupseteq;": "\u2292", + "squ;": "\u25a1", + "square;": "\u25a1", + "squarf;": "\u25aa", + "squf;": "\u25aa", + "srarr;": "\u2192", + "sscr;": "\U0001d4c8", + "ssetmn;": "\u2216", + "ssmile;": "\u2323", + "sstarf;": "\u22c6", + "star;": "\u2606", + "starf;": "\u2605", + "straightepsilon;": "\u03f5", + "straightphi;": "\u03d5", + "strns;": "\xaf", + "sub;": "\u2282", + "subE;": "\u2ac5", + "subdot;": "\u2abd", + "sube;": "\u2286", + "subedot;": "\u2ac3", + "submult;": "\u2ac1", + "subnE;": "\u2acb", + "subne;": "\u228a", + "subplus;": "\u2abf", + "subrarr;": "\u2979", + "subset;": "\u2282", + "subseteq;": "\u2286", + "subseteqq;": "\u2ac5", + "subsetneq;": "\u228a", + "subsetneqq;": "\u2acb", + "subsim;": "\u2ac7", + "subsub;": "\u2ad5", + "subsup;": "\u2ad3", + "succ;": "\u227b", + "succapprox;": "\u2ab8", + "succcurlyeq;": "\u227d", + "succeq;": "\u2ab0", + "succnapprox;": "\u2aba", + "succneqq;": "\u2ab6", + "succnsim;": "\u22e9", + "succsim;": "\u227f", + "sum;": "\u2211", + "sung;": "\u266a", + "sup1": "\xb9", + "sup1;": "\xb9", + "sup2": "\xb2", + "sup2;": "\xb2", + "sup3": "\xb3", + "sup3;": "\xb3", + "sup;": "\u2283", + "supE;": "\u2ac6", + "supdot;": "\u2abe", + "supdsub;": "\u2ad8", + "supe;": "\u2287", + "supedot;": "\u2ac4", + "suphsol;": "\u27c9", + "suphsub;": "\u2ad7", + "suplarr;": "\u297b", + "supmult;": "\u2ac2", + "supnE;": "\u2acc", + "supne;": "\u228b", + "supplus;": "\u2ac0", + "supset;": "\u2283", + "supseteq;": "\u2287", + "supseteqq;": "\u2ac6", + "supsetneq;": "\u228b", + "supsetneqq;": "\u2acc", + "supsim;": "\u2ac8", + "supsub;": "\u2ad4", + "supsup;": "\u2ad6", + "swArr;": "\u21d9", + "swarhk;": "\u2926", + "swarr;": "\u2199", + "swarrow;": "\u2199", + "swnwar;": "\u292a", + "szlig": "\xdf", + "szlig;": "\xdf", + "target;": "\u2316", + "tau;": "\u03c4", + "tbrk;": "\u23b4", + "tcaron;": "\u0165", + "tcedil;": "\u0163", + "tcy;": "\u0442", + "tdot;": "\u20db", + "telrec;": "\u2315", + "tfr;": "\U0001d531", + "there4;": "\u2234", + "therefore;": "\u2234", + "theta;": "\u03b8", + "thetasym;": "\u03d1", + "thetav;": "\u03d1", + "thickapprox;": "\u2248", + "thicksim;": "\u223c", + "thinsp;": "\u2009", + "thkap;": "\u2248", + "thksim;": "\u223c", + "thorn": "\xfe", + "thorn;": "\xfe", + "tilde;": "\u02dc", + "times": "\xd7", + "times;": "\xd7", + "timesb;": "\u22a0", + "timesbar;": "\u2a31", + "timesd;": "\u2a30", + "tint;": "\u222d", + "toea;": "\u2928", + "top;": "\u22a4", + "topbot;": "\u2336", + "topcir;": "\u2af1", + "topf;": "\U0001d565", + "topfork;": "\u2ada", + "tosa;": "\u2929", + "tprime;": "\u2034", + "trade;": "\u2122", + "triangle;": "\u25b5", + "triangledown;": "\u25bf", + "triangleleft;": "\u25c3", + "trianglelefteq;": "\u22b4", + "triangleq;": "\u225c", + "triangleright;": "\u25b9", + "trianglerighteq;": "\u22b5", + "tridot;": "\u25ec", + "trie;": "\u225c", + "triminus;": "\u2a3a", + "triplus;": "\u2a39", + "trisb;": "\u29cd", + "tritime;": "\u2a3b", + "trpezium;": "\u23e2", + "tscr;": "\U0001d4c9", + "tscy;": "\u0446", + "tshcy;": "\u045b", + "tstrok;": "\u0167", + "twixt;": "\u226c", + "twoheadleftarrow;": "\u219e", + "twoheadrightarrow;": "\u21a0", + "uArr;": "\u21d1", + "uHar;": "\u2963", + "uacute": "\xfa", + "uacute;": "\xfa", + "uarr;": "\u2191", + "ubrcy;": "\u045e", + "ubreve;": "\u016d", + "ucirc": "\xfb", + "ucirc;": "\xfb", + "ucy;": "\u0443", + "udarr;": "\u21c5", + "udblac;": "\u0171", + "udhar;": "\u296e", + "ufisht;": "\u297e", + "ufr;": "\U0001d532", + "ugrave": "\xf9", + "ugrave;": "\xf9", + "uharl;": "\u21bf", + "uharr;": "\u21be", + "uhblk;": "\u2580", + "ulcorn;": "\u231c", + "ulcorner;": "\u231c", + "ulcrop;": "\u230f", + "ultri;": "\u25f8", + "umacr;": "\u016b", + "uml": "\xa8", + "uml;": "\xa8", + "uogon;": "\u0173", + "uopf;": "\U0001d566", + "uparrow;": "\u2191", + "updownarrow;": "\u2195", + "upharpoonleft;": "\u21bf", + "upharpoonright;": "\u21be", + "uplus;": "\u228e", + "upsi;": "\u03c5", + "upsih;": "\u03d2", + "upsilon;": "\u03c5", + "upuparrows;": "\u21c8", + "urcorn;": "\u231d", + "urcorner;": "\u231d", + "urcrop;": "\u230e", + "uring;": "\u016f", + "urtri;": "\u25f9", + "uscr;": "\U0001d4ca", + "utdot;": "\u22f0", + "utilde;": "\u0169", + "utri;": "\u25b5", + "utrif;": "\u25b4", + "uuarr;": "\u21c8", + "uuml": "\xfc", + "uuml;": "\xfc", + "uwangle;": "\u29a7", + "vArr;": "\u21d5", + "vBar;": "\u2ae8", + "vBarv;": "\u2ae9", + "vDash;": "\u22a8", + "vangrt;": "\u299c", + "varepsilon;": "\u03f5", + "varkappa;": "\u03f0", + "varnothing;": "\u2205", + "varphi;": "\u03d5", + "varpi;": "\u03d6", + "varpropto;": "\u221d", + "varr;": "\u2195", + "varrho;": "\u03f1", + "varsigma;": "\u03c2", + "varsubsetneq;": "\u228a\ufe00", + "varsubsetneqq;": "\u2acb\ufe00", + "varsupsetneq;": "\u228b\ufe00", + "varsupsetneqq;": "\u2acc\ufe00", + "vartheta;": "\u03d1", + "vartriangleleft;": "\u22b2", + "vartriangleright;": "\u22b3", + "vcy;": "\u0432", + "vdash;": "\u22a2", + "vee;": "\u2228", + "veebar;": "\u22bb", + "veeeq;": "\u225a", + "vellip;": "\u22ee", + "verbar;": "|", + "vert;": "|", + "vfr;": "\U0001d533", + "vltri;": "\u22b2", + "vnsub;": "\u2282\u20d2", + "vnsup;": "\u2283\u20d2", + "vopf;": "\U0001d567", + "vprop;": "\u221d", + "vrtri;": "\u22b3", + "vscr;": "\U0001d4cb", + "vsubnE;": "\u2acb\ufe00", + "vsubne;": "\u228a\ufe00", + "vsupnE;": "\u2acc\ufe00", + "vsupne;": "\u228b\ufe00", + "vzigzag;": "\u299a", + "wcirc;": "\u0175", + "wedbar;": "\u2a5f", + "wedge;": "\u2227", + "wedgeq;": "\u2259", + "weierp;": "\u2118", + "wfr;": "\U0001d534", + "wopf;": "\U0001d568", + "wp;": "\u2118", + "wr;": "\u2240", + "wreath;": "\u2240", + "wscr;": "\U0001d4cc", + "xcap;": "\u22c2", + "xcirc;": "\u25ef", + "xcup;": "\u22c3", + "xdtri;": "\u25bd", + "xfr;": "\U0001d535", + "xhArr;": "\u27fa", + "xharr;": "\u27f7", + "xi;": "\u03be", + "xlArr;": "\u27f8", + "xlarr;": "\u27f5", + "xmap;": "\u27fc", + "xnis;": "\u22fb", + "xodot;": "\u2a00", + "xopf;": "\U0001d569", + "xoplus;": "\u2a01", + "xotime;": "\u2a02", + "xrArr;": "\u27f9", + "xrarr;": "\u27f6", + "xscr;": "\U0001d4cd", + "xsqcup;": "\u2a06", + "xuplus;": "\u2a04", + "xutri;": "\u25b3", + "xvee;": "\u22c1", + "xwedge;": "\u22c0", + "yacute": "\xfd", + "yacute;": "\xfd", + "yacy;": "\u044f", + "ycirc;": "\u0177", + "ycy;": "\u044b", + "yen": "\xa5", + "yen;": "\xa5", + "yfr;": "\U0001d536", + "yicy;": "\u0457", + "yopf;": "\U0001d56a", + "yscr;": "\U0001d4ce", + "yucy;": "\u044e", + "yuml": "\xff", + "yuml;": "\xff", + "zacute;": "\u017a", + "zcaron;": "\u017e", + "zcy;": "\u0437", + "zdot;": "\u017c", + "zeetrf;": "\u2128", + "zeta;": "\u03b6", + "zfr;": "\U0001d537", + "zhcy;": "\u0436", + "zigrarr;": "\u21dd", + "zopf;": "\U0001d56b", + "zscr;": "\U0001d4cf", + "zwj;": "\u200d", + "zwnj;": "\u200c", +} + +replacementCharacters = { + 0x0: "\uFFFD", + 0x0d: "\u000D", + 0x80: "\u20AC", + 0x81: "\u0081", + 0x82: "\u201A", + 0x83: "\u0192", + 0x84: "\u201E", + 0x85: "\u2026", + 0x86: "\u2020", + 0x87: "\u2021", + 0x88: "\u02C6", + 0x89: "\u2030", + 0x8A: "\u0160", + 0x8B: "\u2039", + 0x8C: "\u0152", + 0x8D: "\u008D", + 0x8E: "\u017D", + 0x8F: "\u008F", + 0x90: "\u0090", + 0x91: "\u2018", + 0x92: "\u2019", + 0x93: "\u201C", + 0x94: "\u201D", + 0x95: "\u2022", + 0x96: "\u2013", + 0x97: "\u2014", + 0x98: "\u02DC", + 0x99: "\u2122", + 0x9A: "\u0161", + 0x9B: "\u203A", + 0x9C: "\u0153", + 0x9D: "\u009D", + 0x9E: "\u017E", + 0x9F: "\u0178", +} + +tokenTypes = { + "Doctype": 0, + "Characters": 1, + "SpaceCharacters": 2, + "StartTag": 3, + "EndTag": 4, + "EmptyTag": 5, + "Comment": 6, + "ParseError": 7 +} + +tagTokenTypes = frozenset([tokenTypes["StartTag"], tokenTypes["EndTag"], + tokenTypes["EmptyTag"]]) + + +prefixes = dict([(v, k) for k, v in namespaces.items()]) +prefixes["http://www.w3.org/1998/Math/MathML"] = "math" + + +class DataLossWarning(UserWarning): + pass + + +class ReparseException(Exception): + pass diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/constants.pyc b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/constants.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f965985a4bbee8468c8c7141e4eae45000fe8611 GIT binary patch literal 82923 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 mlWZoQMvzE|3Y{(V(o5P`53Xh{adZ*)Z)AV literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py new file mode 100644 index 0000000..2059ec8 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py @@ -0,0 +1,65 @@ +from __future__ import absolute_import, division, unicode_literals + +from . import base + + +class Filter(base.Filter): + def __init__(self, source, encoding): + base.Filter.__init__(self, source) + self.encoding = encoding + + def __iter__(self): + state = "pre_head" + meta_found = (self.encoding is None) + pending = [] + + for token in base.Filter.__iter__(self): + type = token["type"] + if type == "StartTag": + if token["name"].lower() == "head": + state = "in_head" + + elif type == "EmptyTag": + if token["name"].lower() == "meta": + # replace charset with actual encoding + has_http_equiv_content_type = False + for (namespace, name), value in token["data"].items(): + if namespace is not None: + continue + elif name.lower() == 'charset': + token["data"][(namespace, name)] = self.encoding + meta_found = True + break + elif name == 'http-equiv' and value.lower() == 'content-type': + has_http_equiv_content_type = True + else: + if has_http_equiv_content_type and (None, "content") in token["data"]: + token["data"][(None, "content")] = 'text/html; charset=%s' % self.encoding + meta_found = True + + elif token["name"].lower() == "head" and not meta_found: + # insert meta into empty head + yield {"type": "StartTag", "name": "head", + "data": token["data"]} + yield {"type": "EmptyTag", "name": "meta", + "data": {(None, "charset"): self.encoding}} + yield {"type": "EndTag", "name": "head"} + meta_found = True + continue + + elif type == "EndTag": + if token["name"].lower() == "head" and pending: + # insert meta into head (if necessary) and flush pending queue + yield pending.pop(0) + if not meta_found: + yield {"type": "EmptyTag", "name": "meta", + "data": {(None, "charset"): self.encoding}} + while pending: + yield pending.pop(0) + meta_found = True + state = "post_head" + + if state == "in_head": + pending.append(token) + else: + yield token diff --git a/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.pyc b/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0a8b98536133ff9b754805b7c86cbe05a224db73 GIT binary patch literal 2225 zcmcIl&2Ah;5U%do9eW)+wqtBC1QZD&?Zw#>zQjQ&*pWD}ipG&mtR%yDr`Mj{`P-Qu zV@tbS%#902UI6hdyh9{jfE!m1d{r|`0w~

KjZX8UR?j&HWFrQ(EU`#MDn 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 RW7i%3wny22HynNQ9|3&Y@`?Ze literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/DESCRIPTION.rst b/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/DESCRIPTION.rst new file mode 100644 index 0000000..8ef94c4 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/DESCRIPTION.rst @@ -0,0 +1,39 @@ +pip +=== + +The `PyPA recommended +`_ +tool for installing Python packages. + +* `Installation `_ +* `Documentation `_ +* `Changelog `_ +* `Github Page `_ +* `Issue Tracking `_ +* `User mailing list `_ +* `Dev mailing list `_ +* User IRC: #pypa on Freenode. +* Dev IRC: #pypa-dev on Freenode. + + +.. image:: https://img.shields.io/pypi/v/pip.svg + :target: https://pypi.python.org/pypi/pip + +.. image:: https://img.shields.io/travis/pypa/pip/master.svg + :target: http://travis-ci.org/pypa/pip + +.. image:: https://img.shields.io/appveyor/ci/pypa/pip.svg + :target: https://ci.appveyor.com/project/pypa/pip/history + +.. image:: https://readthedocs.org/projects/pip/badge/?version=stable + :target: https://pip.pypa.io/en/stable + +Code of Conduct +--------------- + +Everyone interacting in the pip project's codebases, issue trackers, chat +rooms, and mailing lists is expected to follow the `PyPA Code of Conduct`_. + +.. _PyPA Code of Conduct: https://www.pypa.io/en/latest/code-of-conduct/ + + diff --git a/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/INSTALLER b/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/METADATA b/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/METADATA new file mode 100644 index 0000000..600a905 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/METADATA @@ -0,0 +1,69 @@ +Metadata-Version: 2.0 +Name: pip +Version: 9.0.1 +Summary: The PyPA recommended tool for installing Python packages. +Home-page: https://pip.pypa.io/ +Author: The pip developers +Author-email: python-virtualenv@groups.google.com +License: MIT +Keywords: easy_install distutils setuptools egg virtualenv +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Topic :: Software Development :: Build Tools +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: Implementation :: PyPy +Requires-Python: >=2.6,!=3.0.*,!=3.1.*,!=3.2.* +Provides-Extra: testing +Requires-Dist: mock; extra == 'testing' +Requires-Dist: pretend; extra == 'testing' +Requires-Dist: pytest; extra == 'testing' +Requires-Dist: scripttest (>=1.3); extra == 'testing' +Requires-Dist: virtualenv (>=1.10); extra == 'testing' + +pip +=== + +The `PyPA recommended +`_ +tool for installing Python packages. + +* `Installation `_ +* `Documentation `_ +* `Changelog `_ +* `Github Page `_ +* `Issue Tracking `_ +* `User mailing list `_ +* `Dev mailing list `_ +* User IRC: #pypa on Freenode. +* Dev IRC: #pypa-dev on Freenode. + + +.. image:: https://img.shields.io/pypi/v/pip.svg + :target: https://pypi.python.org/pypi/pip + +.. image:: https://img.shields.io/travis/pypa/pip/master.svg + :target: http://travis-ci.org/pypa/pip + +.. image:: https://img.shields.io/appveyor/ci/pypa/pip.svg + :target: https://ci.appveyor.com/project/pypa/pip/history + +.. image:: https://readthedocs.org/projects/pip/badge/?version=stable + :target: https://pip.pypa.io/en/stable + +Code of Conduct +--------------- + +Everyone interacting in the pip project's codebases, issue trackers, chat +rooms, and mailing lists is expected to follow the `PyPA Code of Conduct`_. + +.. _PyPA Code of Conduct: https://www.pypa.io/en/latest/code-of-conduct/ + + diff --git a/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/RECORD b/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/RECORD new file mode 100644 index 0000000..b7d6c51 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/RECORD @@ -0,0 +1,501 @@ +pip/__init__.py,sha256=00QWSreEBjb8Y8sPs8HeqgLXSB-3UrONJxo4J5APxEc,11348 +pip/__main__.py,sha256=V6Kh-IEDEFpt1cahRE6MajUF_14qJR_Qsvn4MjWZXzE,584 +pip/basecommand.py,sha256=TTlmZesQ4Vuxcto2KqwZGmgmN5ioHEl_DeFev9ie_SA,11910 +pip/baseparser.py,sha256=AKMOeF3fTrRroiv0DmTQbdiLW0DQux2KqGC_dJJB9d0,10465 +pip/cmdoptions.py,sha256=8JCcF2kKAF2cFnV77oW-3DsHJifr9jF2WuChzzwgcwg,16474 +pip/download.py,sha256=rA0wbmqC2n9ejX481YJSidmKgQqQDjdaxkHkHlAN68k,32171 +pip/exceptions.py,sha256=BvqH-Jw3tP2b-2IJ2kjrQemOAPMqKrQMLRIZHZQpJXk,8121 +pip/index.py,sha256=L6UhtAEZc2qw7BqfQrkPQcw2gCgEw3GukLRSA95BNyI,39950 +pip/locations.py,sha256=9rJRlgonC6QC2zGDIn_7mXaoZ9_tF_IHM2BQhWVRgbo,5626 +pip/pep425tags.py,sha256=q3kec4f6NHszuGYIhGIbVvs896D06uJAnKFgJ_wce44,10980 +pip/status_codes.py,sha256=F6uDG6Gj7RNKQJUDnd87QKqI16Us-t-B0wPF_4QMpWc,156 +pip/wheel.py,sha256=QSWmGs2ui-n4UMWm0JUY6aMCcwNKungVzbWsxI9KlJQ,32010 +pip/_vendor/__init__.py,sha256=WaaSJ3roSSJ_Uv4yKAxlGohKEH9YUA3aIh1Xg2IjfgU,4670 +pip/_vendor/appdirs.py,sha256=-9UOIZy62ahCQVY9-b7Nn6_5_4Y6ooHnv72tM8iHi9Y,22368 +pip/_vendor/distro.py,sha256=A4Douw9pcqdYxDTp5b-OR02fxVXnfWs-wC1wA89rhRk,38349 +pip/_vendor/ipaddress.py,sha256=wimbqcE7rwwETlucn8A_4Qd_-NKXPOBcNxJHarUoXng,80176 +pip/_vendor/ordereddict.py,sha256=4KsFuc6V8IgHROCHUu-4vCrr21ZPPea7Z0cvX9AjQ7w,4094 +pip/_vendor/pyparsing.py,sha256=7vAuUVbh6txUKQR2IzJ8_9DKmD5vtm5MDssWkI0ka8o,224171 +pip/_vendor/re-vendor.py,sha256=PcdZ40d0ohMsdJmA4t0AeAWbPXi1tFsvAwA5KE5FGeY,773 +pip/_vendor/retrying.py,sha256=k3fflf5_Mm0XcIJYhB7Tj34bqCCPhUDkYbx1NvW2FPE,9972 +pip/_vendor/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098 +pip/_vendor/cachecontrol/__init__.py,sha256=UPyFlz0dIjxusu5ITig9UDFJdSY5LTwijhldn0AfyzU,302 +pip/_vendor/cachecontrol/_cmd.py,sha256=MPxZfZd2LKDzVrs55X3wA1rsI2YuP8evLZSwQj0dIk0,1320 +pip/_vendor/cachecontrol/adapter.py,sha256=RaGYyRA-RA1J0AnE67GzEYFPBu4YH4EQUvQqTKa57iM,4608 +pip/_vendor/cachecontrol/cache.py,sha256=xtl-V-pr9KSt9VvFDRCB9yrHPEvqvbk-5M1vAInZb5k,790 +pip/_vendor/cachecontrol/compat.py,sha256=uyovOpd1ehI3J1XeBqJvcsIp6fvkjBpoQmu_0J2st8c,416 +pip/_vendor/cachecontrol/controller.py,sha256=elDsLcaYA15ncodRmHnWQp6ekU_ocEGtDeGLbsnTjzo,13024 +pip/_vendor/cachecontrol/filewrapper.py,sha256=_K8cStmXqD33m15PfsQ8rlpo6FfXjVbKmjvLXyICRgI,2531 +pip/_vendor/cachecontrol/heuristics.py,sha256=WtJrVsyWjpP9WoUiDVdTZZRNBCz5ZVptaQpYnqofDQU,4141 +pip/_vendor/cachecontrol/serialize.py,sha256=XM6elG9DSNexwaOCgMjUtfrHHW5NAB6TSbIf3x235xs,6536 +pip/_vendor/cachecontrol/wrapper.py,sha256=Kqyu_3TW_54XDudha4-HF21vyEOAJ4ZnRXFysTiLmXA,498 +pip/_vendor/cachecontrol/caches/__init__.py,sha256=uWnUtyMvHY_LULaL_4_IR1F_xPgK5zHfJyRnBq4DnPE,369 +pip/_vendor/cachecontrol/caches/file_cache.py,sha256=FsDug3bwUAQ3okjjfGzxlDaBf2fwVSn1iBKMTL6SyGU,3532 +pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=XywqxkS9MkCaflTOY_wjrE02neKdywB9YwlOBbP7Ywc,973 +pip/_vendor/colorama/__init__.py,sha256=9xByrTvk9upkL5NGV5It2Eje4-kzNLwa_1lGPWpXoNU,240 +pip/_vendor/colorama/ansi.py,sha256=Fi0un-QLqRm-v7o_nKiOqyC8PapBJK7DLV_q9LKtTO0,2524 +pip/_vendor/colorama/ansitowin32.py,sha256=gJZB35Lbdjatykd2zrUUnokMzkvcFgscyn_tNxxMFHA,9668 +pip/_vendor/colorama/initialise.py,sha256=cHqVJtb82OG7HUCxvQ2joG7N_CoxbIKbI_fgryZkj20,1917 +pip/_vendor/colorama/win32.py,sha256=_SCEoTK_GA2tU1nhbayKKac-v9Jn98lCPIFOeFMGCHQ,5365 +pip/_vendor/colorama/winterm.py,sha256=V7U7ojwG1q4n6PKripjEvW_htYQi5ueXSM3LUUoqqDY,6290 +pip/_vendor/distlib/__init__.py,sha256=-aUeNNCfiIG_1Tqf19BH0xLNuBKGX1I7lNhcLYgFUEA,581 +pip/_vendor/distlib/compat.py,sha256=FzKlP9dNUMH-j_1LCVnjgx6KgUbpnRjTjYkTkDYRPlI,40801 +pip/_vendor/distlib/database.py,sha256=jniJmYk0Mj2t6gZYbnn68TvQwnVZ0kXyeuf_3AxFclk,49672 +pip/_vendor/distlib/index.py,sha256=Cw8gxFq_7xXvdgExL3efjLAY3EAPDMSL3VA42RkbQBs,21085 +pip/_vendor/distlib/locators.py,sha256=hD_Hm3aSL9DklY9Cxyct2n_74gZ0xNFFGB5L7M6ds14,51013 +pip/_vendor/distlib/manifest.py,sha256=3qEuZhHlDbvyYZ1BZbdapDAivgMgUwWpZ00cmXqcn18,14810 +pip/_vendor/distlib/markers.py,sha256=iRrVWwpyVwjkKJSX8NEQ92_MRMwpROcfNGKCD-Ch1QM,6282 +pip/_vendor/distlib/metadata.py,sha256=hUsf7Qh2Ae4CCkL33qK8ppwC8ZTzT7ep6Hj9RKpijKU,38833 +pip/_vendor/distlib/resources.py,sha256=VFBVbFqLVqDBSQDXcFQHrX1KEcuoDxTK699Ydi_beyc,10766 +pip/_vendor/distlib/scripts.py,sha256=xpehNfISGPTNxQZu02K9Rw2QbNx_2Q4emePv3W5X0iw,15224 +pip/_vendor/distlib/t32.exe,sha256=cp0UAUDDr1tGAx8adlKxWbCHIa-oB3bxev5zYzgAr8E,89088 +pip/_vendor/distlib/t64.exe,sha256=FiljDPcX9qvoe9FYE_9pNEHqbqMnhcCOuI_oLJ4F9F8,97792 +pip/_vendor/distlib/util.py,sha256=E2wU-RZShPMFUMJr9kPmemTULinM4qDzosNPihCuKE0,52991 +pip/_vendor/distlib/version.py,sha256=CgghOUylxGD7dEA2S3MvWjx7mY_2bWsluF0Of3Yxl4Y,23711 +pip/_vendor/distlib/w32.exe,sha256=LItrBJesEqt2QTQuB-yha2YbMegURHmHmdSxhjBqmnc,85504 +pip/_vendor/distlib/w64.exe,sha256=n_PioBC7ltz7sAk1WLbLzZJgS4R2axSy_0HPf8ZCsEg,94208 +pip/_vendor/distlib/wheel.py,sha256=UP53cKxOM5r7bHSS-n5prF6hwJEVsMW9ZNJutOuC26c,39115 +pip/_vendor/distlib/_backport/__init__.py,sha256=bqS_dTOH6uW9iGgd0uzfpPjo6vZ4xpPZ7kyfZJ2vNaw,274 +pip/_vendor/distlib/_backport/misc.py,sha256=KWecINdbFNOxSOP1fGF680CJnaC6S4fBRgEtaYTw0ig,971 +pip/_vendor/distlib/_backport/shutil.py,sha256=VW1t3uYqUjWZH7jV-6QiimLhnldoV5uIpH4EuiT1jfw,25647 +pip/_vendor/distlib/_backport/sysconfig.cfg,sha256=swZKxq9RY5e9r3PXCrlvQPMsvOdiWZBTHLEbqS8LJLU,2617 +pip/_vendor/distlib/_backport/sysconfig.py,sha256=eSEyJg7jxF_eHlHG8IOtl93kb07UoMIRp1wYsPeGi9k,26955 +pip/_vendor/distlib/_backport/tarfile.py,sha256=Ihp7rXRcjbIKw8COm9wSePV9ARGXbSF9gGXAMn2Q-KU,92628 +pip/_vendor/html5lib/__init__.py,sha256=JsIwmFldk-9raBadPSTS74JrfmJvozc-3aekMi7Hr9s,780 +pip/_vendor/html5lib/_ihatexml.py,sha256=tzXygYmisUmiEUt2v7E1Ab50AKQsrD-SglPRnY75vME,16705 +pip/_vendor/html5lib/_inputstream.py,sha256=C4lX5gUBwebOWy41hYP2ZBpkPVNvxk_hZBm3OVyPZM4,32532 +pip/_vendor/html5lib/_tokenizer.py,sha256=YAaOEBD6qc5ISq9Xt9Nif1OFgcybTTfMdwqBkZhpAq4,76580 +pip/_vendor/html5lib/_utils.py,sha256=bS6THVlL8ZyTcI6CIxiM6xxuHsE8i1j5Ogd3Ha1G84U,4096 +pip/_vendor/html5lib/constants.py,sha256=Dfc1Fv3_9frktgWjg4tbj-CjMMp02Ko9qMe4il1BVdo,83387 +pip/_vendor/html5lib/html5parser.py,sha256=Dmlu9hlq5w_id6mBZyY_sE5LukIACgvG4kpgIsded8Q,117170 +pip/_vendor/html5lib/serializer.py,sha256=Urrsa0cPPLqNX-UbJWS2gUhs_06qVbNxZvUnrmGZK6E,14177 +pip/_vendor/html5lib/_trie/__init__.py,sha256=8VR1bcgD2OpeS2XExpu5yBhP_Q1K-lwKbBKICBPf1kU,289 +pip/_vendor/html5lib/_trie/_base.py,sha256=6P_AcIoGjtwB2qAlhV8H4VP-ztQxoXFGwt4NyMqG_Kw,979 +pip/_vendor/html5lib/_trie/datrie.py,sha256=EQpqSfkZRuTbE-DuhW7xMdVDxdZNZ0CfmnYfHA_3zxM,1178 +pip/_vendor/html5lib/_trie/py.py,sha256=wXmQLrZRf4MyWNyg0m3h81m9InhLR7GJ002mIIZh-8o,1775 +pip/_vendor/html5lib/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/html5lib/filters/alphabeticalattributes.py,sha256=DXv-P2vdQ5F3OTWM6QZ6KhyDlAWm90pbfrD1Bk9D_l0,621 +pip/_vendor/html5lib/filters/base.py,sha256=z-IU9ZAYjpsVsqmVt7kuWC63jR11hDMr6CVrvuao8W0,286 +pip/_vendor/html5lib/filters/inject_meta_charset.py,sha256=2Q_JnMscn_tNbV_qpgYN_5M3PnBGfmuvECMKDExHUcY,2742 +pip/_vendor/html5lib/filters/lint.py,sha256=qf5cLrT6xXd8V7GH1R_3lKxIjuJSfpbWTpSwaglYdDw,3365 +pip/_vendor/html5lib/filters/optionaltags.py,sha256=EHig4kM-QiLjuxVJ3FAAFNy-10k4aV6HJbQzHKZ_3u8,10534 +pip/_vendor/html5lib/filters/sanitizer.py,sha256=7PqJrhm6mo3JvaHk2IQW7i74Or7Qtd-FV8UftJIyDys,25112 +pip/_vendor/html5lib/filters/whitespace.py,sha256=KPt067nYTqqi8KLTClyynn4eVzNDC_-MApXNVHRXVX0,1139 +pip/_vendor/html5lib/treeadapters/__init__.py,sha256=l3LcqMSEyoh99Jh_eWjGexHnIvKhLAXoP-LDz88whuM,208 +pip/_vendor/html5lib/treeadapters/genshi.py,sha256=6VIuHDNoExv1JWv3ePj6V5CM-tcyiUSWe5_Hd2ejbwY,1555 +pip/_vendor/html5lib/treeadapters/sax.py,sha256=3of4vvaUYIAic7pngebwJV24hpOS7Zg9ggJa_WQegy4,1661 +pip/_vendor/html5lib/treebuilders/__init__.py,sha256=UlB4orkTgZhFIKQdXrtiWn9cpKSsuhnOQOIHeD0Fv4k,3406 +pip/_vendor/html5lib/treebuilders/base.py,sha256=4vdjm_Z2f_GTQBwKnWlrzVcctTb-K5sfN8pXDaWODiA,13942 +pip/_vendor/html5lib/treebuilders/dom.py,sha256=SY3MsijXyzdNPc8aK5IQsupBoM8J67y56DgNtGvsb9g,8835 +pip/_vendor/html5lib/treebuilders/etree.py,sha256=aqIBOGj_dFYqBURIcTegGNBhAIJOw5iFDHb4jrkYH-8,12764 +pip/_vendor/html5lib/treebuilders/etree_lxml.py,sha256=CEgwHMIQZvIDFAqct4kqPkVtyKIm9efHFq_VeExEPCA,14161 +pip/_vendor/html5lib/treewalkers/__init__.py,sha256=CFpUOCfLuhAgVJ8NYk9wviCu1khYnv7XRStvyzU1Fws,5544 +pip/_vendor/html5lib/treewalkers/base.py,sha256=ei-2cFbNFd0gRjyaFmxnxZGLNID4o0bHFCH9bMyZ5Bk,4939 +pip/_vendor/html5lib/treewalkers/dom.py,sha256=EHyFR8D8lYNnyDU9lx_IKigVJRyecUGua0mOi7HBukc,1413 +pip/_vendor/html5lib/treewalkers/etree.py,sha256=8jVLEY2FjgN4RFugwhAh44l9ScVYoDStQFCnlPwvafI,4684 +pip/_vendor/html5lib/treewalkers/etree_lxml.py,sha256=sY6wfRshWTllu6n48TPWpKsQRPp-0CQrT0hj_AdzHSU,6309 +pip/_vendor/html5lib/treewalkers/genshi.py,sha256=4D2PECZ5n3ZN3qu3jMl9yY7B81jnQApBQSVlfaIuYbA,2309 +pip/_vendor/lockfile/__init__.py,sha256=Tqpz90DwKYfhPsfzVOJl84TL87pdFE5ePNHdXAxs4Tk,9371 +pip/_vendor/lockfile/linklockfile.py,sha256=C7OH3H4GdK68u4FQgp8fkP2kO4fyUTSyj3X6blgfobc,2652 +pip/_vendor/lockfile/mkdirlockfile.py,sha256=e3qgIL-etZMLsS-3ft19iW_8IQ360HNkGOqE3yBKsUw,3096 +pip/_vendor/lockfile/pidlockfile.py,sha256=ukH9uk6NFuxyVmG5QiWw4iKq3fT7MjqUguX95avYPIY,6090 +pip/_vendor/lockfile/sqlitelockfile.py,sha256=o2TMkMRY0iwn-iL1XMRRIFStMUkS4i3ajceeYNntKFg,5506 +pip/_vendor/lockfile/symlinklockfile.py,sha256=ABwXXmvTHvCl5viPblShL3PG-gGsLiT1roAMfDRwhi8,2616 +pip/_vendor/packaging/__about__.py,sha256=zkcCPTN_6TcLW0Nrlg0176-R1QQ_WVPTm8sz1R4-HjM,720 +pip/_vendor/packaging/__init__.py,sha256=_vNac5TrzwsrzbOFIbF-5cHqc_Y2aPT2D7zrIR06BOo,513 +pip/_vendor/packaging/_compat.py,sha256=Vi_A0rAQeHbU-a9X0tt1yQm9RqkgQbDSxzRw8WlU9kA,860 +pip/_vendor/packaging/_structures.py,sha256=RImECJ4c_wTlaTYYwZYLHEiebDMaAJmK1oPARhw1T5o,1416 +pip/_vendor/packaging/markers.py,sha256=mtg2nphJE1oQO39g1DgsdPsMO-guBBClpR-AEYFrbMg,8230 +pip/_vendor/packaging/requirements.py,sha256=SD7dVJGjdPUqtoHb47qwK6wWJTQd-ZXWjxpJg83UcBA,4327 +pip/_vendor/packaging/specifiers.py,sha256=SAMRerzO3fK2IkFZCaZkuwZaL_EGqHNOz4pni4vhnN0,28025 +pip/_vendor/packaging/utils.py,sha256=3m6WvPm6NNxE8rkTGmn0r75B_GZSGg7ikafxHsBN1WA,421 +pip/_vendor/packaging/version.py,sha256=OwGnxYfr2ghNzYx59qWIBkrK3SnB6n-Zfd1XaLpnnM0,11556 +pip/_vendor/pkg_resources/__init__.py,sha256=CcwuHtCBZn9OTkmgF9cFpadIAMhlrnZTVKTOo4V2p58,103230 +pip/_vendor/progress/__init__.py,sha256=Wn1074LUDZovd4zfoVYojnPBgOc6ctHbQX7rp_p8lRA,3023 +pip/_vendor/progress/bar.py,sha256=YNPJeRrwYVKFO2nyaEwsQjYByamMWTgJMvQO1NpD-AY,2685 +pip/_vendor/progress/counter.py,sha256=kEqA8jWEdwrc6P_9VaRx7bjOHwk9gxl-Q9oVbQ08v5c,1502 +pip/_vendor/progress/helpers.py,sha256=FehfwZTv-5cCfsbcMlvlUkm3xZ0cRhsev6XVpmeTF4c,2854 +pip/_vendor/progress/spinner.py,sha256=iCVtUQbaJUFHTjn1ZLPQLPYeao4lC9aXAa_HxIeUK6k,1314 +pip/_vendor/requests/__init__.py,sha256=Cde-qxOWcslaEcPvKAJQPFbY8_va8PMbU7Rssr7vViI,2326 +pip/_vendor/requests/adapters.py,sha256=DJdgax91PyS2s6_oZPELbuLWNlM2xGguNu62sqcOUik,19740 +pip/_vendor/requests/api.py,sha256=PgminOpD8hLLKLNs0RWLKr1HpNc4Qxr_6uen8q2c9CI,5794 +pip/_vendor/requests/auth.py,sha256=eBLtJlcTZxRG7xKXCvGQBLO9a-PxFgMf2qTUbtZwMJM,8175 +pip/_vendor/requests/cacert.pem,sha256=5xzWFRrSP0ZsXiW6emg8UQ_w497lT4qWCv32OO8R1ME,344712 +pip/_vendor/requests/certs.py,sha256=Aa-oStu9f2lVi8VM9Aw1xaAtTIz7bhu5CGKNPEW1waM,625 +pip/_vendor/requests/compat.py,sha256=0cgWB43LEX5OrX1O4k-bPbFlIbWXgEd412DSDJtF1Y8,1687 +pip/_vendor/requests/cookies.py,sha256=awMI0hm3SKheMEDTqO8AIadc2XmnCGKPCTNw_4hlM3Q,18208 +pip/_vendor/requests/exceptions.py,sha256=x-MGvDASYKSstuCNYTA5IT_EAcxTp5knE3WPMrgkrlI,2860 +pip/_vendor/requests/hooks.py,sha256=HXAHoC1FNTFRZX6-lNdvPM7Tst4kvGwYTN-AOKRxoRU,767 +pip/_vendor/requests/models.py,sha256=YHuL2khGDFxeWc-NMJIcfFqvYJ0dKs1mXfj1Fuff1J8,30532 +pip/_vendor/requests/sessions.py,sha256=H7HpKRLKeu1MSH5W1-PI2GMCFLN4bz5i3OFqjjgzE5k,25609 +pip/_vendor/requests/status_codes.py,sha256=uwVHcMPkHV3FElDLlnDTH3KULZIAGxaovbBxrjWm8N0,3316 +pip/_vendor/requests/structures.py,sha256=yexCvWbX40M6E8mLQOpAGZZ-ZoAnyaT2dni-Bp-b42g,3012 +pip/_vendor/requests/utils.py,sha256=9d3jqnA8avsF9N1QPmsk2pJgo2pxuExrN2hoIhtLggY,24163 +pip/_vendor/requests/packages/__init__.py,sha256=CVheqNRcXIkAi5037RhxeqbAqd0QhrK1o9R9kS2xvuI,1384 +pip/_vendor/requests/packages/chardet/__init__.py,sha256=XuTKCYOR7JwsoHxqZTYH86LVyMDbDI3s1s0W_qoGEBM,1295 +pip/_vendor/requests/packages/chardet/big5freq.py,sha256=D8oTdz-GM7Jg8TsaWJDm65vM_OLHC3xub6qUJ3rOgsQ,82594 +pip/_vendor/requests/packages/chardet/big5prober.py,sha256=XX96C--6WKYW36mL-z7pJSAtc169Z8ZImByCP4pEN9A,1684 +pip/_vendor/requests/packages/chardet/chardetect.py,sha256=f4299UZG6uWd3i3r_N0OdrFj2sA9JFI54PAmDLAFmWA,2504 +pip/_vendor/requests/packages/chardet/chardistribution.py,sha256=cUARQFr1oTLXeJCDQrDRkUP778AvSMzhSCnG8VLCV58,9226 +pip/_vendor/requests/packages/chardet/charsetgroupprober.py,sha256=0lKk7VE516fgMw119tNefFqLOxKfIE9WfdkpIT69OKU,3791 +pip/_vendor/requests/packages/chardet/charsetprober.py,sha256=Z48o2KiOj23FNqYH8FqzhH5m1qdm3rI8DcTm2Yqtklg,1902 +pip/_vendor/requests/packages/chardet/codingstatemachine.py,sha256=E85rYhHVMw9xDEJVgiQhp0OnLGr6i2r8_7QOWMKTH08,2318 +pip/_vendor/requests/packages/chardet/compat.py,sha256=5mm6yrHwef1JEG5OxkPJlSq5lkjLVpEGh3iPgFBkpkM,1157 +pip/_vendor/requests/packages/chardet/constants.py,sha256=-UnY8U7EP7z9fTyd09yq35BEkSFEAUAiv9ohd1DW1s4,1335 +pip/_vendor/requests/packages/chardet/cp949prober.py,sha256=FMvdLyB7fejPXRsTbca7LK1P3RUvvssmjUNyaEfz8zY,1782 +pip/_vendor/requests/packages/chardet/escprober.py,sha256=q5TcQKeVq31WxrW7Sv8yjpZkjEoaHO8S92EJZ9hodys,3187 +pip/_vendor/requests/packages/chardet/escsm.py,sha256=7iljEKN8lXTh8JFXPUSwlibMno6R6ksq4evLxbkzfro,7839 +pip/_vendor/requests/packages/chardet/eucjpprober.py,sha256=5IpfSEjAb7h3hcGMd6dkU80O900C2N6xku28rdYFKuc,3678 +pip/_vendor/requests/packages/chardet/euckrfreq.py,sha256=T5saK5mImySG5ygQPtsp6o2uKulouCwYm2ElOyFkJqU,45978 +pip/_vendor/requests/packages/chardet/euckrprober.py,sha256=Wo7dnZ5Erw_nB4H-m5alMiOxOuJUmGHlwCSaGqExDZA,1675 +pip/_vendor/requests/packages/chardet/euctwfreq.py,sha256=G_I0BW9i1w0ONeeUwIYqV7_U09buIHdqh-wNHVaql7I,34872 +pip/_vendor/requests/packages/chardet/euctwprober.py,sha256=upS2P6GuT5ujOxXYw-RJLcT7A4PTuo27KGUKU4UZpIQ,1676 +pip/_vendor/requests/packages/chardet/gb2312freq.py,sha256=M2gFdo_qQ_BslStEchrPW5CrPEZEacC0uyDLw4ok-kY,36011 +pip/_vendor/requests/packages/chardet/gb2312prober.py,sha256=VWnjoRa83Y6V6oczMaxyUr0uy48iCnC2nzk9zfEIRHc,1681 +pip/_vendor/requests/packages/chardet/hebrewprober.py,sha256=8pdoUfsVXf_L4BnJde_BewS6H2yInV5688eu0nFhLHY,13359 +pip/_vendor/requests/packages/chardet/jisfreq.py,sha256=ZcL4R5ekHHbP2KCYGakVMBsiKqZZZAABzhwi-uRkOps,47315 +pip/_vendor/requests/packages/chardet/jpcntx.py,sha256=yftmp0QaF6RJO5SJs8I7LU5AF4rwP23ebeCQL4BM1OY,19348 +pip/_vendor/requests/packages/chardet/langbulgarianmodel.py,sha256=ZyPsA796MSVhYdfWhMCgKWckupAKAnKqWcE3Cl3ej6o,12784 +pip/_vendor/requests/packages/chardet/langcyrillicmodel.py,sha256=fkcd5OvogUp-GrNDWAZPgkYsSRCD2omotAEvqjlmLKE,17725 +pip/_vendor/requests/packages/chardet/langgreekmodel.py,sha256=QHMy31CH_ot67UCtmurCEKqKx2WwoaKrw2YCYYBK2Lw,12628 +pip/_vendor/requests/packages/chardet/langhebrewmodel.py,sha256=4ASl5vzKJPng4H278VHKtRYC03TpQpenlHTcsmZH1rE,11318 +pip/_vendor/requests/packages/chardet/langhungarianmodel.py,sha256=SXwuUzh49_cBeMXhshRHdrhlkz0T8_pZWV_pdqBKNFk,12536 +pip/_vendor/requests/packages/chardet/langthaimodel.py,sha256=-k7djh3dGKngAGnt3WfuoJN7acDcWcmHAPojhaUd7q4,11275 +pip/_vendor/requests/packages/chardet/latin1prober.py,sha256=238JHOxH8aRudJY2NmeSv5s7i0Qe3GuklIU3HlYybvg,5232 +pip/_vendor/requests/packages/chardet/mbcharsetprober.py,sha256=9rOCjDVsmSMp6e7q2syqak22j7lrbUZhJhMee2gbVL0,3268 +pip/_vendor/requests/packages/chardet/mbcsgroupprober.py,sha256=SHRzNPLpDXfMJLA8phCHVU0WgqbgDCNxDQMolGX_7yk,1967 +pip/_vendor/requests/packages/chardet/mbcssm.py,sha256=IKwJXyxu34n6NojmxVxC60MLFtJKm-hIfxaFEnb3uBA,19590 +pip/_vendor/requests/packages/chardet/sbcharsetprober.py,sha256=Xq0lODqJnDgxglBiQI4BqTFiPbn63-0a5XNA5-hVu7U,4793 +pip/_vendor/requests/packages/chardet/sbcsgroupprober.py,sha256=8hLyH8RAG-aohBo7o_KciWVgRo42ZE_zEtuNG1JMRYI,3291 +pip/_vendor/requests/packages/chardet/sjisprober.py,sha256=UYOmiMDzttYIkSDoOB08UEagivJpUXz4tuWiWzTiOr8,3764 +pip/_vendor/requests/packages/chardet/universaldetector.py,sha256=h-E2x6XSCzlNjycYWG0Fe4Cf1SGdaIzUNu2HCphpMZA,6840 +pip/_vendor/requests/packages/chardet/utf8prober.py,sha256=7tdNZGrJY7jZUBD483GGMkiP0Tx8Fp-cGvWHoAsilHg,2652 +pip/_vendor/requests/packages/urllib3/__init__.py,sha256=EF9pbHgMzqQek2Y6EZ82A8B6wETFeW7bK0K-HoZ3Ffo,2852 +pip/_vendor/requests/packages/urllib3/_collections.py,sha256=RP-cHyTx4AgYwvoETK8q1IVRbWFJnE0VV692ZHSbU68,10553 +pip/_vendor/requests/packages/urllib3/connection.py,sha256=QCmkelYgtbc06DfJtgs22na78kRTLCTbLb-OSWLbt-A,11617 +pip/_vendor/requests/packages/urllib3/connectionpool.py,sha256=fls19n1Y4jnwOBsZz_9F01i08xH2gZXEIyyDmWd-mKU,33591 +pip/_vendor/requests/packages/urllib3/exceptions.py,sha256=zGjhZCR1wefEnCN5b7WouQ3UhXesJ2bRKYIeWusaFJs,5599 +pip/_vendor/requests/packages/urllib3/fields.py,sha256=WUMvCLvnw7XemBq6AmCgNPJwyIJL_vWaMHaA2FLlscM,5931 +pip/_vendor/requests/packages/urllib3/filepost.py,sha256=NvLlFsdt8ih_Q4S2ekQF3CJG0nOXs32YI-G04_AdT2g,2320 +pip/_vendor/requests/packages/urllib3/poolmanager.py,sha256=9Uf0fUk0aR_s1auXgwceoN2gbaIQ08lrum_cGEA9-_U,13092 +pip/_vendor/requests/packages/urllib3/request.py,sha256=jET7OvA3FSjxABBRGhCyMdPvM9XuJA6df9gRhkJiJiY,5988 +pip/_vendor/requests/packages/urllib3/response.py,sha256=wxJSV_6pyh6Cgx7XFVGpNhpZCbh4eL7lCSFaU4ixXXc,18615 +pip/_vendor/requests/packages/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/requests/packages/urllib3/contrib/appengine.py,sha256=NdN_xOgDLMadUPe_dN3wdan_DH9-fxVNqFgq19tbqQs,7937 +pip/_vendor/requests/packages/urllib3/contrib/ntlmpool.py,sha256=r-vMDMXAGbix9a7-IhbKVTATmAst-5g4hKYOLf8Kd5M,4531 +pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py,sha256=JsdAh0gL4XvQzhOEBRoFtJN91qLf1LFIDEFZs95445I,11778 +pip/_vendor/requests/packages/urllib3/contrib/socks.py,sha256=uPHtE6R8uyUbD9R8l2wO80c87WDGZ9rou3kNOwV74eA,5668 +pip/_vendor/requests/packages/urllib3/packages/__init__.py,sha256=nlChrGzkjCkmhCX9HrF_qHPUgosfsPQkVIJxiiLhk9g,109 +pip/_vendor/requests/packages/urllib3/packages/ordered_dict.py,sha256=VQaPONfhVMsb8B63Xg7ZOydJqIE_jzeMhVN3Pec6ogw,8935 +pip/_vendor/requests/packages/urllib3/packages/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098 +pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py,sha256=cOWMIn1orgJoA35p6pSzO_-Dc6iOX9Dhl6D2sL9b_2o,460 +pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py,sha256=fK28k37hL7-D79v9iM2fHgNK9Q1Pw0M7qVRL4rkfFjQ,3778 +pip/_vendor/requests/packages/urllib3/util/__init__.py,sha256=n2QE9_0Bb6u8tf7LUc4qKe8V-Hz9G8lEOc9j_30Q8d0,892 +pip/_vendor/requests/packages/urllib3/util/connection.py,sha256=7B5Mmepg5Xd399VKE__VHxD2ObapYFrB3mWJ_EnIebs,4744 +pip/_vendor/requests/packages/urllib3/util/request.py,sha256=ZMDewRK-mjlK72szGIIjzYnLIn-zPP0WgJUMjKeZ6Tg,2128 +pip/_vendor/requests/packages/urllib3/util/response.py,sha256=1UFd5TIp9MyBp4xgnZoyQZscZVPPr0tWRaXNR5w_vds,2165 +pip/_vendor/requests/packages/urllib3/util/retry.py,sha256=5eA3GHR_L14qz66NU6gr-v5VbKYsvdEqOvCcsx1oLKo,10664 +pip/_vendor/requests/packages/urllib3/util/ssl_.py,sha256=7xR_jvQLTQA1U006wJ1bl2KuLGnD1qQvUcFM2uysedw,11622 +pip/_vendor/requests/packages/urllib3/util/timeout.py,sha256=ioAIYptFyBG7eU_r8_ZmO45hpj1dJE6WCvrGR9dNFjs,9596 +pip/_vendor/requests/packages/urllib3/util/url.py,sha256=EcX4ZfmgKWcqM4sY9FlC-yN4y_snuURPV0TpUPHNjnc,5879 +pip/_vendor/webencodings/__init__.py,sha256=t7rAQQxXwalY-ak9hTl73qHjhia9UH-sL-e00qQrBpo,10576 +pip/_vendor/webencodings/labels.py,sha256=4AO_KxTddqGtrL9ns7kAPjb0CcN6xsCIxbK37HY9r3E,8979 +pip/_vendor/webencodings/mklabels.py,sha256=GYIeywnpaLnP0GSic8LFWgd0UVvO_l1Nc6YoF-87R_4,1305 +pip/_vendor/webencodings/tests.py,sha256=7vTk7LgOJn_t1XtT_viofZlEJ7cJCzPe_hvVHOkcQl8,6562 +pip/_vendor/webencodings/x_user_defined.py,sha256=72cfPRhbfkRCGkkA8ZnvVV7UnoiLb5uPMhXwhrXiLPk,4306 +pip/commands/__init__.py,sha256=2Uq3HCdjchJD9FL1LB7rd5v6UySVAVizX0W3EX3hIoE,2244 +pip/commands/check.py,sha256=-A7GI1-WZBh9a4P6UoH_aR-J7I8Lz8ly7m3wnCjmevs,1382 +pip/commands/completion.py,sha256=kkPgVX7SUcJ_8Juw5GkgWaxHN9_45wmAr9mGs1zXEEs,2453 +pip/commands/download.py,sha256=8RuuPmSYgAq3iEDTqZY_1PDXRqREdUULHNjWJeAv7Mo,7810 +pip/commands/freeze.py,sha256=h6-yFMpjCjbNj8-gOm5UuoF6cg14N5rPV4TCi3_CeuI,2835 +pip/commands/hash.py,sha256=MCt4jEFyfoce0lVeNEz1x49uaTY-VDkKiBvvxrVcHkw,1597 +pip/commands/help.py,sha256=84HWkEdnGP_AEBHnn8gJP2Te0XTXRKFoXqXopbOZTNo,982 +pip/commands/install.py,sha256=ovG9p9n1X2NPqMgFVtSuT9kMbLAdx1r3YSSiXSvgOKI,17412 +pip/commands/list.py,sha256=93bCiFyt2Qut_YHkYHJMZHpXladmxsjS-yOtZeb3uqI,11369 +pip/commands/search.py,sha256=oTs9QNdefnrmCV_JeftG0PGiMuYVmiEDF1OUaYsmDao,4502 +pip/commands/show.py,sha256=ZYM57_7U8KP9MQIIyHKQdZxmiEZByy-DRzB697VFoTY,5891 +pip/commands/uninstall.py,sha256=tz8cXz4WdpUdnt3RvpdQwH6_SNMB50egBIZWa1dwfcc,2884 +pip/commands/wheel.py,sha256=z5SEhws2YRMb0Ml1IEkg6jFZMLRpLl86bHCrQbYt5zo,7729 +pip/compat/__init__.py,sha256=2Xs_IpsmdRgHbQgQO0c8_lPvHJnQXHyGWxPbLbYJL4c,4672 +pip/compat/dictconfig.py,sha256=dRrelPDWrceDSzFT51RTEVY2GuM7UDyc5Igh_tn4Fvk,23096 +pip/models/__init__.py,sha256=0Rs7_RA4DxeOkWT5Cq4CQzDrSEhvYcN3TH2cazr72PE,71 +pip/models/index.py,sha256=pUfbO__v3mD9j-2n_ClwPS8pVyx4l2wIwyvWt8GMCRA,487 +pip/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/operations/check.py,sha256=uwUN9cs1sPo7c0Sj6pRrSv7b22Pk29SXUImTelVchMQ,1590 +pip/operations/freeze.py,sha256=k-7w7LsM-RpPv7ERBzHiPpYkH-GuYfHLyR-Cp_1VPL0,5194 +pip/req/__init__.py,sha256=vFwZY8_Vc1WU1zFAespg1My_r_AT3n7cN0W9eX0EFqk,276 +pip/req/req_file.py,sha256=fG9MDsXUNPhmGwxUiwrIXEynyD8Q7s3L47-hLZPDXq0,11926 +pip/req/req_install.py,sha256=gYrH-lwQMmt55VVbav_EtRIPu94cQbHFHm_Kq6AeHbg,46487 +pip/req/req_set.py,sha256=jHspXqcA2FxcF05dgUIAZ5huYPv6bn0wRUX0Z7PKmaA,34462 +pip/req/req_uninstall.py,sha256=fdH2VgCjEC8NRYDS7fRu3ZJaBBUEy-N5muwxDX5MBNM,6897 +pip/utils/__init__.py,sha256=HX_wYS15oiYOz-H3qG1Kbi1CY7AGWCNK5jloiD0fauc,27187 +pip/utils/appdirs.py,sha256=kj2LK-I2fC5QnEh_A_v-ev_IQMcXaWWF5DE39sNvCLQ,8811 +pip/utils/build.py,sha256=4smLRrfSCmXmjEnVnMFh2tBEpNcSLRe6J0ejZJ-wWJE,1312 +pip/utils/deprecation.py,sha256=X_FMjtDbMJqfqEkdRrki-mYyIdPB6I6DHUTCA_ChY6M,2232 +pip/utils/encoding.py,sha256=NQxGiFS5GbeAveLZTnx92t5r0PYqvt0iRnP2u9SGG1w,971 +pip/utils/filesystem.py,sha256=ZEVBuYM3fqr2_lgOESh4Y7fPFszGD474zVm_M3Mb5Tk,899 +pip/utils/glibc.py,sha256=jcQYjt_oJLPKVZB28Kauy4Sw70zS-wawxoU1HHX36_0,2939 +pip/utils/hashes.py,sha256=oMk7cd3PbJgzpSQyXq1MytMud5f6H5Oa2YY5hYuCq6I,2866 +pip/utils/logging.py,sha256=7yWu4gZw-Qclj7X80QVdpGWkdTWGKT4LiUVKcE04pro,3327 +pip/utils/outdated.py,sha256=fNwOCL5r2EftPGhgCYGMKu032HC8cV-JAr9lp0HmToM,5455 +pip/utils/packaging.py,sha256=qhmli14odw6DIhWJgQYS2Q0RrSbr8nXNcG48f5yTRms,2080 +pip/utils/setuptools_build.py,sha256=0blfscmNJW_iZ5DcswJeDB_PbtTEjfK9RL1R1WEDW2E,278 +pip/utils/ui.py,sha256=pbDkSAeumZ6jdZcOJ2yAbx8iBgeP2zfpqNnLJK1gskQ,11597 +pip/vcs/__init__.py,sha256=WafFliUTHMmsSISV8PHp1M5EXDNSWyJr78zKaQmPLdY,12374 +pip/vcs/bazaar.py,sha256=tYTwc4b4off8mr0O2o8SiGejqBDJxcbDBMSMd9-ISYc,3803 +pip/vcs/git.py,sha256=5LfWryi78A-2ULjEZJvCTarJ_3l8venwXASlwm8hiug,11197 +pip/vcs/mercurial.py,sha256=xG6rDiwHCRytJEs23SIHBXl_SwQo2jkkdD_6rVVP5h4,3472 +pip/vcs/subversion.py,sha256=GAuX2Sk7IZvJyEzENKcVld_wGBrQ3fpXDlXjapZEYdI,9350 +pip-9.0.1.dist-info/DESCRIPTION.rst,sha256=Va8Wj1XBpTbVQ2Z41mZRJdALEeziiS_ZewWn1H2ecY4,1287 +pip-9.0.1.dist-info/METADATA,sha256=mvs_tLoKAbECXY_6QHiVWQsagSL-1UjolQTpScT8JSk,2529 +pip-9.0.1.dist-info/RECORD,, +pip-9.0.1.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 +pip-9.0.1.dist-info/entry_points.txt,sha256=GWc-Wb9WUKZ1EuVWNz-G0l3BeIpbNJLx0OJbZ61AAV0,68 +pip-9.0.1.dist-info/metadata.json,sha256=aqvkETDy4mHUBob-2Fn5WWlXORi_M2OSfQ2HQCUU_Fk,1565 +pip-9.0.1.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +../../../bin/pip,sha256=l3VXcTqvsjP_1Ppn-RTMdb2WELn9dJQNtrNieFzFzKU,227 +../../../bin/pip2,sha256=l3VXcTqvsjP_1Ppn-RTMdb2WELn9dJQNtrNieFzFzKU,227 +../../../bin/pip2.7,sha256=l3VXcTqvsjP_1Ppn-RTMdb2WELn9dJQNtrNieFzFzKU,227 +pip-9.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pip/_vendor/requests/compat.pyc,, +pip/_vendor/cachecontrol/cache.pyc,, +pip/_vendor/requests/certs.pyc,, +pip/_vendor/distlib/util.pyc,, +pip/_vendor/progress/spinner.pyc,, +pip/_vendor/html5lib/_tokenizer.pyc,, +pip/__init__.pyc,, +pip/_vendor/requests/packages/chardet/latin1prober.pyc,, +pip/_vendor/distlib/_backport/__init__.pyc,, +pip/vcs/bazaar.pyc,, +pip/_vendor/distlib/metadata.pyc,, +pip/compat/__init__.pyc,, +pip/_vendor/webencodings/tests.pyc,, +pip/_vendor/html5lib/treebuilders/__init__.pyc,, +pip/req/req_install.pyc,, +pip/_vendor/html5lib/filters/alphabeticalattributes.pyc,, +pip/_vendor/requests/packages/urllib3/request.pyc,, +pip/_vendor/requests/packages/chardet/escprober.pyc,, +pip/_vendor/requests/adapters.pyc,, +pip/_vendor/requests/packages/chardet/langbulgarianmodel.pyc,, +pip/commands/completion.pyc,, +pip/_vendor/html5lib/html5parser.pyc,, +pip/_vendor/html5lib/filters/lint.pyc,, +pip/pep425tags.pyc,, +pip/_vendor/packaging/__init__.pyc,, +pip/_vendor/lockfile/linklockfile.pyc,, +pip/_vendor/requests/packages/chardet/__init__.pyc,, +pip/_vendor/packaging/utils.pyc,, +pip/_vendor/html5lib/filters/whitespace.pyc,, +pip/_vendor/requests/packages/chardet/euckrprober.pyc,, +pip/_vendor/html5lib/treebuilders/etree_lxml.pyc,, +pip/compat/dictconfig.pyc,, +pip/_vendor/distlib/database.pyc,, +pip/_vendor/html5lib/treeadapters/sax.pyc,, +pip/_vendor/requests/packages/chardet/euckrfreq.pyc,, +pip/_vendor/requests/auth.pyc,, +pip/_vendor/packaging/__about__.pyc,, +pip/_vendor/progress/__init__.pyc,, +pip/_vendor/cachecontrol/_cmd.pyc,, +pip/_vendor/webencodings/__init__.pyc,, +pip/commands/list.pyc,, +pip/_vendor/distlib/scripts.pyc,, +pip/_vendor/html5lib/filters/sanitizer.pyc,, +pip/utils/packaging.pyc,, +pip/vcs/git.pyc,, +pip/cmdoptions.pyc,, +pip/_vendor/lockfile/symlinklockfile.pyc,, +pip/commands/hash.pyc,, +pip/commands/check.pyc,, +pip/_vendor/requests/packages/urllib3/util/ssl_.pyc,, +pip/_vendor/html5lib/_trie/_base.pyc,, +pip/_vendor/html5lib/filters/base.pyc,, +pip/_vendor/requests/packages/urllib3/poolmanager.pyc,, +pip/req/req_set.pyc,, +pip/req/__init__.pyc,, +pip/_vendor/ordereddict.pyc,, +pip/_vendor/colorama/win32.pyc,, +pip/_vendor/distlib/resources.pyc,, +pip/_vendor/requests/packages/chardet/hebrewprober.pyc,, +pip/_vendor/requests/cookies.pyc,, +pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.pyc,, +pip/_vendor/lockfile/__init__.pyc,, +pip/_vendor/requests/packages/urllib3/packages/six.pyc,, +pip/_vendor/progress/helpers.pyc,, +pip/_vendor/ipaddress.pyc,, +pip/operations/__init__.pyc,, +pip/_vendor/pyparsing.pyc,, +pip/_vendor/html5lib/__init__.pyc,, +pip/_vendor/requests/packages/chardet/charsetgroupprober.pyc,, +pip/_vendor/cachecontrol/serialize.pyc,, +pip/_vendor/requests/packages/urllib3/packages/__init__.pyc,, +pip/_vendor/distlib/_backport/misc.pyc,, +pip/_vendor/requests/packages/chardet/codingstatemachine.pyc,, +pip/_vendor/requests/packages/urllib3/util/url.pyc,, +pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.pyc,, +pip/_vendor/cachecontrol/controller.pyc,, +pip/utils/deprecation.pyc,, +pip/_vendor/distlib/_backport/sysconfig.pyc,, +pip/_vendor/requests/packages/chardet/langgreekmodel.pyc,, +pip/_vendor/requests/packages/__init__.pyc,, +pip/commands/show.pyc,, +pip/_vendor/requests/packages/urllib3/util/__init__.pyc,, +pip/_vendor/html5lib/_utils.pyc,, +pip/_vendor/html5lib/_trie/datrie.pyc,, +pip/_vendor/requests/packages/chardet/langcyrillicmodel.pyc,, +pip/_vendor/requests/packages/chardet/jpcntx.pyc,, +pip/_vendor/requests/packages/chardet/constants.pyc,, +pip/_vendor/requests/packages/urllib3/contrib/appengine.pyc,, +pip/_vendor/html5lib/treeadapters/genshi.pyc,, +pip/commands/help.pyc,, +pip/_vendor/requests/utils.pyc,, +pip/_vendor/colorama/__init__.pyc,, +pip/_vendor/packaging/_compat.pyc,, +pip/_vendor/distlib/version.pyc,, +pip/utils/ui.pyc,, +pip/commands/uninstall.pyc,, +pip/_vendor/distlib/index.pyc,, +pip/_vendor/cachecontrol/heuristics.pyc,, +pip/_vendor/requests/sessions.pyc,, +pip/_vendor/requests/packages/chardet/big5prober.pyc,, +pip/_vendor/requests/packages/chardet/euctwprober.pyc,, +pip/_vendor/requests/packages/chardet/langthaimodel.pyc,, +pip/utils/glibc.pyc,, +pip/_vendor/distlib/_backport/tarfile.pyc,, +pip/_vendor/html5lib/treewalkers/etree_lxml.pyc,, +pip/_vendor/requests/packages/urllib3/util/response.pyc,, +pip/_vendor/html5lib/treebuilders/dom.pyc,, +pip/_vendor/html5lib/filters/__init__.pyc,, +pip/baseparser.pyc,, +pip/status_codes.pyc,, +pip/_vendor/distlib/__init__.pyc,, +pip/_vendor/cachecontrol/caches/__init__.pyc,, +pip/_vendor/pkg_resources/__init__.pyc,, +pip/commands/search.pyc,, +pip/_vendor/html5lib/_ihatexml.pyc,, +pip/_vendor/requests/packages/chardet/langhungarianmodel.pyc,, +pip/_vendor/requests/structures.pyc,, +pip/_vendor/packaging/version.pyc,, +pip/_vendor/cachecontrol/adapter.pyc,, +pip/_vendor/requests/packages/urllib3/fields.pyc,, +pip/_vendor/requests/packages/urllib3/contrib/ntlmpool.pyc,, +pip/vcs/__init__.pyc,, +pip/req/req_file.pyc,, +pip/models/__init__.pyc,, +pip/_vendor/packaging/specifiers.pyc,, +pip/_vendor/requests/packages/chardet/gb2312freq.pyc,, +pip/_vendor/html5lib/treewalkers/genshi.pyc,, +pip/commands/__init__.pyc,, +pip/_vendor/requests/packages/urllib3/__init__.pyc,, +pip/_vendor/html5lib/treebuilders/base.pyc,, +pip/_vendor/distlib/compat.pyc,, +pip/models/index.pyc,, +pip/_vendor/lockfile/mkdirlockfile.pyc,, +pip/_vendor/distlib/wheel.pyc,, +pip/utils/build.pyc,, +pip/_vendor/requests/packages/chardet/escsm.pyc,, +pip/_vendor/html5lib/treewalkers/__init__.pyc,, +pip/_vendor/requests/status_codes.pyc,, +pip/_vendor/requests/exceptions.pyc,, +pip/_vendor/appdirs.pyc,, +pip/_vendor/distlib/markers.pyc,, +pip/index.pyc,, +pip/utils/logging.pyc,, +pip/_vendor/packaging/requirements.pyc,, +pip/_vendor/requests/packages/chardet/cp949prober.pyc,, +pip/utils/outdated.pyc,, +pip/_vendor/requests/api.pyc,, +pip/_vendor/requests/packages/urllib3/filepost.pyc,, +pip/_vendor/requests/packages/chardet/big5freq.pyc,, +pip/_vendor/requests/packages/urllib3/exceptions.pyc,, +pip/_vendor/html5lib/treebuilders/etree.pyc,, +pip/_vendor/cachecontrol/caches/file_cache.pyc,, +pip/_vendor/requests/packages/chardet/mbcsgroupprober.pyc,, +pip/_vendor/requests/packages/chardet/mbcssm.pyc,, +pip/_vendor/distlib/_backport/shutil.pyc,, +pip/utils/encoding.pyc,, +pip/__main__.pyc,, +pip/_vendor/cachecontrol/compat.pyc,, +pip/download.pyc,, +pip/operations/freeze.pyc,, +pip/_vendor/requests/models.pyc,, +pip/_vendor/lockfile/sqlitelockfile.pyc,, +pip/_vendor/requests/packages/chardet/utf8prober.pyc,, +pip/_vendor/requests/packages/chardet/langhebrewmodel.pyc,, +pip/_vendor/requests/packages/chardet/compat.pyc,, +pip/_vendor/progress/counter.pyc,, +pip/commands/install.pyc,, +pip/utils/filesystem.pyc,, +pip/_vendor/six.pyc,, +pip/_vendor/colorama/initialise.pyc,, +pip/_vendor/requests/packages/urllib3/packages/ordered_dict.pyc,, +pip/_vendor/requests/packages/chardet/eucjpprober.pyc,, +pip/_vendor/retrying.pyc,, +pip/utils/hashes.pyc,, +pip/_vendor/html5lib/treewalkers/etree.pyc,, +pip/_vendor/cachecontrol/wrapper.pyc,, +pip/_vendor/requests/hooks.pyc,, +pip/_vendor/packaging/_structures.pyc,, +pip/_vendor/requests/packages/urllib3/connectionpool.pyc,, +pip/_vendor/requests/packages/chardet/mbcharsetprober.pyc,, +pip/locations.pyc,, +pip/_vendor/html5lib/_inputstream.pyc,, +pip/_vendor/requests/packages/chardet/jisfreq.pyc,, +pip/utils/setuptools_build.pyc,, +pip/_vendor/requests/packages/chardet/sbcsgroupprober.pyc,, +pip/vcs/subversion.pyc,, +pip/_vendor/requests/packages/urllib3/util/connection.pyc,, +pip/exceptions.pyc,, +pip/basecommand.pyc,, +pip/_vendor/html5lib/_trie/py.pyc,, +pip/_vendor/distlib/locators.pyc,, +pip/_vendor/re-vendor.pyc,, +pip/_vendor/html5lib/treewalkers/dom.pyc,, +pip/_vendor/requests/packages/urllib3/contrib/__init__.pyc,, +pip/_vendor/requests/packages/chardet/euctwfreq.pyc,, +pip/commands/download.pyc,, +pip/_vendor/requests/packages/chardet/chardistribution.pyc,, +pip/_vendor/webencodings/labels.pyc,, +pip/_vendor/webencodings/x_user_defined.pyc,, +pip/req/req_uninstall.pyc,, +pip/_vendor/html5lib/serializer.pyc,, +pip/commands/wheel.pyc,, +pip/_vendor/requests/packages/chardet/sbcharsetprober.pyc,, +pip/_vendor/colorama/ansitowin32.pyc,, +pip/commands/freeze.pyc,, +pip/_vendor/cachecontrol/filewrapper.pyc,, +pip/_vendor/requests/packages/chardet/sjisprober.pyc,, +pip/_vendor/html5lib/_trie/__init__.pyc,, +pip/_vendor/requests/packages/urllib3/util/timeout.pyc,, +pip/utils/__init__.pyc,, +pip/_vendor/requests/packages/urllib3/_collections.pyc,, +pip/_vendor/webencodings/mklabels.pyc,, +pip/_vendor/html5lib/treewalkers/base.pyc,, +pip/_vendor/requests/packages/urllib3/util/request.pyc,, +pip/_vendor/distlib/manifest.pyc,, +pip/_vendor/requests/packages/urllib3/response.pyc,, +pip/_vendor/html5lib/treeadapters/__init__.pyc,, +pip/_vendor/cachecontrol/caches/redis_cache.pyc,, +pip/_vendor/html5lib/filters/inject_meta_charset.pyc,, +pip/_vendor/requests/packages/chardet/charsetprober.pyc,, +pip/_vendor/requests/packages/urllib3/util/retry.pyc,, +pip/vcs/mercurial.pyc,, +pip/_vendor/cachecontrol/__init__.pyc,, +pip/_vendor/__init__.pyc,, +pip/_vendor/requests/packages/chardet/universaldetector.pyc,, +pip/_vendor/html5lib/constants.pyc,, +pip/_vendor/colorama/ansi.pyc,, +pip/_vendor/packaging/markers.pyc,, +pip/_vendor/requests/packages/chardet/gb2312prober.pyc,, +pip/_vendor/distro.pyc,, +pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.pyc,, +pip/_vendor/progress/bar.pyc,, +pip/wheel.pyc,, +pip/_vendor/lockfile/pidlockfile.pyc,, +pip/_vendor/requests/packages/urllib3/contrib/socks.pyc,, +pip/_vendor/requests/__init__.pyc,, +pip/_vendor/requests/packages/chardet/chardetect.pyc,, +pip/_vendor/html5lib/filters/optionaltags.pyc,, +pip/_vendor/requests/packages/urllib3/connection.pyc,, +pip/utils/appdirs.pyc,, +pip/_vendor/colorama/winterm.pyc,, +pip/operations/check.pyc,, diff --git a/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/WHEEL b/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/WHEEL new file mode 100644 index 0000000..8b6dd1b --- /dev/null +++ b/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.29.0) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/entry_points.txt b/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/entry_points.txt new file mode 100644 index 0000000..c02a8d5 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/entry_points.txt @@ -0,0 +1,5 @@ +[console_scripts] +pip = pip:main +pip3 = pip:main +pip3.5 = pip:main + diff --git a/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/metadata.json b/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/metadata.json new file mode 100644 index 0000000..9eae02c --- /dev/null +++ b/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/metadata.json @@ -0,0 +1 @@ +{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Topic :: Software Development :: Build Tools", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: PyPy"], "extensions": {"python.commands": {"wrap_console": {"pip": "pip:main", "pip3": "pip:main", "pip3.5": "pip:main"}}, "python.details": {"contacts": [{"email": "python-virtualenv@groups.google.com", "name": "The pip developers", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://pip.pypa.io/"}}, "python.exports": {"console_scripts": {"pip": "pip:main", "pip3": "pip:main", "pip3.5": "pip:main"}}}, "extras": ["testing"], "generator": "bdist_wheel (0.29.0)", "keywords": ["easy_install", "distutils", "setuptools", "egg", "virtualenv"], "license": "MIT", "metadata_version": "2.0", "name": "pip", "requires_python": ">=2.6,!=3.0.*,!=3.1.*,!=3.2.*", "run_requires": [{"extra": "testing", "requires": ["mock", "pretend", "pytest", "scripttest (>=1.3)", "virtualenv (>=1.10)"]}], "summary": "The PyPA recommended tool for installing Python packages.", "test_requires": [{"requires": ["mock", "pretend", "pytest", "scripttest (>=1.3)", "virtualenv (>=1.10)"]}], "version": "9.0.1"} \ No newline at end of file diff --git a/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/top_level.txt b/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/top_level.txt new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/top_level.txt @@ -0,0 +1 @@ +pip diff --git a/env/lib/python2.7/site-packages/pip/__init__.py b/env/lib/python2.7/site-packages/pip/__init__.py new file mode 100644 index 0000000..9c1d8f9 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/__init__.py @@ -0,0 +1,331 @@ +#!/usr/bin/env python +from __future__ import absolute_import + +import locale +import logging +import os +import optparse +import warnings + +import sys +import re + +# 2016-06-17 barry@debian.org: urllib3 1.14 added optional support for socks, +# but if invoked (i.e. imported), it will issue a warning to stderr if socks +# isn't available. requests unconditionally imports urllib3's socks contrib +# module, triggering this warning. The warning breaks DEP-8 tests (because of +# the stderr output) and is just plain annoying in normal usage. I don't want +# to add socks as yet another dependency for pip, nor do I want to allow-stder +# in the DEP-8 tests, so just suppress the warning. pdb tells me this has to +# be done before the import of pip.vcs. +from pip._vendor.requests.packages.urllib3.exceptions import DependencyWarning +warnings.filterwarnings("ignore", category=DependencyWarning) # noqa + + +from pip.exceptions import InstallationError, CommandError, PipError +from pip.utils import get_installed_distributions, get_prog +from pip.utils import deprecation, dist_is_editable +from pip.vcs import git, mercurial, subversion, bazaar # noqa +from pip.baseparser import ConfigOptionParser, UpdatingDefaultsHelpFormatter +from pip.commands import get_summaries, get_similar_commands +from pip.commands import commands_dict +from pip._vendor.requests.packages.urllib3.exceptions import ( + InsecureRequestWarning, +) + + +# assignment for flake8 to be happy + +# This fixes a peculiarity when importing via __import__ - as we are +# initialising the pip module, "from pip import cmdoptions" is recursive +# and appears not to work properly in that situation. +import pip.cmdoptions +cmdoptions = pip.cmdoptions + +# The version as used in the setup.py and the docs conf.py +__version__ = "9.0.1" + + +logger = logging.getLogger(__name__) + +# Hide the InsecureRequestWarning from urllib3 +warnings.filterwarnings("ignore", category=InsecureRequestWarning) + + +def autocomplete(): + """Command and option completion for the main option parser (and options) + and its subcommands (and options). + + Enable by sourcing one of the completion shell scripts (bash, zsh or fish). + """ + # Don't complete if user hasn't sourced bash_completion file. + if 'PIP_AUTO_COMPLETE' not in os.environ: + return + cwords = os.environ['COMP_WORDS'].split()[1:] + cword = int(os.environ['COMP_CWORD']) + try: + current = cwords[cword - 1] + except IndexError: + current = '' + + subcommands = [cmd for cmd, summary in get_summaries()] + options = [] + # subcommand + try: + subcommand_name = [w for w in cwords if w in subcommands][0] + except IndexError: + subcommand_name = None + + parser = create_main_parser() + # subcommand options + if subcommand_name: + # special case: 'help' subcommand has no options + if subcommand_name == 'help': + sys.exit(1) + # special case: list locally installed dists for uninstall command + if subcommand_name == 'uninstall' and not current.startswith('-'): + installed = [] + lc = current.lower() + for dist in get_installed_distributions(local_only=True): + if dist.key.startswith(lc) and dist.key not in cwords[1:]: + installed.append(dist.key) + # if there are no dists installed, fall back to option completion + if installed: + for dist in installed: + print(dist) + sys.exit(1) + + subcommand = commands_dict[subcommand_name]() + options += [(opt.get_opt_string(), opt.nargs) + for opt in subcommand.parser.option_list_all + if opt.help != optparse.SUPPRESS_HELP] + + # filter out previously specified options from available options + prev_opts = [x.split('=')[0] for x in cwords[1:cword - 1]] + options = [(x, v) for (x, v) in options if x not in prev_opts] + # filter options by current input + options = [(k, v) for k, v in options if k.startswith(current)] + for option in options: + opt_label = option[0] + # append '=' to options which require args + if option[1]: + opt_label += '=' + print(opt_label) + else: + # show main parser options only when necessary + if current.startswith('-') or current.startswith('--'): + opts = [i.option_list for i in parser.option_groups] + opts.append(parser.option_list) + opts = (o for it in opts for o in it) + + subcommands += [i.get_opt_string() for i in opts + if i.help != optparse.SUPPRESS_HELP] + + print(' '.join([x for x in subcommands if x.startswith(current)])) + sys.exit(1) + + +def create_main_parser(): + parser_kw = { + 'usage': '\n%prog [options]', + 'add_help_option': False, + 'formatter': UpdatingDefaultsHelpFormatter(), + 'name': 'global', + 'prog': get_prog(), + } + + parser = ConfigOptionParser(**parser_kw) + parser.disable_interspersed_args() + + pip_pkg_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + parser.version = 'pip %s from %s (python %s)' % ( + __version__, pip_pkg_dir, sys.version[:3]) + + # add the general options + gen_opts = cmdoptions.make_option_group(cmdoptions.general_group, parser) + parser.add_option_group(gen_opts) + + parser.main = True # so the help formatter knows + + # create command listing for description + command_summaries = get_summaries() + description = [''] + ['%-27s %s' % (i, j) for i, j in command_summaries] + parser.description = '\n'.join(description) + + return parser + + +def parseopts(args): + parser = create_main_parser() + + # Note: parser calls disable_interspersed_args(), so the result of this + # call is to split the initial args into the general options before the + # subcommand and everything else. + # For example: + # args: ['--timeout=5', 'install', '--user', 'INITools'] + # general_options: ['--timeout==5'] + # args_else: ['install', '--user', 'INITools'] + general_options, args_else = parser.parse_args(args) + + # --version + if general_options.version: + sys.stdout.write(parser.version) + sys.stdout.write(os.linesep) + sys.exit() + + # pip || pip help -> print_help() + if not args_else or (args_else[0] == 'help' and len(args_else) == 1): + parser.print_help() + sys.exit() + + # the subcommand name + cmd_name = args_else[0] + + if cmd_name not in commands_dict: + guess = get_similar_commands(cmd_name) + + msg = ['unknown command "%s"' % cmd_name] + if guess: + msg.append('maybe you meant "%s"' % guess) + + raise CommandError(' - '.join(msg)) + + # all the args without the subcommand + cmd_args = args[:] + cmd_args.remove(cmd_name) + + return cmd_name, cmd_args + + +def check_isolated(args): + isolated = False + + if "--isolated" in args: + isolated = True + + return isolated + + +def main(args=None): + if args is None: + args = sys.argv[1:] + + # Configure our deprecation warnings to be sent through loggers + deprecation.install_warning_logger() + + autocomplete() + + try: + cmd_name, cmd_args = parseopts(args) + except PipError as exc: + sys.stderr.write("ERROR: %s" % exc) + sys.stderr.write(os.linesep) + sys.exit(1) + + # Needed for locale.getpreferredencoding(False) to work + # in pip.utils.encoding.auto_decode + try: + locale.setlocale(locale.LC_ALL, '') + except locale.Error as e: + # setlocale can apparently crash if locale are uninitialized + logger.debug("Ignoring error %s when setting locale", e) + command = commands_dict[cmd_name](isolated=check_isolated(cmd_args)) + return command.main(cmd_args) + + +# ########################################################### +# # Writing freeze files + +class FrozenRequirement(object): + + def __init__(self, name, req, editable, comments=()): + self.name = name + self.req = req + self.editable = editable + self.comments = comments + + _rev_re = re.compile(r'-r(\d+)$') + _date_re = re.compile(r'-(20\d\d\d\d\d\d)$') + + @classmethod + def from_dist(cls, dist, dependency_links): + location = os.path.normcase(os.path.abspath(dist.location)) + comments = [] + from pip.vcs import vcs, get_src_requirement + if dist_is_editable(dist) and vcs.get_backend_name(location): + editable = True + try: + req = get_src_requirement(dist, location) + except InstallationError as exc: + logger.warning( + "Error when trying to get requirement for VCS system %s, " + "falling back to uneditable format", exc + ) + req = None + if req is None: + logger.warning( + 'Could not determine repository location of %s', location + ) + comments.append( + '## !! Could not determine repository location' + ) + req = dist.as_requirement() + editable = False + else: + editable = False + req = dist.as_requirement() + specs = req.specs + assert len(specs) == 1 and specs[0][0] in ["==", "==="], \ + 'Expected 1 spec with == or ===; specs = %r; dist = %r' % \ + (specs, dist) + version = specs[0][1] + ver_match = cls._rev_re.search(version) + date_match = cls._date_re.search(version) + if ver_match or date_match: + svn_backend = vcs.get_backend('svn') + if svn_backend: + svn_location = svn_backend().get_location( + dist, + dependency_links, + ) + if not svn_location: + logger.warning( + 'Warning: cannot find svn location for %s', req) + comments.append( + '## FIXME: could not find svn URL in dependency_links ' + 'for this package:' + ) + else: + comments.append( + '# Installing as editable to satisfy requirement %s:' % + req + ) + if ver_match: + rev = ver_match.group(1) + else: + rev = '{%s}' % date_match.group(1) + editable = True + req = '%s@%s#egg=%s' % ( + svn_location, + rev, + cls.egg_name(dist) + ) + return cls(dist.project_name, req, editable, comments) + + @staticmethod + def egg_name(dist): + name = dist.egg_name() + match = re.search(r'-py\d\.\d$', name) + if match: + name = name[:match.start()] + return name + + def __str__(self): + req = self.req + if self.editable: + req = '-e %s' % req + return '\n'.join(list(self.comments) + [str(req)]) + '\n' + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/env/lib/python2.7/site-packages/pip/__init__.pyc b/env/lib/python2.7/site-packages/pip/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..64958564fb5b9a6daa0926b62f2cb90c43225594 GIT binary patch literal 9163 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 XoA9Q+^8NC;^6TaD*tywnj5+@eyh)9m literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/__main__.py b/env/lib/python2.7/site-packages/pip/__main__.py new file mode 100644 index 0000000..5556539 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/__main__.py @@ -0,0 +1,19 @@ +from __future__ import absolute_import + +import os +import sys + +# If we are running from a wheel, add the wheel to sys.path +# This allows the usage python pip-*.whl/pip install pip-*.whl +if __package__ == '': + # __file__ is pip-*.whl/pip/__main__.py + # first dirname call strips of '/__main__.py', second strips off '/pip' + # Resulting path is the name of the wheel itself + # Add that to sys.path so we can import pip + path = os.path.dirname(os.path.dirname(__file__)) + sys.path.insert(0, path) + +import pip # noqa + +if __name__ == '__main__': + sys.exit(pip.main()) diff --git a/env/lib/python2.7/site-packages/pip/__main__.pyc b/env/lib/python2.7/site-packages/pip/__main__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..172f40641cdc760e11ebadb34459388b9a4b9c4d GIT binary patch literal 477 zcmYjN%TB{E5F9&6pQ-4HBj<1^{ecSgz_~)@L@rj^xYTW4iZ>EH_a8X$1NmrKCDbCB~CD1cHR6%a0$C?rzpIgSIQ0d$Bwz)_;z zLrWYY9D4tPKF-3;G=dI1J8H9Q z*E7732nM=h$TqevI?~FNP2JLp98CiTrOM1yN+lCl8TrbtqpsCTtvLfphT4*Qy**hP z^R85rZI9UtYbfNr$!Je~4sz30S*b71J5xACj|o#*-I6zHOmpF#^x~jj4S6efn}i$i z2lkfJIhDAEj-8mg)btrIS{ucNMB2DO6MuN`+chNTb;qC+oyBp4y(0 zsO?p_=P`H?xZojp1nzhNK6`de5p*}AyE~rG_IJ*)kIy;Y=+EWeANPO$E~oKl4(|sK zh|Jd=qJn6EmQm3m$*AnmphL{{Ba#sfB0mQ_M}zqZ?$V%3e1Qgw#OG;eiFSGuaD@0# zI$-WMSf*l*euRNz#1~0_+2IlGL=)z5;vme^LC2AK*XcRizWV$a63HY3%@A|CQMSDv7G5sR{HY&MiU&Z;6FQ&c7Q z!Rs}3ky((ioEKah0kL>Xt1@nCV>Qppq$jXH>N7O@;+p#%-yFnKWKRs@%aN7=Gj(yRJ3d8=-IZji;BYXmIwPu1zh4^}~i+*wTG>2Hr}` zb7t)_#@aaKg72TfGm} zen#`>4M@h@nRJrYJOoxC{IAjRLO(Uvrp+cPyd`;VUCx>-Q>pNAHD(&SHRK++ySr~I^21)W-;k>5P z!uhRE)i$9eN*5fZI4wkOXPjz~K@^*Nhf@zPrAV55l#Z}=m-uG=|4JsVL`h!aV#>T* zuTIy56D_kU+eUIskCsW$P4_Ias75?#&okWa6eg1;UZ1TvtaEze zjn$$cn9H-3x^q0tI;|+VYGwtgw~d for details and usage. +""" +# Dev Notes: +# - MSDN on where to store app data files: +# http://support.microsoft.com/default.aspx?scid=kb;en-us;310294#XSLTH3194121123120121120120 +# - macOS: http://developer.apple.com/documentation/MacOSX/Conceptual/BPFileSystem/index.html +# - XDG spec for Un*x: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html + +__version_info__ = (1, 4, 0) +__version__ = '.'.join(map(str, __version_info__)) + + +import sys +import os + +PY3 = sys.version_info[0] == 3 + +if PY3: + unicode = str + +if sys.platform.startswith('java'): + import platform + os_name = platform.java_ver()[3][0] + if os_name.startswith('Windows'): # "Windows XP", "Windows 7", etc. + system = 'win32' + elif os_name.startswith('Mac'): # "macOS", etc. + system = 'darwin' + else: # "Linux", "SunOS", "FreeBSD", etc. + # Setting this to "linux2" is not ideal, but only Windows or Mac + # are actually checked for and the rest of the module expects + # *sys.platform* style strings. + system = 'linux2' +else: + system = sys.platform + + + +def user_data_dir(appname=None, appauthor=None, version=None, roaming=False): + r"""Return full path to the user-specific data dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "roaming" (boolean, default False) can be set True to use the Windows + roaming appdata directory. That means that for users on a Windows + network setup for roaming profiles, this user data will be + sync'd on login. See + + for a discussion of issues. + + Typical user data directories are: + macOS: ~/Library/Application Support/ + Unix: ~/.local/share/ # or in $XDG_DATA_HOME, if defined + Win XP (not roaming): C:\Documents and Settings\\Application Data\\ + Win XP (roaming): C:\Documents and Settings\\Local Settings\Application Data\\ + Win 7 (not roaming): C:\Users\\AppData\Local\\ + Win 7 (roaming): C:\Users\\AppData\Roaming\\ + + For Unix, we follow the XDG spec and support $XDG_DATA_HOME. + That means, by default "~/.local/share/". + """ + if system == "win32": + if appauthor is None: + appauthor = appname + const = roaming and "CSIDL_APPDATA" or "CSIDL_LOCAL_APPDATA" + path = os.path.normpath(_get_win_folder(const)) + if appname: + if appauthor is not False: + path = os.path.join(path, appauthor, appname) + else: + path = os.path.join(path, appname) + elif system == 'darwin': + path = os.path.expanduser('~/Library/Application Support/') + if appname: + path = os.path.join(path, appname) + else: + path = os.getenv('XDG_DATA_HOME', os.path.expanduser("~/.local/share")) + if appname: + path = os.path.join(path, appname) + if appname and version: + path = os.path.join(path, version) + return path + + +def site_data_dir(appname=None, appauthor=None, version=None, multipath=False): + """Return full path to the user-shared data dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "multipath" is an optional parameter only applicable to *nix + which indicates that the entire list of data dirs should be + returned. By default, the first item from XDG_DATA_DIRS is + returned, or '/usr/local/share/', + if XDG_DATA_DIRS is not set + + Typical user data directories are: + macOS: /Library/Application Support/ + Unix: /usr/local/share/ or /usr/share/ + Win XP: C:\Documents and Settings\All Users\Application Data\\ + Vista: (Fail! "C:\ProgramData" is a hidden *system* directory on Vista.) + Win 7: C:\ProgramData\\ # Hidden, but writeable on Win 7. + + For Unix, this is using the $XDG_DATA_DIRS[0] default. + + WARNING: Do not use this on Windows. See the Vista-Fail note above for why. + """ + if system == "win32": + if appauthor is None: + appauthor = appname + path = os.path.normpath(_get_win_folder("CSIDL_COMMON_APPDATA")) + if appname: + if appauthor is not False: + path = os.path.join(path, appauthor, appname) + else: + path = os.path.join(path, appname) + elif system == 'darwin': + path = os.path.expanduser('/Library/Application Support') + if appname: + path = os.path.join(path, appname) + else: + # XDG default for $XDG_DATA_DIRS + # only first, if multipath is False + path = os.getenv('XDG_DATA_DIRS', + os.pathsep.join(['/usr/local/share', '/usr/share'])) + pathlist = [os.path.expanduser(x.rstrip(os.sep)) for x in path.split(os.pathsep)] + if appname: + if version: + appname = os.path.join(appname, version) + pathlist = [os.sep.join([x, appname]) for x in pathlist] + + if multipath: + path = os.pathsep.join(pathlist) + else: + path = pathlist[0] + return path + + if appname and version: + path = os.path.join(path, version) + return path + + +def user_config_dir(appname=None, appauthor=None, version=None, roaming=False): + r"""Return full path to the user-specific config dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "roaming" (boolean, default False) can be set True to use the Windows + roaming appdata directory. That means that for users on a Windows + network setup for roaming profiles, this user data will be + sync'd on login. See + + for a discussion of issues. + + Typical user data directories are: + macOS: same as user_data_dir + Unix: ~/.config/ # or in $XDG_CONFIG_HOME, if defined + Win *: same as user_data_dir + + For Unix, we follow the XDG spec and support $XDG_CONFIG_HOME. + That means, by deafult "~/.config/". + """ + if system in ["win32", "darwin"]: + path = user_data_dir(appname, appauthor, None, roaming) + else: + path = os.getenv('XDG_CONFIG_HOME', os.path.expanduser("~/.config")) + if appname: + path = os.path.join(path, appname) + if appname and version: + path = os.path.join(path, version) + return path + + +def site_config_dir(appname=None, appauthor=None, version=None, multipath=False): + """Return full path to the user-shared data dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "multipath" is an optional parameter only applicable to *nix + which indicates that the entire list of config dirs should be + returned. By default, the first item from XDG_CONFIG_DIRS is + returned, or '/etc/xdg/', if XDG_CONFIG_DIRS is not set + + Typical user data directories are: + macOS: same as site_data_dir + Unix: /etc/xdg/ or $XDG_CONFIG_DIRS[i]/ for each value in + $XDG_CONFIG_DIRS + Win *: same as site_data_dir + Vista: (Fail! "C:\ProgramData" is a hidden *system* directory on Vista.) + + For Unix, this is using the $XDG_CONFIG_DIRS[0] default, if multipath=False + + WARNING: Do not use this on Windows. See the Vista-Fail note above for why. + """ + if system in ["win32", "darwin"]: + path = site_data_dir(appname, appauthor) + if appname and version: + path = os.path.join(path, version) + else: + # XDG default for $XDG_CONFIG_DIRS + # only first, if multipath is False + path = os.getenv('XDG_CONFIG_DIRS', '/etc/xdg') + pathlist = [os.path.expanduser(x.rstrip(os.sep)) for x in path.split(os.pathsep)] + if appname: + if version: + appname = os.path.join(appname, version) + pathlist = [os.sep.join([x, appname]) for x in pathlist] + + if multipath: + path = os.pathsep.join(pathlist) + else: + path = pathlist[0] + return path + + +def user_cache_dir(appname=None, appauthor=None, version=None, opinion=True): + r"""Return full path to the user-specific cache dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "opinion" (boolean) can be False to disable the appending of + "Cache" to the base app data dir for Windows. See + discussion below. + + Typical user cache directories are: + macOS: ~/Library/Caches/ + Unix: ~/.cache/ (XDG default) + Win XP: C:\Documents and Settings\\Local Settings\Application Data\\\Cache + Vista: C:\Users\\AppData\Local\\\Cache + + On Windows the only suggestion in the MSDN docs is that local settings go in + the `CSIDL_LOCAL_APPDATA` directory. This is identical to the non-roaming + app data dir (the default returned by `user_data_dir` above). Apps typically + put cache data somewhere *under* the given dir here. Some examples: + ...\Mozilla\Firefox\Profiles\\Cache + ...\Acme\SuperApp\Cache\1.0 + OPINION: This function appends "Cache" to the `CSIDL_LOCAL_APPDATA` value. + This can be disabled with the `opinion=False` option. + """ + if system == "win32": + if appauthor is None: + appauthor = appname + path = os.path.normpath(_get_win_folder("CSIDL_LOCAL_APPDATA")) + if appname: + if appauthor is not False: + path = os.path.join(path, appauthor, appname) + else: + path = os.path.join(path, appname) + if opinion: + path = os.path.join(path, "Cache") + elif system == 'darwin': + path = os.path.expanduser('~/Library/Caches') + if appname: + path = os.path.join(path, appname) + else: + path = os.getenv('XDG_CACHE_HOME', os.path.expanduser('~/.cache')) + if appname: + path = os.path.join(path, appname) + if appname and version: + path = os.path.join(path, version) + return path + + +def user_log_dir(appname=None, appauthor=None, version=None, opinion=True): + r"""Return full path to the user-specific log dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "opinion" (boolean) can be False to disable the appending of + "Logs" to the base app data dir for Windows, and "log" to the + base cache dir for Unix. See discussion below. + + Typical user cache directories are: + macOS: ~/Library/Logs/ + Unix: ~/.cache//log # or under $XDG_CACHE_HOME if defined + Win XP: C:\Documents and Settings\\Local Settings\Application Data\\\Logs + Vista: C:\Users\\AppData\Local\\\Logs + + On Windows the only suggestion in the MSDN docs is that local settings + go in the `CSIDL_LOCAL_APPDATA` directory. (Note: I'm interested in + examples of what some windows apps use for a logs dir.) + + OPINION: This function appends "Logs" to the `CSIDL_LOCAL_APPDATA` + value for Windows and appends "log" to the user cache dir for Unix. + This can be disabled with the `opinion=False` option. + """ + if system == "darwin": + path = os.path.join( + os.path.expanduser('~/Library/Logs'), + appname) + elif system == "win32": + path = user_data_dir(appname, appauthor, version) + version = False + if opinion: + path = os.path.join(path, "Logs") + else: + path = user_cache_dir(appname, appauthor, version) + version = False + if opinion: + path = os.path.join(path, "log") + if appname and version: + path = os.path.join(path, version) + return path + + +class AppDirs(object): + """Convenience wrapper for getting application dirs.""" + def __init__(self, appname, appauthor=None, version=None, roaming=False, + multipath=False): + self.appname = appname + self.appauthor = appauthor + self.version = version + self.roaming = roaming + self.multipath = multipath + + @property + def user_data_dir(self): + return user_data_dir(self.appname, self.appauthor, + version=self.version, roaming=self.roaming) + + @property + def site_data_dir(self): + return site_data_dir(self.appname, self.appauthor, + version=self.version, multipath=self.multipath) + + @property + def user_config_dir(self): + return user_config_dir(self.appname, self.appauthor, + version=self.version, roaming=self.roaming) + + @property + def site_config_dir(self): + return site_config_dir(self.appname, self.appauthor, + version=self.version, multipath=self.multipath) + + @property + def user_cache_dir(self): + return user_cache_dir(self.appname, self.appauthor, + version=self.version) + + @property + def user_log_dir(self): + return user_log_dir(self.appname, self.appauthor, + version=self.version) + + +#---- internal support stuff + +def _get_win_folder_from_registry(csidl_name): + """This is a fallback technique at best. I'm not sure if using the + registry for this guarantees us the correct answer for all CSIDL_* + names. + """ + import _winreg + + shell_folder_name = { + "CSIDL_APPDATA": "AppData", + "CSIDL_COMMON_APPDATA": "Common AppData", + "CSIDL_LOCAL_APPDATA": "Local AppData", + }[csidl_name] + + key = _winreg.OpenKey( + _winreg.HKEY_CURRENT_USER, + r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" + ) + dir, type = _winreg.QueryValueEx(key, shell_folder_name) + return dir + + +def _get_win_folder_with_pywin32(csidl_name): + from win32com.shell import shellcon, shell + dir = shell.SHGetFolderPath(0, getattr(shellcon, csidl_name), 0, 0) + # Try to make this a unicode path because SHGetFolderPath does + # not return unicode strings when there is unicode data in the + # path. + try: + dir = unicode(dir) + + # Downgrade to short path name if have highbit chars. See + # . + has_high_char = False + for c in dir: + if ord(c) > 255: + has_high_char = True + break + if has_high_char: + try: + import win32api + dir = win32api.GetShortPathName(dir) + except ImportError: + pass + except UnicodeError: + pass + return dir + + +def _get_win_folder_with_ctypes(csidl_name): + import ctypes + + csidl_const = { + "CSIDL_APPDATA": 26, + "CSIDL_COMMON_APPDATA": 35, + "CSIDL_LOCAL_APPDATA": 28, + }[csidl_name] + + buf = ctypes.create_unicode_buffer(1024) + ctypes.windll.shell32.SHGetFolderPathW(None, csidl_const, None, 0, buf) + + # Downgrade to short path name if have highbit chars. See + # . + has_high_char = False + for c in buf: + if ord(c) > 255: + has_high_char = True + break + if has_high_char: + buf2 = ctypes.create_unicode_buffer(1024) + if ctypes.windll.kernel32.GetShortPathNameW(buf.value, buf2, 1024): + buf = buf2 + + return buf.value + +def _get_win_folder_with_jna(csidl_name): + import array + from com.sun import jna + from com.sun.jna.platform import win32 + + buf_size = win32.WinDef.MAX_PATH * 2 + buf = array.zeros('c', buf_size) + shell = win32.Shell32.INSTANCE + shell.SHGetFolderPath(None, getattr(win32.ShlObj, csidl_name), None, win32.ShlObj.SHGFP_TYPE_CURRENT, buf) + dir = jna.Native.toString(buf.tostring()).rstrip("\0") + + # Downgrade to short path name if have highbit chars. See + # . + has_high_char = False + for c in dir: + if ord(c) > 255: + has_high_char = True + break + if has_high_char: + buf = array.zeros('c', buf_size) + kernel = win32.Kernel32.INSTANCE + if kernal.GetShortPathName(dir, buf, buf_size): + dir = jna.Native.toString(buf.tostring()).rstrip("\0") + + return dir + +if system == "win32": + try: + import win32com.shell + _get_win_folder = _get_win_folder_with_pywin32 + except ImportError: + try: + from ctypes import windll + _get_win_folder = _get_win_folder_with_ctypes + except ImportError: + try: + import com.sun.jna + _get_win_folder = _get_win_folder_with_jna + except ImportError: + _get_win_folder = _get_win_folder_from_registry + + +#---- self test code + +if __name__ == "__main__": + appname = "MyApp" + appauthor = "MyCompany" + + props = ("user_data_dir", "site_data_dir", + "user_config_dir", "site_config_dir", + "user_cache_dir", "user_log_dir") + + print("-- app dirs (with optional 'version')") + dirs = AppDirs(appname, appauthor, version="1.0") + for prop in props: + print("%s: %s" % (prop, getattr(dirs, prop))) + + print("\n-- app dirs (without optional 'version')") + dirs = AppDirs(appname, appauthor) + for prop in props: + print("%s: %s" % (prop, getattr(dirs, prop))) + + print("\n-- app dirs (without optional 'appauthor')") + dirs = AppDirs(appname) + for prop in props: + print("%s: %s" % (prop, getattr(dirs, prop))) + + print("\n-- app dirs (with disabled 'appauthor')") + dirs = AppDirs(appname, appauthor=False) + for prop in props: + print("%s: %s" % (prop, getattr(dirs, prop))) diff --git a/env/lib/python2.7/site-packages/pip/_vendor/appdirs.pyc b/env/lib/python2.7/site-packages/pip/_vendor/appdirs.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4a3b8f997a26803889b2d5051281710d11c9deda GIT binary patch literal 20617 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/__init__.py b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/__init__.py new file mode 100644 index 0000000..ec9da2e --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/__init__.py @@ -0,0 +1,11 @@ +"""CacheControl import Interface. + +Make it easy to import from cachecontrol without long namespaces. +""" +__author__ = 'Eric Larson' +__email__ = 'eric@ionrock.org' +__version__ = '0.11.7' + +from .wrapper import CacheControl +from .adapter import CacheControlAdapter +from .controller import CacheController diff --git a/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/__init__.pyc b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ecf572c75235121d372c48eac5c728b15b1c347d GIT binary patch literal 576 zcmZ8e%TB{E5Zv_L0HP8<;A1Z&aN<%`MTG-WsZcnPi)CU1R_)lbU8;T&KgW$9VBHi^ z)s`naYwzr6)BZV2zb9WW73^0FzcW03fxrPu#01I&cniuF@HUif;2q#yP#w@+D7%nE z-UHPG-G{Q@@II&k=pmFt_#RSjw6IqghPW(_Tnge%b7*P&E@&gr4nvAPNP^Kfl_WNN<&Og z%GPMvA&t|ZRA?p@vgnu6PvJZoL>>z_j#(>QfnlS>nx@6hXO!E|0s9s4w~gb=fACYJ zdC)eu(q6uQ(!%320WGrJ7~l$dD4*Gfz~82dP$Ub5S* IQ8G$?0eG8_X8-^I literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/_cmd.py b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/_cmd.py new file mode 100644 index 0000000..afdcc88 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/_cmd.py @@ -0,0 +1,60 @@ +import logging + +from pip._vendor import requests + +from pip._vendor.cachecontrol.adapter import CacheControlAdapter +from pip._vendor.cachecontrol.cache import DictCache +from pip._vendor.cachecontrol.controller import logger + +from argparse import ArgumentParser + + +def setup_logging(): + logger.setLevel(logging.DEBUG) + handler = logging.StreamHandler() + logger.addHandler(handler) + + +def get_session(): + adapter = CacheControlAdapter( + DictCache(), + cache_etags=True, + serializer=None, + heuristic=None, + ) + sess = requests.Session() + sess.mount('http://', adapter) + sess.mount('https://', adapter) + + sess.cache_controller = adapter.controller + return sess + + +def get_args(): + parser = ArgumentParser() + parser.add_argument('url', help='The URL to try and cache') + return parser.parse_args() + + +def main(args=None): + args = get_args() + sess = get_session() + + # Make a request to get a response + resp = sess.get(args.url) + + # Turn on logging + setup_logging() + + # try setting the cache + sess.cache_controller.cache_response(resp.request, resp.raw) + + # Now try to get it + if sess.cache_controller.cached_request(resp.request): + print('Cached!') + else: + print('Not cached :(') + + +if __name__ == '__main__': + main() diff --git a/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/_cmd.pyc b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/_cmd.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5b3d7353052529ef4fdce096d26456353779617b GIT binary patch literal 2024 zcmb_cO^+Kz5Url^*Lc0GNy66w$IKVg?VzCD z)8n-G;hPfd8-Y*xz6@eu@gB zwf6%m6qNz315%s|sR*g;(YoiyJu3QC4ro2_<31HbDo3;)`SE~?h{`do#~2UkEfzi^ zJrZX^IuhrY_tay0t7v^fW=i^qehjGnmCOm<5~)h6TE!DonE!>(GFEWi2&OeZ9gKC> zM;;=w$TmB(s4Lgj#WS5X&a^%mA$gH+oJ{bc0YXK+-TpJ>J&d2V+e2w8_abYpX$2?V zjd5Dwv8OPOXs^fxv=8Z4kz%jMwchw#pRP#~0Bt2(Eo0s*3HfEN+Zy-Wyf%d!V!$Qj z)zAIb77^;njYMyRNeb&5@tx?^fNxQNbcFWb1nyQHsL>LV|h9L4i z93bKpBLFUehQ?3y0(+}MhNVaQzCfhtTG4($x+f?>THV;A#$&)cz%bl6MN}kVLJ#+1w8B{nEC}N(S@QaRx1IeaY*HHpr!)?W(u4P$R5^L`d zALg6!;awiX@6;Qqhib!6aEbgZIJbxS7Y?uC8!yp7(2)+m30Nt&K$x}KXZc>E=OI$q z5#4qoMk4AGxE9)sfxWz{`i$=7m1anJ-=(N?!QH1HTkiE`?L2&Xb{@yv>&d5VK7tYa zah!x9wT zE0$SaeTjd|okGxN6g~)t;V0n-Y81#ln5H}@P2=}5Az?8{o8zWB>uxFEk27Tc6FifH zcU^bZb((aw`|MpaRb{2YsSxnD ovUvaZYGz$OEo*%!%vY>q%hXMRX@FKovrofl5S>JW$)kz-8znclo&W#< literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/adapter.py b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/adapter.py new file mode 100644 index 0000000..2348856 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/adapter.py @@ -0,0 +1,125 @@ +import types +import functools + +from pip._vendor.requests.adapters import HTTPAdapter + +from .controller import CacheController +from .cache import DictCache +from .filewrapper import CallbackFileWrapper + + +class CacheControlAdapter(HTTPAdapter): + invalidating_methods = set(['PUT', 'DELETE']) + + def __init__(self, cache=None, + cache_etags=True, + controller_class=None, + serializer=None, + heuristic=None, + *args, **kw): + super(CacheControlAdapter, self).__init__(*args, **kw) + self.cache = cache or DictCache() + self.heuristic = heuristic + + controller_factory = controller_class or CacheController + self.controller = controller_factory( + self.cache, + cache_etags=cache_etags, + serializer=serializer, + ) + + def send(self, request, **kw): + """ + Send a request. Use the request information to see if it + exists in the cache and cache the response if we need to and can. + """ + if request.method == 'GET': + cached_response = self.controller.cached_request(request) + if cached_response: + return self.build_response(request, cached_response, + from_cache=True) + + # check for etags and add headers if appropriate + request.headers.update( + self.controller.conditional_headers(request) + ) + + resp = super(CacheControlAdapter, self).send(request, **kw) + + return resp + + def build_response(self, request, response, from_cache=False): + """ + Build a response by making a request or using the cache. + + This will end up calling send and returning a potentially + cached response + """ + if not from_cache and request.method == 'GET': + # Check for any heuristics that might update headers + # before trying to cache. + if self.heuristic: + response = self.heuristic.apply(response) + + # apply any expiration heuristics + if response.status == 304: + # We must have sent an ETag request. This could mean + # that we've been expired already or that we simply + # have an etag. In either case, we want to try and + # update the cache if that is the case. + cached_response = self.controller.update_cached_response( + request, response + ) + + if cached_response is not response: + from_cache = True + + # We are done with the server response, read a + # possible response body (compliant servers will + # not return one, but we cannot be 100% sure) and + # release the connection back to the pool. + response.read(decode_content=False) + response.release_conn() + + response = cached_response + + # We always cache the 301 responses + elif response.status == 301: + self.controller.cache_response(request, response) + else: + # Wrap the response file with a wrapper that will cache the + # response when the stream has been consumed. + response._fp = CallbackFileWrapper( + response._fp, + functools.partial( + self.controller.cache_response, + request, + response, + ) + ) + if response.chunked: + super_update_chunk_length = response._update_chunk_length + + def _update_chunk_length(self): + super_update_chunk_length() + if self.chunk_left == 0: + self._fp._close() + response._update_chunk_length = types.MethodType(_update_chunk_length, response) + + resp = super(CacheControlAdapter, self).build_response( + request, response + ) + + # See if we should invalidate the cache. + if request.method in self.invalidating_methods and resp.ok: + cache_url = self.controller.cache_url(request.url) + self.cache.delete(cache_url) + + # Give the request a from_cache attr to let people use it + resp.from_cache = from_cache + + return resp + + def close(self): + self.cache.close() + super(CacheControlAdapter, self).close() diff --git a/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/adapter.pyc b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/adapter.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b1216df0bbd5ba8ae79876b80c747bafcb12a308 GIT binary patch literal 3474 zcmb_f-EJI76+YEHKOQsQ@g^JZ1_x*%7LAbNtY9y=NDyq2WhKBHmAyi1A+v6wuTyeDN(mVG(tx6gek2eKT>$*_GM zNVz4;k(`Y1JQNqp9D=swwa6=x&rh~_)X{W=V~hXbb2v3vhHqf{)TvL$P zzL{Y4IGdfh$8{B&x-4DOzMzOF#VqK{mULTr%kp_PJO8*S-LIQ$wQ@~p>DMy4Q#Rfh zVBbd={uw3*KNxXQ=a$n*UcnnMeITySx%)=)8g9U2Oygj`+oF43gLx!*Uy0jdkETNi z4RrXk&yE9+dh+y_PmiC@xTFzV7@uPJ=a>S%MlRv4NEVS?4&-tue-Sa4Mpo}r4%~>> zX-_Wuy1*RE>XAV7%PqOYS7gznn=fGlMD$=l#4SUbbTp+ZhwAYe{hGRvo%*m%4dD5# zEPe+UQ>oA=Z4D3F9v?|d)1oRun%d}!L4^bwa^}`e;X^UA8dFM~T?dUEfpWYn=avDt z>Y3fIv8A&z^WO3(JI16tvIYwB!1EX3*4NqR*(}t}#S~Q0$v?vCL0GOHtcunB=j)=( z@7wU~@JUI6j`T}c<#qEwHSaWhkhRD=SY22u{uYL(YBIQMZkbUuHnAC*ftgVcI)>vH z82UX#o?+A%)-5trFAr%nlb@B9ngA&_G_c?-nNtQJ3i?#FNAo;tS zsH-H@iFYn3=1CDY0^DyAM-M*TrhZB?$ZS`wD8H&J$i>DNE~%W$DXL|v4mOe$_&!z&;Ge_Fj>MgkmRy-?T@ zqkmPN9)U+Vf-UL*h4uMJnxz($_-Z3+N6ZTFN{peP5$liv{vi7coZQOp31$EDO7<04 zA=`inHHUm-2|KcQ>wlO~+En3mtZWmZf#BbjKZ*Q7w2}1XE0LFd32)2dmR3O39Bk<> z^j5 zJocpbI3G<}!u{VdZSejP3y$VqmmkkBl4W*YRHxSonbb|P_9QWr6l4e68wtl}g->1- zWtlLG*DElTC7HcuHE4|s>!xZ&uIk{bfT~?yY$UX>1zW4ahHlvhiw^)FO{?6^>fEI) zfD~~b^cf2`2a6oJ{SPqxQG2(dYg6OCug-x#;eTv_-*fgB?mH|niMAQd`q|mKI!{YC z4_XY;`AV}DmA>{)8@Hxl+rsZ+tG1l9&F1uKcXb-hZm7Tm9%y9$NB$`fXH3Nmk%H52 zVP)@d(pJQ3feS@>q5Aufg|%-B*B;(n$zxAt{c4?W-@_{{Sq&k7TDF1;43Rn{=g^#+`dm%Y8ft8DE#bWztZx0jOXk6 zXWu0YolsO?qTi!x0!(RJiQ7h7pX-r|q;%bs8ae!G-&XT;=pLM<6um5H3@tsT_k@l8 zWU$}nMC~jqo&69~TSJL8`#nrI(6(vSk0|OPCK>LbfZmBG{gD~RV>24;n(b&5Pt0B~ zMu8omna5@Vo>4UE?MD+c?(Lg9=5{=aHd#RbKc+-#$YOvm8am*C+X!3&5{pbrQvB1N z!)Xt5>nR39aenRnHxQ4PH+E_HF=X*3;(5539dp?BShkKdt+J&{Q$<9YF6(?<@{#rd ziuQ;2Rg50il~cs(9mw7T-Le8GVl0nn!-mC;DNcQP8_@nYFt?%@f#KhHXY|ha6ScyA z00w&>Qy{`{kvr%vaR*(~_6OYs&RZ~urlnp(+nXlql3sb|__yFi`)`4z`FbI^aicT^ W9=3k|2{GZB?qf5KcB5T`zxcl%&E|3d literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/cache.py b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/cache.py new file mode 100644 index 0000000..7389a73 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/cache.py @@ -0,0 +1,39 @@ +""" +The cache object API for implementing caches. The default is a thread +safe in-memory dictionary. +""" +from threading import Lock + + +class BaseCache(object): + + def get(self, key): + raise NotImplemented() + + def set(self, key, value): + raise NotImplemented() + + def delete(self, key): + raise NotImplemented() + + def close(self): + pass + + +class DictCache(BaseCache): + + def __init__(self, init_dict=None): + self.lock = Lock() + self.data = init_dict or {} + + def get(self, key): + return self.data.get(key, None) + + def set(self, key, value): + with self.lock: + self.data.update({key: value}) + + def delete(self, key): + with self.lock: + if key in self.data: + self.data.pop(key) diff --git a/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/cache.pyc b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/cache.pyc new file mode 100644 index 0000000000000000000000000000000000000000..61a4248eda1dd1a4c62ebe597340d617047e252b GIT binary patch literal 2324 zcmcImO>fgc5S@+F(1w$F|~4rAj?f z?)(h?95;Rdyf@AVZ~@eiWG3UydiTAVedBoFmfBx8zwE~{dU^PM0jplYB_ap#Mv{hP zM*0moXoyKXv7YoW+LTWsmm>QIO-bg&Hg&W$8J&~ln(TGvx!xgM``xki<0ytN4o__C z{FiTb{a!Kf(|(!RzRg{lAJsFeHJ`H++lz*o^V736(3279?C-0LDfbqff#qRMV_;|WpD*@9Ioa27p2fsr}n&q zFHu)LL$vPt<$9TxtB1ohOI8E-rn{4IKrKA8c~T74HKB2lyFroF7i;CYu6Sf!8_QJO zOH9m7Xn%z{;7uJ)57d#hn}a)xvZ0+Z(8@aIZw!=M)BXV{r%!>-5MB!lCpNRr-b6G; zNMvK%<~Y-n2o5_(yY>DI71IpiumW*bRQ5K45tyLoIt4_KReg;WFS| z!8JP03aE%FCXKFo-U5>4;uT%1vEcEo+S`FXf7Kp~wZ*yXa3k$OW00Rw)z$LDNG(6K zky?H&%1<-E6=*z~n*T=#YWZCt4Mr}Ely@W*;UyG3EsdUL%&yg!u|sI_A{VJBwPFf9 z%~Kb$yG(O+)ijN&q$`K_0YVRsm_;+`C=*JoFwmdiqkO>OvN1VfN`rkxi>nm6MQ*1Q z0UbraTGOYjsyjra2dF^r6yG$aN12J5kLX~et-i?<)(#!68h6n{W6 zjz@V|CXuth^`3yg%#aS%;KN1*Xip2kjg-&^f)Sx7AOs%D>9i$-l~D|S7$>n@SMKx*e509|OU4x?6N?Wxq9rX=*jP>Ol_{vBf>us2?mg(GQy4 yx>XTU7$!xGPQ_kSKiBc-4{%YRf%^Y}b`@P}#_&{!n{|JDPN8VZTIQyAclig4e9)f& literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/caches/__init__.py b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/caches/__init__.py new file mode 100644 index 0000000..f9e66a1 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/caches/__init__.py @@ -0,0 +1,18 @@ +from textwrap import dedent + +try: + from .file_cache import FileCache +except ImportError: + notice = dedent(''' + NOTE: In order to use the FileCache you must have + lockfile installed. You can install it via pip: + pip install lockfile + ''') + print(notice) + + +try: + import redis + from .redis_cache import RedisCache +except ImportError: + pass diff --git a/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/caches/__init__.pyc b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/caches/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..59380e715faf93df7899ef1481579bff3bbf19ba GIT binary patch literal 607 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/compat.py b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/compat.py new file mode 100644 index 0000000..018e6ac --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/compat.py @@ -0,0 +1,20 @@ +try: + from urllib.parse import urljoin +except ImportError: + from urlparse import urljoin + + +try: + import cPickle as pickle +except ImportError: + import pickle + + +from pip._vendor.requests.packages.urllib3.response import HTTPResponse +from pip._vendor.requests.packages.urllib3.util import is_fp_closed + +# Replicate some six behaviour +try: + text_type = (unicode,) +except NameError: + text_type = (str,) diff --git a/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/compat.pyc b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/compat.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e7af59c1f96bcde47daa1a754edc4f46c552eaec GIT binary patch literal 647 zcma)2J#X7E5Ivgyh@B|#;3+_cY({~|Lx(Iz(IEkv#W2(WNxc{fb#@t3B1=+5^@}=Z z$*;=RAJ85tyIDivK6vll;~n{*Wb``!{Y}9B^eBENb1&qY2^0VY0|ihrSTSJt)dh61 z1G^E}D`1T63H(5)7(6uN*w+Eog;fvktMmUo+d~h5y#NM&(BPo@P!3=j(NXC!tK2Y3!*nCy|L)Pb+lu!Hy23pr5zU2)6gBb)UD)WYI5r^qdWLxa<`??*56o5{-|X|Mto2#rPwL- zeF99IrZF|?`X^R}wyDJ*H9GG|SM2gFy0m@gBO&cvS)BjFyZdS{Rn{STyK^OlF3=A{ z0e|_mZ%lhz current_age: + logger.debug('The response is "fresh", returning cached response') + logger.debug('%i > %i', freshness_lifetime, current_age) + return resp + + # we're not fresh. If we don't have an Etag, clear it out + if 'etag' not in headers: + logger.debug( + 'The cached response is "stale" with no etag, purging' + ) + self.cache.delete(cache_url) + + # return the original handler + return False + + def conditional_headers(self, request): + cache_url = self.cache_url(request.url) + resp = self.serializer.loads(request, self.cache.get(cache_url)) + new_headers = {} + + if resp: + headers = CaseInsensitiveDict(resp.headers) + + if 'etag' in headers: + new_headers['If-None-Match'] = headers['ETag'] + + if 'last-modified' in headers: + new_headers['If-Modified-Since'] = headers['Last-Modified'] + + return new_headers + + def cache_response(self, request, response, body=None): + """ + Algorithm for caching requests. + + This assumes a requests Response object. + """ + # From httplib2: Don't cache 206's since we aren't going to + # handle byte range requests + cacheable_status_codes = [200, 203, 300, 301] + if response.status not in cacheable_status_codes: + logger.debug( + 'Status code %s not in %s', + response.status, + cacheable_status_codes + ) + return + + response_headers = CaseInsensitiveDict(response.headers) + + # If we've been given a body, our response has a Content-Length, that + # Content-Length is valid then we can check to see if the body we've + # been given matches the expected size, and if it doesn't we'll just + # skip trying to cache it. + if (body is not None and + "content-length" in response_headers and + response_headers["content-length"].isdigit() and + int(response_headers["content-length"]) != len(body)): + return + + cc_req = self.parse_cache_control(request.headers) + cc = self.parse_cache_control(response_headers) + + cache_url = self.cache_url(request.url) + logger.debug('Updating cache with response from "%s"', cache_url) + + # Delete it from the cache if we happen to have it stored there + no_store = False + if cc.get('no-store'): + no_store = True + logger.debug('Response header has "no-store"') + if cc_req.get('no-store'): + no_store = True + logger.debug('Request header has "no-store"') + if no_store and self.cache.get(cache_url): + logger.debug('Purging existing cache entry to honor "no-store"') + self.cache.delete(cache_url) + + # If we've been given an etag, then keep the response + if self.cache_etags and 'etag' in response_headers: + logger.debug('Caching due to etag') + self.cache.set( + cache_url, + self.serializer.dumps(request, response, body=body), + ) + + # Add to the cache any 301s. We do this before looking that + # the Date headers. + elif response.status == 301: + logger.debug('Caching permanant redirect') + self.cache.set( + cache_url, + self.serializer.dumps(request, response) + ) + + # Add to the cache if the response headers demand it. If there + # is no date header then we can't do anything about expiring + # the cache. + elif 'date' in response_headers: + # cache when there is a max-age > 0 + if cc and cc.get('max-age'): + if cc['max-age'].isdigit() and int(cc['max-age']) > 0: + logger.debug('Caching b/c date exists and max-age > 0') + self.cache.set( + cache_url, + self.serializer.dumps(request, response, body=body), + ) + + # If the request can expire, it means we should cache it + # in the meantime. + elif 'expires' in response_headers: + if response_headers['expires']: + logger.debug('Caching b/c of expires header') + self.cache.set( + cache_url, + self.serializer.dumps(request, response, body=body), + ) + + def update_cached_response(self, request, response): + """On a 304 we will get a new set of headers that we want to + update our cached value with, assuming we have one. + + This should only ever be called when we've sent an ETag and + gotten a 304 as the response. + """ + cache_url = self.cache_url(request.url) + + cached_response = self.serializer.loads( + request, + self.cache.get(cache_url) + ) + + if not cached_response: + # we didn't have a cached response + return response + + # Lets update our headers with the headers from the new request: + # http://tools.ietf.org/html/draft-ietf-httpbis-p4-conditional-26#section-4.1 + # + # The server isn't supposed to send headers that would make + # the cached body invalid. But... just in case, we'll be sure + # to strip out ones we know that might be problmatic due to + # typical assumptions. + excluded_headers = [ + "content-length", + ] + + cached_response.headers.update( + dict((k, v) for k, v in response.headers.items() + if k.lower() not in excluded_headers) + ) + + # we want a 200 b/c we have content via the cache + cached_response.status = 200 + + # update our cache + self.cache.set( + cache_url, + self.serializer.dumps(request, cached_response), + ) + + return cached_response diff --git a/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.pyc b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3627dba9245dcbd4e872af54a41a4453b1193d7d GIT binary patch literal 8994 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.py b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.py new file mode 100644 index 0000000..f1e1ce0 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.py @@ -0,0 +1,78 @@ +from io import BytesIO + + +class CallbackFileWrapper(object): + """ + Small wrapper around a fp object which will tee everything read into a + buffer, and when that file is closed it will execute a callback with the + contents of that buffer. + + All attributes are proxied to the underlying file object. + + This class uses members with a double underscore (__) leading prefix so as + not to accidentally shadow an attribute. + """ + + def __init__(self, fp, callback): + self.__buf = BytesIO() + self.__fp = fp + self.__callback = callback + + def __getattr__(self, name): + # The vaguaries of garbage collection means that self.__fp is + # not always set. By using __getattribute__ and the private + # name[0] allows looking up the attribute value and raising an + # AttributeError when it doesn't exist. This stop thigns from + # infinitely recursing calls to getattr in the case where + # self.__fp hasn't been set. + # + # [0] https://docs.python.org/2/reference/expressions.html#atom-identifiers + fp = self.__getattribute__('_CallbackFileWrapper__fp') + return getattr(fp, name) + + def __is_fp_closed(self): + try: + return self.__fp.fp is None + except AttributeError: + pass + + try: + return self.__fp.closed + except AttributeError: + pass + + # We just don't cache it then. + # TODO: Add some logging here... + return False + + def _close(self): + if self.__callback: + self.__callback(self.__buf.getvalue()) + + # We assign this to None here, because otherwise we can get into + # really tricky problems where the CPython interpreter dead locks + # because the callback is holding a reference to something which + # has a __del__ method. Setting this to None breaks the cycle + # and allows the garbage collector to do it's thing normally. + self.__callback = None + + def read(self, amt=None): + data = self.__fp.read(amt) + self.__buf.write(data) + if self.__is_fp_closed(): + self._close() + + return data + + def _safe_read(self, amt): + data = self.__fp._safe_read(amt) + if amt == 2 and data == b'\r\n': + # urllib executes this read to toss the CRLF at the end + # of the chunk. + return data + + self.__buf.write(data) + if self.__is_fp_closed(): + self._close() + + return data diff --git a/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.pyc b/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c2ce9a620aca52eed747a76b38a80e2e093dd11c GIT binary patch literal 2611 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 WYfq{sZ%cK_g)LtOY4as%mEs%8Y>3JL literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/colorama/__init__.py b/env/lib/python2.7/site-packages/pip/_vendor/colorama/__init__.py new file mode 100644 index 0000000..670e6b3 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/colorama/__init__.py @@ -0,0 +1,7 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +from .initialise import init, deinit, reinit, colorama_text +from .ansi import Fore, Back, Style, Cursor +from .ansitowin32 import AnsiToWin32 + +__version__ = '0.3.7' + diff --git a/env/lib/python2.7/site-packages/pip/_vendor/colorama/__init__.pyc b/env/lib/python2.7/site-packages/pip/_vendor/colorama/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..38ff33cd4a75601df7ce0fa4b97c049470d4e022 GIT binary patch literal 476 zcmYLF%TB{E5S%1^mr8s?Pr0-~^nipa#7i72WRMU(V1*_J3pD*a$L$jUi*$1Tul`Kz0yuM-0=2?Lqcn z`;dLu0ptL72szw!Brqe`G31zP5+0%G;vwx(gpLT(4nbhhl@5XVqWs@ByX}P7wKJ~C zZLUK384jvD*OaaNI$ytqE;T-cttnfhn@!_glX6TL6I@kZKe{JfElxdmp3E2XvsKFO zVMM^OIyc&vf+`3W3ceMQ5VR>dSqPq1uz}!lMV}AZpAUokV1F^#lS;jpjn}SHDkTmF z@aI%!!PZ%=>)Go@n_?!y{p!{*(JsUkV?(#ZQzKdb;ZV%7d)lsX{OOM HI*xwv4A^3y$sHZFoo^ zRf6x*uhb9G|M~^``;8qt1X@Lng?i`x-R#`%?A+|k>^S{bG5_cJ-?suaywZ4nkCyxa z2$gbyj&dCprj(mfVOqIq6=u|9yvnF>N{A^HW>q+?9%Cd3{APrnR$)#>GwLR$=Q;9` zQd@3Lg|qwI!ibw!VNpdn89O)P&Z=;JpSv*P7F2j*pL=q|#q?RO;LfS2AOxlsg;-Eg zUWgMaJf+&@7x;z00rDF=CMoUq!o5yZ+K#$W?As_QRa@<~Qn2I4eqf`x6!bzcZLidi zP1l<4HaMMLEG)d=HC?}xEa%%%bhfl(ZU1bg5_OmFn%kxyg~ng*#oHD3DwOL*N#OS* zk3#cF3QD|sZSc6BIOt6WL^ke49W6Ntu=qLZ0c_}~C2Yx3yUe*QFqPUB+RB9XnmiL5 zm-)(O09>n#rxHlM1XZ!S{Yu~TPv6)xo$$1_S6V9_GNgHTqHfrWEApNGu3z!HiCOO7 zx5c3}&-OeTC@Fv;>MLiYI29Ac7eGL9ste7RpzFTcGUd#*D?`46JHrinF0jExO%nvl-4ZP1DQ*h_*qin{cJ!?r%U z#+RO@vCdO>wBx%5B@MLgm~QkUdP7|;ZC`~0)fqv^w$PRLN1Q_ei@fewQqT-@{I3p{U-;yh0;Veojr zg*rw)&~p&?GMa34){)g@tM}rh7YBGF7fmC3y$WKq*VwPeI5Kdoz}P9Fakzj^3yt#y zG|n1~!4U%*Kb$x?iL&$%I)$MZ1q?toE>lN4m@&mCp30cj!@zl3j@%-S2R-XgL9(+#* z-JgtmQ1q4c_GvtZ-cjZ@=$8l#fBib)O~PA*cL-d2yuMJ!2qw*B_byt(oSbzEsljb$ z&}GWG(2Ju0v|OXZrHk$;;V{)8nIOp^hakP6nnhyCNYy%}T-2*s<<78_WtBRkTvVkw z<)RABD;HJgta6JgEU?5xwd&5Ra89`ktWjN5mJ7-~$-Kn#%)CLMK}?B2tC+V5G>zeR z80H1Th%>0NmAOXviEy3pGr=SLLhu3QQ-HD2Bfq1R&}G%vP_O!jb?Lw zQ%<5<^J+s*tjpEaMr)%g%=%WfB~vypu5C1g(v5awL#n*y+Ums(k?u8qw6hQ=9IV1V z>pdL~Y0zi59KEnV=6bV|OCYY9%cb6s{|si4T{I;^{K1Sn$Sw#ENgrZfnO~OzaB|-#p?H2!#(qcjlM*1Ck}pl?a2L{r%;M}~ LagkRx=kWd;wnrI_ literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/colorama/ansitowin32.py b/env/lib/python2.7/site-packages/pip/_vendor/colorama/ansitowin32.py new file mode 100644 index 0000000..b7ff6f2 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/colorama/ansitowin32.py @@ -0,0 +1,236 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +import re +import sys +import os + +from .ansi import AnsiFore, AnsiBack, AnsiStyle, Style +from .winterm import WinTerm, WinColor, WinStyle +from .win32 import windll, winapi_test + + +winterm = None +if windll is not None: + winterm = WinTerm() + + +def is_stream_closed(stream): + return not hasattr(stream, 'closed') or stream.closed + + +def is_a_tty(stream): + return hasattr(stream, 'isatty') and stream.isatty() + + +class StreamWrapper(object): + ''' + Wraps a stream (such as stdout), acting as a transparent proxy for all + attribute access apart from method 'write()', which is delegated to our + Converter instance. + ''' + def __init__(self, wrapped, converter): + # double-underscore everything to prevent clashes with names of + # attributes on the wrapped stream object. + self.__wrapped = wrapped + self.__convertor = converter + + def __getattr__(self, name): + return getattr(self.__wrapped, name) + + def write(self, text): + self.__convertor.write(text) + + +class AnsiToWin32(object): + ''' + Implements a 'write()' method which, on Windows, will strip ANSI character + sequences from the text, and if outputting to a tty, will convert them into + win32 function calls. + ''' + ANSI_CSI_RE = re.compile('\001?\033\[((?:\d|;)*)([a-zA-Z])\002?') # Control Sequence Introducer + ANSI_OSC_RE = re.compile('\001?\033\]((?:.|;)*?)(\x07)\002?') # Operating System Command + + def __init__(self, wrapped, convert=None, strip=None, autoreset=False): + # The wrapped stream (normally sys.stdout or sys.stderr) + self.wrapped = wrapped + + # should we reset colors to defaults after every .write() + self.autoreset = autoreset + + # create the proxy wrapping our output stream + self.stream = StreamWrapper(wrapped, self) + + on_windows = os.name == 'nt' + # We test if the WinAPI works, because even if we are on Windows + # we may be using a terminal that doesn't support the WinAPI + # (e.g. Cygwin Terminal). In this case it's up to the terminal + # to support the ANSI codes. + conversion_supported = on_windows and winapi_test() + + # should we strip ANSI sequences from our output? + if strip is None: + strip = conversion_supported or (not is_stream_closed(wrapped) and not is_a_tty(wrapped)) + self.strip = strip + + # should we should convert ANSI sequences into win32 calls? + if convert is None: + convert = conversion_supported and not is_stream_closed(wrapped) and is_a_tty(wrapped) + self.convert = convert + + # dict of ansi codes to win32 functions and parameters + self.win32_calls = self.get_win32_calls() + + # are we wrapping stderr? + self.on_stderr = self.wrapped is sys.stderr + + def should_wrap(self): + ''' + True if this class is actually needed. If false, then the output + stream will not be affected, nor will win32 calls be issued, so + wrapping stdout is not actually required. This will generally be + False on non-Windows platforms, unless optional functionality like + autoreset has been requested using kwargs to init() + ''' + return self.convert or self.strip or self.autoreset + + def get_win32_calls(self): + if self.convert and winterm: + return { + AnsiStyle.RESET_ALL: (winterm.reset_all, ), + AnsiStyle.BRIGHT: (winterm.style, WinStyle.BRIGHT), + AnsiStyle.DIM: (winterm.style, WinStyle.NORMAL), + AnsiStyle.NORMAL: (winterm.style, WinStyle.NORMAL), + AnsiFore.BLACK: (winterm.fore, WinColor.BLACK), + AnsiFore.RED: (winterm.fore, WinColor.RED), + AnsiFore.GREEN: (winterm.fore, WinColor.GREEN), + AnsiFore.YELLOW: (winterm.fore, WinColor.YELLOW), + AnsiFore.BLUE: (winterm.fore, WinColor.BLUE), + AnsiFore.MAGENTA: (winterm.fore, WinColor.MAGENTA), + AnsiFore.CYAN: (winterm.fore, WinColor.CYAN), + AnsiFore.WHITE: (winterm.fore, WinColor.GREY), + AnsiFore.RESET: (winterm.fore, ), + AnsiFore.LIGHTBLACK_EX: (winterm.fore, WinColor.BLACK, True), + AnsiFore.LIGHTRED_EX: (winterm.fore, WinColor.RED, True), + AnsiFore.LIGHTGREEN_EX: (winterm.fore, WinColor.GREEN, True), + AnsiFore.LIGHTYELLOW_EX: (winterm.fore, WinColor.YELLOW, True), + AnsiFore.LIGHTBLUE_EX: (winterm.fore, WinColor.BLUE, True), + AnsiFore.LIGHTMAGENTA_EX: (winterm.fore, WinColor.MAGENTA, True), + AnsiFore.LIGHTCYAN_EX: (winterm.fore, WinColor.CYAN, True), + AnsiFore.LIGHTWHITE_EX: (winterm.fore, WinColor.GREY, True), + AnsiBack.BLACK: (winterm.back, WinColor.BLACK), + AnsiBack.RED: (winterm.back, WinColor.RED), + AnsiBack.GREEN: (winterm.back, WinColor.GREEN), + AnsiBack.YELLOW: (winterm.back, WinColor.YELLOW), + AnsiBack.BLUE: (winterm.back, WinColor.BLUE), + AnsiBack.MAGENTA: (winterm.back, WinColor.MAGENTA), + AnsiBack.CYAN: (winterm.back, WinColor.CYAN), + AnsiBack.WHITE: (winterm.back, WinColor.GREY), + AnsiBack.RESET: (winterm.back, ), + AnsiBack.LIGHTBLACK_EX: (winterm.back, WinColor.BLACK, True), + AnsiBack.LIGHTRED_EX: (winterm.back, WinColor.RED, True), + AnsiBack.LIGHTGREEN_EX: (winterm.back, WinColor.GREEN, True), + AnsiBack.LIGHTYELLOW_EX: (winterm.back, WinColor.YELLOW, True), + AnsiBack.LIGHTBLUE_EX: (winterm.back, WinColor.BLUE, True), + AnsiBack.LIGHTMAGENTA_EX: (winterm.back, WinColor.MAGENTA, True), + AnsiBack.LIGHTCYAN_EX: (winterm.back, WinColor.CYAN, True), + AnsiBack.LIGHTWHITE_EX: (winterm.back, WinColor.GREY, True), + } + return dict() + + def write(self, text): + if self.strip or self.convert: + self.write_and_convert(text) + else: + self.wrapped.write(text) + self.wrapped.flush() + if self.autoreset: + self.reset_all() + + + def reset_all(self): + if self.convert: + self.call_win32('m', (0,)) + elif not self.strip and not is_stream_closed(self.wrapped): + self.wrapped.write(Style.RESET_ALL) + + + def write_and_convert(self, text): + ''' + Write the given text to our wrapped stream, stripping any ANSI + sequences from the text, and optionally converting them into win32 + calls. + ''' + cursor = 0 + text = self.convert_osc(text) + for match in self.ANSI_CSI_RE.finditer(text): + start, end = match.span() + self.write_plain_text(text, cursor, start) + self.convert_ansi(*match.groups()) + cursor = end + self.write_plain_text(text, cursor, len(text)) + + + def write_plain_text(self, text, start, end): + if start < end: + self.wrapped.write(text[start:end]) + self.wrapped.flush() + + + def convert_ansi(self, paramstring, command): + if self.convert: + params = self.extract_params(command, paramstring) + self.call_win32(command, params) + + + def extract_params(self, command, paramstring): + if command in 'Hf': + params = tuple(int(p) if len(p) != 0 else 1 for p in paramstring.split(';')) + while len(params) < 2: + # defaults: + params = params + (1,) + else: + params = tuple(int(p) for p in paramstring.split(';') if len(p) != 0) + if len(params) == 0: + # defaults: + if command in 'JKm': + params = (0,) + elif command in 'ABCD': + params = (1,) + + return params + + + def call_win32(self, command, params): + if command == 'm': + for param in params: + if param in self.win32_calls: + func_args = self.win32_calls[param] + func = func_args[0] + args = func_args[1:] + kwargs = dict(on_stderr=self.on_stderr) + func(*args, **kwargs) + elif command in 'J': + winterm.erase_screen(params[0], on_stderr=self.on_stderr) + elif command in 'K': + winterm.erase_line(params[0], on_stderr=self.on_stderr) + elif command in 'Hf': # cursor position - absolute + winterm.set_cursor_position(params, on_stderr=self.on_stderr) + elif command in 'ABCD': # cursor position - relative + n = params[0] + # A - up, B - down, C - forward, D - back + x, y = {'A': (0, -n), 'B': (0, n), 'C': (n, 0), 'D': (-n, 0)}[command] + winterm.cursor_adjust(x, y, on_stderr=self.on_stderr) + + + def convert_osc(self, text): + for match in self.ANSI_OSC_RE.finditer(text): + start, end = match.span() + text = text[:start] + text[end:] + paramstring, command = match.groups() + if command in '\x07': # \x07 = BEL + params = paramstring.split(";") + # 0 - change title and icon (we will only change title) + # 1 - change icon (we don't support this) + # 2 - change title + if params[0] in '02': + winterm.set_title(params[1]) + return text diff --git a/env/lib/python2.7/site-packages/pip/_vendor/colorama/ansitowin32.pyc b/env/lib/python2.7/site-packages/pip/_vendor/colorama/ansitowin32.pyc new file mode 100644 index 0000000000000000000000000000000000000000..deb2e438916e88db37175d7a53b7ec65f0b98908 GIT binary patch literal 9206 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 G&i)sH^iRtG literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/colorama/initialise.py b/env/lib/python2.7/site-packages/pip/_vendor/colorama/initialise.py new file mode 100644 index 0000000..834962a --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/colorama/initialise.py @@ -0,0 +1,82 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +import atexit +import contextlib +import sys + +from .ansitowin32 import AnsiToWin32 + + +orig_stdout = None +orig_stderr = None + +wrapped_stdout = None +wrapped_stderr = None + +atexit_done = False + + +def reset_all(): + if AnsiToWin32 is not None: # Issue #74: objects might become None at exit + AnsiToWin32(orig_stdout).reset_all() + + +def init(autoreset=False, convert=None, strip=None, wrap=True): + + if not wrap and any([autoreset, convert, strip]): + raise ValueError('wrap=False conflicts with any other arg=True') + + global wrapped_stdout, wrapped_stderr + global orig_stdout, orig_stderr + + orig_stdout = sys.stdout + orig_stderr = sys.stderr + + if sys.stdout is None: + wrapped_stdout = None + else: + sys.stdout = wrapped_stdout = \ + wrap_stream(orig_stdout, convert, strip, autoreset, wrap) + if sys.stderr is None: + wrapped_stderr = None + else: + sys.stderr = wrapped_stderr = \ + wrap_stream(orig_stderr, convert, strip, autoreset, wrap) + + global atexit_done + if not atexit_done: + atexit.register(reset_all) + atexit_done = True + + +def deinit(): + if orig_stdout is not None: + sys.stdout = orig_stdout + if orig_stderr is not None: + sys.stderr = orig_stderr + + +@contextlib.contextmanager +def colorama_text(*args, **kwargs): + init(*args, **kwargs) + try: + yield + finally: + deinit() + + +def reinit(): + if wrapped_stdout is not None: + sys.stdout = wrapped_stdout + if wrapped_stderr is not None: + sys.stderr = wrapped_stderr + + +def wrap_stream(stream, convert, strip, autoreset, wrap): + if wrap: + wrapper = AnsiToWin32(stream, + convert=convert, strip=strip, autoreset=autoreset) + if wrapper.should_wrap(): + stream = wrapper.stream + return stream + + diff --git a/env/lib/python2.7/site-packages/pip/_vendor/colorama/initialise.pyc b/env/lib/python2.7/site-packages/pip/_vendor/colorama/initialise.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5758bf930c109956ab2162247260ee1f86005a19 GIT binary patch literal 2305 zcmcIlOK%)S5U!rt*KBsZj)Qs0QY;~)l^`)9oRC960S+8iXdDvoWi{F9tjC_+S$cY7 zj5ZgXBjP`B;-_%nuW;iB!1vYcLq^;j*3;$cM|E}e_f>WHSGWD=;cwrKWcjP(|EFl> zuMjCdBe}@&S~qfRR^x#j2a@6oB@bm%ljE8g7$gmvB~6trm66!CBsV0j$xCe4VHa!g z*{-B@c?sh!NgF!b6KmvjThb=GmvDJg(w0u`NE)efi?&DoHcpxSjo%28C54Xa}`@ze&z)T)QV zW#eJ#(_-#@gb8O$>xW66_qlc>%0qMy{A6}8%Vu|;&a*td6Z@|RpXVIVHhgZUY2gk= zMP9gMk{o2y%x6iSmG^4q8e7Vmf9-g{_IE5&Z#W5lY9s$6yxtj4T2fBOW6h z)VqfMlMzIRXc1~sQ>9M8s*zOWtR?OnBAm2jimQnjcC{O~#fEjMVf7I9t)>0a>}NG= zugn_%X$Eg?LR9`Pz9Xky@moBj@jdcmb@PO3P`(d&?vmO4FO$5q`=es|EYC*1+&|C! z$$m1u*f0Evb^D1M-+$!hw!aMn&+EdRCpR7^`P_ctT;X)MyeNGG!xd~Xy{!7yxht@u zA1j--u!x74*>nXr3C1DxolPc);L4KKR*APiWPX^EG4xvXeG96y3c4l)ivJI4OtXKZ*5Md$bQ7Rz*N>9S zaEjVPXjf5VdT^eOb(UgL6Zc?=9i9wSGQ3zQjd-+J%uM*AE{nRHDu!4|J&+e7-#;Kn zQS*-U1sKFE!SOAMn-Kkw8d~+mF6!EM z6tg^ig;o*s!tNawlzgoiG9_nOqf UHY!&m&=yAZ-My%}6GhE`04F2Ivj6}9 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/colorama/win32.py b/env/lib/python2.7/site-packages/pip/_vendor/colorama/win32.py new file mode 100644 index 0000000..3d1d2f2 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/colorama/win32.py @@ -0,0 +1,154 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. + +# from winbase.h +STDOUT = -11 +STDERR = -12 + +try: + import ctypes + from ctypes import LibraryLoader + windll = LibraryLoader(ctypes.WinDLL) + from ctypes import wintypes +except (AttributeError, ImportError): + windll = None + SetConsoleTextAttribute = lambda *_: None + winapi_test = lambda *_: None +else: + from ctypes import byref, Structure, c_char, POINTER + + COORD = wintypes._COORD + + class CONSOLE_SCREEN_BUFFER_INFO(Structure): + """struct in wincon.h.""" + _fields_ = [ + ("dwSize", COORD), + ("dwCursorPosition", COORD), + ("wAttributes", wintypes.WORD), + ("srWindow", wintypes.SMALL_RECT), + ("dwMaximumWindowSize", COORD), + ] + def __str__(self): + return '(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)' % ( + self.dwSize.Y, self.dwSize.X + , self.dwCursorPosition.Y, self.dwCursorPosition.X + , self.wAttributes + , self.srWindow.Top, self.srWindow.Left, self.srWindow.Bottom, self.srWindow.Right + , self.dwMaximumWindowSize.Y, self.dwMaximumWindowSize.X + ) + + _GetStdHandle = windll.kernel32.GetStdHandle + _GetStdHandle.argtypes = [ + wintypes.DWORD, + ] + _GetStdHandle.restype = wintypes.HANDLE + + _GetConsoleScreenBufferInfo = windll.kernel32.GetConsoleScreenBufferInfo + _GetConsoleScreenBufferInfo.argtypes = [ + wintypes.HANDLE, + POINTER(CONSOLE_SCREEN_BUFFER_INFO), + ] + _GetConsoleScreenBufferInfo.restype = wintypes.BOOL + + _SetConsoleTextAttribute = windll.kernel32.SetConsoleTextAttribute + _SetConsoleTextAttribute.argtypes = [ + wintypes.HANDLE, + wintypes.WORD, + ] + _SetConsoleTextAttribute.restype = wintypes.BOOL + + _SetConsoleCursorPosition = windll.kernel32.SetConsoleCursorPosition + _SetConsoleCursorPosition.argtypes = [ + wintypes.HANDLE, + COORD, + ] + _SetConsoleCursorPosition.restype = wintypes.BOOL + + _FillConsoleOutputCharacterA = windll.kernel32.FillConsoleOutputCharacterA + _FillConsoleOutputCharacterA.argtypes = [ + wintypes.HANDLE, + c_char, + wintypes.DWORD, + COORD, + POINTER(wintypes.DWORD), + ] + _FillConsoleOutputCharacterA.restype = wintypes.BOOL + + _FillConsoleOutputAttribute = windll.kernel32.FillConsoleOutputAttribute + _FillConsoleOutputAttribute.argtypes = [ + wintypes.HANDLE, + wintypes.WORD, + wintypes.DWORD, + COORD, + POINTER(wintypes.DWORD), + ] + _FillConsoleOutputAttribute.restype = wintypes.BOOL + + _SetConsoleTitleW = windll.kernel32.SetConsoleTitleA + _SetConsoleTitleW.argtypes = [ + wintypes.LPCSTR + ] + _SetConsoleTitleW.restype = wintypes.BOOL + + handles = { + STDOUT: _GetStdHandle(STDOUT), + STDERR: _GetStdHandle(STDERR), + } + + def winapi_test(): + handle = handles[STDOUT] + csbi = CONSOLE_SCREEN_BUFFER_INFO() + success = _GetConsoleScreenBufferInfo( + handle, byref(csbi)) + return bool(success) + + def GetConsoleScreenBufferInfo(stream_id=STDOUT): + handle = handles[stream_id] + csbi = CONSOLE_SCREEN_BUFFER_INFO() + success = _GetConsoleScreenBufferInfo( + handle, byref(csbi)) + return csbi + + def SetConsoleTextAttribute(stream_id, attrs): + handle = handles[stream_id] + return _SetConsoleTextAttribute(handle, attrs) + + def SetConsoleCursorPosition(stream_id, position, adjust=True): + position = COORD(*position) + # If the position is out of range, do nothing. + if position.Y <= 0 or position.X <= 0: + return + # Adjust for Windows' SetConsoleCursorPosition: + # 1. being 0-based, while ANSI is 1-based. + # 2. expecting (x,y), while ANSI uses (y,x). + adjusted_position = COORD(position.Y - 1, position.X - 1) + if adjust: + # Adjust for viewport's scroll position + sr = GetConsoleScreenBufferInfo(STDOUT).srWindow + adjusted_position.Y += sr.Top + adjusted_position.X += sr.Left + # Resume normal processing + handle = handles[stream_id] + return _SetConsoleCursorPosition(handle, adjusted_position) + + def FillConsoleOutputCharacter(stream_id, char, length, start): + handle = handles[stream_id] + char = c_char(char.encode()) + length = wintypes.DWORD(length) + num_written = wintypes.DWORD(0) + # Note that this is hard-coded for ANSI (vs wide) bytes. + success = _FillConsoleOutputCharacterA( + handle, char, length, start, byref(num_written)) + return num_written.value + + def FillConsoleOutputAttribute(stream_id, attr, length, start): + ''' FillConsoleOutputAttribute( hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten )''' + handle = handles[stream_id] + attribute = wintypes.WORD(attr) + length = wintypes.DWORD(length) + num_written = wintypes.DWORD(0) + # Note that this is hard-coded for ANSI (vs wide) bytes. + return _FillConsoleOutputAttribute( + handle, attribute, length, start, byref(num_written)) + + def SetConsoleTitle(title): + return _SetConsoleTitleW(title) diff --git a/env/lib/python2.7/site-packages/pip/_vendor/colorama/win32.pyc b/env/lib/python2.7/site-packages/pip/_vendor/colorama/win32.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e118bae12d5bc513ce437358e8efd8d81782230e GIT binary patch literal 4774 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�oY=xeAu%cwa8~3IP<>9g6a&c^?JX#+8 EFROpc`Tzg` literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/colorama/winterm.py b/env/lib/python2.7/site-packages/pip/_vendor/colorama/winterm.py new file mode 100644 index 0000000..60309d3 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/colorama/winterm.py @@ -0,0 +1,162 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +from . import win32 + + +# from wincon.h +class WinColor(object): + BLACK = 0 + BLUE = 1 + GREEN = 2 + CYAN = 3 + RED = 4 + MAGENTA = 5 + YELLOW = 6 + GREY = 7 + +# from wincon.h +class WinStyle(object): + NORMAL = 0x00 # dim text, dim background + BRIGHT = 0x08 # bright text, dim background + BRIGHT_BACKGROUND = 0x80 # dim text, bright background + +class WinTerm(object): + + def __init__(self): + self._default = win32.GetConsoleScreenBufferInfo(win32.STDOUT).wAttributes + self.set_attrs(self._default) + self._default_fore = self._fore + self._default_back = self._back + self._default_style = self._style + # In order to emulate LIGHT_EX in windows, we borrow the BRIGHT style. + # So that LIGHT_EX colors and BRIGHT style do not clobber each other, + # we track them separately, since LIGHT_EX is overwritten by Fore/Back + # and BRIGHT is overwritten by Style codes. + self._light = 0 + + def get_attrs(self): + return self._fore + self._back * 16 + (self._style | self._light) + + def set_attrs(self, value): + self._fore = value & 7 + self._back = (value >> 4) & 7 + self._style = value & (WinStyle.BRIGHT | WinStyle.BRIGHT_BACKGROUND) + + def reset_all(self, on_stderr=None): + self.set_attrs(self._default) + self.set_console(attrs=self._default) + + def fore(self, fore=None, light=False, on_stderr=False): + if fore is None: + fore = self._default_fore + self._fore = fore + # Emulate LIGHT_EX with BRIGHT Style + if light: + self._light |= WinStyle.BRIGHT + else: + self._light &= ~WinStyle.BRIGHT + self.set_console(on_stderr=on_stderr) + + def back(self, back=None, light=False, on_stderr=False): + if back is None: + back = self._default_back + self._back = back + # Emulate LIGHT_EX with BRIGHT_BACKGROUND Style + if light: + self._light |= WinStyle.BRIGHT_BACKGROUND + else: + self._light &= ~WinStyle.BRIGHT_BACKGROUND + self.set_console(on_stderr=on_stderr) + + def style(self, style=None, on_stderr=False): + if style is None: + style = self._default_style + self._style = style + self.set_console(on_stderr=on_stderr) + + def set_console(self, attrs=None, on_stderr=False): + if attrs is None: + attrs = self.get_attrs() + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + win32.SetConsoleTextAttribute(handle, attrs) + + def get_position(self, handle): + position = win32.GetConsoleScreenBufferInfo(handle).dwCursorPosition + # Because Windows coordinates are 0-based, + # and win32.SetConsoleCursorPosition expects 1-based. + position.X += 1 + position.Y += 1 + return position + + def set_cursor_position(self, position=None, on_stderr=False): + if position is None: + # I'm not currently tracking the position, so there is no default. + # position = self.get_position() + return + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + win32.SetConsoleCursorPosition(handle, position) + + def cursor_adjust(self, x, y, on_stderr=False): + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + position = self.get_position(handle) + adjusted_position = (position.Y + y, position.X + x) + win32.SetConsoleCursorPosition(handle, adjusted_position, adjust=False) + + def erase_screen(self, mode=0, on_stderr=False): + # 0 should clear from the cursor to the end of the screen. + # 1 should clear from the cursor to the beginning of the screen. + # 2 should clear the entire screen, and move cursor to (1,1) + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + csbi = win32.GetConsoleScreenBufferInfo(handle) + # get the number of character cells in the current buffer + cells_in_screen = csbi.dwSize.X * csbi.dwSize.Y + # get number of character cells before current cursor position + cells_before_cursor = csbi.dwSize.X * csbi.dwCursorPosition.Y + csbi.dwCursorPosition.X + if mode == 0: + from_coord = csbi.dwCursorPosition + cells_to_erase = cells_in_screen - cells_before_cursor + if mode == 1: + from_coord = win32.COORD(0, 0) + cells_to_erase = cells_before_cursor + elif mode == 2: + from_coord = win32.COORD(0, 0) + cells_to_erase = cells_in_screen + # fill the entire screen with blanks + win32.FillConsoleOutputCharacter(handle, ' ', cells_to_erase, from_coord) + # now set the buffer's attributes accordingly + win32.FillConsoleOutputAttribute(handle, self.get_attrs(), cells_to_erase, from_coord) + if mode == 2: + # put the cursor where needed + win32.SetConsoleCursorPosition(handle, (1, 1)) + + def erase_line(self, mode=0, on_stderr=False): + # 0 should clear from the cursor to the end of the line. + # 1 should clear from the cursor to the beginning of the line. + # 2 should clear the entire line. + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + csbi = win32.GetConsoleScreenBufferInfo(handle) + if mode == 0: + from_coord = csbi.dwCursorPosition + cells_to_erase = csbi.dwSize.X - csbi.dwCursorPosition.X + if mode == 1: + from_coord = win32.COORD(0, csbi.dwCursorPosition.Y) + cells_to_erase = csbi.dwCursorPosition.X + elif mode == 2: + from_coord = win32.COORD(0, csbi.dwCursorPosition.Y) + cells_to_erase = csbi.dwSize.X + # fill the entire screen with blanks + win32.FillConsoleOutputCharacter(handle, ' ', cells_to_erase, from_coord) + # now set the buffer's attributes accordingly + win32.FillConsoleOutputAttribute(handle, self.get_attrs(), cells_to_erase, from_coord) + + def set_title(self, title): + win32.SetConsoleTitle(title) diff --git a/env/lib/python2.7/site-packages/pip/_vendor/colorama/winterm.pyc b/env/lib/python2.7/site-packages/pip/_vendor/colorama/winterm.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cf359b08a56188361f1fa75407dda0dcf9700928 GIT binary patch literal 5930 zcmd5=+j1Mn5$#=E2#}y4Q8Gzeaw5k!0wzb;+jpgfWTMsu>v}rarIx1@Kt#&NuHyi7gb3Rzz-01ACS}wA; zv9-1Rv5vzVdo75hAnDK0U9m^UE64Hit%Gr#gtv_SsI#6>pe^_;8id2qN{@!>9(7k> zJ{ygW-aCG3Xf7_2UMAz6|C?BN$39J>uUq&vyz=iX3>&JwFhpXt<{!beXbD4W8a`F^ zI@{*K>Xx!==KkidcI_2Ba%`{$qive)hn@98W942_?FN?MGAVU;N~_%gr(IYk*HzDp zv}o?6dA=78NjNkPzTTetENOV{123!0&W0TE&=c%sb>;E?-Zz{;NsT&AOL)S3rt(8Llon~`k~ z2k9`0c6y^I8mx``{b+Q5&>t!ec6QgdAMV;YjC`_c?I=DN+bDG|7DoNx@`Hpoecx!|DNdwl+xN_hN1N_g8#XJ2$8eVW9dKC&+KlrbcYl74~3 zmxEyzG~z*QgJ7AH6PMyGdzZZi|0?;3(OvY!Zi3-SIEvur$+aa4d=-~uZE0e79(jv< zHj5-&z|i{U28e28UMGj<$V+O&Bl&c4ByXXU5&+`$_`{Yf!IDz?$m5!fmQ`g>PCOZ?oQDmZ`ZBu1 zM`fOGnNeoj4@xq)dS2LkKq-xba0*D2UNDh)6RWkDE;TuJhJ(l~q35u0gIs}yZ*eU5 z>R>=l;{~IGy11JSy=nM@c?a`+A1x&iMZLN1SG`yKtN%Y%GjC&S=2a4n4TZ(jaW1eJ zW2PaLr)w-i^%rOt8H>=Gv^K~52;{#*44^?`256Ae&iR$wxdK7ezmDl#R8)PrR1qjN z4NOBm`+L>F$xM@ZXv zgplH+3TMb<((kxHsak&%eND$^0o)|%ZWv?fKs$MQ-i=3C#1>kX4I5t5tD`b)xUfnSv9&qkhaj$gp|&Vqd^yno!_b1`|A|HrACU&tnRZdv z_<3nUv$&cRj2KpgmRU1=(jJe};pn4b8ryg{upIb_(mfZBnK%uDq2}=8Y~0jhF5?zc z>15(v^fSaPl$tQe*Aep}h7^cF@rQH7j%g7GlkW<2Fkwh^u>p)ILd~BX z9$n8$UUZq9G+;c_O7{frQ&H>qvP2GjPnPgZH*9*Zc`<~dAY{>zTlsBlJF~I_U2bIuI%j1haufwHA#%T_|BR{1HQN5H zbcV_Q8b#nLvV;>L$US+C!1pH|J0mB!kl?+lET7b}N(1+Nj`*wY26r!g2jP%ItHNRL z>O>_S_K%B(Rdkrs2e%x=6YLn59-MetJZgzs53~d`ha_|68F%O=enZDK^zDjwprKP*1b4M zvg_9N*dC8<`%!n)?co!^#gFrVZ!}F1qWTf0sGRU+BPvj-)mJY)h%M`eUX&zh5Tgv$ ztDU9WI@v+QiYsv7(r+aF(eMa$>~Iw7^~(*j!yp=U;S6|j8nu{ZaL^gEE#U|xeTTD` zGeG-`{!QeUI*Rv(w}4-zklyebzM}kGEcptr{tqb6@%l-I?F{6IEE-AZ1H^9iJa)g( zHShreRg80q8WB`@2yl#7ZlA&N-~Zz)x}IBwyU#I=O#qu0V>*APprxO`2wL-V2wSxA zi=mF`)DVw`#ht_G9dZiPUy}QPgeWT_pJ5^^z-8{T%MfnXL8b-@exh@rNa8{C1$yZ> zKypYZ99{)oMz&Q7IOI23A0subXvqL$>W!6`I<*u1w&N~loKyXxNSwQ|MYY5!ib~U} zjDuCfDcr=FDs|RBW76y<-f1mxRb9G7jw(AZ=PlMH{kO=m%GOJa;eHIOR>Qi?<*(c1 zc!@U~B=<<}gA}JT1uYCKF@Cv7Z-7+&dZS*dR~qGoxrMoAwOOmznzM~s^Y!MUt89U3 qY=cDW+2O%q)U*15(_I5O-BdTIrQaR*mG=YMRKEaRE-%h4R{jNVz(?r- literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/__init__.py b/env/lib/python2.7/site-packages/pip/_vendor/distlib/__init__.py new file mode 100644 index 0000000..d186b0a --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/distlib/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2016 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +import logging + +__version__ = '0.2.4' + +class DistlibException(Exception): + pass + +try: + from logging import NullHandler +except ImportError: # pragma: no cover + class NullHandler(logging.Handler): + def handle(self, record): pass + def emit(self, record): pass + def createLock(self): self.lock = None + +logger = logging.getLogger(__name__) +logger.addHandler(NullHandler()) diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/__init__.pyc b/env/lib/python2.7/site-packages/pip/_vendor/distlib/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3bf765cd78d4103d1f91c1d8f349d49ab62eca2a GIT binary patch literal 1299 zcmb_cOK;Oa5T3OirwK&7B5s_xSV&C};!>$X2wDlGDnjl7>Wh_nx2fCpL*5Od61Q^X zfAHtH@dMzSNtGaRL28`LdUkdm-#pgguhH=5{*RM_Zk`_AuR-oR7LC6mOO$~LC{v_E zG69`|iRc^AHPJ~H($!d0d#qYTltrXI*3T$1J-QrHcTP$v9g`uth{d?SHjb!P^odXU zWOnFUQ8pkmpo<}yi2XyN0OB~=0ig0Xo|$8i&nGV?Fa3RR2c`42JU#qUnAVp~z0O79 z@D0eZDMA2$dYpi#B*5ZXoagntGI{QYvZ)%qwAik+AR^)19=NHm+G$(1yQj<2>fO|T zm>pOa2<4wmt($JDS7@erUe=}0^GSP^vY$I3$6;fYFfh-8+0xo~^IBWer6KnJLVpVB z3ObsBie~}0gqe_A!c4?ji8Z@tV*hVJF2bS-#be3ruhjX#8GGhqFr6uyPH$4aUAE%# zT#|aoQ9xAuH?owGrQG1H;bD)aD*Yq8S7^8zOpHqEGy;PGsw#ocGfLF&sVl}`o z;TiQD&o+xiSubR0bBucDaM5sU1~^+^JehOxBYN+vw(0y~*I{KJH-j!V3*(RA5@XNF r$;faB)5$%YYki}<)fDBz@2{@-D@Nq_^KmzbgU4a0#%iRV^zNxY*qsXL literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/__init__.py b/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/__init__.py new file mode 100644 index 0000000..f7dbf4c --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/__init__.py @@ -0,0 +1,6 @@ +"""Modules copied from Python 3 standard libraries, for internal use only. + +Individual classes and functions are found in d2._backport.misc. Intended +usage is to always import things missing from 3.1 from that module: the +built-in/stdlib objects will be used if found. +""" diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/__init__.pyc b/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..db812b72cf675bcfa0ab003983c11732da74200f GIT binary patch literal 444 zcmYLF!A`?44DCPyRK!2{xC3hiyP*jo!DR=g2~Oh@rAfLO(xi&rP5mN%jvGIKyCR5W z=f$yK-plFtRsOa3+?eclO=N$Npj?v8vNy?->~(rF)Gp=rIoi%U0ux(w7U~omSoge( z0p>uggVo7`$13TBj;^7O2{5orL3`-PK@7ex@_ZRA?$LHqHC_`5rwl{g1;ZGFoRX8_ zPHGsy-WICT=A(^?iw4OQ083#F*4exxy>);D96|eo?g_9NI)Qf>wgfUj0!Fp-;${TA z(+thg&z*F-yz0>N3`0q5#R0_X-5Dl0p!ZO@LA{8nM^#0>nhw9k=aQ7N(I_<)nEfYu zlw-+FTejHF26j7p;q~gt4~1i>y;z8;v`8#ZmVYKor7$2XRkS@{2+v|vdVeOEB(fiY CX@~0o literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/misc.py b/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/misc.py new file mode 100644 index 0000000..cfb318d --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/misc.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""Backports for individual classes and functions.""" + +import os +import sys + +__all__ = ['cache_from_source', 'callable', 'fsencode'] + + +try: + from imp import cache_from_source +except ImportError: + def cache_from_source(py_file, debug=__debug__): + ext = debug and 'c' or 'o' + return py_file + ext + + +try: + callable = callable +except NameError: + from collections import Callable + + def callable(obj): + return isinstance(obj, Callable) + + +try: + fsencode = os.fsencode +except AttributeError: + def fsencode(filename): + if isinstance(filename, bytes): + return filename + elif isinstance(filename, str): + return filename.encode(sys.getfilesystemencoding()) + else: + raise TypeError("expect bytes or str, not %s" % + type(filename).__name__) diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/misc.pyc b/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/misc.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1a3b38593e234bd61a1fc30c1512aac7f9590e3b GIT binary patch literal 1400 zcmb_b&2AGh5FYO)X__V!XaT7RX@!IoA=;d{Rs0nWTq2Yr751`hY^ONgKdqgrk;;Yk z9e4zug9}f?jR$~lyj9x=sHGW?$1|S!X2#*)LGRD*&(D%BRvY^(ko^s&h+=R-DxgeI z455(&iUU$1sTQd=9flN#wA}Q!9m-miw<&IuI4B-bOLyp~NA(vHLg*DzD|C*h+EfVo zwCs`YQrxA3;wdawz2y(Kb8OTi%_5nl)@mE2g^Fg2LON3xcE|j~8oN92 zl&SoxlUZHni7gkk)UNBbS(Z+-<}kCmkfqW?ftv}4WB?X|TA)3U-2yumRQI`5)jHSp zTR^8!2J~Qm$hKq0{?hYu2$8(ntw5@l$;==eH%aN~;?S{&K5>m5WU?>8MlP>Lm8rI; z3zMnsiTf~qo3X-Ea;ytg)+1%C%gl6?OfSkZ%8ivf)zT-=s4XW>;;!(RJmkH!fh;*o zCeFZP8$fVC0xsx`>(1BXAs4~*z>GD8b!j2>gp1d_$?oNJe!~Db@fGO(;?VIM zAD5MWSJ#+o2Ip|{eM*ud&2^Gob&ma6cf+OT3O@$fJ{XC0(E@D*9WlIxvme_eQKd{0 z$EKy7T+?HipywGddF98>@n?OX^Dk{sF-APV)1D*~Zmfqr29m~r9b}nhC^!FFKU)(H z`UQ8-Mqr(wFZ#iH7>Z3X5VzZ*= 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. + + The optional copy_function argument is a callable that will be used + to copy each file. It will be called with the source path and the + destination path as arguments. By default, copy2() is used, but any + function that supports the same signature (like copy()) can be used. + + """ + 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 os.path.islink(srcname): + linkto = os.readlink(srcname) + if symlinks: + os.symlink(linkto, dstname) + else: + # ignore dangling symlink if the flag is on + if not os.path.exists(linkto) and ignore_dangling_symlinks: + continue + # otherwise let the copy occurs. copy2 will raise an error + copy_function(srcname, dstname) + elif os.path.isdir(srcname): + copytree(srcname, dstname, symlinks, ignore, copy_function) + else: + # Will raise a SpecialFileError for unsupported file types + copy_function(srcname, dstname) + # catch the Error from the recursive copytree so that we can + # continue with other files + except Error as err: + errors.extend(err.args[0]) + except EnvironmentError as why: + errors.append((srcname, dstname, str(why))) + try: + copystat(src, dst) + except OSError as 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: + 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: + 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', None: ''} + compress_ext = {'gzip': '.gz'} + + if _BZ2_SUPPORTED: + tar_compression['bzip2'] = 'bz2' + compress_ext['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: + raise ValueError("bad value for 'compress', or compression format not " + "supported : {0}".format(compress)) + + archive_name = base_name + '.tar' + compress_ext.get(compress, '') + archive_dir = os.path.dirname(archive_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) + + # creating the tarball + 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"), + } + +if _BZ2_SUPPORTED: + _ARCHIVE_FORMATS['bztar'] = (_make_tarball, [('compress', 'bzip2')], + "bzip2'ed tar-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 + + +def get_unpack_formats(): + """Returns a list of supported formats for unpacking. + + Each element of the returned sequence is a tuple + (name, extensions, description) + """ + formats = [(name, info[0], info[3]) for name, info in + _UNPACK_FORMATS.items()] + formats.sort() + return formats + +def _check_unpack_options(extensions, function, extra_args): + """Checks what gets registered as an unpacker.""" + # first make sure no other unpacker is registered for this extension + existing_extensions = {} + for name, info in _UNPACK_FORMATS.items(): + for ext in info[0]: + existing_extensions[ext] = name + + for extension in extensions: + if extension in existing_extensions: + msg = '%s is already registered for "%s"' + raise RegistryError(msg % (extension, + existing_extensions[extension])) + + if not isinstance(function, collections.Callable): + raise TypeError('The registered function must be a callable') + + +def register_unpack_format(name, extensions, function, extra_args=None, + description=''): + """Registers an unpack format. + + `name` is the name of the format. `extensions` is a list of extensions + corresponding to the format. + + `function` is the callable that will be + used to unpack archives. The callable will receive archives to unpack. + If it's unable to handle an archive, it needs to raise a ReadError + exception. + + 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_unpack_formats() function. + """ + if extra_args is None: + extra_args = [] + _check_unpack_options(extensions, function, extra_args) + _UNPACK_FORMATS[name] = extensions, function, extra_args, description + +def unregister_unpack_format(name): + """Removes the pack format from the registry.""" + del _UNPACK_FORMATS[name] + +def _ensure_directory(path): + """Ensure that the parent directory of `path` exists""" + dirname = os.path.dirname(path) + if not os.path.isdir(dirname): + os.makedirs(dirname) + +def _unpack_zipfile(filename, extract_dir): + """Unpack zip `filename` to `extract_dir` + """ + try: + import zipfile + except ImportError: + raise ReadError('zlib not supported, cannot unpack this archive.') + + if not zipfile.is_zipfile(filename): + raise ReadError("%s is not a zip file" % filename) + + zip = zipfile.ZipFile(filename) + try: + for info in zip.infolist(): + name = info.filename + + # don't extract absolute paths or ones with .. in them + if name.startswith('/') or '..' in name: + continue + + target = os.path.join(extract_dir, *name.split('/')) + if not target: + continue + + _ensure_directory(target) + if not name.endswith('/'): + # file + data = zip.read(info.filename) + f = open(target, 'wb') + try: + f.write(data) + finally: + f.close() + del data + finally: + zip.close() + +def _unpack_tarfile(filename, extract_dir): + """Unpack tar/tar.gz/tar.bz2 `filename` to `extract_dir` + """ + try: + tarobj = tarfile.open(filename) + except tarfile.TarError: + raise ReadError( + "%s is not a compressed or uncompressed tar file" % filename) + try: + tarobj.extractall(extract_dir) + finally: + tarobj.close() + +_UNPACK_FORMATS = { + 'gztar': (['.tar.gz', '.tgz'], _unpack_tarfile, [], "gzip'ed tar-file"), + 'tar': (['.tar'], _unpack_tarfile, [], "uncompressed tar file"), + 'zip': (['.zip'], _unpack_zipfile, [], "ZIP file") + } + +if _BZ2_SUPPORTED: + _UNPACK_FORMATS['bztar'] = (['.bz2'], _unpack_tarfile, [], + "bzip2'ed tar-file") + +def _find_unpack_format(filename): + for name, info in _UNPACK_FORMATS.items(): + for extension in info[0]: + if filename.endswith(extension): + return name + return None + +def unpack_archive(filename, extract_dir=None, format=None): + """Unpack an archive. + + `filename` is the name of the archive. + + `extract_dir` is the name of the target directory, where the archive + is unpacked. If not provided, the current working directory is used. + + `format` is the archive format: one of "zip", "tar", or "gztar". Or any + other registered format. If not provided, unpack_archive will use the + filename extension and see if an unpacker was registered for that + extension. + + In case none is found, a ValueError is raised. + """ + if extract_dir is None: + extract_dir = os.getcwd() + + if format is not None: + try: + format_info = _UNPACK_FORMATS[format] + except KeyError: + raise ValueError("Unknown unpack format '{0}'".format(format)) + + func = format_info[1] + func(filename, extract_dir, **dict(format_info[2])) + else: + # we need to look at the registered unpackers supported extensions + format = _find_unpack_format(filename) + if format is None: + raise ReadError("Unknown archive format '{0}'".format(filename)) + + func = _UNPACK_FORMATS[format][1] + kwargs = dict(_UNPACK_FORMATS[format][2]) + func(filename, extract_dir, **kwargs) diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/shutil.pyc b/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/shutil.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7f5f61c5660aaa8f6b711654bd8590de1cdbcb78 GIT binary patch literal 26212 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 0: + for name in tuple(variables): + value = notdone[name] + m = _findvar1_rx.search(value) or _findvar2_rx.search(value) + if m is not None: + 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] + + elif n in renamed_variables: + if (name.startswith('PY_') and + name[3:] in renamed_variables): + item = "" + + elif 'PY_' + n in notdone: + found = False + + else: + item = str(done['PY_' + 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 + variables.remove(name) + + if (name.startswith('PY_') and + name[3:] in renamed_variables): + + name = name[3:] + if name not in done: + done[name] = value + + else: + # bogus variable reference (e.g. "prefix=$/opt/python"); + # just drop it since we can't deal + done[name] = value + variables.remove(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(): + """Return the path of the Makefile.""" + if _PYTHON_BUILD: + return os.path.join(_PROJECT_BASE, "Makefile") + if hasattr(sys, 'abiflags'): + config_dir_name = 'config-%s%s' % (_PY_VERSION_SHORT, sys.abiflags) + else: + config_dir_name = 'config' + return os.path.join(get_path('stdlib'), config_dir_name, '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 as 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 as 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. + """ + 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(): + """Return 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(): + """Return a tuple containing the schemes names.""" + return tuple(sorted(_SCHEMES.sections())) + + +def get_path_names(): + """Return a tuple containing the paths names.""" + # xxx see if we want a static list + return _SCHEMES.options('posix_prefix') + + +def get_paths(scheme=_get_default_scheme(), vars=None, expand=True): + """Return 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. + """ + _ensure_cfg_read() + if expand: + return _expand_vars(scheme, vars) + else: + return dict(_SCHEMES.items(scheme)) + + +def get_path(name, scheme=_get_default_scheme(), vars=None, expand=True): + """Return 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. + """ + 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 + # distutils2 module. + _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 + try: + _CONFIG_VARS['abiflags'] = sys.abiflags + except AttributeError: + # sys.abiflags may not be defined on all platforms. + _CONFIG_VARS['abiflags'] = '' + + 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. + if sys.version >= '2.6': + _CONFIG_VARS['userbase'] = _getuserbase() + + if 'srcdir' not in _CONFIG_VARS: + _CONFIG_VARS['srcdir'] = _PROJECT_BASE + else: + _CONFIG_VARS['srcdir'] = _safe_realpath(_CONFIG_VARS['srcdir']) + + # 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 macOS 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'. + """ + 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 True: + # 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'ProductUserVisibleVersion\s*' + r'(.*?)', f.read()) + finally: + f.close() + if m is not None: + macrelease = '.'.join(m.group(1).split('.')[:2]) + # else: fall back to the default behaviour + + 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.maxsize >= 2**32: + machine = 'x86_64' + + elif machine in ('PowerPC', 'Power_Macintosh'): + # Pick a sane name for the PPC architecture. + # See 'i386' case + if sys.maxsize >= 2**32: + machine = 'ppc64' + else: + machine = 'ppc' + + return "%s-%s-%s" % (osname, release, machine) + + +def get_python_version(): + return _PY_VERSION_SHORT + + +def _print_dict(title, data): + for index, (key, value) in enumerate(sorted(data.items())): + if index == 0: + print('%s: ' % (title)) + print('\t%s = "%s"' % (key, value)) + + +def _main(): + """Display all information sysconfig detains.""" + print('Platform: "%s"' % get_platform()) + print('Python version: "%s"' % get_python_version()) + print('Current installation scheme: "%s"' % _get_default_scheme()) + print() + _print_dict('Paths', get_paths()) + print() + _print_dict('Variables', get_config_vars()) + + +if __name__ == '__main__': + _main() diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/sysconfig.pyc b/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/sysconfig.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0e55e1ea5a5a65f9f5e89090224fe6948db10a08 GIT binary patch literal 20844 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/tarfile.py b/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/tarfile.py new file mode 100644 index 0000000..d66d856 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/tarfile.py @@ -0,0 +1,2607 @@ +#------------------------------------------------------------------- +# tarfile.py +#------------------------------------------------------------------- +# Copyright (C) 2002 Lars Gustaebel +# 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. +# +from __future__ import print_function + +"""Read from and write to tar format archives. +""" + +__version__ = "$Revision$" + +version = "0.9.0" +__author__ = "Lars Gust\u00e4bel (lars@gustaebel.de)" +__date__ = "$Date: 2011-02-25 17:42:01 +0200 (Fri, 25 Feb 2011) $" +__cvsid__ = "$Id: tarfile.py 88586 2011-02-25 15:42:01Z marc-andre.lemburg $" +__credits__ = "Gustavo Niemeyer, Niels Gust\u00e4bel, Richard Townsend." + +#--------- +# Imports +#--------- +import sys +import os +import stat +import errno +import time +import struct +import copy +import re + +try: + import grp, pwd +except ImportError: + grp = pwd = None + +# os.symlink on Windows prior to 6.0 raises NotImplementedError +symlink_exception = (AttributeError, NotImplementedError) +try: + # WindowsError (1314) will be raised if the caller does not hold the + # SeCreateSymbolicLinkPrivilege privilege + symlink_exception += (WindowsError,) +except NameError: + pass + +# from tarfile import * +__all__ = ["TarFile", "TarInfo", "is_tarfile", "TarError"] + +if sys.version_info[0] < 3: + import __builtin__ as builtins +else: + import builtins + +_open = builtins.open # Since 'open' is TarFile.open + +#--------------------------------------------------------- +# tar constants +#--------------------------------------------------------- +NUL = b"\0" # the null character +BLOCKSIZE = 512 # length of processing blocks +RECORDSIZE = BLOCKSIZE * 20 # length of records +GNU_MAGIC = b"ustar \0" # magic gnu tar string +POSIX_MAGIC = b"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 = b"0" # regular file +AREGTYPE = b"\0" # regular file +LNKTYPE = b"1" # link (inside tarfile) +SYMTYPE = b"2" # symbolic link +CHRTYPE = b"3" # character special device +BLKTYPE = b"4" # block special device +DIRTYPE = b"5" # directory +FIFOTYPE = b"6" # fifo special device +CONTTYPE = b"7" # contiguous file + +GNUTYPE_LONGNAME = b"L" # GNU tar longname +GNUTYPE_LONGLINK = b"K" # GNU tar longlink +GNUTYPE_SPARSE = b"S" # GNU tar sparse file + +XHDTYPE = b"x" # POSIX.1-2001 extended header +XGLTYPE = b"g" # POSIX.1-2001 global header +SOLARIS_XHDTYPE = b"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 from a pax header that are affected by hdrcharset. +PAX_NAME_FIELDS = set(("path", "linkpath", "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 = 0o120000 # symbolic link +S_IFREG = 0o100000 # regular file +S_IFBLK = 0o060000 # block device +S_IFDIR = 0o040000 # directory +S_IFCHR = 0o020000 # character device +S_IFIFO = 0o010000 # fifo + +TSUID = 0o4000 # set UID on execution +TSGID = 0o2000 # set GID on execution +TSVTX = 0o1000 # reserved + +TUREAD = 0o400 # read by owner +TUWRITE = 0o200 # write by owner +TUEXEC = 0o100 # execute/search by owner +TGREAD = 0o040 # read by group +TGWRITE = 0o020 # write by group +TGEXEC = 0o010 # execute/search by group +TOREAD = 0o004 # read by other +TOWRITE = 0o002 # write by other +TOEXEC = 0o001 # execute/search by other + +#--------------------------------------------------------- +# initialization +#--------------------------------------------------------- +if os.name in ("nt", "ce"): + ENCODING = "utf-8" +else: + ENCODING = sys.getfilesystemencoding() + +#--------------------------------------------------------- +# Some useful functions +#--------------------------------------------------------- + +def stn(s, length, encoding, errors): + """Convert a string to a null-terminated bytes object. + """ + s = s.encode(encoding, errors) + return s[:length] + (length - len(s)) * NUL + +def nts(s, encoding, errors): + """Convert a null-terminated bytes object to a string. + """ + p = s.find(b"\0") + if p != -1: + s = s[:p] + return s.decode(encoding, errors) + +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(0o200): + try: + n = int(nts(s, "ascii", "strict") or "0", 8) + except ValueError: + raise InvalidHeaderError("invalid header") + else: + n = 0 + for i in range(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 0o200 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)).encode("ascii") + 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 = bytearray() + for i in range(digits - 1): + s.insert(0, n & 0o377) + n >>= 8 + s.insert(0, 0o200) + return s + +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: + while True: + buf = src.read(16*1024) + if not buf: + break + dst.write(buf) + return + + BUFSIZE = 16 * 1024 + blocks, remainder = divmod(length, BUFSIZE) + for b in range(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 unreadable 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(object): + """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, 0o666) + + 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(object): + """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 = b"" + self.pos = 0 + self.closed = False + + try: + if comptype == "gz": + try: + import zlib + except ImportError: + raise CompressionError("zlib module is not available") + self.zlib = zlib + self.crc = zlib.crc32(b"") + 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 = b"" + self.cmp = bz2.BZ2Decompressor() + else: + self.cmp = bz2.BZ2Compressor() + except: + if not self._extfileobj: + self.fileobj.close() + self.closed = True + raise + + 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(" 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 = b"" + 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("= 0: + blocks, remainder = divmod(pos - self.pos, self.bufsize) + for i in range(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) + 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") + self.dbuf += buf + c += len(buf) + buf = self.dbuf[:size] + self.dbuf = self.dbuf[size:] + return buf + + def __read(self, size): + """Return size bytes from stream. If internal buffer is empty, + read another block from the stream. + """ + c = len(self.buf) + while c < size: + buf = self.fileobj.read(self.bufsize) + if not buf: + break + self.buf += buf + c += len(buf) + buf = self.buf[:size] + self.buf = self.buf[size:] + return buf +# 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(b"\037\213\010"): + return "gz" + if self.buf.startswith(b"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 = b"" + else: + self.bz2obj = bz2.BZ2Compressor() + + def read(self, size): + x = len(self.buf) + while x < size: + raw = self.fileobj.read(self.blocksize) + if not raw: + break + data = self.bz2obj.decompress(raw) + self.buf += data + x += len(data) + + 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, blockinfo=None): + self.fileobj = fileobj + self.offset = offset + self.size = size + self.position = 0 + + if blockinfo is None: + blockinfo = [(0, size)] + + # Construct a map with data and zero blocks. + self.map_index = 0 + self.map = [] + lastpos = 0 + realpos = self.offset + for offset, size in blockinfo: + if offset > lastpos: + self.map.append((False, lastpos, offset, None)) + self.map.append((True, offset, offset + size, realpos)) + realpos += size + lastpos = offset + size + if lastpos < self.size: + self.map.append((False, lastpos, self.size, None)) + + def seekable(self): + if not hasattr(self.fileobj, "seekable"): + # XXX gzip.GzipFile and bz2.BZ2File + return True + return self.fileobj.seekable() + + 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) + + buf = b"" + while size > 0: + while True: + data, start, stop, offset = self.map[self.map_index] + if start <= self.position < stop: + break + else: + self.map_index += 1 + if self.map_index == len(self.map): + self.map_index = 0 + length = min(size, stop - self.position) + if data: + self.fileobj.seek(offset + (self.position - start)) + buf += self.fileobj.read(length) + else: + buf += NUL * length + size -= length + self.position += length + return buf +#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, + tarinfo.sparse) + self.name = tarinfo.name + self.mode = "r" + self.closed = False + self.size = tarinfo.size + + self.position = 0 + self.buffer = b"" + + def readable(self): + return True + + def writable(self): + return False + + def seekable(self): + return self.fileobj.seekable() + + 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 = b"" + if self.buffer: + if size is None: + buf = self.buffer + self.buffer = b"" + 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 + + # XXX TextIOWrapper uses the read1() method. + read1 = read + + 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") + + pos = self.buffer.find(b"\n") + 1 + if pos == 0: + # no newline found. + while True: + buf = self.fileobj.read(self.blocksize) + self.buffer += buf + if not buf or b"\n" in buf: + pos = self.buffer.find(b"\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 = b"" + 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. + """ + + __slots__ = ("name", "mode", "uid", "gid", "size", "mtime", + "chksum", "type", "linkname", "uname", "gname", + "devmajor", "devminor", + "offset", "offset_data", "pax_headers", "sparse", + "tarfile", "_sparse_structs", "_link_target") + + def __init__(self, name=""): + """Construct a TarInfo object. name is the optional name + of the member. + """ + self.name = name # member name + self.mode = 0o644 # 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.sparse = None # sparse member information + 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): + """Return the TarInfo's attributes as a dictionary. + """ + info = { + "name": self.name, + "mode": self.mode & 0o7777, + "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"] += "/" + + return info + + def tobuf(self, format=DEFAULT_FORMAT, encoding=ENCODING, errors="surrogateescape"): + """Return a tar header as a string of 512 byte blocks. + """ + info = self.get_info() + + if format == USTAR_FORMAT: + return self.create_ustar_header(info, encoding, errors) + elif format == GNU_FORMAT: + return self.create_gnu_header(info, encoding, errors) + elif format == PAX_FORMAT: + return self.create_pax_header(info, encoding) + else: + raise ValueError("invalid format") + + def create_ustar_header(self, info, encoding, errors): + """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, encoding, errors) + + def create_gnu_header(self, info, encoding, errors): + """Return the object as a GNU header block sequence. + """ + info["magic"] = GNU_MAGIC + + buf = b"" + if len(info["linkname"]) > LENGTH_LINK: + buf += self._create_gnu_long_header(info["linkname"], GNUTYPE_LONGLINK, encoding, errors) + + if len(info["name"]) > LENGTH_NAME: + buf += self._create_gnu_long_header(info["name"], GNUTYPE_LONGNAME, encoding, errors) + + return buf + self._create_header(info, GNU_FORMAT, encoding, errors) + + def create_pax_header(self, info, encoding): + """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 + + # Try to encode the string as ASCII. + try: + info[name].encode("ascii", "strict") + except UnicodeEncodeError: + pax_headers[hname] = info[name] + continue + + if len(info[name]) > length: + pax_headers[hname] = info[name] + + # 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] = str(val) + info[name] = 0 + + # Create a pax extended header if necessary. + if pax_headers: + buf = self._create_pax_generic_header(pax_headers, XHDTYPE, encoding) + else: + buf = b"" + + return buf + self._create_header(info, USTAR_FORMAT, "ascii", "replace") + + @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, XGLTYPE, "utf8") + + 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, encoding, errors): + """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, encoding, errors), + itn(info.get("mode", 0) & 0o7777, 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), + b" ", # checksum field + info.get("type", REGTYPE), + stn(info.get("linkname", ""), 100, encoding, errors), + info.get("magic", POSIX_MAGIC), + stn(info.get("uname", ""), 32, encoding, errors), + stn(info.get("gname", ""), 32, encoding, errors), + itn(info.get("devmajor", 0), 8, format), + itn(info.get("devminor", 0), 8, format), + stn(info.get("prefix", ""), 155, encoding, errors) + ] + + buf = struct.pack("%ds" % BLOCKSIZE, b"".join(parts)) + chksum = calc_chksums(buf[-BLOCKSIZE:])[0] + buf = buf[:-364] + ("%06o\0" % chksum).encode("ascii") + 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, encoding, errors): + """Return a GNUTYPE_LONGNAME or GNUTYPE_LONGLINK sequence + for name. + """ + name = name.encode(encoding, errors) + 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, encoding, errors) + \ + cls._create_payload(name) + + @classmethod + def _create_pax_generic_header(cls, pax_headers, type, encoding): + """Return a POSIX.1-2008 extended or global header sequence + that contains a list of keyword, value pairs. The values + must be strings. + """ + # Check if one of the fields contains surrogate characters and thereby + # forces hdrcharset=BINARY, see _proc_pax() for more information. + binary = False + for keyword, value in pax_headers.items(): + try: + value.encode("utf8", "strict") + except UnicodeEncodeError: + binary = True + break + + records = b"" + if binary: + # Put the hdrcharset field at the beginning of the header. + records += b"21 hdrcharset=BINARY\n" + + for keyword, value in pax_headers.items(): + keyword = keyword.encode("utf8") + if binary: + # Try to restore the original byte representation of `value'. + # Needless to say, that the encoding must match the string. + value = value.encode(encoding, "surrogateescape") + else: + 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 += bytes(str(p), "ascii") + b" " + keyword + b"=" + value + b"\n" + + # 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, "ascii", "replace") + \ + cls._create_payload(records) + + @classmethod + def frombuf(cls, buf, encoding, errors): + """Construct a TarInfo object from a 512 byte bytes object. + """ + 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.name = nts(buf[0:100], encoding, errors) + 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], encoding, errors) + obj.uname = nts(buf[265:297], encoding, errors) + obj.gname = nts(buf[297:329], encoding, errors) + obj.devmajor = nti(buf[329:337]) + obj.devminor = nti(buf[337:345]) + prefix = nts(buf[345:500], encoding, errors) + + # 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 + + # The old GNU sparse format occupies some of the unused + # space in the buffer for up to 4 sparse structures. + # Save the them for later processing in _proc_sparse(). + if obj.type == GNUTYPE_SPARSE: + pos = 386 + structs = [] + for i in range(4): + try: + offset = nti(buf[pos:pos + 12]) + numbytes = nti(buf[pos + 12:pos + 24]) + except ValueError: + break + structs.append((offset, numbytes)) + pos += 24 + isextended = bool(buf[482]) + origsize = nti(buf[483:495]) + obj._sparse_structs = (structs, isextended, origsize) + + # 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, tarfile.encoding, tarfile.errors) + 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, tarfile.encoding, tarfile.errors) + elif self.type == GNUTYPE_LONGLINK: + next.linkname = nts(buf, tarfile.encoding, tarfile.errors) + + return next + + def _proc_sparse(self, tarfile): + """Process a GNU sparse header plus extra headers. + """ + # We already collected some sparse structures in frombuf(). + structs, isextended, origsize = self._sparse_structs + del self._sparse_structs + + # Collect sparse structures from extended header blocks. + while isextended: + buf = tarfile.fileobj.read(BLOCKSIZE) + pos = 0 + for i in range(21): + try: + offset = nti(buf[pos:pos + 12]) + numbytes = nti(buf[pos + 12:pos + 24]) + except ValueError: + break + if offset and numbytes: + structs.append((offset, numbytes)) + pos += 24 + isextended = bool(buf[504]) + self.sparse = structs + + 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-2008. + """ + # 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() + + # Check if the pax header contains a hdrcharset field. This tells us + # the encoding of the path, linkpath, uname and gname fields. Normally, + # these fields are UTF-8 encoded but since POSIX.1-2008 tar + # implementations are allowed to store them as raw binary strings if + # the translation to UTF-8 fails. + match = re.search(br"\d+ hdrcharset=([^\n]+)\n", buf) + if match is not None: + pax_headers["hdrcharset"] = match.group(1).decode("utf8") + + # For the time being, we don't care about anything other than "BINARY". + # The only other value that is currently allowed by the standard is + # "ISO-IR 10646 2000 UTF-8" in other words UTF-8. + hdrcharset = pax_headers.get("hdrcharset") + if hdrcharset == "BINARY": + encoding = tarfile.encoding + else: + encoding = "utf8" + + # 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(br"(\d+) ([^=]+)=") + 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] + + # Normally, we could just use "utf8" as the encoding and "strict" + # as the error handler, but we better not take the risk. For + # example, GNU tar <= 1.23 is known to store filenames it cannot + # translate to UTF-8 as raw strings (unfortunately without a + # hdrcharset=BINARY header). + # We first try the strict standard encoding, and if that fails we + # fall back on the user's encoding and error handler. + keyword = self._decode_pax_field(keyword, "utf8", "utf8", + tarfile.errors) + if keyword in PAX_NAME_FIELDS: + value = self._decode_pax_field(value, encoding, tarfile.encoding, + tarfile.errors) + else: + value = self._decode_pax_field(value, "utf8", "utf8", + tarfile.errors) + + pax_headers[keyword] = value + pos += length + + # Fetch the next header. + try: + next = self.fromtarfile(tarfile) + except HeaderError: + raise SubsequentHeaderError("missing or bad subsequent header") + + # Process GNU sparse information. + if "GNU.sparse.map" in pax_headers: + # GNU extended sparse format version 0.1. + self._proc_gnusparse_01(next, pax_headers) + + elif "GNU.sparse.size" in pax_headers: + # GNU extended sparse format version 0.0. + self._proc_gnusparse_00(next, pax_headers, buf) + + elif pax_headers.get("GNU.sparse.major") == "1" and pax_headers.get("GNU.sparse.minor") == "0": + # GNU extended sparse format version 1.0. + self._proc_gnusparse_10(next, pax_headers, tarfile) + + 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 _proc_gnusparse_00(self, next, pax_headers, buf): + """Process a GNU tar extended sparse header, version 0.0. + """ + offsets = [] + for match in re.finditer(br"\d+ GNU.sparse.offset=(\d+)\n", buf): + offsets.append(int(match.group(1))) + numbytes = [] + for match in re.finditer(br"\d+ GNU.sparse.numbytes=(\d+)\n", buf): + numbytes.append(int(match.group(1))) + next.sparse = list(zip(offsets, numbytes)) + + def _proc_gnusparse_01(self, next, pax_headers): + """Process a GNU tar extended sparse header, version 0.1. + """ + sparse = [int(x) for x in pax_headers["GNU.sparse.map"].split(",")] + next.sparse = list(zip(sparse[::2], sparse[1::2])) + + def _proc_gnusparse_10(self, next, pax_headers, tarfile): + """Process a GNU tar extended sparse header, version 1.0. + """ + fields = None + sparse = [] + buf = tarfile.fileobj.read(BLOCKSIZE) + fields, buf = buf.split(b"\n", 1) + fields = int(fields) + while len(sparse) < fields * 2: + if b"\n" not in buf: + buf += tarfile.fileobj.read(BLOCKSIZE) + number, buf = buf.split(b"\n", 1) + sparse.append(int(number)) + next.offset_data = tarfile.fileobj.tell() + next.sparse = list(zip(sparse[::2], sparse[1::2])) + + 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.items(): + if keyword == "GNU.sparse.name": + setattr(self, "path", value) + elif keyword == "GNU.sparse.size": + setattr(self, "size", int(value)) + elif keyword == "GNU.sparse.realsize": + setattr(self, "size", int(value)) + elif keyword in PAX_FIELDS: + if keyword in PAX_NUMBER_FIELDS: + try: + value = PAX_NUMBER_FIELDS[keyword](value) + except ValueError: + value = 0 + if keyword == "path": + value = value.rstrip("/") + setattr(self, keyword, value) + + self.pax_headers = pax_headers.copy() + + def _decode_pax_field(self, value, encoding, fallback_encoding, fallback_errors): + """Decode a single field from a pax record. + """ + try: + return value.decode(encoding, "strict") + except UnicodeDecodeError: + return value.decode(fallback_encoding, fallback_errors) + + 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.sparse is not None + 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="surrogateescape", 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 + self.errors = errors + + 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 as 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 + + #-------------------------------------------------------------------------- + # 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) as 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'") + + stream = _Stream(name, filemode, comptype, fileobj, bufsize) + try: + t = cls(name, filemode, stream, **kwargs) + except: + stream.close() + raise + 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") + + extfileobj = fileobj is not None + try: + fileobj = gzip.GzipFile(name, mode + "b", compresslevel, fileobj) + t = cls.taropen(name, mode, fileobj, **kwargs) + except IOError: + if not extfileobj and fileobj is not None: + fileobj.close() + if fileobj is None: + raise + raise ReadError("not a gzip file") + except: + if not extfileobj and fileobj is not None: + fileobj.close() + raise + t._extfileobj = extfileobj + 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): + fileobj.close() + 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 = 0 + 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), end=' ') + print("%s/%s" % (tarinfo.uname or tarinfo.uid, + tarinfo.gname or tarinfo.gid), end=' ') + if tarinfo.ischr() or tarinfo.isblk(): + print("%10s" % ("%d,%d" \ + % (tarinfo.devmajor, tarinfo.devminor)), end=' ') + else: + print("%10d" % tarinfo.size, end=' ') + print("%d-%02d-%02d %02d:%02d:%02d" \ + % time.localtime(tarinfo.mtime)[:6], end=' ') + + print(tarinfo.name + ("/" if tarinfo.isdir() else ""), end=' ') + + if verbose: + if tarinfo.issym(): + print("->", tarinfo.linkname, end=' ') + if tarinfo.islnk(): + print("link to", tarinfo.linkname, end=' ') + 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=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 = 0o700 + # Do not set_attrs directories, as we will do that further down + self.extract(tarinfo, path, set_attrs=not tarinfo.isdir()) + + # Reverse sort directories. + directories.sort(key=lambda a: a.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 as e: + if self.errorlevel > 1: + raise + else: + self._dbg(1, "tarfile: %s" % e) + + def extract(self, member, path="", set_attrs=True): + """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'. File attributes (owner, + mtime, mode) are set unless `set_attrs' is False. + """ + self._check("r") + + if isinstance(member, str): + 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), + set_attrs=set_attrs) + except EnvironmentError as 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 as 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, str): + 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, set_attrs=True): + """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) + + if set_attrs: + 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, 0o700) + except EnvironmentError as e: + if e.errno != errno.EEXIST: + raise + + def makefile(self, tarinfo, targetpath): + """Make a file called targetpath. + """ + source = self.fileobj + source.seek(tarinfo.offset_data) + target = bltn_open(targetpath, "wb") + if tarinfo.sparse is not None: + for offset, size in tarinfo.sparse: + target.seek(offset) + copyfileobj(source, target, size) + else: + copyfileobj(source, target, tarinfo.size) + target.seek(tarinfo.size) + target.truncate() + 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. + """ + try: + # For systems that support symbolic and hard links. + if tarinfo.issym(): + os.symlink(tarinfo.linkname, targetpath) + else: + # See extract(). + if os.path.exists(tarinfo._link_target): + os.link(tarinfo._link_target, targetpath) + else: + self._extract_member(self._find_link_target(tarinfo), + targetpath) + except symlink_exception: + if tarinfo.issym(): + linkpath = os.path.join(os.path.dirname(tarinfo.name), + tarinfo.linkname) + else: + linkpath = tarinfo.linkname + 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: + g = tarinfo.gid + try: + u = pwd.getpwnam(tarinfo.uname)[2] + except KeyError: + u = tarinfo.uid + 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 as 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 as 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 as 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 as e: + if self.ignore_zeros: + self._dbg(2, "0x%X: %s" % (self.offset, e)) + self.offset += BLOCKSIZE + continue + except InvalidHeaderError as 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 as e: + if self.offset == 0: + raise ReadError(str(e)) + except SubsequentHeaderError as 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(msg, file=sys.stderr) + + 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(object): + """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 + + next = __next__ # for Python 2.x + +#-------------------- +# 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/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/tarfile.pyc b/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/tarfile.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3a025aeb56b7299f7dd86c1c9555715fb28b1e0f GIT binary patch literal 78796 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 D`iO-w#}oI=j~(3N_|Bd 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/compat.py b/env/lib/python2.7/site-packages/pip/_vendor/distlib/compat.py new file mode 100644 index 0000000..2b198dd --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/distlib/compat.py @@ -0,0 +1,1111 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013-2016 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +from __future__ import absolute_import + +import os +import re +import sys + +try: + import ssl +except ImportError: + ssl = None + +if sys.version_info[0] < 3: # pragma: no cover + from StringIO import StringIO + string_types = basestring, + text_type = unicode + from types import FileType as file_type + import __builtin__ as builtins + import ConfigParser as configparser + from ._backport import shutil + from urlparse import urlparse, urlunparse, urljoin, urlsplit, urlunsplit + from urllib import (urlretrieve, quote as _quote, unquote, url2pathname, + pathname2url, ContentTooShortError, splittype) + + def quote(s): + if isinstance(s, unicode): + s = s.encode('utf-8') + return _quote(s) + + import urllib2 + from urllib2 import (Request, urlopen, URLError, HTTPError, + HTTPBasicAuthHandler, HTTPPasswordMgr, + HTTPHandler, HTTPRedirectHandler, + build_opener) + if ssl: + from urllib2 import HTTPSHandler + import httplib + import xmlrpclib + import Queue as queue + from HTMLParser import HTMLParser + import htmlentitydefs + raw_input = raw_input + from itertools import ifilter as filter + from itertools import ifilterfalse as filterfalse + + _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 + +else: # pragma: no cover + from io import StringIO + string_types = str, + text_type = str + from io import TextIOWrapper as file_type + import builtins + import configparser + import shutil + from urllib.parse import (urlparse, urlunparse, urljoin, splituser, quote, + unquote, urlsplit, urlunsplit, splittype) + from urllib.request import (urlopen, urlretrieve, Request, url2pathname, + pathname2url, + HTTPBasicAuthHandler, HTTPPasswordMgr, + HTTPHandler, HTTPRedirectHandler, + build_opener) + if ssl: + from urllib.request import HTTPSHandler + from urllib.error import HTTPError, URLError, ContentTooShortError + import http.client as httplib + import urllib.request as urllib2 + import xmlrpc.client as xmlrpclib + import queue + from html.parser import HTMLParser + import html.entities as htmlentitydefs + raw_input = input + from itertools import filterfalse + filter = filter + +try: + from ssl import match_hostname, CertificateError +except ImportError: # pragma: no cover + class CertificateError(ValueError): + pass + + + def _dnsname_match(dn, hostname, max_wildcards=1): + """Matching according to RFC 6125, section 6.4.3 + + http://tools.ietf.org/html/rfc6125#section-6.4.3 + """ + pats = [] + if not dn: + return False + + parts = dn.split('.') + leftmost, remainder = parts[0], parts[1:] + + wildcards = leftmost.count('*') + if wildcards > max_wildcards: + # Issue #17980: avoid denials of service by refusing more + # than one wildcard per fragment. A survey of established + # policy among SSL implementations showed it to be a + # reasonable choice. + raise CertificateError( + "too many wildcards in certificate DNS name: " + repr(dn)) + + # speed up common case w/o wildcards + if not wildcards: + return dn.lower() == hostname.lower() + + # RFC 6125, section 6.4.3, subitem 1. + # The client SHOULD NOT attempt to match a presented identifier in which + # the wildcard character comprises a label other than the left-most label. + if leftmost == '*': + # When '*' is a fragment by itself, it matches a non-empty dotless + # fragment. + pats.append('[^.]+') + elif leftmost.startswith('xn--') or hostname.startswith('xn--'): + # RFC 6125, section 6.4.3, subitem 3. + # The client SHOULD NOT attempt to match a presented identifier + # where the wildcard character is embedded within an A-label or + # U-label of an internationalized domain name. + pats.append(re.escape(leftmost)) + else: + # Otherwise, '*' matches any dotless string, e.g. www* + pats.append(re.escape(leftmost).replace(r'\*', '[^.]*')) + + # add the remaining fragments, ignore any wildcards + for frag in remainder: + pats.append(re.escape(frag)) + + pat = re.compile(r'\A' + r'\.'.join(pats) + r'\Z', re.IGNORECASE) + return pat.match(hostname) + + + def match_hostname(cert, hostname): + """Verify that *cert* (in decoded format as returned by + SSLSocket.getpeercert()) matches the *hostname*. RFC 2818 and RFC 6125 + rules are followed, but IP addresses are not accepted for *hostname*. + + CertificateError is raised on failure. On success, the function + returns nothing. + """ + if not cert: + raise ValueError("empty or no certificate, match_hostname needs a " + "SSL socket or SSL context with either " + "CERT_OPTIONAL or CERT_REQUIRED") + dnsnames = [] + san = cert.get('subjectAltName', ()) + for key, value in san: + if key == 'DNS': + if _dnsname_match(value, hostname): + return + dnsnames.append(value) + if not dnsnames: + # The subject is only checked when there is no dNSName entry + # in subjectAltName + for sub in cert.get('subject', ()): + for key, value in sub: + # XXX according to RFC 2818, the most specific Common Name + # must be used. + if key == 'commonName': + if _dnsname_match(value, hostname): + return + dnsnames.append(value) + if len(dnsnames) > 1: + raise CertificateError("hostname %r " + "doesn't match either of %s" + % (hostname, ', '.join(map(repr, dnsnames)))) + elif len(dnsnames) == 1: + raise CertificateError("hostname %r " + "doesn't match %r" + % (hostname, dnsnames[0])) + else: + raise CertificateError("no appropriate commonName or " + "subjectAltName fields were found") + + +try: + from types import SimpleNamespace as Container +except ImportError: # pragma: no cover + class Container(object): + """ + A generic container for when multiple values need to be returned + """ + def __init__(self, **kwargs): + self.__dict__.update(kwargs) + + +try: + from shutil import which +except ImportError: # pragma: no cover + # Implementation from Python 3.3 + def which(cmd, mode=os.F_OK | os.X_OK, path=None): + """Given a command, mode, and a PATH string, return the path which + conforms to the given mode on the PATH, or None if there is no such + file. + + `mode` defaults to os.F_OK | os.X_OK. `path` defaults to the result + of os.environ.get("PATH"), or can be overridden with a custom search + path. + + """ + # Check that a given file can be accessed with the correct mode. + # Additionally check that `file` is not a directory, as on Windows + # directories pass the os.access check. + def _access_check(fn, mode): + return (os.path.exists(fn) and os.access(fn, mode) + and not os.path.isdir(fn)) + + # If we're given a path with a directory part, look it up directly rather + # than referring to PATH directories. This includes checking relative to the + # current directory, e.g. ./script + if os.path.dirname(cmd): + if _access_check(cmd, mode): + return cmd + return None + + if path is None: + path = os.environ.get("PATH", os.defpath) + if not path: + return None + path = path.split(os.pathsep) + + if sys.platform == "win32": + # The current directory takes precedence on Windows. + if not os.curdir in path: + path.insert(0, os.curdir) + + # PATHEXT is necessary to check on Windows. + pathext = os.environ.get("PATHEXT", "").split(os.pathsep) + # See if the given file matches any of the expected path extensions. + # This will allow us to short circuit when given "python.exe". + # If it does match, only test that one, otherwise we have to try + # others. + if any(cmd.lower().endswith(ext.lower()) for ext in pathext): + files = [cmd] + else: + files = [cmd + ext for ext in pathext] + else: + # On other platforms you don't have things like PATHEXT to tell you + # what file suffixes are executable, so just pass on cmd as-is. + files = [cmd] + + seen = set() + for dir in path: + normdir = os.path.normcase(dir) + if not normdir in seen: + seen.add(normdir) + for thefile in files: + name = os.path.join(dir, thefile) + if _access_check(name, mode): + return name + return None + + +# ZipFile is a context manager in 2.7, but not in 2.6 + +from zipfile import ZipFile as BaseZipFile + +if hasattr(BaseZipFile, '__enter__'): # pragma: no cover + ZipFile = BaseZipFile +else: + from zipfile import ZipExtFile as BaseZipExtFile + + class ZipExtFile(BaseZipExtFile): + def __init__(self, base): + self.__dict__.update(base.__dict__) + + def __enter__(self): + return self + + def __exit__(self, *exc_info): + self.close() + # return None, so if an exception occurred, it will propagate + + class ZipFile(BaseZipFile): + def __enter__(self): + return self + + def __exit__(self, *exc_info): + self.close() + # return None, so if an exception occurred, it will propagate + + def open(self, *args, **kwargs): + base = BaseZipFile.open(self, *args, **kwargs) + return ZipExtFile(base) + +try: + from platform import python_implementation +except ImportError: # pragma: no cover + def python_implementation(): + """Return a string identifying the Python implementation.""" + if 'PyPy' in sys.version: + return 'PyPy' + if os.name == 'java': + return 'Jython' + if sys.version.startswith('IronPython'): + return 'IronPython' + return 'CPython' + +try: + import sysconfig +except ImportError: # pragma: no cover + from ._backport import sysconfig + +try: + callable = callable +except NameError: # pragma: no cover + from collections import Callable + + def callable(obj): + return isinstance(obj, Callable) + + +try: + fsencode = os.fsencode + fsdecode = os.fsdecode +except AttributeError: # pragma: no cover + _fsencoding = sys.getfilesystemencoding() + if _fsencoding == 'mbcs': + _fserrors = 'strict' + else: + _fserrors = 'surrogateescape' + + def fsencode(filename): + if isinstance(filename, bytes): + return filename + elif isinstance(filename, text_type): + return filename.encode(_fsencoding, _fserrors) + else: + raise TypeError("expect bytes or str, not %s" % + type(filename).__name__) + + def fsdecode(filename): + if isinstance(filename, text_type): + return filename + elif isinstance(filename, bytes): + return filename.decode(_fsencoding, _fserrors) + else: + raise TypeError("expect bytes or str, not %s" % + type(filename).__name__) + +try: + from tokenize import detect_encoding +except ImportError: # pragma: no cover + from codecs import BOM_UTF8, lookup + import re + + 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 argument, 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. + """ + try: + filename = readline.__self__.name + except AttributeError: + filename = None + bom_found = False + encoding = None + default = 'utf-8' + def read_or_stop(): + try: + return readline() + except StopIteration: + return b'' + + def find_cookie(line): + try: + # Decode as UTF-8. Either the line is an encoding declaration, + # in which case it should be pure ASCII, or it must be UTF-8 + # per default encoding. + line_string = line.decode('utf-8') + except UnicodeDecodeError: + msg = "invalid or missing encoding declaration" + if filename is not None: + msg = '{} for {!r}'.format(msg, filename) + raise SyntaxError(msg) + + 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 + if filename is None: + msg = "unknown encoding: " + encoding + else: + msg = "unknown encoding for {!r}: {}".format(filename, + encoding) + raise SyntaxError(msg) + + if bom_found: + if codec.name != 'utf-8': + # This behaviour mimics the Python interpreter + if filename is None: + msg = 'encoding problem: utf-8' + else: + msg = 'encoding problem for {!r}: utf-8'.format(filename) + raise SyntaxError(msg) + 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] + +# For converting & <-> & etc. +try: + from html import escape +except ImportError: + from cgi import escape +if sys.version_info[:2] < (3, 4): + unescape = HTMLParser().unescape +else: + from html import unescape + +try: + from collections import ChainMap +except ImportError: # pragma: no cover + from collections import MutableMapping + + try: + from reprlib import recursive_repr as _recursive_repr + except ImportError: + def _recursive_repr(fillvalue='...'): + ''' + Decorator to make a repr function return fillvalue for a recursive + call + ''' + + def decorating_function(user_function): + repr_running = set() + + def wrapper(self): + key = id(self), get_ident() + if key in repr_running: + return fillvalue + repr_running.add(key) + try: + result = user_function(self) + finally: + repr_running.discard(key) + return result + + # Can't use functools.wraps() here because of bootstrap issues + wrapper.__module__ = getattr(user_function, '__module__') + wrapper.__doc__ = getattr(user_function, '__doc__') + wrapper.__name__ = getattr(user_function, '__name__') + wrapper.__annotations__ = getattr(user_function, '__annotations__', {}) + return wrapper + + return decorating_function + + class ChainMap(MutableMapping): + ''' A ChainMap groups multiple dicts (or other mappings) together + to create a single, updateable view. + + The underlying mappings are stored in a list. That list is public and can + accessed or updated using the *maps* attribute. There is no other state. + + Lookups search the underlying mappings successively until a key is found. + In contrast, writes, updates, and deletions only operate on the first + mapping. + + ''' + + def __init__(self, *maps): + '''Initialize a ChainMap by setting *maps* to the given mappings. + If no mappings are provided, a single empty dictionary is used. + + ''' + self.maps = list(maps) or [{}] # always at least one map + + def __missing__(self, key): + raise KeyError(key) + + def __getitem__(self, key): + for mapping in self.maps: + try: + return mapping[key] # can't use 'key in mapping' with defaultdict + except KeyError: + pass + return self.__missing__(key) # support subclasses that define __missing__ + + def get(self, key, default=None): + return self[key] if key in self else default + + def __len__(self): + return len(set().union(*self.maps)) # reuses stored hash values if possible + + def __iter__(self): + return iter(set().union(*self.maps)) + + def __contains__(self, key): + return any(key in m for m in self.maps) + + def __bool__(self): + return any(self.maps) + + @_recursive_repr() + def __repr__(self): + return '{0.__class__.__name__}({1})'.format( + self, ', '.join(map(repr, self.maps))) + + @classmethod + def fromkeys(cls, iterable, *args): + 'Create a ChainMap with a single dict created from the iterable.' + return cls(dict.fromkeys(iterable, *args)) + + def copy(self): + 'New ChainMap or subclass with a new copy of maps[0] and refs to maps[1:]' + return self.__class__(self.maps[0].copy(), *self.maps[1:]) + + __copy__ = copy + + def new_child(self): # like Django's Context.push() + 'New ChainMap with a new dict followed by all previous maps.' + return self.__class__({}, *self.maps) + + @property + def parents(self): # like Django's Context.pop() + 'New ChainMap from maps[1:].' + return self.__class__(*self.maps[1:]) + + def __setitem__(self, key, value): + self.maps[0][key] = value + + def __delitem__(self, key): + try: + del self.maps[0][key] + except KeyError: + raise KeyError('Key not found in the first mapping: {!r}'.format(key)) + + def popitem(self): + 'Remove and return an item pair from maps[0]. Raise KeyError is maps[0] is empty.' + try: + return self.maps[0].popitem() + except KeyError: + raise KeyError('No keys found in the first mapping.') + + def pop(self, key, *args): + 'Remove *key* from maps[0] and return its value. Raise KeyError if *key* not in maps[0].' + try: + return self.maps[0].pop(key, *args) + except KeyError: + raise KeyError('Key not found in the first mapping: {!r}'.format(key)) + + def clear(self): + 'Clear maps[0], leaving maps[1:] intact.' + self.maps[0].clear() + +try: + from imp import cache_from_source +except ImportError: # pragma: no cover + def cache_from_source(path, debug_override=None): + assert path.endswith('.py') + if debug_override is None: + debug_override = __debug__ + if debug_override: + suffix = 'c' + else: + suffix = 'o' + return path + suffix + +try: + from collections import OrderedDict +except ImportError: # pragma: no cover +## {{{ http://code.activestate.com/recipes/576693/ (r9) +# Backport of OrderedDict() class that runs on Python 2.4, 2.5, 2.6, 2.7 and pypy. +# Passes Python2.7's test suite and incorporates all the latest updates. + try: + from thread import get_ident as _get_ident + except ImportError: + from dummy_thread import get_ident as _get_ident + + try: + from _abcoll import KeysView, ValuesView, ItemsView + except ImportError: + pass + + + 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 for regular dictionaries. + + # The internal self.__map dictionary 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. Signature is the same as for + 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, dict_setitem=dict.__setitem__): + 'od.__setitem__(i, y) <==> od[i]=y' + # Setting a new item creates a new link which goes 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[0] + last[1] = root[0] = self.__map[key] = [last, root, key] + dict_setitem(self, key, value) + + def __delitem__(self, key, dict_delitem=dict.__delitem__): + 'od.__delitem__(y) <==> del od[y]' + # Deleting an existing item uses self.__map to find the link which is + # then 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[1] = link_next + link_next[0] = link_prev + + def __iter__(self): + 'od.__iter__() <==> iter(od)' + root = self.__root + curr = root[1] + while curr is not root: + yield curr[2] + curr = curr[1] + + def __reversed__(self): + 'od.__reversed__() <==> reversed(od)' + root = self.__root + curr = root[0] + while curr is not root: + yield curr[2] + curr = curr[0] + + def clear(self): + 'od.clear() -> None. Remove all items from od.' + try: + for node in self.__map.itervalues(): + del node[:] + root = self.__root + root[:] = [root, root, None] + self.__map.clear() + except AttributeError: + pass + dict.clear(self) + + 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') + root = self.__root + if last: + link = root[0] + link_prev = link[0] + link_prev[1] = root + root[0] = link_prev + else: + link = root[1] + link_next = link[1] + root[1] = link_next + link_next[0] = root + key = link[2] + del self.__map[key] + value = dict.pop(self, key) + return key, value + + # -- 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) items in od' + for k in self: + yield (k, self[k]) + + def update(*args, **kwds): + '''od.update(E, **F) -> None. Update od from dict/iterable E and F. + + If E is a dict instance, does: for k in E: od[k] = E[k] + If E has a .keys() method, does: for k in E.keys(): od[k] = E[k] + Or if E is an iterable of items, does: for k, v in E: od[k] = v + In either case, this is followed by: for k, v in F.items(): od[k] = v + + ''' + if len(args) > 2: + raise TypeError('update() takes at most 2 positional ' + 'arguments (%d given)' % (len(args),)) + elif not args: + raise TypeError('update() takes at least 1 argument (0 given)') + self = args[0] + # Make progressively weaker assumptions about "other" + other = () + if len(args) == 2: + other = args[1] + if isinstance(other, dict): + 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 + + __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 __repr__(self, _repr_running=None): + 'od.__repr__() <==> repr(od)' + if not _repr_running: _repr_running = {} + 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 + and values equal to v (which defaults to None). + + ''' + d = cls() + for key in iterable: + d[key] = value + return d + + 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): + return not self == other + + # -- the following methods are only used in Python 2.7 -- + + 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) + +try: + from logging.config import BaseConfigurator, valid_ident +except ImportError: # pragma: no cover + 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[a-z]+)://(?P.*)$') + + 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 = staticmethod(__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, string_types): + 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 callable(c): + 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 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/compat.pyc b/env/lib/python2.7/site-packages/pip/_vendor/distlib/compat.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b005ef2b4209e89f638da2e0928ca0a16d903448 GIT binary patch literal 39045 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/database.py b/env/lib/python2.7/site-packages/pip/_vendor/distlib/database.py new file mode 100644 index 0000000..c314426 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/distlib/database.py @@ -0,0 +1,1312 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2016 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""PEP 376 implementation.""" + +from __future__ import unicode_literals + +import base64 +import codecs +import contextlib +import hashlib +import logging +import os +import posixpath +import sys +import zipimport + +from . import DistlibException, resources +from .compat import StringIO +from .version import get_scheme, UnsupportedVersionError +from .metadata import Metadata, METADATA_FILENAME, WHEEL_METADATA_FILENAME +from .util import (parse_requirement, cached_property, parse_name_and_version, + read_exports, write_exports, CSVReader, CSVWriter) + + +__all__ = ['Distribution', 'BaseInstalledDistribution', + 'InstalledDistribution', 'EggInfoDistribution', + 'DistributionPath'] + + +logger = logging.getLogger(__name__) + +EXPORTS_FILENAME = 'pydist-exports.json' +COMMANDS_FILENAME = 'pydist-commands.json' + +DIST_FILES = ('INSTALLER', METADATA_FILENAME, 'RECORD', 'REQUESTED', + 'RESOURCES', EXPORTS_FILENAME, 'SHARED') + +DISTINFO_EXT = '.dist-info' + + +class _Cache(object): + """ + A simple cache mapping names and .dist-info paths to distributions + """ + def __init__(self): + """ + Initialise an instance. There is normally one for each DistributionPath. + """ + self.name = {} + self.path = {} + self.generated = False + + def clear(self): + """ + Clear the cache, setting it to its initial state. + """ + self.name.clear() + self.path.clear() + self.generated = False + + def add(self, dist): + """ + Add a distribution to the cache. + :param dist: The distribution to add. + """ + if dist.path not in self.path: + self.path[dist.path] = dist + self.name.setdefault(dist.key, []).append(dist) + + +class DistributionPath(object): + """ + Represents a set of distributions installed on a path (typically sys.path). + """ + def __init__(self, path=None, include_egg=False): + """ + Create an instance from a path, optionally including legacy (distutils/ + setuptools/distribute) distributions. + :param path: The path to use, as a list of directories. If not specified, + sys.path is used. + :param include_egg: If True, this instance will look for and return legacy + distributions as well as those based on PEP 376. + """ + if path is None: + path = sys.path + self.path = path + self._include_dist = True + self._include_egg = include_egg + + self._cache = _Cache() + self._cache_egg = _Cache() + self._cache_enabled = True + self._scheme = get_scheme('default') + + def _get_cache_enabled(self): + return self._cache_enabled + + def _set_cache_enabled(self, value): + self._cache_enabled = value + + cache_enabled = property(_get_cache_enabled, _set_cache_enabled) + + def clear_cache(self): + """ + Clears the internal cache. + """ + self._cache.clear() + self._cache_egg.clear() + + + def _yield_distributions(self): + """ + Yield .dist-info and/or .egg(-info) distributions. + """ + # We need to check if we've seen some resources already, because on + # some Linux systems (e.g. some Debian/Ubuntu variants) there are + # symlinks which alias other files in the environment. + seen = set() + for path in self.path: + finder = resources.finder_for_path(path) + if finder is None: + continue + r = finder.find('') + if not r or not r.is_container: + continue + rset = sorted(r.resources) + for entry in rset: + r = finder.find(entry) + if not r or r.path in seen: + continue + if self._include_dist and entry.endswith(DISTINFO_EXT): + possible_filenames = [METADATA_FILENAME, WHEEL_METADATA_FILENAME] + for metadata_filename in possible_filenames: + metadata_path = posixpath.join(entry, metadata_filename) + pydist = finder.find(metadata_path) + if pydist: + break + else: + continue + + with contextlib.closing(pydist.as_stream()) as stream: + metadata = Metadata(fileobj=stream, scheme='legacy') + logger.debug('Found %s', r.path) + seen.add(r.path) + yield new_dist_class(r.path, metadata=metadata, + env=self) + elif self._include_egg and entry.endswith(('.egg-info', + '.egg')): + logger.debug('Found %s', r.path) + seen.add(r.path) + yield old_dist_class(r.path, self) + + def _generate_cache(self): + """ + Scan the path for distributions and populate the cache with + those that are found. + """ + gen_dist = not self._cache.generated + gen_egg = self._include_egg and not self._cache_egg.generated + if gen_dist or gen_egg: + for dist in self._yield_distributions(): + if isinstance(dist, InstalledDistribution): + self._cache.add(dist) + else: + self._cache_egg.add(dist) + + if gen_dist: + self._cache.generated = True + if gen_egg: + self._cache_egg.generated = True + + @classmethod + def distinfo_dirname(cls, name, version): + """ + The *name* and *version* parameters are converted into their + filename-escaped form, i.e. any ``'-'`` characters are replaced + with ``'_'`` other than the one in ``'dist-info'`` and the one + separating the name from the version number. + + :parameter name: is converted to a standard distribution name by replacing + any runs of non- alphanumeric characters with a single + ``'-'``. + :type name: string + :parameter version: is converted to a standard version string. Spaces + become dots, and all other non-alphanumeric characters + (except dots) become dashes, with runs of multiple + dashes condensed to a single dash. + :type version: string + :returns: directory name + :rtype: string""" + name = name.replace('-', '_') + return '-'.join([name, version]) + DISTINFO_EXT + + def get_distributions(self): + """ + Provides an iterator that looks for distributions and returns + :class:`InstalledDistribution` or + :class:`EggInfoDistribution` instances for each one of them. + + :rtype: iterator of :class:`InstalledDistribution` and + :class:`EggInfoDistribution` instances + """ + if not self._cache_enabled: + for dist in self._yield_distributions(): + yield dist + else: + self._generate_cache() + + for dist in self._cache.path.values(): + yield dist + + if self._include_egg: + for dist in self._cache_egg.path.values(): + yield dist + + def get_distribution(self, name): + """ + Looks for a named distribution on the path. + + This function only returns the first result found, as no more than one + value is expected. If nothing is found, ``None`` is returned. + + :rtype: :class:`InstalledDistribution`, :class:`EggInfoDistribution` + or ``None`` + """ + result = None + name = name.lower() + if not self._cache_enabled: + for dist in self._yield_distributions(): + if dist.key == name: + result = dist + break + else: + self._generate_cache() + + if name in self._cache.name: + result = self._cache.name[name][0] + elif self._include_egg and name in self._cache_egg.name: + result = self._cache_egg.name[name][0] + return result + + def provides_distribution(self, name, version=None): + """ + Iterates over all distributions to find which distributions provide *name*. + If a *version* is provided, it will be used to filter the results. + + This function only returns the first result found, since no more than + one values are expected. If the directory is not found, returns ``None``. + + :parameter version: a version specifier that indicates the version + required, conforming to the format in ``PEP-345`` + + :type name: string + :type version: string + """ + matcher = None + if not version is None: + try: + matcher = self._scheme.matcher('%s (%s)' % (name, version)) + except ValueError: + raise DistlibException('invalid name or version: %r, %r' % + (name, version)) + + for dist in self.get_distributions(): + provided = dist.provides + + for p in provided: + p_name, p_ver = parse_name_and_version(p) + if matcher is None: + if p_name == name: + yield dist + break + else: + if p_name == name and matcher.match(p_ver): + yield dist + break + + def get_file_path(self, name, relative_path): + """ + Return the path to a resource file. + """ + dist = self.get_distribution(name) + if dist is None: + raise LookupError('no distribution named %r found' % name) + return dist.get_resource_path(relative_path) + + def get_exported_entries(self, category, name=None): + """ + Return all of the exported entries in a particular category. + + :param category: The category to search for entries. + :param name: If specified, only entries with that name are returned. + """ + for dist in self.get_distributions(): + r = dist.exports + if category in r: + d = r[category] + if name is not None: + if name in d: + yield d[name] + else: + for v in d.values(): + yield v + + +class Distribution(object): + """ + A base class for distributions, whether installed or from indexes. + Either way, it must have some metadata, so that's all that's needed + for construction. + """ + + build_time_dependency = False + """ + Set to True if it's known to be only a build-time dependency (i.e. + not needed after installation). + """ + + requested = False + """A boolean that indicates whether the ``REQUESTED`` metadata file is + present (in other words, whether the package was installed by user + request or it was installed as a dependency).""" + + def __init__(self, metadata): + """ + Initialise an instance. + :param metadata: The instance of :class:`Metadata` describing this + distribution. + """ + self.metadata = metadata + self.name = metadata.name + self.key = self.name.lower() # for case-insensitive comparisons + self.version = metadata.version + self.locator = None + self.digest = None + self.extras = None # additional features requested + self.context = None # environment marker overrides + self.download_urls = set() + self.digests = {} + + @property + def source_url(self): + """ + The source archive download URL for this distribution. + """ + return self.metadata.source_url + + download_url = source_url # Backward compatibility + + @property + def name_and_version(self): + """ + A utility property which displays the name and version in parentheses. + """ + return '%s (%s)' % (self.name, self.version) + + @property + def provides(self): + """ + A set of distribution names and versions provided by this distribution. + :return: A set of "name (version)" strings. + """ + plist = self.metadata.provides + s = '%s (%s)' % (self.name, self.version) + if s not in plist: + plist.append(s) + return plist + + def _get_requirements(self, req_attr): + md = self.metadata + logger.debug('Getting requirements from metadata %r', md.todict()) + reqts = getattr(md, req_attr) + return set(md.get_requirements(reqts, extras=self.extras, + env=self.context)) + + @property + def run_requires(self): + return self._get_requirements('run_requires') + + @property + def meta_requires(self): + return self._get_requirements('meta_requires') + + @property + def build_requires(self): + return self._get_requirements('build_requires') + + @property + def test_requires(self): + return self._get_requirements('test_requires') + + @property + def dev_requires(self): + return self._get_requirements('dev_requires') + + def matches_requirement(self, req): + """ + Say if this instance matches (fulfills) a requirement. + :param req: The requirement to match. + :rtype req: str + :return: True if it matches, else False. + """ + # Requirement may contain extras - parse to lose those + # from what's passed to the matcher + r = parse_requirement(req) + scheme = get_scheme(self.metadata.scheme) + try: + matcher = scheme.matcher(r.requirement) + except UnsupportedVersionError: + # XXX compat-mode if cannot read the version + logger.warning('could not read version %r - using name only', + req) + name = req.split()[0] + matcher = scheme.matcher(name) + + name = matcher.key # case-insensitive + + result = False + for p in self.provides: + p_name, p_ver = parse_name_and_version(p) + if p_name != name: + continue + try: + result = matcher.match(p_ver) + break + except UnsupportedVersionError: + pass + return result + + def __repr__(self): + """ + Return a textual representation of this instance, + """ + if self.source_url: + suffix = ' [%s]' % self.source_url + else: + suffix = '' + return '' % (self.name, self.version, suffix) + + def __eq__(self, other): + """ + See if this distribution is the same as another. + :param other: The distribution to compare with. To be equal to one + another. distributions must have the same type, name, + version and source_url. + :return: True if it is the same, else False. + """ + if type(other) is not type(self): + result = False + else: + result = (self.name == other.name and + self.version == other.version and + self.source_url == other.source_url) + return result + + def __hash__(self): + """ + Compute hash in a way which matches the equality test. + """ + return hash(self.name) + hash(self.version) + hash(self.source_url) + + +class BaseInstalledDistribution(Distribution): + """ + This is the base class for installed distributions (whether PEP 376 or + legacy). + """ + + hasher = None + + def __init__(self, metadata, path, env=None): + """ + Initialise an instance. + :param metadata: An instance of :class:`Metadata` which describes the + distribution. This will normally have been initialised + from a metadata file in the ``path``. + :param path: The path of the ``.dist-info`` or ``.egg-info`` + directory for the distribution. + :param env: This is normally the :class:`DistributionPath` + instance where this distribution was found. + """ + super(BaseInstalledDistribution, self).__init__(metadata) + self.path = path + self.dist_path = env + + def get_hash(self, data, hasher=None): + """ + Get the hash of some data, using a particular hash algorithm, if + specified. + + :param data: The data to be hashed. + :type data: bytes + :param hasher: The name of a hash implementation, supported by hashlib, + or ``None``. Examples of valid values are ``'sha1'``, + ``'sha224'``, ``'sha384'``, '``sha256'``, ``'md5'`` and + ``'sha512'``. If no hasher is specified, the ``hasher`` + attribute of the :class:`InstalledDistribution` instance + is used. If the hasher is determined to be ``None``, MD5 + is used as the hashing algorithm. + :returns: The hash of the data. If a hasher was explicitly specified, + the returned hash will be prefixed with the specified hasher + followed by '='. + :rtype: str + """ + if hasher is None: + hasher = self.hasher + if hasher is None: + hasher = hashlib.md5 + prefix = '' + else: + hasher = getattr(hashlib, hasher) + prefix = '%s=' % self.hasher + digest = hasher(data).digest() + digest = base64.urlsafe_b64encode(digest).rstrip(b'=').decode('ascii') + return '%s%s' % (prefix, digest) + + +class InstalledDistribution(BaseInstalledDistribution): + """ + Created with the *path* of the ``.dist-info`` directory provided to the + constructor. It reads the metadata contained in ``pydist.json`` when it is + instantiated., or uses a passed in Metadata instance (useful for when + dry-run mode is being used). + """ + + hasher = 'sha256' + + def __init__(self, path, metadata=None, env=None): + self.finder = finder = resources.finder_for_path(path) + if finder is None: + import pdb; pdb.set_trace () + if env and env._cache_enabled and path in env._cache.path: + metadata = env._cache.path[path].metadata + elif metadata is None: + r = finder.find(METADATA_FILENAME) + # Temporary - for Wheel 0.23 support + if r is None: + r = finder.find(WHEEL_METADATA_FILENAME) + # Temporary - for legacy support + if r is None: + r = finder.find('METADATA') + if r is None: + raise ValueError('no %s found in %s' % (METADATA_FILENAME, + path)) + with contextlib.closing(r.as_stream()) as stream: + metadata = Metadata(fileobj=stream, scheme='legacy') + + super(InstalledDistribution, self).__init__(metadata, path, env) + + if env and env._cache_enabled: + env._cache.add(self) + + try: + r = finder.find('REQUESTED') + except AttributeError: + import pdb; pdb.set_trace () + self.requested = r is not None + + def __repr__(self): + return '' % ( + self.name, self.version, self.path) + + def __str__(self): + return "%s %s" % (self.name, self.version) + + def _get_records(self): + """ + Get the list of installed files for the distribution + :return: A list of tuples of path, hash and size. Note that hash and + size might be ``None`` for some entries. The path is exactly + as stored in the file (which is as in PEP 376). + """ + results = [] + r = self.get_distinfo_resource('RECORD') + with contextlib.closing(r.as_stream()) as stream: + with CSVReader(stream=stream) as record_reader: + # Base location is parent dir of .dist-info dir + #base_location = os.path.dirname(self.path) + #base_location = os.path.abspath(base_location) + for row in record_reader: + missing = [None for i in range(len(row), 3)] + path, checksum, size = row + missing + #if not os.path.isabs(path): + # path = path.replace('/', os.sep) + # path = os.path.join(base_location, path) + results.append((path, checksum, size)) + return results + + @cached_property + def exports(self): + """ + Return the information exported by this distribution. + :return: A dictionary of exports, mapping an export category to a dict + of :class:`ExportEntry` instances describing the individual + export entries, and keyed by name. + """ + result = {} + r = self.get_distinfo_resource(EXPORTS_FILENAME) + if r: + result = self.read_exports() + return result + + def read_exports(self): + """ + Read exports data from a file in .ini format. + + :return: A dictionary of exports, mapping an export category to a list + of :class:`ExportEntry` instances describing the individual + export entries. + """ + result = {} + r = self.get_distinfo_resource(EXPORTS_FILENAME) + if r: + with contextlib.closing(r.as_stream()) as stream: + result = read_exports(stream) + return result + + def write_exports(self, exports): + """ + Write a dictionary of exports to a file in .ini format. + :param exports: A dictionary of exports, mapping an export category to + a list of :class:`ExportEntry` instances describing the + individual export entries. + """ + rf = self.get_distinfo_file(EXPORTS_FILENAME) + with open(rf, 'w') as f: + write_exports(exports, f) + + def get_resource_path(self, relative_path): + """ + NOTE: This API may change in the future. + + Return the absolute path to a resource file with the given relative + path. + + :param relative_path: The path, relative to .dist-info, of the resource + of interest. + :return: The absolute path where the resource is to be found. + """ + r = self.get_distinfo_resource('RESOURCES') + with contextlib.closing(r.as_stream()) as stream: + with CSVReader(stream=stream) as resources_reader: + for relative, destination in resources_reader: + if relative == relative_path: + return destination + raise KeyError('no resource file with relative path %r ' + 'is installed' % relative_path) + + def list_installed_files(self): + """ + Iterates over the ``RECORD`` entries and returns a tuple + ``(path, hash, size)`` for each line. + + :returns: iterator of (path, hash, size) + """ + for result in self._get_records(): + yield result + + def write_installed_files(self, paths, prefix, dry_run=False): + """ + Writes the ``RECORD`` file, using the ``paths`` iterable passed in. Any + existing ``RECORD`` file is silently overwritten. + + prefix is used to determine when to write absolute paths. + """ + prefix = os.path.join(prefix, '') + base = os.path.dirname(self.path) + base_under_prefix = base.startswith(prefix) + base = os.path.join(base, '') + record_path = self.get_distinfo_file('RECORD') + logger.info('creating %s', record_path) + if dry_run: + return None + with CSVWriter(record_path) as writer: + for path in paths: + if os.path.isdir(path) or path.endswith(('.pyc', '.pyo')): + # do not put size and hash, as in PEP-376 + hash_value = size = '' + else: + size = '%d' % os.path.getsize(path) + with open(path, 'rb') as fp: + hash_value = self.get_hash(fp.read()) + if path.startswith(base) or (base_under_prefix and + path.startswith(prefix)): + path = os.path.relpath(path, base) + writer.writerow((path, hash_value, size)) + + # add the RECORD file itself + if record_path.startswith(base): + record_path = os.path.relpath(record_path, base) + writer.writerow((record_path, '', '')) + return record_path + + def check_installed_files(self): + """ + Checks that the hashes and sizes of the files in ``RECORD`` are + matched by the files themselves. Returns a (possibly empty) list of + mismatches. Each entry in the mismatch list will be a tuple consisting + of the path, 'exists', 'size' or 'hash' according to what didn't match + (existence is checked first, then size, then hash), the expected + value and the actual value. + """ + mismatches = [] + base = os.path.dirname(self.path) + record_path = self.get_distinfo_file('RECORD') + for path, hash_value, size in self.list_installed_files(): + if not os.path.isabs(path): + path = os.path.join(base, path) + if path == record_path: + continue + if not os.path.exists(path): + mismatches.append((path, 'exists', True, False)) + elif os.path.isfile(path): + actual_size = str(os.path.getsize(path)) + if size and actual_size != size: + mismatches.append((path, 'size', size, actual_size)) + elif hash_value: + if '=' in hash_value: + hasher = hash_value.split('=', 1)[0] + else: + hasher = None + + with open(path, 'rb') as f: + actual_hash = self.get_hash(f.read(), hasher) + if actual_hash != hash_value: + mismatches.append((path, 'hash', hash_value, actual_hash)) + return mismatches + + @cached_property + def shared_locations(self): + """ + A dictionary of shared locations whose keys are in the set 'prefix', + 'purelib', 'platlib', 'scripts', 'headers', 'data' and 'namespace'. + The corresponding value is the absolute path of that category for + this distribution, and takes into account any paths selected by the + user at installation time (e.g. via command-line arguments). In the + case of the 'namespace' key, this would be a list of absolute paths + for the roots of namespace packages in this distribution. + + The first time this property is accessed, the relevant information is + read from the SHARED file in the .dist-info directory. + """ + result = {} + shared_path = os.path.join(self.path, 'SHARED') + if os.path.isfile(shared_path): + with codecs.open(shared_path, 'r', encoding='utf-8') as f: + lines = f.read().splitlines() + for line in lines: + key, value = line.split('=', 1) + if key == 'namespace': + result.setdefault(key, []).append(value) + else: + result[key] = value + return result + + def write_shared_locations(self, paths, dry_run=False): + """ + Write shared location information to the SHARED file in .dist-info. + :param paths: A dictionary as described in the documentation for + :meth:`shared_locations`. + :param dry_run: If True, the action is logged but no file is actually + written. + :return: The path of the file written to. + """ + shared_path = os.path.join(self.path, 'SHARED') + logger.info('creating %s', shared_path) + if dry_run: + return None + lines = [] + for key in ('prefix', 'lib', 'headers', 'scripts', 'data'): + path = paths[key] + if os.path.isdir(paths[key]): + lines.append('%s=%s' % (key, path)) + for ns in paths.get('namespace', ()): + lines.append('namespace=%s' % ns) + + with codecs.open(shared_path, 'w', encoding='utf-8') as f: + f.write('\n'.join(lines)) + return shared_path + + def get_distinfo_resource(self, path): + if path not in DIST_FILES: + raise DistlibException('invalid path for a dist-info file: ' + '%r at %r' % (path, self.path)) + finder = resources.finder_for_path(self.path) + if finder is None: + raise DistlibException('Unable to get a finder for %s' % self.path) + return finder.find(path) + + def get_distinfo_file(self, path): + """ + Returns a path located under the ``.dist-info`` directory. Returns a + string representing the path. + + :parameter path: a ``'/'``-separated path relative to the + ``.dist-info`` directory or an absolute path; + If *path* is an absolute path and doesn't start + with the ``.dist-info`` directory path, + a :class:`DistlibException` is raised + :type path: str + :rtype: str + """ + # Check if it is an absolute path # XXX use relpath, add tests + if path.find(os.sep) >= 0: + # it's an absolute path? + distinfo_dirname, path = path.split(os.sep)[-2:] + if distinfo_dirname != self.path.split(os.sep)[-1]: + raise DistlibException( + 'dist-info file %r does not belong to the %r %s ' + 'distribution' % (path, self.name, self.version)) + + # The file must be relative + if path not in DIST_FILES: + raise DistlibException('invalid path for a dist-info file: ' + '%r at %r' % (path, self.path)) + + return os.path.join(self.path, path) + + def list_distinfo_files(self): + """ + Iterates over the ``RECORD`` entries and returns paths for each line if + the path is pointing to a file located in the ``.dist-info`` directory + or one of its subdirectories. + + :returns: iterator of paths + """ + base = os.path.dirname(self.path) + for path, checksum, size in self._get_records(): + # XXX add separator or use real relpath algo + if not os.path.isabs(path): + path = os.path.join(base, path) + if path.startswith(self.path): + yield path + + def __eq__(self, other): + return (isinstance(other, InstalledDistribution) and + self.path == other.path) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + __hash__ = object.__hash__ + + +class EggInfoDistribution(BaseInstalledDistribution): + """Created with the *path* of the ``.egg-info`` directory or file provided + to the constructor. It reads the metadata contained in the file itself, or + if the given path happens to be a directory, the metadata is read from the + file ``PKG-INFO`` under that directory.""" + + requested = True # as we have no way of knowing, assume it was + shared_locations = {} + + def __init__(self, path, env=None): + def set_name_and_version(s, n, v): + s.name = n + s.key = n.lower() # for case-insensitive comparisons + s.version = v + + self.path = path + self.dist_path = env + if env and env._cache_enabled and path in env._cache_egg.path: + metadata = env._cache_egg.path[path].metadata + set_name_and_version(self, metadata.name, metadata.version) + else: + metadata = self._get_metadata(path) + + # Need to be set before caching + set_name_and_version(self, metadata.name, metadata.version) + + if env and env._cache_enabled: + env._cache_egg.add(self) + super(EggInfoDistribution, self).__init__(metadata, path, env) + + def _get_metadata(self, path): + requires = None + + def parse_requires_data(data): + """Create a list of dependencies from a requires.txt file. + + *data*: the contents of a setuptools-produced requires.txt file. + """ + reqs = [] + lines = data.splitlines() + for line in lines: + line = line.strip() + if line.startswith('['): + logger.warning('Unexpected line: quitting requirement scan: %r', + line) + break + r = parse_requirement(line) + if not r: + logger.warning('Not recognised as a requirement: %r', line) + continue + if r.extras: + logger.warning('extra requirements in requires.txt are ' + 'not supported') + if not r.constraints: + reqs.append(r.name) + else: + cons = ', '.join('%s%s' % c for c in r.constraints) + reqs.append('%s (%s)' % (r.name, cons)) + return reqs + + def parse_requires_path(req_path): + """Create a list of dependencies from a requires.txt file. + + *req_path*: the path to a setuptools-produced requires.txt file. + """ + + reqs = [] + try: + with codecs.open(req_path, 'r', 'utf-8') as fp: + reqs = parse_requires_data(fp.read()) + except IOError: + pass + return reqs + + if path.endswith('.egg'): + if os.path.isdir(path): + meta_path = os.path.join(path, 'EGG-INFO', 'PKG-INFO') + metadata = Metadata(path=meta_path, scheme='legacy') + req_path = os.path.join(path, 'EGG-INFO', 'requires.txt') + requires = parse_requires_path(req_path) + else: + # FIXME handle the case where zipfile is not available + zipf = zipimport.zipimporter(path) + fileobj = StringIO( + zipf.get_data('EGG-INFO/PKG-INFO').decode('utf8')) + metadata = Metadata(fileobj=fileobj, scheme='legacy') + try: + data = zipf.get_data('EGG-INFO/requires.txt') + requires = parse_requires_data(data.decode('utf-8')) + except IOError: + requires = None + elif path.endswith('.egg-info'): + if os.path.isdir(path): + req_path = os.path.join(path, 'requires.txt') + requires = parse_requires_path(req_path) + path = os.path.join(path, 'PKG-INFO') + metadata = Metadata(path=path, scheme='legacy') + else: + raise DistlibException('path must end with .egg-info or .egg, ' + 'got %r' % path) + + if requires: + metadata.add_requirements(requires) + return metadata + + def __repr__(self): + return '' % ( + self.name, self.version, self.path) + + def __str__(self): + return "%s %s" % (self.name, self.version) + + def check_installed_files(self): + """ + Checks that the hashes and sizes of the files in ``RECORD`` are + matched by the files themselves. Returns a (possibly empty) list of + mismatches. Each entry in the mismatch list will be a tuple consisting + of the path, 'exists', 'size' or 'hash' according to what didn't match + (existence is checked first, then size, then hash), the expected + value and the actual value. + """ + mismatches = [] + record_path = os.path.join(self.path, 'installed-files.txt') + if os.path.exists(record_path): + for path, _, _ in self.list_installed_files(): + if path == record_path: + continue + if not os.path.exists(path): + mismatches.append((path, 'exists', True, False)) + return mismatches + + def list_installed_files(self): + """ + Iterates over the ``installed-files.txt`` entries and returns a tuple + ``(path, hash, size)`` for each line. + + :returns: a list of (path, hash, size) + """ + + def _md5(path): + f = open(path, 'rb') + try: + content = f.read() + finally: + f.close() + return hashlib.md5(content).hexdigest() + + def _size(path): + return os.stat(path).st_size + + record_path = os.path.join(self.path, 'installed-files.txt') + result = [] + if os.path.exists(record_path): + with codecs.open(record_path, 'r', encoding='utf-8') as f: + for line in f: + line = line.strip() + p = os.path.normpath(os.path.join(self.path, line)) + # "./" is present as a marker between installed files + # and installation metadata files + if not os.path.exists(p): + logger.warning('Non-existent file: %s', p) + if p.endswith(('.pyc', '.pyo')): + continue + #otherwise fall through and fail + if not os.path.isdir(p): + result.append((p, _md5(p), _size(p))) + result.append((record_path, None, None)) + return result + + def list_distinfo_files(self, absolute=False): + """ + Iterates over the ``installed-files.txt`` entries and returns paths for + each line if the path is pointing to a file located in the + ``.egg-info`` directory or one of its subdirectories. + + :parameter absolute: If *absolute* is ``True``, each returned path is + transformed into a local absolute path. Otherwise the + raw value from ``installed-files.txt`` is returned. + :type absolute: boolean + :returns: iterator of paths + """ + record_path = os.path.join(self.path, 'installed-files.txt') + skip = True + with codecs.open(record_path, 'r', encoding='utf-8') as f: + for line in f: + line = line.strip() + if line == './': + skip = False + continue + if not skip: + p = os.path.normpath(os.path.join(self.path, line)) + if p.startswith(self.path): + if absolute: + yield p + else: + yield line + + def __eq__(self, other): + return (isinstance(other, EggInfoDistribution) and + self.path == other.path) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + __hash__ = object.__hash__ + +new_dist_class = InstalledDistribution +old_dist_class = EggInfoDistribution + + +class DependencyGraph(object): + """ + Represents a dependency graph between distributions. + + The dependency relationships are stored in an ``adjacency_list`` that maps + distributions to a list of ``(other, label)`` tuples where ``other`` + is a distribution and the edge is labeled with ``label`` (i.e. the version + specifier, if such was provided). Also, for more efficient traversal, for + every distribution ``x``, a list of predecessors is kept in + ``reverse_list[x]``. An edge from distribution ``a`` to + distribution ``b`` means that ``a`` depends on ``b``. If any missing + dependencies are found, they are stored in ``missing``, which is a + dictionary that maps distributions to a list of requirements that were not + provided by any other distributions. + """ + + def __init__(self): + self.adjacency_list = {} + self.reverse_list = {} + self.missing = {} + + def add_distribution(self, distribution): + """Add the *distribution* to the graph. + + :type distribution: :class:`distutils2.database.InstalledDistribution` + or :class:`distutils2.database.EggInfoDistribution` + """ + self.adjacency_list[distribution] = [] + self.reverse_list[distribution] = [] + #self.missing[distribution] = [] + + def add_edge(self, x, y, label=None): + """Add an edge from distribution *x* to distribution *y* with the given + *label*. + + :type x: :class:`distutils2.database.InstalledDistribution` or + :class:`distutils2.database.EggInfoDistribution` + :type y: :class:`distutils2.database.InstalledDistribution` or + :class:`distutils2.database.EggInfoDistribution` + :type label: ``str`` or ``None`` + """ + self.adjacency_list[x].append((y, label)) + # multiple edges are allowed, so be careful + if x not in self.reverse_list[y]: + self.reverse_list[y].append(x) + + def add_missing(self, distribution, requirement): + """ + Add a missing *requirement* for the given *distribution*. + + :type distribution: :class:`distutils2.database.InstalledDistribution` + or :class:`distutils2.database.EggInfoDistribution` + :type requirement: ``str`` + """ + logger.debug('%s missing %r', distribution, requirement) + self.missing.setdefault(distribution, []).append(requirement) + + def _repr_dist(self, dist): + return '%s %s' % (dist.name, dist.version) + + def repr_node(self, dist, level=1): + """Prints only a subgraph""" + output = [self._repr_dist(dist)] + for other, label in self.adjacency_list[dist]: + dist = self._repr_dist(other) + if label is not None: + dist = '%s [%s]' % (dist, label) + output.append(' ' * level + str(dist)) + suboutput = self.repr_node(other, level + 1) + subs = suboutput.split('\n') + output.extend(subs[1:]) + return '\n'.join(output) + + def to_dot(self, f, skip_disconnected=True): + """Writes a DOT output for the graph to the provided file *f*. + + If *skip_disconnected* is set to ``True``, then all distributions + that are not dependent on any other distribution are skipped. + + :type f: has to support ``file``-like operations + :type skip_disconnected: ``bool`` + """ + disconnected = [] + + f.write("digraph dependencies {\n") + for dist, adjs in self.adjacency_list.items(): + if len(adjs) == 0 and not skip_disconnected: + disconnected.append(dist) + for other, label in adjs: + if not label is None: + f.write('"%s" -> "%s" [label="%s"]\n' % + (dist.name, other.name, label)) + else: + f.write('"%s" -> "%s"\n' % (dist.name, other.name)) + if not skip_disconnected and len(disconnected) > 0: + f.write('subgraph disconnected {\n') + f.write('label = "Disconnected"\n') + f.write('bgcolor = red\n') + + for dist in disconnected: + f.write('"%s"' % dist.name) + f.write('\n') + f.write('}\n') + f.write('}\n') + + def topological_sort(self): + """ + Perform a topological sort of the graph. + :return: A tuple, the first element of which is a topologically sorted + list of distributions, and the second element of which is a + list of distributions that cannot be sorted because they have + circular dependencies and so form a cycle. + """ + result = [] + # Make a shallow copy of the adjacency list + alist = {} + for k, v in self.adjacency_list.items(): + alist[k] = v[:] + while True: + # See what we can remove in this run + to_remove = [] + for k, v in list(alist.items())[:]: + if not v: + to_remove.append(k) + del alist[k] + if not to_remove: + # What's left in alist (if anything) is a cycle. + break + # Remove from the adjacency list of others + for k, v in alist.items(): + alist[k] = [(d, r) for d, r in v if d not in to_remove] + logger.debug('Moving to result: %s', + ['%s (%s)' % (d.name, d.version) for d in to_remove]) + result.extend(to_remove) + return result, list(alist.keys()) + + def __repr__(self): + """Representation of the graph""" + output = [] + for dist, adjs in self.adjacency_list.items(): + output.append(self.repr_node(dist)) + return '\n'.join(output) + + +def make_graph(dists, scheme='default'): + """Makes a dependency graph from the given distributions. + + :parameter dists: a list of distributions + :type dists: list of :class:`distutils2.database.InstalledDistribution` and + :class:`distutils2.database.EggInfoDistribution` instances + :rtype: a :class:`DependencyGraph` instance + """ + scheme = get_scheme(scheme) + graph = DependencyGraph() + provided = {} # maps names to lists of (version, dist) tuples + + # first, build the graph and find out what's provided + for dist in dists: + graph.add_distribution(dist) + + for p in dist.provides: + name, version = parse_name_and_version(p) + logger.debug('Add to provided: %s, %s, %s', name, version, dist) + provided.setdefault(name, []).append((version, dist)) + + # now make the edges + for dist in dists: + requires = (dist.run_requires | dist.meta_requires | + dist.build_requires | dist.dev_requires) + for req in requires: + try: + matcher = scheme.matcher(req) + except UnsupportedVersionError: + # XXX compat-mode if cannot read the version + logger.warning('could not read version %r - using name only', + req) + name = req.split()[0] + matcher = scheme.matcher(name) + + name = matcher.key # case-insensitive + + matched = False + if name in provided: + for version, provider in provided[name]: + try: + match = matcher.match(version) + except UnsupportedVersionError: + match = False + + if match: + graph.add_edge(dist, provider, req) + matched = True + break + if not matched: + graph.add_missing(dist, req) + return graph + + +def get_dependent_dists(dists, dist): + """Recursively generate a list of distributions from *dists* that are + dependent on *dist*. + + :param dists: a list of distributions + :param dist: a distribution, member of *dists* for which we are interested + """ + if dist not in dists: + raise DistlibException('given distribution %r is not a member ' + 'of the list' % dist.name) + graph = make_graph(dists) + + dep = [dist] # dependent distributions + todo = graph.reverse_list[dist] # list of nodes we should inspect + + while todo: + d = todo.pop() + dep.append(d) + for succ in graph.reverse_list[d]: + if succ not in dep: + todo.append(succ) + + dep.pop(0) # remove dist from dep, was there to prevent infinite loops + return dep + + +def get_required_dists(dists, dist): + """Recursively generate a list of distributions from *dists* that are + required by *dist*. + + :param dists: a list of distributions + :param dist: a distribution, member of *dists* for which we are interested + """ + if dist not in dists: + raise DistlibException('given distribution %r is not a member ' + 'of the list' % dist.name) + graph = make_graph(dists) + + req = [] # required distributions + todo = graph.adjacency_list[dist] # list of nodes we should inspect + + while todo: + d = todo.pop()[0] + req.append(d) + for pred in graph.adjacency_list[d]: + if pred not in req: + todo.append(pred) + + return req + + +def make_dist(name, version, **kwargs): + """ + A convenience method for making a dist given just a name and version. + """ + summary = kwargs.pop('summary', 'Placeholder for summary') + md = Metadata(**kwargs) + md.name = name + md.version = version + md.summary = summary or 'Placeholder for summary' + return Distribution(md) diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/database.pyc b/env/lib/python2.7/site-packages/pip/_vendor/distlib/database.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4dcedbfd11f5af4a745f32b5eb6d4c54364700b5 GIT binary patch literal 48769 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/index.py b/env/lib/python2.7/site-packages/pip/_vendor/distlib/index.py new file mode 100644 index 0000000..6803dd2 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/distlib/index.py @@ -0,0 +1,515 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +import hashlib +import logging +import os +import shutil +import subprocess +import tempfile +try: + from threading import Thread +except ImportError: + from dummy_threading import Thread + +from . import DistlibException +from .compat import (HTTPBasicAuthHandler, Request, HTTPPasswordMgr, + urlparse, build_opener, string_types) +from .util import cached_property, zip_dir, ServerProxy + +logger = logging.getLogger(__name__) + +DEFAULT_INDEX = 'https://pypi.python.org/pypi' +DEFAULT_REALM = 'pypi' + +class PackageIndex(object): + """ + This class represents a package index compatible with PyPI, the Python + Package Index. + """ + + boundary = b'----------ThIs_Is_tHe_distlib_index_bouNdaRY_$' + + def __init__(self, url=None): + """ + Initialise an instance. + + :param url: The URL of the index. If not specified, the URL for PyPI is + used. + """ + self.url = url or DEFAULT_INDEX + self.read_configuration() + scheme, netloc, path, params, query, frag = urlparse(self.url) + if params or query or frag or scheme not in ('http', 'https'): + raise DistlibException('invalid repository: %s' % self.url) + self.password_handler = None + self.ssl_verifier = None + self.gpg = None + self.gpg_home = None + self.rpc_proxy = None + with open(os.devnull, 'w') as sink: + # Use gpg by default rather than gpg2, as gpg2 insists on + # prompting for passwords + for s in ('gpg', 'gpg2'): + try: + rc = subprocess.check_call([s, '--version'], stdout=sink, + stderr=sink) + if rc == 0: + self.gpg = s + break + except OSError: + pass + + def _get_pypirc_command(self): + """ + Get the distutils command for interacting with PyPI configurations. + :return: the command. + """ + from distutils.core import Distribution + from distutils.config import PyPIRCCommand + d = Distribution() + return PyPIRCCommand(d) + + def read_configuration(self): + """ + Read the PyPI access configuration as supported by distutils, getting + PyPI to do the actual work. This populates ``username``, ``password``, + ``realm`` and ``url`` attributes from the configuration. + """ + # get distutils to do the work + c = self._get_pypirc_command() + c.repository = self.url + cfg = c._read_pypirc() + self.username = cfg.get('username') + self.password = cfg.get('password') + self.realm = cfg.get('realm', 'pypi') + self.url = cfg.get('repository', self.url) + + def save_configuration(self): + """ + Save the PyPI access configuration. You must have set ``username`` and + ``password`` attributes before calling this method. + + Again, distutils is used to do the actual work. + """ + self.check_credentials() + # get distutils to do the work + c = self._get_pypirc_command() + c._store_pypirc(self.username, self.password) + + def check_credentials(self): + """ + Check that ``username`` and ``password`` have been set, and raise an + exception if not. + """ + if self.username is None or self.password is None: + raise DistlibException('username and password must be set') + pm = HTTPPasswordMgr() + _, netloc, _, _, _, _ = urlparse(self.url) + pm.add_password(self.realm, netloc, self.username, self.password) + self.password_handler = HTTPBasicAuthHandler(pm) + + def register(self, metadata): + """ + Register a distribution on PyPI, using the provided metadata. + + :param metadata: A :class:`Metadata` instance defining at least a name + and version number for the distribution to be + registered. + :return: The HTTP response received from PyPI upon submission of the + request. + """ + self.check_credentials() + metadata.validate() + d = metadata.todict() + d[':action'] = 'verify' + request = self.encode_request(d.items(), []) + response = self.send_request(request) + d[':action'] = 'submit' + request = self.encode_request(d.items(), []) + return self.send_request(request) + + def _reader(self, name, stream, outbuf): + """ + Thread runner for reading lines of from a subprocess into a buffer. + + :param name: The logical name of the stream (used for logging only). + :param stream: The stream to read from. This will typically a pipe + connected to the output stream of a subprocess. + :param outbuf: The list to append the read lines to. + """ + while True: + s = stream.readline() + if not s: + break + s = s.decode('utf-8').rstrip() + outbuf.append(s) + logger.debug('%s: %s' % (name, s)) + stream.close() + + def get_sign_command(self, filename, signer, sign_password, + keystore=None): + """ + Return a suitable command for signing a file. + + :param filename: The pathname to the file to be signed. + :param signer: The identifier of the signer of the file. + :param sign_password: The passphrase for the signer's + private key used for signing. + :param keystore: The path to a directory which contains the keys + used in verification. If not specified, the + instance's ``gpg_home`` attribute is used instead. + :return: The signing command as a list suitable to be + passed to :class:`subprocess.Popen`. + """ + cmd = [self.gpg, '--status-fd', '2', '--no-tty'] + if keystore is None: + keystore = self.gpg_home + if keystore: + cmd.extend(['--homedir', keystore]) + if sign_password is not None: + cmd.extend(['--batch', '--passphrase-fd', '0']) + td = tempfile.mkdtemp() + sf = os.path.join(td, os.path.basename(filename) + '.asc') + cmd.extend(['--detach-sign', '--armor', '--local-user', + signer, '--output', sf, filename]) + logger.debug('invoking: %s', ' '.join(cmd)) + return cmd, sf + + def run_command(self, cmd, input_data=None): + """ + Run a command in a child process , passing it any input data specified. + + :param cmd: The command to run. + :param input_data: If specified, this must be a byte string containing + data to be sent to the child process. + :return: A tuple consisting of the subprocess' exit code, a list of + lines read from the subprocess' ``stdout``, and a list of + lines read from the subprocess' ``stderr``. + """ + kwargs = { + 'stdout': subprocess.PIPE, + 'stderr': subprocess.PIPE, + } + if input_data is not None: + kwargs['stdin'] = subprocess.PIPE + stdout = [] + stderr = [] + p = subprocess.Popen(cmd, **kwargs) + # We don't use communicate() here because we may need to + # get clever with interacting with the command + t1 = Thread(target=self._reader, args=('stdout', p.stdout, stdout)) + t1.start() + t2 = Thread(target=self._reader, args=('stderr', p.stderr, stderr)) + t2.start() + if input_data is not None: + p.stdin.write(input_data) + p.stdin.close() + + p.wait() + t1.join() + t2.join() + return p.returncode, stdout, stderr + + def sign_file(self, filename, signer, sign_password, keystore=None): + """ + Sign a file. + + :param filename: The pathname to the file to be signed. + :param signer: The identifier of the signer of the file. + :param sign_password: The passphrase for the signer's + private key used for signing. + :param keystore: The path to a directory which contains the keys + used in signing. If not specified, the instance's + ``gpg_home`` attribute is used instead. + :return: The absolute pathname of the file where the signature is + stored. + """ + cmd, sig_file = self.get_sign_command(filename, signer, sign_password, + keystore) + rc, stdout, stderr = self.run_command(cmd, + sign_password.encode('utf-8')) + if rc != 0: + raise DistlibException('sign command failed with error ' + 'code %s' % rc) + return sig_file + + def upload_file(self, metadata, filename, signer=None, sign_password=None, + filetype='sdist', pyversion='source', keystore=None): + """ + Upload a release file to the index. + + :param metadata: A :class:`Metadata` instance defining at least a name + and version number for the file to be uploaded. + :param filename: The pathname of the file to be uploaded. + :param signer: The identifier of the signer of the file. + :param sign_password: The passphrase for the signer's + private key used for signing. + :param filetype: The type of the file being uploaded. This is the + distutils command which produced that file, e.g. + ``sdist`` or ``bdist_wheel``. + :param pyversion: The version of Python which the release relates + to. For code compatible with any Python, this would + be ``source``, otherwise it would be e.g. ``3.2``. + :param keystore: The path to a directory which contains the keys + used in signing. If not specified, the instance's + ``gpg_home`` attribute is used instead. + :return: The HTTP response received from PyPI upon submission of the + request. + """ + self.check_credentials() + if not os.path.exists(filename): + raise DistlibException('not found: %s' % filename) + metadata.validate() + d = metadata.todict() + sig_file = None + if signer: + if not self.gpg: + logger.warning('no signing program available - not signed') + else: + sig_file = self.sign_file(filename, signer, sign_password, + keystore) + with open(filename, 'rb') as f: + file_data = f.read() + md5_digest = hashlib.md5(file_data).hexdigest() + sha256_digest = hashlib.sha256(file_data).hexdigest() + d.update({ + ':action': 'file_upload', + 'protocol_version': '1', + 'filetype': filetype, + 'pyversion': pyversion, + 'md5_digest': md5_digest, + 'sha256_digest': sha256_digest, + }) + files = [('content', os.path.basename(filename), file_data)] + if sig_file: + with open(sig_file, 'rb') as f: + sig_data = f.read() + files.append(('gpg_signature', os.path.basename(sig_file), + sig_data)) + shutil.rmtree(os.path.dirname(sig_file)) + request = self.encode_request(d.items(), files) + return self.send_request(request) + + def upload_documentation(self, metadata, doc_dir): + """ + Upload documentation to the index. + + :param metadata: A :class:`Metadata` instance defining at least a name + and version number for the documentation to be + uploaded. + :param doc_dir: The pathname of the directory which contains the + documentation. This should be the directory that + contains the ``index.html`` for the documentation. + :return: The HTTP response received from PyPI upon submission of the + request. + """ + self.check_credentials() + if not os.path.isdir(doc_dir): + raise DistlibException('not a directory: %r' % doc_dir) + fn = os.path.join(doc_dir, 'index.html') + if not os.path.exists(fn): + raise DistlibException('not found: %r' % fn) + metadata.validate() + name, version = metadata.name, metadata.version + zip_data = zip_dir(doc_dir).getvalue() + fields = [(':action', 'doc_upload'), + ('name', name), ('version', version)] + files = [('content', name, zip_data)] + request = self.encode_request(fields, files) + return self.send_request(request) + + def get_verify_command(self, signature_filename, data_filename, + keystore=None): + """ + Return a suitable command for verifying a file. + + :param signature_filename: The pathname to the file containing the + signature. + :param data_filename: The pathname to the file containing the + signed data. + :param keystore: The path to a directory which contains the keys + used in verification. If not specified, the + instance's ``gpg_home`` attribute is used instead. + :return: The verifying command as a list suitable to be + passed to :class:`subprocess.Popen`. + """ + cmd = [self.gpg, '--status-fd', '2', '--no-tty'] + if keystore is None: + keystore = self.gpg_home + if keystore: + cmd.extend(['--homedir', keystore]) + cmd.extend(['--verify', signature_filename, data_filename]) + logger.debug('invoking: %s', ' '.join(cmd)) + return cmd + + def verify_signature(self, signature_filename, data_filename, + keystore=None): + """ + Verify a signature for a file. + + :param signature_filename: The pathname to the file containing the + signature. + :param data_filename: The pathname to the file containing the + signed data. + :param keystore: The path to a directory which contains the keys + used in verification. If not specified, the + instance's ``gpg_home`` attribute is used instead. + :return: True if the signature was verified, else False. + """ + if not self.gpg: + raise DistlibException('verification unavailable because gpg ' + 'unavailable') + cmd = self.get_verify_command(signature_filename, data_filename, + keystore) + rc, stdout, stderr = self.run_command(cmd) + if rc not in (0, 1): + raise DistlibException('verify command failed with error ' + 'code %s' % rc) + return rc == 0 + + def download_file(self, url, destfile, digest=None, reporthook=None): + """ + This is a convenience method for downloading a file from an URL. + Normally, this will be a file from the index, though currently + no check is made for this (i.e. a file can be downloaded from + anywhere). + + The method is just like the :func:`urlretrieve` function in the + standard library, except that it allows digest computation to be + done during download and checking that the downloaded data + matched any expected value. + + :param url: The URL of the file to be downloaded (assumed to be + available via an HTTP GET request). + :param destfile: The pathname where the downloaded file is to be + saved. + :param digest: If specified, this must be a (hasher, value) + tuple, where hasher is the algorithm used (e.g. + ``'md5'``) and ``value`` is the expected value. + :param reporthook: The same as for :func:`urlretrieve` in the + standard library. + """ + if digest is None: + digester = None + logger.debug('No digest specified') + else: + if isinstance(digest, (list, tuple)): + hasher, digest = digest + else: + hasher = 'md5' + digester = getattr(hashlib, hasher)() + logger.debug('Digest specified: %s' % digest) + # The following code is equivalent to urlretrieve. + # We need to do it this way so that we can compute the + # digest of the file as we go. + with open(destfile, 'wb') as dfp: + # addinfourl is not a context manager on 2.x + # so we have to use try/finally + sfp = self.send_request(Request(url)) + try: + headers = sfp.info() + blocksize = 8192 + size = -1 + read = 0 + blocknum = 0 + if "content-length" in headers: + size = int(headers["Content-Length"]) + if reporthook: + reporthook(blocknum, blocksize, size) + while True: + block = sfp.read(blocksize) + if not block: + break + read += len(block) + dfp.write(block) + if digester: + digester.update(block) + blocknum += 1 + if reporthook: + reporthook(blocknum, blocksize, size) + finally: + sfp.close() + + # check that we got the whole file, if we can + if size >= 0 and read < size: + raise DistlibException( + 'retrieval incomplete: got only %d out of %d bytes' + % (read, size)) + # if we have a digest, it must match. + if digester: + actual = digester.hexdigest() + if digest != actual: + raise DistlibException('%s digest mismatch for %s: expected ' + '%s, got %s' % (hasher, destfile, + digest, actual)) + logger.debug('Digest verified: %s', digest) + + def send_request(self, req): + """ + Send a standard library :class:`Request` to PyPI and return its + response. + + :param req: The request to send. + :return: The HTTP response from PyPI (a standard library HTTPResponse). + """ + handlers = [] + if self.password_handler: + handlers.append(self.password_handler) + if self.ssl_verifier: + handlers.append(self.ssl_verifier) + opener = build_opener(*handlers) + return opener.open(req) + + def encode_request(self, fields, files): + """ + Encode fields and files for posting to an HTTP server. + + :param fields: The fields to send as a list of (fieldname, value) + tuples. + :param files: The files to send as a list of (fieldname, filename, + file_bytes) tuple. + """ + # Adapted from packaging, which in turn was adapted from + # http://code.activestate.com/recipes/146306 + + parts = [] + boundary = self.boundary + for k, values in fields: + if not isinstance(values, (list, tuple)): + values = [values] + + for v in values: + parts.extend(( + b'--' + boundary, + ('Content-Disposition: form-data; name="%s"' % + k).encode('utf-8'), + b'', + v.encode('utf-8'))) + for key, filename, value in files: + parts.extend(( + b'--' + boundary, + ('Content-Disposition: form-data; name="%s"; filename="%s"' % + (key, filename)).encode('utf-8'), + b'', + value)) + + parts.extend((b'--' + boundary + b'--', b'')) + + body = b'\r\n'.join(parts) + ct = b'multipart/form-data; boundary=' + boundary + headers = { + 'Content-type': ct, + 'Content-length': str(len(body)) + } + return Request(self.url, body, headers) + + def search(self, terms, operator=None): + if isinstance(terms, string_types): + terms = {'name': terms} + if self.rpc_proxy is None: + self.rpc_proxy = ServerProxy(self.url, timeout=3.0) + return self.rpc_proxy.search(terms, operator or 'and') diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/index.pyc b/env/lib/python2.7/site-packages/pip/_vendor/distlib/index.pyc new file mode 100644 index 0000000000000000000000000000000000000000..93751deff63c9f553d6799d3427907838d7ce157 GIT binary patch literal 19932 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 A#sB~S literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/locators.py b/env/lib/python2.7/site-packages/pip/_vendor/distlib/locators.py new file mode 100644 index 0000000..14789ef --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/distlib/locators.py @@ -0,0 +1,1283 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2015 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# + +import gzip +from io import BytesIO +import json +import logging +import os +import posixpath +import re +try: + import threading +except ImportError: # pragma: no cover + import dummy_threading as threading +import zlib + +from . import DistlibException +from .compat import (urljoin, urlparse, urlunparse, url2pathname, pathname2url, + queue, quote, unescape, string_types, build_opener, + HTTPRedirectHandler as BaseRedirectHandler, text_type, + Request, HTTPError, URLError) +from .database import Distribution, DistributionPath, make_dist +from .metadata import Metadata +from .util import (cached_property, parse_credentials, ensure_slash, + split_filename, get_project_data, parse_requirement, + parse_name_and_version, ServerProxy, normalize_name) +from .version import get_scheme, UnsupportedVersionError +from .wheel import Wheel, is_compatible + +logger = logging.getLogger(__name__) + +HASHER_HASH = re.compile('^(\w+)=([a-f0-9]+)') +CHARSET = re.compile(r';\s*charset\s*=\s*(.*)\s*$', re.I) +HTML_CONTENT_TYPE = re.compile('text/html|application/x(ht)?ml') +DEFAULT_INDEX = 'https://pypi.python.org/pypi' + +def get_all_distribution_names(url=None): + """ + Return all distribution names known by an index. + :param url: The URL of the index. + :return: A list of all known distribution names. + """ + if url is None: + url = DEFAULT_INDEX + client = ServerProxy(url, timeout=3.0) + return client.list_packages() + +class RedirectHandler(BaseRedirectHandler): + """ + A class to work around a bug in some Python 3.2.x releases. + """ + # There's a bug in the base version for some 3.2.x + # (e.g. 3.2.2 on Ubuntu Oneiric). If a Location header + # returns e.g. /abc, it bails because it says the scheme '' + # is bogus, when actually it should use the request's + # URL for the scheme. See Python issue #13696. + 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. + newurl = None + for key in ('location', 'uri'): + if key in headers: + newurl = headers[key] + break + if newurl is None: + return + urlparts = urlparse(newurl) + if urlparts.scheme == '': + newurl = urljoin(req.get_full_url(), newurl) + if hasattr(headers, 'replace_header'): + headers.replace_header(key, newurl) + else: + headers[key] = newurl + return BaseRedirectHandler.http_error_302(self, req, fp, code, msg, + headers) + + http_error_301 = http_error_303 = http_error_307 = http_error_302 + +class Locator(object): + """ + A base class for locators - things that locate distributions. + """ + source_extensions = ('.tar.gz', '.tar.bz2', '.tar', '.zip', '.tgz', '.tbz') + binary_extensions = ('.egg', '.exe', '.whl') + excluded_extensions = ('.pdf',) + + # A list of tags indicating which wheels you want to match. The default + # value of None matches against the tags compatible with the running + # Python. If you want to match other values, set wheel_tags on a locator + # instance to a list of tuples (pyver, abi, arch) which you want to match. + wheel_tags = None + + downloadable_extensions = source_extensions + ('.whl',) + + def __init__(self, scheme='default'): + """ + Initialise an instance. + :param scheme: Because locators look for most recent versions, they + need to know the version scheme to use. This specifies + the current PEP-recommended scheme - use ``'legacy'`` + if you need to support existing distributions on PyPI. + """ + self._cache = {} + self.scheme = scheme + # Because of bugs in some of the handlers on some of the platforms, + # we use our own opener rather than just using urlopen. + self.opener = build_opener(RedirectHandler()) + # If get_project() is called from locate(), the matcher instance + # is set from the requirement passed to locate(). See issue #18 for + # why this can be useful to know. + self.matcher = None + self.errors = queue.Queue() + + def get_errors(self): + """ + Return any errors which have occurred. + """ + result = [] + while not self.errors.empty(): # pragma: no cover + try: + e = self.errors.get(False) + result.append(e) + except self.errors.Empty: + continue + self.errors.task_done() + return result + + def clear_errors(self): + """ + Clear any errors which may have been logged. + """ + # Just get the errors and throw them away + self.get_errors() + + def clear_cache(self): + self._cache.clear() + + def _get_scheme(self): + return self._scheme + + def _set_scheme(self, value): + self._scheme = value + + scheme = property(_get_scheme, _set_scheme) + + def _get_project(self, name): + """ + For a given project, get a dictionary mapping available versions to Distribution + instances. + + This should be implemented in subclasses. + + If called from a locate() request, self.matcher will be set to a + matcher for the requirement to satisfy, otherwise it will be None. + """ + raise NotImplementedError('Please implement in the subclass') + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + raise NotImplementedError('Please implement in the subclass') + + def get_project(self, name): + """ + For a given project, get a dictionary mapping available versions to Distribution + instances. + + This calls _get_project to do all the work, and just implements a caching layer on top. + """ + if self._cache is None: + result = self._get_project(name) + elif name in self._cache: + result = self._cache[name] + else: + self.clear_errors() + result = self._get_project(name) + self._cache[name] = result + return result + + def score_url(self, url): + """ + Give an url a score which can be used to choose preferred URLs + for a given project release. + """ + t = urlparse(url) + basename = posixpath.basename(t.path) + compatible = True + is_wheel = basename.endswith('.whl') + if is_wheel: + compatible = is_compatible(Wheel(basename), self.wheel_tags) + return (t.scheme != 'https', 'pypi.python.org' in t.netloc, + is_wheel, compatible, basename) + + def prefer_url(self, url1, url2): + """ + Choose one of two URLs where both are candidates for distribution + archives for the same version of a distribution (for example, + .tar.gz vs. zip). + + The current implementation favours https:// URLs over http://, archives + from PyPI over those from other locations, wheel compatibility (if a + wheel) and then the archive name. + """ + result = url2 + if url1: + s1 = self.score_url(url1) + s2 = self.score_url(url2) + if s1 > s2: + result = url1 + if result != url2: + logger.debug('Not replacing %r with %r', url1, url2) + else: + logger.debug('Replacing %r with %r', url1, url2) + return result + + def split_filename(self, filename, project_name): + """ + Attempt to split a filename in project name, version and Python version. + """ + return split_filename(filename, project_name) + + def convert_url_to_download_info(self, url, project_name): + """ + See if a URL is a candidate for a download URL for a project (the URL + has typically been scraped from an HTML page). + + If it is, a dictionary is returned with keys "name", "version", + "filename" and "url"; otherwise, None is returned. + """ + def same_project(name1, name2): + return normalize_name(name1) == normalize_name(name2) + + result = None + scheme, netloc, path, params, query, frag = urlparse(url) + if frag.lower().startswith('egg='): + logger.debug('%s: version hint in fragment: %r', + project_name, frag) + m = HASHER_HASH.match(frag) + if m: + algo, digest = m.groups() + else: + algo, digest = None, None + origpath = path + if path and path[-1] == '/': + path = path[:-1] + if path.endswith('.whl'): + try: + wheel = Wheel(path) + if is_compatible(wheel, self.wheel_tags): + if project_name is None: + include = True + else: + include = same_project(wheel.name, project_name) + if include: + result = { + 'name': wheel.name, + 'version': wheel.version, + 'filename': wheel.filename, + 'url': urlunparse((scheme, netloc, origpath, + params, query, '')), + 'python-version': ', '.join( + ['.'.join(list(v[2:])) for v in wheel.pyver]), + } + except Exception as e: # pragma: no cover + logger.warning('invalid path for wheel: %s', path) + elif path.endswith(self.downloadable_extensions): + path = filename = posixpath.basename(path) + for ext in self.downloadable_extensions: + if path.endswith(ext): + path = path[:-len(ext)] + t = self.split_filename(path, project_name) + if not t: + logger.debug('No match for project/version: %s', path) + else: + name, version, pyver = t + if not project_name or same_project(project_name, name): + result = { + 'name': name, + 'version': version, + 'filename': filename, + 'url': urlunparse((scheme, netloc, origpath, + params, query, '')), + #'packagetype': 'sdist', + } + if pyver: + result['python-version'] = pyver + break + if result and algo: + result['%s_digest' % algo] = digest + return result + + def _get_digest(self, info): + """ + Get a digest from a dictionary by looking at keys of the form + 'algo_digest'. + + Returns a 2-tuple (algo, digest) if found, else None. Currently + looks only for SHA256, then MD5. + """ + result = None + for algo in ('sha256', 'md5'): + key = '%s_digest' % algo + if key in info: + result = (algo, info[key]) + break + return result + + def _update_version_data(self, result, info): + """ + Update a result dictionary (the final result from _get_project) with a + dictionary for a specific version, which typically holds information + gleaned from a filename or URL for an archive for the distribution. + """ + name = info.pop('name') + version = info.pop('version') + if version in result: + dist = result[version] + md = dist.metadata + else: + dist = make_dist(name, version, scheme=self.scheme) + md = dist.metadata + dist.digest = digest = self._get_digest(info) + url = info['url'] + result['digests'][url] = digest + if md.source_url != info['url']: + md.source_url = self.prefer_url(md.source_url, url) + result['urls'].setdefault(version, set()).add(url) + dist.locator = self + result[version] = dist + + def locate(self, requirement, prereleases=False): + """ + Find the most recent distribution which matches the given + requirement. + + :param requirement: A requirement of the form 'foo (1.0)' or perhaps + 'foo (>= 1.0, < 2.0, != 1.3)' + :param prereleases: If ``True``, allow pre-release versions + to be located. Otherwise, pre-release versions + are not returned. + :return: A :class:`Distribution` instance, or ``None`` if no such + distribution could be located. + """ + result = None + r = parse_requirement(requirement) + if r is None: + raise DistlibException('Not a valid requirement: %r' % requirement) + scheme = get_scheme(self.scheme) + self.matcher = matcher = scheme.matcher(r.requirement) + logger.debug('matcher: %s (%s)', matcher, type(matcher).__name__) + versions = self.get_project(r.name) + if len(versions) > 2: # urls and digests keys are present + # sometimes, versions are invalid + slist = [] + vcls = matcher.version_class + for k in versions: + if k in ('urls', 'digests'): + continue + try: + if not matcher.match(k): + logger.debug('%s did not match %r', matcher, k) + else: + if prereleases or not vcls(k).is_prerelease: + slist.append(k) + else: + logger.debug('skipping pre-release ' + 'version %s of %s', k, matcher.name) + except Exception: # pragma: no cover + logger.warning('error matching %s with %r', matcher, k) + pass # slist.append(k) + if len(slist) > 1: + slist = sorted(slist, key=scheme.key) + if slist: + logger.debug('sorted list: %s', slist) + version = slist[-1] + result = versions[version] + if result: + if r.extras: + result.extras = r.extras + result.download_urls = versions.get('urls', {}).get(version, set()) + d = {} + sd = versions.get('digests', {}) + for url in result.download_urls: + if url in sd: + d[url] = sd[url] + result.digests = d + self.matcher = None + return result + + +class PyPIRPCLocator(Locator): + """ + This locator uses XML-RPC to locate distributions. It therefore + cannot be used with simple mirrors (that only mirror file content). + """ + def __init__(self, url, **kwargs): + """ + Initialise an instance. + + :param url: The URL to use for XML-RPC. + :param kwargs: Passed to the superclass constructor. + """ + super(PyPIRPCLocator, self).__init__(**kwargs) + self.base_url = url + self.client = ServerProxy(url, timeout=3.0) + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + return set(self.client.list_packages()) + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + versions = self.client.package_releases(name, True) + for v in versions: + urls = self.client.release_urls(name, v) + data = self.client.release_data(name, v) + metadata = Metadata(scheme=self.scheme) + metadata.name = data['name'] + metadata.version = data['version'] + metadata.license = data.get('license') + metadata.keywords = data.get('keywords', []) + metadata.summary = data.get('summary') + dist = Distribution(metadata) + if urls: + info = urls[0] + metadata.source_url = info['url'] + dist.digest = self._get_digest(info) + dist.locator = self + result[v] = dist + for info in urls: + url = info['url'] + digest = self._get_digest(info) + result['urls'].setdefault(v, set()).add(url) + result['digests'][url] = digest + return result + +class PyPIJSONLocator(Locator): + """ + This locator uses PyPI's JSON interface. It's very limited in functionality + and probably not worth using. + """ + def __init__(self, url, **kwargs): + super(PyPIJSONLocator, self).__init__(**kwargs) + self.base_url = ensure_slash(url) + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + raise NotImplementedError('Not available from this locator') + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + url = urljoin(self.base_url, '%s/json' % quote(name)) + try: + resp = self.opener.open(url) + data = resp.read().decode() # for now + d = json.loads(data) + md = Metadata(scheme=self.scheme) + data = d['info'] + md.name = data['name'] + md.version = data['version'] + md.license = data.get('license') + md.keywords = data.get('keywords', []) + md.summary = data.get('summary') + dist = Distribution(md) + dist.locator = self + urls = d['urls'] + result[md.version] = dist + for info in d['urls']: + url = info['url'] + dist.download_urls.add(url) + dist.digests[url] = self._get_digest(info) + result['urls'].setdefault(md.version, set()).add(url) + result['digests'][url] = self._get_digest(info) + # Now get other releases + for version, infos in d['releases'].items(): + if version == md.version: + continue # already done + omd = Metadata(scheme=self.scheme) + omd.name = md.name + omd.version = version + odist = Distribution(omd) + odist.locator = self + result[version] = odist + for info in infos: + url = info['url'] + odist.download_urls.add(url) + odist.digests[url] = self._get_digest(info) + result['urls'].setdefault(version, set()).add(url) + result['digests'][url] = self._get_digest(info) +# for info in urls: +# md.source_url = info['url'] +# dist.digest = self._get_digest(info) +# dist.locator = self +# for info in urls: +# url = info['url'] +# result['urls'].setdefault(md.version, set()).add(url) +# result['digests'][url] = self._get_digest(info) + except Exception as e: + self.errors.put(text_type(e)) + logger.exception('JSON fetch failed: %s', e) + return result + + +class Page(object): + """ + This class represents a scraped HTML page. + """ + # The following slightly hairy-looking regex just looks for the contents of + # an anchor link, which has an attribute "href" either immediately preceded + # or immediately followed by a "rel" attribute. The attribute values can be + # declared with double quotes, single quotes or no quotes - which leads to + # the length of the expression. + _href = re.compile(""" +(rel\s*=\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\s\n]*))\s+)? +href\s*=\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\s\n]*)) +(\s+rel\s*=\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\s\n]*)))? +""", re.I | re.S | re.X) + _base = re.compile(r"""]+)""", re.I | re.S) + + def __init__(self, data, url): + """ + Initialise an instance with the Unicode page contents and the URL they + came from. + """ + self.data = data + self.base_url = self.url = url + m = self._base.search(self.data) + if m: + self.base_url = m.group(1) + + _clean_re = re.compile(r'[^a-z0-9$&+,/:;=?@.#%_\\|-]', re.I) + + @cached_property + def links(self): + """ + Return the URLs of all the links on a page together with information + about their "rel" attribute, for determining which ones to treat as + downloads and which ones to queue for further scraping. + """ + def clean(url): + "Tidy up an URL." + scheme, netloc, path, params, query, frag = urlparse(url) + return urlunparse((scheme, netloc, quote(path), + params, query, frag)) + + result = set() + for match in self._href.finditer(self.data): + d = match.groupdict('') + rel = (d['rel1'] or d['rel2'] or d['rel3'] or + d['rel4'] or d['rel5'] or d['rel6']) + url = d['url1'] or d['url2'] or d['url3'] + url = urljoin(self.base_url, url) + url = unescape(url) + url = self._clean_re.sub(lambda m: '%%%2x' % ord(m.group(0)), url) + result.add((url, rel)) + # We sort the result, hoping to bring the most recent versions + # to the front + result = sorted(result, key=lambda t: t[0], reverse=True) + return result + + +class SimpleScrapingLocator(Locator): + """ + A locator which scrapes HTML pages to locate downloads for a distribution. + This runs multiple threads to do the I/O; performance is at least as good + as pip's PackageFinder, which works in an analogous fashion. + """ + + # These are used to deal with various Content-Encoding schemes. + decoders = { + 'deflate': zlib.decompress, + 'gzip': lambda b: gzip.GzipFile(fileobj=BytesIO(d)).read(), + 'none': lambda b: b, + } + + def __init__(self, url, timeout=None, num_workers=10, **kwargs): + """ + Initialise an instance. + :param url: The root URL to use for scraping. + :param timeout: The timeout, in seconds, to be applied to requests. + This defaults to ``None`` (no timeout specified). + :param num_workers: The number of worker threads you want to do I/O, + This defaults to 10. + :param kwargs: Passed to the superclass. + """ + super(SimpleScrapingLocator, self).__init__(**kwargs) + self.base_url = ensure_slash(url) + self.timeout = timeout + self._page_cache = {} + self._seen = set() + self._to_fetch = queue.Queue() + self._bad_hosts = set() + self.skip_externals = False + self.num_workers = num_workers + self._lock = threading.RLock() + # See issue #45: we need to be resilient when the locator is used + # in a thread, e.g. with concurrent.futures. We can't use self._lock + # as it is for coordinating our internal threads - the ones created + # in _prepare_threads. + self._gplock = threading.RLock() + + def _prepare_threads(self): + """ + Threads are created only when get_project is called, and terminate + before it returns. They are there primarily to parallelise I/O (i.e. + fetching web pages). + """ + self._threads = [] + for i in range(self.num_workers): + t = threading.Thread(target=self._fetch) + t.setDaemon(True) + t.start() + self._threads.append(t) + + def _wait_threads(self): + """ + Tell all the threads to terminate (by sending a sentinel value) and + wait for them to do so. + """ + # Note that you need two loops, since you can't say which + # thread will get each sentinel + for t in self._threads: + self._to_fetch.put(None) # sentinel + for t in self._threads: + t.join() + self._threads = [] + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + with self._gplock: + self.result = result + self.project_name = name + url = urljoin(self.base_url, '%s/' % quote(name)) + self._seen.clear() + self._page_cache.clear() + self._prepare_threads() + try: + logger.debug('Queueing %s', url) + self._to_fetch.put(url) + self._to_fetch.join() + finally: + self._wait_threads() + del self.result + return result + + platform_dependent = re.compile(r'\b(linux-(i\d86|x86_64|arm\w+)|' + r'win(32|-amd64)|macosx-?\d+)\b', re.I) + + def _is_platform_dependent(self, url): + """ + Does an URL refer to a platform-specific download? + """ + return self.platform_dependent.search(url) + + def _process_download(self, url): + """ + See if an URL is a suitable download for a project. + + If it is, register information in the result dictionary (for + _get_project) about the specific version it's for. + + Note that the return value isn't actually used other than as a boolean + value. + """ + if self._is_platform_dependent(url): + info = None + else: + info = self.convert_url_to_download_info(url, self.project_name) + logger.debug('process_download: %s -> %s', url, info) + if info: + with self._lock: # needed because self.result is shared + self._update_version_data(self.result, info) + return info + + def _should_queue(self, link, referrer, rel): + """ + Determine whether a link URL from a referring page and with a + particular "rel" attribute should be queued for scraping. + """ + scheme, netloc, path, _, _, _ = urlparse(link) + if path.endswith(self.source_extensions + self.binary_extensions + + self.excluded_extensions): + result = False + elif self.skip_externals and not link.startswith(self.base_url): + result = False + elif not referrer.startswith(self.base_url): + result = False + elif rel not in ('homepage', 'download'): + result = False + elif scheme not in ('http', 'https', 'ftp'): + result = False + elif self._is_platform_dependent(link): + result = False + else: + host = netloc.split(':', 1)[0] + if host.lower() == 'localhost': + result = False + else: + result = True + logger.debug('should_queue: %s (%s) from %s -> %s', link, rel, + referrer, result) + return result + + def _fetch(self): + """ + Get a URL to fetch from the work queue, get the HTML page, examine its + links for download candidates and candidates for further scraping. + + This is a handy method to run in a thread. + """ + while True: + url = self._to_fetch.get() + try: + if url: + page = self.get_page(url) + if page is None: # e.g. after an error + continue + for link, rel in page.links: + if link not in self._seen: + self._seen.add(link) + if (not self._process_download(link) and + self._should_queue(link, url, rel)): + logger.debug('Queueing %s from %s', link, url) + self._to_fetch.put(link) + except Exception as e: # pragma: no cover + self.errors.put(text_type(e)) + finally: + # always do this, to avoid hangs :-) + self._to_fetch.task_done() + if not url: + #logger.debug('Sentinel seen, quitting.') + break + + def get_page(self, url): + """ + Get the HTML for an URL, possibly from an in-memory cache. + + XXX TODO Note: this cache is never actually cleared. It's assumed that + the data won't get stale over the lifetime of a locator instance (not + necessarily true for the default_locator). + """ + # http://peak.telecommunity.com/DevCenter/EasyInstall#package-index-api + scheme, netloc, path, _, _, _ = urlparse(url) + if scheme == 'file' and os.path.isdir(url2pathname(path)): + url = urljoin(ensure_slash(url), 'index.html') + + if url in self._page_cache: + result = self._page_cache[url] + logger.debug('Returning %s from cache: %s', url, result) + else: + host = netloc.split(':', 1)[0] + result = None + if host in self._bad_hosts: + logger.debug('Skipping %s due to bad host %s', url, host) + else: + req = Request(url, headers={'Accept-encoding': 'identity'}) + try: + logger.debug('Fetching %s', url) + resp = self.opener.open(req, timeout=self.timeout) + logger.debug('Fetched %s', url) + headers = resp.info() + content_type = headers.get('Content-Type', '') + if HTML_CONTENT_TYPE.match(content_type): + final_url = resp.geturl() + data = resp.read() + encoding = headers.get('Content-Encoding') + if encoding: + decoder = self.decoders[encoding] # fail if not found + data = decoder(data) + encoding = 'utf-8' + m = CHARSET.search(content_type) + if m: + encoding = m.group(1) + try: + data = data.decode(encoding) + except UnicodeError: # pragma: no cover + data = data.decode('latin-1') # fallback + result = Page(data, final_url) + self._page_cache[final_url] = result + except HTTPError as e: + if e.code != 404: + logger.exception('Fetch failed: %s: %s', url, e) + except URLError as e: # pragma: no cover + logger.exception('Fetch failed: %s: %s', url, e) + with self._lock: + self._bad_hosts.add(host) + except Exception as e: # pragma: no cover + logger.exception('Fetch failed: %s: %s', url, e) + finally: + self._page_cache[url] = result # even if None (failure) + return result + + _distname_re = re.compile(']*>([^<]+)<') + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + result = set() + page = self.get_page(self.base_url) + if not page: + raise DistlibException('Unable to get %s' % self.base_url) + for match in self._distname_re.finditer(page.data): + result.add(match.group(1)) + return result + +class DirectoryLocator(Locator): + """ + This class locates distributions in a directory tree. + """ + + def __init__(self, path, **kwargs): + """ + Initialise an instance. + :param path: The root of the directory tree to search. + :param kwargs: Passed to the superclass constructor, + except for: + * recursive - if True (the default), subdirectories are + recursed into. If False, only the top-level directory + is searched, + """ + self.recursive = kwargs.pop('recursive', True) + super(DirectoryLocator, self).__init__(**kwargs) + path = os.path.abspath(path) + if not os.path.isdir(path): # pragma: no cover + raise DistlibException('Not a directory: %r' % path) + self.base_dir = path + + def should_include(self, filename, parent): + """ + Should a filename be considered as a candidate for a distribution + archive? As well as the filename, the directory which contains it + is provided, though not used by the current implementation. + """ + return filename.endswith(self.downloadable_extensions) + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + for root, dirs, files in os.walk(self.base_dir): + for fn in files: + if self.should_include(fn, root): + fn = os.path.join(root, fn) + url = urlunparse(('file', '', + pathname2url(os.path.abspath(fn)), + '', '', '')) + info = self.convert_url_to_download_info(url, name) + if info: + self._update_version_data(result, info) + if not self.recursive: + break + return result + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + result = set() + for root, dirs, files in os.walk(self.base_dir): + for fn in files: + if self.should_include(fn, root): + fn = os.path.join(root, fn) + url = urlunparse(('file', '', + pathname2url(os.path.abspath(fn)), + '', '', '')) + info = self.convert_url_to_download_info(url, None) + if info: + result.add(info['name']) + if not self.recursive: + break + return result + +class JSONLocator(Locator): + """ + This locator uses special extended metadata (not available on PyPI) and is + the basis of performant dependency resolution in distlib. Other locators + require archive downloads before dependencies can be determined! As you + might imagine, that can be slow. + """ + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + raise NotImplementedError('Not available from this locator') + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + data = get_project_data(name) + if data: + for info in data.get('files', []): + if info['ptype'] != 'sdist' or info['pyversion'] != 'source': + continue + # We don't store summary in project metadata as it makes + # the data bigger for no benefit during dependency + # resolution + dist = make_dist(data['name'], info['version'], + summary=data.get('summary', + 'Placeholder for summary'), + scheme=self.scheme) + md = dist.metadata + md.source_url = info['url'] + # TODO SHA256 digest + if 'digest' in info and info['digest']: + dist.digest = ('md5', info['digest']) + md.dependencies = info.get('requirements', {}) + dist.exports = info.get('exports', {}) + result[dist.version] = dist + result['urls'].setdefault(dist.version, set()).add(info['url']) + return result + +class DistPathLocator(Locator): + """ + This locator finds installed distributions in a path. It can be useful for + adding to an :class:`AggregatingLocator`. + """ + def __init__(self, distpath, **kwargs): + """ + Initialise an instance. + + :param distpath: A :class:`DistributionPath` instance to search. + """ + super(DistPathLocator, self).__init__(**kwargs) + assert isinstance(distpath, DistributionPath) + self.distpath = distpath + + def _get_project(self, name): + dist = self.distpath.get_distribution(name) + if dist is None: + result = {'urls': {}, 'digests': {}} + else: + result = { + dist.version: dist, + 'urls': {dist.version: set([dist.source_url])}, + 'digests': {dist.version: set([None])} + } + return result + + +class AggregatingLocator(Locator): + """ + This class allows you to chain and/or merge a list of locators. + """ + def __init__(self, *locators, **kwargs): + """ + Initialise an instance. + + :param locators: The list of locators to search. + :param kwargs: Passed to the superclass constructor, + except for: + * merge - if False (the default), the first successful + search from any of the locators is returned. If True, + the results from all locators are merged (this can be + slow). + """ + self.merge = kwargs.pop('merge', False) + self.locators = locators + super(AggregatingLocator, self).__init__(**kwargs) + + def clear_cache(self): + super(AggregatingLocator, self).clear_cache() + for locator in self.locators: + locator.clear_cache() + + def _set_scheme(self, value): + self._scheme = value + for locator in self.locators: + locator.scheme = value + + scheme = property(Locator.scheme.fget, _set_scheme) + + def _get_project(self, name): + result = {} + for locator in self.locators: + d = locator.get_project(name) + if d: + if self.merge: + files = result.get('urls', {}) + digests = result.get('digests', {}) + # next line could overwrite result['urls'], result['digests'] + result.update(d) + df = result.get('urls') + if files and df: + for k, v in files.items(): + if k in df: + df[k] |= v + else: + df[k] = v + dd = result.get('digests') + if digests and dd: + dd.update(digests) + else: + # See issue #18. If any dists are found and we're looking + # for specific constraints, we only return something if + # a match is found. For example, if a DirectoryLocator + # returns just foo (1.0) while we're looking for + # foo (>= 2.0), we'll pretend there was nothing there so + # that subsequent locators can be queried. Otherwise we + # would just return foo (1.0) which would then lead to a + # failure to find foo (>= 2.0), because other locators + # weren't searched. Note that this only matters when + # merge=False. + if self.matcher is None: + found = True + else: + found = False + for k in d: + if self.matcher.match(k): + found = True + break + if found: + result = d + break + return result + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + result = set() + for locator in self.locators: + try: + result |= locator.get_distribution_names() + except NotImplementedError: + pass + return result + + +# We use a legacy scheme simply because most of the dists on PyPI use legacy +# versions which don't conform to PEP 426 / PEP 440. +default_locator = AggregatingLocator( + JSONLocator(), + SimpleScrapingLocator('https://pypi.python.org/simple/', + timeout=3.0), + scheme='legacy') + +locate = default_locator.locate + +NAME_VERSION_RE = re.compile(r'(?P[\w-]+)\s*' + r'\(\s*(==\s*)?(?P[^)]+)\)$') + +class DependencyFinder(object): + """ + Locate dependencies for distributions. + """ + + def __init__(self, locator=None): + """ + Initialise an instance, using the specified locator + to locate distributions. + """ + self.locator = locator or default_locator + self.scheme = get_scheme(self.locator.scheme) + + def add_distribution(self, dist): + """ + Add a distribution to the finder. This will update internal information + about who provides what. + :param dist: The distribution to add. + """ + logger.debug('adding distribution %s', dist) + name = dist.key + self.dists_by_name[name] = dist + self.dists[(name, dist.version)] = dist + for p in dist.provides: + name, version = parse_name_and_version(p) + logger.debug('Add to provided: %s, %s, %s', name, version, dist) + self.provided.setdefault(name, set()).add((version, dist)) + + def remove_distribution(self, dist): + """ + Remove a distribution from the finder. This will update internal + information about who provides what. + :param dist: The distribution to remove. + """ + logger.debug('removing distribution %s', dist) + name = dist.key + del self.dists_by_name[name] + del self.dists[(name, dist.version)] + for p in dist.provides: + name, version = parse_name_and_version(p) + logger.debug('Remove from provided: %s, %s, %s', name, version, dist) + s = self.provided[name] + s.remove((version, dist)) + if not s: + del self.provided[name] + + def get_matcher(self, reqt): + """ + Get a version matcher for a requirement. + :param reqt: The requirement + :type reqt: str + :return: A version matcher (an instance of + :class:`distlib.version.Matcher`). + """ + try: + matcher = self.scheme.matcher(reqt) + except UnsupportedVersionError: # pragma: no cover + # XXX compat-mode if cannot read the version + name = reqt.split()[0] + matcher = self.scheme.matcher(name) + return matcher + + def find_providers(self, reqt): + """ + Find the distributions which can fulfill a requirement. + + :param reqt: The requirement. + :type reqt: str + :return: A set of distribution which can fulfill the requirement. + """ + matcher = self.get_matcher(reqt) + name = matcher.key # case-insensitive + result = set() + provided = self.provided + if name in provided: + for version, provider in provided[name]: + try: + match = matcher.match(version) + except UnsupportedVersionError: + match = False + + if match: + result.add(provider) + break + return result + + def try_to_replace(self, provider, other, problems): + """ + Attempt to replace one provider with another. This is typically used + when resolving dependencies from multiple sources, e.g. A requires + (B >= 1.0) while C requires (B >= 1.1). + + For successful replacement, ``provider`` must meet all the requirements + which ``other`` fulfills. + + :param provider: The provider we are trying to replace with. + :param other: The provider we're trying to replace. + :param problems: If False is returned, this will contain what + problems prevented replacement. This is currently + a tuple of the literal string 'cantreplace', + ``provider``, ``other`` and the set of requirements + that ``provider`` couldn't fulfill. + :return: True if we can replace ``other`` with ``provider``, else + False. + """ + rlist = self.reqts[other] + unmatched = set() + for s in rlist: + matcher = self.get_matcher(s) + if not matcher.match(provider.version): + unmatched.add(s) + if unmatched: + # can't replace other with provider + problems.add(('cantreplace', provider, other, + frozenset(unmatched))) + result = False + else: + # can replace other with provider + self.remove_distribution(other) + del self.reqts[other] + for s in rlist: + self.reqts.setdefault(provider, set()).add(s) + self.add_distribution(provider) + result = True + return result + + def find(self, requirement, meta_extras=None, prereleases=False): + """ + Find a distribution and all distributions it depends on. + + :param requirement: The requirement specifying the distribution to + find, or a Distribution instance. + :param meta_extras: A list of meta extras such as :test:, :build: and + so on. + :param prereleases: If ``True``, allow pre-release versions to be + returned - otherwise, don't return prereleases + unless they're all that's available. + + Return a set of :class:`Distribution` instances and a set of + problems. + + The distributions returned should be such that they have the + :attr:`required` attribute set to ``True`` if they were + from the ``requirement`` passed to ``find()``, and they have the + :attr:`build_time_dependency` attribute set to ``True`` unless they + are post-installation dependencies of the ``requirement``. + + The problems should be a tuple consisting of the string + ``'unsatisfied'`` and the requirement which couldn't be satisfied + by any distribution known to the locator. + """ + + self.provided = {} + self.dists = {} + self.dists_by_name = {} + self.reqts = {} + + meta_extras = set(meta_extras or []) + if ':*:' in meta_extras: + meta_extras.remove(':*:') + # :meta: and :run: are implicitly included + meta_extras |= set([':test:', ':build:', ':dev:']) + + if isinstance(requirement, Distribution): + dist = odist = requirement + logger.debug('passed %s as requirement', odist) + else: + dist = odist = self.locator.locate(requirement, + prereleases=prereleases) + if dist is None: + raise DistlibException('Unable to locate %r' % requirement) + logger.debug('located %s', odist) + dist.requested = True + problems = set() + todo = set([dist]) + install_dists = set([odist]) + while todo: + dist = todo.pop() + name = dist.key # case-insensitive + if name not in self.dists_by_name: + self.add_distribution(dist) + else: + #import pdb; pdb.set_trace() + other = self.dists_by_name[name] + if other != dist: + self.try_to_replace(dist, other, problems) + + ireqts = dist.run_requires | dist.meta_requires + sreqts = dist.build_requires + ereqts = set() + if dist in install_dists: + for key in ('test', 'build', 'dev'): + e = ':%s:' % key + if e in meta_extras: + ereqts |= getattr(dist, '%s_requires' % key) + all_reqts = ireqts | sreqts | ereqts + for r in all_reqts: + providers = self.find_providers(r) + if not providers: + logger.debug('No providers found for %r', r) + provider = self.locator.locate(r, prereleases=prereleases) + # If no provider is found and we didn't consider + # prereleases, consider them now. + if provider is None and not prereleases: + provider = self.locator.locate(r, prereleases=True) + if provider is None: + logger.debug('Cannot satisfy %r', r) + problems.add(('unsatisfied', r)) + else: + n, v = provider.key, provider.version + if (n, v) not in self.dists: + todo.add(provider) + providers.add(provider) + if r in ireqts and dist in install_dists: + install_dists.add(provider) + logger.debug('Adding %s to install_dists', + provider.name_and_version) + for p in providers: + name = p.key + if name not in self.dists_by_name: + self.reqts.setdefault(p, set()).add(r) + else: + other = self.dists_by_name[name] + if other != p: + # see if other can be replaced by p + self.try_to_replace(p, other, problems) + + dists = set(self.dists.values()) + for dist in dists: + dist.build_time_dependency = dist not in install_dists + if dist.build_time_dependency: + logger.debug('%s is a build-time dependency only.', + dist.name_and_version) + logger.debug('find done for %s', odist) + return dists, problems diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/locators.pyc b/env/lib/python2.7/site-packages/pip/_vendor/distlib/locators.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3d441511ef28dd54dad63c2aee4d53f3c7209fec GIT binary patch literal 45523 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 literal 0 HcmV?d00001 diff --git a/env/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.py b/env/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.py new file mode 100644 index 0000000..9f03364 --- /dev/null +++ b/env/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.py @@ -0,0 +1,393 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2013 Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +""" +Class representing the list of files in a distribution. + +Equivalent to distutils.filelist, but fixes some problems. +""" +import fnmatch +import logging +import os +import re +import sys + +from . import DistlibException +from .compat import fsdecode +from .util import convert_path + + +__all__ = ['Manifest'] + +logger = logging.getLogger(__name__) + +# a \ followed by some spaces + EOL +_COLLAPSE_PATTERN = re.compile('\\\w*\n', re.M) +_COMMENTED_LINE = re.compile('#.*?(?=\n)|\n(?=$)', re.M | re.S) + +# +# Due to the different results returned by fnmatch.translate, we need +# to do slightly different processing for Python 2.7 and 3.2 ... this needed +# to be brought in for Python 3.6 onwards. +# +_PYTHON_VERSION = sys.version_info[:2] + +class Manifest(object): + """A list of files built by on exploring the filesystem and filtered by + applying various patterns to what we find there. + """ + + def __init__(self, base=None): + """ + Initialise an instance. + + :param base: The base directory to explore under. + """ + self.base = os.path.abspath(os.path.normpath(base or os.getcwd())) + self.prefix = self.base + os.sep + self.allfiles = None + self.files = set() + + # + # Public API + # + + def findall(self): + """Find all files under the base and set ``allfiles`` to the absolute + pathnames of files found. + """ + from stat import S_ISREG, S_ISDIR, S_ISLNK + + self.allfiles = allfiles = [] + root = self.base + stack = [root] + pop = stack.pop + push = stack.append + + while stack: + root = pop() + names = os.listdir(root) + + for name in names: + fullname = os.path.join(root, name) + + # Avoid excess stat calls -- just one will do, thank you! + stat = os.stat(fullname) + mode = stat.st_mode + if S_ISREG(mode): + allfiles.append(fsdecode(fullname)) + elif S_ISDIR(mode) and not S_ISLNK(mode): + push(fullname) + + def add(self, item): + """ + Add a file to the manifest. + + :param item: The pathname to add. This can be relative to the base. + """ + if not item.startswith(self.prefix): + item = os.path.join(self.base, item) + self.files.add(os.path.normpath(item)) + + def add_many(self, items): + """ + Add a list of files to the manifest. + + :param items: The pathnames to add. These can be relative to the base. + """ + for item in items: + self.add(item) + + def sorted(self, wantdirs=False): + """ + Return sorted files in directory order + """ + + def add_dir(dirs, d): + dirs.add(d) + logger.debug('add_dir added %s', d) + if d != self.base: + parent, _ = os.path.split(d) + assert parent not in ('', '/') + add_dir(dirs, parent) + + result = set(self.files) # make a copy! + if wantdirs: + dirs = set() + for f in result: + add_dir(dirs, os.path.dirname(f)) + result |= dirs + return [os.path.join(*path_tuple) for path_tuple in + sorted(os.path.split(path) for path in result)] + + def clear(self): + """Clear all collected files.""" + self.files = set() + self.allfiles = [] + + def process_directive(self, directive): + """ + Process a directive which either adds some files from ``allfiles`` to + ``files``, or removes some files from ``files``. + + :param directive: The directive to process. This should be in a format + compatible with distutils ``MANIFEST.in`` files: + + http://docs.python.org/distutils/sourcedist.html#commands + """ + # 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 (dirpattern). + action, patterns, thedir, dirpattern = self._parse_directive(directive) + + # 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': + for pattern in patterns: + if not self._include_pattern(pattern, anchor=True): + logger.warning('no files found matching %r', pattern) + + elif action == 'exclude': + for pattern in patterns: + found = self._exclude_pattern(pattern, anchor=True) + #if not found: + # logger.warning('no previously-included files ' + # 'found matching %r', pattern) + + elif action == 'global-include': + for pattern in patterns: + if not self._include_pattern(pattern, anchor=False): + logger.warning('no files found matching %r ' + 'anywhere in distribution', pattern) + + elif action == 'global-exclude': + for pattern in patterns: + found = self._exclude_pattern(pattern, anchor=False) + #if not found: + # logger.warning('no previously-included files ' + # 'matching %r found anywhere in ' + # 'distribution', pattern) + + elif action == 'recursive-include': + for pattern in patterns: + if not self._include_pattern(pattern, prefix=thedir): + logger.warning('no files found matching %r ' + 'under directory %r', pattern, thedir) + + elif action == 'recursive-exclude': + for pattern in patterns: + found = self._exclude_pattern(pattern, prefix=thedir) + #if not found: + # logger.warning('no previously-included files ' + # 'matching %r found under directory %r', + # pattern, thedir) + + elif action == 'graft': + if not self._include_pattern(None, prefix=dirpattern): + logger.warning('no directories found matching %r', + dirpattern) + + elif action == 'prune': + if not self._exclude_pattern(None, prefix=dirpattern): + logger.warning('no previously-included directories found ' + 'matching %r', dirpattern) + else: # pragma: no cover + # This should never happen, as it should be caught in + # _parse_template_line + raise DistlibException( + 'invalid action %r' % action) + + # + # Private API + # + + def _parse_directive(self, directive): + """ + Validate a directive. + :param directive: The directive to validate. + :return: A tuple of action, patterns, thedir, dir_patterns + """ + words = directive.split() + if len(words) == 1 and words[0] not in ('include', 'exclude', + 'global-include', + 'global-exclude', + 'recursive-include', + 'recursive-exclude', + 'graft', 'prune'): + # no action given, let's use the default 'include' + words.insert(0, 'include') + + action = words[0] + patterns = thedir = dir_pattern = None + + if action in ('include', 'exclude', + 'global-include', 'global-exclude'): + if len(words) < 2: + raise DistlibException( + '%r expects ...' % action) + + patterns = [convert_path(word) for word in words[1:]] + + elif action in ('recursive-include', 'recursive-exclude'): + if len(words) < 3: + raise DistlibException( + '%r expects