From 6881f3471a4078e8fad4f05d3b4dbd6f0a771f2d Mon Sep 17 00:00:00 2001 From: j Date: Wed, 4 Nov 2015 13:01:55 +0100 Subject: [PATCH] update Shared --- .gitignore | 1 + Shared/bin/chardetect | 13 +- .../PyPDF2-1.23.egg-info/installed-files.txt | 22 +- .../certifi-14.05.14.egg-info/PKG-INFO | 42 - .../certifi-14.05.14.egg-info/SOURCES.txt | 13 - .../installed-files.txt | 12 - .../DESCRIPTION.rst | 30 + .../certifi-2015.9.6.2.dist-info/METADATA | 52 + .../certifi-2015.9.6.2.dist-info/RECORD | 15 + .../WHEEL | 0 .../metadata.json | 1 + .../top_level.txt | 0 .../site-packages/certifi/__init__.py | 4 +- .../site-packages/certifi/cacert.pem | 1617 ++--- .../python3.4/site-packages/certifi/core.py | 19 +- .../site-packages/certifi/old_root.pem | 387 ++ .../python3.4/site-packages/certifi/weak.pem | 5616 +++++++++++++++++ .../chardet-2.2.1.dist-info/DESCRIPTION.rst | 40 - .../chardet-2.2.1.dist-info/METADATA | 58 - .../chardet-2.2.1.dist-info/RECORD | 85 - .../chardet-2.2.1.dist-info/pydist.json | 1 - .../chardet-2.3.0.egg-info/PKG-INFO | 70 + .../chardet-2.3.0.egg-info/SOURCES.txt | 48 + .../dependency_links.txt | 0 .../entry_points.txt | 0 .../installed-files.txt | 83 + .../top_level.txt | 0 .../site-packages/chardet/__init__.py | 2 +- .../site-packages/chardet/chardetect.py | 66 +- .../python3.4/site-packages/chardet/jpcntx.py | 8 + .../site-packages/chardet/latin1prober.py | 6 +- .../python3.4/site-packages/chardet/mbcssm.py | 9 +- .../site-packages/chardet/sjisprober.py | 2 +- .../chardet/universaldetector.py | 4 +- .../installed-files.txt | 6 +- .../PKG-INFO | 7 +- .../SOURCES.txt | 164 +- .../dependency_links.txt | 0 .../installed-files.txt | 0 .../top_level.txt | 0 .../lib/python3.4/site-packages/feedparser.py | 1493 +++-- .../PKG-INFO | 60 +- .../SOURCES.txt | 0 .../dependency_links.txt | 0 .../installed-files.txt | 106 +- .../requires.txt | 0 .../top_level.txt | 0 .../site-packages/html5lib/__init__.py | 4 +- .../site-packages/html5lib/constants.py | 388 +- .../site-packages/html5lib/filters/lint.py | 41 +- .../site-packages/html5lib/html5parser.py | 19 +- .../site-packages/html5lib/inputstream.py | 35 +- .../site-packages/html5lib/sanitizer.py | 43 +- .../html5lib/serializer/htmlserializer.py | 19 +- .../html5lib/treebuilders/dom.py | 2 +- .../html5lib/treewalkers/__init__.py | 90 + .../html5lib/treewalkers/_base.py | 8 +- .../site-packages/html5lib/treewalkers/dom.py | 3 - .../html5lib/treewalkers/etree.py | 6 +- .../html5lib/treewalkers/lxmletree.py | 11 +- .../python3.4/site-packages/html5lib/utils.py | 23 +- .../PKG-INFO | 2 +- .../SOURCES.txt | 3 +- .../dependency_links.txt | 0 .../installed-files.txt | 236 +- .../requires.txt | 2 +- .../top_level.txt | 0 .../python3.4/site-packages/ox/__init__.py | 2 +- .../python3.4/site-packages/ox/__version.py | 1 - Shared/lib/python3.4/site-packages/ox/api.py | 2 + .../lib/python3.4/site-packages/ox/cache.py | 7 +- .../site-packages/ox/django/api/actions.py | 43 +- .../site-packages/ox/django/api/views.py | 16 +- .../site-packages/ox/django/fields.py | 5 +- .../python3.4/site-packages/ox/django/http.py | 8 +- .../site-packages/ox/django/middleware.py | 2 +- .../site-packages/ox/django/monitor.py | 13 +- .../site-packages/ox/django/views.py | 12 +- Shared/lib/python3.4/site-packages/ox/file.py | 131 +- .../python3.4/site-packages/ox/fixunicode.py | 9 +- Shared/lib/python3.4/site-packages/ox/form.py | 2 +- .../lib/python3.4/site-packages/ox/format.py | 35 + Shared/lib/python3.4/site-packages/ox/html.py | 4 + .../lib/python3.4/site-packages/ox/image.py | 16 +- .../lib/python3.4/site-packages/ox/movie.py | 18 +- Shared/lib/python3.4/site-packages/ox/net.py | 29 +- Shared/lib/python3.4/site-packages/ox/text.py | 5 + .../site-packages/ox/torrent/__init__.py | 8 +- .../site-packages/ox/torrent/bencode3.py | 151 + .../site-packages/ox/torrent/btformats.py | 100 - .../site-packages/ox/torrent/makemetafile.py | 105 +- .../python3.4/site-packages/ox/web/amazon.py | 2 +- .../python3.4/site-packages/ox/web/archive.py | 11 +- .../site-packages/ox/web/criterion.py | 9 +- .../python3.4/site-packages/ox/web/imdb.py | 17 +- .../python3.4/site-packages/ox/web/itunes.py | 6 +- .../site-packages/ox/web/rottentomatoes.py | 6 - .../site-packages/ox/web/startpage.py | 44 + .../site-packages/ox/web/thepiratebay.py | 10 +- .../lib/python3.4/site-packages/ox/web/ubu.py | 136 +- .../python3.4/site-packages/ox/web/youtube.py | 8 +- .../__init__.py} | 694 +- .../_vendor/__init__.py | 0 .../_vendor/packaging/__about__.py | 2 +- .../_vendor/packaging/__init__.py | 0 .../_vendor/packaging/_compat.py | 13 + .../_vendor/packaging/_structures.py | 0 .../_vendor/packaging/specifiers.py | 784 +++ .../_vendor/packaging/version.py | 403 ++ .../installed-files.txt | 362 +- .../requests-2.3.0.dist-info/RECORD | 146 +- .../setuptools-18.5.dist-info/DESCRIPTION.rst | 238 + .../setuptools-18.5.dist-info/METADATA | 268 + .../setuptools-18.5.dist-info/RECORD | 124 + .../WHEEL | 2 +- .../dependency_links.txt | 2 +- .../entry_points.txt | 5 +- .../setuptools-18.5.dist-info/metadata.json | 1 + .../top_level.txt | 0 .../zip-safe | 2 +- .../DESCRIPTION.rst | 2111 ------- .../setuptools-6.0.2.dist-info/METADATA | 2142 ------- .../setuptools-6.0.2.dist-info/RECORD | 166 - .../setuptools-6.0.2.dist-info/metadata.json | 1 - .../site-packages/setuptools/__init__.py | 70 +- .../setuptools/_vendor/packaging/version.py | 786 --- .../site-packages/setuptools/archive_util.py | 40 +- .../site-packages/setuptools/cli-32.exe | Bin .../site-packages/setuptools/cli-64.exe | Bin .../site-packages/setuptools/cli-arm-32.exe | Bin .../site-packages/setuptools/cli.exe | Bin .../setuptools/command/bdist_egg.py | 13 +- .../setuptools/command/build_ext.py | 73 +- .../setuptools/command/build_py.py | 17 +- .../setuptools/command/easy_install.py | 699 +- .../setuptools/command/egg_info.py | 53 +- .../setuptools/command/install_scripts.py | 19 +- .../site-packages/setuptools/command/sdist.py | 63 +- .../site-packages/setuptools/command/test.py | 48 +- .../setuptools/command/upload_docs.py | 3 +- .../site-packages/setuptools/dist.py | 65 +- .../site-packages/setuptools/extension.py | 28 +- .../site-packages/setuptools/gui-32.exe | Bin .../site-packages/setuptools/gui-64.exe | Bin .../site-packages/setuptools/gui-arm-32.exe | Bin .../site-packages/setuptools/gui.exe | Bin .../site-packages/setuptools/msvc9_support.py | 11 +- .../site-packages/setuptools/package_index.py | 22 +- .../site-packages/setuptools/sandbox.py | 219 +- .../site-packages/setuptools/svn_utils.py | 585 -- .../setuptools/tests/__init__.py | 351 -- .../setuptools/tests/environment.py | 165 - .../setuptools/tests/py26compat.py | 14 - .../setuptools/tests/script-with-bom.py | 3 - .../site-packages/setuptools/tests/server.py | 82 - .../setuptools/tests/test_bdist_egg.py | 72 - .../setuptools/tests/test_build_ext.py | 19 - .../setuptools/tests/test_develop.py | 122 - .../setuptools/tests/test_dist_info.py | 83 - .../setuptools/tests/test_easy_install.py | 462 -- .../setuptools/tests/test_egg_info.py | 210 - .../setuptools/tests/test_find_packages.py | 170 - .../setuptools/tests/test_integration.py | 83 - .../setuptools/tests/test_markerlib.py | 68 - .../setuptools/tests/test_msvc9compiler.py | 157 - .../setuptools/tests/test_packageindex.py | 203 - .../setuptools/tests/test_resources.py | 612 -- .../setuptools/tests/test_sandbox.py | 83 - .../setuptools/tests/test_sdist.py | 552 -- .../setuptools/tests/test_svn.py | 245 - .../setuptools/tests/test_test.py | 126 - .../setuptools/tests/test_upload_docs.py | 72 - .../site-packages/setuptools/version.py | 2 +- .../setuptools/windows_support.py | 29 + .../DESCRIPTION.rst | 10 +- .../METADATA | 12 +- .../site-packages/six-1.10.0.dist-info/RECORD | 8 + .../WHEEL | 12 +- .../six-1.10.0.dist-info/metadata.json | 1 + .../top_level.txt | 0 .../site-packages/six-1.8.0.dist-info/RECORD | 8 - .../six-1.8.0.dist-info/metadata.json | 1 - Shared/lib/python3.4/site-packages/six.py | 158 +- .../tornado-4.0.egg-info/installed-files.txt | 226 +- 184 files changed, 13080 insertions(+), 13691 deletions(-) delete mode 100644 Shared/lib/python3.4/site-packages/certifi-14.05.14.egg-info/PKG-INFO delete mode 100644 Shared/lib/python3.4/site-packages/certifi-14.05.14.egg-info/SOURCES.txt delete mode 100644 Shared/lib/python3.4/site-packages/certifi-14.05.14.egg-info/installed-files.txt create mode 100644 Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/DESCRIPTION.rst create mode 100644 Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/METADATA create mode 100644 Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/RECORD rename Shared/lib/python3.4/site-packages/{six-1.8.0.dist-info => certifi-2015.9.6.2.dist-info}/WHEEL (100%) create mode 100644 Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/metadata.json rename Shared/lib/python3.4/site-packages/{certifi-14.05.14.egg-info => certifi-2015.9.6.2.dist-info}/top_level.txt (100%) create mode 100644 Shared/lib/python3.4/site-packages/certifi/old_root.pem create mode 100644 Shared/lib/python3.4/site-packages/certifi/weak.pem delete mode 100644 Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/DESCRIPTION.rst delete mode 100644 Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/METADATA delete mode 100644 Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/RECORD delete mode 100644 Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/pydist.json create mode 100644 Shared/lib/python3.4/site-packages/chardet-2.3.0.egg-info/PKG-INFO create mode 100644 Shared/lib/python3.4/site-packages/chardet-2.3.0.egg-info/SOURCES.txt rename Shared/lib/python3.4/site-packages/{certifi-14.05.14.egg-info => chardet-2.3.0.egg-info}/dependency_links.txt (100%) rename Shared/lib/python3.4/site-packages/{chardet-2.2.1.dist-info => chardet-2.3.0.egg-info}/entry_points.txt (100%) create mode 100644 Shared/lib/python3.4/site-packages/chardet-2.3.0.egg-info/installed-files.txt rename Shared/lib/python3.4/site-packages/{chardet-2.2.1.dist-info => chardet-2.3.0.egg-info}/top_level.txt (100%) rename Shared/lib/python3.4/site-packages/{feedparser-5.1.3.egg-info => feedparser-5.2.1.egg-info}/PKG-INFO (87%) mode change 100644 => 100755 rename Shared/lib/python3.4/site-packages/{feedparser-5.1.3.egg-info => feedparser-5.2.1.egg-info}/SOURCES.txt (94%) mode change 100644 => 100755 rename Shared/lib/python3.4/site-packages/{feedparser-5.1.3.egg-info => feedparser-5.2.1.egg-info}/dependency_links.txt (100%) mode change 100644 => 100755 rename Shared/lib/python3.4/site-packages/{feedparser-5.1.3.egg-info => feedparser-5.2.1.egg-info}/installed-files.txt (100%) rename Shared/lib/python3.4/site-packages/{feedparser-5.1.3.egg-info => feedparser-5.2.1.egg-info}/top_level.txt (100%) mode change 100644 => 100755 rename Shared/lib/python3.4/site-packages/{html5lib-0.999.egg-info => html5lib-0.9999999.egg-info}/PKG-INFO (85%) rename Shared/lib/python3.4/site-packages/{html5lib-0.999.egg-info => html5lib-0.9999999.egg-info}/SOURCES.txt (100%) rename Shared/lib/python3.4/site-packages/{html5lib-0.999.egg-info => html5lib-0.9999999.egg-info}/dependency_links.txt (100%) rename Shared/lib/python3.4/site-packages/{html5lib-0.999.egg-info => html5lib-0.9999999.egg-info}/installed-files.txt (100%) rename Shared/lib/python3.4/site-packages/{html5lib-0.999.egg-info => html5lib-0.9999999.egg-info}/requires.txt (100%) rename Shared/lib/python3.4/site-packages/{html5lib-0.999.egg-info => html5lib-0.9999999.egg-info}/top_level.txt (100%) rename Shared/lib/python3.4/site-packages/{ox-2.1.unknown.egg-info => ox-2.3.x.egg-info}/PKG-INFO (96%) rename Shared/lib/python3.4/site-packages/{ox-2.1.unknown.egg-info => ox-2.3.x.egg-info}/SOURCES.txt (96%) rename Shared/lib/python3.4/site-packages/{ox-2.1.unknown.egg-info => ox-2.3.x.egg-info}/dependency_links.txt (100%) rename Shared/lib/python3.4/site-packages/{ox-2.1.unknown.egg-info => ox-2.3.x.egg-info}/installed-files.txt (97%) rename Shared/lib/python3.4/site-packages/{ox-2.1.unknown.egg-info => ox-2.3.x.egg-info}/requires.txt (63%) rename Shared/lib/python3.4/site-packages/{ox-2.1.unknown.egg-info => ox-2.3.x.egg-info}/top_level.txt (100%) delete mode 100644 Shared/lib/python3.4/site-packages/ox/__version.py create mode 100644 Shared/lib/python3.4/site-packages/ox/torrent/bencode3.py delete mode 100644 Shared/lib/python3.4/site-packages/ox/torrent/btformats.py create mode 100644 Shared/lib/python3.4/site-packages/ox/web/startpage.py rename Shared/lib/python3.4/site-packages/{pkg_resources.py => pkg_resources/__init__.py} (85%) rename Shared/lib/python3.4/site-packages/{setuptools => pkg_resources}/_vendor/__init__.py (100%) rename Shared/lib/python3.4/site-packages/{setuptools => pkg_resources}/_vendor/packaging/__about__.py (98%) rename Shared/lib/python3.4/site-packages/{setuptools => pkg_resources}/_vendor/packaging/__init__.py (100%) rename Shared/lib/python3.4/site-packages/{setuptools => pkg_resources}/_vendor/packaging/_compat.py (63%) rename Shared/lib/python3.4/site-packages/{setuptools => pkg_resources}/_vendor/packaging/_structures.py (100%) create mode 100644 Shared/lib/python3.4/site-packages/pkg_resources/_vendor/packaging/specifiers.py create mode 100644 Shared/lib/python3.4/site-packages/pkg_resources/_vendor/packaging/version.py create mode 100644 Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/DESCRIPTION.rst create mode 100644 Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/METADATA create mode 100644 Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/RECORD rename Shared/lib/python3.4/site-packages/{chardet-2.2.1.dist-info => setuptools-18.5.dist-info}/WHEEL (70%) rename Shared/lib/python3.4/site-packages/{setuptools-6.0.2.dist-info => setuptools-18.5.dist-info}/dependency_links.txt (50%) rename Shared/lib/python3.4/site-packages/{setuptools-6.0.2.dist-info => setuptools-18.5.dist-info}/entry_points.txt (95%) create mode 100644 Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/metadata.json rename Shared/lib/python3.4/site-packages/{setuptools-6.0.2.dist-info => setuptools-18.5.dist-info}/top_level.txt (100%) rename Shared/lib/python3.4/site-packages/{setuptools-6.0.2.dist-info => setuptools-18.5.dist-info}/zip-safe (50%) delete mode 100644 Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/DESCRIPTION.rst delete mode 100644 Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/METADATA delete mode 100644 Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/RECORD delete mode 100644 Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/metadata.json delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/_vendor/packaging/version.py mode change 100755 => 100644 Shared/lib/python3.4/site-packages/setuptools/cli-32.exe mode change 100755 => 100644 Shared/lib/python3.4/site-packages/setuptools/cli-64.exe mode change 100755 => 100644 Shared/lib/python3.4/site-packages/setuptools/cli-arm-32.exe mode change 100755 => 100644 Shared/lib/python3.4/site-packages/setuptools/cli.exe mode change 100755 => 100644 Shared/lib/python3.4/site-packages/setuptools/gui-32.exe mode change 100755 => 100644 Shared/lib/python3.4/site-packages/setuptools/gui-64.exe mode change 100755 => 100644 Shared/lib/python3.4/site-packages/setuptools/gui-arm-32.exe mode change 100755 => 100644 Shared/lib/python3.4/site-packages/setuptools/gui.exe delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/svn_utils.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/__init__.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/environment.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/py26compat.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/script-with-bom.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/server.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/test_bdist_egg.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/test_build_ext.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/test_develop.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/test_dist_info.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/test_easy_install.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/test_egg_info.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/test_find_packages.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/test_integration.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/test_markerlib.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/test_msvc9compiler.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/test_packageindex.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/test_resources.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/test_sandbox.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/test_sdist.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/test_svn.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/test_test.py delete mode 100644 Shared/lib/python3.4/site-packages/setuptools/tests/test_upload_docs.py create mode 100644 Shared/lib/python3.4/site-packages/setuptools/windows_support.py rename Shared/lib/python3.4/site-packages/{six-1.8.0.dist-info => six-1.10.0.dist-info}/DESCRIPTION.rst (63%) rename Shared/lib/python3.4/site-packages/{six-1.8.0.dist-info => six-1.10.0.dist-info}/METADATA (77%) create mode 100644 Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/RECORD rename Shared/lib/python3.4/site-packages/{setuptools-6.0.2.dist-info => six-1.10.0.dist-info}/WHEEL (67%) create mode 100644 Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/metadata.json rename Shared/lib/python3.4/site-packages/{six-1.8.0.dist-info => six-1.10.0.dist-info}/top_level.txt (100%) delete mode 100644 Shared/lib/python3.4/site-packages/six-1.8.0.dist-info/RECORD delete mode 100644 Shared/lib/python3.4/site-packages/six-1.8.0.dist-info/metadata.json diff --git a/.gitignore b/.gitignore index 0d9fcd1..bfa4be4 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ *.pyd __pycache__ pip_cache +Linux_x86_64/bin diff --git a/Shared/bin/chardetect b/Shared/bin/chardetect index 4328b21..2f1c1a6 100755 --- a/Shared/bin/chardetect +++ b/Shared/bin/chardetect @@ -1,11 +1,10 @@ #!/usr/bin/python3 - -# -*- coding: utf-8 -*- -import re +# EASY-INSTALL-ENTRY-SCRIPT: 'chardet==2.3.0','console_scripts','chardetect' +__requires__ = 'chardet==2.3.0' import sys - -from chardet.chardetect import main +from pkg_resources import load_entry_point if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) + sys.exit( + load_entry_point('chardet==2.3.0', 'console_scripts', 'chardetect')() + ) diff --git a/Shared/lib/python3.4/site-packages/PyPDF2-1.23.egg-info/installed-files.txt b/Shared/lib/python3.4/site-packages/PyPDF2-1.23.egg-info/installed-files.txt index eb52063..d3945c1 100644 --- a/Shared/lib/python3.4/site-packages/PyPDF2-1.23.egg-info/installed-files.txt +++ b/Shared/lib/python3.4/site-packages/PyPDF2-1.23.egg-info/installed-files.txt @@ -1,23 +1,23 @@ -../PyPDF2/xmp.py -../PyPDF2/utils.py ../PyPDF2/filters.py -../PyPDF2/__init__.py -../PyPDF2/_version.py ../PyPDF2/generic.py +../PyPDF2/merger.py ../PyPDF2/pagerange.py ../PyPDF2/pdf.py -../PyPDF2/merger.py -../PyPDF2/__pycache__/xmp.cpython-34.pyc -../PyPDF2/__pycache__/utils.cpython-34.pyc +../PyPDF2/utils.py +../PyPDF2/xmp.py +../PyPDF2/_version.py +../PyPDF2/__init__.py ../PyPDF2/__pycache__/filters.cpython-34.pyc -../PyPDF2/__pycache__/__init__.cpython-34.pyc -../PyPDF2/__pycache__/_version.cpython-34.pyc ../PyPDF2/__pycache__/generic.cpython-34.pyc +../PyPDF2/__pycache__/merger.cpython-34.pyc ../PyPDF2/__pycache__/pagerange.cpython-34.pyc ../PyPDF2/__pycache__/pdf.cpython-34.pyc -../PyPDF2/__pycache__/merger.cpython-34.pyc +../PyPDF2/__pycache__/utils.cpython-34.pyc +../PyPDF2/__pycache__/xmp.cpython-34.pyc +../PyPDF2/__pycache__/_version.cpython-34.pyc +../PyPDF2/__pycache__/__init__.cpython-34.pyc ./ +top_level.txt dependency_links.txt PKG-INFO SOURCES.txt -top_level.txt diff --git a/Shared/lib/python3.4/site-packages/certifi-14.05.14.egg-info/PKG-INFO b/Shared/lib/python3.4/site-packages/certifi-14.05.14.egg-info/PKG-INFO deleted file mode 100644 index a44f9c5..0000000 --- a/Shared/lib/python3.4/site-packages/certifi-14.05.14.egg-info/PKG-INFO +++ /dev/null @@ -1,42 +0,0 @@ -Metadata-Version: 1.1 -Name: certifi -Version: 14.05.14 -Summary: Python package for providing Mozilla's CA Bundle. -Home-page: http://python-requests.org -Author: Kenneth Reitz -Author-email: me@kennethreitz.com -License: ISC -Description: Certifi: Python SSL Certificates - ================================ - - This installable Python package contains a CA Bundle that you can reference - in your Python code. This is useful for verifying HTTP requests, for example. - - This is the same CA Bundle which ships with the Requests codebase, and is - derived from Mozilla Firefox's canonical set. - - - Usage - ----- - - To reference the installed CA Bundle, you can use the built-in function:: - - >>> import certifi - - >>> certifi.where() - '/usr/local/lib/python2.7/site-packages/certifi/cacert.pem' - - Enjoy! -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.5 -Classifier: Programming Language :: Python :: 2.6 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3.0 -Classifier: Programming Language :: Python :: 3.1 -Classifier: Programming Language :: Python :: 3.2 -Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 diff --git a/Shared/lib/python3.4/site-packages/certifi-14.05.14.egg-info/SOURCES.txt b/Shared/lib/python3.4/site-packages/certifi-14.05.14.egg-info/SOURCES.txt deleted file mode 100644 index 12bcd04..0000000 --- a/Shared/lib/python3.4/site-packages/certifi-14.05.14.egg-info/SOURCES.txt +++ /dev/null @@ -1,13 +0,0 @@ -LICENSE -MANIFEST.in -README.rst -setup.cfg -setup.py -certifi/__init__.py -certifi/__main__.py -certifi/cacert.pem -certifi/core.py -certifi.egg-info/PKG-INFO -certifi.egg-info/SOURCES.txt -certifi.egg-info/dependency_links.txt -certifi.egg-info/top_level.txt \ No newline at end of file diff --git a/Shared/lib/python3.4/site-packages/certifi-14.05.14.egg-info/installed-files.txt b/Shared/lib/python3.4/site-packages/certifi-14.05.14.egg-info/installed-files.txt deleted file mode 100644 index 25397b1..0000000 --- a/Shared/lib/python3.4/site-packages/certifi-14.05.14.egg-info/installed-files.txt +++ /dev/null @@ -1,12 +0,0 @@ -../certifi/__init__.py -../certifi/core.py -../certifi/__main__.py -../certifi/cacert.pem -../certifi/__pycache__/__init__.cpython-34.pyc -../certifi/__pycache__/core.cpython-34.pyc -../certifi/__pycache__/__main__.cpython-34.pyc -./ -dependency_links.txt -PKG-INFO -SOURCES.txt -top_level.txt diff --git a/Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/DESCRIPTION.rst b/Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/DESCRIPTION.rst new file mode 100644 index 0000000..5cb5f6d --- /dev/null +++ b/Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/DESCRIPTION.rst @@ -0,0 +1,30 @@ +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 CA Bundle, you can use the built-in function:: + + >>> import certifi + + >>> certifi.where() + '/usr/local/lib/python2.7/site-packages/certifi/cacert.pem' + +Enjoy! + +.. _`Certifi`: http://certifi.io/en/latest/ +.. _`Requests`: http://docs.python-requests.org/en/latest/ + + diff --git a/Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/METADATA b/Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/METADATA new file mode 100644 index 0000000..412b853 --- /dev/null +++ b/Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/METADATA @@ -0,0 +1,52 @@ +Metadata-Version: 2.0 +Name: certifi +Version: 2015.9.6.2 +Summary: Python package for providing Mozilla's CA Bundle. +Home-page: http://certifi.io/ +Author: Kenneth Reitz +Author-email: me@kennethreitz.com +License: ISC +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.5 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3.0 +Classifier: Programming Language :: Python :: 3.1 +Classifier: Programming Language :: Python :: 3.2 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 + +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 CA Bundle, you can use the built-in function:: + + >>> import certifi + + >>> certifi.where() + '/usr/local/lib/python2.7/site-packages/certifi/cacert.pem' + +Enjoy! + +.. _`Certifi`: http://certifi.io/en/latest/ +.. _`Requests`: http://docs.python-requests.org/en/latest/ + + diff --git a/Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/RECORD b/Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/RECORD new file mode 100644 index 0000000..d5363bc --- /dev/null +++ b/Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/RECORD @@ -0,0 +1,15 @@ +certifi/__init__.py,sha256=T8LOdkem2W_EqteuCirstbPu3iS11BmKnS_nKqQI_kQ,65 +certifi/__main__.py,sha256=FiOYt1Fltst7wk9DRa6GCoBr8qBUxlNQu_MKJf04E6s,41 +certifi/cacert.pem,sha256=wY10ezo0r5ZPcgfctoi3Q9KRZ79_tpb_MPDGsgWiOwE,320698 +certifi/core.py,sha256=DqvIINYNNXsp3Srlk_NRaiizaww8po3l8t8ksz-Xt6Q,716 +certifi/old_root.pem,sha256=Sm1SGy9Y3FjEDEy9ie0EX39fcJCv_r6gAPtj9yBrXEY,24014 +certifi/weak.pem,sha256=5xzWFRrSP0ZsXiW6emg8UQ_w497lT4qWCv32OO8R1ME,344712 +certifi-2015.9.6.2.dist-info/DESCRIPTION.rst,sha256=1HthO7cC8rfi_tZB3iPCnK7Npcd48svSApnFrl8J89Q,716 +certifi-2015.9.6.2.dist-info/METADATA,sha256=-IMJn5G46t_YY0VsjSgXQalm6mC4sChB8lsDanFlTME,1532 +certifi-2015.9.6.2.dist-info/metadata.json,sha256=LNvgTP4aFSgWMQ-8ySDRnRE7506kiisjTkPqBHna1YE,911 +certifi-2015.9.6.2.dist-info/RECORD,, +certifi-2015.9.6.2.dist-info/top_level.txt,sha256=KMu4vUCfsjLrkPbSNdgdekS-pVJzBAJFO__nI8NF6-U,8 +certifi-2015.9.6.2.dist-info/WHEEL,sha256=AvR0WeTpDaxT645bl5FQxUK6NPsTls2ttpcGJg3j1Xg,110 +certifi/__pycache__/__init__.cpython-34.pyc,, +certifi/__pycache__/__main__.cpython-34.pyc,, +certifi/__pycache__/core.cpython-34.pyc,, diff --git a/Shared/lib/python3.4/site-packages/six-1.8.0.dist-info/WHEEL b/Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/WHEEL similarity index 100% rename from Shared/lib/python3.4/site-packages/six-1.8.0.dist-info/WHEEL rename to Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/WHEEL diff --git a/Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/metadata.json b/Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/metadata.json new file mode 100644 index 0000000..0d756ff --- /dev/null +++ b/Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/metadata.json @@ -0,0 +1 @@ +{"license": "ISC", "name": "certifi", "metadata_version": "2.0", "generator": "bdist_wheel (0.24.0)", "summary": "Python package for providing Mozilla's CA Bundle.", "version": "2015.9.6.2", "extensions": {"python.details": {"project_urls": {"Home": "http://certifi.io/"}, "document_names": {"description": "DESCRIPTION.rst"}, "contacts": [{"role": "author", "email": "me@kennethreitz.com", "name": "Kenneth Reitz"}]}}, "classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 2.5", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.0", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4"]} \ No newline at end of file diff --git a/Shared/lib/python3.4/site-packages/certifi-14.05.14.egg-info/top_level.txt b/Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/top_level.txt similarity index 100% rename from Shared/lib/python3.4/site-packages/certifi-14.05.14.egg-info/top_level.txt rename to Shared/lib/python3.4/site-packages/certifi-2015.9.6.2.dist-info/top_level.txt diff --git a/Shared/lib/python3.4/site-packages/certifi/__init__.py b/Shared/lib/python3.4/site-packages/certifi/__init__.py index 853c08c..3bb2e55 100644 --- a/Shared/lib/python3.4/site-packages/certifi/__init__.py +++ b/Shared/lib/python3.4/site-packages/certifi/__init__.py @@ -1 +1,3 @@ -from .core import where \ No newline at end of file +from .core import where, old_where + +__version__ = "2015.09.06.2" diff --git a/Shared/lib/python3.4/site-packages/certifi/cacert.pem b/Shared/lib/python3.4/site-packages/certifi/cacert.pem index 3346ab5..dfa23ce 100644 --- a/Shared/lib/python3.4/site-packages/certifi/cacert.pem +++ b/Shared/lib/python3.4/site-packages/certifi/cacert.pem @@ -1,83 +1,3 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -# Issuer: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. -# Subject: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. -# Label: "GTE CyberTrust Global Root" -# Serial: 421 -# MD5 Fingerprint: ca:3d:d3:68:f1:03:5c:d0:32:fa:b8:2b:59:e8:5a:db -# SHA1 Fingerprint: 97:81:79:50:d8:1c:96:70:cc:34:d8:09:cf:79:44:31:36:7e:f4:74 -# SHA256 Fingerprint: a5:31:25:18:8d:21:10:aa:96:4b:02:c7:b7:c6:da:32:03:17:08:94:e5:fb:71:ff:fb:66:67:d5:e6:81:0a:36 ------BEGIN CERTIFICATE----- -MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD -VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv -bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv -b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV -UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU -cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds -b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH -iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS -r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 -04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r -GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 -3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P -lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ ------END CERTIFICATE----- - -# Issuer: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division -# Subject: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division -# Label: "Thawte Server CA" -# Serial: 1 -# MD5 Fingerprint: c5:70:c4:a2:ed:53:78:0c:c8:10:53:81:64:cb:d0:1d -# SHA1 Fingerprint: 23:e5:94:94:51:95:f2:41:48:03:b4:d5:64:d2:a3:a3:f5:d8:8b:8c -# SHA256 Fingerprint: b4:41:0b:73:e2:e6:ea:ca:47:fb:c4:2f:8f:a4:01:8a:f4:38:1d:c5:4c:fa:a8:44:50:46:1e:ed:09:45:4d:e9 ------BEGIN CERTIFICATE----- -MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm -MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx -MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT -DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 -dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl -cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 -DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD -gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 -yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX -L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj -EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG -7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e -QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ -qdq5snUb9kLy78fyGPmJvKP/iiMucEc= ------END CERTIFICATE----- - -# Issuer: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division -# Subject: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division -# Label: "Thawte Premium Server CA" -# Serial: 1 -# MD5 Fingerprint: 06:9f:69:79:16:66:90:02:1b:8c:8c:a2:c3:07:6f:3a -# SHA1 Fingerprint: 62:7f:8d:78:27:65:63:99:d2:7d:7f:90:44:c9:fe:b3:f3:3e:fa:9a -# SHA256 Fingerprint: ab:70:36:36:5c:71:54:aa:29:c2:c2:9f:5d:41:91:16:3b:16:2a:22:25:01:13:57:d5:6d:07:ff:a7:bc:1f:72 ------BEGIN CERTIFICATE----- -MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy -dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t -MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB -MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG -A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp -b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl -cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv -bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE -VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ -ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR -uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG -9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI -hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM -pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== ------END CERTIFICATE----- # Issuer: O=Equifax OU=Equifax Secure Certificate Authority # Subject: O=Equifax OU=Equifax Secure Certificate Authority @@ -106,55 +26,6 @@ A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y 1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 -----END CERTIFICATE----- -# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Label: "Verisign Class 3 Public Primary Certification Authority" -# Serial: 149843929435818692848040365716851702463 -# MD5 Fingerprint: 10:fc:63:5d:f6:26:3e:0d:f3:25:be:5f:79:cd:67:67 -# SHA1 Fingerprint: 74:2c:31:92:e6:07:e4:24:eb:45:49:54:2b:e1:bb:c5:3e:61:74:e2 -# SHA256 Fingerprint: e7:68:56:34:ef:ac:f6:9a:ce:93:9a:6b:25:5b:7b:4f:ab:ef:42:93:5b:50:a2:65:ac:b5:cb:60:27:e4:4e:70 ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do -lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc -AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k ------END CERTIFICATE----- - -# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network -# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network -# Label: "Verisign Class 3 Public Primary Certification Authority - G2" -# Serial: 167285380242319648451154478808036881606 -# MD5 Fingerprint: a2:33:9b:4c:74:78:73:d4:6c:e7:c1:f3:8d:cb:5c:e9 -# SHA1 Fingerprint: 85:37:1c:a6:e5:50:14:3d:ce:28:03:47:1b:de:3a:09:e8:f8:77:0f -# SHA256 Fingerprint: 83:ce:3c:12:29:68:8a:59:3d:48:5f:81:97:3c:0f:91:95:43:1e:da:37:cc:5e:36:43:0e:79:c7:a8:88:63:8b ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 -pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 -13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk -U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i -F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY -oJ2daZH9 ------END CERTIFICATE----- - # Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA # Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA # Label: "GlobalSign Root CA" @@ -214,84 +85,6 @@ AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== -----END CERTIFICATE----- -# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority -# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority -# Label: "ValiCert Class 1 VA" -# Serial: 1 -# MD5 Fingerprint: 65:58:ab:15:ad:57:6c:1e:a8:a7:b5:69:ac:bf:ff:eb -# SHA1 Fingerprint: e5:df:74:3c:b6:01:c4:9b:98:43:dc:ab:8c:e8:6a:81:10:9f:e4:8e -# SHA256 Fingerprint: f4:c1:49:55:1a:30:13:a3:5b:c7:bf:fe:17:a7:f3:44:9b:c1:ab:5b:5a:0a:e7:4b:06:c2:3b:90:00:4c:01:04 ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy -NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y -LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ -TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y -TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 -LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW -I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw -nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI ------END CERTIFICATE----- - -# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority -# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority -# Label: "ValiCert Class 2 VA" -# Serial: 1 -# MD5 Fingerprint: a9:23:75:9b:ba:49:36:6e:31:c2:db:f2:e7:66:ba:87 -# SHA1 Fingerprint: 31:7a:2a:d0:7f:2b:33:5e:f5:a1:c3:4e:4b:57:e8:b7:d8:f1:fc:a6 -# SHA256 Fingerprint: 58:d0:17:27:9c:d4:dc:63:ab:dd:b1:96:a6:c9:90:6c:30:c4:e0:87:83:ea:e8:c1:60:99:54:d6:93:55:59:6b ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy -NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY -dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 -WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS -v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v -UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu -IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC -W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd ------END CERTIFICATE----- - -# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority -# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority -# Label: "RSA Root Certificate 1" -# Serial: 1 -# MD5 Fingerprint: a2:6f:53:b7:ee:40:db:4a:68:e7:fa:18:d9:10:4b:72 -# SHA1 Fingerprint: 69:bd:8c:f4:9c:d3:00:fb:59:2e:17:93:ca:55:6a:f3:ec:aa:35:fb -# SHA256 Fingerprint: bc:23:f9:8a:31:3c:b9:2d:e3:bb:fc:3a:5a:9f:44:61:ac:39:49:4c:4a:e1:5a:9e:9d:f1:31:e9:9b:73:01:9a ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy -NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD -cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs -2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY -JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE -Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ -n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A -PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu ------END CERTIFICATE----- - # Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only # Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only # Label: "Verisign Class 3 Public Primary Certification Authority - G3" @@ -356,42 +149,6 @@ fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== -----END CERTIFICATE----- -# Issuer: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited -# Subject: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited -# Label: "Entrust.net Secure Server CA" -# Serial: 927650371 -# MD5 Fingerprint: df:f2:80:73:cc:f1:e6:61:73:fc:f5:42:e9:c5:7c:ee -# SHA1 Fingerprint: 99:a6:9b:e6:1a:fe:88:6b:4d:2b:82:00:7c:b8:54:fc:31:7e:15:39 -# SHA256 Fingerprint: 62:f2:40:27:8c:56:4c:4d:d8:bf:7d:9d:4f:6f:36:6e:a8:94:d2:2f:5f:34:d9:89:a9:83:ac:ec:2f:ff:ed:50 ------BEGIN CERTIFICATE----- -MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u -ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc -KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u -ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 -MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE -ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j -b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF -bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg -U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA -A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ -I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 -wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC -AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb -oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 -BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p -dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk -MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp -b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu -dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 -MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi -E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa -MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI -hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN -95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd -2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= ------END CERTIFICATE----- - # Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited # Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited # Label: "Entrust.net Premium 2048 Secure Server CA" @@ -454,54 +211,6 @@ ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp -----END CERTIFICATE----- -# Issuer: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. -# Subject: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. -# Label: "Equifax Secure Global eBusiness CA" -# Serial: 1 -# MD5 Fingerprint: 8f:5d:77:06:27:c4:98:3c:5b:93:78:e7:d7:7d:9b:cc -# SHA1 Fingerprint: 7e:78:4a:10:1c:82:65:cc:2d:e1:f1:6d:47:b4:40:ca:d9:0a:19:45 -# SHA256 Fingerprint: 5f:0b:62:ea:b5:e3:53:ea:65:21:65:16:58:fb:b6:53:59:f4:43:28:0a:4a:fb:d1:04:d7:7d:10:f9:f0:4c:07 ------BEGIN CERTIFICATE----- -MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT -ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw -MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj -dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l -c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC -UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc -58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ -o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH -MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr -aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA -A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA -Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv -8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV ------END CERTIFICATE----- - -# Issuer: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. -# Subject: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. -# Label: "Equifax Secure eBusiness CA 1" -# Serial: 4 -# MD5 Fingerprint: 64:9c:ef:2e:44:fc:c6:8f:52:07:d0:51:73:8f:cb:3d -# SHA1 Fingerprint: da:40:18:8b:91:89:a3:ed:ee:ae:da:97:fe:2f:9d:f5:b7:d1:8a:41 -# SHA256 Fingerprint: cf:56:ff:46:a4:a1:86:10:9d:d9:65:84:b5:ee:b5:8a:51:0c:42:75:b0:e5:f9:4f:40:bb:ae:86:5e:19:f6:73 ------BEGIN CERTIFICATE----- -MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT -ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw -MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j -LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ -KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo -RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu -WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw -Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD -AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK -eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM -zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ -WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN -/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== ------END CERTIFICATE----- - # Issuer: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network # Subject: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network # Label: "AddTrust Low-Value Services Root" @@ -831,77 +540,6 @@ OCiNUW7dFGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH QMAJKOSLakhT2+zNVVXxxvjpoixMptEmX36vWkzaH6byHCx+rgIW0lbQL1dTR+iS -----END CERTIFICATE----- -# Issuer: CN=America Online Root Certification Authority 1 O=America Online Inc. -# Subject: CN=America Online Root Certification Authority 1 O=America Online Inc. -# Label: "America Online Root Certification Authority 1" -# Serial: 1 -# MD5 Fingerprint: 14:f1:08:ad:9d:fa:64:e2:89:e7:1c:cf:a8:ad:7d:5e -# SHA1 Fingerprint: 39:21:c1:15:c1:5d:0e:ca:5c:cb:5b:c4:f0:7d:21:d8:05:0b:56:6a -# SHA256 Fingerprint: 77:40:73:12:c6:3a:15:3d:5b:c0:0b:4e:51:75:9c:df:da:c2:37:dc:2a:33:b6:79:46:e9:8e:9b:fa:68:0a:e3 ------BEGIN CERTIFICATE----- -MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP -bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2 -MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft -ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lk -hsmj76CGv2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym -1BW32J/X3HGrfpq/m44zDyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsW -OqMFf6Dch9Wc/HKpoH145LcxVR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb -2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQko -O3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAU -AK3Zo/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB -BQUAA4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF -Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAb -LjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTIdGcL+oir -oQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43gKd8hdIaC2y+C -MMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds -sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 ------END CERTIFICATE----- - -# Issuer: CN=America Online Root Certification Authority 2 O=America Online Inc. -# Subject: CN=America Online Root Certification Authority 2 O=America Online Inc. -# Label: "America Online Root Certification Authority 2" -# Serial: 1 -# MD5 Fingerprint: d6:ed:3c:ca:e2:66:0f:af:10:43:0d:77:9b:04:09:bf -# SHA1 Fingerprint: 85:b5:ff:67:9b:0c:79:96:1f:c8:6e:44:22:00:46:13:db:17:92:84 -# SHA256 Fingerprint: 7d:3b:46:5a:60:14:e5:26:c0:af:fc:ee:21:27:d2:31:17:27:ad:81:1c:26:84:2d:00:6a:f3:73:06:cc:80:bd ------BEGIN CERTIFICATE----- -MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP -bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2 -MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft -ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC -206B89enfHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFci -KtZHgVdEglZTvYYUAQv8f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2 -JxhP7JsowtS013wMPgwr38oE18aO6lhOqKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9 -BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JNRvCAOVIyD+OEsnpD8l7e -Xz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0gBe4lL8B -PeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67 -Xnfn6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEq -Z8A9W6Wa6897GqidFEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZ -o2C7HK2JNDJiuEMhBnIMoVxtRsX6Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3 -+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnjB453cMor9H124HhnAgMBAAGj -YzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3OpaaEg5+31IqEj -FNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE -AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmn -xPBUlgtk87FYT15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2 -LHo1YGwRgJfMqZJS5ivmae2p+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzccc -obGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXgJXUjhx5c3LqdsKyzadsXg8n33gy8 -CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//ZoyzH1kUQ7rVyZ2OuMe -IjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgOZtMA -DjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2F -AjgQ5ANh1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUX -Om/9riW99XJZZLF0KjhfGEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPb -AZO1XB4Y3WRayhgoPmMEEf0cjQAPuDffZ4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQl -Zvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuPcX/9XhmgD0uRuMRUvAaw -RY8mkaKO/qk= ------END CERTIFICATE----- - # Issuer: CN=Visa eCommerce Root O=VISA OU=Visa International Service Association # Subject: CN=Visa eCommerce Root O=VISA OU=Visa International Service Association # Label: "Visa eCommerce Root" @@ -1272,39 +910,6 @@ u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3ynGQI0DvDKcWy iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw== -----END CERTIFICATE----- -# Issuer: O=TDC Internet OU=TDC Internet Root CA -# Subject: O=TDC Internet OU=TDC Internet Root CA -# Label: "TDC Internet Root CA" -# Serial: 986490188 -# MD5 Fingerprint: 91:f4:03:55:20:a1:f8:63:2c:62:de:ac:fb:61:1c:8e -# SHA1 Fingerprint: 21:fc:bd:8e:7f:6c:af:05:1b:d1:b3:43:ec:a8:e7:61:47:f2:0f:8a -# SHA256 Fingerprint: 48:98:c6:88:8c:0c:ff:b0:d3:e3:1a:ca:8a:37:d4:e3:51:5f:f7:46:d0:26:35:d8:66:46:cf:a0:a3:18:5a:e7 ------BEGIN CERTIFICATE----- -MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJE -SzEVMBMGA1UEChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQg -Um9vdCBDQTAeFw0wMTA0MDUxNjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNV -BAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJuZXQxHTAbBgNVBAsTFFREQyBJbnRl -cm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxLhA -vJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20jxsNu -Zp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a -0vnRrEvLznWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc1 -4izbSysseLlJ28TQx5yc5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGN -eGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcD -R0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZIAYb4QgEBBAQDAgAHMGUG -A1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMMVERDIElu -dGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxME -Q1JMMTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3 -WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAw -HQYDVR0OBBYEFGxkAcf9hW2syNqeUAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJ -KoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4IBAQBO -Q8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540mgwV5dOy0uaOX -wTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+ -2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm89 -9qNLPg7kbWzbO0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0 -jUNAE4z9mQNUecYu6oah9jrUCbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38 -aQNiuJkFBT1reBK9sG9l ------END CERTIFICATE----- - # Issuer: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com # Subject: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com # Label: "UTN DATACorp SGC Root CA" @@ -1490,84 +1095,6 @@ f1qbFFgBJ34TUMdrKuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK 8CtmdWOMovsEPoMOmzbwGOQmIMOM8CgHrTwXZoi1/baI -----END CERTIFICATE----- -# Issuer: CN=NetLock Uzleti (Class B) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Subject: CN=NetLock Uzleti (Class B) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Label: "NetLock Business (Class B) Root" -# Serial: 105 -# MD5 Fingerprint: 39:16:aa:b9:6a:41:e1:14:69:df:9e:6c:3b:72:dc:b6 -# SHA1 Fingerprint: 87:9f:4b:ee:05:df:98:58:3b:e3:60:d6:33:e7:0d:3f:fe:98:71:af -# SHA256 Fingerprint: 39:df:7b:68:2b:7b:93:8f:84:71:54:81:cc:de:8d:60:d8:f2:2e:c5:98:87:7d:0a:aa:c1:2b:59:18:2b:03:12 ------BEGIN CERTIFICATE----- -MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUx -ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 -b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQD -EylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikgVGFudXNpdHZhbnlraWFkbzAeFw05 -OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYDVQQGEwJIVTERMA8G -A1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNh -Z2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5l -dExvY2sgVXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqG -SIb3DQEBAQUAA4GNADCBiQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xK -gZjupNTKihe5In+DCnVMm8Bp2GQ5o+2So/1bXHQawEfKOml2mrriRBf8TKPV/riX -iK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr1nGTLbO/CVRY7QbrqHvc -Q7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNVHQ8BAf8E -BAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1G -SUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFu -b3MgU3pvbGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBh -bGFwamFuIGtlc3p1bHQuIEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExv -Y2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRvc2l0YXNhIHZlZGkuIEEgZGln -aXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYXogZWxvaXJ0 -IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh -c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGph -biBhIGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJo -ZXRvIGF6IGVsbGVub3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBP -UlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmlj -YXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2YWlsYWJsZSBhdCBo -dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBjcHNA -bmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06 -sPgzTEdM43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXa -n3BukxowOR0w2y7jfLKRstE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKS -NitjrFgBazMpUIaD8QFI ------END CERTIFICATE----- - -# Issuer: CN=NetLock Expressz (Class C) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Subject: CN=NetLock Expressz (Class C) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Label: "NetLock Express (Class C) Root" -# Serial: 104 -# MD5 Fingerprint: 4f:eb:f1:f0:70:c2:80:63:5d:58:9f:da:12:3c:a9:c4 -# SHA1 Fingerprint: e3:92:51:2f:0a:cf:f5:05:df:f6:de:06:7f:75:37:e1:65:ea:57:4b -# SHA256 Fingerprint: 0b:5e:ed:4e:84:64:03:cf:55:e0:65:84:84:40:ed:2a:82:75:8b:f5:b9:aa:1f:25:3d:46:13:cf:a0:80:ff:3f ------BEGIN CERTIFICATE----- -MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUx -ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 -b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQD -EytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBDKSBUYW51c2l0dmFueWtpYWRvMB4X -DTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJBgNVBAYTAkhVMREw -DwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9u -c2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMr -TmV0TG9jayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNA -OoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3ZW3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC -2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63euyucYT2BDMIJTLrdKwW -RMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQwDgYDVR0P -AQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEW -ggJNRklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0 -YWxhbm9zIFN6b2xnYWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFz -b2sgYWxhcGphbiBrZXN6dWx0LiBBIGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBO -ZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1iaXp0b3NpdGFzYSB2ZWRpLiBB -IGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0ZWxlIGF6IGVs -b2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs -ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25s -YXBqYW4gYSBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kg -a2VyaGV0byBheiBlbGxlbm9yemVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4g -SU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5kIHRoZSB1c2Ugb2YgdGhpcyBjZXJ0 -aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQUyBhdmFpbGFibGUg -YXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwgYXQg -Y3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmY -ta3UzbM2xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2g -pO0u9f38vf5NNwgMvOOWgyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4 -Fp1hBWeAyNDYpQcCNJgEjTME1A== ------END CERTIFICATE----- - # Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com # Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com # Label: "XRamp Global CA Root" @@ -1980,38 +1507,6 @@ rscL9yuwNwXsvFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf2 9w4LTJxoeHtxMcfrHuBnQfO3oKfN5XozNmr6mis= -----END CERTIFICATE----- -# Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=(c) 2005 TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. -# Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=(c) 2005 TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. -# Label: "TURKTRUST Certificate Services Provider Root 1" -# Serial: 1 -# MD5 Fingerprint: f1:6a:22:18:c9:cd:df:ce:82:1d:1d:b7:78:5c:a9:a5 -# SHA1 Fingerprint: 79:98:a3:08:e1:4d:65:85:e6:c2:1e:15:3a:71:9f:ba:5a:d3:4a:d9 -# SHA256 Fingerprint: 44:04:e3:3b:5e:14:0d:cf:99:80:51:fd:fc:80:28:c7:c8:16:15:c5:ee:73:7b:11:1b:58:82:33:a9:b5:35:a0 ------BEGIN CERTIFICATE----- -MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOc -UktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx -c8SxMQswCQYDVQQGDAJUUjEPMA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykg -MjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8 -dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMxMDI3MTdaFw0xNTAz -MjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsgU2Vy -dGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYD -VQQHDAZBTktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kg -xLBsZXRpxZ9pbSB2ZSBCaWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEu -xZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7 -XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GXyGl8hMW0kWxsE2qkVa2k -heiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8iSi9BB35J -YbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5C -urKZ8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1 -JuTm5Rh8i27fbMx4W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51 -b0dewQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV -9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46sWrv7/hg0Uw2ZkUd82YCdAR7 -kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxEq8Sn5RTOPEFh -fEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy -B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdA -aLX/7KfS0zgYnNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKS -RGQDJereW26fyfJOrN3H ------END CERTIFICATE----- - # Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Kasım 2005 # Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Kasım 2005 # Label: "TURKTRUST Certificate Services Provider Root 2" @@ -2583,152 +2078,6 @@ t0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== -----END CERTIFICATE----- -# Issuer: CN=AC Raíz Certicámara S.A. O=Sociedad Cameral de Certificación Digital - Certicámara S.A. -# Subject: CN=AC Raíz Certicámara S.A. O=Sociedad Cameral de Certificación Digital - Certicámara S.A. -# Label: "AC Ra\xC3\xADz Certic\xC3\xA1mara S.A." -# Serial: 38908203973182606954752843738508300 -# MD5 Fingerprint: 93:2a:3e:f6:fd:23:69:0d:71:20:d4:2b:47:99:2b:a6 -# SHA1 Fingerprint: cb:a1:c5:f8:b0:e3:5e:b8:b9:45:12:d3:f9:34:a2:e9:06:10:d3:36 -# SHA256 Fingerprint: a6:c5:1e:0d:a5:ca:0a:93:09:d2:e4:c0:e4:0c:2a:f9:10:7a:ae:82:03:85:7f:e1:98:e3:e7:69:e3:43:08:5c ------BEGIN CERTIFICATE----- -MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsx -CzAJBgNVBAYTAkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRp -ZmljYWNpw7NuIERpZ2l0YWwgLSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwa -QUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4wHhcNMDYxMTI3MjA0NjI5WhcNMzAw -NDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+U29jaWVkYWQgQ2Ft -ZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJhIFMu -QS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkq -hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeG -qentLhM0R7LQcNzJPNCNyu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzL -fDe3fezTf3MZsGqy2IiKLUV0qPezuMDU2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQ -Y5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU34ojC2I+GdV75LaeHM/J4 -Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP2yYe68yQ -54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+b -MMCm8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48j -ilSH5L887uvDdUhfHjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++Ej -YfDIJss2yKHzMI+ko6Kh3VOz3vCaMh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/zt -A/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK5lw1omdMEWux+IBkAC1vImHF -rEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1bczwmPS9KvqfJ -pxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE -AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCB -lTCBkgYEVR0gADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFy -YS5jb20vZHBjLzBaBggrBgEFBQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW50 -7WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2UgcHVlZGVuIGVuY29udHJhciBlbiBs -YSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEfAygPU3zmpFmps4p6 -xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuXEpBc -unvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/ -Jre7Ir5v/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dp -ezy4ydV/NgIlqmjCMRW3MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42 -gzmRkBDI8ck1fj+404HGIGQatlDCIaR43NAvO2STdPCWkPHv+wlaNECW8DYSwaN0 -jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wkeZBWN7PGKX6jD/EpOe9+ -XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f/RWmnkJD -W2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/ -RL5hRqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35r -MDOhYil/SrnhLecUIw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxk -BYn8eNZcLCZDqQ== ------END CERTIFICATE----- - -# Issuer: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA -# Subject: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA -# Label: "TC TrustCenter Class 2 CA II" -# Serial: 941389028203453866782103406992443 -# MD5 Fingerprint: ce:78:33:5c:59:78:01:6e:18:ea:b9:36:a0:b9:2e:23 -# SHA1 Fingerprint: ae:50:83:ed:7c:f4:5c:bc:8f:61:c6:21:fe:68:5d:79:42:21:15:6e -# SHA256 Fingerprint: e6:b8:f8:76:64:85:f8:07:ae:7f:8d:ac:16:70:46:1f:07:c0:a1:3e:ef:3a:1f:f7:17:53:8d:7a:ba:d3:91:b4 ------BEGIN CERTIFICATE----- -MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjEL -MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV -BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 -Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYwMTEyMTQzODQzWhcNMjUxMjMxMjI1 -OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i -SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UEAxMc -VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jf -tMjWQ+nEdVl//OEd+DFwIxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKg -uNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2J -XjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQXa7pIXSSTYtZgo+U4+lK -8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7uSNQZu+99 -5OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1Ud -EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3 -kUrL84J6E1wIqzCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy -dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6 -Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz -JTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 -Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u -TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iS -GNn3Bzn1LL4GdXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprt -ZjluS5TmVfwLG4t3wVMTZonZKNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8 -au0WOB9/WIFaGusyiC2y8zl3gK9etmF1KdsjTYjKUCjLhdLTEKJZbtOTVAB6okaV -hgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kPJOzHdiEoZa5X6AeI -dUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfkvQ== ------END CERTIFICATE----- - -# Issuer: CN=TC TrustCenter Class 3 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 3 CA -# Subject: CN=TC TrustCenter Class 3 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 3 CA -# Label: "TC TrustCenter Class 3 CA II" -# Serial: 1506523511417715638772220530020799 -# MD5 Fingerprint: 56:5f:aa:80:61:12:17:f6:67:21:e6:2b:6d:61:56:8e -# SHA1 Fingerprint: 80:25:ef:f4:6e:70:c8:d4:72:24:65:84:fe:40:3b:8a:8d:6a:db:f5 -# SHA256 Fingerprint: 8d:a0:84:fc:f9:9c:e0:77:22:f8:9b:32:05:93:98:06:fa:5c:b8:11:e1:c8:13:f6:a1:08:c7:d3:36:b3:40:8e ------BEGIN CERTIFICATE----- -MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjEL -MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV -BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 -Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYwMTEyMTQ0MTU3WhcNMjUxMjMxMjI1 -OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i -SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UEAxMc -VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJW -Ht4bNwcwIi9v8Qbxq63WyKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+Q -Vl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo6SI7dYnWRBpl8huXJh0obazovVkdKyT2 -1oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZuV3bOx4a+9P/FRQI2Alq -ukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk2ZyqBwi1 -Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1Ud -EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NX -XAek0CSnwPIA1DCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy -dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6 -Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz -JTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 -Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u -TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlN -irTzwppVMXzEO2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8 -TtXqluJucsG7Kv5sbviRmEb8yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6 -g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9IJqDnxrcOfHFcqMRA/07QlIp2+gB -95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal092Y+tTmBvTwtiBj -S+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc5A== ------END CERTIFICATE----- - -# Issuer: CN=TC TrustCenter Universal CA I O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA -# Subject: CN=TC TrustCenter Universal CA I O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA -# Label: "TC TrustCenter Universal CA I" -# Serial: 601024842042189035295619584734726 -# MD5 Fingerprint: 45:e1:a5:72:c5:a9:36:64:40:9e:f5:e4:58:84:67:8c -# SHA1 Fingerprint: 6b:2f:34:ad:89:58:be:62:fd:b0:6b:5c:ce:bb:9d:d9:4f:4e:39:f3 -# SHA256 Fingerprint: eb:f3:c0:2a:87:89:b1:fb:7d:51:19:95:d6:63:b7:29:06:d9:13:ce:0d:5e:10:56:8a:8a:77:e2:58:61:67:e7 ------BEGIN CERTIFICATE----- -MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTEL -MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV -BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1 -c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcNMDYwMzIyMTU1NDI4WhcNMjUxMjMx -MjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIg -R21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYwJAYD -VQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSR -JJZ4Hgmgm5qVSkr1YnwCqMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3T -fCZdzHd55yx4Oagmcw6iXSVphU9VDprvxrlE4Vc93x9UIuVvZaozhDrzznq+VZeu -jRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtwag+1m7Z3W0hZneTvWq3z -wZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9OgdwZu5GQ -fezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYD -VR0jBBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAO -BgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0G -CSqGSIb3DQEBBQUAA4IBAQAo0uCG1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X1 -7caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/CyvwbZ71q+s2IhtNerNXxTPqYn -8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3ghUJGooWMNjs -ydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT -ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/ -2TYcuiUaUj0a7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY ------END CERTIFICATE----- - # Issuer: CN=Deutsche Telekom Root CA 2 O=Deutsche Telekom AG OU=T-TeleSec Trust Center # Subject: CN=Deutsche Telekom Root CA 2 O=Deutsche Telekom AG OU=T-TeleSec Trust Center # Label: "Deutsche Telekom Root CA 2" @@ -2759,36 +2108,6 @@ xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU Cm26OWMohpLzGITY+9HPBVZkVw== -----END CERTIFICATE----- -# Issuer: CN=ComSign Secured CA O=ComSign -# Subject: CN=ComSign Secured CA O=ComSign -# Label: "ComSign Secured CA" -# Serial: 264725503855295744117309814499492384489 -# MD5 Fingerprint: 40:01:25:06:8d:21:43:6a:0e:43:00:9c:e7:43:f3:d5 -# SHA1 Fingerprint: f9:cd:0e:2c:da:76:24:c1:8f:bd:f0:f0:ab:b6:45:b8:f7:fe:d5:7a -# SHA256 Fingerprint: 50:79:41:c7:44:60:a0:b4:70:86:22:0d:4e:99:32:57:2a:b5:d1:b5:bb:cb:89:80:ab:1c:b1:76:51:a8:44:d2 ------BEGIN CERTIFICATE----- -MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAw -PDEbMBkGA1UEAxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWdu -MQswCQYDVQQGEwJJTDAeFw0wNDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwx -GzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBDQTEQMA4GA1UEChMHQ29tU2lnbjEL -MAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGtWhf -HZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs49oh -gHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sW -v+bznkqH7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ue -Mv5WJDmyVIRD9YTC2LxBkMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr -9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d19guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt -6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUwAwEB/zBEBgNVHR8EPTA7 -MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29tU2lnblNl -Y3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58 -ADsAj8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkq -hkiG9w0BAQUFAAOCAQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7p -iL1DRYHjZiM/EoZNGeQFsOY3wo3aBijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtC -dsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtpFhpFfTMDZflScZAmlaxMDPWL -kz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP51qJThRv4zdL -hfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz -OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw== ------END CERTIFICATE----- - # Issuer: CN=Cybertrust Global Root O=Cybertrust, Inc # Subject: CN=Cybertrust Global Root O=Cybertrust, Inc # Label: "Cybertrust Global Root" @@ -2926,34 +2245,6 @@ h7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5wwDX3OaJdZtB7WZ+oRxKaJyOk LY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho -----END CERTIFICATE----- -# Issuer: CN=Buypass Class 3 CA 1 O=Buypass AS-983163327 -# Subject: CN=Buypass Class 3 CA 1 O=Buypass AS-983163327 -# Label: "Buypass Class 3 CA 1" -# Serial: 2 -# MD5 Fingerprint: df:3c:73:59:81:e7:39:50:81:04:4c:34:a2:cb:b3:7b -# SHA1 Fingerprint: 61:57:3a:11:df:0e:d8:7e:d5:92:65:22:ea:d0:56:d7:44:b3:23:71 -# SHA256 Fingerprint: b7:b1:2b:17:1f:82:1d:aa:99:0c:d0:fe:50:87:b1:28:44:8b:a8:e5:18:4f:84:c5:1e:02:b5:c8:fb:96:2b:24 ------BEGIN CERTIFICATE----- -MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEd -MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3Mg -Q2xhc3MgMyBDQSAxMB4XDTA1MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzEL -MAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MR0wGwYD -VQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKxifZg -isRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//z -NIqeKNc0n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI -+MkcVyzwPX6UvCWThOiaAJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2R -hzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+ -mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNCMEAwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0PAQH/BAQD -AgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFP -Bdy7pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27s -EzNxZy5p+qksP2bAEllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2 -mSlf56oBzKwzqBwKu5HEA6BvtjT5htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yC -e/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQjel/wroQk5PMr+4okoyeYZdow -dXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915 ------END CERTIFICATE----- - # Issuer: CN=EBG Elektronik Sertifika Hizmet Sağlayıcısı O=EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. # Subject: CN=EBG Elektronik Sertifika Hizmet Sağlayıcısı O=EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. # Label: "EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1" @@ -3501,28 +2792,6 @@ r0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3otkYNbn5XOmeUwssfnHdK Z05phkOTOPu220+DkdRgfks+KzgHVZhepA== -----END CERTIFICATE----- -# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Label: "Verisign Class 3 Public Primary Certification Authority" -# Serial: 80507572722862485515306429940691309246 -# MD5 Fingerprint: ef:5a:f1:33:ef:f1:cd:bb:51:02:ee:12:14:4b:96:c4 -# SHA1 Fingerprint: a1:db:63:93:91:6f:17:e4:18:55:09:40:04:15:c7:02:40:b0:ae:6b -# SHA256 Fingerprint: a4:b6:b3:99:6f:c2:f3:06:b3:fd:86:81:bd:63:41:3d:8c:50:09:cc:4f:a3:29:c2:cc:f0:e2:fa:1b:14:03:05 ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i -2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ -2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ ------END CERTIFICATE----- - # Issuer: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. # Subject: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. # Label: "Microsec e-Szigno Root CA 2009" @@ -3555,36 +2824,6 @@ tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW -----END CERTIFICATE----- -# Issuer: CN=e-Guven Kok Elektronik Sertifika Hizmet Saglayicisi O=Elektronik Bilgi Guvenligi A.S. -# Subject: CN=e-Guven Kok Elektronik Sertifika Hizmet Saglayicisi O=Elektronik Bilgi Guvenligi A.S. -# Label: "E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi" -# Serial: 91184789765598910059173000485363494069 -# MD5 Fingerprint: 3d:41:29:cb:1e:aa:11:74:cd:5d:b0:62:af:b0:43:5b -# SHA1 Fingerprint: dd:e1:d2:a9:01:80:2e:1d:87:5e:84:b3:80:7e:4b:b1:fd:99:41:34 -# SHA256 Fingerprint: e6:09:07:84:65:a4:19:78:0c:b6:ac:4c:1c:0b:fb:46:53:d9:d9:cc:6e:b3:94:6e:b7:f3:d6:99:97:ba:d5:98 ------BEGIN CERTIFICATE----- -MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1 -MQswCQYDVQQGEwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxp -Z2kgQS5TLjE8MDoGA1UEAxMzZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZp -a2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3MDEwNDExMzI0OFoXDTE3MDEwNDEx -MzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0cm9uaWsgQmlsZ2kg -R3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9uaWsg -U2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdU -MZTe1RK6UxYC6lhj71vY8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlT -L/jDj/6z/P2douNffb7tC+Bg62nsM+3YjfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H -5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAIJjjcJRFHLfO6IxClv7wC -90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk9Ok0oSy1 -c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/ -BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoE -VtstxNulMA0GCSqGSIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLP -qk/CaOv/gKlR6D1id4k9CnU58W5dF4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S -/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwqD2fK/A+JYZ1lpTzlvBNbCNvj -/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4Vwpm+Vganf2X -KWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq -fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX ------END CERTIFICATE----- - # Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 # Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 # Label: "GlobalSign Root CA - R3" @@ -5132,3 +4371,859 @@ maHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D lmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed -----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 1 G3" +# Serial: 687049649626669250736271037606554624078720034195 +# MD5 Fingerprint: a4:bc:5b:3f:fe:37:9a:fa:64:f0:e2:fa:05:3d:0b:ab +# SHA1 Fingerprint: 1b:8e:ea:57:96:29:1a:c9:39:ea:b8:0a:81:1a:73:73:c0:93:79:67 +# SHA256 Fingerprint: 8a:86:6f:d1:b2:76:b5:7e:57:8e:92:1c:65:82:8a:2b:ed:58:e9:f2:f2:88:05:41:34:b7:f1:f4:bf:c9:cc:74 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00 +MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakEPBtV +wedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWe +rNrwU8lmPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF341 +68Xfuw6cwI2H44g4hWf6Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh +4Pw5qlPafX7PGglTvF0FBM+hSo+LdoINofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXp +UhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/lg6AnhF4EwfWQvTA9xO+o +abw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV7qJZjqlc +3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/G +KubX9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSt +hfbZxbGL0eUQMk1fiyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KO +Tk0k+17kBL5yG6YnLUlamXrXXAkgt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOt +zCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZIhvcNAQELBQAD +ggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC +MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2 +cDMT/uFPpiN3GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUN +qXsCHKnQO18LwIE6PWThv6ctTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5 +YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP+V04ikkwj+3x6xn0dxoxGE1nVGwv +b2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh3jRJjehZrJ3ydlo2 +8hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fawx/k +NSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNj +ZgKAvQU6O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhp +q1467HxpvMc7hU6eFbm0FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFt +nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 2 G3" +# Serial: 390156079458959257446133169266079962026824725800 +# MD5 Fingerprint: af:0c:86:6e:bf:40:2d:7f:0b:3e:12:50:ba:12:3d:06 +# SHA1 Fingerprint: 09:3c:61:f3:8b:8b:dc:7d:55:df:75:38:02:05:00:e1:25:f5:c8:36 +# SHA256 Fingerprint: 8f:e4:fb:0a:f9:3a:4d:0d:67:db:0b:eb:b2:3e:37:c7:1b:f3:25:dc:bc:dd:24:0e:a0:4d:af:58:b4:7e:18:40 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00 +MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFhZiFf +qq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMW +n4rjyduYNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ym +c5GQYaYDFCDy54ejiK2toIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+ +O7q414AB+6XrW7PFXmAqMaCvN+ggOp+oMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1 +o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+lV0POKa2Mq1W/xPtbAd0j +IaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZoL1NesNKq +IcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz +8eQQsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43eh +vNURG3YBZwjgQQvD6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l +7ZizlWNof/k19N+IxWA1ksB8aRxhlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALG +cC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZIhvcNAQELBQAD +ggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 +AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RC +roijQ1h5fq7KpVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0Ga +W/ZZGYjeVYg3UQt4XAoeo0L9x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4n +lv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgzdWqTHBLmYF5vHX/JHyPLhGGfHoJE ++V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6XU/IyAgkwo1jwDQHV +csaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+NwmNtd +dbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNg +KCLjsZWDzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeM +HVOyToV7BjjHLPj4sHKNJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4 +WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 3 G3" +# Serial: 268090761170461462463995952157327242137089239581 +# MD5 Fingerprint: df:7d:b9:ad:54:6f:68:a1:df:89:57:03:97:43:b0:d7 +# SHA1 Fingerprint: 48:12:bd:92:3c:a8:c4:39:06:e7:30:6d:27:96:e6:a4:cf:22:2e:7d +# SHA256 Fingerprint: 88:ef:81:de:20:2e:b0:18:45:2e:43:f8:64:72:5c:ea:5f:bd:1f:c2:d9:d2:05:73:07:09:c5:d8:b8:69:0f:46 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00 +MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286IxSR +/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNu +FoM7pmRLMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXR +U7Ox7sWTaYI+FrUoRqHe6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+c +ra1AdHkrAj80//ogaX3T7mH1urPnMNA3I4ZyYUUpSFlob3emLoG+B01vr87ERROR +FHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3UVDmrJqMz6nWB2i3ND0/k +A9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f75li59wzw +eyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634Ryl +sSqiMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBp +VzgeAVuNVejH38DMdyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0Q +A4XN8f+MFrXBsj6IbGB/kE+V9/YtrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ +ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZIhvcNAQELBQAD +ggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px +KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnI +FUBhynLWcKzSt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5Wvv +oxXqA/4Ti2Tk08HS6IT7SdEQTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFg +u/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9DuDcpmvJRPpq3t/O5jrFc/ZSXPsoaP +0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGibIh6BJpsQBJFxwAYf +3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmDhPbl +8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+ +DhcI00iX0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HN +PlopNLk9hM6xZdRZkZFWdSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ +ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0 +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root G2" +# Serial: 15385348160840213938643033620894905419 +# MD5 Fingerprint: 92:38:b9:f8:63:24:82:65:2c:57:33:e6:fe:81:8f:9d +# SHA1 Fingerprint: a1:4b:48:d9:43:ee:0a:0e:40:90:4f:3c:e0:a4:c0:91:93:51:5d:3f +# SHA256 Fingerprint: 7d:05:eb:b6:82:33:9f:8c:94:51:ee:09:4e:eb:fe:fa:79:53:a1:14:ed:b2:f4:49:49:45:2f:ab:7d:2f:c1:85 +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSA +n61UQbVH35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4Htecc +biJVMWWXvdMX0h5i89vqbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9Hp +EgjAALAcKxHad3A2m67OeYfcgnDmCXRwVWmvo2ifv922ebPynXApVfSr/5Vh88lA +bx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OPYLfykqGxvYmJHzDNw6Yu +YjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+RnlTGNAgMB +AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQW +BBTOw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPI +QW5pJ6d1Ee88hjZv0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I +0jJmwYrA8y8678Dj1JGG0VDjA9tzd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4Gni +lmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAWhsI6yLETcDbYz+70CjTVW0z9 +B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0MjomZmWzwPDCv +ON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo +IhNzbM8m9Yop5w== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root G3" +# Serial: 15459312981008553731928384953135426796 +# MD5 Fingerprint: 7c:7f:65:31:0c:81:df:8d:ba:3e:99:e2:5c:ad:6e:fb +# SHA1 Fingerprint: f5:17:a2:4f:9a:48:c6:c9:f8:a2:00:26:9f:dc:0f:48:2c:ab:30:89 +# SHA256 Fingerprint: 7e:37:cb:8b:4c:47:09:0c:ab:36:55:1b:a6:f4:5d:b8:40:68:0f:ba:16:6a:95:2d:b1:00:71:7f:43:05:3f:c2 +-----BEGIN CERTIFICATE----- +MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3Qg +RzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJf +Zn4f5dwbRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17Q +RSAPWXYQ1qAk8C3eNvJsKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgFUaFNN6KDec6NHSrkhDAKBggqhkjOPQQD +AwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5FyYZ5eEJJZVrmDxxDnOOlY +JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv +6pZjamVFkpUBtA== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G2" +# Serial: 4293743540046975378534879503202253541 +# MD5 Fingerprint: e4:a6:8a:c8:54:ac:52:42:46:0a:fd:72:48:1b:2a:44 +# SHA1 Fingerprint: df:3c:24:f9:bf:d6:66:76:1b:26:80:73:fe:06:d1:cc:8d:4f:82:a4 +# SHA256 Fingerprint: cb:3c:cb:b7:60:31:e5:e0:13:8f:8d:d3:9a:23:f9:de:47:ff:c3:5e:43:c1:14:4c:ea:27:d4:6a:5a:b1:cb:5f +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH +MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI +2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx +1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ +q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz +tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ +vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV +5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY +1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 +NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG +Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 +8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe +pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G3" +# Serial: 7089244469030293291760083333884364146 +# MD5 Fingerprint: f5:5d:a4:50:a5:fb:28:7e:1e:0f:0d:cc:96:57:56:ca +# SHA1 Fingerprint: 7e:04:de:89:6a:3e:66:6d:00:e6:87:d3:3f:fa:d9:3b:e8:3d:34:9e +# SHA256 Fingerprint: 31:ad:66:48:f8:10:41:38:c7:38:f3:9e:a4:32:01:33:39:3e:3a:18:cc:02:29:6e:f9:7c:2a:c9:ef:67:31:d0 +-----BEGIN CERTIFICATE----- +MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe +Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw +EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x +IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF +K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG +fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO +Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd +BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx +AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/ +oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8 +sycX +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Trusted Root G4" +# Serial: 7451500558977370777930084869016614236 +# MD5 Fingerprint: 78:f2:fc:aa:60:1f:2f:b4:eb:c9:37:ba:53:2e:75:49 +# SHA1 Fingerprint: dd:fb:16:cd:49:31:c9:73:a2:03:7d:3f:c8:3a:4d:7d:77:5d:05:e4 +# SHA256 Fingerprint: 55:2f:7b:dc:f1:a7:af:9e:6c:e6:72:01:7f:4f:12:ab:f7:72:40:c7:8e:76:1a:c2:03:d1:d9:d2:0a:c8:99:88 +-----BEGIN CERTIFICATE----- +MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg +RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y +ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If +xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV +ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO +DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ +jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/ +CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi +EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM +fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY +uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK +chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t +9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD +ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2 +SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd ++SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc +fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa +sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N +cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N +0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie +4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI +r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1 +/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm +gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+ +-----END CERTIFICATE----- + +# Issuer: CN=Certification Authority of WoSign O=WoSign CA Limited +# Subject: CN=Certification Authority of WoSign O=WoSign CA Limited +# Label: "WoSign" +# Serial: 125491772294754854453622855443212256657 +# MD5 Fingerprint: a1:f2:f9:b5:d2:c8:7a:74:b8:f3:05:f1:d7:e1:84:8d +# SHA1 Fingerprint: b9:42:94:bf:91:ea:8f:b6:4b:e6:10:97:c7:fb:00:13:59:b6:76:cb +# SHA256 Fingerprint: 4b:22:d5:a6:ae:c9:9f:3c:db:79:aa:5e:c0:68:38:47:9c:d5:ec:ba:71:64:f7:f2:2d:c1:d6:5f:63:d8:57:08 +-----BEGIN CERTIFICATE----- +MIIFdjCCA16gAwIBAgIQXmjWEXGUY1BWAGjzPsnFkTANBgkqhkiG9w0BAQUFADBV +MQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxKjAoBgNV +BAMTIUNlcnRpZmljYXRpb24gQXV0aG9yaXR5IG9mIFdvU2lnbjAeFw0wOTA4MDgw +MTAwMDFaFw0zOTA4MDgwMTAwMDFaMFUxCzAJBgNVBAYTAkNOMRowGAYDVQQKExFX +b1NpZ24gQ0EgTGltaXRlZDEqMCgGA1UEAxMhQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgb2YgV29TaWduMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvcqN +rLiRFVaXe2tcesLea9mhsMMQI/qnobLMMfo+2aYpbxY94Gv4uEBf2zmoAHqLoE1U +fcIiePyOCbiohdfMlZdLdNiefvAA5A6JrkkoRBoQmTIPJYhTpA2zDxIIFgsDcScc +f+Hb0v1naMQFXQoOXXDX2JegvFNBmpGN9J42Znp+VsGQX+axaCA2pIwkLCxHC1l2 +ZjC1vt7tj/id07sBMOby8w7gLJKA84X5KIq0VC6a7fd2/BVoFutKbOsuEo/Uz/4M +x1wdC34FMr5esAkqQtXJTpCzWQ27en7N1QhatH/YHGkR+ScPewavVIMYe+HdVHpR +aG53/Ma/UkpmRqGyZxq7o093oL5d//xWC0Nyd5DKnvnyOfUNqfTq1+ezEC8wQjch +zDBwyYaYD8xYTYO7feUapTeNtqwylwA6Y3EkHp43xP901DfA4v6IRmAR3Qg/UDar +uHqklWJqbrDKaiFaafPz+x1wOZXzp26mgYmhiMU7ccqjUu6Du/2gd/Tkb+dC221K +mYo0SLwX3OSACCK28jHAPwQ+658geda4BmRkAjHXqc1S+4RFaQkAKtxVi8QGRkvA +Sh0JWzko/amrzgD5LkhLJuYwTKVYyrREgk/nkR4zw7CT/xH8gdLKH3Ep3XZPkiWv +HYG3Dy+MwwbMLyejSuQOmbp8HkUff6oZRZb9/D0CAwEAAaNCMEAwDgYDVR0PAQH/ +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOFmzw7R8bNLtwYgFP6H +EtX2/vs+MA0GCSqGSIb3DQEBBQUAA4ICAQCoy3JAsnbBfnv8rWTjMnvMPLZdRtP1 +LOJwXcgu2AZ9mNELIaCJWSQBnfmvCX0KI4I01fx8cpm5o9dU9OpScA7F9dY74ToJ +MuYhOZO9sxXqT2r09Ys/L3yNWC7F4TmgPsc9SnOeQHrAK2GpZ8nzJLmzbVUsWh2e +JXLOC62qx1ViC777Y7NhRCOjy+EaDveaBk3e1CNOIZZbOVtXHS9dCF4Jef98l7VN +g64N1uajeeAz0JmWAjCnPv/So0M/BVoG6kQC2nz4SNAzqfkHx5Xh9T71XXG68pWp +dIhhWeO/yloTunK0jF02h+mmxTwTv97QRCbut+wucPrXnbes5cVAWubXbHssw1ab +R80LzvobtCHXt2a49CUwi1wNuepnsvRtrtWhnk/Yn+knArAdBtaP4/tIEp9/EaEQ +PkxROpaw0RPxx9gmrjrKkcRpnd8BKWRRb2jaFOwIQZeQjdCygPLPwj2/kWjFgGce +xGATVdVhmVd8upUPYUk6ynW8yQqTP2cOEvIo4jEbwFcW3wh8GcF+Dx+FHgo2fFt+ +J7x6v+Db9NpSvd4MVHAxkUOVyLzwPt0JfjBkUO1/AaQzZ01oT74V77D2AhGiGxMl +OtzCWfHjXEa7ZywCRuoeSKbmW9m1vFGikpbbqsY3Iqb+zCB0oy2pLmvLwIIRIbWT +ee5Ehr7XHuQe+w== +-----END CERTIFICATE----- + +# Issuer: CN=CA 沃通根证书 O=WoSign CA Limited +# Subject: CN=CA 沃通根证书 O=WoSign CA Limited +# Label: "WoSign China" +# Serial: 106921963437422998931660691310149453965 +# MD5 Fingerprint: 78:83:5b:52:16:76:c4:24:3b:83:78:e8:ac:da:9a:93 +# SHA1 Fingerprint: 16:32:47:8d:89:f9:21:3a:92:00:85:63:f5:a4:a7:d3:12:40:8a:d6 +# SHA256 Fingerprint: d6:f0:34:bd:94:aa:23:3f:02:97:ec:a4:24:5b:28:39:73:e4:47:aa:59:0f:31:0c:77:f4:8f:df:83:11:22:54 +-----BEGIN CERTIFICATE----- +MIIFWDCCA0CgAwIBAgIQUHBrzdgT/BtOOzNy0hFIjTANBgkqhkiG9w0BAQsFADBG +MQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxGzAZBgNV +BAMMEkNBIOayg+mAmuagueivgeS5pjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgw +MTAwMDFaMEYxCzAJBgNVBAYTAkNOMRowGAYDVQQKExFXb1NpZ24gQ0EgTGltaXRl +ZDEbMBkGA1UEAwwSQ0Eg5rKD6YCa5qC56K+B5LmmMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA0EkhHiX8h8EqwqzbdoYGTufQdDTc7WU1/FDWiD+k8H/r +D195L4mx/bxjWDeTmzj4t1up+thxx7S8gJeNbEvxUNUqKaqoGXqW5pWOdO2XCld1 +9AXbbQs5uQF/qvbW2mzmBeCkTVL829B0txGMe41P/4eDrv8FAxNXUDf+jJZSEExf +v5RxadmWPgxDT74wwJ85dE8GRV2j1lY5aAfMh09Qd5Nx2UQIsYo06Yms25tO4dnk +UkWMLhQfkWsZHWgpLFbE4h4TV2TwYeO5Ed+w4VegG63XX9Gv2ystP9Bojg/qnw+L +NVgbExz03jWhCl3W6t8Sb8D7aQdGctyB9gQjF+BNdeFyb7Ao65vh4YOhn0pdr8yb ++gIgthhid5E7o9Vlrdx8kHccREGkSovrlXLp9glk3Kgtn3R46MGiCWOc76DbT52V +qyBPt7D3h1ymoOQ3OMdc4zUPLK2jgKLsLl3Az+2LBcLmc272idX10kaO6m1jGx6K +yX2m+Jzr5dVjhU1zZmkR/sgO9MHHZklTfuQZa/HpelmjbX7FF+Ynxu8b22/8DU0G +AbQOXDBGVWCvOGU6yke6rCzMRh+yRpY/8+0mBe53oWprfi1tWFxK1I5nuPHa1UaK +J/kR8slC/k7e3x9cxKSGhxYzoacXGKUN5AXlK8IrC6KVkLn9YDxOiT7nnO4fuwEC +AwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O +BBYEFOBNv9ybQV0T6GTwp+kVpOGBwboxMA0GCSqGSIb3DQEBCwUAA4ICAQBqinA4 +WbbaixjIvirTthnVZil6Xc1bL3McJk6jfW+rtylNpumlEYOnOXOvEESS5iVdT2H6 +yAa+Tkvv/vMx/sZ8cApBWNromUuWyXi8mHwCKe0JgOYKOoICKuLJL8hWGSbueBwj +/feTZU7n85iYr83d2Z5AiDEoOqsuC7CsDCT6eiaY8xJhEPRdF/d+4niXVOKM6Cm6 +jBAyvd0zaziGfjk9DgNyp115j0WKWa5bIW4xRtVZjc8VX90xJc/bYNaBRHIpAlf2 +ltTW/+op2znFuCyKGo3Oy+dCMYYFaA6eFN0AkLppRQjbbpCBhqcqBT/mhDn4t/lX +X0ykeVoQDF7Va/81XwVRHmyjdanPUIPTfPRm94KNPQx96N97qA4bLJyuQHCH2u2n +FoJavjVsIE4iYdm8UXrNemHcSxH5/mc0zy4EZmFcV5cjjPOGG0jfKq+nwf/Yjj4D +u9gqsPoUJbJRa4ZDhS4HIxaAjUz7tGM7zMN07RujHv41D198HRaG9Q7DlfEvr10l +O1Hm13ZBONFLAzkopR6RctR9q5czxNM+4Gm2KHmgCY0c0f9BckgG/Jou5yD5m6Le +ie2uPAmvylezkolwQOQvT8Jwg0DXJCxr5wkf09XHwQj02w47HAcLQxGEIYbpgNR1 +2KvxAmLBsX5VYc8T1yaw15zLKYs4SgsOkI26oQ== +-----END CERTIFICATE----- + +# Issuer: CN=COMODO RSA Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO RSA Certification Authority O=COMODO CA Limited +# Label: "COMODO RSA Certification Authority" +# Serial: 101909084537582093308941363524873193117 +# MD5 Fingerprint: 1b:31:b0:71:40:36:cc:14:36:91:ad:c4:3e:fd:ec:18 +# SHA1 Fingerprint: af:e5:d2:44:a8:d1:19:42:30:ff:47:9f:e2:f8:97:bb:cd:7a:8c:b4 +# SHA256 Fingerprint: 52:f0:e1:c4:e5:8e:c6:29:29:1b:60:31:7f:07:46:71:b8:5d:7e:a8:0d:5b:07:27:34:63:53:4b:32:b4:02:34 +-----BEGIN CERTIFICATE----- +MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB +hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV +BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5 +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT +EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR +6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X +pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC +9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV +/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf +Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z ++pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w +qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah +SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC +u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf +Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq +crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E +FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB +/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl +wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM +4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV +2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna +FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ +CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK +boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke +jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL +S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb +QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl +0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB +NVOFBkpdn627G190 +-----END CERTIFICATE----- + +# Issuer: CN=USERTrust RSA Certification Authority O=The USERTRUST Network +# Subject: CN=USERTrust RSA Certification Authority O=The USERTRUST Network +# Label: "USERTrust RSA Certification Authority" +# Serial: 2645093764781058787591871645665788717 +# MD5 Fingerprint: 1b:fe:69:d1:91:b7:19:33:a3:72:a8:0f:e1:55:e5:b5 +# SHA1 Fingerprint: 2b:8f:1b:57:33:0d:bb:a2:d0:7a:6c:51:f7:0e:e9:0d:da:b9:ad:8e +# SHA256 Fingerprint: e7:93:c9:b0:2f:d8:aa:13:e2:1c:31:22:8a:cc:b0:81:19:64:3b:74:9c:89:89:64:b1:74:6d:46:c3:d4:cb:d2 +-----BEGIN CERTIFICATE----- +MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB +iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl +cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV +BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw +MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV +BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B +3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY +tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/ +Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2 +VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT +79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6 +c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT +Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l +c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee +UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE +Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd +BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF +Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO +VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3 +ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs +8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR +iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze +Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ +XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/ +qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB +VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB +L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG +jjxDah2nGN59PRbxYvnKkKj9 +-----END CERTIFICATE----- + +# Issuer: CN=USERTrust ECC Certification Authority O=The USERTRUST Network +# Subject: CN=USERTrust ECC Certification Authority O=The USERTRUST Network +# Label: "USERTrust ECC Certification Authority" +# Serial: 123013823720199481456569720443997572134 +# MD5 Fingerprint: fa:68:bc:d9:b5:7f:ad:fd:c9:1d:06:83:28:cc:24:c1 +# SHA1 Fingerprint: d1:cb:ca:5d:b2:d5:2a:7f:69:3b:67:4d:e5:f0:5a:1d:0c:95:7d:f0 +# SHA256 Fingerprint: 4f:f4:60:d5:4b:9c:86:da:bf:bc:fc:57:12:e0:40:0d:2b:ed:3f:bc:4d:4f:bd:aa:86:e0:6a:dc:d2:a9:ad:7a +-----BEGIN CERTIFICATE----- +MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl +eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT +JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMjAx +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgT +Ck5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUg +VVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqflo +I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng +o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0G +A1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBBHU6+4WMB +zzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbW +RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 +# Label: "GlobalSign ECC Root CA - R4" +# Serial: 14367148294922964480859022125800977897474 +# MD5 Fingerprint: 20:f0:27:68:d1:7e:a0:9d:0e:e6:2a:ca:df:5c:89:8e +# SHA1 Fingerprint: 69:69:56:2e:40:80:f4:24:a1:e7:19:9f:14:ba:f3:ee:58:ab:6a:bb +# SHA256 Fingerprint: be:c9:49:11:c2:95:56:76:db:6c:0a:55:09:86:d7:6e:3b:a0:05:66:7c:44:2c:97:62:b4:fb:b7:73:de:22:8c +-----BEGIN CERTIFICATE----- +MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEk +MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpH +bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX +DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD +QSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprlOQcJ +FspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61F +uOJAf/sKbvu+M8k8o4TVMAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGX +kPoUVy0D7O48027KqGx2vKLeuwIgJ6iFJzWbVsaj8kfSt24bAgAXqmemFZHe+pTs +ewv4n4Q= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 +# Label: "GlobalSign ECC Root CA - R5" +# Serial: 32785792099990507226680698011560947931244 +# MD5 Fingerprint: 9f:ad:3b:1c:02:1e:8a:ba:17:74:38:81:0c:a2:bc:08 +# SHA1 Fingerprint: 1f:24:c6:30:cd:a4:18:ef:20:69:ff:ad:4f:dd:5f:46:3a:1b:69:aa +# SHA256 Fingerprint: 17:9f:bc:14:8a:3d:d0:0f:d2:4e:a1:34:58:cc:43:bf:a7:f5:9c:81:82:d7:83:a5:13:f6:eb:ec:10:0c:89:24 +-----BEGIN CERTIFICATE----- +MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEk +MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpH +bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX +DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD +QSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6SFkc +8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8ke +hOvRnkmSh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYI +KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg +515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7yFz9SO8NdCKoCOJuxUnO +xwy8p2Fp8fc74SrL+SvzZpA3 +-----END CERTIFICATE----- + +# Issuer: CN=Staat der Nederlanden Root CA - G3 O=Staat der Nederlanden +# Subject: CN=Staat der Nederlanden Root CA - G3 O=Staat der Nederlanden +# Label: "Staat der Nederlanden Root CA - G3" +# Serial: 10003001 +# MD5 Fingerprint: 0b:46:67:07:db:10:2f:19:8c:35:50:60:d1:0b:f4:37 +# SHA1 Fingerprint: d8:eb:6b:41:51:92:59:e0:f3:e7:85:00:c0:3d:b6:88:97:c9:ee:fc +# SHA256 Fingerprint: 3c:4f:b0:b9:5a:b8:b3:00:32:f4:32:b8:6f:53:5f:e1:72:c1:85:d0:fd:39:86:58:37:cf:36:18:7f:a6:f4:28 +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJO +TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFh +dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloX +DTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMCTkwxHjAcBgNVBAoMFVN0YWF0IGRl +ciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5lZGVybGFuZGVuIFJv +b3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4yolQP +cPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WW +IkYFsO2tx1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqX +xz8ecAgwoNzFs21v0IJyEavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFy +KJLZWyNtZrVtB0LrpjPOktvA9mxjeM3KTj215VKb8b475lRgsGYeCasH/lSJEULR +9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUurmkVLoR9BvUhTFXFkC4az +5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU51nus6+N8 +6U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7 +Ngzp07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHP +bMk7ccHViLVlvMDoFxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXt +BznaqB16nzaeErAMZRKQFWDZJkBE41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTt +XUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMBAAGjQjBAMA8GA1UdEwEB/wQF +MAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleuyjWcLhL75Lpd +INyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD +U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwp +LiniyMMB8jPqKqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8 +Ipf3YF3qKS9Ysr1YvY2WTxB1v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixp +gZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA8KCWAg8zxXHzniN9lLf9OtMJgwYh +/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b8KKaa8MFSu1BYBQw +0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0rmj1A +fsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq +4BZ+Extq1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR +1VmiiXTTn74eS9fGbbeIJG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/ +QFH1T/U67cjF68IeHRaVesd+QnGTbksVtzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM +94B7IWcnMFk= +-----END CERTIFICATE----- + +# Issuer: CN=Staat der Nederlanden EV Root CA O=Staat der Nederlanden +# Subject: CN=Staat der Nederlanden EV Root CA O=Staat der Nederlanden +# Label: "Staat der Nederlanden EV Root CA" +# Serial: 10000013 +# MD5 Fingerprint: fc:06:af:7b:e8:1a:f1:9a:b4:e8:d2:70:1f:c0:f5:ba +# SHA1 Fingerprint: 76:e2:7e:c1:4f:db:82:c1:c0:a6:75:b5:05:be:3d:29:b4:ed:db:bb +# SHA256 Fingerprint: 4d:24:91:41:4c:fe:95:67:46:ec:4c:ef:a6:cf:6f:72:e2:8a:13:29:43:2f:9d:8a:90:7a:c4:cb:5d:ad:c1:5a +-----BEGIN CERTIFICATE----- +MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJO +TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFh +dCBkZXIgTmVkZXJsYW5kZW4gRVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0y +MjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5MMR4wHAYDVQQKDBVTdGFhdCBkZXIg +TmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRlcmxhbmRlbiBFViBS +b290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkkSzrS +M4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nC +UiY4iKTWO0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3d +Z//BYY1jTw+bbRcwJu+r0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46p +rfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13l +pJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gVXJrm0w912fxBmJc+qiXb +j5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr08C+eKxC +KFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS +/ZbV0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0X +cgOPvZuM5l5Tnrmd74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH +1vI4gnPah1vlPNOePqc7nvQDs/nxfRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrP +px9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwaivsnuL8wbqg7 +MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI +eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u +2dfOWBfoqSmuc0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHS +v4ilf0X8rLiltTMMgsT7B/Zq5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTC +wPTxGfARKbalGAKb12NMcIxHowNDXLldRqANb/9Zjr7dn3LDWyvfjFvO5QxGbJKy +CqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tNf1zuacpzEPuKqf2e +vTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi5Dp6 +Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIa +Gl6I6lD4WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeL +eG9QgkRQP2YGiqtDhFZKDyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8 +FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGyeUN51q1veieQA6TqJIc/2b3Z6fJfUEkc +7uzXLg== +-----END CERTIFICATE----- + +# Issuer: CN=IdenTrust Commercial Root CA 1 O=IdenTrust +# Subject: CN=IdenTrust Commercial Root CA 1 O=IdenTrust +# Label: "IdenTrust Commercial Root CA 1" +# Serial: 13298821034946342390520003877796839426 +# MD5 Fingerprint: b3:3e:77:73:75:ee:a0:d3:e3:7e:49:63:49:59:bb:c7 +# SHA1 Fingerprint: df:71:7e:aa:4a:d9:4e:c9:55:84:99:60:2d:48:de:5f:bc:f0:3a:25 +# SHA256 Fingerprint: 5d:56:49:9b:e4:d2:e0:8b:cf:ca:d0:8a:3e:38:72:3d:50:50:3b:de:70:69:48:e4:2f:55:60:30:19:e5:28:ae +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBK +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVu +VHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQw +MTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScw +JQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ldhNlT +3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU ++ehcCuz/mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gp +S0l4PJNgiCL8mdo2yMKi1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1 +bVoE/c40yiTcdCMbXTMTEl3EASX2MN0CXZ/g1Ue9tOsbobtJSdifWwLziuQkkORi +T0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl3ZBWzvurpWCdxJ35UrCL +vYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzyNeVJSQjK +Vsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZK +dHzVWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHT +c+XvvqDtMwt0viAgxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hv +l7yTmvmcEpB4eoCHFddydJxVdHixuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5N +iGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZIhvcNAQELBQAD +ggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH +6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwt +LRvM7Kqas6pgghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93 +nAbowacYXVKV7cndJZ5t+qntozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3 ++wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmVYjzlVYA211QC//G5Xc7UI2/YRYRK +W2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUXfeu+h1sXIFRRk0pT +AwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/rokTLq +l1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG +4iZZRHUe2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZ +mUlO+KWA2yUPHGNiiskzZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A +7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H +-----END CERTIFICATE----- + +# Issuer: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust +# Subject: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust +# Label: "IdenTrust Public Sector Root CA 1" +# Serial: 13298821034946342390521976156843933698 +# MD5 Fingerprint: 37:06:a5:b0:fc:89:9d:ba:f4:6b:8c:1a:64:cd:d5:ba +# SHA1 Fingerprint: ba:29:41:60:77:98:3f:f4:f3:ef:f2:31:05:3b:2e:ea:6d:4d:45:fd +# SHA256 Fingerprint: 30:d0:89:5a:9a:44:8a:26:20:91:63:55:22:d1:f5:20:10:b5:86:7a:ca:e1:2c:78:ef:95:8f:d4:f4:38:9f:2f +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBN +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVu +VHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcN +MzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0 +MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTyP4o7 +ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGy +RBb06tD6Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlS +bdsHyo+1W/CD80/HLaXIrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF +/YTLNiCBWS2ab21ISGHKTN9T0a9SvESfqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R +3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoSmJxZZoY+rfGwyj4GD3vw +EUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFnol57plzy +9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9V +GxyhLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ +2fjXctscvG29ZV/viDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsV +WaFHVCkugyhfHMKiq3IXAAaOReyL4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gD +W/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMwDQYJKoZIhvcN +AQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj +t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHV +DRDtfULAj+7AmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9 +TaDKQGXSc3z1i9kKlT/YPyNtGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8G +lwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFtm6/n6J91eEyrRjuazr8FGF1NFTwW +mhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMxNRF4eKLg6TCMf4Df +WN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4Mhn5 ++bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJ +tshquDDIajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhA +GaQdp/lLQzfcaFpPz+vCZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv +8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only +# Subject: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only +# Label: "Entrust Root Certification Authority - G2" +# Serial: 1246989352 +# MD5 Fingerprint: 4b:e2:c9:91:96:65:0c:f4:0e:5a:93:92:a0:0a:fe:b2 +# SHA1 Fingerprint: 8c:f4:27:fd:79:0c:3a:d1:66:06:8d:e8:1e:57:ef:bb:93:22:72:d4 +# SHA256 Fingerprint: 43:df:57:74:b0:3e:7f:ef:5f:e4:0d:93:1a:7b:ed:f1:bb:2e:6b:42:73:8c:4e:6d:38:41:10:3d:3a:a7:f3:39 +-----BEGIN CERTIFICATE----- +MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50 +cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs +IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz +dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy +NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu +dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt +dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0 +aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T +RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN +cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW +wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1 +U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0 +jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN +BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/ +jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ +Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v +1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R +nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH +VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g== +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only +# Subject: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only +# Label: "Entrust Root Certification Authority - EC1" +# Serial: 51543124481930649114116133369 +# MD5 Fingerprint: b6:7e:1d:f0:58:c5:49:6c:24:3b:3d:ed:98:18:ed:bc +# SHA1 Fingerprint: 20:d8:06:40:df:9b:25:f5:12:25:3a:11:ea:f7:59:8a:eb:14:b5:47 +# SHA256 Fingerprint: 02:ed:0e:b2:8c:14:da:45:16:5c:56:67:91:70:0d:64:51:d7:fb:56:f0:b2:ab:1d:3b:8e:b0:70:e5:6e:df:f5 +-----BEGIN CERTIFICATE----- +MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkG +A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3 +d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVu +dHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEzMDEGA1UEAxMq +RW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRUMxMB4XDTEy +MTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYwFAYD +VQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 +L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0g +Zm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMTB2MBAGByqGSM49AgEGBSuBBAAi +A2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHyAsWfoPZb1YsGGYZPUxBt +ByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef9eNi1KlH +Bz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O +BBYEFLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVC +R98crlOZF7ZvHH3hvxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nX +hTcGtXsI/esni0qU+eH6p44mCOh8kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G +-----END CERTIFICATE----- + +# Issuer: CN=CFCA EV ROOT O=China Financial Certification Authority +# Subject: CN=CFCA EV ROOT O=China Financial Certification Authority +# Label: "CFCA EV ROOT" +# Serial: 407555286 +# MD5 Fingerprint: 74:e1:b6:ed:26:7a:7a:44:30:33:94:ab:7b:27:81:30 +# SHA1 Fingerprint: e2:b8:29:4b:55:84:ab:6b:58:c2:90:46:6c:ac:3f:b8:39:8f:84:83 +# SHA256 Fingerprint: 5c:c3:d7:8e:4e:1d:5e:45:54:7a:04:e6:87:3e:64:f9:0c:f9:53:6d:1c:cc:2e:f8:00:f3:55:c4:c5:fd:70:fd +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD +TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y +aXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkx +MjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j +aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJP +T1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnVBU03 +sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpL +TIpTUnrD7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5 +/ZOkVIBMUtRSqy5J35DNuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp +7hZZLDRJGqgG16iI0gNyejLi6mhNbiyWZXvKWfry4t3uMCz7zEasxGPrb382KzRz +EpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7xzbh72fROdOXW3NiGUgt +hxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9fpy25IGvP +a931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqot +aK8KgWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNg +TnYGmE69g60dWIolhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfV +PKPtl8MeNPo4+QgO48BdK4PRVmrJtqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hv +cWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAfBgNVHSMEGDAWgBTj/i39KNAL +tbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd +BgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB +ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObT +ej/tUxPQ4i9qecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdL +jOztUmCypAbqTuv0axn96/Ua4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBS +ESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sGE5uPhnEFtC+NiWYzKXZUmhH4J/qy +P5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfXBDrDMlI1Dlb4pd19 +xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjnaH9d +Ci77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN +5mydLIhyPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe +/v5WOaHIz16eGWRGENoXkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+Z +AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ +5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su +-----END CERTIFICATE----- + +# Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5 O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. +# Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5 O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. +# Label: "TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5" +# Serial: 156233699172481 +# MD5 Fingerprint: da:70:8e:f0:22:df:93:26:f6:5f:9f:d3:15:06:52:4e +# SHA1 Fingerprint: c4:18:f6:4d:46:d1:df:00:3d:27:30:13:72:43:a9:12:11:c6:75:fb +# SHA256 Fingerprint: 49:35:1b:90:34:44:c1:85:cc:dc:5c:69:3d:24:d8:55:5c:b2:08:d6:a8:14:13:07:69:9f:4a:f0:63:19:9d:78 +-----BEGIN CERTIFICATE----- +MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UE +BhMCVFIxDzANBgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxn +aSDEsGxldGnFn2ltIHZlIEJpbGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkg +QS7Fni4xQjBABgNVBAMMOVTDnFJLVFJVU1QgRWxla3Ryb25payBTZXJ0aWZpa2Eg +SGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSBINTAeFw0xMzA0MzAwODA3MDFaFw0yMzA0 +MjgwODA3MDFaMIGxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMU0wSwYD +VQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8 +dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg1MIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCUZ4WWe60ghUEoI5RHwWrom +/4NZzkQqL/7hzmAD/I0Dpe3/a6i6zDQGn1k19uwsu537jVJp45wnEFPzpALFp/kR +Gml1bsMdi9GYjZOHp3GXDSHHmflS0yxjXVW86B8BSLlg/kJK9siArs1mep5Fimh3 +4khon6La8eHBEJ/rPCmBp+EyCNSgBbGM+42WAA4+Jd9ThiI7/PS98wl+d+yG6w8z +5UNP9FR1bSmZLmZaQ9/LXMrI5Tjxfjs1nQ/0xVqhzPMggCTTV+wVunUlm+hkS7M0 +hO8EuPbJbKoCPrZV4jI3X/xml1/N1p7HIL9Nxqw/dV8c7TKcfGkAaZHjIxhT6QID +AQABo0IwQDAdBgNVHQ4EFgQUVpkHHtOsDGlktAxQR95DLL4gwPswDgYDVR0PAQH/ +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAJ5FdnsX +SDLyOIspve6WSk6BGLFRRyDN0GSxDsnZAdkJzsiZ3GglE9Rc8qPoBP5yCccLqh0l +VX6Wmle3usURehnmp349hQ71+S4pL+f5bFgWV1Al9j4uPqrtd3GqqpmWRgqujuwq +URawXs3qZwQcWDD1YIq9pr1N5Za0/EKJAWv2cMhQOQwt1WbZyNKzMrcbGW3LM/nf +peYVhDfwwvJllpKQd/Ct9JDpEXjXk4nAPQu6KfTomZ1yju2dL+6SfaHx/126M2CF +Yv4HAqGEVka+lgqaE9chTLd8B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW ++qtB4Uu2NQvAmxU= +-----END CERTIFICATE----- + +# Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6 O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. +# Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6 O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. +# Label: "TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6" +# Serial: 138134509972618 +# MD5 Fingerprint: f8:c5:ee:2a:6b:be:95:8d:08:f7:25:4a:ea:71:3e:46 +# SHA1 Fingerprint: 8a:5c:8c:ee:a5:03:e6:05:56:ba:d8:1b:d4:f6:c9:b0:ed:e5:2f:e0 +# SHA256 Fingerprint: 8d:e7:86:55:e1:be:7f:78:47:80:0b:93:f6:94:d2:1d:36:8c:c0:6e:03:3e:7f:ab:04:bb:5e:b9:9d:a6:b7:00 +-----BEGIN CERTIFICATE----- +MIIEJjCCAw6gAwIBAgIGfaHyZeyKMA0GCSqGSIb3DQEBCwUAMIGxMQswCQYDVQQG +EwJUUjEPMA0GA1UEBwwGQW5rYXJhMU0wSwYDVQQKDERUw5xSS1RSVVNUIEJpbGdp +IMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBB +LsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBI +aXptZXQgU2HEn2xhecSxY8Sxc8SxIEg2MB4XDTEzMTIxODA5MDQxMFoXDTIzMTIx +NjA5MDQxMFowgbExCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExTTBLBgNV +BAoMRFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBCaWxpxZ9pbSBHw7x2 +ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMUIwQAYDVQQDDDlUw5xSS1RSVVNUIEVs +ZWt0cm9uaWsgU2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLEgSDYwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCdsGjW6L0UlqMACprx9MfMkU1x +eHe59yEmFXNRFpQJRwXiM/VomjX/3EsvMsew7eKC5W/a2uqsxgbPJQ1BgfbBOCK9 ++bGlprMBvD9QFyv26WZV1DOzXPhDIHiTVRZwGTLmiddk671IUP320EEDwnS3/faA +z1vFq6TWlRKb55cTMgPp1KtDWxbtMyJkKbbSk60vbNg9tvYdDjTu0n2pVQ8g9P0p +u5FbHH3GQjhtQiht1AH7zYiXSX6484P4tZgvsycLSF5W506jM7NE1qXyGJTtHB6p +lVxiSvgNZ1GpryHV+DKdeboaX+UEVU0TRv/yz3THGmNtwx8XEsMeED5gCLMxAgMB +AAGjQjBAMB0GA1UdDgQWBBTdVRcT9qzoSCHK77Wv0QAy7Z6MtTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAb1gNl0Oq +FlQ+v6nfkkU/hQu7VtMMUszIv3ZnXuaqs6fvuay0EBQNdH49ba3RfdCaqaXKGDsC +QC4qnFAUi/5XfldcEQlLNkVS9z2sFP1E34uXI9TDwe7UU5X+LEr+DXCqu4svLcsy +o4LyVN/Y8t3XSHLuSqMplsNEzm61kod2pLv0kmzOLBQJZo6NrRa1xxsJYTvjIKID +gI6tflEATseWhvtDmHd9KMeP2Cpu54Rvl0EpABZeTeIT6lnAY2c6RPuY/ATTMHKm +9ocJV612ph1jmv3XZch4gyt1O6VbuA1df74jrlZVlFjvH4GMKrLN5ptjnhi85WsG +tAuYSyher4hYyw== +-----END CERTIFICATE----- + +# Issuer: CN=Certinomis - Root CA O=Certinomis OU=0002 433998903 +# Subject: CN=Certinomis - Root CA O=Certinomis OU=0002 433998903 +# Label: "Certinomis - Root CA" +# Serial: 1 +# MD5 Fingerprint: 14:0a:fd:8d:a8:28:b5:38:69:db:56:7e:61:22:03:3f +# SHA1 Fingerprint: 9d:70:bb:01:a5:a4:a0:18:11:2e:f7:1c:01:b9:32:c5:34:e7:88:a8 +# SHA256 Fingerprint: 2a:99:f5:bc:11:74:b7:3c:bb:1d:62:08:84:e0:1c:34:e5:1c:cb:39:78:da:12:5f:0e:33:26:88:83:bf:41:58 +-----BEGIN CERTIFICATE----- +MIIFkjCCA3qgAwIBAgIBATANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJGUjET +MBEGA1UEChMKQ2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxHTAb +BgNVBAMTFENlcnRpbm9taXMgLSBSb290IENBMB4XDTEzMTAyMTA5MTcxOFoXDTMz +MTAyMTA5MTcxOFowWjELMAkGA1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMx +FzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMR0wGwYDVQQDExRDZXJ0aW5vbWlzIC0g +Um9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANTMCQosP5L2 +fxSeC5yaah1AMGT9qt8OHgZbn1CF6s2Nq0Nn3rD6foCWnoR4kkjW4znuzuRZWJfl +LieY6pOod5tK8O90gC3rMB+12ceAnGInkYjwSond3IjmFPnVAy//ldu9n+ws+hQV +WZUKxkd8aRi5pwP5ynapz8dvtF4F/u7BUrJ1Mofs7SlmO/NKFoL21prbcpjp3vDF +TKWrteoB4owuZH9kb/2jJZOLyKIOSY008B/sWEUuNKqEUL3nskoTuLAPrjhdsKkb +5nPJWqHZZkCqqU2mNAKthH6yI8H7KsZn9DS2sJVqM09xRLWtwHkziOC/7aOgFLSc +CbAK42C++PhmiM1b8XcF4LVzbsF9Ri6OSyemzTUK/eVNfaoqoynHWmgE6OXWk6Ri +wsXm9E/G+Z8ajYJJGYrKWUM66A0ywfRMEwNvbqY/kXPLynNvEiCL7sCCeN5LLsJJ +wx3tFvYk9CcbXFcx3FXuqB5vbKziRcxXV4p1VxngtViZSTYxPDMBbRZKzbgqg4SG +m/lg0h9tkQPTYKbVPZrdd5A9NaSfD171UkRpucC63M9933zZxKyGIjK8e2uR73r4 +F2iw4lNVYC2vPsKD2NkJK/DAZNuHi5HMkesE/Xa0lZrmFAYb1TQdvtj/dBxThZng +WVJKYe2InmtJiUZ+IFrZ50rlau7SZRFDAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTvkUz1pcMw6C8I6tNxIqSSaHh0 +2TAfBgNVHSMEGDAWgBTvkUz1pcMw6C8I6tNxIqSSaHh02TANBgkqhkiG9w0BAQsF +AAOCAgEAfj1U2iJdGlg+O1QnurrMyOMaauo++RLrVl89UM7g6kgmJs95Vn6RHJk/ +0KGRHCwPT5iVWVO90CLYiF2cN/z7ZMF4jIuaYAnq1fohX9B0ZedQxb8uuQsLrbWw +F6YSjNRieOpWauwK0kDDPAUwPk2Ut59KA9N9J0u2/kTO+hkzGm2kQtHdzMjI1xZS +g081lLMSVX3l4kLr5JyTCcBMWwerx20RoFAXlCOotQqSD7J6wWAsOMwaplv/8gzj +qh8c3LigkyfeY+N/IZ865Z764BNqdeuWXGKRlI5nU7aJ+BIJy29SWwNyhlCVCNSN +h4YVH5Uk2KRvms6knZtt0rJ2BobGVgjF6wnaNsIbW0G+YSrjcOa4pvi2WsS9Iff/ +ql+hbHY5ZtbqTFXhADObE5hjyW/QASAJN1LnDE8+zbz1X5YnpyACleAu6AdBBR8V +btaw5BngDwKTACdyxYvRVB9dSsNAl35VpnzBMwQUAR1JIGkLGZOdblgi90AMRgwj +Y/M50n92Uaf0yKHxDHYiI0ZSKS3io0EHVmmY0gUJvGnHWmHNj4FgFU2A3ZDifcRQ +8ow7bkrHxuaAKzyBvBGAFhAn1/DNP3nMcyrDflOR1m749fPH0FFNjkulW+YZFzvW +gQncItzujrnEj1PhZ7szuIgVRs/taTX/dQ1G885x4cVrhkIGuUE= +-----END CERTIFICATE----- diff --git a/Shared/lib/python3.4/site-packages/certifi/core.py b/Shared/lib/python3.4/site-packages/certifi/core.py index 31ecdfb..e7ae2ee 100644 --- a/Shared/lib/python3.4/site-packages/certifi/core.py +++ b/Shared/lib/python3.4/site-packages/certifi/core.py @@ -7,13 +7,30 @@ certifi.py This module returns the installation location of cacert.pem. """ - import os +import warnings + + +class DeprecatedBundleWarning(DeprecationWarning): + """ + The weak security bundle is being deprecated. Please bother your service + provider to get them to stop using cross-signed roots. + """ + def where(): f = os.path.split(__file__)[0] return os.path.join(f, 'cacert.pem') + +def old_where(): + warnings.warn( + "The weak security bundle is being deprecated.", + DeprecatedBundleWarning + ) + f = os.path.split(__file__)[0] + return os.path.join(f, 'weak.pem') + if __name__ == '__main__': print(where()) diff --git a/Shared/lib/python3.4/site-packages/certifi/old_root.pem b/Shared/lib/python3.4/site-packages/certifi/old_root.pem new file mode 100644 index 0000000..a6a027f --- /dev/null +++ b/Shared/lib/python3.4/site-packages/certifi/old_root.pem @@ -0,0 +1,387 @@ +# Issuer: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Subject: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Label: "Entrust.net Secure Server CA" +# Serial: 927650371 +# MD5 Fingerprint: df:f2:80:73:cc:f1:e6:61:73:fc:f5:42:e9:c5:7c:ee +# SHA1 Fingerprint: 99:a6:9b:e6:1a:fe:88:6b:4d:2b:82:00:7c:b8:54:fc:31:7e:15:39 +# SHA256 Fingerprint: 62:f2:40:27:8c:56:4c:4d:d8:bf:7d:9d:4f:6f:36:6e:a8:94:d2:2f:5f:34:d9:89:a9:83:ac:ec:2f:ff:ed:50 +-----BEGIN CERTIFICATE----- +MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC +VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u +ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u +ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 +MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE +ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j +b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF +bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg +U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ +I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 +wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC +AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb +oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 +BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p +dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk +MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp +b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu +dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 +MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi +E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa +MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI +hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN +95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd +2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +-----END CERTIFICATE----- + +# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority +# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority +# Label: "ValiCert Class 2 VA" +# Serial: 1 +# MD5 Fingerprint: a9:23:75:9b:ba:49:36:6e:31:c2:db:f2:e7:66:ba:87 +# SHA1 Fingerprint: 31:7a:2a:d0:7f:2b:33:5e:f5:a1:c3:4e:4b:57:e8:b7:d8:f1:fc:a6 +# SHA256 Fingerprint: 58:d0:17:27:9c:d4:dc:63:ab:dd:b1:96:a6:c9:90:6c:30:c4:e0:87:83:ea:e8:c1:60:99:54:d6:93:55:59:6b +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy +NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY +dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 +WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS +v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v +UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu +IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC +W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd +-----END CERTIFICATE----- + +# Issuer: CN=NetLock Expressz (Class C) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok +# Subject: CN=NetLock Expressz (Class C) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok +# Label: "NetLock Express (Class C) Root" +# Serial: 104 +# MD5 Fingerprint: 4f:eb:f1:f0:70:c2:80:63:5d:58:9f:da:12:3c:a9:c4 +# SHA1 Fingerprint: e3:92:51:2f:0a:cf:f5:05:df:f6:de:06:7f:75:37:e1:65:ea:57:4b +# SHA256 Fingerprint: 0b:5e:ed:4e:84:64:03:cf:55:e0:65:84:84:40:ed:2a:82:75:8b:f5:b9:aa:1f:25:3d:46:13:cf:a0:80:ff:3f +-----BEGIN CERTIFICATE----- +MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUx +ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 +b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQD +EytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBDKSBUYW51c2l0dmFueWtpYWRvMB4X +DTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJBgNVBAYTAkhVMREw +DwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9u +c2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMr +TmV0TG9jayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzAN +BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNA +OoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3ZW3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC +2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63euyucYT2BDMIJTLrdKwW +RMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQwDgYDVR0P +AQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEW +ggJNRklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0 +YWxhbm9zIFN6b2xnYWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFz +b2sgYWxhcGphbiBrZXN6dWx0LiBBIGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBO +ZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1iaXp0b3NpdGFzYSB2ZWRpLiBB +IGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0ZWxlIGF6IGVs +b2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs +ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25s +YXBqYW4gYSBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kg +a2VyaGV0byBheiBlbGxlbm9yemVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4g +SU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5kIHRoZSB1c2Ugb2YgdGhpcyBjZXJ0 +aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQUyBhdmFpbGFibGUg +YXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwgYXQg +Y3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmY +ta3UzbM2xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2g +pO0u9f38vf5NNwgMvOOWgyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4 +Fp1hBWeAyNDYpQcCNJgEjTME1A== +-----END CERTIFICATE----- + +# Issuer: CN=NetLock Uzleti (Class B) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok +# Subject: CN=NetLock Uzleti (Class B) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok +# Label: "NetLock Business (Class B) Root" +# Serial: 105 +# MD5 Fingerprint: 39:16:aa:b9:6a:41:e1:14:69:df:9e:6c:3b:72:dc:b6 +# SHA1 Fingerprint: 87:9f:4b:ee:05:df:98:58:3b:e3:60:d6:33:e7:0d:3f:fe:98:71:af +# SHA256 Fingerprint: 39:df:7b:68:2b:7b:93:8f:84:71:54:81:cc:de:8d:60:d8:f2:2e:c5:98:87:7d:0a:aa:c1:2b:59:18:2b:03:12 +-----BEGIN CERTIFICATE----- +MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUx +ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 +b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQD +EylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikgVGFudXNpdHZhbnlraWFkbzAeFw05 +OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYDVQQGEwJIVTERMA8G +A1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNh +Z2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5l +dExvY2sgVXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqG +SIb3DQEBAQUAA4GNADCBiQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xK +gZjupNTKihe5In+DCnVMm8Bp2GQ5o+2So/1bXHQawEfKOml2mrriRBf8TKPV/riX +iK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr1nGTLbO/CVRY7QbrqHvc +Q7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNVHQ8BAf8E +BAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1G +SUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFu +b3MgU3pvbGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBh +bGFwamFuIGtlc3p1bHQuIEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExv +Y2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRvc2l0YXNhIHZlZGkuIEEgZGln +aXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYXogZWxvaXJ0 +IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh +c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGph +biBhIGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJo +ZXRvIGF6IGVsbGVub3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBP +UlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmlj +YXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2YWlsYWJsZSBhdCBo +dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBjcHNA +bmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06 +sPgzTEdM43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXa +n3BukxowOR0w2y7jfLKRstE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKS +NitjrFgBazMpUIaD8QFI +-----END CERTIFICATE----- + +# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority +# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority +# Label: "RSA Root Certificate 1" +# Serial: 1 +# MD5 Fingerprint: a2:6f:53:b7:ee:40:db:4a:68:e7:fa:18:d9:10:4b:72 +# SHA1 Fingerprint: 69:bd:8c:f4:9c:d3:00:fb:59:2e:17:93:ca:55:6a:f3:ec:aa:35:fb +# SHA256 Fingerprint: bc:23:f9:8a:31:3c:b9:2d:e3:bb:fc:3a:5a:9f:44:61:ac:39:49:4c:4a:e1:5a:9e:9d:f1:31:e9:9b:73:01:9a +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy +NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD +cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs +2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY +JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE +Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ +n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A +PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu +-----END CERTIFICATE----- + +# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority +# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority +# Label: "ValiCert Class 1 VA" +# Serial: 1 +# MD5 Fingerprint: 65:58:ab:15:ad:57:6c:1e:a8:a7:b5:69:ac:bf:ff:eb +# SHA1 Fingerprint: e5:df:74:3c:b6:01:c4:9b:98:43:dc:ab:8c:e8:6a:81:10:9f:e4:8e +# SHA256 Fingerprint: f4:c1:49:55:1a:30:13:a3:5b:c7:bf:fe:17:a7:f3:44:9b:c1:ab:5b:5a:0a:e7:4b:06:c2:3b:90:00:4c:01:04 +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy +NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y +LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ +TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y +TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 +LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW +I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw +nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI +-----END CERTIFICATE----- + +# Issuer: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. +# Subject: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. +# Label: "Equifax Secure eBusiness CA 1" +# Serial: 4 +# MD5 Fingerprint: 64:9c:ef:2e:44:fc:c6:8f:52:07:d0:51:73:8f:cb:3d +# SHA1 Fingerprint: da:40:18:8b:91:89:a3:ed:ee:ae:da:97:fe:2f:9d:f5:b7:d1:8a:41 +# SHA256 Fingerprint: cf:56:ff:46:a4:a1:86:10:9d:d9:65:84:b5:ee:b5:8a:51:0c:42:75:b0:e5:f9:4f:40:bb:ae:86:5e:19:f6:73 +-----BEGIN CERTIFICATE----- +MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT +ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw +MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j +LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ +KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo +RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu +WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw +Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD +AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK +eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM +zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ +WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN +/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== +-----END CERTIFICATE----- + +# Issuer: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. +# Subject: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. +# Label: "Equifax Secure Global eBusiness CA" +# Serial: 1 +# MD5 Fingerprint: 8f:5d:77:06:27:c4:98:3c:5b:93:78:e7:d7:7d:9b:cc +# SHA1 Fingerprint: 7e:78:4a:10:1c:82:65:cc:2d:e1:f1:6d:47:b4:40:ca:d9:0a:19:45 +# SHA256 Fingerprint: 5f:0b:62:ea:b5:e3:53:ea:65:21:65:16:58:fb:b6:53:59:f4:43:28:0a:4a:fb:d1:04:d7:7d:10:f9:f0:4c:07 +-----BEGIN CERTIFICATE----- +MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT +ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw +MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj +dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l +c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC +UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc +58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ +o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH +MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr +aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA +A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA +Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv +8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +-----END CERTIFICATE----- + +# Issuer: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division +# Subject: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division +# Label: "Thawte Premium Server CA" +# Serial: 1 +# MD5 Fingerprint: 06:9f:69:79:16:66:90:02:1b:8c:8c:a2:c3:07:6f:3a +# SHA1 Fingerprint: 62:7f:8d:78:27:65:63:99:d2:7d:7f:90:44:c9:fe:b3:f3:3e:fa:9a +# SHA256 Fingerprint: ab:70:36:36:5c:71:54:aa:29:c2:c2:9f:5d:41:91:16:3b:16:2a:22:25:01:13:57:d5:6d:07:ff:a7:bc:1f:72 +-----BEGIN CERTIFICATE----- +MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD +VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy +dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t +MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB +MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG +A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp +b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl +cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv +bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE +VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ +ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR +uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG +9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI +hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM +pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== +-----END CERTIFICATE----- + +# Issuer: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division +# Subject: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division +# Label: "Thawte Server CA" +# Serial: 1 +# MD5 Fingerprint: c5:70:c4:a2:ed:53:78:0c:c8:10:53:81:64:cb:d0:1d +# SHA1 Fingerprint: 23:e5:94:94:51:95:f2:41:48:03:b4:d5:64:d2:a3:a3:f5:d8:8b:8c +# SHA256 Fingerprint: b4:41:0b:73:e2:e6:ea:ca:47:fb:c4:2f:8f:a4:01:8a:f4:38:1d:c5:4c:fa:a8:44:50:46:1e:ed:09:45:4d:e9 +-----BEGIN CERTIFICATE----- +MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD +VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm +MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx +MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 +dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl +cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 +DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD +gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 +yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX +L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj +EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG +7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e +QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ +qdq5snUb9kLy78fyGPmJvKP/iiMucEc= +-----END CERTIFICATE----- + +# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Label: "Verisign Class 3 Public Primary Certification Authority" +# Serial: 149843929435818692848040365716851702463 +# MD5 Fingerprint: 10:fc:63:5d:f6:26:3e:0d:f3:25:be:5f:79:cd:67:67 +# SHA1 Fingerprint: 74:2c:31:92:e6:07:e4:24:eb:45:49:54:2b:e1:bb:c5:3e:61:74:e2 +# SHA256 Fingerprint: e7:68:56:34:ef:ac:f6:9a:ce:93:9a:6b:25:5b:7b:4f:ab:ef:42:93:5b:50:a2:65:ac:b5:cb:60:27:e4:4e:70 +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz +cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 +MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV +BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE +BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is +I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G +CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do +lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc +AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k +-----END CERTIFICATE----- + +# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Label: "Verisign Class 3 Public Primary Certification Authority" +# Serial: 80507572722862485515306429940691309246 +# MD5 Fingerprint: ef:5a:f1:33:ef:f1:cd:bb:51:02:ee:12:14:4b:96:c4 +# SHA1 Fingerprint: a1:db:63:93:91:6f:17:e4:18:55:09:40:04:15:c7:02:40:b0:ae:6b +# SHA256 Fingerprint: a4:b6:b3:99:6f:c2:f3:06:b3:fd:86:81:bd:63:41:3d:8c:50:09:cc:4f:a3:29:c2:cc:f0:e2:fa:1b:14:03:05 +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz +cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 +MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV +BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE +BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is +I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G +CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i +2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ +2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ +-----END CERTIFICATE----- + +# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network +# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network +# Label: "Verisign Class 3 Public Primary Certification Authority - G2" +# Serial: 167285380242319648451154478808036881606 +# MD5 Fingerprint: a2:33:9b:4c:74:78:73:d4:6c:e7:c1:f3:8d:cb:5c:e9 +# SHA1 Fingerprint: 85:37:1c:a6:e5:50:14:3d:ce:28:03:47:1b:de:3a:09:e8:f8:77:0f +# SHA256 Fingerprint: 83:ce:3c:12:29:68:8a:59:3d:48:5f:81:97:3c:0f:91:95:43:1e:da:37:cc:5e:36:43:0e:79:c7:a8:88:63:8b +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh +c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy +MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp +emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X +DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw +FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg +UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo +YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 +MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB +AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 +pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 +13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID +AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk +U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i +F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY +oJ2daZH9 +-----END CERTIFICATE----- + +# Issuer: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. +# Subject: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. +# Label: "GTE CyberTrust Global Root" +# Serial: 421 +# MD5 Fingerprint: ca:3d:d3:68:f1:03:5c:d0:32:fa:b8:2b:59:e8:5a:db +# SHA1 Fingerprint: 97:81:79:50:d8:1c:96:70:cc:34:d8:09:cf:79:44:31:36:7e:f4:74 +# SHA256 Fingerprint: a5:31:25:18:8d:21:10:aa:96:4b:02:c7:b7:c6:da:32:03:17:08:94:e5:fb:71:ff:fb:66:67:d5:e6:81:0a:36 +-----BEGIN CERTIFICATE----- +MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD +VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv +bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv +b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV +UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU +cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds +b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH +iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS +r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 +04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r +GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 +3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P +lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ +-----END CERTIFICATE----- diff --git a/Shared/lib/python3.4/site-packages/certifi/weak.pem b/Shared/lib/python3.4/site-packages/certifi/weak.pem new file mode 100644 index 0000000..6a66daa --- /dev/null +++ b/Shared/lib/python3.4/site-packages/certifi/weak.pem @@ -0,0 +1,5616 @@ + +# Issuer: O=Equifax OU=Equifax Secure Certificate Authority +# Subject: O=Equifax OU=Equifax Secure Certificate Authority +# Label: "Equifax Secure CA" +# Serial: 903804111 +# MD5 Fingerprint: 67:cb:9d:c0:13:24:8a:82:9b:b2:17:1e:d1:1b:ec:d4 +# SHA1 Fingerprint: d2:32:09:ad:23:d3:14:23:21:74:e4:0d:7f:9d:62:13:97:86:63:3a +# SHA256 Fingerprint: 08:29:7a:40:47:db:a2:36:80:c7:31:db:6e:31:76:53:ca:78:48:e1:be:bd:3a:0b:01:79:a7:07:f9:2c:f1:78 +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV +UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy +dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 +MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx +dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B +AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f +BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A +cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC +AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ +MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm +aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw +ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj +IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF +MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA +A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y +7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh +1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA +# Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA +# Label: "GlobalSign Root CA" +# Serial: 4835703278459707669005204 +# MD5 Fingerprint: 3e:45:52:15:09:51:92:e1:b7:5d:37:9f:b1:87:29:8a +# SHA1 Fingerprint: b1:bc:96:8b:d4:f4:9d:62:2a:a8:9a:81:f2:15:01:52:a4:1d:82:9c +# SHA256 Fingerprint: eb:d4:10:40:e4:bb:3e:c7:42:c9:e3:81:d3:1e:f2:a4:1a:48:b6:68:5c:96:e7:ce:f3:c1:df:6c:d4:33:1c:99 +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw +MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT +aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ +jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp +xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp +1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG +snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ +U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 +9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B +AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz +yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE +38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP +AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad +DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME +HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 +# Label: "GlobalSign Root CA - R2" +# Serial: 4835703278459682885658125 +# MD5 Fingerprint: 94:14:77:7e:3e:5e:fd:8f:30:bd:41:b0:cf:e7:d0:30 +# SHA1 Fingerprint: 75:e0:ab:b6:13:85:12:27:1c:04:f8:5f:dd:de:38:e4:b7:24:2e:fe +# SHA256 Fingerprint: ca:42:dd:41:74:5f:d0:b8:1e:b9:02:36:2c:f9:d8:bf:71:9d:a1:bd:1b:1e:fc:94:6f:5b:4c:99:f4:2c:1b:9e +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 +MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL +v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 +eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq +tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd +C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa +zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB +mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH +V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n +bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG +3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs +J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO +291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS +ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd +AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Label: "Verisign Class 3 Public Primary Certification Authority - G3" +# Serial: 206684696279472310254277870180966723415 +# MD5 Fingerprint: cd:68:b6:a7:c7:c4:ce:75:e0:1d:4f:57:44:61:92:09 +# SHA1 Fingerprint: 13:2d:0d:45:53:4b:69:97:cd:b2:d5:c3:39:e2:55:76:60:9b:5c:c6 +# SHA256 Fingerprint: eb:04:cf:5e:b1:f3:9a:fa:76:2f:2b:b1:20:f2:96:cb:a5:20:c1:b9:7d:b1:58:95:65:b8:1c:b9:a1:7b:72:44 +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b +N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t +KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu +kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm +CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ +Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu +imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te +2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe +DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p +F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt +TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Label: "Verisign Class 4 Public Primary Certification Authority - G3" +# Serial: 314531972711909413743075096039378935511 +# MD5 Fingerprint: db:c8:f2:27:2e:b1:ea:6a:29:23:5d:fe:56:3e:33:df +# SHA1 Fingerprint: c8:ec:8c:87:92:69:cb:4b:ab:39:e9:8d:7e:57:67:f3:14:95:73:9d +# SHA256 Fingerprint: e3:89:36:0d:0f:db:ae:b3:d2:50:58:4b:47:30:31:4e:22:2f:39:c1:56:a0:20:14:4e:8d:96:05:61:79:15:06 +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1 +GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ ++mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0Gbd +U6LM8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLm +NxdLMEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY +ufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ +ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1WrIhVZPMq1 +CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXttmhwwjIDLk5Mq +g6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm +fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c +2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/ +bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== +-----END CERTIFICATE----- + +# Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Label: "Entrust.net Premium 2048 Secure Server CA" +# Serial: 946069240 +# MD5 Fingerprint: ee:29:31:bc:32:7e:9a:e6:e8:b5:f7:51:b4:34:71:90 +# SHA1 Fingerprint: 50:30:06:09:1d:97:d4:f5:ae:39:f7:cb:e7:92:7d:7d:65:2d:34:31 +# SHA256 Fingerprint: 6d:c4:71:72:e0:1c:bc:b0:bf:62:58:0d:89:5f:e2:b8:ac:9a:d4:f8:73:80:1e:0c:10:b9:c8:37:d2:1e:b1:77 +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML +RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp +bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 +IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3 +MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 +LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp +YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG +A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq +K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe +sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX +MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT +XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ +HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH +4QIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADub +j1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExo +U8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf +zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5b +u/8j72gZyxKTJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+ +bYQLCIt+jerXmCHG8+c8eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/Er +fF6adulZkMV8gzURZVE= +-----END CERTIFICATE----- + +# Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust +# Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust +# Label: "Baltimore CyberTrust Root" +# Serial: 33554617 +# MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4 +# SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74 +# SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ +RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD +VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX +DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y +ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy +VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr +mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr +IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK +mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu +XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy +dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye +jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 +BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 +DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 +9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx +jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 +Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz +ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS +R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network +# Subject: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network +# Label: "AddTrust Low-Value Services Root" +# Serial: 1 +# MD5 Fingerprint: 1e:42:95:02:33:92:6b:b9:5f:c0:7f:da:d6:b2:4b:fc +# SHA1 Fingerprint: cc:ab:0e:a0:4c:23:01:d6:69:7b:dd:37:9f:cd:12:eb:24:e3:94:9d +# SHA256 Fingerprint: 8c:72:09:27:9a:c0:4e:27:5e:16:d0:7f:d3:b7:75:e8:01:54:b5:96:80:46:e3:1f:52:dd:25:76:63:24:e9:a7 +-----BEGIN CERTIFICATE----- +MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 +b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMw +MTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYD +VQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ul +CDtbKRY654eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6n +tGO0/7Gcrjyvd7ZWxbWroulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyl +dI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJch +PXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC ++Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0O +BBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8E +BTADAQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBl +MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk +ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0MkhHma6X +7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0PhiVYrqW9yTkkz +43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY +eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJl +pz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOA +WiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network +# Subject: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network +# Label: "AddTrust External Root" +# Serial: 1 +# MD5 Fingerprint: 1d:35:54:04:85:78:b0:3f:42:42:4d:bf:20:73:0a:3f +# SHA1 Fingerprint: 02:fa:f3:e2:91:43:54:68:60:78:57:69:4d:f5:e4:5b:68:85:18:68 +# SHA256 Fingerprint: 68:7f:a4:51:38:22:78:ff:f0:c8:b1:1f:8d:43:d5:76:67:1c:6e:b2:bc:ea:b4:13:fb:83:d9:65:d0:6d:2f:f2 +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs +IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 +MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h +bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v +dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt +H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 +uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX +mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX +a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN +E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 +WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD +VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 +Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU +cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx +IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN +AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH +YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC +Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX +c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a +mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network +# Subject: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network +# Label: "AddTrust Public Services Root" +# Serial: 1 +# MD5 Fingerprint: c1:62:3e:23:c5:82:73:9c:03:59:4b:2b:e9:77:49:7f +# SHA1 Fingerprint: 2a:b6:28:48:5e:78:fb:f3:ad:9e:79:10:dd:6b:df:99:72:2c:96:e5 +# SHA256 Fingerprint: 07:91:ca:07:49:b2:07:82:aa:d3:c7:d7:bd:0c:df:c9:48:58:35:84:3e:b2:d7:99:60:09:ce:43:ab:6c:69:27 +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 +b3JrMSAwHgYDVQQDExdBZGRUcnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAx +MDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtB +ZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIDAeBgNV +BAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV +6tsfSlbunyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nX +GCwwfQ56HmIexkvA/X1id9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnP +dzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSGAa2Il+tmzV7R/9x98oTaunet3IAIx6eH +1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAwHM+A+WD+eeSI8t0A65RF +62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0GA1UdDgQW +BBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDEL +MAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRU +cnVzdCBUVFAgTmV0d29yazEgMB4GA1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJv +b3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4JNojVhaTdt02KLmuG7jD8WS6 +IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL+YPoRNWyQSW/ +iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao +GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh +4SINhwBk/ox9Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQm +XiLsks3/QppEIW1cxeMiHV9HEufOX1362KqxMy3ZdvJOOjMMK7MtkAY= +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network +# Subject: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network +# Label: "AddTrust Qualified Certificates Root" +# Serial: 1 +# MD5 Fingerprint: 27:ec:39:47:cd:da:5a:af:e2:9a:01:65:21:a9:4c:bb +# SHA1 Fingerprint: 4d:23:78:ec:91:95:39:b5:00:7f:75:8f:03:3b:21:1e:c5:4d:8b:cf +# SHA256 Fingerprint: 80:95:21:08:05:db:4b:bc:35:5e:44:28:d8:fd:6e:c2:cd:e3:ab:5f:b9:7a:99:42:98:8e:b8:f4:dc:d0:60:16 +-----BEGIN CERTIFICATE----- +MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 +b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1 +MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYTAlNFMRQwEgYDVQQK +EwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIzAh +BgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwq +xBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G +87B4pfYOQnrjfxvM0PC3KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i +2O+tCBGaKZnhqkRFmhJePp1tUvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8U +WfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c1 +0cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0G +A1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0T +AQH/BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6Fr +pGkwZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL +ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlm +aWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2VhlRO6aQTv +hsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxGGuoYQ992zPlm +hpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X +dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3 +P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9Y +iQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5no +xqE= +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Label: "Entrust Root Certification Authority" +# Serial: 1164660820 +# MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4 +# SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9 +# SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 +Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW +KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw +NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw +NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy +ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV +BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo +Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 +4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 +KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI +rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi +94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB +sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi +gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo +kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE +vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t +O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua +AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP +9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ +eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m +0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +# Issuer: O=RSA Security Inc OU=RSA Security 2048 V3 +# Subject: O=RSA Security Inc OU=RSA Security 2048 V3 +# Label: "RSA Security 2048 v3" +# Serial: 13297492616345471454730593562152402946 +# MD5 Fingerprint: 77:0d:19:b1:21:fd:00:42:9c:3e:0c:a5:dd:0b:02:8e +# SHA1 Fingerprint: 25:01:90:19:cf:fb:d9:99:1c:b7:68:25:74:8d:94:5f:30:93:95:42 +# SHA256 Fingerprint: af:8b:67:62:a1:e5:28:22:81:61:a9:5d:5c:55:9e:e2:66:27:8f:75:d7:9e:83:01:89:a5:03:50:6a:bd:6b:4c +-----BEGIN CERTIFICATE----- +MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6 +MRkwFwYDVQQKExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJp +dHkgMjA0OCBWMzAeFw0wMTAyMjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAX +BgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAbBgNVBAsTFFJTQSBTZWN1cml0eSAy +MDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt49VcdKA3Xtp +eafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7Jylg +/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGl +wSMiuLgbWhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnh +AMFRD0xS+ARaqn1y07iHKrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2 +PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpu +AWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4EFgQUB8NR +MKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYc +HnmYv/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/ +Zb5gEydxiKRz44Rj0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+ +f00/FGj1EVDVwfSQpQgdMWD/YIwjVAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVO +rSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395nzIlQnQFgCi/vcEkllgVsRch +6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kApKnXwiJPZ9d3 +7CAFYd4= +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Global CA O=GeoTrust Inc. +# Subject: CN=GeoTrust Global CA O=GeoTrust Inc. +# Label: "GeoTrust Global CA" +# Serial: 144470 +# MD5 Fingerprint: f7:75:ab:29:fb:51:4e:b7:77:5e:ff:05:3c:99:8e:f5 +# SHA1 Fingerprint: de:28:f4:a4:ff:e5:b9:2f:a3:c5:03:d1:a3:49:a7:f9:96:2a:82:12 +# SHA256 Fingerprint: ff:85:6a:2d:25:1d:cd:88:d3:66:56:f4:50:12:67:98:cf:ab:aa:de:40:79:9c:72:2d:e4:d2:b5:db:36:a7:3a +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg +R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 +9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq +fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv +iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU +1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ +bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW +MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA +ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l +uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn +Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS +tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF +PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un +hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV +5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Global CA 2 O=GeoTrust Inc. +# Subject: CN=GeoTrust Global CA 2 O=GeoTrust Inc. +# Label: "GeoTrust Global CA 2" +# Serial: 1 +# MD5 Fingerprint: 0e:40:a7:6c:de:03:5d:8f:d1:0f:e4:d1:8d:f9:6c:a9 +# SHA1 Fingerprint: a9:e9:78:08:14:37:58:88:f2:05:19:b0:6d:2b:0d:2b:60:16:90:7d +# SHA256 Fingerprint: ca:2d:82:a0:86:77:07:2f:8a:b6:76:4f:f0:35:67:6c:fe:3e:5e:32:5e:01:21:72:df:3f:92:09:6d:b7:9b:85 +-----BEGIN CERTIFICATE----- +MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEW +MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFs +IENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3Qg +R2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvPE1A +PRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/NTL8 +Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hL +TytCOb1kLUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL +5mkWRxHCJ1kDs6ZgwiFAVvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7 +S4wMcoKK+xfNAGw6EzywhIdLFnopsk/bHdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe +2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNHK266ZUap +EBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6td +EPx7srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv +/NgdRN3ggX+d6YvhZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywN +A0ZF66D0f0hExghAzN4bcLUprbqLOzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0 +abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkCx1YAzUm5s2x7UwQa4qjJqhIF +I8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqFH4z1Ir+rzoPz +4iIprn2DQKi6bA== +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Universal CA O=GeoTrust Inc. +# Subject: CN=GeoTrust Universal CA O=GeoTrust Inc. +# Label: "GeoTrust Universal CA" +# Serial: 1 +# MD5 Fingerprint: 92:65:58:8b:a2:1a:31:72:73:68:5c:b4:a5:7a:07:48 +# SHA1 Fingerprint: e6:21:f3:35:43:79:05:9a:4b:68:30:9d:8a:2f:74:22:15:87:ec:79 +# SHA256 Fingerprint: a0:45:9b:9f:63:b2:25:59:f5:fa:5d:4c:6d:b3:f9:f7:2f:f1:93:42:03:35:78:f0:73:bf:1d:1b:46:cb:b9:12 +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEW +MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVy +c2FsIENBMB4XDTA0MDMwNDA1MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xHjAcBgNVBAMTFUdlb1RydXN0 +IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKYV +VaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9tJPi8 +cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTT +QjOgNB0eRXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFh +F7em6fgemdtzbvQKoiFs7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2v +c7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d8Lsrlh/eezJS/R27tQahsiFepdaVaH/w +mZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7VqnJNk22CDtucvc+081xd +VHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3CgaRr0BHdCX +teGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZ +f9hBZ3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfRe +Bi9Fi1jUIxaS5BZuKGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+ +nhutxx9z3SxPGWX9f5NAEC7S8O08ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB +/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0XG0D08DYj3rWMB8GA1UdIwQY +MBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG +9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fX +IwjhmF7DWgh2qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzyn +ANXH/KttgCJwpQzgXQQpAvvLoJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0z +uzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsKxr2EoyNB3tZ3b4XUhRxQ4K5RirqN +Pnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxFKyDuSN/n3QmOGKja +QI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2DFKW +koRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9 +ER/frslKxfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQt +DF4JbAiXfKM9fJP/P6EUp8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/Sfuvm +bJxPgWp6ZKy7PtXny3YuxadIwVyQD8vIP/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. +# Subject: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. +# Label: "GeoTrust Universal CA 2" +# Serial: 1 +# MD5 Fingerprint: 34:fc:b8:d0:36:db:9e:14:b3:c2:f2:db:8f:e4:94:c7 +# SHA1 Fingerprint: 37:9a:19:7b:41:85:45:35:0c:a6:03:69:f3:3c:2e:af:47:4f:20:79 +# SHA256 Fingerprint: a0:23:4f:3b:c8:52:7c:a5:62:8e:ec:81:ad:5d:69:89:5d:a5:68:0d:c9:1d:1c:b8:47:7f:33:f8:78:b9:5b:0b +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEW +MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVy +c2FsIENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYD +VQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1 +c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0DE81 +WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUG +FF+3Qs17j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdq +XbboW0W63MOhBW9Wjo8QJqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxL +se4YuU6W3Nx2/zu+z18DwPw76L5GG//aQMJS9/7jOvdqdzXQ2o3rXhhqMcceujwb +KNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2WP0+GfPtDCapkzj4T8Fd +IgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP20gaXT73 +y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRt +hAAnZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgoc +QIgfksILAAX/8sgCSqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4 +Lt1ZrtmhN79UNdxzMk+MBB4zsslG8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAfBgNV +HSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8EBAMCAYYwDQYJ +KoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQ +L1EuxBRa3ugZ4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgr +Fg5fNuH8KrUwJM/gYwx7WBr+mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSo +ag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpqA1Ihn0CoZ1Dy81of398j9tx4TuaY +T1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpgY+RdM4kX2TGq2tbz +GDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiPpm8m +1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJV +OCiNUW7dFGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH +6aLcr34YEoP9VhdBLtUpgn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwX +QMAJKOSLakhT2+zNVVXxxvjpoixMptEmX36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +# Issuer: CN=Visa eCommerce Root O=VISA OU=Visa International Service Association +# Subject: CN=Visa eCommerce Root O=VISA OU=Visa International Service Association +# Label: "Visa eCommerce Root" +# Serial: 25952180776285836048024890241505565794 +# MD5 Fingerprint: fc:11:b8:d8:08:93:30:00:6d:23:f9:7e:eb:52:1e:02 +# SHA1 Fingerprint: 70:17:9b:86:8c:00:a4:fa:60:91:52:22:3f:9f:3e:32:bd:e0:05:62 +# SHA256 Fingerprint: 69:fa:c9:bd:55:fb:0a:c7:8d:53:bb:ee:5c:f1:d5:97:98:9f:d0:aa:ab:20:a2:51:51:bd:f1:73:3e:e7:d1:22 +-----BEGIN CERTIFICATE----- +MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBr +MQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRl +cm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv +bW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2WhcNMjIwNjI0MDAxNjEyWjBrMQsw +CQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5h +dGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1l +cmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h +2mCxlCfLF9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4E +lpF7sDPwsRROEW+1QK8bRaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdV +ZqW1LS7YgFmypw23RuwhY/81q6UCzyr0TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq +299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI/k4+oKsGGelT84ATB+0t +vz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzsGHxBvfaL +dXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUF +AAOCAQEAX/FBfXxcCLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcR +zCSs00Rsca4BIGsDoo8Ytyk6feUWYFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3 +LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pzzkWKsKZJ/0x9nXGIxHYdkFsd +7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBuYQa7FkKMcPcw +++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt +398znM/jra6O1I7mT1GvFpLgXPYHDw== +-----END CERTIFICATE----- + +# Issuer: CN=Certum CA O=Unizeto Sp. z o.o. +# Subject: CN=Certum CA O=Unizeto Sp. z o.o. +# Label: "Certum Root CA" +# Serial: 65568 +# MD5 Fingerprint: 2c:8f:9f:66:1d:18:90:b1:47:26:9d:8e:86:82:8c:a9 +# SHA1 Fingerprint: 62:52:dc:40:f7:11:43:a2:2f:de:9e:f7:34:8e:06:42:51:b1:81:18 +# SHA256 Fingerprint: d8:e0:fe:bc:1d:b2:e3:8d:00:94:0f:37:d2:7d:41:34:4d:99:3e:73:4b:99:d5:65:6d:97:78:d4:d8:14:36:24 +-----BEGIN CERTIFICATE----- +MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBM +MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD +QTAeFw0wMjA2MTExMDQ2MzlaFw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBM +MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD +QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6xwS7TT3zNJc4YPk/E +jG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdLkKWo +ePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GI +ULdtlkIJ89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapu +Ob7kky/ZR6By6/qmW6/KUz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUg +AKpoC6EahQGcxEZjgoi2IrHu/qpGWX7PNSzVttpd90gzFFS269lvzs2I1qsb2pY7 +HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEA +uI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+GXYkHAQa +TOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTg +xSvgGrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1q +CjqTE5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x +O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs +6GAqm4VKQPNriiTsBhYscw== +-----END CERTIFICATE----- + +# Issuer: CN=AAA Certificate Services O=Comodo CA Limited +# Subject: CN=AAA Certificate Services O=Comodo CA Limited +# Label: "Comodo AAA Services root" +# Serial: 1 +# MD5 Fingerprint: 49:79:04:b0:eb:87:19:ac:47:b0:bc:11:51:9b:74:d0 +# SHA1 Fingerprint: d1:eb:23:a4:6d:17:d6:8f:d9:25:64:c2:f1:f1:60:17:64:d8:e3:49 +# SHA256 Fingerprint: d7:a7:a0:fb:5d:7e:27:31:d7:71:e9:48:4e:bc:de:f7:1d:5f:0c:3e:0a:29:48:78:2b:c8:3e:e0:ea:69:9e:f4 +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj +YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM +GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua +BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe +3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 +YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR +rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm +ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU +oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v +QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t +b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF +AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q +GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 +G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi +l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 +smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +# Issuer: CN=Secure Certificate Services O=Comodo CA Limited +# Subject: CN=Secure Certificate Services O=Comodo CA Limited +# Label: "Comodo Secure Services root" +# Serial: 1 +# MD5 Fingerprint: d3:d9:bd:ae:9f:ac:67:24:b3:c8:1b:52:e1:b9:a9:bd +# SHA1 Fingerprint: 4a:65:d5:f4:1d:ef:39:b8:b8:90:4a:4a:d3:64:81:33:cf:c7:a1:d1 +# SHA256 Fingerprint: bd:81:ce:3b:4f:65:91:d1:1a:67:b5:fc:7a:47:fd:ef:25:52:1b:f9:aa:4e:18:b9:e3:df:2e:34:a7:80:3b:e8 +-----BEGIN CERTIFICATE----- +MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRp +ZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVow +fjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAiBgNV +BAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPM +cm3ye5drswfxdySRXyWP9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3S +HpR7LZQdqnXXs5jLrLxkU0C8j6ysNstcrbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996 +CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rCoznl2yY4rYsK7hljxxwk +3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3Vp6ea5EQz +6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNV +HQ4EFgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1Ud +EwEB/wQFMAMBAf8wgYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2Rv +Y2EuY29tL1NlY3VyZUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRw +Oi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmww +DQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm4J4oqF7Tt/Q0 +5qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj +Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtI +gKvcnDe4IRRLDXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJ +aD61JlfutuC23bkpgHl9j6PwpCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDl +izeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1HRR3B7Hzs/Sk= +-----END CERTIFICATE----- + +# Issuer: CN=Trusted Certificate Services O=Comodo CA Limited +# Subject: CN=Trusted Certificate Services O=Comodo CA Limited +# Label: "Comodo Trusted Services root" +# Serial: 1 +# MD5 Fingerprint: 91:1b:3f:6e:cd:9e:ab:ee:07:fe:1f:71:d2:b3:61:27 +# SHA1 Fingerprint: e1:9f:e3:0e:8b:84:60:9e:80:9b:17:0d:72:a8:c5:ba:6e:14:09:bd +# SHA256 Fingerprint: 3f:06:e5:56:81:d4:96:f5:be:16:9e:b5:38:9f:9f:2b:8f:f6:1e:17:08:df:68:81:72:48:49:cd:5d:27:cb:69 +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0 +aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEwMDAwMDBaFw0yODEyMzEyMzU5NTla +MH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO +BgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUwIwYD +VQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWW +fnJSoBVC21ndZHoa0Lh73TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMt +TGo87IvDktJTdyR0nAducPy9C1t2ul/y/9c3S0pgePfw+spwtOpZqqPOSC+pw7IL +fhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6juljatEPmsbS9Is6FARW +1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsSivnkBbA7 +kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0G +A1UdDgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21v +ZG9jYS5jb20vVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRo +dHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMu +Y3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8NtwuleGFTQQuS9/ +HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 +pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxIS +jBc/lDb+XbDABHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+ +xqFx7D+gIIxmOom0jtTYsU0lR+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/Atyjcn +dBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O9y5Xt5hwXsjEeLBi +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root Certification Authority O=QuoVadis Limited OU=Root Certification Authority +# Subject: CN=QuoVadis Root Certification Authority O=QuoVadis Limited OU=Root Certification Authority +# Label: "QuoVadis Root CA" +# Serial: 985026699 +# MD5 Fingerprint: 27:de:36:fe:72:b7:00:03:00:9d:f4:f0:1e:6c:04:24 +# SHA1 Fingerprint: de:3f:40:bd:50:93:d3:9b:6c:60:f6:da:bc:07:62:01:00:89:76:c9 +# SHA256 Fingerprint: a4:5e:de:3b:bb:f0:9c:8a:e1:5c:72:ef:c0:72:68:d6:93:a2:1c:99:6f:d5:1e:67:ca:07:94:60:fd:6d:88:73 +-----BEGIN CERTIFICATE----- +MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJC +TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAzMTkxODMzMzNaFw0yMTAzMTcxODMz +MzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUw +IwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVR +dW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Yp +li4kVEAkOPcahdxYTMukJ0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2D +rOpm2RgbaIr1VxqYuvXtdj182d6UajtLF8HVj71lODqV0D1VNk7feVcxKh7YWWVJ +WCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeLYzcS19Dsw3sgQUSj7cug +F+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWenAScOospU +xbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCC +Ak4wPQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVv +dmFkaXNvZmZzaG9yZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREw +ggENMIIBCQYJKwYBBAG+WAABMIH7MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNl +IG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBh +c3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy +ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh +Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYI +KwYBBQUHAgEWFmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3T +KbkGGew5Oanwl4Rqy+/fMIGuBgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rq +y+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1p +dGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYD +VQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6tlCL +MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSk +fnIYj9lofFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf8 +7C9TqnN7Az10buYWnuulLsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1R +cHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2xgI4JVrmcGmD+XcHXetwReNDWXcG31a0y +mQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi5upZIof4l/UO/erMkqQW +xFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi5nrQNiOK +SnQ2+Q== +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 2 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 2 O=QuoVadis Limited +# Label: "QuoVadis Root CA 2" +# Serial: 1289 +# MD5 Fingerprint: 5e:39:7b:dd:f8:ba:ec:82:e9:ac:62:ba:0c:54:00:2b +# SHA1 Fingerprint: ca:3a:fb:cf:12:40:36:4b:44:b2:16:20:88:80:48:39:19:93:7c:f7 +# SHA256 Fingerprint: 85:a0:dd:7d:d7:20:ad:b7:ff:05:f8:3d:54:2b:20:9d:c7:ff:45:28:f7:d6:77:b1:83:89:fe:a5:e5:c4:9e:86 +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x +GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv +b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV +BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W +YWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa +GMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6XJxg +Fyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55J +WpzmM+Yklvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bB +rrcCaoF6qUWD4gXmuVbBlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp ++ARz8un+XJiM9XOva7R+zdRcAitMOeGylZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1 +ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt66/3FsvbzSUr5R/7mp/i +Ucw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1JdxnwQ5hYIiz +PtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og +/zOhD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UH +oycR7hYQe7xFSkyyBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuI +yV77zGHcizN300QyNQliBJIWENieJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1Ud +EwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQahGK8SEwzJQTU7tD2 +A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGUa6FJpEcwRTEL +MAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2f +BluornFdLwUvZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzn +g/iN/Ae42l9NLmeyhP3ZRPx3UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2Bl +fF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodmVjB3pjd4M1IQWK4/YY7yarHvGH5K +WWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK+JDSV6IZUaUtl0Ha +B0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrWIozc +hLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPR +TUIZ3Ph1WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWD +mbA4CD/pXvk1B+TJYm5Xf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0Z +ohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y +4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8VCLAAVBpQ570su9t+Oza +8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 3" +# Serial: 1478 +# MD5 Fingerprint: 31:85:3c:62:94:97:63:b9:aa:fd:89:4e:af:6f:e0:cf +# SHA1 Fingerprint: 1f:49:14:f7:d8:74:95:1d:dd:ae:02:c0:be:fd:3a:2d:82:75:51:85 +# SHA256 Fingerprint: 18:f1:fc:7f:20:5d:f8:ad:dd:eb:7f:e0:07:dd:57:e3:af:37:5a:9c:4d:8d:73:54:6b:f4:f1:fe:d1:e1:8d:35 +-----BEGIN CERTIFICATE----- +MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x +GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv +b3QgQ0EgMzAeFw0wNjExMjQxOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNV +BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W +YWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDM +V0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNggDhoB +4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUr +H556VOijKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd +8lyyBTNvijbO0BNO/79KDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9Cabwv +vWhDFlaJKjdhkf2mrk7AyxRllDdLkgbvBNDInIjbC3uBr7E9KsRlOni27tyAsdLT +mZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwpp5ijJUMv7/FfJuGITfhe +btfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8nT8KKdjc +T5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDt +WAEXMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZ +c6tsgLjoC2SToJyMGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A +4iLItLRkT9a6fUg+qGkM17uGcclzuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYD +VR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHTBgkrBgEEAb5YAAMwgcUwgZMG +CCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0 +aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 +aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu +dC4wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2Nw +czALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4G +A1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4ywLQoUmkRzBFMQswCQYDVQQGEwJC +TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UEAxMSUXVvVmFkaXMg +Um9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZVqyM0 +7ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSem +d1o417+shvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd ++LJ2w/w4E6oM3kJpK27zPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B +4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadN +t54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp8kokUvd0/bpO5qgdAm6x +DYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBCbjPsMZ57 +k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6s +zHXug/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0j +Wy10QJLZYxkNc91pvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeT +mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK +4SVhM7JZG+Ju1zdXtg2pEto= +-----END CERTIFICATE----- + +# Issuer: O=SECOM Trust.net OU=Security Communication RootCA1 +# Subject: O=SECOM Trust.net OU=Security Communication RootCA1 +# Label: "Security Communication Root CA" +# Serial: 0 +# MD5 Fingerprint: f1:bc:63:6a:54:e0:b5:27:f5:cd:e7:1a:e3:4d:6e:4a +# SHA1 Fingerprint: 36:b1:2b:49:f9:81:9e:d7:4c:9e:bc:38:0f:c6:56:8f:5d:ac:b2:f7 +# SHA256 Fingerprint: e7:5e:72:ed:9f:56:0e:ec:6e:b4:80:00:73:a4:3f:c3:ad:19:19:5a:39:22:82:01:78:95:97:4a:99:02:6b:6c +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY +MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t +dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5 +WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD +VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8 +9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ +DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9 +Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N +QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ +xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G +A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T +AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG +kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr +Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5 +Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU +JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot +RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw== +-----END CERTIFICATE----- + +# Issuer: CN=Sonera Class2 CA O=Sonera +# Subject: CN=Sonera Class2 CA O=Sonera +# Label: "Sonera Class 2 Root CA" +# Serial: 29 +# MD5 Fingerprint: a3:ec:75:0f:2e:88:df:fa:48:01:4e:0b:5c:48:6f:fb +# SHA1 Fingerprint: 37:f7:6d:e6:07:7c:90:c5:b1:3e:93:1a:b7:41:10:b4:f2:e4:9a:27 +# SHA256 Fingerprint: 79:08:b4:03:14:c1:38:10:0b:51:8d:07:35:80:7f:fb:fc:f8:51:8a:00:95:33:71:05:ba:38:6b:15:3d:d9:27 +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP +MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAx +MDQwNjA3Mjk0MFoXDTIxMDQwNjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNV +BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMiBDQTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3/Ei9vX+ALTU74W+o +Z6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybTdXnt +5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s +3TmVToMGf+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2Ej +vOr7nQKV0ba5cTppCD8PtOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu +8nYybieDwnPz3BjotJPqdURrBGAgcVeHnfO+oJAjPYok4doh28MCAwEAAaMzMDEw +DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITTXjwwCwYDVR0PBAQDAgEG +MA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt0jSv9zil +zqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/ +3DEIcbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvD +FNr450kkkdAdavphOe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6 +Tk6ezAyNlNzZRZxe7EJQY670XcSxEtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2 +ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLHllpwrN9M +-----END CERTIFICATE----- + +# Issuer: CN=Staat der Nederlanden Root CA O=Staat der Nederlanden +# Subject: CN=Staat der Nederlanden Root CA O=Staat der Nederlanden +# Label: "Staat der Nederlanden Root CA" +# Serial: 10000010 +# MD5 Fingerprint: 60:84:7c:5a:ce:db:0c:d4:cb:a7:e9:fe:02:c6:a9:c0 +# SHA1 Fingerprint: 10:1d:fa:3f:d5:0b:cb:bb:9b:b5:60:0c:19:55:a4:1a:f4:73:3a:04 +# SHA256 Fingerprint: d4:1d:82:9e:8c:16:59:82:2a:f9:3f:ce:62:bf:fc:de:26:4f:c8:4e:8b:95:0c:5f:f2:75:d0:52:35:46:95:a3 +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJO +TDEeMBwGA1UEChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFh +dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEy +MTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4wHAYDVQQKExVTdGFhdCBkZXIgTmVk +ZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxhbmRlbiBSb290IENB +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFtvszn +ExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw71 +9tV2U02PjLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MO +hXeiD+EwR+4A5zN9RGcaC1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+U +tFE5A3+y3qcym7RHjm+0Sq7lr7HcsBthvJly3uSJt3omXdozSVtSnA71iq3DuD3o +BmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn622r+I/q85Ej0ZytqERAh +SQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRVHSAAMDww +OgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMv +cm9vdC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA +7Jbg0zTBLL9s+DANBgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k +/rvuFbQvBgwp8qiSpGEN/KtcCFtREytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzm +eafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbwMVcoEoJz6TMvplW0C5GUR5z6 +u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3ynGQI0DvDKcWy +7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR +iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw== +-----END CERTIFICATE----- + +# Issuer: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com +# Subject: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com +# Label: "UTN DATACorp SGC Root CA" +# Serial: 91374294542884689855167577680241077609 +# MD5 Fingerprint: b3:a5:3e:77:21:6d:ac:4a:c0:c9:fb:d5:41:3d:ca:06 +# SHA1 Fingerprint: 58:11:9f:0e:12:82:87:ea:50:fd:d9:87:45:6f:4f:78:dc:fa:d6:d4 +# SHA256 Fingerprint: 85:fb:2f:91:dd:12:27:5a:01:45:b6:36:53:4f:84:02:4a:d6:8b:69:b8:ee:88:68:4f:f7:11:37:58:05:b3:48 +-----BEGIN CERTIFICATE----- +MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCB +kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug +Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw +IFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBaMIGTMQswCQYDVQQG +EwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYD +VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cu +dXNlcnRydXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6 +E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ysraP6LnD43m77VkIVni5c7yPeIbkFdicZ +D0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlowHDyUwDAXlCCpVZvNvlK +4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA9P4yPykq +lXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulW +bfXv33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQAB +o4GrMIGoMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRT +MtGzz3/64PGgXYVOktKeRR20TzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3Js +LnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dDLmNybDAqBgNVHSUEIzAhBggr +BgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3DQEBBQUAA4IB +AQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft +Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyj +j98C5OBxOvG0I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVH +KWss5nbZqSl9Mt3JNjy9rjXxEZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv +2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwPDPafepE39peC4N1xaf92P2BNPM/3 +mfnGV/TJVTl4uix5yaaIK/QI +-----END CERTIFICATE----- + +# Issuer: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com +# Subject: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com +# Label: "UTN USERFirst Hardware Root CA" +# Serial: 91374294542884704022267039221184531197 +# MD5 Fingerprint: 4c:56:41:e5:0d:bb:2b:e8:ca:a3:ed:18:08:ad:43:39 +# SHA1 Fingerprint: 04:83:ed:33:99:ac:36:08:05:87:22:ed:bc:5e:46:00:e3:be:f9:d7 +# SHA256 Fingerprint: 6e:a5:47:41:d0:04:66:7e:ed:1b:48:16:63:4a:a3:a7:9e:6e:4b:96:95:0f:82:79:da:fc:8d:9b:d8:81:21:37 +-----BEGIN CERTIFICATE----- +MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB +lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug +Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt +SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG +A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe +MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v +d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh +cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn +0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ +M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a +MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd +oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI +DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy +oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 +dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy +bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF +BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM +//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli +CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE +CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t +3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS +KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== +-----END CERTIFICATE----- + +# Issuer: CN=Chambers of Commerce Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org +# Subject: CN=Chambers of Commerce Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org +# Label: "Camerfirma Chambers of Commerce Root" +# Serial: 0 +# MD5 Fingerprint: b0:01:ee:14:d9:af:29:18:94:76:8e:f1:69:33:2a:84 +# SHA1 Fingerprint: 6e:3a:55:a4:19:0c:19:5c:93:84:3c:c0:db:72:2e:31:30:61:f0:b1 +# SHA256 Fingerprint: 0c:25:8a:12:a5:67:4a:ef:25:f2:8b:a7:dc:fa:ec:ee:a3:48:e5:41:e6:f5:cc:4e:e6:3b:71:b3:61:60:6a:c3 +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEn +MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL +ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMg +b2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAxNjEzNDNaFw0zNzA5MzAxNjEzNDRa +MH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZpcm1hIFNBIENJRiBB +ODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3JnMSIw +IAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0B +AQEFAAOCAQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtb +unXF/KGIJPov7coISjlUxFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0d +BmpAPrMMhe5cG3nCYsS4No41XQEMIwRHNaqbYE6gZj3LJgqcQKH0XZi/caulAGgq +7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jWDA+wWFjbw2Y3npuRVDM3 +0pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFVd9oKDMyX +roDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIG +A1UdEwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5j +aGFtYmVyc2lnbi5vcmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p +26EpW1eLTXYGduHRooowDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIA +BzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hhbWJlcnNpZ24ub3JnMCcGA1Ud +EgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYDVR0gBFEwTzBN +BgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz +aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEB +AAxBl8IahsAifJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZd +p0AJPaxJRUXcLo0waLIJuvvDL8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi +1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wNUPf6s+xCX6ndbcj0dc97wXImsQEc +XCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/nADydb47kMgkdTXg0 +eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1erfu +tGWaIZDgqtCYvDi1czyL+Nw= +-----END CERTIFICATE----- + +# Issuer: CN=Global Chambersign Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org +# Subject: CN=Global Chambersign Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org +# Label: "Camerfirma Global Chambersign Root" +# Serial: 0 +# MD5 Fingerprint: c5:e6:7b:bf:06:d0:4f:43:ed:c4:7a:65:8a:fb:6b:19 +# SHA1 Fingerprint: 33:9b:6b:14:50:24:9b:55:7a:01:87:72:84:d9:e0:2f:c3:d2:d8:e9 +# SHA256 Fingerprint: ef:3c:b4:17:fc:8e:bf:6f:97:87:6c:9e:4e:ce:39:de:1e:a5:fe:64:91:41:d1:02:8b:7d:11:c0:b2:29:8c:ed +-----BEGIN CERTIFICATE----- +MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEn +MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL +ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENo +YW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYxNDE4WhcNMzcwOTMwMTYxNDE4WjB9 +MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgy +NzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEgMB4G +A1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUA +A4IBDQAwggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0 +Mi+ITaFgCPS3CU6gSS9J1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/s +QJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8Oby4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpV +eAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl6DJWk0aJqCWKZQbua795 +B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c8lCrEqWh +z0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0T +AQH/BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1i +ZXJzaWduLm9yZy9jaGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4w +TcbOX60Qq+UDpfqpFDAOBgNVHQ8BAf8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAH +MCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBjaGFtYmVyc2lnbi5vcmcwKgYD +VR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9yZzBbBgNVHSAE +VDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh +bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0B +AQUFAAOCAQEAPDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUM +bKGKfKX0j//U2K0X1S0E0T9YgOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXi +ryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJPJ7oKXqJ1/6v/2j1pReQvayZzKWG +VwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4IBHNfTIzSJRUTN3c +ecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREest2d/ +AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== +-----END CERTIFICATE----- + +# Issuer: CN=NetLock Kozjegyzoi (Class A) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok +# Subject: CN=NetLock Kozjegyzoi (Class A) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok +# Label: "NetLock Notary (Class A) Root" +# Serial: 259 +# MD5 Fingerprint: 86:38:6d:5e:49:63:6c:85:5c:db:6d:dc:94:b7:d0:f7 +# SHA1 Fingerprint: ac:ed:5f:65:53:fd:25:ce:01:5f:1f:7a:48:3b:6a:74:9f:61:78:c6 +# SHA256 Fingerprint: 7f:12:cd:5f:7e:5e:29:0e:c7:d8:51:79:d5:b7:2c:20:a5:be:75:08:ff:db:5b:f8:1a:b9:68:4a:7f:c9:f6:67 +-----BEGIN CERTIFICATE----- +MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhV +MRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMe +TmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0 +dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFzcyBB +KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oXDTE5MDIxOTIzMTQ0 +N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQHEwhC +dWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQu +MRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBL +b3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSMD7tM9DceqQWC2ObhbHDqeLVu0ThEDaiD +zl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZz+qMkjvN9wfcZnSX9EUi +3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC/tmwqcm8 +WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LY +Oph7tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2Esi +NCubMvJIH5+hCoR64sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCC +ApswDgYDVR0PAQH/BAQDAgAGMBIGA1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4 +QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZRUxFTSEgRXplbiB0 +YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRhdGFz +aSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu +IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtm +ZWxlbG9zc2VnLWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMg +ZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVs +amFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJhc2EgbWVndGFsYWxoYXRv +IGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBzOi8vd3d3 +Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6 +ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1 +YW5jZSBhbmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3Qg +dG8gdGhlIE5ldExvY2sgQ1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRs +b2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBjcHNAbmV0bG9jay5uZXQuMA0G +CSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5ayZrU3/b39/zcT0mwBQO +xmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjPytoUMaFP +0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQ +QeJBCWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxk +f1qbFFgBJ34TUMdrKuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK +8CtmdWOMovsEPoMOmzbwGOQmIMOM8CgHrTwXZoi1/baI +-----END CERTIFICATE----- + +# Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com +# Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com +# Label: "XRamp Global CA Root" +# Serial: 107108908803651509692980124233745014957 +# MD5 Fingerprint: a1:0b:44:b3:ca:10:d8:00:6e:9d:0f:d8:0f:92:0a:d1 +# SHA1 Fingerprint: b8:01:86:d1:eb:9c:86:a5:41:04:cf:30:54:f3:4c:52:b7:e5:58:c6 +# SHA256 Fingerprint: ce:cd:dc:90:50:99:d8:da:df:c5:b1:d2:09:b7:37:cb:e2:c1:8c:fb:2c:10:c0:ff:0b:cf:0d:32:86:fc:1a:a2 +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB +gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk +MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY +UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx +NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3 +dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy +dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6 +38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP +KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q +DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4 +qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa +JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi +PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P +BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs +jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0 +eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR +vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa +IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy +i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ +O+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +# Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Label: "Go Daddy Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67 +# SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4 +# SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4 +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh +MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE +YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 +MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo +ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg +MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN +ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA +PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w +wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi +EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY +avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ +YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE +sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h +/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 +IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD +ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy +OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P +TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER +dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf +ReYNnyicsbkqWletNw+vHX/bvZ8= +-----END CERTIFICATE----- + +# Issuer: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority +# Subject: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority +# Label: "Starfield Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 32:4a:4b:bb:c8:63:69:9b:be:74:9a:c6:dd:1d:46:24 +# SHA1 Fingerprint: ad:7e:1c:28:b0:64:ef:8f:60:03:40:20:14:c3:d0:e3:37:0e:b5:8a +# SHA256 Fingerprint: 14:65:fa:20:53:97:b8:76:fa:a6:f0:a9:95:8e:55:90:e4:0f:cc:7f:aa:4f:b7:c2:c8:67:75:21:fb:5f:b6:58 +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl +MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp +U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw +NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE +ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp +ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 +DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf +8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN ++lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 +X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa +K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA +1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G +A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR +zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 +YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD +bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w +DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 +L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D +eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp +VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY +WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +# Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Label: "StartCom Certification Authority" +# Serial: 1 +# MD5 Fingerprint: 22:4d:8f:8a:fc:f7:35:c2:bb:57:34:90:7b:8b:22:16 +# SHA1 Fingerprint: 3e:2b:f7:f2:03:1b:96:f3:8c:e6:c4:d8:a8:5d:3e:2d:58:47:6a:0f +# SHA256 Fingerprint: c7:66:a9:be:f2:d4:07:1c:86:3a:31:aa:49:20:e8:13:b2:d1:98:60:8c:b7:b7:cf:e2:11:43:b8:36:df:09:ea +-----BEGIN CERTIFICATE----- +MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW +MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg +Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9 +MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi +U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh +cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk +pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf +OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C +Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT +Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi +HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM +Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w ++2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ +Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 +Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B +26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID +AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE +FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j +ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js +LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM +BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0 +Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy +dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh +cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh +YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg +dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp +bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ +YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT +TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ +9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8 +jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW +FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz +ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1 +ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L +EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu +L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq +yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC +O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V +um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh +NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14= +-----END CERTIFICATE----- + +# Issuer: O=Government Root Certification Authority +# Subject: O=Government Root Certification Authority +# Label: "Taiwan GRCA" +# Serial: 42023070807708724159991140556527066870 +# MD5 Fingerprint: 37:85:44:53:32:45:1f:20:f0:f3:95:e1:25:c4:43:4e +# SHA1 Fingerprint: f4:8b:11:bf:de:ab:be:94:54:20:71:e6:41:de:6b:be:88:2b:40:b9 +# SHA256 Fingerprint: 76:00:29:5e:ef:e8:5b:9e:1f:d6:24:db:76:06:2a:aa:ae:59:81:8a:54:d2:77:4c:d4:c0:b2:c0:11:31:e1:b3 +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/ +MQswCQYDVQQGEwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5MB4XDTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1ow +PzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dvdmVybm1lbnQgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +AJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qNw8XR +IePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1q +gQdW8or5BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKy +yhwOeYHWtXBiCAEuTk8O1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAts +F/tnyMKtsc2AtJfcdgEWFelq16TheEfOhtX7MfP6Mb40qij7cEwdScevLJ1tZqa2 +jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wovJ5pGfaENda1UhhXcSTvx +ls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7Q3hub/FC +VGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHK +YS1tB6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoH +EgKXTiCQ8P8NHuJBO9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThN +Xo+EHWbNxWCWtFJaBYmOlXqYwZE8lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1Ud +DgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNVHRMEBTADAQH/MDkGBGcqBwAE +MTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg209yewDL7MTqK +UWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ +TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyf +qzvS/3WXy6TjZwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaK +ZEk9GhiHkASfQlK3T8v+R0F2Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFE +JPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlUD7gsL0u8qV1bYH+Mh6XgUmMqvtg7 +hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6QzDxARvBMB1uUO07+1 +EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+HbkZ6Mm +nD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WX +udpVBrkk7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44Vbnz +ssQwmSNOXfJIoRIM3BKQCZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDe +LMDDav7v3Aun+kbfYNucpllQdSNpc5Oy+fwC00fmcc4QAu4njIT/rEUNE1yDMuAl +pYYsfPQS +-----END CERTIFICATE----- + +# Issuer: CN=Swisscom Root CA 1 O=Swisscom OU=Digital Certificate Services +# Subject: CN=Swisscom Root CA 1 O=Swisscom OU=Digital Certificate Services +# Label: "Swisscom Root CA 1" +# Serial: 122348795730808398873664200247279986742 +# MD5 Fingerprint: f8:38:7c:77:88:df:2c:16:68:2e:c2:e2:52:4b:b8:f9 +# SHA1 Fingerprint: 5f:3a:fc:0a:8b:64:f6:86:67:34:74:df:7e:a9:a2:fe:f9:fa:7a:51 +# SHA256 Fingerprint: 21:db:20:12:36:60:bb:2e:d4:18:20:5d:a1:1e:e7:a8:5a:65:e2:bc:6e:55:b5:af:7e:78:99:c8:a2:66:d9:2e +-----BEGIN CERTIFICATE----- +MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBk +MQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0 +YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3Qg +Q0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4MTgyMjA2MjBaMGQxCzAJBgNVBAYT +AmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGlnaXRhbCBDZXJ0aWZp +Y2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9 +m2BtRsiMMW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdih +FvkcxC7mlSpnzNApbjyFNDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/ +TilftKaNXXsLmREDA/7n29uj/x2lzZAeAR81sH8A25Bvxn570e56eqeqDFdvpG3F +EzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkCb6dJtDZd0KTeByy2dbco +kdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn7uHbHaBu +HYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNF +vJbNcA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo +19AOeCMgkckkKmUpWyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjC +L3UcPX7ape8eYIVpQtPM+GP+HkM5haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJW +bjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNYMUJDLXT5xp6mig/p/r+D5kNX +JLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0hBBYw +FDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j +BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzc +K6FptWfUjNP9MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzf +ky9NfEBWMXrrpA9gzXrzvsMnjgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7Ik +Vh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQMbFamIp1TpBcahQq4FJHgmDmHtqB +sfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4HVtA4oJVwIHaM190e +3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtlvrsR +ls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ip +mXeascClOS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HH +b6D0jqTsNFFbjCYDcKF31QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksf +rK/7DZBaZmBwXarNeNQk7shBoJMBkpxqnvy5JMWzFYJ+vq6VK+uxwNrjAWALXmms +hFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCyx/yP2FS1k2Kdzs9Z+z0Y +zirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMWNY6E0F/6 +MBr1mmz0DlP5OlvRHA== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root CA" +# Serial: 17154717934120587862167794914071425081 +# MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72 +# SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43 +# SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c +JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP +mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ +wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 +VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ +AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB +AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun +pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC +dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf +fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm +NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx +H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root CA" +# Serial: 10944719598952040374951832963794454346 +# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e +# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36 +# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61 +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD +QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB +CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 +nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt +43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P +T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 +gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR +TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw +DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr +hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg +06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF +PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls +YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert High Assurance EV Root CA" +# Serial: 3553400076410547919724730734378100087 +# MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a +# SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25 +# SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm ++9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW +PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM +xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB +Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 +hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg +EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA +FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec +nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z +eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF +hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 +Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep ++OkuE6N36B9K +-----END CERTIFICATE----- + +# Issuer: CN=Class 2 Primary CA O=Certplus +# Subject: CN=Class 2 Primary CA O=Certplus +# Label: "Certplus Class 2 Primary CA" +# Serial: 177770208045934040241468760488327595043 +# MD5 Fingerprint: 88:2c:8c:52:b8:a2:3c:f3:f7:bb:03:ea:ae:ac:42:0b +# SHA1 Fingerprint: 74:20:74:41:72:9c:dd:92:ec:79:31:d8:23:10:8d:c2:81:92:e2:bb +# SHA256 Fingerprint: 0f:99:3c:8a:ef:97:ba:af:56:87:14:0e:d5:9a:d1:82:1b:b4:af:ac:f0:aa:9a:58:b5:d5:7a:33:8a:3a:fb:cb +-----BEGIN CERTIFICATE----- +MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAw +PTELMAkGA1UEBhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFz +cyAyIFByaW1hcnkgQ0EwHhcNOTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9 +MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2VydHBsdXMxGzAZBgNVBAMTEkNsYXNz +IDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANxQ +ltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR5aiR +VhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyL +kcAbmXuZVg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCd +EgETjdyAYveVqUSISnFOYFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yas +H7WLO7dDWWuwJKZtkIvEcupdM5i3y95ee++U8Rs+yskhwcWYAqqi9lt3m/V+llU0 +HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRMECDAGAQH/AgEKMAsGA1Ud +DwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJYIZIAYb4 +QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMu +Y29tL0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/ +AN9WM2K191EBkOvDP9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8 +yfFC82x/xXp8HVGIutIKPidd3i1RTtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMR +FcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+7UCmnYR0ObncHoUW2ikbhiMA +ybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW//1IMwrh3KWB +kJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 +l7+ijrRU +-----END CERTIFICATE----- + +# Issuer: CN=DST Root CA X3 O=Digital Signature Trust Co. +# Subject: CN=DST Root CA X3 O=Digital Signature Trust Co. +# Label: "DST Root CA X3" +# Serial: 91299735575339953335919266965803778155 +# MD5 Fingerprint: 41:03:52:dc:0f:f7:50:1b:16:f0:02:8e:ba:6f:45:c5 +# SHA1 Fingerprint: da:c9:02:4f:54:d8:f6:df:94:93:5f:b1:73:26:38:ca:6a:d7:7c:13 +# SHA256 Fingerprint: 06:87:26:03:31:a7:24:03:d9:09:f1:05:e6:9b:cf:0d:32:e1:bd:24:93:ff:c6:d9:20:6d:11:bc:d6:77:07:39 +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ +MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT +DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow +PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD +Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O +rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq +OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b +xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw +7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD +aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG +SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 +ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr +AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz +R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 +JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo +Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- + +# Issuer: CN=DST ACES CA X6 O=Digital Signature Trust OU=DST ACES +# Subject: CN=DST ACES CA X6 O=Digital Signature Trust OU=DST ACES +# Label: "DST ACES CA X6" +# Serial: 17771143917277623872238992636097467865 +# MD5 Fingerprint: 21:d8:4c:82:2b:99:09:33:a2:eb:14:24:8d:8e:5f:e8 +# SHA1 Fingerprint: 40:54:da:6f:1c:3f:40:74:ac:ed:0f:ec:cd:db:79:d1:53:fb:90:1d +# SHA256 Fingerprint: 76:7c:95:5a:76:41:2c:89:af:68:8e:90:a1:c7:0f:55:6c:fd:6b:60:25:db:ea:10:41:6d:7e:b6:83:1f:8c:40 +-----BEGIN CERTIFICATE----- +MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBb +MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3Qx +ETAPBgNVBAsTCERTVCBBQ0VTMRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0w +MzExMjAyMTE5NThaFw0xNzExMjAyMTE5NThaMFsxCzAJBgNVBAYTAlVTMSAwHgYD +VQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UECxMIRFNUIEFDRVMx +FzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPu +ktKe1jzIDZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7 +gLFViYsx+tC3dr5BPTCapCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZH +fAjIgrrep4c9oW24MFbCswKBXy314powGCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4a +ahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPyMjwmR/onJALJfh1biEIT +ajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1UdEwEB/wQF +MAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rk +c3QuY29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjto +dHRwOi8vd3d3LnRydXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMt +aW5kZXguaHRtbDAdBgNVHQ4EFgQUCXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZI +hvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V25FYrnJmQ6AgwbN99Pe7lv7Uk +QIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6tFr8hlxCBPeP/ +h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq +nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpR +rscL9yuwNwXsvFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf2 +9w4LTJxoeHtxMcfrHuBnQfO3oKfN5XozNmr6mis= +-----END CERTIFICATE----- + +# Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Kasım 2005 +# Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Kasım 2005 +# Label: "TURKTRUST Certificate Services Provider Root 2" +# Serial: 1 +# MD5 Fingerprint: 37:a5:6e:d4:b1:25:84:97:b7:fd:56:15:7a:f9:a2:00 +# SHA1 Fingerprint: b4:35:d4:e1:11:9d:1c:66:90:a7:49:eb:b3:94:bd:63:7b:a7:82:b7 +# SHA256 Fingerprint: c4:70:cf:54:7e:23:02:b9:77:fb:29:dd:71:a8:9a:7b:6c:1f:60:77:7b:03:29:f5:60:17:f3:28:bf:4f:6b:e6 +-----BEGIN CERTIFICATE----- +MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOc +UktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx +c8SxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xS +S1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kg +SGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcNMDUxMTA3MTAwNzU3 +WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVrdHJv +bmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJU +UjEPMA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSw +bGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWe +LiAoYykgS2FzxLFtIDIwMDUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqeLCDe2JAOCtFp0if7qnef +J1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKIx+XlZEdh +R3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJ +Qv2gQrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGX +JHpsmxcPbe9TmJEr5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1p +zpwACPI2/z7woQ8arBT9pmAPAgMBAAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58S +Fq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8GA1UdEwEB/wQFMAMBAf8wDQYJ +KoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/nttRbj2hWyfIvwq +ECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4 +Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFz +gw2lGh1uEpJ+hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotH +uFEJjOp9zYhys2AzsfAKRO8P9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LS +y3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5UrbnBEI= +-----END CERTIFICATE----- + +# Issuer: CN=SwissSign Gold CA - G2 O=SwissSign AG +# Subject: CN=SwissSign Gold CA - G2 O=SwissSign AG +# Label: "SwissSign Gold CA - G2" +# Serial: 13492815561806991280 +# MD5 Fingerprint: 24:77:d9:a8:91:d1:3b:fa:88:2d:c2:ff:f8:cd:33:93 +# SHA1 Fingerprint: d8:c5:38:8a:b7:30:1b:1b:6e:d4:7a:e6:45:25:3a:6f:9f:1a:27:61 +# SHA256 Fingerprint: 62:dd:0b:e9:b9:f5:0a:16:3e:a0:f8:e7:5c:05:3b:1e:ca:57:ea:55:c8:68:8f:64:7c:68:81:f2:c8:35:7b:95 +-----BEGIN CERTIFICATE----- +MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV +BAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2ln +biBHb2xkIENBIC0gRzIwHhcNMDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBF +MQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMR8wHQYDVQQDExZT +d2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +CgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUqt2/8 +76LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+ +bbqBHH5CjCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c +6bM8K8vzARO/Ws/BtQpgvd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqE +emA8atufK+ze3gE/bk3lUIbLtK/tREDFylqM2tIrfKjuvqblCqoOpd8FUrdVxyJd +MmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvRAiTysybUa9oEVeXBCsdt +MDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuendjIj3o02y +MszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69y +FGkOpeUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPi +aG59je883WX0XaxR7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxM +gI93e2CaHt+28kgeDrpOVG2Y4OGiGqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCB +qTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUWyV7 +lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64OfPAeGZe6Drn +8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov +L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe6 +45R88a7A3hfm5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczO +UYrHUDFu4Up+GC9pWbY9ZIEr44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5 +O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOfMke6UiI0HTJ6CVanfCU2qT1L2sCC +bwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6mGu6uLftIdxf+u+yv +GPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxpmo/a +77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCC +hdiDyyJkvC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid3 +92qgQmwLOM7XdVAyksLfKzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEpp +Ld6leNcG2mqeSz53OiATIgHQv2ieY2BrNU0LbbqhPcCT4H8js1WtciVORvnSFu+w +ZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6LqjviOvrv1vA+ACOzB2+htt +Qc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ +-----END CERTIFICATE----- + +# Issuer: CN=SwissSign Silver CA - G2 O=SwissSign AG +# Subject: CN=SwissSign Silver CA - G2 O=SwissSign AG +# Label: "SwissSign Silver CA - G2" +# Serial: 5700383053117599563 +# MD5 Fingerprint: e0:06:a1:c9:7d:cf:c9:fc:0d:c0:56:75:96:d8:62:13 +# SHA1 Fingerprint: 9b:aa:e5:9f:56:ee:21:cb:43:5a:be:25:93:df:a7:f0:40:d1:1d:cb +# SHA256 Fingerprint: be:6c:4d:a2:bb:b9:ba:59:b6:f3:93:97:68:37:42:46:c3:c0:05:99:3f:a9:8f:02:0d:1d:ed:be:d4:8a:81:d5 +-----BEGIN CERTIFICATE----- +MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UE +BhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWdu +IFNpbHZlciBDQSAtIEcyMB4XDTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0Nlow +RzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMY +U3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644N0Mv +Fz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7br +YT7QbNHm+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieF +nbAVlDLaYQ1HTWBCrpJH6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH +6ATK72oxh9TAtvmUcXtnZLi2kUpCe2UuMGoM9ZDulebyzYLs2aFK7PayS+VFheZt +eJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5hqAaEuSh6XzjZG6k4sIN/ +c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5FZGkECwJ +MoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRH +HTBsROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTf +jNFusB3hB48IHpmccelM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb6 +5i/4z3GcRm25xBWNOHkDRUjvxF3XCO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOB +rDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU +F6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRBtjpbO8tFnb0c +wpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 +cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIB +AHPGgeAn0i0P4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShp +WJHckRE1qTodvBqlYJ7YH39FkWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9 +xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L3XWgwF15kIwb4FDm3jH+mHtwX6WQ +2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx/uNncqCxv1yL5PqZ +IseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFaDGi8 +aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2X +em1ZqSqPe97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQR +dAtq/gsD/KNVV4n+SsuuWxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/ +OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJDIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+ +hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ubDgEj8Z+7fNzcbBGXJbLy +tGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. +# Subject: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. +# Label: "GeoTrust Primary Certification Authority" +# Serial: 32798226551256963324313806436981982369 +# MD5 Fingerprint: 02:26:c3:01:5e:08:30:37:43:a9:d0:7d:cf:37:e6:bf +# SHA1 Fingerprint: 32:3c:11:8e:1b:f7:b8:b6:52:54:e2:e2:10:0d:d6:02:90:37:f0:96 +# SHA256 Fingerprint: 37:d5:10:06:c5:12:ea:ab:62:64:21:f1:ec:8c:92:01:3f:c5:f8:2a:e9:8e:e5:33:eb:46:19:b8:de:b4:d0:6c +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY +MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo +R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx +MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9 +AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA +ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0 +7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W +kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI +mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ +KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1 +6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl +4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K +oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj +UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU +AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +# Issuer: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only +# Subject: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only +# Label: "thawte Primary Root CA" +# Serial: 69529181992039203566298953787712940909 +# MD5 Fingerprint: 8c:ca:dc:0b:22:ce:f5:be:72:ac:41:1a:11:a8:d8:12 +# SHA1 Fingerprint: 91:c6:d6:ee:3e:8a:c8:63:84:e5:48:c2:99:29:5c:75:6c:81:7b:81 +# SHA256 Fingerprint: 8d:72:2f:81:a9:c1:13:c0:79:1d:f1:36:a2:96:6d:b2:6c:95:0a:97:1d:b4:6b:41:99:f4:ea:54:b7:8b:fb:9f +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB +qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV +BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw +NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j +LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG +A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs +W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta +3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk +6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6 +Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J +NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP +r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU +DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz +YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2 +/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/ +LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7 +jVaMaA== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only +# Label: "VeriSign Class 3 Public Primary Certification Authority - G5" +# Serial: 33037644167568058970164719475676101450 +# MD5 Fingerprint: cb:17:e4:31:67:3e:e2:09:fe:45:57:93:f3:0a:fa:1c +# SHA1 Fingerprint: 4e:b6:d5:78:49:9b:1c:cf:5f:58:1e:ad:56:be:3d:9b:67:44:a5:e5 +# SHA256 Fingerprint: 9a:cf:ab:7e:43:c8:d8:80:d0:6b:26:2a:94:de:ee:e4:b4:65:99:89:c3:d0:ca:f1:9b:af:64:05:e4:1a:b7:df +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW +ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp +U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 +nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex +t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz +SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG +BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ +rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ +NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E +BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH +BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv +MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE +p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y +5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK +WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ +4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N +hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +# Issuer: CN=SecureTrust CA O=SecureTrust Corporation +# Subject: CN=SecureTrust CA O=SecureTrust Corporation +# Label: "SecureTrust CA" +# Serial: 17199774589125277788362757014266862032 +# MD5 Fingerprint: dc:32:c3:a7:6d:25:57:c7:68:09:9d:ea:2d:a9:a2:d1 +# SHA1 Fingerprint: 87:82:c6:c3:04:35:3b:cf:d2:96:92:d2:59:3e:7d:44:d9:34:ff:11 +# SHA256 Fingerprint: f1:c1:b5:0a:e5:a2:0d:d8:03:0e:c9:f6:bc:24:82:3d:d3:67:b5:25:57:59:b4:e7:1b:61:fc:e9:f7:37:5d:73 +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI +MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x +FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz +MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv +cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz +Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO +0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao +wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj +7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS +8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT +BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg +JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3 +6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/ +3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm +D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS +CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +# Issuer: CN=Secure Global CA O=SecureTrust Corporation +# Subject: CN=Secure Global CA O=SecureTrust Corporation +# Label: "Secure Global CA" +# Serial: 9751836167731051554232119481456978597 +# MD5 Fingerprint: cf:f4:27:0d:d4:ed:dc:65:16:49:6d:3d:da:bf:6e:de +# SHA1 Fingerprint: 3a:44:73:5a:e5:81:90:1f:24:86:61:46:1e:3b:9c:c4:5f:f5:3a:1b +# SHA256 Fingerprint: 42:00:f5:04:3a:c8:59:0e:bb:52:7d:20:9e:d1:50:30:29:fb:cb:d4:1c:a1:b5:06:ec:27:f1:5a:de:7d:ac:69 +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK +MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x +GTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx +MjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg +Q29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ +iQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa +/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ +jnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI +HmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7 +sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w +gZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw +KaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG +AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L +URYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO +H0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm +I50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY +iNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +# Issuer: CN=COMODO Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO Certification Authority O=COMODO CA Limited +# Label: "COMODO Certification Authority" +# Serial: 104350513648249232941998508985834464573 +# MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75 +# SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b +# SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66 +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB +gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV +BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw +MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl +YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P +RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 +UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI +2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 +Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp ++2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ +DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O +nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW +/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g +PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u +QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY +SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv +IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 +zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd +BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB +ZQ== +-----END CERTIFICATE----- + +# Issuer: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. +# Subject: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. +# Label: "Network Solutions Certificate Authority" +# Serial: 116697915152937497490437556386812487904 +# MD5 Fingerprint: d3:f3:a6:16:c0:fa:6b:1d:59:b1:2d:96:4d:0e:11:2e +# SHA1 Fingerprint: 74:f8:a3:c3:ef:e7:b3:90:06:4b:83:90:3c:21:64:60:20:e5:df:ce +# SHA256 Fingerprint: 15:f0:ba:00:a3:ac:7a:f3:ac:88:4c:07:2b:10:11:a0:77:bd:77:c0:97:f4:01:64:b2:f8:59:8a:bd:83:86:0c +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi +MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp +dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV +UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO +ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz +c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP +OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl +mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF +BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4 +qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw +gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu +bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp +dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8 +6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/ +h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH +/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN +pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +# Issuer: CN=WellsSecure Public Root Certificate Authority O=Wells Fargo WellsSecure OU=Wells Fargo Bank NA +# Subject: CN=WellsSecure Public Root Certificate Authority O=Wells Fargo WellsSecure OU=Wells Fargo Bank NA +# Label: "WellsSecure Public Root Certificate Authority" +# Serial: 1 +# MD5 Fingerprint: 15:ac:a5:c2:92:2d:79:bc:e8:7f:cb:67:ed:02:cf:36 +# SHA1 Fingerprint: e7:b4:f6:9d:61:ec:90:69:db:7e:90:a7:40:1a:3c:f4:7d:4f:e8:ee +# SHA256 Fingerprint: a7:12:72:ae:aa:a3:cf:e8:72:7f:7f:b3:9f:0f:b3:d1:e5:42:6e:90:60:b0:6e:e6:f1:3e:9a:3c:58:33:cd:43 +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMx +IDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxs +cyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9v +dCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDcxMjEzMTcwNzU0WhcNMjIxMjE0 +MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdl +bGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQD +DC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+r +WxxTkqxtnt3CxC5FlAM1iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjU +Dk/41itMpBb570OYj7OeUt9tkTmPOL13i0Nj67eT/DBMHAGTthP796EfvyXhdDcs +HqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8bJVhHlfXBIEyg1J55oNj +z7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiBK0HmOFaf +SZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/Slwxl +AgMBAAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqG +KGh0dHA6Ly9jcmwucGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0P +AQH/BAQDAgHGMB0GA1UdDgQWBBQmlRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0j +BIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGBi6SBiDCBhTELMAkGA1UEBhMC +VVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNX +ZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEB +ALkVsUSRzCPIK0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd +/ZDJPHV3V3p9+N701NX3leZ0bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pB +A4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSljqHyita04pO2t/caaH/+Xc/77szWn +k4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+esE2fDbbFwRnzVlhE9 +iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJtylv +2G0xffX8oRAHh84vWdw+WNs= +-----END CERTIFICATE----- + +# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Label: "COMODO ECC Certification Authority" +# Serial: 41578283867086692638256921589707938090 +# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23 +# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11 +# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7 +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT +IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw +MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy +ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N +T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR +FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J +cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW +BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm +fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv +GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +# Issuer: CN=IGC/A O=PM/SGDN OU=DCSSI +# Subject: CN=IGC/A O=PM/SGDN OU=DCSSI +# Label: "IGC/A" +# Serial: 245102874772 +# MD5 Fingerprint: 0c:7f:dd:6a:f4:2a:b9:c8:9b:bd:20:7e:a9:db:5c:37 +# SHA1 Fingerprint: 60:d6:89:74:b5:c2:65:9e:8a:0f:c1:88:7c:88:d2:46:69:1b:18:2c +# SHA256 Fingerprint: b9:be:a7:86:0a:96:2e:a3:61:1d:ab:97:ab:6d:a3:e2:1c:10:68:b9:7d:55:57:5e:d0:e1:12:79:c1:1c:89:32 +-----BEGIN CERTIFICATE----- +MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYT +AkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQ +TS9TR0ROMQ4wDAYDVQQLEwVEQ1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG +9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMB4XDTAyMTIxMzE0MjkyM1oXDTIw +MTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAM +BgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NTSTEO +MAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2 +LmZyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaI +s9z4iPf930Pfeo2aSVz2TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2 +xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCWSo7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4 +u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYyHF2fYPepraX/z9E0+X1b +F8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNdfrGoRpAx +Vs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGd +PDPQtQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNV +HSAEDjAMMAoGCCqBegF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAx +NjAfBgNVHSMEGDAWgBSjBS8YYFDCiQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUF +AAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RKq89toB9RlPhJy3Q2FLwV3duJ +L92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3QMZsyK10XZZOY +YLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg +Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2a +NjSaTFR+FwNIlQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R +0982gaEbeC9xs/FZTEYYKKuF0mBWWg== +-----END CERTIFICATE----- + +# Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication EV RootCA1 +# Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication EV RootCA1 +# Label: "Security Communication EV RootCA1" +# Serial: 0 +# MD5 Fingerprint: 22:2d:a6:01:ea:7c:0a:f7:f0:6c:56:43:3f:77:76:d3 +# SHA1 Fingerprint: fe:b8:c4:32:dc:f9:76:9a:ce:ae:3d:d8:90:8f:fd:28:86:65:64:7d +# SHA256 Fingerprint: a2:2d:ba:68:1e:97:37:6e:2d:39:7d:72:8a:ae:3a:9b:62:96:b9:fd:ba:60:bc:2e:11:f6:47:f2:c6:75:fb:37 +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDEl +MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMh +U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIz +MloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09N +IFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNlY3VyaXR5IENvbW11 +bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSE +RMqm4miO/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gO +zXppFodEtZDkBp2uoQSXWHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5 +bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4zZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDF +MxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4bepJz11sS6/vmsJWXMY1 +VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK9U2vP9eC +OKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G +CSqGSIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HW +tWS3irO4G8za+6xmiEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZ +q51ihPZRwSzJIxXYKLerJRO1RuGGAv8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDb +EJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnWmHyojf6GPgcWkuF75x3sM3Z+ +Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEWT1MKZPlO9L9O +VL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 +-----END CERTIFICATE----- + +# Issuer: CN=OISTE WISeKey Global Root GA CA O=WISeKey OU=Copyright (c) 2005/OISTE Foundation Endorsed +# Subject: CN=OISTE WISeKey Global Root GA CA O=WISeKey OU=Copyright (c) 2005/OISTE Foundation Endorsed +# Label: "OISTE WISeKey Global Root GA CA" +# Serial: 86718877871133159090080555911823548314 +# MD5 Fingerprint: bc:6c:51:33:a7:e9:d3:66:63:54:15:72:1b:21:92:93 +# SHA1 Fingerprint: 59:22:a1:e1:5a:ea:16:35:21:f8:98:39:6a:46:46:b0:44:1b:0f:a9 +# SHA256 Fingerprint: 41:c9:23:86:6a:b4:ca:d6:b7:ad:57:80:81:58:2e:02:07:97:a6:cb:df:4f:ff:78:ce:83:96:b3:89:37:d7:f5 +-----BEGIN CERTIFICATE----- +MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCB +ijELMAkGA1UEBhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHly +aWdodCAoYykgMjAwNTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl +ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQSBDQTAeFw0w +NTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYDVQQGEwJDSDEQMA4G +A1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIwIAYD +VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBX +SVNlS2V5IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAy0+zAJs9Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxR +VVuuk+g3/ytr6dTqvirdqFEr12bDYVxgAsj1znJ7O7jyTmUIms2kahnBAbtzptf2 +w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbDd50kc3vkDIzh2TbhmYsF +mQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ/yxViJGg +4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t9 +4B3RLoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQw +EAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOx +SPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vImMMkQyh2I+3QZH4VFvbBsUfk2 +ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4+vg1YFkCExh8 +vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa +hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZi +Fj4A4xylNoEYokxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ +/L7fCg0= +-----END CERTIFICATE----- + +# Issuer: CN=Microsec e-Szigno Root CA O=Microsec Ltd. OU=e-Szigno CA +# Subject: CN=Microsec e-Szigno Root CA O=Microsec Ltd. OU=e-Szigno CA +# Label: "Microsec e-Szigno Root CA" +# Serial: 272122594155480254301341951808045322001 +# MD5 Fingerprint: f0:96:b6:2f:c5:10:d5:67:8e:83:25:32:e8:5e:2e:e5 +# SHA1 Fingerprint: 23:88:c9:d3:71:cc:9e:96:3d:ff:7d:3c:a7:ce:fc:d6:25:ec:19:0d +# SHA256 Fingerprint: 32:7a:3d:76:1a:ba:de:a0:34:eb:99:84:06:27:5c:b1:a4:77:6e:fd:ae:2f:df:6d:01:68:ea:1c:4f:55:67:d0 +-----BEGIN CERTIFICATE----- +MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAw +cjELMAkGA1UEBhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNy +b3NlYyBMdGQuMRQwEgYDVQQLEwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9z +ZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0MDYxMjI4NDRaFw0xNzA0MDYxMjI4 +NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEWMBQGA1UEChMN +TWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMTGU1p +Y3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2u +uO/TEdyB5s87lozWbxXGd36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+ +LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/NoqdNAoI/gqyFxuEPkEeZlApxcpMqyabA +vjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjcQR/Ji3HWVBTji1R4P770 +Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJPqW+jqpx +62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcB +AQRbMFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3Aw +LQYIKwYBBQUHMAKGIWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAP +BgNVHRMBAf8EBTADAQH/MIIBcwYDVR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIB +AQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3LmUtc3ppZ25vLmh1L1NaU1ov +MIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0AdAB2AOEAbgB5 +ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn +AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABT +AHoAbwBsAGcA4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABh +ACAAcwB6AGUAcgBpAG4AdAAgAGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABo +AHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMAegBpAGcAbgBvAC4AaAB1AC8AUwBa +AFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6Ly93d3cuZS1zemln +bm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NOPU1p +Y3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxP +PU1pY3Jvc2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZv +Y2F0aW9uTGlzdDtiaW5hcnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuB +EGluZm9AZS1zemlnbm8uaHWkdzB1MSMwIQYDVQQDDBpNaWNyb3NlYyBlLVN6aWdu +w7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhTWjEWMBQGA1UEChMNTWlj +cm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhVMIGsBgNV +HSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJI +VTERMA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDAS +BgNVBAsTC2UtU3ppZ25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBS +b290IENBghEAzLjnv04pGv2i3GalHCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS +8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMTnGZjWS7KXHAM/IO8VbH0jgds +ZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FEaGAHQzAxQmHl +7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a +86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfR +hUZLphK3dehKyVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/ +MPMMNz7UwiiAc7EBt51alhQBS6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU= +-----END CERTIFICATE----- + +# Issuer: CN=Certigna O=Dhimyotis +# Subject: CN=Certigna O=Dhimyotis +# Label: "Certigna" +# Serial: 18364802974209362175 +# MD5 Fingerprint: ab:57:a6:5b:7d:42:82:19:b5:d8:58:26:28:5e:fd:ff +# SHA1 Fingerprint: b1:2e:13:63:45:86:a4:6f:1a:b2:60:68:37:58:2d:c4:ac:fd:94:97 +# SHA256 Fingerprint: e3:b6:a2:db:2e:d7:ce:48:84:2f:7a:c5:32:41:c7:b7:1d:54:14:4b:fb:40:c1:1f:3f:1d:0b:42:f5:ee:a1:2d +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNV +BAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4X +DTA3MDYyOTE1MTMwNVoXDTI3MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQ +BgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwIQ2VydGlnbmEwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7qXOEm7RFHYeGifBZ4 +QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyHGxny +gQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbw +zBfsV1/pogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q +130yGLMLLGq/jj8UEYkgDncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2 +JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKfIrjxwo1p3Po6WAbfAgMBAAGjgbwwgbkw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQtCRZvgHyUtVF9lo53BEw +ZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJBgNVBAYT +AkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzj +AQ/JSP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG +9w0BAQUFAAOCAQEAhQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8h +bV6lUmPOEvjvKtpv6zf+EwLHyzs+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFnc +fca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1kluPBS1xp81HlDQwY9qcEQCYsuu +HWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY1gkIl2PlwS6w +t0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +# Issuer: CN=Deutsche Telekom Root CA 2 O=Deutsche Telekom AG OU=T-TeleSec Trust Center +# Subject: CN=Deutsche Telekom Root CA 2 O=Deutsche Telekom AG OU=T-TeleSec Trust Center +# Label: "Deutsche Telekom Root CA 2" +# Serial: 38 +# MD5 Fingerprint: 74:01:4a:91:b1:08:c4:58:ce:47:cd:f0:dd:11:53:08 +# SHA1 Fingerprint: 85:a4:08:c0:9c:19:3e:5d:51:58:7d:cd:d6:13:30:fd:8c:de:37:bf +# SHA256 Fingerprint: b6:19:1a:50:d0:c3:97:7f:7d:a9:9b:cd:aa:c8:6a:22:7d:ae:b9:67:9e:c7:0b:a3:b0:c9:d9:22:71:c1:70:d3 +-----BEGIN CERTIFICATE----- +MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc +MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj +IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB +IDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5MjM1OTAwWjBxMQswCQYDVQQGEwJE +RTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxl +U2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290 +IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEU +ha88EOQ5bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhC +QN/Po7qCWWqSG6wcmtoIKyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1Mjwr +rFDa1sPeg5TKqAyZMg4ISFZbavva4VhYAUlfckE8FQYBjl2tqriTtM2e66foai1S +NNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aKSe5TBY8ZTNXeWHmb0moc +QqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTVjlsB9WoH +txa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAP +BgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC +AQEAlGRZrTlk5ynrE/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756Abrsp +tJh6sTtU6zkXR34ajgv8HzFZMQSyzhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpa +IzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8rZ7/gFnkm0W09juwzTkZmDLl +6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4Gdyd1Lx+4ivn+ +xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU +Cm26OWMohpLzGITY+9HPBVZkVw== +-----END CERTIFICATE----- + +# Issuer: CN=Cybertrust Global Root O=Cybertrust, Inc +# Subject: CN=Cybertrust Global Root O=Cybertrust, Inc +# Label: "Cybertrust Global Root" +# Serial: 4835703278459682877484360 +# MD5 Fingerprint: 72:e4:4a:87:e3:69:40:80:77:ea:bc:e3:f4:ff:f0:e1 +# SHA1 Fingerprint: 5f:43:e5:b1:bf:f8:78:8c:ac:1c:c7:ca:4a:9a:c6:22:2b:cc:34:c6 +# SHA256 Fingerprint: 96:0a:df:00:63:e9:63:56:75:0c:29:65:dd:0a:08:67:da:0b:9c:bd:6e:77:71:4a:ea:fb:23:49:ab:39:3d:a3 +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYG +A1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2Jh +bCBSb290MB4XDTA2MTIxNTA4MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UE +ChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBS +b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+Mi8vRRQZhP/8NN5 +7CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW0ozS +J8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2y +HLtgwEZLAfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iP +t3sMpTjr3kfb1V05/Iin89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNz +FtApD0mpSPCzqrdsxacwOUBdrsTiXSZT8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAY +XSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/ +MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2MDSgMqAw +hi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3Js +MB8GA1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUA +A4IBAQBW7wojoFROlZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMj +Wqd8BfP9IjsO0QbE2zZMcwSO5bAi5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUx +XOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2hO0j9n0Hq0V+09+zv+mKts2o +omcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+TX3EJIrduPuoc +A06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +# Issuer: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority +# Subject: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority +# Label: "ePKI Root Certification Authority" +# Serial: 28956088682735189655030529057352760477 +# MD5 Fingerprint: 1b:2e:00:ca:26:06:90:3d:ad:fe:6f:15:68:d3:6b:b3 +# SHA1 Fingerprint: 67:65:0d:f1:7e:8e:7e:5b:82:40:a4:f4:56:4b:cf:e2:3d:69:c6:f0 +# SHA256 Fingerprint: c0:a6:f4:dc:63:a2:4b:fd:cf:54:ef:2a:6a:08:2a:0a:72:de:35:80:3e:2f:f5:ff:52:7a:e5:d8:72:06:df:d5 +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBe +MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 +ZC4xKjAoBgNVBAsMIWVQS0kgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe +Fw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMxMjdaMF4xCzAJBgNVBAYTAlRXMSMw +IQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEqMCgGA1UECwwhZVBL +SSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAH +SyZbCUNsIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAh +ijHyl3SJCRImHJ7K2RKilTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3X +DZoTM1PRYfl61dd4s5oz9wCGzh1NlDivqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1 +TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX12ruOzjjK9SXDrkb5wdJ +fzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0OWQqraffA +sgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uU +WH1+ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLS +nT0IFaUQAS2zMnaolQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pH +dmX2Os+PYhcZewoozRrSgx4hxyy/vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJip +NiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXiZo1jDiVN1Rmy5nk3pyKdVDEC +AwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/QkqiMAwGA1UdEwQF +MAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGB +uvl2ICO1J2B01GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6Yl +PwZpVnPDimZI+ymBV3QGypzqKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkP +JXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdVxrsStZf0X4OFunHB2WyBEXYKCrC/ +gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEPNXubrjlpC2JgQCA2 +j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+rGNm6 +5ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUB +o2M3IUxExJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS +/jQ6fbjpKdx2qcgw+BRxgMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2z +Gp1iro2C6pSe3VkQw63d4k3jMdXH7OjysP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTE +W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D +hNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +# Issuer: CN=TÜBİTAK UEKAE Kök Sertifika Hizmet Sağlayıcısı - Sürüm 3 O=Türkiye Bilimsel ve Teknolojik Araştırma Kurumu - TÜBİTAK OU=Ulusal Elektronik ve Kriptoloji Araştırma Enstitüsü - UEKAE/Kamu Sertifikasyon Merkezi +# Subject: CN=TÜBİTAK UEKAE Kök Sertifika Hizmet Sağlayıcısı - Sürüm 3 O=Türkiye Bilimsel ve Teknolojik Araştırma Kurumu - TÜBİTAK OU=Ulusal Elektronik ve Kriptoloji Araştırma Enstitüsü - UEKAE/Kamu Sertifikasyon Merkezi +# Label: "T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3" +# Serial: 17 +# MD5 Fingerprint: ed:41:f5:8c:50:c5:2b:9c:73:e6:ee:6c:eb:c2:a8:26 +# SHA1 Fingerprint: 1b:4b:39:61:26:27:6b:64:91:a2:68:6d:d7:02:43:21:2d:1f:1d:96 +# SHA256 Fingerprint: e4:c7:34:30:d7:a5:b5:09:25:df:43:37:0a:0d:21:6e:9a:79:b9:d6:db:83:73:a0:c6:9e:b1:cc:31:c7:c5:2a +-----BEGIN CERTIFICATE----- +MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRS +MRgwFgYDVQQHDA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJp +bGltc2VsIHZlIFRla25vbG9qaWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSw +VEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ryb25payB2ZSBLcmlwdG9sb2ppIEFy +YcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNVBAsMGkthbXUgU2Vy +dGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUgS8O2 +ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAe +Fw0wNzA4MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIx +GDAWBgNVBAcMD0dlYnplIC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmls +aW1zZWwgdmUgVGVrbm9sb2ppayBBcmHFn3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBU +QUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZlIEtyaXB0b2xvamkgQXJh +xZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2FtdSBTZXJ0 +aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7Zr +IFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4h +gb46ezzb8R1Sf1n68yJMlaCQvEhOEav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yK +O7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1xnnRFDDtG1hba+818qEhTsXO +fJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR6Oqeyjh1jmKw +lZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL +hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQID +AQABo0IwQDAdBgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/ +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmP +NOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4N5EY3ATIZJkrGG2AA1nJrvhY0D7t +wyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLTy9LQQfMmNkqblWwM +7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYhLBOh +gLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5n +oN+J1q2MdqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUs +yZyQ2uypQjyttgI= +-----END CERTIFICATE----- + +# Issuer: CN=Buypass Class 2 CA 1 O=Buypass AS-983163327 +# Subject: CN=Buypass Class 2 CA 1 O=Buypass AS-983163327 +# Label: "Buypass Class 2 CA 1" +# Serial: 1 +# MD5 Fingerprint: b8:08:9a:f0:03:cc:1b:0d:c8:6c:0b:76:a1:75:64:23 +# SHA1 Fingerprint: a0:a1:ab:90:c9:fc:84:7b:3b:12:61:e8:97:7d:5f:d3:22:61:d3:cc +# SHA256 Fingerprint: 0f:4e:9c:dd:26:4b:02:55:50:d1:70:80:63:40:21:4f:e9:44:34:c9:b0:2f:69:7e:c7:10:fc:5f:ea:fb:5e:38 +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3Mg +Q2xhc3MgMiBDQSAxMB4XDTA2MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzEL +MAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MR0wGwYD +VQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7McXA0 +ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLX +l18xoS830r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVB +HfCuuCkslFJgNJQ72uA40Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B +5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/RuFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3 +WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNCMEAwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0PAQH/BAQD +AgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLP +gcIV1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+ +DKhQ7SLHrQVMdvvt7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKu +BctN518fV4bVIJwo+28TOPX2EZL2fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHs +h7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5wwDX3OaJdZtB7WZ+oRxKaJyOk +LY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho +-----END CERTIFICATE----- + +# Issuer: CN=EBG Elektronik Sertifika Hizmet Sağlayıcısı O=EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. +# Subject: CN=EBG Elektronik Sertifika Hizmet Sağlayıcısı O=EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. +# Label: "EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1" +# Serial: 5525761995591021570 +# MD5 Fingerprint: 2c:20:26:9d:cb:1a:4a:00:85:b5:b7:5a:ae:c2:01:37 +# SHA1 Fingerprint: 8c:96:ba:eb:dd:2b:07:07:48:ee:30:32:66:a0:f3:98:6e:7c:ae:58 +# SHA256 Fingerprint: 35:ae:5b:dd:d8:f7:ae:63:5c:ff:ba:56:82:a8:f0:0b:95:f4:84:62:c7:10:8e:e9:a0:e5:29:2b:07:4a:af:b2 +-----BEGIN CERTIFICATE----- +MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNV +BAMML0VCRyBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx +c8SxMTcwNQYDVQQKDC5FQkcgQmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXpt +ZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAeFw0wNjA4MTcwMDIxMDlaFw0xNjA4 +MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25payBTZXJ0aWZpa2Eg +SGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2ltIFRl +a25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h +4fuXd7hxlugTlkaDT7byX3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAk +tiHq6yOU/im/+4mRDGSaBUorzAzu8T2bgmmkTPiab+ci2hC6X5L8GCcKqKpE+i4s +tPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfreYteIAbTdgtsApWjluTL +dlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZTqNGFav4 +c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8Um +TDGyY5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z ++kI2sSXFCjEmN1ZnuqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0O +Lna9XvNRiYuoP1Vzv9s6xiQFlpJIqkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMW +OeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vmExH8nYQKE3vwO9D8owrXieqW +fo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0Nokb+Clsi7n2 +l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB +/wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgw +FoAU587GT/wWZ5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+ +8ygjdsZs93/mQJ7ANtyVDR2tFcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI +6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgmzJNSroIBk5DKd8pNSe/iWtkqvTDO +TLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64kXPBfrAowzIpAoHME +wfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqTbCmY +Iai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJn +xk1Gj7sURT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4Q +DgZxGhBM/nV+/x5XOULK1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9q +Kd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11t +hie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQY9iJSrSq3RZj9W6+YKH4 +7ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9AahH3eU7 +QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT +-----END CERTIFICATE----- + +# Issuer: O=certSIGN OU=certSIGN ROOT CA +# Subject: O=certSIGN OU=certSIGN ROOT CA +# Label: "certSIGN ROOT CA" +# Serial: 35210227249154 +# MD5 Fingerprint: 18:98:c0:d6:e9:3a:fc:f9:b0:f5:0c:f7:4b:01:44:17 +# SHA1 Fingerprint: fa:b7:ee:36:97:26:62:fb:2d:b0:2a:f6:bf:03:fd:e8:7c:4b:2f:9b +# SHA256 Fingerprint: ea:a9:62:c4:fa:4a:6b:af:eb:e4:15:19:6d:35:1c:cd:88:8d:4f:53:f3:fa:8a:e6:d7:c4:66:a9:4e:60:42:bb +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYT +AlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBD +QTAeFw0wNjA3MDQxNzIwMDRaFw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJP +MREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7IJUqOtdu0KBuqV5Do +0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHHrfAQ +UySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5d +RdY4zTW2ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQ +OA7+j0xbm0bqQfWwCHTD0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwv +JoIQ4uNllAoEwF73XVv4EOLQunpL+943AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08C +AwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAcYwHQYDVR0O +BBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IBAQA+0hyJ +LjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecY +MnQ8SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ +44gx+FkagQnIl6Z0x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6I +Jd1hJyMctTEHBDa0GpC9oHRxUIltvBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNw +i/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7NzTogVZ96edhBiIL5VaZVDADlN +9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +# Issuer: CN=CNNIC ROOT O=CNNIC +# Subject: CN=CNNIC ROOT O=CNNIC +# Label: "CNNIC ROOT" +# Serial: 1228079105 +# MD5 Fingerprint: 21:bc:82:ab:49:c4:13:3b:4b:b2:2b:5c:6b:90:9c:19 +# SHA1 Fingerprint: 8b:af:4c:9b:1d:f0:2a:92:f7:da:12:8e:b9:1b:ac:f4:98:60:4b:6f +# SHA256 Fingerprint: e2:83:93:77:3d:a8:45:a6:79:f2:08:0c:c7:fb:44:a3:b7:a1:c3:79:2c:b7:eb:77:29:fd:cb:6a:8d:99:ae:a7 +-----BEGIN CERTIFICATE----- +MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJD +TjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2 +MDcwOTE0WhcNMjcwNDE2MDcwOTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMF +Q05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzDo+/hn7E7SIX1mlwh +IhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tizVHa6 +dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZO +V/kbZKKTVrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrC +GHn2emU1z5DrvTOTn1OrczvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gN +v7Sg2Ca+I19zN38m5pIEo3/PIKe38zrKy5nLAgMBAAGjczBxMBEGCWCGSAGG+EIB +AQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscCwQ7vptU7ETAPBgNVHRMB +Af8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991SlgrHAsEO +76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnK +OOK5Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvH +ugDnuL8BV8F3RTIMO/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7Hgvi +yJA/qIYM/PmLXoXLT1tLYhFHxUV8BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fL +buXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2G8kS1sHNzYDzAgE8yGnLRUhj +2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5mmxE= +-----END CERTIFICATE----- + +# Issuer: O=Japanese Government OU=ApplicationCA +# Subject: O=Japanese Government OU=ApplicationCA +# Label: "ApplicationCA - Japanese Government" +# Serial: 49 +# MD5 Fingerprint: 7e:23:4e:5b:a7:a5:b4:25:e9:00:07:74:11:62:ae:d6 +# SHA1 Fingerprint: 7f:8a:b0:cf:d0:51:87:6a:66:f3:36:0f:47:c8:8d:8c:d3:35:fc:74 +# SHA256 Fingerprint: 2d:47:43:7d:e1:79:51:21:5a:12:f3:c5:8e:51:c7:29:a5:80:26:ef:1f:cc:0a:5f:b3:d9:dc:01:2f:60:0d:19 +-----BEGIN CERTIFICATE----- +MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEc +MBoGA1UEChMTSmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRp +b25DQTAeFw0wNzEyMTIxNTAwMDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYT +AkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zlcm5tZW50MRYwFAYDVQQLEw1BcHBs +aWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp23gdE6H +j6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4fl+K +f5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55 +IrmTwcrNwVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cw +FO5cjFW6WY2H/CPek9AEjP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDiht +QWEjdnjDuGWk81quzMKq2edY3rZ+nYVunyoKb58DKTCXKB28t89UKU5RMfkntigm +/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRUWssmP3HMlEYNllPqa0jQ +k/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNVBAYTAkpQ +MRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOC +seODvOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD +ggEBADlqRHZ3ODrso2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJ +hyzjVOGjprIIC8CFqMjSnHH2HZ9g/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+ +eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYDio+nEhEMy/0/ecGc/WLuo89U +DNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmWdupwX3kSa+Sj +B1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL +rosot4LKGAfmt1t06SAZf7IbiVQ= +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only +# Subject: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only +# Label: "GeoTrust Primary Certification Authority - G3" +# Serial: 28809105769928564313984085209975885599 +# MD5 Fingerprint: b5:e8:34:36:c9:10:44:58:48:70:6d:2e:83:d4:b8:05 +# SHA1 Fingerprint: 03:9e:ed:b8:0b:e7:a0:3c:69:53:89:3b:20:d2:d9:32:3a:4c:2a:fd +# SHA256 Fingerprint: b4:78:b8:12:25:0d:f8:78:63:5c:2a:a7:ec:7d:15:5e:aa:62:5e:e8:29:16:e2:cd:29:43:61:88:6c:d1:fb:d4 +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB +mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT +MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIzNTk1OVowgZgxCzAJ +BgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0 +BgNVBAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz ++uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5jK/BGvESyiaHAKAxJcCGVn2TAppMSAmUm +hsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdEc5IiaacDiGydY8hS2pgn +5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3CIShwiP/W +JmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exAL +DmKudlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZC +huOl1UcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IB +AQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9cr5HqQ6XErhK8WTTOd8lNNTB +zU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbEAp7aDHdlDkQN +kv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUH +SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G +spki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +# Issuer: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only +# Subject: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only +# Label: "thawte Primary Root CA - G2" +# Serial: 71758320672825410020661621085256472406 +# MD5 Fingerprint: 74:9d:ea:60:24:c4:fd:22:53:3e:cc:3a:72:d9:29:4f +# SHA1 Fingerprint: aa:db:bc:22:23:8f:c4:01:a1:27:bb:38:dd:f4:1d:db:08:9e:f0:12 +# SHA256 Fingerprint: a4:31:0d:50:af:18:a6:44:71:90:37:2a:86:af:af:8b:95:1f:fb:43:1d:83:7f:1e:56:88:b4:59:71:ed:15:57 +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMp +IDIwMDcgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAi +BgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMjAeFw0wNzExMDUwMDAw +MDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBGb3Ig +YXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9v +dCBDQSAtIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/ +BebfowJPDQfGAFG6DAJSLSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6 +papu+7qzcMBniKI11KOasf2twu8x+qi58/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUmtgAMADna3+FGO6Lts6K +DPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUNG4k8VIZ3 +KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41ox +XZ3Krr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +# Issuer: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only +# Subject: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only +# Label: "thawte Primary Root CA - G3" +# Serial: 127614157056681299805556476275995414779 +# MD5 Fingerprint: fb:1b:5d:43:8a:94:cd:44:c6:76:f2:43:4b:47:e7:31 +# SHA1 Fingerprint: f1:8b:53:8d:1b:e9:03:b6:a6:f0:56:43:5b:17:15:89:ca:f3:6b:f2 +# SHA256 Fingerprint: 4b:03:f4:58:07:ad:70:f2:1b:fc:2c:ae:71:c9:fd:e4:60:4c:06:4c:f5:ff:b6:86:ba:e5:db:aa:d7:fd:d3:4c +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCB +rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV +BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0wODA0MDIwMDAwMDBa +Fw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3Rl +LCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9u +MTgwNgYDVQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXpl +ZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEcz +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr8nLPvb2FvdeHsbnndm +gcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2AtP0LMqmsywCPLLEHd5N/8 +YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC+BsUa0Lf +b1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS9 +9irY7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2S +zhkGcuYMXDhpxwTWvGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUk +OQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV +HQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJKoZIhvcNAQELBQADggEBABpA +2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweKA3rD6z8KLFIW +oCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7c +KUGRIjxpp7sC8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fM +m7v/OeZWYdMKp8RcTGB7BXcmer/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZu +MdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only +# Subject: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only +# Label: "GeoTrust Primary Certification Authority - G2" +# Serial: 80682863203381065782177908751794619243 +# MD5 Fingerprint: 01:5e:d8:6b:bd:6f:3d:8e:a1:31:f8:12:e0:98:73:6a +# SHA1 Fingerprint: 8d:17:84:d5:37:f3:03:7d:ec:70:fe:57:8b:51:9a:99:e6:10:d7:b0 +# SHA256 Fingerprint: 5e:db:7a:c4:3b:82:a0:6a:87:61:e8:d7:be:49:79:eb:f2:61:1f:7d:d7:9b:f9:1c:1c:6b:56:6a:21:9e:d7:66 +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL +MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj +KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2 +MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw +NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV +BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH +MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL +So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal +tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG +CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT +qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz +rD6ogRLQy7rQkgu2npaqBA+K +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only +# Label: "VeriSign Universal Root Certification Authority" +# Serial: 85209574734084581917763752644031726877 +# MD5 Fingerprint: 8e:ad:b5:01:aa:4d:81:e4:8c:1d:d1:e1:14:00:95:19 +# SHA1 Fingerprint: 36:79:ca:35:66:87:72:30:4d:30:a5:fb:87:3b:0f:a7:7b:b7:0d:54 +# SHA256 Fingerprint: 23:99:56:11:27:a5:71:25:de:8c:ef:ea:61:0d:df:2f:a0:78:b5:c8:06:7f:4e:82:82:90:bf:b8:60:e8:4b:3c +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB +vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W +ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe +Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX +MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0 +IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y +IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh +bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF +9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH +H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H +LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN +/BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT +rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw +WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs +exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4 +sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+ +seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz +4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+ +BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR +lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3 +7M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only +# Label: "VeriSign Class 3 Public Primary Certification Authority - G4" +# Serial: 63143484348153506665311985501458640051 +# MD5 Fingerprint: 3a:52:e1:e7:fd:6f:3a:e3:6f:f3:6f:99:1b:f9:22:41 +# SHA1 Fingerprint: 22:d5:d8:df:8f:02:31:d1:8d:f7:9d:b7:cf:8a:2d:64:c9:3f:6c:3a +# SHA256 Fingerprint: 69:dd:d7:ea:90:bb:57:c9:3e:13:5d:c8:5e:a6:fc:d5:48:0b:60:32:39:bd:c4:54:fc:75:8b:2a:26:cf:7f:79 +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp +U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp +U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg +SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln +biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm +GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve +fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ +aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj +aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW +kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC +4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga +FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +# Issuer: CN=NetLock Arany (Class Gold) Főtanúsítvány O=NetLock Kft. OU=Tanúsítványkiadók (Certification Services) +# Subject: CN=NetLock Arany (Class Gold) Főtanúsítvány O=NetLock Kft. OU=Tanúsítványkiadók (Certification Services) +# Label: "NetLock Arany (Class Gold) Főtanúsítvány" +# Serial: 80544274841616 +# MD5 Fingerprint: c5:a1:b7:ff:73:dd:d6:d7:34:32:18:df:fc:3c:ad:88 +# SHA1 Fingerprint: 06:08:3f:59:3f:15:a1:04:a0:69:a4:6b:a9:03:d0:06:b7:97:09:91 +# SHA256 Fingerprint: 6c:61:da:c3:a2:de:f0:31:50:6b:e0:36:d2:a6:fe:40:19:94:fb:d1:3d:f9:c8:d4:66:59:92:74:c4:46:ec:98 +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQG +EwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3 +MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNl +cnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBBcmFueSAoQ2xhc3MgR29sZCkgRsWR +dGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgxMjA2MTUwODIxWjCB +pzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxOZXRM +b2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlm +aWNhdGlvbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNz +IEdvbGQpIEbFkXRhbsO6c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAxCRec75LbRTDofTjl5Bu0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrT +lF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw/HpYzY6b7cNGbIRwXdrz +AZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAkH3B5r9s5 +VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRG +ILdwfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2 +BJtr+UBdADTHLpl1neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAG +AQH/AgEEMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2M +U9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwWqZw8UQCgwBEIBaeZ5m8BiFRh +bvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTtaYtOUZcTh5m2C ++C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2F +uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2 +XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +# Issuer: CN=Staat der Nederlanden Root CA - G2 O=Staat der Nederlanden +# Subject: CN=Staat der Nederlanden Root CA - G2 O=Staat der Nederlanden +# Label: "Staat der Nederlanden Root CA - G2" +# Serial: 10000012 +# MD5 Fingerprint: 7c:a5:0f:f8:5b:9a:7d:6d:30:ae:54:5a:e3:42:a2:8a +# SHA1 Fingerprint: 59:af:82:79:91:86:c7:b4:75:07:cb:cf:03:57:46:eb:04:dd:b7:16 +# SHA256 Fingerprint: 66:8c:83:94:7d:a6:3b:72:4b:ec:e1:74:3c:31:a0:e6:ae:d0:db:8e:c5:b3:1b:e3:77:bb:78:4f:91:b6:71:6f +-----BEGIN CERTIFICATE----- +MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJO +TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFh +dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oX +DTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMCTkwxHjAcBgNVBAoMFVN0YWF0IGRl +ciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5lZGVybGFuZGVuIFJv +b3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ5291 +qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8Sp +uOUfiUtnvWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPU +Z5uW6M7XxgpT0GtJlvOjCwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvE +pMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiile7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp +5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCROME4HYYEhLoaJXhena/M +UGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpICT0ugpTN +GmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy +5V6548r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv +6q012iDTiIJh8BIitrzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEK +eN5KzlW/HdXZt1bv8Hb/C3m1r737qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6 +B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMBAAGjgZcwgZQwDwYDVR0TAQH/ +BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcCARYxaHR0cDov +L3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqG +SIb3DQEBCwUAA4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLyS +CZa59sCrI2AGeYwRTlHSeYAz+51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen +5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwjf/ST7ZwaUb7dRUG/kSS0H4zpX897 +IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaNkqbG9AclVMwWVxJK +gnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfkCpYL ++63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxL +vJxxcypFURmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkm +bEgeqmiSBeGCc1qb3AdbCG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvk +N1trSt8sV4pAWja63XVECDdCcAz+3F4hoKOKwJCcaNpQ5kUQR3i2TtJlycM33+FC +Y7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoVIPVVYpbtbZNQvOSqeK3Z +ywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm66+KAQ== +-----END CERTIFICATE----- + +# Issuer: CN=CA Disig O=Disig a.s. +# Subject: CN=CA Disig O=Disig a.s. +# Label: "CA Disig" +# Serial: 1 +# MD5 Fingerprint: 3f:45:96:39:e2:50:87:f7:bb:fe:98:0c:3c:20:98:e6 +# SHA1 Fingerprint: 2a:c8:d5:8b:57:ce:bf:2f:49:af:f2:fc:76:8f:51:14:62:90:7a:41 +# SHA256 Fingerprint: 92:bf:51:19:ab:ec:ca:d0:b1:33:2d:c4:e1:d0:5f:ba:75:b5:67:90:44:ee:0c:a2:6e:93:1f:74:4f:2f:33:cf +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzET +MBEGA1UEBxMKQnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UE +AxMIQ0EgRGlzaWcwHhcNMDYwMzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQsw +CQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcg +YS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgmGErE +Nx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnX +mjxUizkDPw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYD +XcDtab86wYqg6I7ZuUUohwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhW +S8+2rT+MitcE5eN4TPWGqvWP+j1scaMtymfraHtuM6kMgiioTGohQBUgDCZbg8Kp +FhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8wgfwwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0PAQH/BAQD +AgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cu +ZGlzaWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5z +ay9jYS9jcmwvY2FfZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2sv +Y2EvY3JsL2NhX2Rpc2lnLmNybDAaBgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEw +DQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59tWDYcPQuBDRIrRhCA/ec8J9B6 +yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3mkkp7M5+cTxq +EEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/ +CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeB +EicTXxChds6KezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFN +PGO+I++MzVpQuGhU+QqZMxEA4Z7CRneC9VkGjCFMhwnN5ag= +-----END CERTIFICATE----- + +# Issuer: CN=Juur-SK O=AS Sertifitseerimiskeskus +# Subject: CN=Juur-SK O=AS Sertifitseerimiskeskus +# Label: "Juur-SK" +# Serial: 999181308 +# MD5 Fingerprint: aa:8e:5d:d9:f8:db:0a:58:b7:8d:26:87:6c:82:35:55 +# SHA1 Fingerprint: 40:9d:4b:d9:17:b5:5c:27:b6:9b:64:cb:98:22:44:0d:cd:09:b8:89 +# SHA256 Fingerprint: ec:c3:e9:c3:40:75:03:be:e0:91:aa:95:2f:41:34:8f:f8:8b:aa:86:3b:22:64:be:fa:c8:07:90:15:74:e9:39 +-----BEGIN CERTIFICATE----- +MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcN +AQkBFglwa2lAc2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZp +dHNlZXJpbWlza2Vza3VzMRAwDgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMw +MVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMQsw +CQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEQ +MA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOB +SvZiF3tfTQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkz +ABpTpyHhOEvWgxutr2TC+Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvH +LCu3GFH+4Hv2qEivbDtPL+/40UceJlfwUR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMP +PbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDaTpxt4brNj3pssAki14sL +2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQFMAMBAf8w +ggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwIC +MIHDHoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDk +AGwAagBhAHMAdABhAHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0 +AHMAZQBlAHIAaQBtAGkAcwBrAGUAcwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABz +AGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABrAGkAbgBuAGkAdABhAG0AaQBz +AGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nwcy8wKwYDVR0f +BCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE +FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcY +P2/v6X2+MA4GA1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOi +CfP+JmeaUOTDBS8rNXiRTHyoERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+g +kcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyLabVAyJRld/JXIWY7zoVAtjNjGr95 +HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678IIbsSt4beDI3poHS +na9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkhMp6q +qIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0Z +TbvGRNs2yyqcjg== +-----END CERTIFICATE----- + +# Issuer: CN=Hongkong Post Root CA 1 O=Hongkong Post +# Subject: CN=Hongkong Post Root CA 1 O=Hongkong Post +# Label: "Hongkong Post Root CA 1" +# Serial: 1000 +# MD5 Fingerprint: a8:0d:6f:39:78:b9:43:6d:77:42:6d:98:5a:cc:23:ca +# SHA1 Fingerprint: d6:da:a8:20:8d:09:d2:15:4d:24:b5:2f:cb:34:6e:b2:58:b2:8a:58 +# SHA256 Fingerprint: f9:e6:7d:33:6c:51:00:2a:c0:54:c6:32:02:2d:66:dd:a2:e7:e3:ff:f1:0a:d0:61:ed:31:d8:bb:b4:10:cf:b2 +-----BEGIN CERTIFICATE----- +MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsx +FjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3Qg +Um9vdCBDQSAxMB4XDTAzMDUxNTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkG +A1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdr +b25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1ApzQ +jVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEn +PzlTCeqrauh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjh +ZY4bXSNmO7ilMlHIhqqhqZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9 +nnV0ttgCXjqQesBCNnLsak3c78QA3xMYV18meMjWCnl3v/evt3a5pQuEF10Q6m/h +q5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNVHRMBAf8ECDAGAQH/AgED +MA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7ih9legYsC +mEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI3 +7piol7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clB +oiMBdDhViw+5LmeiIAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJs +EhTkYY2sEJCehFC78JZvRZ+K88psT/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpO +fMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilTc4afU9hDDl3WY4JxHYB0yvbi +AmvZWg== +-----END CERTIFICATE----- + +# Issuer: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. +# Subject: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. +# Label: "SecureSign RootCA11" +# Serial: 1 +# MD5 Fingerprint: b7:52:74:e2:92:b4:80:93:f2:75:e4:cc:d7:f2:ea:26 +# SHA1 Fingerprint: 3b:c4:9f:48:f8:f3:73:a0:9c:1e:bd:f8:5b:b1:c3:65:c7:d8:11:b3 +# SHA256 Fingerprint: bf:0f:ee:fb:9e:3a:58:1a:d5:f9:e9:db:75:89:98:57:43:d2:61:08:5c:4d:31:4f:6f:5d:72:59:aa:42:16:12 +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDEr +MCkGA1UEChMiSmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoG +A1UEAxMTU2VjdXJlU2lnbiBSb290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0 +MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSswKQYDVQQKEyJKYXBhbiBDZXJ0aWZp +Y2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1cmVTaWduIFJvb3RD +QTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvLTJsz +i1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8 +h9uuywGOwvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOV +MdrAG/LuYpmGYz+/3ZMqg6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9 +UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rPO7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni +8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitAbpSACW22s293bzUIUPsC +h8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZXt94wDgYD +VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEB +AKChOBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xm +KbabfSVSSUOrTC4rbnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQ +X5Ucv+2rIrVls4W6ng+4reV6G4pQOh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWr +QbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01y8hSyn+B/tlr0/cR7SXf+Of5 +pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061lgeLKBObjBmN +QSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +# Issuer: CN=ACEDICOM Root O=EDICOM OU=PKI +# Subject: CN=ACEDICOM Root O=EDICOM OU=PKI +# Label: "ACEDICOM Root" +# Serial: 7029493972724711941 +# MD5 Fingerprint: 42:81:a0:e2:1c:e3:55:10:de:55:89:42:65:96:22:e6 +# SHA1 Fingerprint: e0:b4:32:2e:b2:f6:a5:68:b6:54:53:84:48:18:4a:50:36:87:43:84 +# SHA256 Fingerprint: 03:95:0f:b4:9a:53:1f:3e:19:91:94:23:98:df:a9:e0:ea:32:d7:ba:1c:dd:9b:c8:5d:b5:7e:d9:40:0b:43:4a +-----BEGIN CERTIFICATE----- +MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UE +AwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00x +CzAJBgNVBAYTAkVTMB4XDTA4MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEW +MBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZF +RElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC +AgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHkWLn7 +09gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7 +XBZXehuDYAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5P +Grjm6gSSrj0RuVFCPYewMYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAK +t0SdE3QrwqXrIhWYENiLxQSfHY9g5QYbm8+5eaA9oiM/Qj9r+hwDezCNzmzAv+Yb +X79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbkHQl/Sog4P75n/TSW9R28 +MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTTxKJxqvQU +fecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI +2Sf23EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyH +K9caUPgn6C9D4zq92Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEae +ZAwUswdbxcJzbPEHXEUkFDWug/FqTYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAP +BgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz4SsrSbbXc6GqlPUB53NlTKxQ +MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU9QHnc2VMrFAw +RAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv +bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWIm +fQwng4/F9tqgaHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3 +gvoFNTPhNahXwOf9jU8/kzJPeGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKe +I6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1PwkzQSulgUV1qzOMPPKC8W64iLgpq0i +5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1ThCojz2GuHURwCRi +ipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oIKiMn +MCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZ +o5NjEFIqnxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6 +zqylfDJKZ0DcMDQj3dcEI2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacN +GHk0vFQYXlPKNFHtRQrmjseCNj6nOGOpMCwXEGCSn1WHElkQwg9naRHMTh5+Spqt +r0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3otkYNbn5XOmeUwssfnHdK +Z05phkOTOPu220+DkdRgfks+KzgHVZhepA== +-----END CERTIFICATE----- + +# Issuer: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. +# Subject: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. +# Label: "Microsec e-Szigno Root CA 2009" +# Serial: 14014712776195784473 +# MD5 Fingerprint: f8:49:f4:03:bc:44:2d:83:be:48:69:7d:29:64:fc:b1 +# SHA1 Fingerprint: 89:df:74:fe:5c:f4:0f:4a:80:f9:e3:37:7d:54:da:91:e1:01:31:8e +# SHA256 Fingerprint: 3c:5f:81:fe:a5:fa:b8:2c:64:bf:a2:ea:ec:af:cd:e8:e0:77:fc:86:20:a7:ca:e5:37:16:3d:f3:6e:db:f3:78 +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD +VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0 +ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0G +CSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTAeFw0wOTA2MTYxMTMwMThaFw0y +OTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3Qx +FjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3pp +Z25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvP +kd6mJviZpWNwrZuuyjNAfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tc +cbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG0IMZfcChEhyVbUr02MelTTMuhTlAdX4U +fIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKApxn1ntxVUwOXewdI/5n7 +N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm1HxdrtbC +xkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1 ++rUCAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPM +Pcu1SCOhGnqmKrs0aDAbBgNVHREEFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqG +SIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0olZMEyL/azXm4Q5DwpL7v8u8h +mLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfXI/OMn74dseGk +ddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c +2Pm2G2JwCz02yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5t +HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Label: "GlobalSign Root CA - R3" +# Serial: 4835703278459759426209954 +# MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28 +# SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad +# SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 +MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 +RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT +gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm +KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd +QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ +XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o +LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU +RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp +jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK +6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX +mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs +Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH +WD9f +-----END CERTIFICATE----- + +# Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 +# Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 +# Label: "Autoridad de Certificacion Firmaprofesional CIF A62634068" +# Serial: 6047274297262753887 +# MD5 Fingerprint: 73:3a:74:7a:ec:bb:a3:96:a6:c2:e4:e2:c8:9b:c0:c3 +# SHA1 Fingerprint: ae:c5:fb:3f:c8:e1:bf:c4:e5:4f:03:07:5a:9a:e8:00:b7:f7:b6:fa +# SHA256 Fingerprint: 04:04:80:28:bf:1f:28:64:d4:8f:9a:d4:d8:32:94:36:6a:82:88:56:55:3f:3b:14:30:3f:90:14:7f:5d:40:ef +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UE +BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h +cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEy +MzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg +Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9 +thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM +cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG +L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i +NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h +X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b +m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy +Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja +EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T +KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF +6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh +OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNHDhpkLzCBpgYD +VR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp +cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBv +ACAAZABlACAAbABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBl +AGwAbwBuAGEAIAAwADgAMAAxADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF +661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx51tkljYyGOylMnfX40S2wBEqgLk9 +am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qkR71kMrv2JYSiJ0L1 +ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaPT481 +PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS +3a/DTg4fJl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5k +SeTy36LssUzAKh3ntLFlosS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF +3dvd6qJ2gHN99ZwExEWN57kci57q13XRcrHedUTnQn3iV2t93Jm8PYMo6oCTjcVM +ZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoRsaS8I8nkvof/uZS2+F0g +StRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTDKCOM/icz +Q0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQB +jLMi6Et8Vcad+qMUu2WFbm5PEn4KPJ2V +-----END CERTIFICATE----- + +# Issuer: CN=Izenpe.com O=IZENPE S.A. +# Subject: CN=Izenpe.com O=IZENPE S.A. +# Label: "Izenpe.com" +# Serial: 917563065490389241595536686991402621 +# MD5 Fingerprint: a6:b0:cd:85:80:da:5c:50:34:a3:39:90:2f:55:67:73 +# SHA1 Fingerprint: 2f:78:3d:25:52:18:a7:4a:65:39:71:b5:2c:a2:9c:45:15:6f:e9:19 +# SHA256 Fingerprint: 25:30:cc:8e:98:32:15:02:ba:d9:6f:9b:1f:ba:1b:09:9e:2d:29:9e:0f:45:48:bb:91:4f:36:3b:c0:d4:53:1f +-----BEGIN CERTIFICATE----- +MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4 +MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6 +ZW5wZS5jb20wHhcNMDcxMjEzMTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYD +VQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5j +b20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ03rKDx6sp4boFmVq +scIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAKClaO +xdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6H +LmYRY2xU+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFX +uaOKmMPsOzTFlUFpfnXCPCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQD +yCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxTOTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+ +JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbKF7jJeodWLBoBHmy+E60Q +rLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK0GqfvEyN +BjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8L +hij+0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIB +QFqNeb+Lz0vPqhbBleStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+ +HMh3/1uaD7euBUbl8agW7EekFwIDAQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2lu +Zm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+SVpFTlBFIFMuQS4gLSBDSUYg +QTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBGNjIgUzgxQzBB +BgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx +MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUA +A4ICAQB4pgwWSp9MiDrAyw6lFn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWb +laQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbgakEyrkgPH7UIBzg/YsfqikuFgba56 +awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8qhT/AQKM6WfxZSzwo +JNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Csg1lw +LDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCT +VyvehQP5aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGk +LhObNA5me0mrZJfQRsN5nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJb +UjWumDqtujWTI6cfSN01RpiyEGjkpTHCClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/ +QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZoQ0iy2+tzJOeRf1SktoA+ +naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1ZWrOZyGls +QyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== +-----END CERTIFICATE----- + +# Issuer: CN=Chambers of Commerce Root - 2008 O=AC Camerfirma S.A. +# Subject: CN=Chambers of Commerce Root - 2008 O=AC Camerfirma S.A. +# Label: "Chambers of Commerce Root - 2008" +# Serial: 11806822484801597146 +# MD5 Fingerprint: 5e:80:9e:84:5a:0e:65:0b:17:02:f3:55:18:2a:3e:d7 +# SHA1 Fingerprint: 78:6a:74:ac:76:ab:14:7f:9c:6a:30:50:ba:9e:a8:7e:fe:9a:ce:3c +# SHA256 Fingerprint: 06:3e:4a:fa:c4:91:df:d3:32:f3:08:9b:85:42:e9:46:17:d8:93:d7:fe:94:4e:10:a7:93:7e:e2:9d:96:93:c0 +-----BEGIN CERTIFICATE----- +MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD +VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 +IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 +MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xKTAnBgNVBAMTIENoYW1iZXJz +IG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEyMjk1MFoXDTM4MDcz +MTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBj +dXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIw +EAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEp +MCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW9 +28sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKAXuFixrYp4YFs8r/lfTJq +VKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorjh40G072Q +DuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR +5gN/ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfL +ZEFHcpOrUMPrCXZkNNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05a +Sd+pZgvMPMZ4fKecHePOjlO+Bd5gD2vlGts/4+EhySnB8esHnFIbAURRPHsl18Tl +UlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331lubKgdaX8ZSD6e2wsWsSaR6s ++12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ0wlf2eOKNcx5 +Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj +ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAx +hduub+84Mxh2EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNV +HQ4EFgQU+SSsD7K1+HnA+mCIG8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1 ++HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpN +YWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29t +L2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVy +ZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAt +IDIwMDiCCQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRV +HSAAMCowKAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20w +DQYJKoZIhvcNAQEFBQADggIBAJASryI1wqM58C7e6bXpeHxIvj99RZJe6dqxGfwW +PJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH3qLPaYRgM+gQDROpI9CF +5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbURWpGqOt1 +glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaH +FoI6M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2 +pSB7+R5KBWIBpih1YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MD +xvbxrN8y8NmBGuScvfaAFPDRLLmF9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QG +tjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcKzBIKinmwPQN/aUv0NCB9szTq +jktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvGnrDQWzilm1De +fhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg +OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZ +d0jQ +-----END CERTIFICATE----- + +# Issuer: CN=Global Chambersign Root - 2008 O=AC Camerfirma S.A. +# Subject: CN=Global Chambersign Root - 2008 O=AC Camerfirma S.A. +# Label: "Global Chambersign Root - 2008" +# Serial: 14541511773111788494 +# MD5 Fingerprint: 9e:80:ff:78:01:0c:2e:c1:36:bd:fe:96:90:6e:08:f3 +# SHA1 Fingerprint: 4a:bd:ee:ec:95:0d:35:9c:89:ae:c7:52:a1:2c:5b:29:f6:d6:aa:0c +# SHA256 Fingerprint: 13:63:35:43:93:34:a7:69:80:16:a0:d3:24:de:72:28:4e:07:9d:7b:52:20:bb:8f:bd:74:78:16:ee:be:ba:ca +-----BEGIN CERTIFICATE----- +MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYD +VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 +IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 +MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD +aGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMxNDBaFw0zODA3MzEx +MjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3Vy +cmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAG +A1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAl +BgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZI +hvcNAQEBBQADggIPADCCAgoCggIBAMDfVtPkOpt2RbQT2//BthmLN0EYlVJH6xed +KYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXfXjaOcNFccUMd2drvXNL7 +G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0ZJJ0YPP2 +zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4 +ddPB/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyG +HoiMvvKRhI9lNNgATH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2 +Id3UwD2ln58fQ1DJu7xsepeY7s2MH/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3V +yJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfeOx2YItaswTXbo6Al/3K1dh3e +beksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSFHTynyQbehP9r +6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh +wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsog +zCtLkykPAgMBAAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQW +BBS5CcqcHtvTbDprru1U8VuTBjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDpr +ru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UEBhMCRVUxQzBBBgNVBAcTOk1hZHJp +ZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJmaXJtYS5jb20vYWRk +cmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJmaXJt +YSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiC +CQDJzdPp1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCow +KAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZI +hvcNAQEFBQADggIBAICIf3DekijZBZRG/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZ +UohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6ReAJ3spED8IXDneRRXoz +X1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/sdZ7LoR/x +fxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVz +a2Mg9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yyd +Yhz2rXzdpjEetrHHfoUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMd +SqlapskD7+3056huirRXhOukP9DuqqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9O +AP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETrP3iZ8ntxPjzxmKfFGBI/5rso +M0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVqc5iJWzouE4ge +v8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z +09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B +-----END CERTIFICATE----- + +# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Label: "Go Daddy Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 +# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b +# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT +EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp +ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz +NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH +EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE +AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD +E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH +/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy +DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh +GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR +tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA +AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX +WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu +9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr +gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo +2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI +4uJEvlz36hz1 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 +# SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e +# SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs +ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw +MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj +aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp +Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg +nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 +HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N +Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN +dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 +HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G +CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU +sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 +4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg +8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 +mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Services Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2 +# SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f +# SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5 +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs +ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD +VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy +ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy +dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p +OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 +8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K +Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe +hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk +6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw +DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q +AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI +bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB +ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z +qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn +0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN +sSi6 +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Commercial O=AffirmTrust +# Subject: CN=AffirmTrust Commercial O=AffirmTrust +# Label: "AffirmTrust Commercial" +# Serial: 8608355977964138876 +# MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7 +# SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7 +# SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7 +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP +Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr +ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL +MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1 +yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr +VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/ +nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG +XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj +vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt +Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g +N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC +nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Networking O=AffirmTrust +# Subject: CN=AffirmTrust Networking O=AffirmTrust +# Label: "AffirmTrust Networking" +# Serial: 8957382827206547757 +# MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f +# SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f +# SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y +YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua +kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL +QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp +6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG +yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i +QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO +tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu +QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ +Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u +olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48 +x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium O=AffirmTrust +# Subject: CN=AffirmTrust Premium O=AffirmTrust +# Label: "AffirmTrust Premium" +# Serial: 7893706540734352110 +# MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57 +# SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27 +# SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz +dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG +A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U +cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf +qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ +JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ ++jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS +s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5 +HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7 +70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG +V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S +qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S +5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia +C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX +OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE +FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2 +KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B +8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ +MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc +0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ +u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF +u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH +YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8 +GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO +RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e +KeC2uAloGRwYQw== +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust +# Subject: CN=AffirmTrust Premium ECC O=AffirmTrust +# Label: "AffirmTrust Premium ECC" +# Serial: 8401224907861490260 +# MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d +# SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb +# SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23 +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC +VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ +cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ +BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt +VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D +0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9 +ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G +A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs +aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I +flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Network CA" +# Serial: 279744 +# MD5 Fingerprint: d5:e9:81:40:c5:18:69:fc:46:2c:89:75:62:0f:aa:78 +# SHA1 Fingerprint: 07:e0:32:e0:20:b7:2c:3f:19:2f:06:28:a2:59:3a:19:a7:0f:06:9e +# SHA256 Fingerprint: 5c:58:46:8d:55:f5:8e:49:7e:74:39:82:d2:b5:00:10:b6:d1:65:37:4a:cf:83:a7:d4:a3:2d:b7:68:c4:40:8e +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM +MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D +ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU +cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 +WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg +Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw +IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH +UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM +TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU +BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM +kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x +AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV +HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y +sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL +I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 +J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY +VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +# Issuer: CN=Certinomis - Autorité Racine O=Certinomis OU=0002 433998903 +# Subject: CN=Certinomis - Autorité Racine O=Certinomis OU=0002 433998903 +# Label: "Certinomis - Autorité Racine" +# Serial: 1 +# MD5 Fingerprint: 7f:30:78:8c:03:e3:ca:c9:0a:e2:c9:ea:1e:aa:55:1a +# SHA1 Fingerprint: 2e:14:da:ec:28:f0:fa:1e:8e:38:9a:4e:ab:eb:26:c0:0a:d3:83:c3 +# SHA256 Fingerprint: fc:bf:e2:88:62:06:f7:2b:27:59:3c:8b:07:02:97:e1:2d:76:9e:d1:0e:d7:93:07:05:a8:09:8e:ff:c1:4d:17 +-----BEGIN CERTIFICATE----- +MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjET +MBEGA1UEChMKQ2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAk +BgNVBAMMHUNlcnRpbm9taXMgLSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4 +Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkGA1UEBhMCRlIxEzARBgNVBAoTCkNl +cnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYwJAYDVQQDDB1DZXJ0 +aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jY +F1AMnmHawE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N +8y4oH3DfVS9O7cdxbwlyLu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWe +rP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K +/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92NjMD2AR5vpTESOH2VwnHu +7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9qc1pkIuVC +28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6 +lSTClrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1E +nn1So2+WLhl+HPNbxxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB +0iSVL1N6aaLwD4ZFjliCK0wi1F6g530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql09 +5gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna4NH4+ej9Uji29YnfAgMBAAGj +WzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBQN +jLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ +KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9s +ov3/4gbIOZ/xWqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZM +OH8oMDX/nyNTt7buFHAAQCvaR6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q +619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40nJ+U8/aGH88bc62UeYdocMMzpXDn +2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1BCxMjidPJC+iKunqj +o3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjvJL1v +nxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG +5ERQL1TEqkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWq +pdEdnV1j6CTmNhTih60bWfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZb +dsLLO7XSAPCjDuGtbkD326C00EauFddEwk01+dIL8hf2rGbVJLJP0RyZwG71fet0 +BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/vgt2Fl43N+bYdJeimUV5 +-----END CERTIFICATE----- + +# Issuer: CN=Root CA Generalitat Valenciana O=Generalitat Valenciana OU=PKIGVA +# Subject: CN=Root CA Generalitat Valenciana O=Generalitat Valenciana OU=PKIGVA +# Label: "Root CA Generalitat Valenciana" +# Serial: 994436456 +# MD5 Fingerprint: 2c:8c:17:5e:b1:54:ab:93:17:b5:36:5a:db:d1:c6:f2 +# SHA1 Fingerprint: a0:73:e5:c5:bd:43:61:0d:86:4c:21:13:0a:85:58:57:cc:9c:ea:46 +# SHA256 Fingerprint: 8c:4e:df:d0:43:48:f3:22:96:9e:7e:29:a4:cd:4d:ca:00:46:55:06:1c:16:e1:b0:76:42:2e:f3:42:ad:63:0e +-----BEGIN CERTIFICATE----- +MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJF +UzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJ +R1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcN +MDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3WjBoMQswCQYDVQQGEwJFUzEfMB0G +A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScw +JQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+ +WmmmO3I2F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKj +SgbwJ/BXufjpTjJ3Cj9BZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGl +u6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQD0EbtFpKd71ng+CT516nDOeB0/RSrFOy +A8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXteJajCq+TA81yc477OMUxk +Hl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMBAAGjggM7 +MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBr +aS5ndmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIIC +IwYKKwYBBAG/VQIBADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8A +cgBpAGQAYQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIA +YQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIAYQBsAGkAdABhAHQAIABWAGEA +bABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQByAGEAYwBpAPMA +bgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA +aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMA +aQBvAG4AYQBtAGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQA +ZQAgAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEA +YwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBuAHQAcgBhACAAZQBuACAAbABhACAA +ZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAAOgAvAC8AdwB3AHcA +LgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0dHA6 +Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+y +eAT8MIGVBgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQsw +CQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0G +A1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVu +Y2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRhTvW1yEICKrNcda3Fbcrn +lD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdzCkj+IHLt +b8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg +9J63NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XF +ducTZnV+ZfsBn5OHiJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmC +IoaZM3Fa6hlXPZHNqcCjbgcTpsnt+GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM= +-----END CERTIFICATE----- + +# Issuer: CN=A-Trust-nQual-03 O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH OU=A-Trust-nQual-03 +# Subject: CN=A-Trust-nQual-03 O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH OU=A-Trust-nQual-03 +# Label: "A-Trust-nQual-03" +# Serial: 93214 +# MD5 Fingerprint: 49:63:ae:27:f4:d5:95:3d:d8:db:24:86:b8:9c:07:53 +# SHA1 Fingerprint: d3:c0:63:f2:19:ed:07:3e:34:ad:5d:75:0b:32:76:29:ff:d5:9a:f2 +# SHA256 Fingerprint: 79:3c:bf:45:59:b9:fd:e3:8a:b2:2d:f1:68:69:f6:98:81:ae:14:c4:b0:13:9a:c7:88:a7:8a:1a:fc:ca:02:fb +-----BEGIN CERTIFICATE----- +MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB +VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp +bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R +dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTA1MDgxNzIyMDAw +MFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy +dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52 +ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMM +EEEtVHJ1c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQCtPWFuA/OQO8BBC4SAzewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUj +lUC5B3ilJfYKvUWG6Nm9wASOhURh73+nyfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZ +znF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPESU7l0+m0iKsMrmKS1GWH +2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4iHQF63n1 +k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs +2e3Vcuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYD +VR0OBAoECERqlWdVeRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC +AQEAVdRU0VlIXLOThaq/Yy/kgM40ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fG +KOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmrsQd7TZjTXLDR8KdCoLXEjq/+ +8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZdJXDRZslo+S4R +FGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS +mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmE +DNuxUCAKGkq6ahq97BvIxYSazQ== +-----END CERTIFICATE----- + +# Issuer: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA +# Label: "TWCA Root Certification Authority" +# Serial: 1 +# MD5 Fingerprint: aa:08:8f:f6:f9:7b:b7:f2:b1:a7:1e:9b:ea:ea:bd:79 +# SHA1 Fingerprint: cf:9e:87:6d:d3:eb:fc:42:26:97:a3:b5:a3:7a:a0:76:a9:06:23:48 +# SHA256 Fingerprint: bf:d8:8f:e1:10:1c:41:ae:3e:80:1b:f8:be:56:35:0e:e9:ba:d1:a6:b9:bd:51:5e:dc:5c:6d:5b:87:11:ac:44 +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzES +MBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFU +V0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMz +WhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJVEFJV0FO +LUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFE +AcK0HMMxQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HH +K3XLfJ+utdGdIzdjp9xCoi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeX +RfwZVzsrb+RH9JlF/h3x+JejiB03HFyP4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/z +rX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1ry+UPizgN7gr8/g+YnzAx +3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkq +hkiG9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeC +MErJk/9q56YAf4lCmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdls +XebQ79NqZp4VKIV66IIArB6nCWlWQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62D +lhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVYT0bf+215WfKEIlKuD8z7fDvn +aspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocnyYh0igzyXxfkZ +YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +# Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 +# Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 +# Label: "Security Communication RootCA2" +# Serial: 0 +# MD5 Fingerprint: 6c:39:7d:a4:0e:55:59:b2:3f:d6:41:b1:12:50:de:43 +# SHA1 Fingerprint: 5f:3b:8c:f2:f8:10:b3:7d:78:b4:ce:ec:19:19:c3:73:34:b9:c7:74 +# SHA256 Fingerprint: 51:3b:2c:ec:b8:10:d4:cd:e5:dd:85:39:1a:df:c6:c2:dd:60:d8:7b:b7:36:d2:b5:21:48:4a:a4:7a:0e:be:f6 +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl +MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe +U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX +DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy +dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj +YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV +OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr +zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM +VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ +hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO +ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw +awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs +OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 +DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF +coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc +okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8 +t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy +1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/ +SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2011 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions RootCA 2011 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions RootCA 2011" +# Serial: 0 +# MD5 Fingerprint: 73:9f:4c:4b:73:5b:79:e9:fa:ba:1c:ef:6e:cb:d5:c9 +# SHA1 Fingerprint: fe:45:65:9b:79:03:5b:98:a1:61:b5:51:2e:ac:da:58:09:48:22:4d +# SHA256 Fingerprint: bc:10:4f:15:a4:8b:e7:09:dc:a5:42:a7:e1:d4:b9:df:6f:05:45:27:e8:02:ea:a9:2d:59:54:44:25:8a:fe:71 +-----BEGIN CERTIFICATE----- +MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1Ix +RDBCBgNVBAoTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 +dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1p +YyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIFJvb3RDQSAyMDExMB4XDTExMTIw +NjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYTAkdSMUQwQgYDVQQK +EztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENl +cnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl +c2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPz +dYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJ +fel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa71HFK9+WXesyHgLacEns +bgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u8yBRQlqD +75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSP +FEDH3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNV +HRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp +5dgTBCPuQSUwRwYDVR0eBEAwPqA8MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQu +b3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQub3JnMA0GCSqGSIb3DQEBBQUA +A4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVtXdMiKahsog2p +6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 +TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7 +dIsXRSZMFpGD/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8Acys +Nnq/onN694/BtZqhFLKPM58N7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXI +l7WdmplNsDz4SgCbZN2fOUvRJ9e4 +-----END CERTIFICATE----- + +# Issuer: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 +# Subject: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 +# Label: "Actalis Authentication Root CA" +# Serial: 6271844772424770508 +# MD5 Fingerprint: 69:c1:0d:4f:07:a3:1b:c3:fe:56:3d:04:bc:11:f6:a6 +# SHA1 Fingerprint: f3:73:b3:87:06:5a:28:84:8a:f2:f3:4a:ce:19:2b:dd:c7:8e:9c:ac +# SHA256 Fingerprint: 55:92:60:84:ec:96:3a:64:b9:6e:2a:be:01:ce:0b:a8:6a:64:fb:fe:bc:c7:aa:b5:af:c1:55:b3:7f:d7:60:66 +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE +BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w +MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC +SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1 +ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv +UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX +4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9 +KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/ +gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb +rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ +51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F +be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe +KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F +v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn +fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7 +jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz +ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL +e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70 +jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz +WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V +SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j +pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX +X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok +fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R +K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU +ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU +LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT +LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- + +# Issuer: O=Trustis Limited OU=Trustis FPS Root CA +# Subject: O=Trustis Limited OU=Trustis FPS Root CA +# Label: "Trustis FPS Root CA" +# Serial: 36053640375399034304724988975563710553 +# MD5 Fingerprint: 30:c9:e7:1e:6b:e6:14:eb:65:b2:16:69:20:31:67:4d +# SHA1 Fingerprint: 3b:c0:38:0b:33:c3:f6:a6:0c:86:15:22:93:d9:df:f5:4b:81:c0:04 +# SHA256 Fingerprint: c1:b4:82:99:ab:a5:20:8f:e9:63:0a:ce:55:ca:68:a0:3e:da:5a:51:9c:88:02:a0:d3:a6:73:be:8f:8e:55:7d +-----BEGIN CERTIFICATE----- +MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBF +MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQL +ExNUcnVzdGlzIEZQUyBSb290IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTEx +MzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1RydXN0aXMgTGltaXRlZDEc +MBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQRUN+ +AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihH +iTHcDnlkH5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjj +vSkCqPoc4Vu5g6hBSLwacY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA +0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zto3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlB +OrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEAAaNTMFEwDwYDVR0TAQH/ +BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAdBgNVHQ4E +FgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01 +GX2cGE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmW +zaD+vkAMXBJV+JOCyinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP4 +1BIy+Q7DsdwyhEQsb8tGD+pmQQ9P8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZE +f1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHVl/9D7S3B2l0pKoU/rGXuhg8F +jZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYliB6XzCGcKQEN +ZetX2fNXlrtIzYE= +-----END CERTIFICATE----- + +# Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Label: "StartCom Certification Authority" +# Serial: 45 +# MD5 Fingerprint: c9:3b:0d:84:41:fc:a4:76:79:23:08:57:de:10:19:16 +# SHA1 Fingerprint: a3:f1:33:3f:e2:42:bf:cf:c5:d1:4e:8f:39:42:98:40:68:10:d1:a0 +# SHA256 Fingerprint: e1:78:90:ee:09:a3:fb:f4:f4:8b:9c:41:4a:17:d6:37:b7:a5:06:47:e9:bc:75:23:22:72:7f:cc:17:42:a9:11 +-----BEGIN CERTIFICATE----- +MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEW +MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg +Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM3WhcNMzYwOTE3MTk0NjM2WjB9 +MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi +U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh +cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk +pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf +OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C +Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT +Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi +HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM +Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w ++2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ +Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 +Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B +26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID +AQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFul +F2mHMMo0aEPQQa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCC +ATgwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5w +ZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVk +aWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENvbW1lcmNpYWwgKFN0 +YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0aGUg +c2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93 +d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgG +CWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5fPGFf59Jb2vKXfuM/gTF +wWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWmN3PH/UvS +Ta0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst +0OcNOrg+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNc +pRJvkrKTlMeIFw6Ttn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKl +CcWw0bdT82AUuoVpaiF8H3VhFyAXe2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVF +P0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA2MFrLH9ZXF2RsXAiV+uKa0hK +1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBsHvUwyKMQ5bLm +KhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE +JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ +8dCAWZvLMdibD4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnm +fyWl8kgAwKQB2j8= +-----END CERTIFICATE----- + +# Issuer: CN=StartCom Certification Authority G2 O=StartCom Ltd. +# Subject: CN=StartCom Certification Authority G2 O=StartCom Ltd. +# Label: "StartCom Certification Authority G2" +# Serial: 59 +# MD5 Fingerprint: 78:4b:fb:9e:64:82:0a:d3:b8:4c:62:f3:64:f2:90:64 +# SHA1 Fingerprint: 31:f1:fd:68:22:63:20:ee:c6:3b:3f:9d:ea:4a:3e:53:7c:7c:39:17 +# SHA256 Fingerprint: c7:ba:65:67:de:93:a7:98:ae:1f:aa:79:1e:71:2d:37:8f:ae:1f:93:c4:39:7f:ea:44:1b:b7:cb:e6:fd:59:95 +-----BEGIN CERTIFICATE----- +MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEW +MBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkgRzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1 +OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoG +A1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRzIwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8Oo1XJ +JZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsD +vfOpL9HG4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnoo +D/Uefyf3lLE3PbfHkffiAez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/ +Q0kGi4xDuFby2X8hQxfqp0iVAXV16iulQ5XqFYSdCI0mblWbq9zSOdIxHWDirMxW +RST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbsO+wmETRIjfaAKxojAuuK +HDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8HvKTlXcxN +nw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM +0D4LnMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/i +UUjXuG+v+E5+M5iSFGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9 +Ha90OrInwMEePnWjFqmveiJdnxMaz6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHg +TuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJKoZIhvcNAQEL +BQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K +2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfX +UfEpY9Z1zRbkJ4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl +6/2o1PXWT6RbdejF0mCy2wl+JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK +9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG/+gyRr61M3Z3qAFdlsHB1b6uJcDJ +HgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTcnIhT76IxW1hPkWLI +wpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/XldblhY +XzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5l +IxKVCCIcl85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoo +hdVddLHRDiBYmxOlsGOm7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulr +so8uBtjRkcfGEvRM/TAXw8HaOFvjqermobp573PYtlNXLfbQ4ddI +-----END CERTIFICATE----- + +# Issuer: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 +# Subject: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 +# Label: "Buypass Class 2 Root CA" +# Serial: 2 +# MD5 Fingerprint: 46:a7:d2:fe:45:fb:64:5a:a8:59:90:9b:78:44:9b:29 +# SHA1 Fingerprint: 49:0a:75:74:de:87:0a:47:fe:58:ee:f6:c7:6b:eb:c6:0b:12:40:99 +# SHA256 Fingerprint: 9a:11:40:25:19:7c:5b:b9:5d:94:e6:3d:55:cd:43:79:08:47:b6:46:b2:3c:df:11:ad:a4:a0:0e:ff:15:fb:48 +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg +Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow +TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw +HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr +6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV +L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91 +1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx +MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ +QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB +arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr +Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi +FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS +P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN +9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP +AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz +uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h +9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t +OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo ++fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7 +KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2 +DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us +H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ +I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7 +5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h +3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz +Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA= +-----END CERTIFICATE----- + +# Issuer: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 +# Subject: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 +# Label: "Buypass Class 3 Root CA" +# Serial: 2 +# MD5 Fingerprint: 3d:3b:18:9e:2c:64:5a:e8:d5:88:ce:0e:f9:37:c2:ec +# SHA1 Fingerprint: da:fa:f7:fa:66:84:ec:06:8f:14:50:bd:c7:c2:81:a5:bc:a9:64:57 +# SHA256 Fingerprint: ed:f7:eb:bc:a2:7a:2a:38:4d:38:7b:7d:40:10:c6:66:e2:ed:b4:84:3e:4c:29:b4:ae:1d:5b:93:32:e6:b2:4d +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg +Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow +TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw +HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y +ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E +N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9 +tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX +0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c +/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X +KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY +zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS +O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D +34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP +K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3 +AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv +Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj +QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS +IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2 +HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa +O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv +033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u +dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE +kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41 +3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD +u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq +4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc= +-----END CERTIFICATE----- + +# Issuer: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Subject: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Label: "T-TeleSec GlobalRoot Class 3" +# Serial: 1 +# MD5 Fingerprint: ca:fb:40:a8:4e:39:92:8a:1d:fe:8e:2f:c4:27:ea:ef +# SHA1 Fingerprint: 55:a6:72:3e:cb:f2:ec:cd:c3:23:74:70:19:9d:2a:be:11:e3:81:d1 +# SHA256 Fingerprint: fd:73:da:d3:1c:64:4f:f1:b4:3b:ef:0c:cd:da:96:71:0b:9c:d9:87:5e:ca:7e:31:70:7a:f3:e9:6d:52:2b:bd +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN +8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ +RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 +hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 +ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM +EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 +A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy +WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ +1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 +6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT +91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p +TpPDpFQUWw== +-----END CERTIFICATE----- + +# Issuer: CN=EE Certification Centre Root CA O=AS Sertifitseerimiskeskus +# Subject: CN=EE Certification Centre Root CA O=AS Sertifitseerimiskeskus +# Label: "EE Certification Centre Root CA" +# Serial: 112324828676200291871926431888494945866 +# MD5 Fingerprint: 43:5e:88:d4:7d:1a:4a:7e:fd:84:2e:52:eb:01:d4:6f +# SHA1 Fingerprint: c9:a8:b9:e7:55:80:5e:58:e3:53:77:a7:25:eb:af:c3:7b:27:cc:d7 +# SHA256 Fingerprint: 3e:84:ba:43:42:90:85:16:e7:75:73:c0:99:2f:09:79:ca:08:4e:46:85:68:1f:f1:95:cc:ba:8a:22:9b:8a:76 +-----BEGIN CERTIFICATE----- +MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1 +MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1 +czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYG +CSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIwMTAxMDMwMTAxMDMwWhgPMjAzMDEy +MTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlBUyBTZXJ0aWZpdHNl +ZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRyZSBS +b290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUy +euuOF0+W2Ap7kaJjbMeMTC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvO +bntl8jixwKIy72KyaOBhU8E2lf/slLo2rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIw +WFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw93X2PaRka9ZP585ArQ/d +MtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtNP2MbRMNE +1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/ +zQas8fElyalL1BSZMEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYB +BQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEF +BQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+RjxY6hUFaTlrg4wCQiZrxTFGGV +v9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqMlIpPnTX/dqQG +E5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u +uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIW +iAYLtqZLICjU3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/v +GVCJYMzpJJUPwssd8m92kMfMdcGWxZ0= +-----END CERTIFICATE----- + +# Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Aralık 2007 +# Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Aralık 2007 +# Label: "TURKTRUST Certificate Services Provider Root 2007" +# Serial: 1 +# MD5 Fingerprint: 2b:70:20:56:86:82:a0:18:c8:07:53:12:28:70:21:72 +# SHA1 Fingerprint: f1:7f:6f:b6:31:dc:99:e3:a3:c8:7f:fe:1c:f1:81:10:88:d9:60:33 +# SHA256 Fingerprint: 97:8c:d9:66:f2:fa:a0:7b:a7:aa:95:00:d9:c0:2e:9d:77:f2:cd:ad:a6:ad:6b:a7:4a:f4:b9:1c:66:59:3c:50 +-----BEGIN CERTIFICATE----- +MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOc +UktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx +c8SxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xS +S1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kg +SGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4XDTA3MTIyNTE4Mzcx +OVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxla3Ry +b25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMC +VFIxDzANBgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDE +sGxldGnFn2ltIHZlIEJpbGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7F +ni4gKGMpIEFyYWzEsWsgMjAwNzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9NYvDdE3ePYakqtdTyuTFY +KTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQvKUmi8wUG ++7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveG +HtyaKhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6P +IzdezKKqdfcYbwnTrqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M +733WB2+Y8a+xwXrXgTW4qhe04MsCAwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHk +Yb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G +CSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/sPx+EnWVUXKgW +AkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I +aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5 +mxRZNTZPz/OOXl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsa +XRik7r4EW5nVcV9VZWRi1aKbBFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZ +qxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAKpoRq0Tl9 +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH +# Subject: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH +# Label: "D-TRUST Root Class 3 CA 2 2009" +# Serial: 623603 +# MD5 Fingerprint: cd:e0:25:69:8d:47:ac:9c:89:35:90:f7:fd:51:3d:2f +# SHA1 Fingerprint: 58:e8:ab:b0:36:15:33:fb:80:f7:9b:1b:6d:29:d3:ff:8d:5f:00:f0 +# SHA256 Fingerprint: 49:e7:a4:42:ac:f0:ea:62:87:05:00:54:b5:25:64:b6:50:e4:f4:9e:42:e3:48:d6:aa:38:e0:39:e9:57:b1:c1 +-----BEGIN CERTIFICATE----- +MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF +MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD +bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha +ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM +HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03 +UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42 +tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R +ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM +lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp +/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G +A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G +A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj +dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy +MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl +cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js +L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL +BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni +acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 +o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K +zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8 +PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y +Johw1+qRzT65ysCQblrGXnRl11z+o+I= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH +# Subject: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH +# Label: "D-TRUST Root Class 3 CA 2 EV 2009" +# Serial: 623604 +# MD5 Fingerprint: aa:c6:43:2c:5e:2d:cd:c4:34:c0:50:4f:11:02:4f:b6 +# SHA1 Fingerprint: 96:c9:1b:0b:95:b4:10:98:42:fa:d0:d8:22:79:fe:60:fa:b9:16:83 +# SHA256 Fingerprint: ee:c5:49:6b:98:8c:e9:86:25:b9:34:09:2e:ec:29:08:be:d0:b0:f3:16:c2:d4:73:0c:84:ea:f1:f3:d3:48:81 +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF +MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD +bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw +NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV +BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn +ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0 +3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z +qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR +p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8 +HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw +ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea +HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw +Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh +c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E +RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt +dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku +Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp +3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 +nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF +CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na +xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX +KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1 +-----END CERTIFICATE----- + +# Issuer: CN=Autoridad de Certificacion Raiz del Estado Venezolano O=Sistema Nacional de Certificacion Electronica OU=Superintendencia de Servicios de Certificacion Electronica +# Subject: CN=PSCProcert O=Sistema Nacional de Certificacion Electronica OU=Proveedor de Certificados PROCERT +# Label: "PSCProcert" +# Serial: 11 +# MD5 Fingerprint: e6:24:e9:12:01:ae:0c:de:8e:85:c4:ce:a3:12:dd:ec +# SHA1 Fingerprint: 70:c1:8d:74:b4:28:81:0a:e4:fd:a5:75:d7:01:9f:99:b0:3d:50:74 +# SHA256 Fingerprint: 3c:fc:3c:14:d1:f6:84:ff:17:e3:8c:43:ca:44:0c:00:b9:67:ec:93:3e:8b:fe:06:4c:a1:d7:2c:90:f2:ad:b0 +-----BEGIN CERTIFICATE----- +MIIJhjCCB26gAwIBAgIBCzANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1 +dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9s +YW5vMQswCQYDVQQGEwJWRTEQMA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlz +dHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0 +aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBlcmludGVuZGVuY2lh +IGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUwIwYJ +KoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NTEw +MFoXDTIwMTIyNTIzNTk1OVowgdExJjAkBgkqhkiG9w0BCQEWF2NvbnRhY3RvQHBy +b2NlcnQubmV0LnZlMQ8wDQYDVQQHEwZDaGFjYW8xEDAOBgNVBAgTB01pcmFuZGEx +KjAoBgNVBAsTIVByb3ZlZWRvciBkZSBDZXJ0aWZpY2Fkb3MgUFJPQ0VSVDE2MDQG +A1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9u +aWNhMQswCQYDVQQGEwJWRTETMBEGA1UEAxMKUFNDUHJvY2VydDCCAiIwDQYJKoZI +hvcNAQEBBQADggIPADCCAgoCggIBANW39KOUM6FGqVVhSQ2oh3NekS1wwQYalNo9 +7BVCwfWMrmoX8Yqt/ICV6oNEolt6Vc5Pp6XVurgfoCfAUFM+jbnADrgV3NZs+J74 +BCXfgI8Qhd19L3uA3VcAZCP4bsm+lU/hdezgfl6VzbHvvnpC2Mks0+saGiKLt38G +ieU89RLAu9MLmV+QfI4tL3czkkohRqipCKzx9hEC2ZUWno0vluYC3XXCFCpa1sl9 +JcLB/KpnheLsvtF8PPqv1W7/U0HU9TI4seJfxPmOEO8GqQKJ/+MMbpfg353bIdD0 +PghpbNjU5Db4g7ayNo+c7zo3Fn2/omnXO1ty0K+qP1xmk6wKImG20qCZyFSTXai2 +0b1dCl53lKItwIKOvMoDKjSuc/HUtQy9vmebVOvh+qBa7Dh+PsHMosdEMXXqP+UH +0quhJZb25uSgXTcYOWEAM11G1ADEtMo88aKjPvM6/2kwLkDd9p+cJsmWN63nOaK/ +6mnbVSKVUyqUtd+tFjiBdWbjxywbk5yqjKPK2Ww8F22c3HxT4CAnQzb5EuE8XL1m +v6JpIzi4mWCZDlZTOpx+FIywBm/xhnaQr/2v/pDGj59/i5IjnOcVdo/Vi5QTcmn7 +K2FjiO/mpF7moxdqWEfLcU8UC17IAggmosvpr2uKGcfLFFb14dq12fy/czja+eev +bqQ34gcnAgMBAAGjggMXMIIDEzASBgNVHRMBAf8ECDAGAQH/AgEBMDcGA1UdEgQw +MC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAzNi0w +MB0GA1UdDgQWBBRBDxk4qpl/Qguk1yeYVKIXTC1RVDCCAVAGA1UdIwSCAUcwggFD +gBStuyIdxuDSAaj9dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0 +b3JpZGFkIGRlIENlcnRpZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xh +bm8xCzAJBgNVBAYTAlZFMRAwDgYDVQQHEwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0 +cml0byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5hY2lvbmFsIGRlIENlcnRp +ZmljYWNpb24gRWxlY3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5kZW5jaWEg +ZGUgU2VydmljaW9zIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkq +hkiG9w0BCQEWFmFjcmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQD +AgEGME0GA1UdEQRGMESCDnByb2NlcnQubmV0LnZloBUGBWCGXgIBoAwMClBTQy0w +MDAwMDKgGwYFYIZeAgKgEgwQUklGLUotMzE2MzUzNzMtNzB2BgNVHR8EbzBtMEag +RKBChkBodHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9sY3IvQ0VSVElGSUNBRE8t +UkFJWi1TSEEzODRDUkxERVIuY3JsMCOgIaAfhh1sZGFwOi8vYWNyYWl6LnN1c2Nl +cnRlLmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9v +Y3NwLnN1c2NlcnRlLmdvYi52ZTBBBgNVHSAEOjA4MDYGBmCGXgMBAjAsMCoGCCsG +AQUFBwIBFh5odHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9kcGMwDQYJKoZIhvcN +AQELBQADggIBACtZ6yKZu4SqT96QxtGGcSOeSwORR3C7wJJg7ODU523G0+1ng3dS +1fLld6c2suNUvtm7CpsR72H0xpkzmfWvADmNg7+mvTV+LFwxNG9s2/NkAZiqlCxB +3RWGymspThbASfzXg0gTB1GEMVKIu4YXx2sviiCtxQuPcD4quxtxj7mkoP3Yldmv +Wb8lK5jpY5MvYB7Eqvh39YtsL+1+LrVPQA3uvFd359m21D+VJzog1eWuq2w1n8Gh +HVnchIHuTQfiSLaeS5UtQbHh6N5+LwUeaO6/u5BlOsju6rEYNxxik6SgMexxbJHm +pHmJWhSnFFAFTKQAVzAswbVhltw+HoSvOULP5dAssSS830DD7X9jSr3hTxJkhpXz +sOfIt+FTvZLm8wyWuevo5pLtp4EJFAv8lXrPj9Y0TzYS3F7RNHXGRoAvlQSMx4bE +qCaJqD8Zm4G7UaRKhqsLEQ+xrmNTbSjq3TNWOByyrYDT13K9mmyZY+gAu0F2Bbdb +mRiKw7gSXFbPVgx96OLP7bx0R/vu0xdOIk9W/1DzLuY5poLWccret9W6aAjtmcz9 +opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3YeMLEYC/H +YvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km +-----END CERTIFICATE----- + +# Issuer: CN=China Internet Network Information Center EV Certificates Root O=China Internet Network Information Center +# Subject: CN=China Internet Network Information Center EV Certificates Root O=China Internet Network Information Center +# Label: "China Internet Network Information Center EV Certificates Root" +# Serial: 1218379777 +# MD5 Fingerprint: 55:5d:63:00:97:bd:6a:97:f5:67:ab:4b:fb:6e:63:15 +# SHA1 Fingerprint: 4f:99:aa:93:fb:2b:d1:37:26:a1:99:4a:ce:7f:f0:05:f2:93:5d:1e +# SHA256 Fingerprint: 1c:01:c6:f4:db:b2:fe:fc:22:55:8b:2b:ca:32:56:3f:49:84:4a:cf:c3:2b:7b:e4:b0:ff:59:9f:9e:8c:7a:f7 +-----BEGIN CERTIFICATE----- +MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMC +Q04xMjAwBgNVBAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24g +Q2VudGVyMUcwRQYDVQQDDD5DaGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0 +aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMgUm9vdDAeFw0xMDA4MzEwNzExMjVa +Fw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAGA1UECgwpQ2hpbmEg +SW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMMPkNo +aW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRp +ZmljYXRlcyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z +7r07eKpkQ0H1UN+U8i6yjUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA// +DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV98YPjUesWgbdYavi7NifFy2cyjw1l1Vx +zUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2HklY0bBoQCxfVWhyXWIQ8 +hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23KzhmBsUs +4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54u +gQEC7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oY +NJKiyoOCWTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4E +FgQUfHJLOcfA22KlT5uqGDSSosqDglkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3 +j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd50XPFtQO3WKwMVC/GVhMPMdoG +52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM7+czV0I664zB +echNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws +ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrI +zo9uoV1/A3U05K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATy +wy39FCqQmbkHzJ8= +-----END CERTIFICATE----- + +# Issuer: CN=Swisscom Root CA 2 O=Swisscom OU=Digital Certificate Services +# Subject: CN=Swisscom Root CA 2 O=Swisscom OU=Digital Certificate Services +# Label: "Swisscom Root CA 2" +# Serial: 40698052477090394928831521023204026294 +# MD5 Fingerprint: 5b:04:69:ec:a5:83:94:63:18:a7:86:d0:e4:f2:6e:19 +# SHA1 Fingerprint: 77:47:4f:c6:30:e4:0f:4c:47:64:3f:84:ba:b8:c6:95:4a:8a:41:ec +# SHA256 Fingerprint: f0:9b:12:2c:71:14:f4:a0:9b:d4:ea:4f:4a:99:d5:58:b4:6e:4c:25:cd:81:14:0d:29:c0:56:13:91:4c:38:41 +-----BEGIN CERTIFICATE----- +MIIF2TCCA8GgAwIBAgIQHp4o6Ejy5e/DfEoeWhhntjANBgkqhkiG9w0BAQsFADBk +MQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0 +YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3Qg +Q0EgMjAeFw0xMTA2MjQwODM4MTRaFw0zMTA2MjUwNzM4MTRaMGQxCzAJBgNVBAYT +AmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGlnaXRhbCBDZXJ0aWZp +Y2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAyMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlUJOhJ1R5tMJ6HJaI2nbeHCOFvEr +jw0DzpPMLgAIe6szjPTpQOYXTKueuEcUMncy3SgM3hhLX3af+Dk7/E6J2HzFZ++r +0rk0X2s682Q2zsKwzxNoysjL67XiPS4h3+os1OD5cJZM/2pYmLcX5BtS5X4HAB1f +2uY+lQS3aYg5oUFgJWFLlTloYhyxCwWJwDaCFCE/rtuh/bxvHGCGtlOUSbkrRsVP +ACu/obvLP+DHVxxX6NZp+MEkUp2IVd3Chy50I9AU/SpHWrumnf2U5NGKpV+GY3aF +y6//SSj8gO1MedK75MDvAe5QQQg1I3ArqRa0jG6F6bYRzzHdUyYb3y1aSgJA/MTA +tukxGggo5WDDH8SQjhBiYEQN7Aq+VRhxLKX0srwVYv8c474d2h5Xszx+zYIdkeNL +6yxSNLCK/RJOlrDrcH+eOfdmQrGrrFLadkBXeyq96G4DsguAhYidDMfCd7Camlf0 +uPoTXGiTOmekl9AbmbeGMktg2M7v0Ax/lZ9vh0+Hio5fCHyqW/xavqGRn1V9TrAL +acywlKinh/LTSlDcX3KwFnUey7QYYpqwpzmqm59m2I2mbJYV4+by+PGDYmy7Velh +k6M99bFXi08jsJvllGov34zflVEpYKELKeRcVVi3qPyZ7iVNTA6z00yPhOgpD/0Q +VAKFyPnlw4vP5w8CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0hBBYw +FDASBgdghXQBUwIBBgdghXQBUwIBMBIGA1UdEwEB/wQIMAYBAf8CAQcwHQYDVR0O +BBYEFE0mICKJS9PVpAqhb97iEoHF8TwuMB8GA1UdIwQYMBaAFE0mICKJS9PVpAqh +b97iEoHF8TwuMA0GCSqGSIb3DQEBCwUAA4ICAQAyCrKkG8t9voJXiblqf/P0wS4R +fbgZPnm3qKhyN2abGu2sEzsOv2LwnN+ee6FTSA5BesogpxcbtnjsQJHzQq0Qw1zv +/2BZf82Fo4s9SBwlAjxnffUy6S8w5X2lejjQ82YqZh6NM4OKb3xuqFp1mrjX2lhI +REeoTPpMSQpKwhI3qEAMw8jh0FcNlzKVxzqfl9NX+Ave5XLzo9v/tdhZsnPdTSpx +srpJ9csc1fV5yJmz/MFMdOO0vSk3FQQoHt5FRnDsr7p4DooqzgB53MBfGWcsa0vv +aGgLQ+OswWIJ76bdZWGgr4RVSJFSHMYlkSrQwSIjYVmvRRGFHQEkNI/Ps/8XciAT +woCqISxxOQ7Qj1zB09GOInJGTB2Wrk9xseEFKZZZ9LuedT3PDTcNYtsmjGOpI99n +Bjx8Oto0QuFmtEYE3saWmA9LSHokMnWRn6z3aOkquVVlzl1h0ydw2Df+n7mvoC5W +t6NlUe07qxS/TFED6F+KBZvuim6c779o+sjaC+NCydAXFJy3SuCvkychVSa1ZC+N +8f+mQAWFBVzKBxlcCxMoTFh/wqXvRdpg065lYZ1Tg3TCrvJcwhbtkj6EPnNgiLx2 +9CzP0H1907he0ZESEOnN3col49XtmS++dYFLJPlFRpTJKSFTnCZFqhMX5OfNeOI5 +wSsSnqaeG8XmDtkx2Q== +-----END CERTIFICATE----- + +# Issuer: CN=Swisscom Root EV CA 2 O=Swisscom OU=Digital Certificate Services +# Subject: CN=Swisscom Root EV CA 2 O=Swisscom OU=Digital Certificate Services +# Label: "Swisscom Root EV CA 2" +# Serial: 322973295377129385374608406479535262296 +# MD5 Fingerprint: 7b:30:34:9f:dd:0a:4b:6b:35:ca:31:51:28:5d:ae:ec +# SHA1 Fingerprint: e7:a1:90:29:d3:d5:52:dc:0d:0f:c6:92:d3:ea:88:0d:15:2e:1a:6b +# SHA256 Fingerprint: d9:5f:ea:3c:a4:ee:dc:e7:4c:d7:6e:75:fc:6d:1f:f6:2c:44:1f:0f:a8:bc:77:f0:34:b1:9e:5d:b2:58:01:5d +-----BEGIN CERTIFICATE----- +MIIF4DCCA8igAwIBAgIRAPL6ZOJ0Y9ON/RAdBB92ylgwDQYJKoZIhvcNAQELBQAw +ZzELMAkGA1UEBhMCY2gxETAPBgNVBAoTCFN3aXNzY29tMSUwIwYDVQQLExxEaWdp +dGFsIENlcnRpZmljYXRlIFNlcnZpY2VzMR4wHAYDVQQDExVTd2lzc2NvbSBSb290 +IEVWIENBIDIwHhcNMTEwNjI0MDk0NTA4WhcNMzEwNjI1MDg0NTA4WjBnMQswCQYD +VQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2Vy +dGlmaWNhdGUgU2VydmljZXMxHjAcBgNVBAMTFVN3aXNzY29tIFJvb3QgRVYgQ0Eg +MjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMT3HS9X6lds93BdY7Bx +UglgRCgzo3pOCvrY6myLURYaVa5UJsTMRQdBTxB5f3HSek4/OE6zAMaVylvNwSqD +1ycfMQ4jFrclyxy0uYAyXhqdk/HoPGAsp15XGVhRXrwsVgu42O+LgrQ8uMIkqBPH +oCE2G3pXKSinLr9xJZDzRINpUKTk4RtiGZQJo/PDvO/0vezbE53PnUgJUmfANykR +HvvSEaeFGHR55E+FFOtSN+KxRdjMDUN/rhPSays/p8LiqG12W0OfvrSdsyaGOx9/ +5fLoZigWJdBLlzin5M8J0TbDC77aO0RYjb7xnglrPvMyxyuHxuxenPaHZa0zKcQv +idm5y8kDnftslFGXEBuGCxobP/YCfnvUxVFkKJ3106yDgYjTdLRZncHrYTNaRdHL +OdAGalNgHa/2+2m8atwBz735j9m9W8E6X47aD0upm50qKGsaCnw8qyIL5XctcfaC +NYGu+HuB5ur+rPQam3Rc6I8k9l2dRsQs0h4rIWqDJ2dVSqTjyDKXZpBy2uPUZC5f +46Fq9mDU5zXNysRojddxyNMkM3OxbPlq4SjbX8Y96L5V5jcb7STZDxmPX2MYWFCB +UWVv8p9+agTnNCRxunZLWB4ZvRVgRaoMEkABnRDixzgHcgplwLa7JSnaFp6LNYth +7eVxV4O1PHGf40+/fh6Bn0GXAgMBAAGjgYYwgYMwDgYDVR0PAQH/BAQDAgGGMB0G +A1UdIQQWMBQwEgYHYIV0AVMCAgYHYIV0AVMCAjASBgNVHRMBAf8ECDAGAQH/AgED +MB0GA1UdDgQWBBRF2aWBbj2ITY1x0kbBbkUe88SAnTAfBgNVHSMEGDAWgBRF2aWB +bj2ITY1x0kbBbkUe88SAnTANBgkqhkiG9w0BAQsFAAOCAgEAlDpzBp9SSzBc1P6x +XCX5145v9Ydkn+0UjrgEjihLj6p7jjm02Vj2e6E1CqGdivdj5eu9OYLU43otb98T +PLr+flaYC/NUn81ETm484T4VvwYmneTwkLbUwp4wLh/vx3rEUMfqe9pQy3omywC0 +Wqu1kx+AiYQElY2NfwmTv9SoqORjbdlk5LgpWgi/UOGED1V7XwgiG/W9mR4U9s70 +WBCCswo9GcG/W6uqmdjyMb3lOGbcWAXH7WMaLgqXfIeTK7KK4/HsGOV1timH59yL +Gn602MnTihdsfSlEvoqq9X46Lmgxk7lq2prg2+kupYTNHAq4Sgj5nPFhJpiTt3tm +7JFe3VE/23MPrQRYCd0EApUKPtN236YQHoA96M2kZNEzx5LH4k5E4wnJTsJdhw4S +nr8PyQUQ3nqjsTzyP6WqJ3mtMX0f/fwZacXduT98zca0wjAefm6S139hdlqP65VN +vBFuIXxZN5nQBrz5Bm0yFqXZaajh3DyAHmBR3NdUIR7KYndP+tiPsys6DXhyyWhB +WkdKwqPrGtcKqzwyVcgKEZzfdNbwQBUdyLmPtTbFr/giuMod89a2GQ+fYWVq6nTI +fI/DT11lgh/ZDYnadXL77/FHZxOzyNEZiCcmmpl5fx7kLD977vHeTYuWl8PVP3wb +I+2ksx0WckNLIOFZfsLorSa/ovc= +-----END CERTIFICATE----- + +# Issuer: CN=CA Disig Root R1 O=Disig a.s. +# Subject: CN=CA Disig Root R1 O=Disig a.s. +# Label: "CA Disig Root R1" +# Serial: 14052245610670616104 +# MD5 Fingerprint: be:ec:11:93:9a:f5:69:21:bc:d7:c1:c0:67:89:cc:2a +# SHA1 Fingerprint: 8e:1c:74:f8:a6:20:b9:e5:8a:f4:61:fa:ec:2b:47:56:51:1a:52:c6 +# SHA256 Fingerprint: f9:6f:23:f4:c3:e7:9c:07:7a:46:98:8d:5a:f5:90:06:76:a0:f0:39:cb:64:5d:d1:75:49:b2:16:c8:24:40:ce +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAMMDmu5QkG4oMA0GCSqGSIb3DQEBBQUAMFIxCzAJBgNV +BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu +MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIxMB4XDTEyMDcxOTA5MDY1NloXDTQy +MDcxOTA5MDY1NlowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx +EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjEw +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqw3j33Jijp1pedxiy3QRk +D2P9m5YJgNXoqqXinCaUOuiZc4yd39ffg/N4T0Dhf9Kn0uXKE5Pn7cZ3Xza1lK/o +OI7bm+V8u8yN63Vz4STN5qctGS7Y1oprFOsIYgrY3LMATcMjfF9DCCMyEtztDK3A +fQ+lekLZWnDZv6fXARz2m6uOt0qGeKAeVjGu74IKgEH3G8muqzIm1Cxr7X1r5OJe +IgpFy4QxTaz+29FHuvlglzmxZcfe+5nkCiKxLU3lSCZpq+Kq8/v8kiky6bM+TR8n +oc2OuRf7JT7JbvN32g0S9l3HuzYQ1VTW8+DiR0jm3hTaYVKvJrT1cU/J19IG32PK +/yHoWQbgCNWEFVP3Q+V8xaCJmGtzxmjOZd69fwX3se72V6FglcXM6pM6vpmumwKj +rckWtc7dXpl4fho5frLABaTAgqWjR56M6ly2vGfb5ipN0gTco65F97yLnByn1tUD +3AjLLhbKXEAz6GfDLuemROoRRRw1ZS0eRWEkG4IupZ0zXWX4Qfkuy5Q/H6MMMSRE +7cderVC6xkGbrPAXZcD4XW9boAo0PO7X6oifmPmvTiT6l7Jkdtqr9O3jw2Dv1fkC +yC2fg69naQanMVXVz0tv/wQFx1isXxYb5dKj6zHbHzMVTdDypVP1y+E9Tmgt2BLd +qvLmTZtJ5cUoobqwWsagtQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud +DwEB/wQEAwIBBjAdBgNVHQ4EFgQUiQq0OJMa5qvum5EY+fU8PjXQ04IwDQYJKoZI +hvcNAQEFBQADggIBADKL9p1Kyb4U5YysOMo6CdQbzoaz3evUuii+Eq5FLAR0rBNR +xVgYZk2C2tXck8An4b58n1KeElb21Zyp9HWc+jcSjxyT7Ff+Bw+r1RL3D65hXlaA +SfX8MPWbTx9BLxyE04nH4toCdu0Jz2zBuByDHBb6lM19oMgY0sidbvW9adRtPTXo +HqJPYNcHKfyyo6SdbhWSVhlMCrDpfNIZTUJG7L399ldb3Zh+pE3McgODWF3vkzpB +emOqfDqo9ayk0d2iLbYq/J8BjuIQscTK5GfbVSUZP/3oNn6z4eGBrxEWi1CXYBmC +AMBrTXO40RMHPuq2MU/wQppt4hF05ZSsjYSVPCGvxdpHyN85YmLLW1AL14FABZyb +7bq2ix4Eb5YgOe2kfSnbSM6C3NQCjR0EMVrHS/BsYVLXtFHCgWzN4funodKSds+x +DzdYpPJScWc/DIh4gInByLUfkmO+p3qKViwaqKactV2zY9ATIKHrkWzQjX2v3wvk +F7mGnjixlAxYjOBVqjtjbZqJYLhkKpLGN/R+Q0O3c+gB53+XD9fyexn9GtePyfqF +a3qdnom2piiZk4hA9z7NUaPK6u95RyG1/jLix8NRb76AdPCkwzryT+lf3xkK8jsT +Q6wxpLPn6/wY1gGp8yqPNg7rtLG8t0zJa7+h89n07eLw4+1knj0vllJPgFOL +-----END CERTIFICATE----- + +# Issuer: CN=CA Disig Root R2 O=Disig a.s. +# Subject: CN=CA Disig Root R2 O=Disig a.s. +# Label: "CA Disig Root R2" +# Serial: 10572350602393338211 +# MD5 Fingerprint: 26:01:fb:d8:27:a7:17:9a:45:54:38:1a:43:01:3b:03 +# SHA1 Fingerprint: b5:61:eb:ea:a4:de:e4:25:4b:69:1a:98:a5:57:47:c2:34:c7:d9:71 +# SHA256 Fingerprint: e2:3d:4a:03:6d:7b:70:e9:f5:95:b1:42:20:79:d2:b9:1e:df:bb:1f:b6:51:a0:63:3e:aa:8a:9d:c5:f8:07:03 +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV +BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu +MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy +MDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx +EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe +NcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH +PWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I +x2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe +QTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR +yyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO +QG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912 +H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ +QfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD +i/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs +nLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1 +rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud +DwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI +hvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM +tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf +GopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb +lvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka ++elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal +TFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i +nSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3 +gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr +G5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os +zMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x +L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL +-----END CERTIFICATE----- + +# Issuer: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV +# Subject: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV +# Label: "ACCVRAIZ1" +# Serial: 6828503384748696800 +# MD5 Fingerprint: d0:a0:5a:ee:05:b6:09:94:21:a1:7d:f1:b2:29:82:02 +# SHA1 Fingerprint: 93:05:7a:88:15:c6:4f:ce:88:2f:fa:91:16:52:28:78:bc:53:64:17 +# SHA256 Fingerprint: 9a:6e:c0:12:e1:a7:da:9d:be:34:19:4d:47:8a:d7:c0:db:18:22:fb:07:1d:f1:29:81:49:6e:d1:04:38:41:13 +-----BEGIN CERTIFICATE----- +MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE +AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw +CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ +BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND +VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb +qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY +HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo +G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA +lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr +IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/ +0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH +k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47 +4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO +m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa +cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl +uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI +KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls +ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG +AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 +VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT +VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG +CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA +cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA +QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA +7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA +cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA +QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA +czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu +aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt +aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud +DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF +BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp +D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU +JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m +AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD +vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms +tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH +7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h +I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA +h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF +d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H +pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7 +-----END CERTIFICATE----- + +# Issuer: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA +# Label: "TWCA Global Root CA" +# Serial: 3262 +# MD5 Fingerprint: f9:03:7e:cf:e6:9e:3c:73:7a:2a:90:07:69:ff:2b:96 +# SHA1 Fingerprint: 9c:bb:48:53:f6:a4:f6:d3:52:a4:e8:32:52:55:60:13:f5:ad:af:65 +# SHA256 Fingerprint: 59:76:90:07:f7:68:5d:0f:cd:50:87:2f:9f:95:d5:75:5a:5b:2b:45:7d:81:f3:69:2b:61:0a:98:67:2f:0e:1b +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcx +EjAQBgNVBAoTCVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMT +VFdDQSBHbG9iYWwgUm9vdCBDQTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5 +NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExEDAOBgNVBAsT +B1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3QgQ0EwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2CnJfF +10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz +0ALfUPZVr2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfCh +MBwqoJimFb3u/Rk28OKRQ4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbH +zIh1HrtsBv+baz4X7GGqcXzGHaL3SekVtTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc +46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1WKKD+u4ZqyPpcC1jcxkt2 +yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99sy2sbZCi +laLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYP +oA/pyJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQA +BDzfuBSO6N+pjWxnkjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcE +qYSjMq+u7msXi7Kx/mzhkIyIqJdIzshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm +4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6gcFGn90xHNcgL +1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn +LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WF +H6vPNOw/KP4M8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNo +RI2T9GRwoD2dKAXDOXC4Ynsg/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+ +nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlglPx4mI88k1HtQJAH32RjJMtOcQWh +15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryPA9gK8kxkRr05YuWW +6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3mi4TW +nsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5j +wa19hAM8EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWz +aGHQRiapIVJpLesux+t3zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmy +KwbQBM0= +-----END CERTIFICATE----- + +# Issuer: CN=TeliaSonera Root CA v1 O=TeliaSonera +# Subject: CN=TeliaSonera Root CA v1 O=TeliaSonera +# Label: "TeliaSonera Root CA v1" +# Serial: 199041966741090107964904287217786801558 +# MD5 Fingerprint: 37:41:49:1b:18:56:9a:26:f5:ad:c2:66:fb:40:a5:4c +# SHA1 Fingerprint: 43:13:bb:96:f1:d5:86:9b:c1:4e:6a:92:f6:cf:f6:34:69:87:82:37 +# SHA256 Fingerprint: dd:69:36:fe:21:f8:f0:77:c1:23:a1:a5:21:c1:22:24:f7:22:55:b7:3e:03:a7:26:06:93:e8:a2:4b:0f:a3:89 +-----BEGIN CERTIFICATE----- +MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAw +NzEUMBIGA1UECgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJv +b3QgQ0EgdjEwHhcNMDcxMDE4MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYD +VQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwWVGVsaWFTb25lcmEgUm9vdCBDQSB2 +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+6yfwIaPzaSZVfp3F +VRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA3GV1 +7CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+X +Z75Ljo1kB1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+ +/jXh7VB7qTCNGdMJjmhnXb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs +81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxHoLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkm +dtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3F0fUTPHSiXk+TT2YqGHe +Oh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJoWjiUIMu +sDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4 +pgd7gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fs +slESl1MpWtTwEhDcTwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQ +arMCpgKIv7NHfirZ1fpoeDVNAgMBAAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYD +VR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qWDNXr+nuqF+gTEjANBgkqhkiG +9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNmzqjMDfz1mgbl +dxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx +0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1Tj +TQpgcmLNkQfWpb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBed +Y2gea+zDTYa4EzAvXUYNR0PVG6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7 +Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpcc41teyWRyu5FrgZLAMzTsVlQ2jqI +OylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOTJsjrDNYmiLbAJM+7 +vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2qReW +t88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcn +HL/EVlP6Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVx +SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= +-----END CERTIFICATE----- + +# Issuer: CN=E-Tugra Certification Authority O=E-Tuğra EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. OU=E-Tugra Sertifikasyon Merkezi +# Subject: CN=E-Tugra Certification Authority O=E-Tuğra EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. OU=E-Tugra Sertifikasyon Merkezi +# Label: "E-Tugra Certification Authority" +# Serial: 7667447206703254355 +# MD5 Fingerprint: b8:a1:03:63:b0:bd:21:71:70:8a:6f:13:3a:bb:79:49 +# SHA1 Fingerprint: 51:c6:e7:08:49:06:6e:f3:92:d4:5c:a0:0d:6d:a3:62:8f:c3:52:39 +# SHA256 Fingerprint: b0:bf:d5:2b:b0:d7:d9:bd:92:bf:5d:4d:c1:3d:a2:55:c0:2c:54:2f:37:83:65:ea:89:39:11:f5:5e:55:f2:3c +-----BEGIN CERTIFICATE----- +MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNV +BAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBC +aWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNV +BAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQDDB9FLVR1 +Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMwNTEyMDk0OFoXDTIz +MDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+ +BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhp +em1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN +ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4vU/kwVRHoViVF56C/UY +B4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vdhQd2h8y/L5VMzH2nPbxH +D5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5KCKpbknSF +Q9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEo +q1+gElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3D +k14opz8n8Y4e0ypQBaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcH +fC425lAcP9tDJMW/hkd5s3kc91r0E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsut +dEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gzrt48Ue7LE3wBf4QOXVGUnhMM +ti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAqjqFGOjGY5RH8 +zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn +rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUX +U8u3Zg5mTPj5dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6 +Jyr+zE7S6E5UMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5 +XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAF +Nzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAKkEh47U6YA5n+KGCR +HTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jOXKqY +GwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c +77NCR807VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3 ++GbHeJAAFS6LrVE1Uweoa2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WK +vJUawSg5TB9D0pH0clmKuVb8P7Sd2nCcdlqMQ1DujjByTd//SffGqWfZbawCEeI6 +FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEVKV0jq9BgoRJP3vQXzTLl +yb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gTDx4JnW2P +AJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpD +y4Q08ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8d +NL/+I5c30jn6PQ0GC7TbO6Orb1wdtn7os4I07QZcJA== +-----END CERTIFICATE----- + +# Issuer: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Subject: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Label: "T-TeleSec GlobalRoot Class 2" +# Serial: 1 +# MD5 Fingerprint: 2b:9b:9e:e4:7b:6c:1f:00:72:1a:cc:c1:77:79:df:6a +# SHA1 Fingerprint: 59:0d:2d:7d:88:4f:40:2e:61:7e:a5:62:32:17:65:cf:17:d8:94:e9 +# SHA256 Fingerprint: 91:e2:f5:78:8d:58:10:eb:a7:ba:58:73:7d:e1:54:8a:8e:ca:cd:01:45:98:bc:0b:14:3e:04:1b:17:05:25:52 +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd +AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC +FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi +1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq +jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ +wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ +WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy +NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC +uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw +IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 +g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP +BSeOE6Fuwg== +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot 2011 O=Atos +# Subject: CN=Atos TrustedRoot 2011 O=Atos +# Label: "Atos TrustedRoot 2011" +# Serial: 6643877497813316402 +# MD5 Fingerprint: ae:b9:c4:32:4b:ac:7f:5d:66:cc:77:94:bb:2a:77:56 +# SHA1 Fingerprint: 2b:b1:f5:3e:55:0c:1d:c5:f1:d4:e6:b7:6a:46:4b:55:06:02:ac:21 +# SHA256 Fingerprint: f3:56:be:a2:44:b7:a9:1e:b3:5d:53:ca:9a:d7:86:4a:ce:01:8e:2d:35:d5:f8:f9:6d:df:68:a6:f4:1a:a4:74 +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UE +AwwVQXRvcyBUcnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQG +EwJERTAeFw0xMTA3MDcxNDU4MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMM +FUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMC +REUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVhTuXbyo7LjvPpvMp +Nb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr54rM +VD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+ +SZFhyBH+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ +4J7sVaE3IqKHBAUsR320HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0L +cp2AMBYHlT8oDv3FdU9T1nSatCQujgKRz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQi +eowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7Rl+lwrrw7GWzbITAPBgNV +HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZbNshMBgG +A1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3 +DQEBCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8j +vZfza1zv7v1Apt+hk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kP +DpFrdRbhIfzYJsdHt6bPWHJxfrrhTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pc +maHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D +lmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv +KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 1 G3" +# Serial: 687049649626669250736271037606554624078720034195 +# MD5 Fingerprint: a4:bc:5b:3f:fe:37:9a:fa:64:f0:e2:fa:05:3d:0b:ab +# SHA1 Fingerprint: 1b:8e:ea:57:96:29:1a:c9:39:ea:b8:0a:81:1a:73:73:c0:93:79:67 +# SHA256 Fingerprint: 8a:86:6f:d1:b2:76:b5:7e:57:8e:92:1c:65:82:8a:2b:ed:58:e9:f2:f2:88:05:41:34:b7:f1:f4:bf:c9:cc:74 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00 +MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakEPBtV +wedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWe +rNrwU8lmPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF341 +68Xfuw6cwI2H44g4hWf6Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh +4Pw5qlPafX7PGglTvF0FBM+hSo+LdoINofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXp +UhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/lg6AnhF4EwfWQvTA9xO+o +abw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV7qJZjqlc +3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/G +KubX9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSt +hfbZxbGL0eUQMk1fiyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KO +Tk0k+17kBL5yG6YnLUlamXrXXAkgt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOt +zCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZIhvcNAQELBQAD +ggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC +MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2 +cDMT/uFPpiN3GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUN +qXsCHKnQO18LwIE6PWThv6ctTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5 +YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP+V04ikkwj+3x6xn0dxoxGE1nVGwv +b2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh3jRJjehZrJ3ydlo2 +8hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fawx/k +NSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNj +ZgKAvQU6O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhp +q1467HxpvMc7hU6eFbm0FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFt +nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 2 G3" +# Serial: 390156079458959257446133169266079962026824725800 +# MD5 Fingerprint: af:0c:86:6e:bf:40:2d:7f:0b:3e:12:50:ba:12:3d:06 +# SHA1 Fingerprint: 09:3c:61:f3:8b:8b:dc:7d:55:df:75:38:02:05:00:e1:25:f5:c8:36 +# SHA256 Fingerprint: 8f:e4:fb:0a:f9:3a:4d:0d:67:db:0b:eb:b2:3e:37:c7:1b:f3:25:dc:bc:dd:24:0e:a0:4d:af:58:b4:7e:18:40 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00 +MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFhZiFf +qq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMW +n4rjyduYNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ym +c5GQYaYDFCDy54ejiK2toIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+ +O7q414AB+6XrW7PFXmAqMaCvN+ggOp+oMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1 +o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+lV0POKa2Mq1W/xPtbAd0j +IaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZoL1NesNKq +IcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz +8eQQsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43eh +vNURG3YBZwjgQQvD6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l +7ZizlWNof/k19N+IxWA1ksB8aRxhlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALG +cC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZIhvcNAQELBQAD +ggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 +AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RC +roijQ1h5fq7KpVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0Ga +W/ZZGYjeVYg3UQt4XAoeo0L9x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4n +lv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgzdWqTHBLmYF5vHX/JHyPLhGGfHoJE ++V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6XU/IyAgkwo1jwDQHV +csaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+NwmNtd +dbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNg +KCLjsZWDzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeM +HVOyToV7BjjHLPj4sHKNJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4 +WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 3 G3" +# Serial: 268090761170461462463995952157327242137089239581 +# MD5 Fingerprint: df:7d:b9:ad:54:6f:68:a1:df:89:57:03:97:43:b0:d7 +# SHA1 Fingerprint: 48:12:bd:92:3c:a8:c4:39:06:e7:30:6d:27:96:e6:a4:cf:22:2e:7d +# SHA256 Fingerprint: 88:ef:81:de:20:2e:b0:18:45:2e:43:f8:64:72:5c:ea:5f:bd:1f:c2:d9:d2:05:73:07:09:c5:d8:b8:69:0f:46 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00 +MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286IxSR +/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNu +FoM7pmRLMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXR +U7Ox7sWTaYI+FrUoRqHe6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+c +ra1AdHkrAj80//ogaX3T7mH1urPnMNA3I4ZyYUUpSFlob3emLoG+B01vr87ERROR +FHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3UVDmrJqMz6nWB2i3ND0/k +A9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f75li59wzw +eyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634Ryl +sSqiMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBp +VzgeAVuNVejH38DMdyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0Q +A4XN8f+MFrXBsj6IbGB/kE+V9/YtrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ +ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZIhvcNAQELBQAD +ggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px +KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnI +FUBhynLWcKzSt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5Wvv +oxXqA/4Ti2Tk08HS6IT7SdEQTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFg +u/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9DuDcpmvJRPpq3t/O5jrFc/ZSXPsoaP +0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGibIh6BJpsQBJFxwAYf +3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmDhPbl +8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+ +DhcI00iX0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HN +PlopNLk9hM6xZdRZkZFWdSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ +ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0 +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root G2" +# Serial: 15385348160840213938643033620894905419 +# MD5 Fingerprint: 92:38:b9:f8:63:24:82:65:2c:57:33:e6:fe:81:8f:9d +# SHA1 Fingerprint: a1:4b:48:d9:43:ee:0a:0e:40:90:4f:3c:e0:a4:c0:91:93:51:5d:3f +# SHA256 Fingerprint: 7d:05:eb:b6:82:33:9f:8c:94:51:ee:09:4e:eb:fe:fa:79:53:a1:14:ed:b2:f4:49:49:45:2f:ab:7d:2f:c1:85 +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSA +n61UQbVH35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4Htecc +biJVMWWXvdMX0h5i89vqbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9Hp +EgjAALAcKxHad3A2m67OeYfcgnDmCXRwVWmvo2ifv922ebPynXApVfSr/5Vh88lA +bx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OPYLfykqGxvYmJHzDNw6Yu +YjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+RnlTGNAgMB +AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQW +BBTOw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPI +QW5pJ6d1Ee88hjZv0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I +0jJmwYrA8y8678Dj1JGG0VDjA9tzd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4Gni +lmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAWhsI6yLETcDbYz+70CjTVW0z9 +B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0MjomZmWzwPDCv +ON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo +IhNzbM8m9Yop5w== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root G3" +# Serial: 15459312981008553731928384953135426796 +# MD5 Fingerprint: 7c:7f:65:31:0c:81:df:8d:ba:3e:99:e2:5c:ad:6e:fb +# SHA1 Fingerprint: f5:17:a2:4f:9a:48:c6:c9:f8:a2:00:26:9f:dc:0f:48:2c:ab:30:89 +# SHA256 Fingerprint: 7e:37:cb:8b:4c:47:09:0c:ab:36:55:1b:a6:f4:5d:b8:40:68:0f:ba:16:6a:95:2d:b1:00:71:7f:43:05:3f:c2 +-----BEGIN CERTIFICATE----- +MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3Qg +RzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJf +Zn4f5dwbRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17Q +RSAPWXYQ1qAk8C3eNvJsKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgFUaFNN6KDec6NHSrkhDAKBggqhkjOPQQD +AwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5FyYZ5eEJJZVrmDxxDnOOlY +JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv +6pZjamVFkpUBtA== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G2" +# Serial: 4293743540046975378534879503202253541 +# MD5 Fingerprint: e4:a6:8a:c8:54:ac:52:42:46:0a:fd:72:48:1b:2a:44 +# SHA1 Fingerprint: df:3c:24:f9:bf:d6:66:76:1b:26:80:73:fe:06:d1:cc:8d:4f:82:a4 +# SHA256 Fingerprint: cb:3c:cb:b7:60:31:e5:e0:13:8f:8d:d3:9a:23:f9:de:47:ff:c3:5e:43:c1:14:4c:ea:27:d4:6a:5a:b1:cb:5f +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH +MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI +2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx +1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ +q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz +tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ +vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV +5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY +1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 +NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG +Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 +8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe +pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G3" +# Serial: 7089244469030293291760083333884364146 +# MD5 Fingerprint: f5:5d:a4:50:a5:fb:28:7e:1e:0f:0d:cc:96:57:56:ca +# SHA1 Fingerprint: 7e:04:de:89:6a:3e:66:6d:00:e6:87:d3:3f:fa:d9:3b:e8:3d:34:9e +# SHA256 Fingerprint: 31:ad:66:48:f8:10:41:38:c7:38:f3:9e:a4:32:01:33:39:3e:3a:18:cc:02:29:6e:f9:7c:2a:c9:ef:67:31:d0 +-----BEGIN CERTIFICATE----- +MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe +Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw +EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x +IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF +K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG +fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO +Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd +BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx +AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/ +oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8 +sycX +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Trusted Root G4" +# Serial: 7451500558977370777930084869016614236 +# MD5 Fingerprint: 78:f2:fc:aa:60:1f:2f:b4:eb:c9:37:ba:53:2e:75:49 +# SHA1 Fingerprint: dd:fb:16:cd:49:31:c9:73:a2:03:7d:3f:c8:3a:4d:7d:77:5d:05:e4 +# SHA256 Fingerprint: 55:2f:7b:dc:f1:a7:af:9e:6c:e6:72:01:7f:4f:12:ab:f7:72:40:c7:8e:76:1a:c2:03:d1:d9:d2:0a:c8:99:88 +-----BEGIN CERTIFICATE----- +MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg +RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y +ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If +xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV +ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO +DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ +jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/ +CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi +EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM +fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY +uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK +chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t +9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD +ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2 +SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd ++SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc +fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa +sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N +cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N +0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie +4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI +r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1 +/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm +gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+ +-----END CERTIFICATE----- + +# Issuer: CN=Certification Authority of WoSign O=WoSign CA Limited +# Subject: CN=Certification Authority of WoSign O=WoSign CA Limited +# Label: "WoSign" +# Serial: 125491772294754854453622855443212256657 +# MD5 Fingerprint: a1:f2:f9:b5:d2:c8:7a:74:b8:f3:05:f1:d7:e1:84:8d +# SHA1 Fingerprint: b9:42:94:bf:91:ea:8f:b6:4b:e6:10:97:c7:fb:00:13:59:b6:76:cb +# SHA256 Fingerprint: 4b:22:d5:a6:ae:c9:9f:3c:db:79:aa:5e:c0:68:38:47:9c:d5:ec:ba:71:64:f7:f2:2d:c1:d6:5f:63:d8:57:08 +-----BEGIN CERTIFICATE----- +MIIFdjCCA16gAwIBAgIQXmjWEXGUY1BWAGjzPsnFkTANBgkqhkiG9w0BAQUFADBV +MQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxKjAoBgNV +BAMTIUNlcnRpZmljYXRpb24gQXV0aG9yaXR5IG9mIFdvU2lnbjAeFw0wOTA4MDgw +MTAwMDFaFw0zOTA4MDgwMTAwMDFaMFUxCzAJBgNVBAYTAkNOMRowGAYDVQQKExFX +b1NpZ24gQ0EgTGltaXRlZDEqMCgGA1UEAxMhQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgb2YgV29TaWduMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvcqN +rLiRFVaXe2tcesLea9mhsMMQI/qnobLMMfo+2aYpbxY94Gv4uEBf2zmoAHqLoE1U +fcIiePyOCbiohdfMlZdLdNiefvAA5A6JrkkoRBoQmTIPJYhTpA2zDxIIFgsDcScc +f+Hb0v1naMQFXQoOXXDX2JegvFNBmpGN9J42Znp+VsGQX+axaCA2pIwkLCxHC1l2 +ZjC1vt7tj/id07sBMOby8w7gLJKA84X5KIq0VC6a7fd2/BVoFutKbOsuEo/Uz/4M +x1wdC34FMr5esAkqQtXJTpCzWQ27en7N1QhatH/YHGkR+ScPewavVIMYe+HdVHpR +aG53/Ma/UkpmRqGyZxq7o093oL5d//xWC0Nyd5DKnvnyOfUNqfTq1+ezEC8wQjch +zDBwyYaYD8xYTYO7feUapTeNtqwylwA6Y3EkHp43xP901DfA4v6IRmAR3Qg/UDar +uHqklWJqbrDKaiFaafPz+x1wOZXzp26mgYmhiMU7ccqjUu6Du/2gd/Tkb+dC221K +mYo0SLwX3OSACCK28jHAPwQ+658geda4BmRkAjHXqc1S+4RFaQkAKtxVi8QGRkvA +Sh0JWzko/amrzgD5LkhLJuYwTKVYyrREgk/nkR4zw7CT/xH8gdLKH3Ep3XZPkiWv +HYG3Dy+MwwbMLyejSuQOmbp8HkUff6oZRZb9/D0CAwEAAaNCMEAwDgYDVR0PAQH/ +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOFmzw7R8bNLtwYgFP6H +EtX2/vs+MA0GCSqGSIb3DQEBBQUAA4ICAQCoy3JAsnbBfnv8rWTjMnvMPLZdRtP1 +LOJwXcgu2AZ9mNELIaCJWSQBnfmvCX0KI4I01fx8cpm5o9dU9OpScA7F9dY74ToJ +MuYhOZO9sxXqT2r09Ys/L3yNWC7F4TmgPsc9SnOeQHrAK2GpZ8nzJLmzbVUsWh2e +JXLOC62qx1ViC777Y7NhRCOjy+EaDveaBk3e1CNOIZZbOVtXHS9dCF4Jef98l7VN +g64N1uajeeAz0JmWAjCnPv/So0M/BVoG6kQC2nz4SNAzqfkHx5Xh9T71XXG68pWp +dIhhWeO/yloTunK0jF02h+mmxTwTv97QRCbut+wucPrXnbes5cVAWubXbHssw1ab +R80LzvobtCHXt2a49CUwi1wNuepnsvRtrtWhnk/Yn+knArAdBtaP4/tIEp9/EaEQ +PkxROpaw0RPxx9gmrjrKkcRpnd8BKWRRb2jaFOwIQZeQjdCygPLPwj2/kWjFgGce +xGATVdVhmVd8upUPYUk6ynW8yQqTP2cOEvIo4jEbwFcW3wh8GcF+Dx+FHgo2fFt+ +J7x6v+Db9NpSvd4MVHAxkUOVyLzwPt0JfjBkUO1/AaQzZ01oT74V77D2AhGiGxMl +OtzCWfHjXEa7ZywCRuoeSKbmW9m1vFGikpbbqsY3Iqb+zCB0oy2pLmvLwIIRIbWT +ee5Ehr7XHuQe+w== +-----END CERTIFICATE----- + +# Issuer: CN=CA 沃通根证书 O=WoSign CA Limited +# Subject: CN=CA 沃通根证书 O=WoSign CA Limited +# Label: "WoSign China" +# Serial: 106921963437422998931660691310149453965 +# MD5 Fingerprint: 78:83:5b:52:16:76:c4:24:3b:83:78:e8:ac:da:9a:93 +# SHA1 Fingerprint: 16:32:47:8d:89:f9:21:3a:92:00:85:63:f5:a4:a7:d3:12:40:8a:d6 +# SHA256 Fingerprint: d6:f0:34:bd:94:aa:23:3f:02:97:ec:a4:24:5b:28:39:73:e4:47:aa:59:0f:31:0c:77:f4:8f:df:83:11:22:54 +-----BEGIN CERTIFICATE----- +MIIFWDCCA0CgAwIBAgIQUHBrzdgT/BtOOzNy0hFIjTANBgkqhkiG9w0BAQsFADBG +MQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxGzAZBgNV +BAMMEkNBIOayg+mAmuagueivgeS5pjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgw +MTAwMDFaMEYxCzAJBgNVBAYTAkNOMRowGAYDVQQKExFXb1NpZ24gQ0EgTGltaXRl +ZDEbMBkGA1UEAwwSQ0Eg5rKD6YCa5qC56K+B5LmmMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA0EkhHiX8h8EqwqzbdoYGTufQdDTc7WU1/FDWiD+k8H/r +D195L4mx/bxjWDeTmzj4t1up+thxx7S8gJeNbEvxUNUqKaqoGXqW5pWOdO2XCld1 +9AXbbQs5uQF/qvbW2mzmBeCkTVL829B0txGMe41P/4eDrv8FAxNXUDf+jJZSEExf +v5RxadmWPgxDT74wwJ85dE8GRV2j1lY5aAfMh09Qd5Nx2UQIsYo06Yms25tO4dnk +UkWMLhQfkWsZHWgpLFbE4h4TV2TwYeO5Ed+w4VegG63XX9Gv2ystP9Bojg/qnw+L +NVgbExz03jWhCl3W6t8Sb8D7aQdGctyB9gQjF+BNdeFyb7Ao65vh4YOhn0pdr8yb ++gIgthhid5E7o9Vlrdx8kHccREGkSovrlXLp9glk3Kgtn3R46MGiCWOc76DbT52V +qyBPt7D3h1ymoOQ3OMdc4zUPLK2jgKLsLl3Az+2LBcLmc272idX10kaO6m1jGx6K +yX2m+Jzr5dVjhU1zZmkR/sgO9MHHZklTfuQZa/HpelmjbX7FF+Ynxu8b22/8DU0G +AbQOXDBGVWCvOGU6yke6rCzMRh+yRpY/8+0mBe53oWprfi1tWFxK1I5nuPHa1UaK +J/kR8slC/k7e3x9cxKSGhxYzoacXGKUN5AXlK8IrC6KVkLn9YDxOiT7nnO4fuwEC +AwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O +BBYEFOBNv9ybQV0T6GTwp+kVpOGBwboxMA0GCSqGSIb3DQEBCwUAA4ICAQBqinA4 +WbbaixjIvirTthnVZil6Xc1bL3McJk6jfW+rtylNpumlEYOnOXOvEESS5iVdT2H6 +yAa+Tkvv/vMx/sZ8cApBWNromUuWyXi8mHwCKe0JgOYKOoICKuLJL8hWGSbueBwj +/feTZU7n85iYr83d2Z5AiDEoOqsuC7CsDCT6eiaY8xJhEPRdF/d+4niXVOKM6Cm6 +jBAyvd0zaziGfjk9DgNyp115j0WKWa5bIW4xRtVZjc8VX90xJc/bYNaBRHIpAlf2 +ltTW/+op2znFuCyKGo3Oy+dCMYYFaA6eFN0AkLppRQjbbpCBhqcqBT/mhDn4t/lX +X0ykeVoQDF7Va/81XwVRHmyjdanPUIPTfPRm94KNPQx96N97qA4bLJyuQHCH2u2n +FoJavjVsIE4iYdm8UXrNemHcSxH5/mc0zy4EZmFcV5cjjPOGG0jfKq+nwf/Yjj4D +u9gqsPoUJbJRa4ZDhS4HIxaAjUz7tGM7zMN07RujHv41D198HRaG9Q7DlfEvr10l +O1Hm13ZBONFLAzkopR6RctR9q5czxNM+4Gm2KHmgCY0c0f9BckgG/Jou5yD5m6Le +ie2uPAmvylezkolwQOQvT8Jwg0DXJCxr5wkf09XHwQj02w47HAcLQxGEIYbpgNR1 +2KvxAmLBsX5VYc8T1yaw15zLKYs4SgsOkI26oQ== +-----END CERTIFICATE----- + +# Issuer: CN=COMODO RSA Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO RSA Certification Authority O=COMODO CA Limited +# Label: "COMODO RSA Certification Authority" +# Serial: 101909084537582093308941363524873193117 +# MD5 Fingerprint: 1b:31:b0:71:40:36:cc:14:36:91:ad:c4:3e:fd:ec:18 +# SHA1 Fingerprint: af:e5:d2:44:a8:d1:19:42:30:ff:47:9f:e2:f8:97:bb:cd:7a:8c:b4 +# SHA256 Fingerprint: 52:f0:e1:c4:e5:8e:c6:29:29:1b:60:31:7f:07:46:71:b8:5d:7e:a8:0d:5b:07:27:34:63:53:4b:32:b4:02:34 +-----BEGIN CERTIFICATE----- +MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB +hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV +BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5 +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT +EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR +6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X +pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC +9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV +/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf +Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z ++pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w +qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah +SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC +u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf +Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq +crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E +FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB +/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl +wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM +4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV +2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna +FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ +CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK +boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke +jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL +S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb +QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl +0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB +NVOFBkpdn627G190 +-----END CERTIFICATE----- + +# Issuer: CN=USERTrust RSA Certification Authority O=The USERTRUST Network +# Subject: CN=USERTrust RSA Certification Authority O=The USERTRUST Network +# Label: "USERTrust RSA Certification Authority" +# Serial: 2645093764781058787591871645665788717 +# MD5 Fingerprint: 1b:fe:69:d1:91:b7:19:33:a3:72:a8:0f:e1:55:e5:b5 +# SHA1 Fingerprint: 2b:8f:1b:57:33:0d:bb:a2:d0:7a:6c:51:f7:0e:e9:0d:da:b9:ad:8e +# SHA256 Fingerprint: e7:93:c9:b0:2f:d8:aa:13:e2:1c:31:22:8a:cc:b0:81:19:64:3b:74:9c:89:89:64:b1:74:6d:46:c3:d4:cb:d2 +-----BEGIN CERTIFICATE----- +MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB +iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl +cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV +BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw +MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV +BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B +3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY +tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/ +Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2 +VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT +79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6 +c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT +Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l +c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee +UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE +Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd +BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF +Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO +VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3 +ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs +8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR +iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze +Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ +XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/ +qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB +VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB +L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG +jjxDah2nGN59PRbxYvnKkKj9 +-----END CERTIFICATE----- + +# Issuer: CN=USERTrust ECC Certification Authority O=The USERTRUST Network +# Subject: CN=USERTrust ECC Certification Authority O=The USERTRUST Network +# Label: "USERTrust ECC Certification Authority" +# Serial: 123013823720199481456569720443997572134 +# MD5 Fingerprint: fa:68:bc:d9:b5:7f:ad:fd:c9:1d:06:83:28:cc:24:c1 +# SHA1 Fingerprint: d1:cb:ca:5d:b2:d5:2a:7f:69:3b:67:4d:e5:f0:5a:1d:0c:95:7d:f0 +# SHA256 Fingerprint: 4f:f4:60:d5:4b:9c:86:da:bf:bc:fc:57:12:e0:40:0d:2b:ed:3f:bc:4d:4f:bd:aa:86:e0:6a:dc:d2:a9:ad:7a +-----BEGIN CERTIFICATE----- +MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl +eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT +JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMjAx +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgT +Ck5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUg +VVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqflo +I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng +o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0G +A1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBBHU6+4WMB +zzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbW +RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 +# Label: "GlobalSign ECC Root CA - R4" +# Serial: 14367148294922964480859022125800977897474 +# MD5 Fingerprint: 20:f0:27:68:d1:7e:a0:9d:0e:e6:2a:ca:df:5c:89:8e +# SHA1 Fingerprint: 69:69:56:2e:40:80:f4:24:a1:e7:19:9f:14:ba:f3:ee:58:ab:6a:bb +# SHA256 Fingerprint: be:c9:49:11:c2:95:56:76:db:6c:0a:55:09:86:d7:6e:3b:a0:05:66:7c:44:2c:97:62:b4:fb:b7:73:de:22:8c +-----BEGIN CERTIFICATE----- +MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEk +MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpH +bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX +DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD +QSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprlOQcJ +FspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61F +uOJAf/sKbvu+M8k8o4TVMAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGX +kPoUVy0D7O48027KqGx2vKLeuwIgJ6iFJzWbVsaj8kfSt24bAgAXqmemFZHe+pTs +ewv4n4Q= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 +# Label: "GlobalSign ECC Root CA - R5" +# Serial: 32785792099990507226680698011560947931244 +# MD5 Fingerprint: 9f:ad:3b:1c:02:1e:8a:ba:17:74:38:81:0c:a2:bc:08 +# SHA1 Fingerprint: 1f:24:c6:30:cd:a4:18:ef:20:69:ff:ad:4f:dd:5f:46:3a:1b:69:aa +# SHA256 Fingerprint: 17:9f:bc:14:8a:3d:d0:0f:d2:4e:a1:34:58:cc:43:bf:a7:f5:9c:81:82:d7:83:a5:13:f6:eb:ec:10:0c:89:24 +-----BEGIN CERTIFICATE----- +MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEk +MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpH +bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX +DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD +QSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6SFkc +8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8ke +hOvRnkmSh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYI +KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg +515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7yFz9SO8NdCKoCOJuxUnO +xwy8p2Fp8fc74SrL+SvzZpA3 +-----END CERTIFICATE----- + +# Issuer: CN=Staat der Nederlanden Root CA - G3 O=Staat der Nederlanden +# Subject: CN=Staat der Nederlanden Root CA - G3 O=Staat der Nederlanden +# Label: "Staat der Nederlanden Root CA - G3" +# Serial: 10003001 +# MD5 Fingerprint: 0b:46:67:07:db:10:2f:19:8c:35:50:60:d1:0b:f4:37 +# SHA1 Fingerprint: d8:eb:6b:41:51:92:59:e0:f3:e7:85:00:c0:3d:b6:88:97:c9:ee:fc +# SHA256 Fingerprint: 3c:4f:b0:b9:5a:b8:b3:00:32:f4:32:b8:6f:53:5f:e1:72:c1:85:d0:fd:39:86:58:37:cf:36:18:7f:a6:f4:28 +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJO +TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFh +dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloX +DTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMCTkwxHjAcBgNVBAoMFVN0YWF0IGRl +ciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5lZGVybGFuZGVuIFJv +b3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4yolQP +cPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WW +IkYFsO2tx1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqX +xz8ecAgwoNzFs21v0IJyEavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFy +KJLZWyNtZrVtB0LrpjPOktvA9mxjeM3KTj215VKb8b475lRgsGYeCasH/lSJEULR +9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUurmkVLoR9BvUhTFXFkC4az +5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU51nus6+N8 +6U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7 +Ngzp07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHP +bMk7ccHViLVlvMDoFxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXt +BznaqB16nzaeErAMZRKQFWDZJkBE41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTt +XUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMBAAGjQjBAMA8GA1UdEwEB/wQF +MAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleuyjWcLhL75Lpd +INyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD +U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwp +LiniyMMB8jPqKqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8 +Ipf3YF3qKS9Ysr1YvY2WTxB1v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixp +gZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA8KCWAg8zxXHzniN9lLf9OtMJgwYh +/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b8KKaa8MFSu1BYBQw +0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0rmj1A +fsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq +4BZ+Extq1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR +1VmiiXTTn74eS9fGbbeIJG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/ +QFH1T/U67cjF68IeHRaVesd+QnGTbksVtzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM +94B7IWcnMFk= +-----END CERTIFICATE----- + +# Issuer: CN=Staat der Nederlanden EV Root CA O=Staat der Nederlanden +# Subject: CN=Staat der Nederlanden EV Root CA O=Staat der Nederlanden +# Label: "Staat der Nederlanden EV Root CA" +# Serial: 10000013 +# MD5 Fingerprint: fc:06:af:7b:e8:1a:f1:9a:b4:e8:d2:70:1f:c0:f5:ba +# SHA1 Fingerprint: 76:e2:7e:c1:4f:db:82:c1:c0:a6:75:b5:05:be:3d:29:b4:ed:db:bb +# SHA256 Fingerprint: 4d:24:91:41:4c:fe:95:67:46:ec:4c:ef:a6:cf:6f:72:e2:8a:13:29:43:2f:9d:8a:90:7a:c4:cb:5d:ad:c1:5a +-----BEGIN CERTIFICATE----- +MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJO +TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFh +dCBkZXIgTmVkZXJsYW5kZW4gRVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0y +MjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5MMR4wHAYDVQQKDBVTdGFhdCBkZXIg +TmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRlcmxhbmRlbiBFViBS +b290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkkSzrS +M4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nC +UiY4iKTWO0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3d +Z//BYY1jTw+bbRcwJu+r0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46p +rfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13l +pJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gVXJrm0w912fxBmJc+qiXb +j5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr08C+eKxC +KFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS +/ZbV0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0X +cgOPvZuM5l5Tnrmd74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH +1vI4gnPah1vlPNOePqc7nvQDs/nxfRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrP +px9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwaivsnuL8wbqg7 +MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI +eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u +2dfOWBfoqSmuc0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHS +v4ilf0X8rLiltTMMgsT7B/Zq5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTC +wPTxGfARKbalGAKb12NMcIxHowNDXLldRqANb/9Zjr7dn3LDWyvfjFvO5QxGbJKy +CqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tNf1zuacpzEPuKqf2e +vTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi5Dp6 +Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIa +Gl6I6lD4WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeL +eG9QgkRQP2YGiqtDhFZKDyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8 +FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGyeUN51q1veieQA6TqJIc/2b3Z6fJfUEkc +7uzXLg== +-----END CERTIFICATE----- + +# Issuer: CN=IdenTrust Commercial Root CA 1 O=IdenTrust +# Subject: CN=IdenTrust Commercial Root CA 1 O=IdenTrust +# Label: "IdenTrust Commercial Root CA 1" +# Serial: 13298821034946342390520003877796839426 +# MD5 Fingerprint: b3:3e:77:73:75:ee:a0:d3:e3:7e:49:63:49:59:bb:c7 +# SHA1 Fingerprint: df:71:7e:aa:4a:d9:4e:c9:55:84:99:60:2d:48:de:5f:bc:f0:3a:25 +# SHA256 Fingerprint: 5d:56:49:9b:e4:d2:e0:8b:cf:ca:d0:8a:3e:38:72:3d:50:50:3b:de:70:69:48:e4:2f:55:60:30:19:e5:28:ae +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBK +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVu +VHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQw +MTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScw +JQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ldhNlT +3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU ++ehcCuz/mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gp +S0l4PJNgiCL8mdo2yMKi1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1 +bVoE/c40yiTcdCMbXTMTEl3EASX2MN0CXZ/g1Ue9tOsbobtJSdifWwLziuQkkORi +T0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl3ZBWzvurpWCdxJ35UrCL +vYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzyNeVJSQjK +Vsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZK +dHzVWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHT +c+XvvqDtMwt0viAgxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hv +l7yTmvmcEpB4eoCHFddydJxVdHixuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5N +iGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZIhvcNAQELBQAD +ggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH +6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwt +LRvM7Kqas6pgghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93 +nAbowacYXVKV7cndJZ5t+qntozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3 ++wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmVYjzlVYA211QC//G5Xc7UI2/YRYRK +W2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUXfeu+h1sXIFRRk0pT +AwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/rokTLq +l1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG +4iZZRHUe2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZ +mUlO+KWA2yUPHGNiiskzZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A +7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H +-----END CERTIFICATE----- + +# Issuer: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust +# Subject: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust +# Label: "IdenTrust Public Sector Root CA 1" +# Serial: 13298821034946342390521976156843933698 +# MD5 Fingerprint: 37:06:a5:b0:fc:89:9d:ba:f4:6b:8c:1a:64:cd:d5:ba +# SHA1 Fingerprint: ba:29:41:60:77:98:3f:f4:f3:ef:f2:31:05:3b:2e:ea:6d:4d:45:fd +# SHA256 Fingerprint: 30:d0:89:5a:9a:44:8a:26:20:91:63:55:22:d1:f5:20:10:b5:86:7a:ca:e1:2c:78:ef:95:8f:d4:f4:38:9f:2f +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBN +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVu +VHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcN +MzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0 +MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTyP4o7 +ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGy +RBb06tD6Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlS +bdsHyo+1W/CD80/HLaXIrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF +/YTLNiCBWS2ab21ISGHKTN9T0a9SvESfqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R +3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoSmJxZZoY+rfGwyj4GD3vw +EUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFnol57plzy +9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9V +GxyhLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ +2fjXctscvG29ZV/viDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsV +WaFHVCkugyhfHMKiq3IXAAaOReyL4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gD +W/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMwDQYJKoZIhvcN +AQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj +t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHV +DRDtfULAj+7AmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9 +TaDKQGXSc3z1i9kKlT/YPyNtGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8G +lwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFtm6/n6J91eEyrRjuazr8FGF1NFTwW +mhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMxNRF4eKLg6TCMf4Df +WN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4Mhn5 ++bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJ +tshquDDIajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhA +GaQdp/lLQzfcaFpPz+vCZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv +8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only +# Subject: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only +# Label: "Entrust Root Certification Authority - G2" +# Serial: 1246989352 +# MD5 Fingerprint: 4b:e2:c9:91:96:65:0c:f4:0e:5a:93:92:a0:0a:fe:b2 +# SHA1 Fingerprint: 8c:f4:27:fd:79:0c:3a:d1:66:06:8d:e8:1e:57:ef:bb:93:22:72:d4 +# SHA256 Fingerprint: 43:df:57:74:b0:3e:7f:ef:5f:e4:0d:93:1a:7b:ed:f1:bb:2e:6b:42:73:8c:4e:6d:38:41:10:3d:3a:a7:f3:39 +-----BEGIN CERTIFICATE----- +MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50 +cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs +IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz +dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy +NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu +dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt +dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0 +aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T +RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN +cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW +wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1 +U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0 +jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN +BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/ +jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ +Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v +1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R +nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH +VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g== +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only +# Subject: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only +# Label: "Entrust Root Certification Authority - EC1" +# Serial: 51543124481930649114116133369 +# MD5 Fingerprint: b6:7e:1d:f0:58:c5:49:6c:24:3b:3d:ed:98:18:ed:bc +# SHA1 Fingerprint: 20:d8:06:40:df:9b:25:f5:12:25:3a:11:ea:f7:59:8a:eb:14:b5:47 +# SHA256 Fingerprint: 02:ed:0e:b2:8c:14:da:45:16:5c:56:67:91:70:0d:64:51:d7:fb:56:f0:b2:ab:1d:3b:8e:b0:70:e5:6e:df:f5 +-----BEGIN CERTIFICATE----- +MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkG +A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3 +d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVu +dHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEzMDEGA1UEAxMq +RW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRUMxMB4XDTEy +MTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYwFAYD +VQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 +L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0g +Zm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMTB2MBAGByqGSM49AgEGBSuBBAAi +A2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHyAsWfoPZb1YsGGYZPUxBt +ByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef9eNi1KlH +Bz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O +BBYEFLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVC +R98crlOZF7ZvHH3hvxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nX +hTcGtXsI/esni0qU+eH6p44mCOh8kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G +-----END CERTIFICATE----- + +# Issuer: CN=CFCA EV ROOT O=China Financial Certification Authority +# Subject: CN=CFCA EV ROOT O=China Financial Certification Authority +# Label: "CFCA EV ROOT" +# Serial: 407555286 +# MD5 Fingerprint: 74:e1:b6:ed:26:7a:7a:44:30:33:94:ab:7b:27:81:30 +# SHA1 Fingerprint: e2:b8:29:4b:55:84:ab:6b:58:c2:90:46:6c:ac:3f:b8:39:8f:84:83 +# SHA256 Fingerprint: 5c:c3:d7:8e:4e:1d:5e:45:54:7a:04:e6:87:3e:64:f9:0c:f9:53:6d:1c:cc:2e:f8:00:f3:55:c4:c5:fd:70:fd +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD +TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y +aXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkx +MjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j +aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJP +T1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnVBU03 +sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpL +TIpTUnrD7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5 +/ZOkVIBMUtRSqy5J35DNuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp +7hZZLDRJGqgG16iI0gNyejLi6mhNbiyWZXvKWfry4t3uMCz7zEasxGPrb382KzRz +EpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7xzbh72fROdOXW3NiGUgt +hxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9fpy25IGvP +a931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqot +aK8KgWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNg +TnYGmE69g60dWIolhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfV +PKPtl8MeNPo4+QgO48BdK4PRVmrJtqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hv +cWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAfBgNVHSMEGDAWgBTj/i39KNAL +tbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd +BgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB +ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObT +ej/tUxPQ4i9qecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdL +jOztUmCypAbqTuv0axn96/Ua4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBS +ESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sGE5uPhnEFtC+NiWYzKXZUmhH4J/qy +P5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfXBDrDMlI1Dlb4pd19 +xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjnaH9d +Ci77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN +5mydLIhyPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe +/v5WOaHIz16eGWRGENoXkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+Z +AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ +5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su +-----END CERTIFICATE----- + +# Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5 O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. +# Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5 O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. +# Label: "TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5" +# Serial: 156233699172481 +# MD5 Fingerprint: da:70:8e:f0:22:df:93:26:f6:5f:9f:d3:15:06:52:4e +# SHA1 Fingerprint: c4:18:f6:4d:46:d1:df:00:3d:27:30:13:72:43:a9:12:11:c6:75:fb +# SHA256 Fingerprint: 49:35:1b:90:34:44:c1:85:cc:dc:5c:69:3d:24:d8:55:5c:b2:08:d6:a8:14:13:07:69:9f:4a:f0:63:19:9d:78 +-----BEGIN CERTIFICATE----- +MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UE +BhMCVFIxDzANBgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxn +aSDEsGxldGnFn2ltIHZlIEJpbGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkg +QS7Fni4xQjBABgNVBAMMOVTDnFJLVFJVU1QgRWxla3Ryb25payBTZXJ0aWZpa2Eg +SGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSBINTAeFw0xMzA0MzAwODA3MDFaFw0yMzA0 +MjgwODA3MDFaMIGxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMU0wSwYD +VQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8 +dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg1MIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCUZ4WWe60ghUEoI5RHwWrom +/4NZzkQqL/7hzmAD/I0Dpe3/a6i6zDQGn1k19uwsu537jVJp45wnEFPzpALFp/kR +Gml1bsMdi9GYjZOHp3GXDSHHmflS0yxjXVW86B8BSLlg/kJK9siArs1mep5Fimh3 +4khon6La8eHBEJ/rPCmBp+EyCNSgBbGM+42WAA4+Jd9ThiI7/PS98wl+d+yG6w8z +5UNP9FR1bSmZLmZaQ9/LXMrI5Tjxfjs1nQ/0xVqhzPMggCTTV+wVunUlm+hkS7M0 +hO8EuPbJbKoCPrZV4jI3X/xml1/N1p7HIL9Nxqw/dV8c7TKcfGkAaZHjIxhT6QID +AQABo0IwQDAdBgNVHQ4EFgQUVpkHHtOsDGlktAxQR95DLL4gwPswDgYDVR0PAQH/ +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAJ5FdnsX +SDLyOIspve6WSk6BGLFRRyDN0GSxDsnZAdkJzsiZ3GglE9Rc8qPoBP5yCccLqh0l +VX6Wmle3usURehnmp349hQ71+S4pL+f5bFgWV1Al9j4uPqrtd3GqqpmWRgqujuwq +URawXs3qZwQcWDD1YIq9pr1N5Za0/EKJAWv2cMhQOQwt1WbZyNKzMrcbGW3LM/nf +peYVhDfwwvJllpKQd/Ct9JDpEXjXk4nAPQu6KfTomZ1yju2dL+6SfaHx/126M2CF +Yv4HAqGEVka+lgqaE9chTLd8B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW ++qtB4Uu2NQvAmxU= +-----END CERTIFICATE----- + +# Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6 O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. +# Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6 O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. +# Label: "TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6" +# Serial: 138134509972618 +# MD5 Fingerprint: f8:c5:ee:2a:6b:be:95:8d:08:f7:25:4a:ea:71:3e:46 +# SHA1 Fingerprint: 8a:5c:8c:ee:a5:03:e6:05:56:ba:d8:1b:d4:f6:c9:b0:ed:e5:2f:e0 +# SHA256 Fingerprint: 8d:e7:86:55:e1:be:7f:78:47:80:0b:93:f6:94:d2:1d:36:8c:c0:6e:03:3e:7f:ab:04:bb:5e:b9:9d:a6:b7:00 +-----BEGIN CERTIFICATE----- +MIIEJjCCAw6gAwIBAgIGfaHyZeyKMA0GCSqGSIb3DQEBCwUAMIGxMQswCQYDVQQG +EwJUUjEPMA0GA1UEBwwGQW5rYXJhMU0wSwYDVQQKDERUw5xSS1RSVVNUIEJpbGdp +IMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBB +LsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBI +aXptZXQgU2HEn2xhecSxY8Sxc8SxIEg2MB4XDTEzMTIxODA5MDQxMFoXDTIzMTIx +NjA5MDQxMFowgbExCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExTTBLBgNV +BAoMRFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBCaWxpxZ9pbSBHw7x2 +ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMUIwQAYDVQQDDDlUw5xSS1RSVVNUIEVs +ZWt0cm9uaWsgU2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLEgSDYwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCdsGjW6L0UlqMACprx9MfMkU1x +eHe59yEmFXNRFpQJRwXiM/VomjX/3EsvMsew7eKC5W/a2uqsxgbPJQ1BgfbBOCK9 ++bGlprMBvD9QFyv26WZV1DOzXPhDIHiTVRZwGTLmiddk671IUP320EEDwnS3/faA +z1vFq6TWlRKb55cTMgPp1KtDWxbtMyJkKbbSk60vbNg9tvYdDjTu0n2pVQ8g9P0p +u5FbHH3GQjhtQiht1AH7zYiXSX6484P4tZgvsycLSF5W506jM7NE1qXyGJTtHB6p +lVxiSvgNZ1GpryHV+DKdeboaX+UEVU0TRv/yz3THGmNtwx8XEsMeED5gCLMxAgMB +AAGjQjBAMB0GA1UdDgQWBBTdVRcT9qzoSCHK77Wv0QAy7Z6MtTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAb1gNl0Oq +FlQ+v6nfkkU/hQu7VtMMUszIv3ZnXuaqs6fvuay0EBQNdH49ba3RfdCaqaXKGDsC +QC4qnFAUi/5XfldcEQlLNkVS9z2sFP1E34uXI9TDwe7UU5X+LEr+DXCqu4svLcsy +o4LyVN/Y8t3XSHLuSqMplsNEzm61kod2pLv0kmzOLBQJZo6NrRa1xxsJYTvjIKID +gI6tflEATseWhvtDmHd9KMeP2Cpu54Rvl0EpABZeTeIT6lnAY2c6RPuY/ATTMHKm +9ocJV612ph1jmv3XZch4gyt1O6VbuA1df74jrlZVlFjvH4GMKrLN5ptjnhi85WsG +tAuYSyher4hYyw== +-----END CERTIFICATE----- + +# Issuer: CN=Certinomis - Root CA O=Certinomis OU=0002 433998903 +# Subject: CN=Certinomis - Root CA O=Certinomis OU=0002 433998903 +# Label: "Certinomis - Root CA" +# Serial: 1 +# MD5 Fingerprint: 14:0a:fd:8d:a8:28:b5:38:69:db:56:7e:61:22:03:3f +# SHA1 Fingerprint: 9d:70:bb:01:a5:a4:a0:18:11:2e:f7:1c:01:b9:32:c5:34:e7:88:a8 +# SHA256 Fingerprint: 2a:99:f5:bc:11:74:b7:3c:bb:1d:62:08:84:e0:1c:34:e5:1c:cb:39:78:da:12:5f:0e:33:26:88:83:bf:41:58 +-----BEGIN CERTIFICATE----- +MIIFkjCCA3qgAwIBAgIBATANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJGUjET +MBEGA1UEChMKQ2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxHTAb +BgNVBAMTFENlcnRpbm9taXMgLSBSb290IENBMB4XDTEzMTAyMTA5MTcxOFoXDTMz +MTAyMTA5MTcxOFowWjELMAkGA1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMx +FzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMR0wGwYDVQQDExRDZXJ0aW5vbWlzIC0g +Um9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANTMCQosP5L2 +fxSeC5yaah1AMGT9qt8OHgZbn1CF6s2Nq0Nn3rD6foCWnoR4kkjW4znuzuRZWJfl +LieY6pOod5tK8O90gC3rMB+12ceAnGInkYjwSond3IjmFPnVAy//ldu9n+ws+hQV +WZUKxkd8aRi5pwP5ynapz8dvtF4F/u7BUrJ1Mofs7SlmO/NKFoL21prbcpjp3vDF +TKWrteoB4owuZH9kb/2jJZOLyKIOSY008B/sWEUuNKqEUL3nskoTuLAPrjhdsKkb +5nPJWqHZZkCqqU2mNAKthH6yI8H7KsZn9DS2sJVqM09xRLWtwHkziOC/7aOgFLSc +CbAK42C++PhmiM1b8XcF4LVzbsF9Ri6OSyemzTUK/eVNfaoqoynHWmgE6OXWk6Ri +wsXm9E/G+Z8ajYJJGYrKWUM66A0ywfRMEwNvbqY/kXPLynNvEiCL7sCCeN5LLsJJ +wx3tFvYk9CcbXFcx3FXuqB5vbKziRcxXV4p1VxngtViZSTYxPDMBbRZKzbgqg4SG +m/lg0h9tkQPTYKbVPZrdd5A9NaSfD171UkRpucC63M9933zZxKyGIjK8e2uR73r4 +F2iw4lNVYC2vPsKD2NkJK/DAZNuHi5HMkesE/Xa0lZrmFAYb1TQdvtj/dBxThZng +WVJKYe2InmtJiUZ+IFrZ50rlau7SZRFDAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTvkUz1pcMw6C8I6tNxIqSSaHh0 +2TAfBgNVHSMEGDAWgBTvkUz1pcMw6C8I6tNxIqSSaHh02TANBgkqhkiG9w0BAQsF +AAOCAgEAfj1U2iJdGlg+O1QnurrMyOMaauo++RLrVl89UM7g6kgmJs95Vn6RHJk/ +0KGRHCwPT5iVWVO90CLYiF2cN/z7ZMF4jIuaYAnq1fohX9B0ZedQxb8uuQsLrbWw +F6YSjNRieOpWauwK0kDDPAUwPk2Ut59KA9N9J0u2/kTO+hkzGm2kQtHdzMjI1xZS +g081lLMSVX3l4kLr5JyTCcBMWwerx20RoFAXlCOotQqSD7J6wWAsOMwaplv/8gzj +qh8c3LigkyfeY+N/IZ865Z764BNqdeuWXGKRlI5nU7aJ+BIJy29SWwNyhlCVCNSN +h4YVH5Uk2KRvms6knZtt0rJ2BobGVgjF6wnaNsIbW0G+YSrjcOa4pvi2WsS9Iff/ +ql+hbHY5ZtbqTFXhADObE5hjyW/QASAJN1LnDE8+zbz1X5YnpyACleAu6AdBBR8V +btaw5BngDwKTACdyxYvRVB9dSsNAl35VpnzBMwQUAR1JIGkLGZOdblgi90AMRgwj +Y/M50n92Uaf0yKHxDHYiI0ZSKS3io0EHVmmY0gUJvGnHWmHNj4FgFU2A3ZDifcRQ +8ow7bkrHxuaAKzyBvBGAFhAn1/DNP3nMcyrDflOR1m749fPH0FFNjkulW+YZFzvW +gQncItzujrnEj1PhZ7szuIgVRs/taTX/dQ1G885x4cVrhkIGuUE= +-----END CERTIFICATE----- +# Issuer: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Subject: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Label: "Entrust.net Secure Server CA" +# Serial: 927650371 +# MD5 Fingerprint: df:f2:80:73:cc:f1:e6:61:73:fc:f5:42:e9:c5:7c:ee +# SHA1 Fingerprint: 99:a6:9b:e6:1a:fe:88:6b:4d:2b:82:00:7c:b8:54:fc:31:7e:15:39 +# SHA256 Fingerprint: 62:f2:40:27:8c:56:4c:4d:d8:bf:7d:9d:4f:6f:36:6e:a8:94:d2:2f:5f:34:d9:89:a9:83:ac:ec:2f:ff:ed:50 +-----BEGIN CERTIFICATE----- +MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC +VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u +ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u +ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 +MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE +ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j +b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF +bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg +U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ +I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 +wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC +AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb +oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 +BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p +dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk +MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp +b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu +dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 +MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi +E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa +MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI +hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN +95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd +2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +-----END CERTIFICATE----- + +# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority +# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority +# Label: "ValiCert Class 2 VA" +# Serial: 1 +# MD5 Fingerprint: a9:23:75:9b:ba:49:36:6e:31:c2:db:f2:e7:66:ba:87 +# SHA1 Fingerprint: 31:7a:2a:d0:7f:2b:33:5e:f5:a1:c3:4e:4b:57:e8:b7:d8:f1:fc:a6 +# SHA256 Fingerprint: 58:d0:17:27:9c:d4:dc:63:ab:dd:b1:96:a6:c9:90:6c:30:c4:e0:87:83:ea:e8:c1:60:99:54:d6:93:55:59:6b +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy +NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY +dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 +WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS +v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v +UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu +IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC +W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd +-----END CERTIFICATE----- + +# Issuer: CN=NetLock Expressz (Class C) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok +# Subject: CN=NetLock Expressz (Class C) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok +# Label: "NetLock Express (Class C) Root" +# Serial: 104 +# MD5 Fingerprint: 4f:eb:f1:f0:70:c2:80:63:5d:58:9f:da:12:3c:a9:c4 +# SHA1 Fingerprint: e3:92:51:2f:0a:cf:f5:05:df:f6:de:06:7f:75:37:e1:65:ea:57:4b +# SHA256 Fingerprint: 0b:5e:ed:4e:84:64:03:cf:55:e0:65:84:84:40:ed:2a:82:75:8b:f5:b9:aa:1f:25:3d:46:13:cf:a0:80:ff:3f +-----BEGIN CERTIFICATE----- +MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUx +ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 +b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQD +EytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBDKSBUYW51c2l0dmFueWtpYWRvMB4X +DTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJBgNVBAYTAkhVMREw +DwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9u +c2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMr +TmV0TG9jayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzAN +BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNA +OoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3ZW3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC +2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63euyucYT2BDMIJTLrdKwW +RMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQwDgYDVR0P +AQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEW +ggJNRklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0 +YWxhbm9zIFN6b2xnYWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFz +b2sgYWxhcGphbiBrZXN6dWx0LiBBIGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBO +ZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1iaXp0b3NpdGFzYSB2ZWRpLiBB +IGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0ZWxlIGF6IGVs +b2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs +ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25s +YXBqYW4gYSBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kg +a2VyaGV0byBheiBlbGxlbm9yemVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4g +SU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5kIHRoZSB1c2Ugb2YgdGhpcyBjZXJ0 +aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQUyBhdmFpbGFibGUg +YXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwgYXQg +Y3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmY +ta3UzbM2xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2g +pO0u9f38vf5NNwgMvOOWgyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4 +Fp1hBWeAyNDYpQcCNJgEjTME1A== +-----END CERTIFICATE----- + +# Issuer: CN=NetLock Uzleti (Class B) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok +# Subject: CN=NetLock Uzleti (Class B) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok +# Label: "NetLock Business (Class B) Root" +# Serial: 105 +# MD5 Fingerprint: 39:16:aa:b9:6a:41:e1:14:69:df:9e:6c:3b:72:dc:b6 +# SHA1 Fingerprint: 87:9f:4b:ee:05:df:98:58:3b:e3:60:d6:33:e7:0d:3f:fe:98:71:af +# SHA256 Fingerprint: 39:df:7b:68:2b:7b:93:8f:84:71:54:81:cc:de:8d:60:d8:f2:2e:c5:98:87:7d:0a:aa:c1:2b:59:18:2b:03:12 +-----BEGIN CERTIFICATE----- +MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUx +ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 +b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQD +EylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikgVGFudXNpdHZhbnlraWFkbzAeFw05 +OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYDVQQGEwJIVTERMA8G +A1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNh +Z2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5l +dExvY2sgVXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqG +SIb3DQEBAQUAA4GNADCBiQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xK +gZjupNTKihe5In+DCnVMm8Bp2GQ5o+2So/1bXHQawEfKOml2mrriRBf8TKPV/riX +iK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr1nGTLbO/CVRY7QbrqHvc +Q7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNVHQ8BAf8E +BAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1G +SUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFu +b3MgU3pvbGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBh +bGFwamFuIGtlc3p1bHQuIEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExv +Y2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRvc2l0YXNhIHZlZGkuIEEgZGln +aXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYXogZWxvaXJ0 +IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh +c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGph +biBhIGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJo +ZXRvIGF6IGVsbGVub3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBP +UlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmlj +YXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2YWlsYWJsZSBhdCBo +dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBjcHNA +bmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06 +sPgzTEdM43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXa +n3BukxowOR0w2y7jfLKRstE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKS +NitjrFgBazMpUIaD8QFI +-----END CERTIFICATE----- + +# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority +# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority +# Label: "RSA Root Certificate 1" +# Serial: 1 +# MD5 Fingerprint: a2:6f:53:b7:ee:40:db:4a:68:e7:fa:18:d9:10:4b:72 +# SHA1 Fingerprint: 69:bd:8c:f4:9c:d3:00:fb:59:2e:17:93:ca:55:6a:f3:ec:aa:35:fb +# SHA256 Fingerprint: bc:23:f9:8a:31:3c:b9:2d:e3:bb:fc:3a:5a:9f:44:61:ac:39:49:4c:4a:e1:5a:9e:9d:f1:31:e9:9b:73:01:9a +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy +NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD +cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs +2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY +JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE +Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ +n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A +PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu +-----END CERTIFICATE----- + +# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority +# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority +# Label: "ValiCert Class 1 VA" +# Serial: 1 +# MD5 Fingerprint: 65:58:ab:15:ad:57:6c:1e:a8:a7:b5:69:ac:bf:ff:eb +# SHA1 Fingerprint: e5:df:74:3c:b6:01:c4:9b:98:43:dc:ab:8c:e8:6a:81:10:9f:e4:8e +# SHA256 Fingerprint: f4:c1:49:55:1a:30:13:a3:5b:c7:bf:fe:17:a7:f3:44:9b:c1:ab:5b:5a:0a:e7:4b:06:c2:3b:90:00:4c:01:04 +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy +NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y +LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ +TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y +TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 +LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW +I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw +nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI +-----END CERTIFICATE----- + +# Issuer: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. +# Subject: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. +# Label: "Equifax Secure eBusiness CA 1" +# Serial: 4 +# MD5 Fingerprint: 64:9c:ef:2e:44:fc:c6:8f:52:07:d0:51:73:8f:cb:3d +# SHA1 Fingerprint: da:40:18:8b:91:89:a3:ed:ee:ae:da:97:fe:2f:9d:f5:b7:d1:8a:41 +# SHA256 Fingerprint: cf:56:ff:46:a4:a1:86:10:9d:d9:65:84:b5:ee:b5:8a:51:0c:42:75:b0:e5:f9:4f:40:bb:ae:86:5e:19:f6:73 +-----BEGIN CERTIFICATE----- +MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT +ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw +MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j +LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ +KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo +RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu +WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw +Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD +AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK +eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM +zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ +WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN +/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== +-----END CERTIFICATE----- + +# Issuer: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. +# Subject: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. +# Label: "Equifax Secure Global eBusiness CA" +# Serial: 1 +# MD5 Fingerprint: 8f:5d:77:06:27:c4:98:3c:5b:93:78:e7:d7:7d:9b:cc +# SHA1 Fingerprint: 7e:78:4a:10:1c:82:65:cc:2d:e1:f1:6d:47:b4:40:ca:d9:0a:19:45 +# SHA256 Fingerprint: 5f:0b:62:ea:b5:e3:53:ea:65:21:65:16:58:fb:b6:53:59:f4:43:28:0a:4a:fb:d1:04:d7:7d:10:f9:f0:4c:07 +-----BEGIN CERTIFICATE----- +MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT +ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw +MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj +dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l +c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC +UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc +58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ +o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH +MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr +aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA +A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA +Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv +8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +-----END CERTIFICATE----- + +# Issuer: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division +# Subject: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division +# Label: "Thawte Premium Server CA" +# Serial: 1 +# MD5 Fingerprint: 06:9f:69:79:16:66:90:02:1b:8c:8c:a2:c3:07:6f:3a +# SHA1 Fingerprint: 62:7f:8d:78:27:65:63:99:d2:7d:7f:90:44:c9:fe:b3:f3:3e:fa:9a +# SHA256 Fingerprint: ab:70:36:36:5c:71:54:aa:29:c2:c2:9f:5d:41:91:16:3b:16:2a:22:25:01:13:57:d5:6d:07:ff:a7:bc:1f:72 +-----BEGIN CERTIFICATE----- +MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD +VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy +dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t +MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB +MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG +A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp +b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl +cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv +bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE +VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ +ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR +uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG +9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI +hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM +pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== +-----END CERTIFICATE----- + +# Issuer: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division +# Subject: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division +# Label: "Thawte Server CA" +# Serial: 1 +# MD5 Fingerprint: c5:70:c4:a2:ed:53:78:0c:c8:10:53:81:64:cb:d0:1d +# SHA1 Fingerprint: 23:e5:94:94:51:95:f2:41:48:03:b4:d5:64:d2:a3:a3:f5:d8:8b:8c +# SHA256 Fingerprint: b4:41:0b:73:e2:e6:ea:ca:47:fb:c4:2f:8f:a4:01:8a:f4:38:1d:c5:4c:fa:a8:44:50:46:1e:ed:09:45:4d:e9 +-----BEGIN CERTIFICATE----- +MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD +VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm +MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx +MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 +dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl +cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 +DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD +gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 +yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX +L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj +EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG +7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e +QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ +qdq5snUb9kLy78fyGPmJvKP/iiMucEc= +-----END CERTIFICATE----- + +# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Label: "Verisign Class 3 Public Primary Certification Authority" +# Serial: 149843929435818692848040365716851702463 +# MD5 Fingerprint: 10:fc:63:5d:f6:26:3e:0d:f3:25:be:5f:79:cd:67:67 +# SHA1 Fingerprint: 74:2c:31:92:e6:07:e4:24:eb:45:49:54:2b:e1:bb:c5:3e:61:74:e2 +# SHA256 Fingerprint: e7:68:56:34:ef:ac:f6:9a:ce:93:9a:6b:25:5b:7b:4f:ab:ef:42:93:5b:50:a2:65:ac:b5:cb:60:27:e4:4e:70 +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz +cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 +MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV +BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE +BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is +I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G +CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do +lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc +AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k +-----END CERTIFICATE----- + +# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Label: "Verisign Class 3 Public Primary Certification Authority" +# Serial: 80507572722862485515306429940691309246 +# MD5 Fingerprint: ef:5a:f1:33:ef:f1:cd:bb:51:02:ee:12:14:4b:96:c4 +# SHA1 Fingerprint: a1:db:63:93:91:6f:17:e4:18:55:09:40:04:15:c7:02:40:b0:ae:6b +# SHA256 Fingerprint: a4:b6:b3:99:6f:c2:f3:06:b3:fd:86:81:bd:63:41:3d:8c:50:09:cc:4f:a3:29:c2:cc:f0:e2:fa:1b:14:03:05 +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz +cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 +MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV +BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE +BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is +I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G +CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i +2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ +2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ +-----END CERTIFICATE----- + +# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network +# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network +# Label: "Verisign Class 3 Public Primary Certification Authority - G2" +# Serial: 167285380242319648451154478808036881606 +# MD5 Fingerprint: a2:33:9b:4c:74:78:73:d4:6c:e7:c1:f3:8d:cb:5c:e9 +# SHA1 Fingerprint: 85:37:1c:a6:e5:50:14:3d:ce:28:03:47:1b:de:3a:09:e8:f8:77:0f +# SHA256 Fingerprint: 83:ce:3c:12:29:68:8a:59:3d:48:5f:81:97:3c:0f:91:95:43:1e:da:37:cc:5e:36:43:0e:79:c7:a8:88:63:8b +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh +c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy +MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp +emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X +DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw +FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg +UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo +YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 +MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB +AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 +pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 +13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID +AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk +U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i +F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY +oJ2daZH9 +-----END CERTIFICATE----- + +# Issuer: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. +# Subject: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. +# Label: "GTE CyberTrust Global Root" +# Serial: 421 +# MD5 Fingerprint: ca:3d:d3:68:f1:03:5c:d0:32:fa:b8:2b:59:e8:5a:db +# SHA1 Fingerprint: 97:81:79:50:d8:1c:96:70:cc:34:d8:09:cf:79:44:31:36:7e:f4:74 +# SHA256 Fingerprint: a5:31:25:18:8d:21:10:aa:96:4b:02:c7:b7:c6:da:32:03:17:08:94:e5:fb:71:ff:fb:66:67:d5:e6:81:0a:36 +-----BEGIN CERTIFICATE----- +MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD +VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv +bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv +b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV +UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU +cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds +b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH +iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS +r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 +04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r +GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 +3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P +lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ +-----END CERTIFICATE----- diff --git a/Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/DESCRIPTION.rst b/Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/DESCRIPTION.rst deleted file mode 100644 index 4b419bc..0000000 --- a/Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/DESCRIPTION.rst +++ /dev/null @@ -1,40 +0,0 @@ -Chardet: The Universal Character Encoding Detector --------------------------------------------------- - -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, ISO-2022-JP (Japanese) - - EUC-KR, ISO-2022-KR (Korean) - - KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic) - - ISO-8859-2, windows-1250 (Hungarian) - - ISO-8859-5, windows-1251 (Bulgarian) - - windows-1252 (English) - - ISO-8859-7, windows-1253 (Greek) - - ISO-8859-8, windows-1255 (Visual and Logical Hebrew) - - TIS-620 (Thai) - -Requires Python 2.6 or later - -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 Corduscano `_'s -`charade `_ fork, so now we have one -coherent version that works for Python 2.6+. - -:maintainer: Dan Blanchard - - diff --git a/Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/METADATA b/Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/METADATA deleted file mode 100644 index 5bf5826..0000000 --- a/Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/METADATA +++ /dev/null @@ -1,58 +0,0 @@ -Metadata-Version: 2.0 -Name: chardet -Version: 2.2.1 -Summary: Universal encoding detector for Python 2 and 3 -Home-page: https://github.com/erikrose/chardet -Author: Ian Cordasco -Author-email: graffatcolmingov@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: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Topic :: Text Processing :: Linguistic - -Chardet: The Universal Character Encoding Detector --------------------------------------------------- - -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, ISO-2022-JP (Japanese) - - EUC-KR, ISO-2022-KR (Korean) - - KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic) - - ISO-8859-2, windows-1250 (Hungarian) - - ISO-8859-5, windows-1251 (Bulgarian) - - windows-1252 (English) - - ISO-8859-7, windows-1253 (Greek) - - ISO-8859-8, windows-1255 (Visual and Logical Hebrew) - - TIS-620 (Thai) - -Requires Python 2.6 or later - -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 Corduscano `_'s -`charade `_ fork, so now we have one -coherent version that works for Python 2.6+. - -:maintainer: Dan Blanchard - - diff --git a/Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/RECORD b/Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/RECORD deleted file mode 100644 index fe19dfa..0000000 --- a/Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/RECORD +++ /dev/null @@ -1,85 +0,0 @@ -chardet/cp949prober.py,sha256=FMvdLyB7fejPXRsTbca7LK1P3RUvvssmjUNyaEfz8zY,1782 -chardet/mbcssm.py,sha256=UuiA4Ic8vEc0XpTKDneqZyiH2TwGuFVZxOxWJep3X_4,19608 -chardet/langhebrewmodel.py,sha256=4ASl5vzKJPng4H278VHKtRYC03TpQpenlHTcsmZH1rE,11318 -chardet/charsetgroupprober.py,sha256=0lKk7VE516fgMw119tNefFqLOxKfIE9WfdkpIT69OKU,3791 -chardet/euctwfreq.py,sha256=G_I0BW9i1w0ONeeUwIYqV7_U09buIHdqh-wNHVaql7I,34872 -chardet/charsetprober.py,sha256=Z48o2KiOj23FNqYH8FqzhH5m1qdm3rI8DcTm2Yqtklg,1902 -chardet/jisfreq.py,sha256=ZcL4R5ekHHbP2KCYGakVMBsiKqZZZAABzhwi-uRkOps,47315 -chardet/langcyrillicmodel.py,sha256=fkcd5OvogUp-GrNDWAZPgkYsSRCD2omotAEvqjlmLKE,17725 -chardet/__init__.py,sha256=8-39Dg2qEuod5DNN7RMdn2ZYOO9zFU3fFfaE80iDWGc,1295 -chardet/utf8prober.py,sha256=7tdNZGrJY7jZUBD483GGMkiP0Tx8Fp-cGvWHoAsilHg,2652 -chardet/langthaimodel.py,sha256=-k7djh3dGKngAGnt3WfuoJN7acDcWcmHAPojhaUd7q4,11275 -chardet/jpcntx.py,sha256=9fJ9oS0BUarcdZNySwmzVRuT03sYdClSmFwXDj3yVNg,19104 -chardet/hebrewprober.py,sha256=8pdoUfsVXf_L4BnJde_BewS6H2yInV5688eu0nFhLHY,13359 -chardet/sbcsgroupprober.py,sha256=8hLyH8RAG-aohBo7o_KciWVgRo42ZE_zEtuNG1JMRYI,3291 -chardet/universaldetector.py,sha256=GkZdwNyNfbFWC8I1uqnzyhOUF7favWCqCOKqdQlx6gQ,6831 -chardet/escprober.py,sha256=q5TcQKeVq31WxrW7Sv8yjpZkjEoaHO8S92EJZ9hodys,3187 -chardet/euctwprober.py,sha256=upS2P6GuT5ujOxXYw-RJLcT7A4PTuo27KGUKU4UZpIQ,1676 -chardet/mbcsgroupprober.py,sha256=SHRzNPLpDXfMJLA8phCHVU0WgqbgDCNxDQMolGX_7yk,1967 -chardet/gb2312freq.py,sha256=M2gFdo_qQ_BslStEchrPW5CrPEZEacC0uyDLw4ok-kY,36011 -chardet/sjisprober.py,sha256=1RjpQ2LU2gvoEB_4O839xDQVchWx2fG_C7_vXh52P5I,3734 -chardet/eucjpprober.py,sha256=5IpfSEjAb7h3hcGMd6dkU80O900C2N6xku28rdYFKuc,3678 -chardet/langgreekmodel.py,sha256=QHMy31CH_ot67UCtmurCEKqKx2WwoaKrw2YCYYBK2Lw,12628 -chardet/langbulgarianmodel.py,sha256=ZyPsA796MSVhYdfWhMCgKWckupAKAnKqWcE3Cl3ej6o,12784 -chardet/gb2312prober.py,sha256=VWnjoRa83Y6V6oczMaxyUr0uy48iCnC2nzk9zfEIRHc,1681 -chardet/chardistribution.py,sha256=cUARQFr1oTLXeJCDQrDRkUP778AvSMzhSCnG8VLCV58,9226 -chardet/langhungarianmodel.py,sha256=SXwuUzh49_cBeMXhshRHdrhlkz0T8_pZWV_pdqBKNFk,12536 -chardet/chardetect.py,sha256=8g-dRSA97bSE6M25Tqe1roKKtl3XHSMnqi6vTzpHNV0,1141 -chardet/constants.py,sha256=-UnY8U7EP7z9fTyd09yq35BEkSFEAUAiv9ohd1DW1s4,1335 -chardet/codingstatemachine.py,sha256=E85rYhHVMw9xDEJVgiQhp0OnLGr6i2r8_7QOWMKTH08,2318 -chardet/latin1prober.py,sha256=g67gqZ2z89LUOlR7BZEAh4-p5a1yGWss9nWy8FCNm8Q,5241 -chardet/sbcharsetprober.py,sha256=Xq0lODqJnDgxglBiQI4BqTFiPbn63-0a5XNA5-hVu7U,4793 -chardet/compat.py,sha256=5mm6yrHwef1JEG5OxkPJlSq5lkjLVpEGh3iPgFBkpkM,1157 -chardet/euckrprober.py,sha256=Wo7dnZ5Erw_nB4H-m5alMiOxOuJUmGHlwCSaGqExDZA,1675 -chardet/big5prober.py,sha256=XX96C--6WKYW36mL-z7pJSAtc169Z8ZImByCP4pEN9A,1684 -chardet/euckrfreq.py,sha256=T5saK5mImySG5ygQPtsp6o2uKulouCwYm2ElOyFkJqU,45978 -chardet/mbcharsetprober.py,sha256=9rOCjDVsmSMp6e7q2syqak22j7lrbUZhJhMee2gbVL0,3268 -chardet/escsm.py,sha256=7iljEKN8lXTh8JFXPUSwlibMno6R6ksq4evLxbkzfro,7839 -chardet/big5freq.py,sha256=D8oTdz-GM7Jg8TsaWJDm65vM_OLHC3xub6qUJ3rOgsQ,82594 -chardet-2.2.1.data/scripts/chardetect,sha256=snDx6K00XbSe_vd7iEHs65beBQMoyABTYGKS4YyykZA,298 -chardet-2.2.1.dist-info/pydist.json,sha256=K3LzbyqsBHBv-HwWY25sFHBPy1kxdszEi_gd2AFD_Kg,926 -chardet-2.2.1.dist-info/WHEEL,sha256=SXYYsi-y-rEGIva8sB8iKF6bAFD6YDhmqHX5hI3fc0o,110 -chardet-2.2.1.dist-info/RECORD,, -chardet-2.2.1.dist-info/top_level.txt,sha256=AowzBbZy4x8EirABDdJSLJZMkJ_53iIag8xfKR6D7kI,8 -chardet-2.2.1.dist-info/DESCRIPTION.rst,sha256=m1CcXHsjUJRXdWB4svHusBa6otO4GdUW6LgirEk4V2k,1344 -chardet-2.2.1.dist-info/entry_points.txt,sha256=2T00JXwbiQBZQFSKyCFxud4LEQ3_8TKuOwUsSXT-kUI,56 -chardet-2.2.1.dist-info/METADATA,sha256=Pzpbxhm72oav1pTeA7pAjXPWGZ_gmYRm9bwvXM8umaw,2013 -/srv/openmedialibrary/platform/Shared/home/.local/bin/chardetect,sha256=zPsthwHzIOlO2Mxw0wdp5F7cfd7xSyEpiv11jcEgaEE,220 -chardet/__pycache__/langhebrewmodel.cpython-34.pyc,, -chardet/__pycache__/mbcssm.cpython-34.pyc,, -chardet/__pycache__/euckrprober.cpython-34.pyc,, -chardet/__pycache__/chardetect.cpython-34.pyc,, -chardet/__pycache__/cp949prober.cpython-34.pyc,, -chardet/__pycache__/gb2312freq.cpython-34.pyc,, -chardet/__pycache__/universaldetector.cpython-34.pyc,, -chardet/__pycache__/charsetprober.cpython-34.pyc,, -chardet/__pycache__/compat.cpython-34.pyc,, -chardet/__pycache__/__init__.cpython-34.pyc,, -chardet/__pycache__/escprober.cpython-34.pyc,, -chardet/__pycache__/euctwfreq.cpython-34.pyc,, -chardet/__pycache__/langgreekmodel.cpython-34.pyc,, -chardet/__pycache__/codingstatemachine.cpython-34.pyc,, -chardet/__pycache__/hebrewprober.cpython-34.pyc,, -chardet/__pycache__/escsm.cpython-34.pyc,, -chardet/__pycache__/langcyrillicmodel.cpython-34.pyc,, -chardet/__pycache__/euctwprober.cpython-34.pyc,, -chardet/__pycache__/charsetgroupprober.cpython-34.pyc,, -chardet/__pycache__/constants.cpython-34.pyc,, -chardet/__pycache__/chardistribution.cpython-34.pyc,, -chardet/__pycache__/langthaimodel.cpython-34.pyc,, -chardet/__pycache__/utf8prober.cpython-34.pyc,, -chardet/__pycache__/sbcsgroupprober.cpython-34.pyc,, -chardet/__pycache__/big5prober.cpython-34.pyc,, -chardet/__pycache__/langhungarianmodel.cpython-34.pyc,, -chardet/__pycache__/mbcsgroupprober.cpython-34.pyc,, -chardet/__pycache__/big5freq.cpython-34.pyc,, -chardet/__pycache__/sjisprober.cpython-34.pyc,, -chardet/__pycache__/gb2312prober.cpython-34.pyc,, -chardet/__pycache__/langbulgarianmodel.cpython-34.pyc,, -chardet/__pycache__/sbcharsetprober.cpython-34.pyc,, -chardet/__pycache__/jpcntx.cpython-34.pyc,, -chardet/__pycache__/latin1prober.cpython-34.pyc,, -chardet/__pycache__/mbcharsetprober.cpython-34.pyc,, -chardet/__pycache__/euckrfreq.cpython-34.pyc,, -chardet/__pycache__/eucjpprober.cpython-34.pyc,, -chardet/__pycache__/jisfreq.cpython-34.pyc,, diff --git a/Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/pydist.json b/Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/pydist.json deleted file mode 100644 index de3617c..0000000 --- a/Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/pydist.json +++ /dev/null @@ -1 +0,0 @@ -{"license": "LGPL", "exports": {"console_scripts": {"chardetect": "chardet.chardetect:main"}}, "document_names": {"description": "DESCRIPTION.rst"}, "name": "chardet", "metadata_version": "2.0", "contacts": [{"role": "author", "email": "graffatcolmingov@gmail.com", "name": "Ian Cordasco"}], "generator": "bdist_wheel (0.22.0)", "commands": {"wrap_console": {"chardetect": "chardet.chardetect:main"}}, "summary": "Universal encoding detector for Python 2 and 3", "project_urls": {"Home": "https://github.com/erikrose/chardet"}, "version": "2.2.1", "keywords": "encoding,i18n,xml", "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", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Linguistic"]} \ No newline at end of file diff --git a/Shared/lib/python3.4/site-packages/chardet-2.3.0.egg-info/PKG-INFO b/Shared/lib/python3.4/site-packages/chardet-2.3.0.egg-info/PKG-INFO new file mode 100644 index 0000000..8ffe8f6 --- /dev/null +++ b/Shared/lib/python3.4/site-packages/chardet-2.3.0.egg-info/PKG-INFO @@ -0,0 +1,70 @@ +Metadata-Version: 1.1 +Name: chardet +Version: 2.3.0 +Summary: Universal encoding detector for Python 2 and 3 +Home-page: https://github.com/chardet/chardet +Author: Ian Cordasco +Author-email: graffatcolmingov@gmail.com +License: LGPL +Description: Chardet: The Universal Character Encoding Detector + -------------------------------------------------- + + 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-2, windows-1250 (Hungarian) + - ISO-8859-5, windows-1251 (Bulgarian) + - windows-1252 (English) + - ISO-8859-7, windows-1253 (Greek) + - ISO-8859-8, windows-1255 (Visual and Logical Hebrew) + - TIS-620 (Thai) + + Requires Python 2.6 or later + + Installation + ------------ + + Install from `PyPI `_:: + + pip install chardet + + + 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 + +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.2 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Text Processing :: Linguistic diff --git a/Shared/lib/python3.4/site-packages/chardet-2.3.0.egg-info/SOURCES.txt b/Shared/lib/python3.4/site-packages/chardet-2.3.0.egg-info/SOURCES.txt new file mode 100644 index 0000000..b78feb4 --- /dev/null +++ b/Shared/lib/python3.4/site-packages/chardet-2.3.0.egg-info/SOURCES.txt @@ -0,0 +1,48 @@ +LICENSE +MANIFEST.in +README.rst +setup.cfg +setup.py +chardet/__init__.py +chardet/big5freq.py +chardet/big5prober.py +chardet/chardetect.py +chardet/chardistribution.py +chardet/charsetgroupprober.py +chardet/charsetprober.py +chardet/codingstatemachine.py +chardet/compat.py +chardet/constants.py +chardet/cp949prober.py +chardet/escprober.py +chardet/escsm.py +chardet/eucjpprober.py +chardet/euckrfreq.py +chardet/euckrprober.py +chardet/euctwfreq.py +chardet/euctwprober.py +chardet/gb2312freq.py +chardet/gb2312prober.py +chardet/hebrewprober.py +chardet/jisfreq.py +chardet/jpcntx.py +chardet/langbulgarianmodel.py +chardet/langcyrillicmodel.py +chardet/langgreekmodel.py +chardet/langhebrewmodel.py +chardet/langhungarianmodel.py +chardet/langthaimodel.py +chardet/latin1prober.py +chardet/mbcharsetprober.py +chardet/mbcsgroupprober.py +chardet/mbcssm.py +chardet/sbcharsetprober.py +chardet/sbcsgroupprober.py +chardet/sjisprober.py +chardet/universaldetector.py +chardet/utf8prober.py +chardet.egg-info/PKG-INFO +chardet.egg-info/SOURCES.txt +chardet.egg-info/dependency_links.txt +chardet.egg-info/entry_points.txt +chardet.egg-info/top_level.txt \ No newline at end of file diff --git a/Shared/lib/python3.4/site-packages/certifi-14.05.14.egg-info/dependency_links.txt b/Shared/lib/python3.4/site-packages/chardet-2.3.0.egg-info/dependency_links.txt similarity index 100% rename from Shared/lib/python3.4/site-packages/certifi-14.05.14.egg-info/dependency_links.txt rename to Shared/lib/python3.4/site-packages/chardet-2.3.0.egg-info/dependency_links.txt diff --git a/Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/entry_points.txt b/Shared/lib/python3.4/site-packages/chardet-2.3.0.egg-info/entry_points.txt similarity index 100% rename from Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/entry_points.txt rename to Shared/lib/python3.4/site-packages/chardet-2.3.0.egg-info/entry_points.txt diff --git a/Shared/lib/python3.4/site-packages/chardet-2.3.0.egg-info/installed-files.txt b/Shared/lib/python3.4/site-packages/chardet-2.3.0.egg-info/installed-files.txt new file mode 100644 index 0000000..58a376d --- /dev/null +++ b/Shared/lib/python3.4/site-packages/chardet-2.3.0.egg-info/installed-files.txt @@ -0,0 +1,83 @@ +../chardet/__init__.py +../chardet/big5freq.py +../chardet/big5prober.py +../chardet/chardetect.py +../chardet/chardistribution.py +../chardet/charsetgroupprober.py +../chardet/charsetprober.py +../chardet/codingstatemachine.py +../chardet/compat.py +../chardet/constants.py +../chardet/cp949prober.py +../chardet/escprober.py +../chardet/escsm.py +../chardet/eucjpprober.py +../chardet/euckrfreq.py +../chardet/euckrprober.py +../chardet/euctwfreq.py +../chardet/euctwprober.py +../chardet/gb2312freq.py +../chardet/gb2312prober.py +../chardet/hebrewprober.py +../chardet/jisfreq.py +../chardet/jpcntx.py +../chardet/langbulgarianmodel.py +../chardet/langcyrillicmodel.py +../chardet/langgreekmodel.py +../chardet/langhebrewmodel.py +../chardet/langhungarianmodel.py +../chardet/langthaimodel.py +../chardet/latin1prober.py +../chardet/mbcharsetprober.py +../chardet/mbcsgroupprober.py +../chardet/mbcssm.py +../chardet/sbcharsetprober.py +../chardet/sbcsgroupprober.py +../chardet/sjisprober.py +../chardet/universaldetector.py +../chardet/utf8prober.py +../chardet/__pycache__/__init__.cpython-34.pyc +../chardet/__pycache__/big5freq.cpython-34.pyc +../chardet/__pycache__/big5prober.cpython-34.pyc +../chardet/__pycache__/chardetect.cpython-34.pyc +../chardet/__pycache__/chardistribution.cpython-34.pyc +../chardet/__pycache__/charsetgroupprober.cpython-34.pyc +../chardet/__pycache__/charsetprober.cpython-34.pyc +../chardet/__pycache__/codingstatemachine.cpython-34.pyc +../chardet/__pycache__/compat.cpython-34.pyc +../chardet/__pycache__/constants.cpython-34.pyc +../chardet/__pycache__/cp949prober.cpython-34.pyc +../chardet/__pycache__/escprober.cpython-34.pyc +../chardet/__pycache__/escsm.cpython-34.pyc +../chardet/__pycache__/eucjpprober.cpython-34.pyc +../chardet/__pycache__/euckrfreq.cpython-34.pyc +../chardet/__pycache__/euckrprober.cpython-34.pyc +../chardet/__pycache__/euctwfreq.cpython-34.pyc +../chardet/__pycache__/euctwprober.cpython-34.pyc +../chardet/__pycache__/gb2312freq.cpython-34.pyc +../chardet/__pycache__/gb2312prober.cpython-34.pyc +../chardet/__pycache__/hebrewprober.cpython-34.pyc +../chardet/__pycache__/jisfreq.cpython-34.pyc +../chardet/__pycache__/jpcntx.cpython-34.pyc +../chardet/__pycache__/langbulgarianmodel.cpython-34.pyc +../chardet/__pycache__/langcyrillicmodel.cpython-34.pyc +../chardet/__pycache__/langgreekmodel.cpython-34.pyc +../chardet/__pycache__/langhebrewmodel.cpython-34.pyc +../chardet/__pycache__/langhungarianmodel.cpython-34.pyc +../chardet/__pycache__/langthaimodel.cpython-34.pyc +../chardet/__pycache__/latin1prober.cpython-34.pyc +../chardet/__pycache__/mbcharsetprober.cpython-34.pyc +../chardet/__pycache__/mbcsgroupprober.cpython-34.pyc +../chardet/__pycache__/mbcssm.cpython-34.pyc +../chardet/__pycache__/sbcharsetprober.cpython-34.pyc +../chardet/__pycache__/sbcsgroupprober.cpython-34.pyc +../chardet/__pycache__/sjisprober.cpython-34.pyc +../chardet/__pycache__/universaldetector.cpython-34.pyc +../chardet/__pycache__/utf8prober.cpython-34.pyc +./ +dependency_links.txt +entry_points.txt +PKG-INFO +SOURCES.txt +top_level.txt +../../../../bin/chardetect diff --git a/Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/top_level.txt b/Shared/lib/python3.4/site-packages/chardet-2.3.0.egg-info/top_level.txt similarity index 100% rename from Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/top_level.txt rename to Shared/lib/python3.4/site-packages/chardet-2.3.0.egg-info/top_level.txt diff --git a/Shared/lib/python3.4/site-packages/chardet/__init__.py b/Shared/lib/python3.4/site-packages/chardet/__init__.py index e4f0799..82c2a48 100644 --- a/Shared/lib/python3.4/site-packages/chardet/__init__.py +++ b/Shared/lib/python3.4/site-packages/chardet/__init__.py @@ -15,7 +15,7 @@ # 02110-1301 USA ######################### END LICENSE BLOCK ######################### -__version__ = "2.2.1" +__version__ = "2.3.0" from sys import version_info diff --git a/Shared/lib/python3.4/site-packages/chardet/chardetect.py b/Shared/lib/python3.4/site-packages/chardet/chardetect.py index ecd0163..ffe892f 100644 --- a/Shared/lib/python3.4/site-packages/chardet/chardetect.py +++ b/Shared/lib/python3.4/site-packages/chardet/chardetect.py @@ -12,34 +12,68 @@ Example:: If no paths are provided, it takes its input from stdin. """ -from io import open -from sys import argv, stdin +from __future__ import absolute_import, print_function, unicode_literals + +import argparse +import sys +from io import open + +from chardet import __version__ from chardet.universaldetector import UniversalDetector -def description_of(file, name='stdin'): - """Return a string describing the probable encoding of a file.""" +def description_of(lines, name='stdin'): + """ + Return a string describing the probable encoding of a file or + list of strings. + + :param lines: The lines to get the encoding of. + :type lines: Iterable of bytes + :param name: Name of file or collection of lines + :type name: str + """ u = UniversalDetector() - for line in file: + for line in lines: u.feed(line) u.close() result = u.result if result['encoding']: - return '%s: %s with confidence %s' % (name, - result['encoding'], - result['confidence']) + return '{0}: {1} with confidence {2}'.format(name, result['encoding'], + result['confidence']) else: - return '%s: no result' % name + return '{0}: no result'.format(name) -def main(): - if len(argv) <= 1: - print(description_of(stdin)) - else: - for path in argv[1:]: - with open(path, 'rb') as f: - print(description_of(f, path)) +def main(argv=None): + ''' + Handles command line arguments and gets things started. + + :param argv: List of arguments, as if specified on the command-line. + If None, ``sys.argv[1:]`` is used instead. + :type argv: list of str + ''' + # Get command line arguments + parser = argparse.ArgumentParser( + description="Takes one or more file paths and reports their detected \ + encodings", + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + conflict_handler='resolve') + parser.add_argument('input', + help='File whose encoding we would like to determine.', + type=argparse.FileType('rb'), nargs='*', + default=[sys.stdin]) + parser.add_argument('--version', action='version', + version='%(prog)s {0}'.format(__version__)) + args = parser.parse_args(argv) + + for f in args.input: + if f.isatty(): + print("You are running chardetect interactively. Press " + + "CTRL-D twice at the start of a blank line to signal the " + + "end of your input. If you want help, run chardetect " + + "--help\n", file=sys.stderr) + print(description_of(f, f.name)) if __name__ == '__main__': diff --git a/Shared/lib/python3.4/site-packages/chardet/jpcntx.py b/Shared/lib/python3.4/site-packages/chardet/jpcntx.py index f7f69ba..59aeb6a 100644 --- a/Shared/lib/python3.4/site-packages/chardet/jpcntx.py +++ b/Shared/lib/python3.4/site-packages/chardet/jpcntx.py @@ -177,6 +177,12 @@ class JapaneseContextAnalysis: return -1, 1 class SJISContextAnalysis(JapaneseContextAnalysis): + def __init__(self): + self.charset_name = "SHIFT_JIS" + + def get_charset_name(self): + return self.charset_name + def get_order(self, aBuf): if not aBuf: return -1, 1 @@ -184,6 +190,8 @@ class SJISContextAnalysis(JapaneseContextAnalysis): first_char = wrap_ord(aBuf[0]) if ((0x81 <= first_char <= 0x9F) or (0xE0 <= first_char <= 0xFC)): charLen = 2 + if (first_char == 0x87) or (0xFA <= first_char <= 0xFC): + self.charset_name = "CP932" else: charLen = 1 diff --git a/Shared/lib/python3.4/site-packages/chardet/latin1prober.py b/Shared/lib/python3.4/site-packages/chardet/latin1prober.py index ad695f5..eef3573 100644 --- a/Shared/lib/python3.4/site-packages/chardet/latin1prober.py +++ b/Shared/lib/python3.4/site-packages/chardet/latin1prober.py @@ -129,11 +129,11 @@ class Latin1Prober(CharSetProber): if total < 0.01: confidence = 0.0 else: - confidence = ((self._mFreqCounter[3] / total) - - (self._mFreqCounter[1] * 20.0 / total)) + confidence = ((self._mFreqCounter[3] - self._mFreqCounter[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.5 + confidence = confidence * 0.73 return confidence diff --git a/Shared/lib/python3.4/site-packages/chardet/mbcssm.py b/Shared/lib/python3.4/site-packages/chardet/mbcssm.py index 3f93cfb..efe678c 100644 --- a/Shared/lib/python3.4/site-packages/chardet/mbcssm.py +++ b/Shared/lib/python3.4/site-packages/chardet/mbcssm.py @@ -353,7 +353,7 @@ SJIS_cls = ( 2,2,2,2,2,2,2,2, # 68 - 6f 2,2,2,2,2,2,2,2, # 70 - 77 2,2,2,2,2,2,2,1, # 78 - 7f - 3,3,3,3,3,3,3,3, # 80 - 87 + 3,3,3,3,3,2,2,3, # 80 - 87 3,3,3,3,3,3,3,3, # 88 - 8f 3,3,3,3,3,3,3,3, # 90 - 97 3,3,3,3,3,3,3,3, # 98 - 9f @@ -369,9 +369,8 @@ SJIS_cls = ( 2,2,2,2,2,2,2,2, # d8 - df 3,3,3,3,3,3,3,3, # e0 - e7 3,3,3,3,3,4,4,4, # e8 - ef - 4,4,4,4,4,4,4,4, # f0 - f7 - 4,4,4,4,4,0,0,0 # f8 - ff -) + 3,3,3,3,3,3,3,3, # f0 - f7 + 3,3,3,3,3,0,0,0) # f8 - ff SJIS_st = ( @@ -571,5 +570,3 @@ UTF8SMModel = {'classTable': UTF8_cls, 'stateTable': UTF8_st, 'charLenTable': UTF8CharLenTable, 'name': 'UTF-8'} - -# flake8: noqa diff --git a/Shared/lib/python3.4/site-packages/chardet/sjisprober.py b/Shared/lib/python3.4/site-packages/chardet/sjisprober.py index b173614..cd0e9e7 100644 --- a/Shared/lib/python3.4/site-packages/chardet/sjisprober.py +++ b/Shared/lib/python3.4/site-packages/chardet/sjisprober.py @@ -47,7 +47,7 @@ class SJISProber(MultiByteCharSetProber): self._mContextAnalyzer.reset() def get_charset_name(self): - return "SHIFT_JIS" + return self._mContextAnalyzer.get_charset_name() def feed(self, aBuf): aLen = len(aBuf) diff --git a/Shared/lib/python3.4/site-packages/chardet/universaldetector.py b/Shared/lib/python3.4/site-packages/chardet/universaldetector.py index 9a03ad3..476522b 100644 --- a/Shared/lib/python3.4/site-packages/chardet/universaldetector.py +++ b/Shared/lib/python3.4/site-packages/chardet/universaldetector.py @@ -71,9 +71,9 @@ class UniversalDetector: if not self._mGotData: # If the data starts with BOM, we know it is UTF - if aBuf[:3] == codecs.BOM: + if aBuf[:3] == codecs.BOM_UTF8: # EF BB BF UTF-8 with BOM - self.result = {'encoding': "UTF-8", 'confidence': 1.0} + self.result = {'encoding': "UTF-8-SIG", 'confidence': 1.0} elif aBuf[:4] == codecs.BOM_UTF32_LE: # FF FE 00 00 UTF-32, little-endian BOM self.result = {'encoding': "UTF-32LE", 'confidence': 1.0} diff --git a/Shared/lib/python3.4/site-packages/distribute-0.7.3-py3.4.egg-info/installed-files.txt b/Shared/lib/python3.4/site-packages/distribute-0.7.3-py3.4.egg-info/installed-files.txt index cda16f7..89b5d45 100644 --- a/Shared/lib/python3.4/site-packages/distribute-0.7.3-py3.4.egg-info/installed-files.txt +++ b/Shared/lib/python3.4/site-packages/distribute-0.7.3-py3.4.egg-info/installed-files.txt @@ -1,7 +1,7 @@ ./ dependency_links.txt PKG-INFO -SOURCES.txt -zip-safe -top_level.txt requires.txt +SOURCES.txt +top_level.txt +zip-safe diff --git a/Shared/lib/python3.4/site-packages/feedparser-5.1.3.egg-info/PKG-INFO b/Shared/lib/python3.4/site-packages/feedparser-5.2.1.egg-info/PKG-INFO old mode 100644 new mode 100755 similarity index 87% rename from Shared/lib/python3.4/site-packages/feedparser-5.1.3.egg-info/PKG-INFO rename to Shared/lib/python3.4/site-packages/feedparser-5.2.1.egg-info/PKG-INFO index 1765e86..badfaf3 --- a/Shared/lib/python3.4/site-packages/feedparser-5.1.3.egg-info/PKG-INFO +++ b/Shared/lib/python3.4/site-packages/feedparser-5.2.1.egg-info/PKG-INFO @@ -1,12 +1,12 @@ Metadata-Version: 1.1 Name: feedparser -Version: 5.1.3 +Version: 5.2.1 Summary: Universal feed parser, handles RSS 0.9x, RSS 1.0, RSS 2.0, CDF, Atom 0.3, and Atom 1.0 feeds -Home-page: http://code.google.com/p/feedparser/ +Home-page: https://github.com/kurtmckee/feedparser Author: Kurt McKee Author-email: contactme@kurtmckee.org License: UNKNOWN -Download-URL: http://code.google.com/p/feedparser/ +Download-URL: https://pypi.python.org/pypi/feedparser Description: UNKNOWN Keywords: atom,cdf,feed,parser,rdf,rss Platform: POSIX @@ -26,5 +26,6 @@ Classifier: Programming Language :: Python :: 3.0 Classifier: Programming Language :: Python :: 3.1 Classifier: Programming Language :: Python :: 3.2 Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: Text Processing :: Markup :: XML diff --git a/Shared/lib/python3.4/site-packages/feedparser-5.1.3.egg-info/SOURCES.txt b/Shared/lib/python3.4/site-packages/feedparser-5.2.1.egg-info/SOURCES.txt old mode 100644 new mode 100755 similarity index 94% rename from Shared/lib/python3.4/site-packages/feedparser-5.1.3.egg-info/SOURCES.txt rename to Shared/lib/python3.4/site-packages/feedparser-5.2.1.egg-info/SOURCES.txt index efbe178..fa71cc9 --- a/Shared/lib/python3.4/site-packages/feedparser-5.1.3.egg-info/SOURCES.txt +++ b/Shared/lib/python3.4/site-packages/feedparser-5.2.1.egg-info/SOURCES.txt @@ -1,7 +1,7 @@ LICENSE MANIFEST.in NEWS -README +README.rst setup.cfg setup.py docs/add_custom_css.py @@ -46,7 +46,6 @@ docs/http.rst docs/index.rst docs/introduction.rst docs/license.rst -docs/microformats.rst docs/namespace-handling.rst docs/reference-bozo.rst docs/reference-bozo_exception.rst @@ -77,8 +76,6 @@ docs/reference-entry-title.rst docs/reference-entry-title_detail.rst docs/reference-entry-updated.rst docs/reference-entry-updated_parsed.rst -docs/reference-entry-vcard.rst -docs/reference-entry-xfn.rst docs/reference-entry.rst docs/reference-etag.rst docs/reference-feed-author.rst @@ -623,15 +620,14 @@ feedparser/tests/http/http_status_303.xml feedparser/tests/http/http_status_304.xml feedparser/tests/http/http_status_307.xml feedparser/tests/http/http_status_404.xml -feedparser/tests/http/http_status_9001.xml feedparser/tests/http/target.xml feedparser/tests/illformed/aaa_illformed.xml feedparser/tests/illformed/always_strip_doctype.xml feedparser/tests/illformed/http_high_bit_date.xml -feedparser/tests/illformed/non-ascii-tag.xml feedparser/tests/illformed/rdf_channel_empty_textinput.xml feedparser/tests/illformed/rss_empty_document.xml feedparser/tests/illformed/rss_incomplete_cdata.xml +feedparser/tests/illformed/rss_item_link_corrupted_ampersands.xml feedparser/tests/illformed/undeclared_namespace.xml feedparser/tests/illformed/chardet/big5.xml feedparser/tests/illformed/chardet/eucjp.xml @@ -641,131 +637,8 @@ feedparser/tests/illformed/chardet/koi8r.xml feedparser/tests/illformed/chardet/shiftjis.xml feedparser/tests/illformed/chardet/tis620.xml feedparser/tests/illformed/chardet/windows1255.xml -feedparser/tests/microformats/hcard/2-4-2-vcard.xml -feedparser/tests/microformats/hcard/3-1-1-fn-unicode-char.xml -feedparser/tests/microformats/hcard/3-1-1-fn.xml -feedparser/tests/microformats/hcard/3-1-2-n-2-plural.xml -feedparser/tests/microformats/hcard/3-1-2-n-2-singular.xml -feedparser/tests/microformats/hcard/3-1-2-n-plural.xml -feedparser/tests/microformats/hcard/3-1-2-n-singular.xml -feedparser/tests/microformats/hcard/3-1-3-nickname-2-plural.xml -feedparser/tests/microformats/hcard/3-1-3-nickname-2-singular.xml -feedparser/tests/microformats/hcard/3-1-3-nickname.xml -feedparser/tests/microformats/hcard/3-1-4-photo-inline.xml -feedparser/tests/microformats/hcard/3-1-4-photo.xml -feedparser/tests/microformats/hcard/3-1-5-bday-2.xml -feedparser/tests/microformats/hcard/3-1-5-bday-3.xml -feedparser/tests/microformats/hcard/3-1-5-bday.xml -feedparser/tests/microformats/hcard/3-2-1-adr.xml -feedparser/tests/microformats/hcard/3-2-2-label.xml -feedparser/tests/microformats/hcard/3-3-1-tel.xml -feedparser/tests/microformats/hcard/3-3-2-email-2.xml -feedparser/tests/microformats/hcard/3-3-2-email-3.xml -feedparser/tests/microformats/hcard/3-3-2-email.xml -feedparser/tests/microformats/hcard/3-3-3-mailer.xml -feedparser/tests/microformats/hcard/3-4-1-tz-2.xml -feedparser/tests/microformats/hcard/3-4-1-tz.xml -feedparser/tests/microformats/hcard/3-4-2-geo.xml -feedparser/tests/microformats/hcard/3-5-1-title.xml -feedparser/tests/microformats/hcard/3-5-2-role.xml -feedparser/tests/microformats/hcard/3-5-3-logo-2.xml -feedparser/tests/microformats/hcard/3-5-3-logo.xml -feedparser/tests/microformats/hcard/3-5-4-agent-2.xml -feedparser/tests/microformats/hcard/3-5-4-agent.xml -feedparser/tests/microformats/hcard/3-5-5-org.xml -feedparser/tests/microformats/hcard/3-6-1-categories-2-plural.xml -feedparser/tests/microformats/hcard/3-6-1-categories-2-singular.xml -feedparser/tests/microformats/hcard/3-6-1-categories.xml -feedparser/tests/microformats/hcard/3-6-2-note.xml -feedparser/tests/microformats/hcard/3-6-4-rev-2.xml -feedparser/tests/microformats/hcard/3-6-4-rev.xml -feedparser/tests/microformats/hcard/3-6-5-sort-string-2.xml -feedparser/tests/microformats/hcard/3-6-5-sort-string-3.xml -feedparser/tests/microformats/hcard/3-6-5-sort-string-4.xml -feedparser/tests/microformats/hcard/3-6-5-sort-string-5.xml -feedparser/tests/microformats/hcard/3-6-5-sort-string.xml -feedparser/tests/microformats/hcard/3-6-6-sound-2.xml -feedparser/tests/microformats/hcard/3-6-6-sound.xml -feedparser/tests/microformats/hcard/3-6-7-uid.xml -feedparser/tests/microformats/hcard/3-6-8-url.xml -feedparser/tests/microformats/hcard/3-7-1-class-2.xml -feedparser/tests/microformats/hcard/3-7-1-class-3.xml -feedparser/tests/microformats/hcard/3-7-1-class.xml -feedparser/tests/microformats/hcard/3-7-2-key.xml -feedparser/tests/microformats/hcard/7-authors.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_avi.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_bin.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_bz2.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_deb.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_dmg.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_exe.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_gz.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_hqx.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_img.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_iso.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_jar.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_m4a.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_m4v.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_mp2.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_mp3.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_mp4.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_msi.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_ogg.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_rar.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_rpm.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_sit.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_sitx.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_tar.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_tbz2.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_tgz.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_wma.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_wmv.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_z.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_ext_zip.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_type_application_ogg.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_type_audio.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_autodetect_by_type_video.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_href_invalid.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_no_autodetect.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_no_autodetect_xml.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_title.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_title_from_link_text.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_title_overrides_link_text.xml -feedparser/tests/microformats/rel_enclosure/rel_enclosure_type.xml -feedparser/tests/microformats/rel_tag/rel_tag_duplicate.xml -feedparser/tests/microformats/rel_tag/rel_tag_label.xml -feedparser/tests/microformats/rel_tag/rel_tag_scheme.xml -feedparser/tests/microformats/rel_tag/rel_tag_term.xml -feedparser/tests/microformats/rel_tag/rel_tag_term_trailing_slash.xml -feedparser/tests/microformats/xfn/xfn_acquaintance.xml -feedparser/tests/microformats/xfn/xfn_brother.xml -feedparser/tests/microformats/xfn/xfn_child.xml -feedparser/tests/microformats/xfn/xfn_co-resident.xml -feedparser/tests/microformats/xfn/xfn_co-worker.xml -feedparser/tests/microformats/xfn/xfn_colleague.xml -feedparser/tests/microformats/xfn/xfn_contact.xml -feedparser/tests/microformats/xfn/xfn_coresident.xml -feedparser/tests/microformats/xfn/xfn_coworker.xml -feedparser/tests/microformats/xfn/xfn_crush.xml -feedparser/tests/microformats/xfn/xfn_date.xml -feedparser/tests/microformats/xfn/xfn_friend.xml -feedparser/tests/microformats/xfn/xfn_href.xml -feedparser/tests/microformats/xfn/xfn_husband.xml -feedparser/tests/microformats/xfn/xfn_kin.xml -feedparser/tests/microformats/xfn/xfn_me.xml -feedparser/tests/microformats/xfn/xfn_met.xml -feedparser/tests/microformats/xfn/xfn_multiple.xml -feedparser/tests/microformats/xfn/xfn_muse.xml -feedparser/tests/microformats/xfn/xfn_name.xml -feedparser/tests/microformats/xfn/xfn_neighbor.xml -feedparser/tests/microformats/xfn/xfn_parent.xml -feedparser/tests/microformats/xfn/xfn_relative.xml -feedparser/tests/microformats/xfn/xfn_sibling.xml -feedparser/tests/microformats/xfn/xfn_sister.xml -feedparser/tests/microformats/xfn/xfn_spouse.xml -feedparser/tests/microformats/xfn/xfn_sweetheart.xml -feedparser/tests/microformats/xfn/xfn_wife.xml +feedparser/tests/illformed/geo/georss_point_no_coords.xml +feedparser/tests/illformed/geo/georss_polygon_insufficient_coords.xml feedparser/tests/wellformed/amp/amp01.xml feedparser/tests/wellformed/amp/amp02.xml feedparser/tests/wellformed/amp/amp03.xml @@ -988,6 +861,7 @@ feedparser/tests/wellformed/atom/feed_title_inline_markup_2.xml feedparser/tests/wellformed/atom/feed_title_naked_markup.xml feedparser/tests/wellformed/atom/feed_title_text_plain.xml feedparser/tests/wellformed/atom/feed_updated_parsed.xml +feedparser/tests/wellformed/atom/media_group.xml feedparser/tests/wellformed/atom/media_player1.xml feedparser/tests/wellformed/atom/media_thumbnail.xml feedparser/tests/wellformed/atom/relative_uri.xml @@ -1382,6 +1256,16 @@ feedparser/tests/wellformed/cdf/item_lastmod.xml feedparser/tests/wellformed/cdf/item_lastmod_parsed.xml feedparser/tests/wellformed/cdf/item_title.xml feedparser/tests/wellformed/feedburner/feedburner_browserfriendly.xml +feedparser/tests/wellformed/geo/georss_box.xml +feedparser/tests/wellformed/geo/georss_line.xml +feedparser/tests/wellformed/geo/georss_point.xml +feedparser/tests/wellformed/geo/georss_polygon.xml +feedparser/tests/wellformed/geo/gml_linestring.xml +feedparser/tests/wellformed/geo/gml_linestring_utm.xml +feedparser/tests/wellformed/geo/gml_point.xml +feedparser/tests/wellformed/geo/gml_point_3d.xml +feedparser/tests/wellformed/geo/gml_point_utm.xml +feedparser/tests/wellformed/geo/gml_polygon.xml feedparser/tests/wellformed/http/headers_content_location-relative.xml feedparser/tests/wellformed/http/headers_content_location-unsafe.xml feedparser/tests/wellformed/http/headers_etag.xml @@ -1508,8 +1392,6 @@ feedparser/tests/wellformed/lang/item_fullitem_xml_lang.xml feedparser/tests/wellformed/lang/item_fullitem_xml_lang_inherit.xml feedparser/tests/wellformed/lang/item_xhtml_body_xml_lang.xml feedparser/tests/wellformed/lang/item_xhtml_body_xml_lang_inherit.xml -feedparser/tests/wellformed/mf_hcard/3-5-5-org-unicode.xml -feedparser/tests/wellformed/mf_rel_tag/rel_tag_term_no_term.xml feedparser/tests/wellformed/namespace/atommathml.xml feedparser/tests/wellformed/namespace/atomsvg.xml feedparser/tests/wellformed/namespace/atomsvgdctitle.xml @@ -1532,9 +1414,16 @@ feedparser/tests/wellformed/namespace/rss2.0svg5.xml feedparser/tests/wellformed/namespace/rss2.0svgtitle.xml feedparser/tests/wellformed/namespace/rss2.0withAtomNS.xml feedparser/tests/wellformed/namespace/rss2.0xlink.xml +feedparser/tests/wellformed/namespace/unknown-namespace.xml feedparser/tests/wellformed/node_precedence/atom10_arbitrary_element.xml feedparser/tests/wellformed/node_precedence/atom10_id.xml feedparser/tests/wellformed/node_precedence/atom10_title.xml +feedparser/tests/wellformed/psc/atomsimplechapter.xml +feedparser/tests/wellformed/psc/atomsimplechapterexternal.xml +feedparser/tests/wellformed/psc/ignore_multiple_psc_chapters.xml +feedparser/tests/wellformed/psc/rss2.0simplechapter.xml +feedparser/tests/wellformed/psc/rss2.0simplechapter2items.xml +feedparser/tests/wellformed/psc/version_1.0_keyerror.xml feedparser/tests/wellformed/rdf/doctype_contains_entity_decl.xml feedparser/tests/wellformed/rdf/rdf_channel_description.xml feedparser/tests/wellformed/rdf/rdf_channel_link.xml @@ -1587,6 +1476,12 @@ feedparser/tests/wellformed/rss/channel_dcterms_issued.xml feedparser/tests/wellformed/rss/channel_dcterms_issued_parsed.xml feedparser/tests/wellformed/rss/channel_dcterms_modified.xml feedparser/tests/wellformed/rss/channel_dcterms_modified_parsed.xml +feedparser/tests/wellformed/rss/channel_dcterms_validity.xml +feedparser/tests/wellformed/rss/channel_dcterms_validity_end.xml +feedparser/tests/wellformed/rss/channel_dcterms_validity_end_parsed.xml +feedparser/tests/wellformed/rss/channel_dcterms_validity_parsed.xml +feedparser/tests/wellformed/rss/channel_dcterms_validity_start.xml +feedparser/tests/wellformed/rss/channel_dcterms_validity_start_parsed.xml feedparser/tests/wellformed/rss/channel_description.xml feedparser/tests/wellformed/rss/channel_description_escaped_markup.xml feedparser/tests/wellformed/rss/channel_description_map_tagline.xml @@ -1693,6 +1588,7 @@ feedparser/tests/wellformed/rss/item_fullitem_type.xml feedparser/tests/wellformed/rss/item_guid.xml feedparser/tests/wellformed/rss/item_guid_conflict_link.xml feedparser/tests/wellformed/rss/item_guid_guidislink.xml +feedparser/tests/wellformed/rss/item_guid_isPermaLink_ValueError.xml feedparser/tests/wellformed/rss/item_guid_isPermaLink_conflict_link.xml feedparser/tests/wellformed/rss/item_guid_isPermaLink_conflict_link_not_guidislink.xml feedparser/tests/wellformed/rss/item_guid_isPermaLink_guidislink.xml @@ -1706,6 +1602,8 @@ feedparser/tests/wellformed/rss/item_guid_not_permalink_not_url.xml feedparser/tests/wellformed/rss/item_image_link_bleed.xml feedparser/tests/wellformed/rss/item_image_link_conflict.xml feedparser/tests/wellformed/rss/item_link.xml +feedparser/tests/wellformed/rss/item_madeup_tags_element.xml +feedparser/tests/wellformed/rss/item_multiple_dc_creator.xml feedparser/tests/wellformed/rss/item_pubDate.xml feedparser/tests/wellformed/rss/item_pubDate_map_updated_parsed.xml feedparser/tests/wellformed/rss/item_source.xml diff --git a/Shared/lib/python3.4/site-packages/feedparser-5.1.3.egg-info/dependency_links.txt b/Shared/lib/python3.4/site-packages/feedparser-5.2.1.egg-info/dependency_links.txt old mode 100644 new mode 100755 similarity index 100% rename from Shared/lib/python3.4/site-packages/feedparser-5.1.3.egg-info/dependency_links.txt rename to Shared/lib/python3.4/site-packages/feedparser-5.2.1.egg-info/dependency_links.txt diff --git a/Shared/lib/python3.4/site-packages/feedparser-5.1.3.egg-info/installed-files.txt b/Shared/lib/python3.4/site-packages/feedparser-5.2.1.egg-info/installed-files.txt similarity index 100% rename from Shared/lib/python3.4/site-packages/feedparser-5.1.3.egg-info/installed-files.txt rename to Shared/lib/python3.4/site-packages/feedparser-5.2.1.egg-info/installed-files.txt diff --git a/Shared/lib/python3.4/site-packages/feedparser-5.1.3.egg-info/top_level.txt b/Shared/lib/python3.4/site-packages/feedparser-5.2.1.egg-info/top_level.txt old mode 100644 new mode 100755 similarity index 100% rename from Shared/lib/python3.4/site-packages/feedparser-5.1.3.egg-info/top_level.txt rename to Shared/lib/python3.4/site-packages/feedparser-5.2.1.egg-info/top_level.txt diff --git a/Shared/lib/python3.4/site-packages/feedparser.py b/Shared/lib/python3.4/site-packages/feedparser.py index 540f6e5..321e323 100644 --- a/Shared/lib/python3.4/site-packages/feedparser.py +++ b/Shared/lib/python3.4/site-packages/feedparser.py @@ -9,10 +9,10 @@ Required: Python 2.4 or later Recommended: iconv_codec """ -__version__ = "5.1.3" +__version__ = "5.2.1" __license__ = """ -Copyright (c) 2010-2012 Kurt McKee -Copyright (c) 2002-2008 Mark Pilgrim +Copyright 2010-2015 Kurt McKee +Copyright 2002-2008 Mark Pilgrim All rights reserved. Redistribution and use in source and binary forms, with or without modification, @@ -61,15 +61,6 @@ ACCEPT_HEADER = "application/atom+xml,application/rdf+xml,application/rss+xml,ap # of pre-installed parsers until it finds one that supports everything we need. PREFERRED_XML_PARSERS = ["drv_libxml2"] -# If you want feedparser to automatically run HTML markup through HTML Tidy, set -# this to 1. Requires mxTidy -# or utidylib . -TIDY_MARKUP = 0 - -# List of Python interfaces for HTML Tidy, in order of preference. Only useful -# if TIDY_MARKUP = 1 -PREFERRED_TIDY_INTERFACES = ["uTidy", "mxTidy"] - # If you want feedparser to automatically resolve all relative URIs, set this # to 1. RESOLVE_RELATIVE_URIS = 1 @@ -78,10 +69,6 @@ RESOLVE_RELATIVE_URIS = 1 # HTML content, set this to 1. SANITIZE_HTML = 1 -# If you want feedparser to automatically parse microformat content embedded -# in entry contents, set this to 1 -PARSE_MICROFORMATS = 1 - # ---------- Python 3 modules (make it work if possible) ---------- try: import rfc822 @@ -147,6 +134,7 @@ import cgi import codecs import copy import datetime +import itertools import re import struct import time @@ -157,6 +145,7 @@ import urllib.parse import warnings from html.entities import name2codepoint, codepoint2name, entitydefs +import collections try: from io import BytesIO as _StringIO @@ -203,8 +192,7 @@ else: _XML_AVAILABLE = 1 # sgmllib is not available by default in Python 3; if the end user doesn't have -# it available then we'll lose illformed XML parsing, content santizing, and -# microformat support (at least while feedparser depends on BeautifulSoup). +# it available then we'll lose illformed XML parsing and content santizing try: import sgmllib except ImportError: @@ -276,15 +264,6 @@ try: except ImportError: chardet = None -# BeautifulSoup is used to extract microformat content from HTML -# feedparser is tested using BeautifulSoup 3.2.0 -# http://www.crummy.com/software/BeautifulSoup/ -try: - import BeautifulSoup -except ImportError: - BeautifulSoup = None - PARSE_MICROFORMATS = False - # ---------- don't touch these ---------- class ThingsNobodyCaresAboutButMe(Exception): pass class CharacterEncodingOverride(ThingsNobodyCaresAboutButMe): pass @@ -328,6 +307,9 @@ class FeedParserDict(dict): 'tagline': 'subtitle', 'tagline_detail': 'subtitle_detail'} def __getitem__(self, key): + ''' + :return: A :class:`FeedParserDict`. + ''' if key == 'category': try: return dict.__getitem__(self, 'tags')[0]['term'] @@ -390,6 +372,9 @@ class FeedParserDict(dict): has_key = __contains__ def get(self, key, default=None): + ''' + :return: A :class:`FeedParserDict`. + ''' try: return self.__getitem__(key) except KeyError: @@ -451,16 +436,15 @@ _cp1252 = { _urifixer = re.compile('^([A-Za-z][A-Za-z0-9+-.]*://)(/*)(.*?)') def _urljoin(base, uri): uri = _urifixer.sub(r'\1\3', uri) - #try: if not isinstance(uri, str): uri = uri.decode('utf-8', 'ignore') - uri = urllib.parse.urljoin(base, uri) + try: + uri = urllib.parse.urljoin(base, uri) + except ValueError: + uri = '' if not isinstance(uri, str): return uri.decode('utf-8', 'ignore') return uri - #except: - # uri = urlparse.urlunparse([urllib.quote(part) for part in urlparse.urlparse(uri)]) - # return urlparse.urljoin(base, uri) class _FeedParserMixin: namespaces = { @@ -496,6 +480,8 @@ class _FeedParserMixin: 'http://freshmeat.net/rss/fm/': 'fm', 'http://xmlns.com/foaf/0.1/': 'foaf', 'http://www.w3.org/2003/01/geo/wgs84_pos#': 'geo', + 'http://www.georss.org/georss': 'georss', + 'http://www.opengis.net/gml': 'gml', 'http://postneo.com/icbm/': 'icbm', 'http://purl.org/rss/1.0/modules/image/': 'image', 'http://www.itunes.com/DTDs/PodCast-1.0.dtd': 'itunes', @@ -527,6 +513,7 @@ class _FeedParserMixin: 'http://www.w3.org/1999/xhtml': 'xhtml', 'http://www.w3.org/1999/xlink': 'xlink', 'http://www.w3.org/XML/1998/namespace': 'xml', + 'http://podlove.org/simple-chapters': 'psc', } _matchnamespaces = {} @@ -556,6 +543,10 @@ class _FeedParserMixin: self.incontributor = 0 self.inpublisher = 0 self.insource = 0 + + # georss + self.ingeometry = 0 + self.sourcedata = FeedParserDict() self.contentparams = FeedParserDict() self._summaryKey = None @@ -568,6 +559,11 @@ class _FeedParserMixin: self.svgOK = 0 self.title_depth = -1 self.depth = 0 + # psc_chapters_flag prevents multiple psc_chapters from being + # captured in a single entry or item. The transition states are + # None -> True -> False. psc_chapter elements will only be + # captured while it is True. + self.psc_chapters_flag = None if baselang: self.feeddata['language'] = baselang.replace('_','-') @@ -892,7 +888,9 @@ class _FeedParserMixin: # resolve relative URIs if (element in self.can_be_relative_uri) and output: - output = self.resolveURI(output) + # do not resolve guid elements with isPermalink="false" + if not element == 'id' or self.guidislink: + output = self.resolveURI(output) # decode entities within embedded markup if not self.contentparams.get('base64', 0): @@ -920,22 +918,6 @@ class _FeedParserMixin: if element in self.can_contain_relative_uris: output = _resolveRelativeURIs(output, self.baseuri, self.encoding, self.contentparams.get('type', 'text/html')) - # parse microformats - # (must do this before sanitizing because some microformats - # rely on elements that we sanitize) - if PARSE_MICROFORMATS and is_htmlish and element in ['content', 'description', 'summary']: - mfresults = _parseMicroformats(output, self.baseuri, self.encoding) - if mfresults: - for tag in mfresults.get('tags', []): - self._addTag(tag['term'], tag['scheme'], tag['label']) - for enclosure in mfresults.get('enclosures', []): - self._start_enclosure(enclosure) - for xfn in mfresults.get('xfn', []): - self._addXFN(xfn['relationships'], xfn['href'], xfn['name']) - vcard = mfresults.get('vcard') - if vcard: - self._getContext()['vcard'] = vcard - # sanitize embedded markup if is_htmlish and SANITIZE_HTML: if element in self.can_contain_dangerous_markup: @@ -956,8 +938,8 @@ class _FeedParserMixin: if isinstance(output, str): output = output.translate(_cp1252) - # categories/tags/keywords/whatever are handled in _end_category - if element == 'category': + # categories/tags/keywords/whatever are handled in _end_category or _end_tags or _end_itunes_keywords + if element in ('category', 'tags', 'itunes_keywords'): return output if element == 'title' and -1 < self.title_depth <= self.depth: @@ -975,6 +957,7 @@ class _FeedParserMixin: # query variables in urls in link elements are improperly # converted from `?a=1&b=2` to `?a=1&b;=2` as if they're # unhandled character references. fix this special case. + output = output.replace('&', '&') output = re.sub("&([A-Za-z0-9_]+);", "&\g<1>", output) self.entries[-1][element] = output if output: @@ -1312,7 +1295,7 @@ class _FeedParserMixin: def _sync_author_detail(self, key='author'): context = self._getContext() - detail = context.get('%s_detail' % key) + detail = context.get('%ss' % key, [FeedParserDict()])[-1] if detail: name = detail.get('name') email = detail.get('email') @@ -1341,11 +1324,11 @@ class _FeedParserMixin: author = author[:-1] author = author.strip() if author or email: - context.setdefault('%s_detail' % key, FeedParserDict()) + context.setdefault('%s_detail' % key, detail) if author: - context['%s_detail' % key]['name'] = author + detail['name'] = author if email: - context['%s_detail' % key]['email'] = email + detail['email'] = email def _start_subtitle(self, attrsD): self.pushContent('subtitle', attrsD, 'text/plain', 1) @@ -1373,6 +1356,7 @@ class _FeedParserMixin: self.inentry = 1 self.guidislink = 0 self.title_depth = -1 + self.psc_chapters_flag = None id = self._getAttribute(attrsD, 'rdf:about') if id: context = self._getContext() @@ -1402,6 +1386,20 @@ class _FeedParserMixin: self._sync_author_detail('publisher') _end_webmaster = _end_dc_publisher + def _start_dcterms_valid(self, attrsD): + self.push('validity', 1) + + def _end_dcterms_valid(self): + for validity_detail in self.pop('validity').split(';'): + if '=' in validity_detail: + key, value = validity_detail.split('=', 1) + if key == 'start': + self._save('validity_start', value, overwrite=True) + self._save('validity_start_parsed', _parse_date(value), overwrite=True) + elif key == 'end': + self._save('validity_end', value, overwrite=True) + self._save('validity_end_parsed', _parse_date(value), overwrite=True) + def _start_published(self, attrsD): self.push('published', 1) _start_dcterms_issued = _start_published @@ -1446,6 +1444,128 @@ class _FeedParserMixin: def _end_expirationdate(self): self._save('expired_parsed', _parse_date(self.pop('expired')), overwrite=True) + # geospatial location, or "where", from georss.org + + def _start_georssgeom(self, attrsD): + self.push('geometry', 0) + context = self._getContext() + context['where'] = FeedParserDict() + + _start_georss_point = _start_georssgeom + _start_georss_line = _start_georssgeom + _start_georss_polygon = _start_georssgeom + _start_georss_box = _start_georssgeom + + def _save_where(self, geometry): + context = self._getContext() + context['where'].update(geometry) + + def _end_georss_point(self): + geometry = _parse_georss_point(self.pop('geometry')) + if geometry: + self._save_where(geometry) + + def _end_georss_line(self): + geometry = _parse_georss_line(self.pop('geometry')) + if geometry: + self._save_where(geometry) + + def _end_georss_polygon(self): + this = self.pop('geometry') + geometry = _parse_georss_polygon(this) + if geometry: + self._save_where(geometry) + + def _end_georss_box(self): + geometry = _parse_georss_box(self.pop('geometry')) + if geometry: + self._save_where(geometry) + + def _start_where(self, attrsD): + self.push('where', 0) + context = self._getContext() + context['where'] = FeedParserDict() + _start_georss_where = _start_where + + def _parse_srs_attrs(self, attrsD): + srsName = attrsD.get('srsname') + try: + srsDimension = int(attrsD.get('srsdimension', '2')) + except ValueError: + srsDimension = 2 + context = self._getContext() + context['where']['srsName'] = srsName + context['where']['srsDimension'] = srsDimension + + def _start_gml_point(self, attrsD): + self._parse_srs_attrs(attrsD) + self.ingeometry = 1 + self.push('geometry', 0) + + def _start_gml_linestring(self, attrsD): + self._parse_srs_attrs(attrsD) + self.ingeometry = 'linestring' + self.push('geometry', 0) + + def _start_gml_polygon(self, attrsD): + self._parse_srs_attrs(attrsD) + self.push('geometry', 0) + + def _start_gml_exterior(self, attrsD): + self.push('geometry', 0) + + def _start_gml_linearring(self, attrsD): + self.ingeometry = 'polygon' + self.push('geometry', 0) + + def _start_gml_pos(self, attrsD): + self.push('pos', 0) + + def _end_gml_pos(self): + this = self.pop('pos') + context = self._getContext() + srsName = context['where'].get('srsName') + srsDimension = context['where'].get('srsDimension', 2) + swap = True + if srsName and "EPSG" in srsName: + epsg = int(srsName.split(":")[-1]) + swap = bool(epsg in _geogCS) + geometry = _parse_georss_point(this, swap=swap, dims=srsDimension) + if geometry: + self._save_where(geometry) + + def _start_gml_poslist(self, attrsD): + self.push('pos', 0) + + def _end_gml_poslist(self): + this = self.pop('pos') + context = self._getContext() + srsName = context['where'].get('srsName') + srsDimension = context['where'].get('srsDimension', 2) + swap = True + if srsName and "EPSG" in srsName: + epsg = int(srsName.split(":")[-1]) + swap = bool(epsg in _geogCS) + geometry = _parse_poslist( + this, self.ingeometry, swap=swap, dims=srsDimension) + if geometry: + self._save_where(geometry) + + def _end_geom(self): + self.ingeometry = 0 + self.pop('geometry') + _end_gml_point = _end_geom + _end_gml_linestring = _end_geom + _end_gml_linearring = _end_geom + _end_gml_exterior = _end_geom + _end_gml_polygon = _end_geom + + def _end_where(self): + self.pop('where') + _end_georss_where = _end_where + + # end geospatial + def _start_cc_license(self, attrsD): context = self._getContext() value = self._getAttribute(attrsD, 'rdf:resource') @@ -1470,22 +1590,25 @@ class _FeedParserMixin: del context['license'] _end_creativeCommons_license = _end_creativecommons_license - def _addXFN(self, relationships, href, name): - context = self._getContext() - xfn = context.setdefault('xfn', []) - value = FeedParserDict({'relationships': relationships, 'href': href, 'name': name}) - if value not in xfn: - xfn.append(value) - def _addTag(self, term, scheme, label): context = self._getContext() tags = context.setdefault('tags', []) if (not term) and (not scheme) and (not label): return - value = FeedParserDict({'term': term, 'scheme': scheme, 'label': label}) + value = FeedParserDict(term=term, scheme=scheme, label=label) if value not in tags: tags.append(value) + def _start_tags(self, attrsD): + # This is a completely-made up element. Its semantics are determined + # only by a single feed that precipitated bug report 392 on Google Code. + # In short, this is junk code. + self.push('tags', 1) + + def _end_tags(self): + for term in self.pop('tags').split(','): + self._addTag(term.strip(), None, None) + def _start_category(self, attrsD): term = attrsD.get('term') scheme = attrsD.get('scheme', attrsD.get('domain')) @@ -1504,6 +1627,11 @@ class _FeedParserMixin: if term.strip(): self._addTag(term.strip(), 'http://www.itunes.com/', None) + def _end_media_keywords(self): + for term in self.pop('media_keywords').split(','): + if term.strip(): + self._addTag(term.strip(), None, None) + def _start_itunes_category(self, attrsD): self._addTag(attrsD.get('text'), 'http://www.itunes.com/', None) self.push('category', 1) @@ -1593,6 +1721,7 @@ class _FeedParserMixin: else: self.pushContent('description', attrsD, 'text/html', self.infeed or self.inentry or self.insource) _start_dc_description = _start_description + _start_media_description = _start_description def _start_abstract(self, attrsD): self.pushContent('description', attrsD, 'text/plain', self.infeed or self.inentry or self.insource) @@ -1605,6 +1734,7 @@ class _FeedParserMixin: self._summaryKey = None _end_abstract = _end_description _end_dc_description = _end_description + _end_media_description = _end_description def _start_info(self, attrsD): self.pushContent('info', attrsD, 'text/plain', 1) @@ -1728,6 +1858,55 @@ class _FeedParserMixin: # by applications that only need to know if the content is explicit. self._getContext()['itunes_explicit'] = (None, False, True)[(value == 'yes' and 2) or value == 'clean' or 0] + def _start_media_group(self, attrsD): + # don't do anything, but don't break the enclosed tags either + pass + + def _start_media_rating(self, attrsD): + context = self._getContext() + context.setdefault('media_rating', attrsD) + self.push('rating', 1) + + def _end_media_rating(self): + rating = self.pop('rating') + if rating is not None and rating.strip(): + context = self._getContext() + context['media_rating']['content'] = rating + + def _start_media_credit(self, attrsD): + context = self._getContext() + context.setdefault('media_credit', []) + context['media_credit'].append(attrsD) + self.push('credit', 1) + + def _end_media_credit(self): + credit = self.pop('credit') + if credit != None and len(credit.strip()) != 0: + context = self._getContext() + context['media_credit'][-1]['content'] = credit + + def _start_media_restriction(self, attrsD): + context = self._getContext() + context.setdefault('media_restriction', attrsD) + self.push('restriction', 1) + + def _end_media_restriction(self): + restriction = self.pop('restriction') + if restriction != None and len(restriction.strip()) != 0: + context = self._getContext() + context['media_restriction']['content'] = [cc.strip().lower() for cc in restriction.split(' ')] + + def _start_media_license(self, attrsD): + context = self._getContext() + context.setdefault('media_license', attrsD) + self.push('license', 1) + + def _end_media_license(self): + license = self.pop('license') + if license != None and len(license.strip()) != 0: + context = self._getContext() + context['media_license']['content'] = license + def _start_media_content(self, attrsD): context = self._getContext() context.setdefault('media_content', []) @@ -1766,6 +1945,26 @@ class _FeedParserMixin: return context['newlocation'] = _makeSafeAbsoluteURI(self.baseuri, url.strip()) + def _start_psc_chapters(self, attrsD): + if self.psc_chapters_flag is None: + # Transition from None -> True + self.psc_chapters_flag = True + attrsD['chapters'] = [] + self._getContext()['psc_chapters'] = FeedParserDict(attrsD) + + def _end_psc_chapters(self): + # Transition from True -> False + self.psc_chapters_flag = False + + def _start_psc_chapter(self, attrsD): + if self.psc_chapters_flag: + start = self._getAttribute(attrsD, 'start') + attrsD['start_parsed'] = _parse_psc_chapter_start(start) + + context = self._getContext()['psc_chapters'] + context['chapters'].append(FeedParserDict(attrsD)) + + if _XML_AVAILABLE: class _StrictFeedParser(_FeedParserMixin, xml.sax.handler.ContentHandler): def __init__(self, baseuri, baselang, encoding): @@ -1829,6 +2028,7 @@ if _XML_AVAILABLE: attrsD[str(attrlocalname).lower()] = attrvalue for qname in attrs.getQNames(): attrsD[str(qname).lower()] = attrs.getValueByQName(qname) + localname = str(localname).lower() self.unknown_starttag(localname, list(attrsD.items())) def characters(self, text): @@ -2075,455 +2275,18 @@ class _LooseFeedParser(_FeedParserMixin, _BaseHTMLProcessor): data = data.replace('&', '&') data = data.replace('"', '"') data = data.replace(''', "'") + data = data.replace('/', '/') + data = data.replace('/', '/') return data def strattrs(self, attrs): return ''.join([' %s="%s"' % (n,v.replace('"','"')) for n,v in attrs]) -class _MicroformatsParser: - STRING = 1 - DATE = 2 - URI = 3 - NODE = 4 - EMAIL = 5 - - known_xfn_relationships = set(['contact', 'acquaintance', 'friend', 'met', 'co-worker', 'coworker', 'colleague', 'co-resident', 'coresident', 'neighbor', 'child', 'parent', 'sibling', 'brother', 'sister', 'spouse', 'wife', 'husband', 'kin', 'relative', 'muse', 'crush', 'date', 'sweetheart', 'me']) - known_binary_extensions = set(['zip','rar','exe','gz','tar','tgz','tbz2','bz2','z','7z','dmg','img','sit','sitx','hqx','deb','rpm','bz2','jar','rar','iso','bin','msi','mp2','mp3','ogg','ogm','mp4','m4v','m4a','avi','wma','wmv']) - - def __init__(self, data, baseuri, encoding): - self.document = BeautifulSoup.BeautifulSoup(data) - self.baseuri = baseuri - self.encoding = encoding - if isinstance(data, str): - data = data.encode(encoding) - self.tags = [] - self.enclosures = [] - self.xfn = [] - self.vcard = None - - def vcardEscape(self, s): - if isinstance(s, str): - s = s.replace(',', '\\,').replace(';', '\\;').replace('\n', '\\n') - return s - - def vcardFold(self, s): - s = re.sub(';+$', '', s) - sFolded = '' - iMax = 75 - sPrefix = '' - while len(s) > iMax: - sFolded += sPrefix + s[:iMax] + '\n' - s = s[iMax:] - sPrefix = ' ' - iMax = 74 - sFolded += sPrefix + s - return sFolded - - def normalize(self, s): - return re.sub(r'\s+', ' ', s).strip() - - def unique(self, aList): - results = [] - for element in aList: - if element not in results: - results.append(element) - return results - - def toISO8601(self, dt): - return time.strftime('%Y-%m-%dT%H:%M:%SZ', dt) - - def getPropertyValue(self, elmRoot, sProperty, iPropertyType=4, bAllowMultiple=0, bAutoEscape=0): - all = lambda x: 1 - sProperty = sProperty.lower() - bFound = 0 - bNormalize = 1 - propertyMatch = {'class': re.compile(r'\b%s\b' % sProperty)} - if bAllowMultiple and (iPropertyType != self.NODE): - snapResults = [] - containers = elmRoot(['ul', 'ol'], propertyMatch) - for container in containers: - snapResults.extend(container('li')) - bFound = (len(snapResults) != 0) - if not bFound: - snapResults = elmRoot(all, propertyMatch) - bFound = (len(snapResults) != 0) - if (not bFound) and (sProperty == 'value'): - snapResults = elmRoot('pre') - bFound = (len(snapResults) != 0) - bNormalize = not bFound - if not bFound: - snapResults = [elmRoot] - bFound = (len(snapResults) != 0) - arFilter = [] - if sProperty == 'vcard': - snapFilter = elmRoot(all, propertyMatch) - for node in snapFilter: - if node.findParent(all, propertyMatch): - arFilter.append(node) - arResults = [] - for node in snapResults: - if node not in arFilter: - arResults.append(node) - bFound = (len(arResults) != 0) - if not bFound: - if bAllowMultiple: - return [] - elif iPropertyType == self.STRING: - return '' - elif iPropertyType == self.DATE: - return None - elif iPropertyType == self.URI: - return '' - elif iPropertyType == self.NODE: - return None - else: - return None - arValues = [] - for elmResult in arResults: - sValue = None - if iPropertyType == self.NODE: - if bAllowMultiple: - arValues.append(elmResult) - continue - else: - return elmResult - sNodeName = elmResult.name.lower() - if (iPropertyType == self.EMAIL) and (sNodeName == 'a'): - sValue = (elmResult.get('href') or '').split('mailto:').pop().split('?')[0] - if sValue: - sValue = bNormalize and self.normalize(sValue) or sValue.strip() - if (not sValue) and (sNodeName == 'abbr'): - sValue = elmResult.get('title') - if sValue: - sValue = bNormalize and self.normalize(sValue) or sValue.strip() - if (not sValue) and (iPropertyType == self.URI): - if sNodeName == 'a': - sValue = elmResult.get('href') - elif sNodeName == 'img': - sValue = elmResult.get('src') - elif sNodeName == 'object': - sValue = elmResult.get('data') - if sValue: - sValue = bNormalize and self.normalize(sValue) or sValue.strip() - if (not sValue) and (sNodeName == 'img'): - sValue = elmResult.get('alt') - if sValue: - sValue = bNormalize and self.normalize(sValue) or sValue.strip() - if not sValue: - sValue = elmResult.renderContents() - sValue = re.sub(r'<\S[^>]*>', '', sValue) - sValue = sValue.replace('\r\n', '\n') - sValue = sValue.replace('\r', '\n') - if sValue: - sValue = bNormalize and self.normalize(sValue) or sValue.strip() - if not sValue: - continue - if iPropertyType == self.DATE: - sValue = _parse_date_iso8601(sValue) - if bAllowMultiple: - arValues.append(bAutoEscape and self.vcardEscape(sValue) or sValue) - else: - return bAutoEscape and self.vcardEscape(sValue) or sValue - return arValues - - def findVCards(self, elmRoot, bAgentParsing=0): - sVCards = '' - - if not bAgentParsing: - arCards = self.getPropertyValue(elmRoot, 'vcard', bAllowMultiple=1) - else: - arCards = [elmRoot] - - for elmCard in arCards: - arLines = [] - - def processSingleString(sProperty): - sValue = self.getPropertyValue(elmCard, sProperty, self.STRING, bAutoEscape=1).decode(self.encoding) - if sValue: - arLines.append(self.vcardFold(sProperty.upper() + ':' + sValue)) - return sValue or '' - - def processSingleURI(sProperty): - sValue = self.getPropertyValue(elmCard, sProperty, self.URI) - if sValue: - sContentType = '' - sEncoding = '' - sValueKey = '' - if sValue.startswith('data:'): - sEncoding = ';ENCODING=b' - sContentType = sValue.split(';')[0].split('/').pop() - sValue = sValue.split(',', 1).pop() - else: - elmValue = self.getPropertyValue(elmCard, sProperty) - if elmValue: - if sProperty != 'url': - sValueKey = ';VALUE=uri' - sContentType = elmValue.get('type', '').strip().split('/').pop().strip() - sContentType = sContentType.upper() - if sContentType == 'OCTET-STREAM': - sContentType = '' - if sContentType: - sContentType = ';TYPE=' + sContentType.upper() - arLines.append(self.vcardFold(sProperty.upper() + sEncoding + sContentType + sValueKey + ':' + sValue)) - - def processTypeValue(sProperty, arDefaultType, arForceType=None): - arResults = self.getPropertyValue(elmCard, sProperty, bAllowMultiple=1) - for elmResult in arResults: - arType = self.getPropertyValue(elmResult, 'type', self.STRING, 1, 1) - if arForceType: - arType = self.unique(arForceType + arType) - if not arType: - arType = arDefaultType - sValue = self.getPropertyValue(elmResult, 'value', self.EMAIL, 0) - if sValue: - arLines.append(self.vcardFold(sProperty.upper() + ';TYPE=' + ','.join(arType) + ':' + sValue)) - - # AGENT - # must do this before all other properties because it is destructive - # (removes nested class="vcard" nodes so they don't interfere with - # this vcard's other properties) - arAgent = self.getPropertyValue(elmCard, 'agent', bAllowMultiple=1) - for elmAgent in arAgent: - if re.compile(r'\bvcard\b').search(elmAgent.get('class')): - sAgentValue = self.findVCards(elmAgent, 1) + '\n' - sAgentValue = sAgentValue.replace('\n', '\\n') - sAgentValue = sAgentValue.replace(';', '\\;') - if sAgentValue: - arLines.append(self.vcardFold('AGENT:' + sAgentValue)) - # Completely remove the agent element from the parse tree - elmAgent.extract() - else: - sAgentValue = self.getPropertyValue(elmAgent, 'value', self.URI, bAutoEscape=1); - if sAgentValue: - arLines.append(self.vcardFold('AGENT;VALUE=uri:' + sAgentValue)) - - # FN (full name) - sFN = processSingleString('fn') - - # N (name) - elmName = self.getPropertyValue(elmCard, 'n') - if elmName: - sFamilyName = self.getPropertyValue(elmName, 'family-name', self.STRING, bAutoEscape=1) - sGivenName = self.getPropertyValue(elmName, 'given-name', self.STRING, bAutoEscape=1) - arAdditionalNames = self.getPropertyValue(elmName, 'additional-name', self.STRING, 1, 1) + self.getPropertyValue(elmName, 'additional-names', self.STRING, 1, 1) - arHonorificPrefixes = self.getPropertyValue(elmName, 'honorific-prefix', self.STRING, 1, 1) + self.getPropertyValue(elmName, 'honorific-prefixes', self.STRING, 1, 1) - arHonorificSuffixes = self.getPropertyValue(elmName, 'honorific-suffix', self.STRING, 1, 1) + self.getPropertyValue(elmName, 'honorific-suffixes', self.STRING, 1, 1) - arLines.append(self.vcardFold('N:' + sFamilyName + ';' + - sGivenName + ';' + - ','.join(arAdditionalNames) + ';' + - ','.join(arHonorificPrefixes) + ';' + - ','.join(arHonorificSuffixes))) - elif sFN: - # implied "N" optimization - # http://microformats.org/wiki/hcard#Implied_.22N.22_Optimization - arNames = self.normalize(sFN).split() - if len(arNames) == 2: - bFamilyNameFirst = (arNames[0].endswith(',') or - len(arNames[1]) == 1 or - ((len(arNames[1]) == 2) and (arNames[1].endswith('.')))) - if bFamilyNameFirst: - arLines.append(self.vcardFold('N:' + arNames[0] + ';' + arNames[1])) - else: - arLines.append(self.vcardFold('N:' + arNames[1] + ';' + arNames[0])) - - # SORT-STRING - sSortString = self.getPropertyValue(elmCard, 'sort-string', self.STRING, bAutoEscape=1) - if sSortString: - arLines.append(self.vcardFold('SORT-STRING:' + sSortString)) - - # NICKNAME - arNickname = self.getPropertyValue(elmCard, 'nickname', self.STRING, 1, 1) - if arNickname: - arLines.append(self.vcardFold('NICKNAME:' + ','.join(arNickname))) - - # PHOTO - processSingleURI('photo') - - # BDAY - dtBday = self.getPropertyValue(elmCard, 'bday', self.DATE) - if dtBday: - arLines.append(self.vcardFold('BDAY:' + self.toISO8601(dtBday))) - - # ADR (address) - arAdr = self.getPropertyValue(elmCard, 'adr', bAllowMultiple=1) - for elmAdr in arAdr: - arType = self.getPropertyValue(elmAdr, 'type', self.STRING, 1, 1) - if not arType: - arType = ['intl','postal','parcel','work'] # default adr types, see RFC 2426 section 3.2.1 - sPostOfficeBox = self.getPropertyValue(elmAdr, 'post-office-box', self.STRING, 0, 1) - sExtendedAddress = self.getPropertyValue(elmAdr, 'extended-address', self.STRING, 0, 1) - sStreetAddress = self.getPropertyValue(elmAdr, 'street-address', self.STRING, 0, 1) - sLocality = self.getPropertyValue(elmAdr, 'locality', self.STRING, 0, 1) - sRegion = self.getPropertyValue(elmAdr, 'region', self.STRING, 0, 1) - sPostalCode = self.getPropertyValue(elmAdr, 'postal-code', self.STRING, 0, 1) - sCountryName = self.getPropertyValue(elmAdr, 'country-name', self.STRING, 0, 1) - arLines.append(self.vcardFold('ADR;TYPE=' + ','.join(arType) + ':' + - sPostOfficeBox + ';' + - sExtendedAddress + ';' + - sStreetAddress + ';' + - sLocality + ';' + - sRegion + ';' + - sPostalCode + ';' + - sCountryName)) - - # LABEL - processTypeValue('label', ['intl','postal','parcel','work']) - - # TEL (phone number) - processTypeValue('tel', ['voice']) - - # EMAIL - processTypeValue('email', ['internet'], ['internet']) - - # MAILER - processSingleString('mailer') - - # TZ (timezone) - processSingleString('tz') - - # GEO (geographical information) - elmGeo = self.getPropertyValue(elmCard, 'geo') - if elmGeo: - sLatitude = self.getPropertyValue(elmGeo, 'latitude', self.STRING, 0, 1) - sLongitude = self.getPropertyValue(elmGeo, 'longitude', self.STRING, 0, 1) - arLines.append(self.vcardFold('GEO:' + sLatitude + ';' + sLongitude)) - - # TITLE - processSingleString('title') - - # ROLE - processSingleString('role') - - # LOGO - processSingleURI('logo') - - # ORG (organization) - elmOrg = self.getPropertyValue(elmCard, 'org') - if elmOrg: - sOrganizationName = self.getPropertyValue(elmOrg, 'organization-name', self.STRING, 0, 1) - if not sOrganizationName: - # implied "organization-name" optimization - # http://microformats.org/wiki/hcard#Implied_.22organization-name.22_Optimization - sOrganizationName = self.getPropertyValue(elmCard, 'org', self.STRING, 0, 1) - if sOrganizationName: - arLines.append(self.vcardFold('ORG:' + sOrganizationName)) - else: - arOrganizationUnit = self.getPropertyValue(elmOrg, 'organization-unit', self.STRING, 1, 1) - arLines.append(self.vcardFold('ORG:' + sOrganizationName + ';' + ';'.join(arOrganizationUnit))) - - # CATEGORY - arCategory = self.getPropertyValue(elmCard, 'category', self.STRING, 1, 1) + self.getPropertyValue(elmCard, 'categories', self.STRING, 1, 1) - if arCategory: - arLines.append(self.vcardFold('CATEGORIES:' + ','.join(arCategory))) - - # NOTE - processSingleString('note') - - # REV - processSingleString('rev') - - # SOUND - processSingleURI('sound') - - # UID - processSingleString('uid') - - # URL - processSingleURI('url') - - # CLASS - processSingleString('class') - - # KEY - processSingleURI('key') - - if arLines: - arLines = ['BEGIN:vCard','VERSION:3.0'] + arLines + ['END:vCard'] - # XXX - this is super ugly; properly fix this with issue 148 - for i, s in enumerate(arLines): - if not isinstance(s, str): - arLines[i] = s.decode('utf-8', 'ignore') - sVCards += '\n'.join(arLines) + '\n' - - return sVCards.strip() - - def isProbablyDownloadable(self, elm): - attrsD = elm.attrMap - if 'href' not in attrsD: - return 0 - linktype = attrsD.get('type', '').strip() - if linktype.startswith('audio/') or \ - linktype.startswith('video/') or \ - (linktype.startswith('application/') and not linktype.endswith('xml')): - return 1 - try: - path = urllib.parse.urlparse(attrsD['href'])[2] - except ValueError: - return 0 - if path.find('.') == -1: - return 0 - fileext = path.split('.').pop().lower() - return fileext in self.known_binary_extensions - - def findTags(self): - all = lambda x: 1 - for elm in self.document(all, {'rel': re.compile(r'\btag\b')}): - href = elm.get('href') - if not href: - continue - urlscheme, domain, path, params, query, fragment = \ - urllib.parse.urlparse(_urljoin(self.baseuri, href)) - segments = path.split('/') - tag = segments.pop() - if not tag: - if segments: - tag = segments.pop() - else: - # there are no tags - continue - tagscheme = urllib.parse.urlunparse((urlscheme, domain, '/'.join(segments), '', '', '')) - if not tagscheme.endswith('/'): - tagscheme += '/' - self.tags.append(FeedParserDict({"term": tag, "scheme": tagscheme, "label": elm.string or ''})) - - def findEnclosures(self): - all = lambda x: 1 - enclosure_match = re.compile(r'\benclosure\b') - for elm in self.document(all, {'href': re.compile(r'.+')}): - if not enclosure_match.search(elm.get('rel', '')) and not self.isProbablyDownloadable(elm): - continue - if elm.attrMap not in self.enclosures: - self.enclosures.append(elm.attrMap) - if elm.string and not elm.get('title'): - self.enclosures[-1]['title'] = elm.string - - def findXFN(self): - all = lambda x: 1 - for elm in self.document(all, {'rel': re.compile('.+'), 'href': re.compile('.+')}): - rels = elm.get('rel', '').split() - xfn_rels = [r for r in rels if r in self.known_xfn_relationships] - if xfn_rels: - self.xfn.append({"relationships": xfn_rels, "href": elm.get('href', ''), "name": elm.string}) - -def _parseMicroformats(htmlSource, baseURI, encoding): - if not BeautifulSoup: - return - try: - p = _MicroformatsParser(htmlSource, baseURI, encoding) - except UnicodeEncodeError: - # sgmllib throws this exception when performing lookups of tags - # with non-ASCII characters in them. - return - p.vcard = p.findVCards(p.document) - p.findTags() - p.findEnclosures() - p.findXFN() - return {"tags": p.tags, "enclosures": p.enclosures, "xfn": p.xfn, "vcard": p.vcard} - class _RelativeURIResolver(_BaseHTMLProcessor): relative_uris = set([('a', 'href'), ('applet', 'codebase'), ('area', 'href'), + ('audio', 'src'), ('blockquote', 'cite'), ('body', 'background'), ('del', 'cite'), @@ -2546,7 +2309,9 @@ class _RelativeURIResolver(_BaseHTMLProcessor): ('object', 'usemap'), ('q', 'cite'), ('script', 'src'), - ('video', 'poster')]) + ('source', 'src'), + ('video', 'poster'), + ('video', 'src')]) def __init__(self, baseuri, encoding, _type): _BaseHTMLProcessor.__init__(self, encoding, _type) @@ -2571,10 +2336,7 @@ def _resolveRelativeURIs(htmlSource, baseURI, encoding, _type): def _makeSafeAbsoluteURI(base, rel=None): # bail if ACCEPTABLE_URI_SCHEMES is empty if not ACCEPTABLE_URI_SCHEMES: - try: - return _urljoin(base, rel or '') - except ValueError: - return '' + return _urljoin(base, rel or '') if not base: return rel or '' if not rel: @@ -2585,10 +2347,7 @@ def _makeSafeAbsoluteURI(base, rel=None): if not scheme or scheme in ACCEPTABLE_URI_SCHEMES: return base return '' - try: - uri = _urljoin(base, rel) - except ValueError: - return '' + uri = _urljoin(base, rel) if uri.strip().split(':', 1)[0] not in ACCEPTABLE_URI_SCHEMES: return '' return uri @@ -2656,21 +2415,154 @@ class _HTMLSanitizer(_BaseHTMLProcessor): valid_css_values = re.compile('^(#[0-9a-f]+|rgb\(\d+%?,\d*%?,?\d*%?\)?|' + '\d{0,2}\.?\d{0,2}(cm|em|ex|in|mm|pc|pt|px|%|,|\))?)$') - mathml_elements = set(['annotation', 'annotation-xml', 'maction', 'math', - 'merror', 'mfenced', 'mfrac', 'mi', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', - 'mphantom', 'mprescripts', 'mroot', 'mrow', 'mspace', 'msqrt', 'mstyle', - 'msub', 'msubsup', 'msup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', - 'munderover', 'none', 'semantics']) + mathml_elements = set([ + 'annotation', + 'annotation-xml', + 'maction', + 'maligngroup', + 'malignmark', + 'math', + 'menclose', + 'merror', + 'mfenced', + 'mfrac', + 'mglyph', + 'mi', + 'mlabeledtr', + 'mlongdiv', + 'mmultiscripts', + 'mn', + 'mo', + 'mover', + 'mpadded', + 'mphantom', + 'mprescripts', + 'mroot', + 'mrow', + 'ms', + 'mscarries', + 'mscarry', + 'msgroup', + 'msline', + 'mspace', + 'msqrt', + 'msrow', + 'mstack', + 'mstyle', + 'msub', + 'msubsup', + 'msup', + 'mtable', + 'mtd', + 'mtext', + 'mtr', + 'munder', + 'munderover', + 'none', + 'semantics', + ]) - mathml_attributes = set(['actiontype', 'align', 'columnalign', 'columnalign', - 'columnalign', 'close', 'columnlines', 'columnspacing', 'columnspan', 'depth', - 'display', 'displaystyle', 'encoding', 'equalcolumns', 'equalrows', - 'fence', 'fontstyle', 'fontweight', 'frame', 'height', 'linethickness', - 'lspace', 'mathbackground', 'mathcolor', 'mathvariant', 'mathvariant', - 'maxsize', 'minsize', 'open', 'other', 'rowalign', 'rowalign', 'rowalign', - 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'scriptlevel', 'selection', - 'separator', 'separators', 'stretchy', 'width', 'width', 'xlink:href', - 'xlink:show', 'xlink:type', 'xmlns', 'xmlns:xlink']) + mathml_attributes = set([ + 'accent', + 'accentunder', + 'actiontype', + 'align', + 'alignmentscope', + 'altimg', + 'altimg-height', + 'altimg-valign', + 'altimg-width', + 'alttext', + 'bevelled', + 'charalign', + 'close', + 'columnalign', + 'columnlines', + 'columnspacing', + 'columnspan', + 'columnwidth', + 'crossout', + 'decimalpoint', + 'denomalign', + 'depth', + 'dir', + 'display', + 'displaystyle', + 'edge', + 'encoding', + 'equalcolumns', + 'equalrows', + 'fence', + 'fontstyle', + 'fontweight', + 'form', + 'frame', + 'framespacing', + 'groupalign', + 'height', + 'href', + 'id', + 'indentalign', + 'indentalignfirst', + 'indentalignlast', + 'indentshift', + 'indentshiftfirst', + 'indentshiftlast', + 'indenttarget', + 'infixlinebreakstyle', + 'largeop', + 'length', + 'linebreak', + 'linebreakmultchar', + 'linebreakstyle', + 'lineleading', + 'linethickness', + 'location', + 'longdivstyle', + 'lquote', + 'lspace', + 'mathbackground', + 'mathcolor', + 'mathsize', + 'mathvariant', + 'maxsize', + 'minlabelspacing', + 'minsize', + 'movablelimits', + 'notation', + 'numalign', + 'open', + 'other', + 'overflow', + 'position', + 'rowalign', + 'rowlines', + 'rowspacing', + 'rowspan', + 'rquote', + 'rspace', + 'scriptlevel', + 'scriptminsize', + 'scriptsizemultiplier', + 'selection', + 'separator', + 'separators', + 'shift', + 'side', + 'src', + 'stackalign', + 'stretchy', + 'subscriptshift', + 'superscriptshift', + 'symmetric', + 'voffset', + 'width', + 'xlink:href', + 'xlink:show', + 'xlink:type', + 'xmlns', + 'xmlns:xlink', + ]) # svgtiny - foreignObject + linearGradient + radialGradient + stop svg_elements = set(['a', 'animate', 'animateColor', 'animateMotion', @@ -2859,38 +2751,6 @@ def _sanitizeHTML(htmlSource, encoding, _type): htmlSource = htmlSource.replace(''): - data = data.split('>', 1)[1] - if data.count(' julian: - if diff < day: - day = day - diff - else: - month = month - 1 - day = 31 - elif jday < julian: - if day + diff < 28: - day = day + diff - else: - month = month + 1 - return year, month, day - month = m.group('month') - day = 1 - if month is None: - month = 1 - else: - month = int(month) - day = m.group('day') - if day: - day = int(day) - else: - day = 1 - return year, month, day - - def __extract_time(m): - if not m: - return 0, 0, 0 - hours = m.group('hours') - if not hours: - return 0, 0, 0 - hours = int(hours) - minutes = int(m.group('minutes')) - seconds = m.group('seconds') - if seconds: - seconds = int(seconds) - else: - seconds = 0 - return hours, minutes, seconds - - def __extract_tzd(m): - '''Return the Time Zone Designator as an offset in seconds from UTC.''' - if not m: - return 0 - tzd = m.group('tzd') - if not tzd: - return 0 - if tzd == 'Z': - return 0 - hours = int(m.group('tzdhours')) - minutes = m.group('tzdminutes') - if minutes: - minutes = int(minutes) - else: - minutes = 0 - offset = (hours*60 + minutes) * 60 - if tzd[0] == '+': - return -offset - return offset - - __date_re = ('(?P\d\d\d\d)' - '(?:(?P-|)' - '(?:(?P\d\d)(?:(?P=dsep)(?P\d\d))?' - '|(?P\d\d\d)))?') - __tzd_re = ' ?(?P[-+](?P\d\d)(?::?(?P\d\d))|Z)?' - __time_re = ('(?P\d\d)(?P:|)(?P\d\d)' - '(?:(?P=tsep)(?P\d\d)(?:[.,]\d+)?)?' - + __tzd_re) - __datetime_re = '%s(?:[T ]%s)?' % (__date_re, __time_re) - __datetime_rx = re.compile(__datetime_re) - m = __datetime_rx.match(dateString) - if (m is None) or (m.group() != dateString): - return - gmt = __extract_date(m) + __extract_time(m) + (0, 0, 0) - if gmt[0] == 0: - return - return time.gmtime(time.mktime(gmt) + __extract_tzd(m) - time.timezone) -registerDateHandler(_parse_date_w3dtf) - -# Define the strings used by the RFC822 datetime parser -_rfc822_months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', - 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'] -_rfc822_daynames = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'] - -# Only the first three letters of the month name matter -_rfc822_month = "(?P%s)(?:[a-z]*,?)" % ('|'.join(_rfc822_months)) -# The year may be 2 or 4 digits; capture the century if it exists -_rfc822_year = "(?P(?:\d{2})?\d{2})" -_rfc822_day = "(?P *\d{1,2})" -_rfc822_date = "%s %s %s" % (_rfc822_day, _rfc822_month, _rfc822_year) - -_rfc822_hour = "(?P\d{2}):(?P\d{2})(?::(?P\d{2}))?" -_rfc822_tz = "(?Put|gmt(?:[+-]\d{2}:\d{2})?|[aecmp][sd]?t|[zamny]|[+-]\d{4})" -_rfc822_tznames = { +timezonenames = { 'ut': 0, 'gmt': 0, 'z': 0, 'adt': -3, 'ast': -4, 'at': -4, 'edt': -4, 'est': -5, 'et': -5, @@ -3467,86 +3224,206 @@ _rfc822_tznames = { 'pdt': -7, 'pst': -8, 'pt': -8, 'a': -1, 'n': 1, 'm': -12, 'y': 12, - } -# The timezone may be prefixed by 'Etc/' -_rfc822_time = "%s (?:etc/)?%s" % (_rfc822_hour, _rfc822_tz) - -_rfc822_dayname = "(?P%s)" % ('|'.join(_rfc822_daynames)) -_rfc822_match = re.compile( - "(?:%s, )?%s(?: %s)?" % (_rfc822_dayname, _rfc822_date, _rfc822_time) -).match - -def _parse_date_group_rfc822(m): - # Calculate a date and timestamp - for k in ('year', 'day', 'hour', 'minute', 'second'): - m[k] = int(m[k]) - m['month'] = _rfc822_months.index(m['month']) + 1 - # If the year is 2 digits, assume everything in the 90's is the 1990's - if m['year'] < 100: - m['year'] += (1900, 2000)[m['year'] < 90] - stamp = datetime.datetime(*[m[i] for i in - ('year', 'month', 'day', 'hour', 'minute', 'second')]) - - # Use the timezone information to calculate the difference between - # the given date and timestamp and Universal Coordinated Time +} +# W3 date and time format parser +# http://www.w3.org/TR/NOTE-datetime +# Also supports MSSQL-style datetimes as defined at: +# http://msdn.microsoft.com/en-us/library/ms186724.aspx +# (basically, allow a space as a date/time/timezone separator) +def _parse_date_w3dtf(datestr): + if not datestr.strip(): + return None + parts = datestr.lower().split('t') + if len(parts) == 1: + # This may be a date only, or may be an MSSQL-style date + parts = parts[0].split() + if len(parts) == 1: + # Treat this as a date only + parts.append('00:00:00z') + elif len(parts) > 2: + return None + date = parts[0].split('-', 2) + if not date or len(date[0]) != 4: + return None + # Ensure that `date` has 3 elements. Using '1' sets the default + # month to January and the default day to the 1st of the month. + date.extend(['1'] * (3 - len(date))) + try: + year, month, day = [int(i) for i in date] + except ValueError: + # `date` may have more than 3 elements or may contain + # non-integer strings. + return None + if parts[1].endswith('z'): + parts[1] = parts[1][:-1] + parts.append('z') + # Append the numeric timezone offset, if any, to parts. + # If this is an MSSQL-style date then parts[2] already contains + # the timezone information, so `append()` will not affect it. + # Add 1 to each value so that if `find()` returns -1 it will be + # treated as False. + loc = parts[1].find('-') + 1 or parts[1].find('+') + 1 or len(parts[1]) + 1 + loc = loc - 1 + parts.append(parts[1][loc:]) + parts[1] = parts[1][:loc] + time = parts[1].split(':', 2) + # Ensure that time has 3 elements. Using '0' means that the + # minutes and seconds, if missing, will default to 0. + time.extend(['0'] * (3 - len(time))) tzhour = 0 tzmin = 0 - if m['tz'] and m['tz'].startswith('gmt'): - # Handle GMT and GMT+hh:mm timezone syntax (the trailing - # timezone info will be handled by the next `if` block) - m['tz'] = ''.join(m['tz'][3:].split(':')) or 'gmt' - if not m['tz']: - pass - elif m['tz'].startswith('+'): - tzhour = int(m['tz'][1:3]) - tzmin = int(m['tz'][3:]) - elif m['tz'].startswith('-'): - tzhour = int(m['tz'][1:3]) * -1 - tzmin = int(m['tz'][3:]) * -1 + if parts[2][:1] in ('-', '+'): + try: + tzhour = int(parts[2][1:3]) + tzmin = int(parts[2][4:]) + except ValueError: + return None + if parts[2].startswith('-'): + tzhour = tzhour * -1 + tzmin = tzmin * -1 else: - tzhour = _rfc822_tznames[m['tz']] - delta = datetime.timedelta(0, 0, 0, 0, tzmin, tzhour) - - # Return the date and timestamp in UTC - return (stamp - delta).utctimetuple() - -def _parse_date_rfc822(dt): - """Parse RFC 822 dates and times, with one minor - difference: years may be 4DIGIT or 2DIGIT. - http://tools.ietf.org/html/rfc822#section-5""" + tzhour = timezonenames.get(parts[2], 0) try: - m = _rfc822_match(dt.lower()).groupdict(0) - except AttributeError: + hour, minute, second = [int(float(i)) for i in time] + except ValueError: + return None + # Create the datetime object and timezone delta objects + try: + stamp = datetime.datetime(year, month, day, hour, minute, second) + except ValueError: + return None + delta = datetime.timedelta(0, 0, 0, 0, tzmin, tzhour) + # Return the date and timestamp in a UTC 9-tuple + try: + return (stamp - delta).utctimetuple() + except (OverflowError, ValueError): + # IronPython throws ValueErrors instead of OverflowErrors return None - return _parse_date_group_rfc822(m) +registerDateHandler(_parse_date_w3dtf) + +def _parse_date_rfc822(date): + """Parse RFC 822 dates and times + http://tools.ietf.org/html/rfc822#section-5 + + There are some formatting differences that are accounted for: + 1. Years may be two or four digits. + 2. The month and day can be swapped. + 3. Additional timezone names are supported. + 4. A default time and timezone are assumed if only a date is present. + """ + daynames = set(['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']) + months = { + 'jan': 1, 'feb': 2, 'mar': 3, 'apr': 4, 'may': 5, 'jun': 6, + 'jul': 7, 'aug': 8, 'sep': 9, 'oct': 10, 'nov': 11, 'dec': 12, + } + + parts = date.lower().split() + if len(parts) < 5: + # Assume that the time and timezone are missing + parts.extend(('00:00:00', '0000')) + # Remove the day name + if parts[0][:3] in daynames: + parts = parts[1:] + if len(parts) < 5: + # If there are still fewer than five parts, there's not enough + # information to interpret this + return None + try: + day = int(parts[0]) + except ValueError: + # Check if the day and month are swapped + if months.get(parts[0][:3]): + try: + day = int(parts[1]) + except ValueError: + return None + else: + parts[1] = parts[0] + else: + return None + month = months.get(parts[1][:3]) + if not month: + return None + try: + year = int(parts[2]) + except ValueError: + return None + # Normalize two-digit years: + # Anything in the 90's is interpreted as 1990 and on + # Anything 89 or less is interpreted as 2089 or before + if len(parts[2]) <= 2: + year += (1900, 2000)[year < 90] + timeparts = parts[3].split(':') + timeparts = timeparts + ([0] * (3 - len(timeparts))) + try: + (hour, minute, second) = list(map(int, timeparts)) + except ValueError: + return None + tzhour = 0 + tzmin = 0 + # Strip 'Etc/' from the timezone + if parts[4].startswith('etc/'): + parts[4] = parts[4][4:] + # Normalize timezones that start with 'gmt': + # GMT-05:00 => -0500 + # GMT => GMT + if parts[4].startswith('gmt'): + parts[4] = ''.join(parts[4][3:].split(':')) or 'gmt' + # Handle timezones like '-0500', '+0500', and 'EST' + if parts[4] and parts[4][0] in ('-', '+'): + try: + tzhour = int(parts[4][1:3]) + tzmin = int(parts[4][3:]) + except ValueError: + return None + if parts[4].startswith('-'): + tzhour = tzhour * -1 + tzmin = tzmin * -1 + else: + tzhour = timezonenames.get(parts[4], 0) + # Create the datetime object and timezone delta objects + try: + stamp = datetime.datetime(year, month, day, hour, minute, second) + except ValueError: + return None + delta = datetime.timedelta(0, 0, 0, 0, tzmin, tzhour) + # Return the date and timestamp in a UTC 9-tuple + try: + return (stamp - delta).utctimetuple() + except (OverflowError, ValueError): + # IronPython throws ValueErrors instead of OverflowErrors + return None registerDateHandler(_parse_date_rfc822) -def _parse_date_rfc822_grubby(dt): - """Parse date format similar to RFC 822, but - the comma after the dayname is optional and - month/day are inverted""" - _rfc822_date_grubby = "%s %s %s" % (_rfc822_month, _rfc822_day, _rfc822_year) - _rfc822_match_grubby = re.compile( - "(?:%s[,]? )?%s(?: %s)?" % (_rfc822_dayname, _rfc822_date_grubby, _rfc822_time) - ).match +_months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', + 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'] +def _parse_date_asctime(dt): + """Parse asctime-style dates. - try: - m = _rfc822_match_grubby(dt.lower()).groupdict(0) - except AttributeError: + Converts asctime to RFC822-compatible dates and uses the RFC822 parser + to do the actual parsing. + + Supported formats (format is standardized to the first one listed): + + * {weekday name} {month name} dd hh:mm:ss {+-tz} yyyy + * {weekday name} {month name} dd hh:mm:ss yyyy + """ + + parts = dt.split() + + # Insert a GMT timezone, if needed. + if len(parts) == 5: + parts.insert(4, '+0000') + + # Exit if there are not six parts. + if len(parts) != 6: return None - return _parse_date_group_rfc822(m) -registerDateHandler(_parse_date_rfc822_grubby) - -def _parse_date_asctime(dt): - """Parse asctime-style dates""" - dayname, month, day, remainder = dt.split(None, 3) - # Convert month and day into zero-padded integers - month = '%02i ' % (_rfc822_months.index(month.lower()) + 1) - day = '%02i ' % (int(day),) - dt = month + day + remainder - return time.strptime(dt, '%m %d %H:%M:%S %Y')[:-1] + (0, ) + # Reassemble the parts in an RFC822-compatible order and parse them. + return _parse_date_rfc822(' '.join([ + parts[0], parts[2], parts[1], parts[5], parts[3], parts[4], + ])) registerDateHandler(_parse_date_asctime) def _parse_date_perforce(aDateString): @@ -3724,7 +3601,7 @@ def convert_to_utf8(http_headers, data): 'application/xml-external-parsed-entity') text_content_types = ('text/xml', 'text/xml-external-parsed-entity') if (http_content_type in application_content_types) or \ - (http_content_type.startswith('application/') and + (http_content_type.startswith('application/') and http_content_type.endswith('+xml')): acceptable_content_type = 1 rfc3023_encoding = http_encoding or xml_encoding or 'utf-8' @@ -3762,13 +3639,21 @@ def convert_to_utf8(http_headers, data): # determine character encoding known_encoding = 0 - chardet_encoding = None + lazy_chardet_encoding = None tried_encodings = [] if chardet: - chardet_encoding = str(chardet.detect(data)['encoding'] or '', 'ascii', 'ignore') + def lazy_chardet_encoding(): + chardet_encoding = chardet.detect(data)['encoding'] + if not chardet_encoding: + chardet_encoding = '' + if not isinstance(chardet_encoding, str): + chardet_encoding = str(chardet_encoding, 'ascii', 'ignore') + return chardet_encoding # try: HTTP encoding, declared XML encoding, encoding sniffed from BOM for proposed_encoding in (rfc3023_encoding, xml_encoding, bom_encoding, - chardet_encoding, 'utf-8', 'windows-1252', 'iso-8859-2'): + lazy_chardet_encoding, 'utf-8', 'windows-1252', 'iso-8859-2'): + if isinstance(proposed_encoding, collections.Callable): + proposed_encoding = proposed_encoding() if not proposed_encoding: continue if proposed_encoding in tried_encodings: @@ -3860,11 +3745,83 @@ def replace_doctype(data): for k, v in RE_SAFE_ENTITY_PATTERN.findall(replacement)) return version, data, safe_entities + +# GeoRSS geometry parsers. Each return a dict with 'type' and 'coordinates' +# items, or None in the case of a parsing error. + +def _parse_poslist(value, geom_type, swap=True, dims=2): + if geom_type == 'linestring': + return _parse_georss_line(value, swap, dims) + elif geom_type == 'polygon': + ring = _parse_georss_line(value, swap, dims) + return {'type': 'Polygon', 'coordinates': (ring['coordinates'],)} + else: + return None + +def _gen_georss_coords(value, swap=True, dims=2): + # A generator of (lon, lat) pairs from a string of encoded GeoRSS + # coordinates. Converts to floats and swaps order. + latlons = map(float, value.strip().replace(',', ' ').split()) + nxt = latlons.__next__ + while True: + t = [nxt(), nxt()][::swap and -1 or 1] + if dims == 3: + t.append(nxt()) + yield tuple(t) + +def _parse_georss_point(value, swap=True, dims=2): + # A point contains a single latitude-longitude pair, separated by + # whitespace. We'll also handle comma separators. + try: + coords = list(_gen_georss_coords(value, swap, dims)) + return {'type': 'Point', 'coordinates': coords[0]} + except (IndexError, ValueError): + return None + +def _parse_georss_line(value, swap=True, dims=2): + # A line contains a space separated list of latitude-longitude pairs in + # WGS84 coordinate reference system, with each pair separated by + # whitespace. There must be at least two pairs. + try: + coords = list(_gen_georss_coords(value, swap, dims)) + return {'type': 'LineString', 'coordinates': coords} + except (IndexError, ValueError): + return None + +def _parse_georss_polygon(value, swap=True, dims=2): + # A polygon contains a space separated list of latitude-longitude pairs, + # with each pair separated by whitespace. There must be at least four + # pairs, with the last being identical to the first (so a polygon has a + # minimum of three actual points). + try: + ring = list(_gen_georss_coords(value, swap, dims)) + except (IndexError, ValueError): + return None + if len(ring) < 4: + return None + return {'type': 'Polygon', 'coordinates': (ring,)} + +def _parse_georss_box(value, swap=True, dims=2): + # A bounding box is a rectangular region, often used to define the extents + # of a map or a rough area of interest. A box contains two space seperate + # latitude-longitude pairs, with each pair separated by whitespace. The + # first pair is the lower corner, the second is the upper corner. + try: + coords = list(_gen_georss_coords(value, swap, dims)) + return {'type': 'Box', 'coordinates': tuple(coords)} + except (IndexError, ValueError): + return None + +# end geospatial parsers + + def parse(url_file_stream_or_string, etag=None, modified=None, agent=None, referrer=None, handlers=None, request_headers=None, response_headers=None): '''Parse a feed from a URL, file, stream, or string. request_headers, if given, is a dict from http header name to value to add to the request; this overrides internally generated values. + + :return: A :class:`FeedParserDict`. ''' if handlers is None: @@ -4010,3 +3967,41 @@ def parse(url_file_stream_or_string, etag=None, modified=None, agent=None, refer result['version'] = result['version'] or feedparser.version result['namespaces'] = feedparser.namespacesInUse return result + +# The list of EPSG codes for geographic (latitude/longitude) coordinate +# systems to support decoding of GeoRSS GML profiles. +_geogCS = [ +3819, 3821, 3824, 3889, 3906, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008, +4009, 4010, 4011, 4012, 4013, 4014, 4015, 4016, 4018, 4019, 4020, 4021, 4022, +4023, 4024, 4025, 4027, 4028, 4029, 4030, 4031, 4032, 4033, 4034, 4035, 4036, +4041, 4042, 4043, 4044, 4045, 4046, 4047, 4052, 4053, 4054, 4055, 4075, 4081, +4120, 4121, 4122, 4123, 4124, 4125, 4126, 4127, 4128, 4129, 4130, 4131, 4132, +4133, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 4143, 4144, 4145, +4146, 4147, 4148, 4149, 4150, 4151, 4152, 4153, 4154, 4155, 4156, 4157, 4158, +4159, 4160, 4161, 4162, 4163, 4164, 4165, 4166, 4167, 4168, 4169, 4170, 4171, +4172, 4173, 4174, 4175, 4176, 4178, 4179, 4180, 4181, 4182, 4183, 4184, 4185, +4188, 4189, 4190, 4191, 4192, 4193, 4194, 4195, 4196, 4197, 4198, 4199, 4200, +4201, 4202, 4203, 4204, 4205, 4206, 4207, 4208, 4209, 4210, 4211, 4212, 4213, +4214, 4215, 4216, 4218, 4219, 4220, 4221, 4222, 4223, 4224, 4225, 4226, 4227, +4228, 4229, 4230, 4231, 4232, 4233, 4234, 4235, 4236, 4237, 4238, 4239, 4240, +4241, 4242, 4243, 4244, 4245, 4246, 4247, 4248, 4249, 4250, 4251, 4252, 4253, +4254, 4255, 4256, 4257, 4258, 4259, 4260, 4261, 4262, 4263, 4264, 4265, 4266, +4267, 4268, 4269, 4270, 4271, 4272, 4273, 4274, 4275, 4276, 4277, 4278, 4279, +4280, 4281, 4282, 4283, 4284, 4285, 4286, 4287, 4288, 4289, 4291, 4292, 4293, +4294, 4295, 4296, 4297, 4298, 4299, 4300, 4301, 4302, 4303, 4304, 4306, 4307, +4308, 4309, 4310, 4311, 4312, 4313, 4314, 4315, 4316, 4317, 4318, 4319, 4322, +4324, 4326, 4463, 4470, 4475, 4483, 4490, 4555, 4558, 4600, 4601, 4602, 4603, +4604, 4605, 4606, 4607, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, +4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4626, 4627, 4628, 4629, +4630, 4631, 4632, 4633, 4634, 4635, 4636, 4637, 4638, 4639, 4640, 4641, 4642, +4643, 4644, 4645, 4646, 4657, 4658, 4659, 4660, 4661, 4662, 4663, 4664, 4665, +4666, 4667, 4668, 4669, 4670, 4671, 4672, 4673, 4674, 4675, 4676, 4677, 4678, +4679, 4680, 4681, 4682, 4683, 4684, 4685, 4686, 4687, 4688, 4689, 4690, 4691, +4692, 4693, 4694, 4695, 4696, 4697, 4698, 4699, 4700, 4701, 4702, 4703, 4704, +4705, 4706, 4707, 4708, 4709, 4710, 4711, 4712, 4713, 4714, 4715, 4716, 4717, +4718, 4719, 4720, 4721, 4722, 4723, 4724, 4725, 4726, 4727, 4728, 4729, 4730, +4731, 4732, 4733, 4734, 4735, 4736, 4737, 4738, 4739, 4740, 4741, 4742, 4743, +4744, 4745, 4746, 4747, 4748, 4749, 4750, 4751, 4752, 4753, 4754, 4755, 4756, +4757, 4758, 4759, 4760, 4761, 4762, 4763, 4764, 4765, 4801, 4802, 4803, 4804, +4805, 4806, 4807, 4808, 4809, 4810, 4811, 4813, 4814, 4815, 4816, 4817, 4818, +4819, 4820, 4821, 4823, 4824, 4901, 4902, 4903, 4904, 4979 ] diff --git a/Shared/lib/python3.4/site-packages/html5lib-0.999.egg-info/PKG-INFO b/Shared/lib/python3.4/site-packages/html5lib-0.9999999.egg-info/PKG-INFO similarity index 85% rename from Shared/lib/python3.4/site-packages/html5lib-0.999.egg-info/PKG-INFO rename to Shared/lib/python3.4/site-packages/html5lib-0.9999999.egg-info/PKG-INFO index 78a7ff5..07d6c42 100644 --- a/Shared/lib/python3.4/site-packages/html5lib-0.999.egg-info/PKG-INFO +++ b/Shared/lib/python3.4/site-packages/html5lib-0.9999999.egg-info/PKG-INFO @@ -1,7 +1,7 @@ Metadata-Version: 1.1 Name: html5lib -Version: 0.999 -Summary: HTML parser based on the WHATWG HTML specifcation +Version: 0.9999999 +Summary: HTML parser based on the WHATWG HTML specification Home-page: https://github.com/html5lib/html5lib-python Author: James Graham Author-email: james@hoppipolla.co.uk @@ -167,6 +167,61 @@ Description: html5lib Change Log ---------- + 0.9999999/1.0b8 + ~~~~~~~~~~~~~~~ + + Released on September 10, 2015 + + * Fix #195: fix the sanitizer to drop broken URLs (it threw an + exception between 0.9999 and 0.999999). + + + 0.999999/1.0b7 + ~~~~~~~~~~~~~~ + + Released on July 7, 2015 + + * Fix #189: fix the sanitizer to allow relative URLs again (as it did + prior to 0.9999/1.0b5). + + + 0.99999/1.0b6 + ~~~~~~~~~~~~~ + + Released on April 30, 2015 + + * Fix #188: fix the sanitizer to not throw an exception when sanitizing + bogus data URLs. + + + 0.9999/1.0b5 + ~~~~~~~~~~~~ + + Released on April 29, 2015 + + * Fix #153: Sanitizer fails to treat some attributes as URLs. Despite how + this sounds, this has no known security implications. No known version + of IE (5.5 to current), Firefox (3 to current), Safari (6 to current), + Chrome (1 to current), or Opera (12 to current) will run any script + provided in these attributes. + + * Pass error message to the ParseError exception in strict parsing mode. + + * Allow data URIs in the sanitizer, with a whitelist of content-types. + + * Add support for Python implementations that don't support lone + surrogates (read: Jython). Fixes #2. + + * Remove localization of error messages. This functionality was totally + unused (and untested that everything was localizable), so we may as + well follow numerous browsers in not supporting translating technical + strings. + + * Expose treewalkers.pprint as a public API. + + * Add a documentEncoding property to HTML5Parser, fix #121. + + 0.999 ~~~~~ @@ -340,5 +395,6 @@ Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.2 Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: Text Processing :: Markup :: HTML diff --git a/Shared/lib/python3.4/site-packages/html5lib-0.999.egg-info/SOURCES.txt b/Shared/lib/python3.4/site-packages/html5lib-0.9999999.egg-info/SOURCES.txt similarity index 100% rename from Shared/lib/python3.4/site-packages/html5lib-0.999.egg-info/SOURCES.txt rename to Shared/lib/python3.4/site-packages/html5lib-0.9999999.egg-info/SOURCES.txt diff --git a/Shared/lib/python3.4/site-packages/html5lib-0.999.egg-info/dependency_links.txt b/Shared/lib/python3.4/site-packages/html5lib-0.9999999.egg-info/dependency_links.txt similarity index 100% rename from Shared/lib/python3.4/site-packages/html5lib-0.999.egg-info/dependency_links.txt rename to Shared/lib/python3.4/site-packages/html5lib-0.9999999.egg-info/dependency_links.txt diff --git a/Shared/lib/python3.4/site-packages/html5lib-0.999.egg-info/installed-files.txt b/Shared/lib/python3.4/site-packages/html5lib-0.9999999.egg-info/installed-files.txt similarity index 100% rename from Shared/lib/python3.4/site-packages/html5lib-0.999.egg-info/installed-files.txt rename to Shared/lib/python3.4/site-packages/html5lib-0.9999999.egg-info/installed-files.txt index 4cf081e..7118338 100644 --- a/Shared/lib/python3.4/site-packages/html5lib-0.999.egg-info/installed-files.txt +++ b/Shared/lib/python3.4/site-packages/html5lib-0.9999999.egg-info/installed-files.txt @@ -1,78 +1,78 @@ -../html5lib/utils.py -../html5lib/ihatexml.py ../html5lib/__init__.py -../html5lib/tokenizer.py -../html5lib/html5parser.py -../html5lib/sanitizer.py -../html5lib/inputstream.py ../html5lib/constants.py -../html5lib/serializer/__init__.py -../html5lib/serializer/htmlserializer.py -../html5lib/treebuilders/_base.py -../html5lib/treebuilders/__init__.py -../html5lib/treebuilders/etree_lxml.py -../html5lib/treebuilders/dom.py -../html5lib/treebuilders/etree.py -../html5lib/filters/whitespace.py -../html5lib/filters/_base.py +../html5lib/html5parser.py +../html5lib/ihatexml.py +../html5lib/inputstream.py +../html5lib/sanitizer.py +../html5lib/tokenizer.py +../html5lib/utils.py ../html5lib/filters/__init__.py -../html5lib/filters/sanitizer.py +../html5lib/filters/_base.py +../html5lib/filters/alphabeticalattributes.py +../html5lib/filters/inject_meta_charset.py ../html5lib/filters/lint.py ../html5lib/filters/optionaltags.py -../html5lib/filters/inject_meta_charset.py -../html5lib/filters/alphabeticalattributes.py -../html5lib/treewalkers/pulldom.py -../html5lib/treewalkers/_base.py -../html5lib/treewalkers/genshistream.py +../html5lib/filters/sanitizer.py +../html5lib/filters/whitespace.py +../html5lib/serializer/__init__.py +../html5lib/serializer/htmlserializer.py +../html5lib/treeadapters/__init__.py +../html5lib/treeadapters/sax.py +../html5lib/treebuilders/__init__.py +../html5lib/treebuilders/_base.py +../html5lib/treebuilders/dom.py +../html5lib/treebuilders/etree.py +../html5lib/treebuilders/etree_lxml.py ../html5lib/treewalkers/__init__.py +../html5lib/treewalkers/_base.py ../html5lib/treewalkers/dom.py ../html5lib/treewalkers/etree.py +../html5lib/treewalkers/genshistream.py ../html5lib/treewalkers/lxmletree.py -../html5lib/trie/datrie.py -../html5lib/trie/_base.py +../html5lib/treewalkers/pulldom.py ../html5lib/trie/__init__.py +../html5lib/trie/_base.py +../html5lib/trie/datrie.py ../html5lib/trie/py.py -../html5lib/treeadapters/sax.py -../html5lib/treeadapters/__init__.py -../html5lib/__pycache__/utils.cpython-34.pyc -../html5lib/__pycache__/ihatexml.cpython-34.pyc ../html5lib/__pycache__/__init__.cpython-34.pyc -../html5lib/__pycache__/tokenizer.cpython-34.pyc -../html5lib/__pycache__/html5parser.cpython-34.pyc -../html5lib/__pycache__/sanitizer.cpython-34.pyc -../html5lib/__pycache__/inputstream.cpython-34.pyc ../html5lib/__pycache__/constants.cpython-34.pyc -../html5lib/serializer/__pycache__/__init__.cpython-34.pyc -../html5lib/serializer/__pycache__/htmlserializer.cpython-34.pyc -../html5lib/treebuilders/__pycache__/_base.cpython-34.pyc -../html5lib/treebuilders/__pycache__/__init__.cpython-34.pyc -../html5lib/treebuilders/__pycache__/etree_lxml.cpython-34.pyc -../html5lib/treebuilders/__pycache__/dom.cpython-34.pyc -../html5lib/treebuilders/__pycache__/etree.cpython-34.pyc -../html5lib/filters/__pycache__/whitespace.cpython-34.pyc -../html5lib/filters/__pycache__/_base.cpython-34.pyc +../html5lib/__pycache__/html5parser.cpython-34.pyc +../html5lib/__pycache__/ihatexml.cpython-34.pyc +../html5lib/__pycache__/inputstream.cpython-34.pyc +../html5lib/__pycache__/sanitizer.cpython-34.pyc +../html5lib/__pycache__/tokenizer.cpython-34.pyc +../html5lib/__pycache__/utils.cpython-34.pyc ../html5lib/filters/__pycache__/__init__.cpython-34.pyc -../html5lib/filters/__pycache__/sanitizer.cpython-34.pyc +../html5lib/filters/__pycache__/_base.cpython-34.pyc +../html5lib/filters/__pycache__/alphabeticalattributes.cpython-34.pyc +../html5lib/filters/__pycache__/inject_meta_charset.cpython-34.pyc ../html5lib/filters/__pycache__/lint.cpython-34.pyc ../html5lib/filters/__pycache__/optionaltags.cpython-34.pyc -../html5lib/filters/__pycache__/inject_meta_charset.cpython-34.pyc -../html5lib/filters/__pycache__/alphabeticalattributes.cpython-34.pyc -../html5lib/treewalkers/__pycache__/pulldom.cpython-34.pyc -../html5lib/treewalkers/__pycache__/_base.cpython-34.pyc -../html5lib/treewalkers/__pycache__/genshistream.cpython-34.pyc +../html5lib/filters/__pycache__/sanitizer.cpython-34.pyc +../html5lib/filters/__pycache__/whitespace.cpython-34.pyc +../html5lib/serializer/__pycache__/__init__.cpython-34.pyc +../html5lib/serializer/__pycache__/htmlserializer.cpython-34.pyc +../html5lib/treeadapters/__pycache__/__init__.cpython-34.pyc +../html5lib/treeadapters/__pycache__/sax.cpython-34.pyc +../html5lib/treebuilders/__pycache__/__init__.cpython-34.pyc +../html5lib/treebuilders/__pycache__/_base.cpython-34.pyc +../html5lib/treebuilders/__pycache__/dom.cpython-34.pyc +../html5lib/treebuilders/__pycache__/etree.cpython-34.pyc +../html5lib/treebuilders/__pycache__/etree_lxml.cpython-34.pyc ../html5lib/treewalkers/__pycache__/__init__.cpython-34.pyc +../html5lib/treewalkers/__pycache__/_base.cpython-34.pyc ../html5lib/treewalkers/__pycache__/dom.cpython-34.pyc ../html5lib/treewalkers/__pycache__/etree.cpython-34.pyc +../html5lib/treewalkers/__pycache__/genshistream.cpython-34.pyc ../html5lib/treewalkers/__pycache__/lxmletree.cpython-34.pyc -../html5lib/trie/__pycache__/datrie.cpython-34.pyc -../html5lib/trie/__pycache__/_base.cpython-34.pyc +../html5lib/treewalkers/__pycache__/pulldom.cpython-34.pyc ../html5lib/trie/__pycache__/__init__.cpython-34.pyc +../html5lib/trie/__pycache__/_base.cpython-34.pyc +../html5lib/trie/__pycache__/datrie.cpython-34.pyc ../html5lib/trie/__pycache__/py.cpython-34.pyc -../html5lib/treeadapters/__pycache__/sax.cpython-34.pyc -../html5lib/treeadapters/__pycache__/__init__.cpython-34.pyc ./ -dependency_links.txt -PKG-INFO -SOURCES.txt top_level.txt +PKG-INFO requires.txt +dependency_links.txt +SOURCES.txt diff --git a/Shared/lib/python3.4/site-packages/html5lib-0.999.egg-info/requires.txt b/Shared/lib/python3.4/site-packages/html5lib-0.9999999.egg-info/requires.txt similarity index 100% rename from Shared/lib/python3.4/site-packages/html5lib-0.999.egg-info/requires.txt rename to Shared/lib/python3.4/site-packages/html5lib-0.9999999.egg-info/requires.txt diff --git a/Shared/lib/python3.4/site-packages/html5lib-0.999.egg-info/top_level.txt b/Shared/lib/python3.4/site-packages/html5lib-0.9999999.egg-info/top_level.txt similarity index 100% rename from Shared/lib/python3.4/site-packages/html5lib-0.999.egg-info/top_level.txt rename to Shared/lib/python3.4/site-packages/html5lib-0.9999999.egg-info/top_level.txt diff --git a/Shared/lib/python3.4/site-packages/html5lib/__init__.py b/Shared/lib/python3.4/site-packages/html5lib/__init__.py index 19a4b7d..962536c 100644 --- a/Shared/lib/python3.4/site-packages/html5lib/__init__.py +++ b/Shared/lib/python3.4/site-packages/html5lib/__init__.py @@ -20,4 +20,6 @@ from .serializer import serialize __all__ = ["HTMLParser", "parse", "parseFragment", "getTreeBuilder", "getTreeWalker", "serialize"] -__version__ = "0.999" + +# this has to be at the top level, see how setup.py parses this +__version__ = "0.9999999" diff --git a/Shared/lib/python3.4/site-packages/html5lib/constants.py b/Shared/lib/python3.4/site-packages/html5lib/constants.py index e708984..d938e0a 100644 --- a/Shared/lib/python3.4/site-packages/html5lib/constants.py +++ b/Shared/lib/python3.4/site-packages/html5lib/constants.py @@ -1,292 +1,290 @@ from __future__ import absolute_import, division, unicode_literals import string -import gettext -_ = gettext.gettext EOF = None E = { "null-character": - _("Null character in input stream, replaced with U+FFFD."), + "Null character in input stream, replaced with U+FFFD.", "invalid-codepoint": - _("Invalid codepoint in stream."), + "Invalid codepoint in stream.", "incorrectly-placed-solidus": - _("Solidus (/) incorrectly placed in tag."), + "Solidus (/) incorrectly placed in tag.", "incorrect-cr-newline-entity": - _("Incorrect CR newline entity, replaced with LF."), + "Incorrect CR newline entity, replaced with LF.", "illegal-windows-1252-entity": - _("Entity used with illegal number (windows-1252 reference)."), + "Entity used with illegal number (windows-1252 reference).", "cant-convert-numeric-entity": - _("Numeric entity couldn't be converted to character " - "(codepoint U+%(charAsInt)08x)."), + "Numeric entity couldn't be converted to character " + "(codepoint U+%(charAsInt)08x).", "illegal-codepoint-for-numeric-entity": - _("Numeric entity represents an illegal codepoint: " - "U+%(charAsInt)08x."), + "Numeric entity represents an illegal codepoint: " + "U+%(charAsInt)08x.", "numeric-entity-without-semicolon": - _("Numeric entity didn't end with ';'."), + "Numeric entity didn't end with ';'.", "expected-numeric-entity-but-got-eof": - _("Numeric entity expected. Got end of file instead."), + "Numeric entity expected. Got end of file instead.", "expected-numeric-entity": - _("Numeric entity expected but none found."), + "Numeric entity expected but none found.", "named-entity-without-semicolon": - _("Named entity didn't end with ';'."), + "Named entity didn't end with ';'.", "expected-named-entity": - _("Named entity expected. Got none."), + "Named entity expected. Got none.", "attributes-in-end-tag": - _("End tag contains unexpected attributes."), + "End tag contains unexpected attributes.", 'self-closing-flag-on-end-tag': - _("End tag contains unexpected self-closing flag."), + "End tag contains unexpected self-closing flag.", "expected-tag-name-but-got-right-bracket": - _("Expected tag name. Got '>' instead."), + "Expected tag name. Got '>' instead.", "expected-tag-name-but-got-question-mark": - _("Expected tag name. Got '?' instead. (HTML doesn't " - "support processing instructions.)"), + "Expected tag name. Got '?' instead. (HTML doesn't " + "support processing instructions.)", "expected-tag-name": - _("Expected tag name. Got something else instead"), + "Expected tag name. Got something else instead", "expected-closing-tag-but-got-right-bracket": - _("Expected closing tag. Got '>' instead. Ignoring ''."), + "Expected closing tag. Got '>' instead. Ignoring ''.", "expected-closing-tag-but-got-eof": - _("Expected closing tag. Unexpected end of file."), + "Expected closing tag. Unexpected end of file.", "expected-closing-tag-but-got-char": - _("Expected closing tag. Unexpected character '%(data)s' found."), + "Expected closing tag. Unexpected character '%(data)s' found.", "eof-in-tag-name": - _("Unexpected end of file in the tag name."), + "Unexpected end of file in the tag name.", "expected-attribute-name-but-got-eof": - _("Unexpected end of file. Expected attribute name instead."), + "Unexpected end of file. Expected attribute name instead.", "eof-in-attribute-name": - _("Unexpected end of file in attribute name."), + "Unexpected end of file in attribute name.", "invalid-character-in-attribute-name": - _("Invalid character in attribute name"), + "Invalid character in attribute name", "duplicate-attribute": - _("Dropped duplicate attribute on tag."), + "Dropped duplicate attribute on tag.", "expected-end-of-tag-name-but-got-eof": - _("Unexpected end of file. Expected = or end of tag."), + "Unexpected end of file. Expected = or end of tag.", "expected-attribute-value-but-got-eof": - _("Unexpected end of file. Expected attribute value."), + "Unexpected end of file. Expected attribute value.", "expected-attribute-value-but-got-right-bracket": - _("Expected attribute value. Got '>' instead."), + "Expected attribute value. Got '>' instead.", 'equals-in-unquoted-attribute-value': - _("Unexpected = in unquoted attribute"), + "Unexpected = in unquoted attribute", 'unexpected-character-in-unquoted-attribute-value': - _("Unexpected character in unquoted attribute"), + "Unexpected character in unquoted attribute", "invalid-character-after-attribute-name": - _("Unexpected character after attribute name."), + "Unexpected character after attribute name.", "unexpected-character-after-attribute-value": - _("Unexpected character after attribute value."), + "Unexpected character after attribute value.", "eof-in-attribute-value-double-quote": - _("Unexpected end of file in attribute value (\")."), + "Unexpected end of file in attribute value (\").", "eof-in-attribute-value-single-quote": - _("Unexpected end of file in attribute value (')."), + "Unexpected end of file in attribute value (').", "eof-in-attribute-value-no-quotes": - _("Unexpected end of file in attribute value."), + "Unexpected end of file in attribute value.", "unexpected-EOF-after-solidus-in-tag": - _("Unexpected end of file in tag. Expected >"), + "Unexpected end of file in tag. Expected >", "unexpected-character-after-solidus-in-tag": - _("Unexpected character after / in tag. Expected >"), + "Unexpected character after / in tag. Expected >", "expected-dashes-or-doctype": - _("Expected '--' or 'DOCTYPE'. Not found."), + "Expected '--' or 'DOCTYPE'. Not found.", "unexpected-bang-after-double-dash-in-comment": - _("Unexpected ! after -- in comment"), + "Unexpected ! after -- in comment", "unexpected-space-after-double-dash-in-comment": - _("Unexpected space after -- in comment"), + "Unexpected space after -- in comment", "incorrect-comment": - _("Incorrect comment."), + "Incorrect comment.", "eof-in-comment": - _("Unexpected end of file in comment."), + "Unexpected end of file in comment.", "eof-in-comment-end-dash": - _("Unexpected end of file in comment (-)"), + "Unexpected end of file in comment (-)", "unexpected-dash-after-double-dash-in-comment": - _("Unexpected '-' after '--' found in comment."), + "Unexpected '-' after '--' found in comment.", "eof-in-comment-double-dash": - _("Unexpected end of file in comment (--)."), + "Unexpected end of file in comment (--).", "eof-in-comment-end-space-state": - _("Unexpected end of file in comment."), + "Unexpected end of file in comment.", "eof-in-comment-end-bang-state": - _("Unexpected end of file in comment."), + "Unexpected end of file in comment.", "unexpected-char-in-comment": - _("Unexpected character in comment found."), + "Unexpected character in comment found.", "need-space-after-doctype": - _("No space after literal string 'DOCTYPE'."), + "No space after literal string 'DOCTYPE'.", "expected-doctype-name-but-got-right-bracket": - _("Unexpected > character. Expected DOCTYPE name."), + "Unexpected > character. Expected DOCTYPE name.", "expected-doctype-name-but-got-eof": - _("Unexpected end of file. Expected DOCTYPE name."), + "Unexpected end of file. Expected DOCTYPE name.", "eof-in-doctype-name": - _("Unexpected end of file in DOCTYPE name."), + "Unexpected end of file in DOCTYPE name.", "eof-in-doctype": - _("Unexpected end of file in DOCTYPE."), + "Unexpected end of file in DOCTYPE.", "expected-space-or-right-bracket-in-doctype": - _("Expected space or '>'. Got '%(data)s'"), + "Expected space or '>'. Got '%(data)s'", "unexpected-end-of-doctype": - _("Unexpected end of DOCTYPE."), + "Unexpected end of DOCTYPE.", "unexpected-char-in-doctype": - _("Unexpected character in DOCTYPE."), + "Unexpected character in DOCTYPE.", "eof-in-innerhtml": - _("XXX innerHTML EOF"), + "XXX innerHTML EOF", "unexpected-doctype": - _("Unexpected DOCTYPE. Ignored."), + "Unexpected DOCTYPE. Ignored.", "non-html-root": - _("html needs to be the first start tag."), + "html needs to be the first start tag.", "expected-doctype-but-got-eof": - _("Unexpected End of file. Expected DOCTYPE."), + "Unexpected End of file. Expected DOCTYPE.", "unknown-doctype": - _("Erroneous DOCTYPE."), + "Erroneous DOCTYPE.", "expected-doctype-but-got-chars": - _("Unexpected non-space characters. Expected DOCTYPE."), + "Unexpected non-space characters. Expected DOCTYPE.", "expected-doctype-but-got-start-tag": - _("Unexpected start tag (%(name)s). Expected DOCTYPE."), + "Unexpected start tag (%(name)s). Expected DOCTYPE.", "expected-doctype-but-got-end-tag": - _("Unexpected end tag (%(name)s). Expected DOCTYPE."), + "Unexpected end tag (%(name)s). Expected DOCTYPE.", "end-tag-after-implied-root": - _("Unexpected end tag (%(name)s) after the (implied) root element."), + "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)."), + "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 start tag head in existing head. Ignored.", "unexpected-end-tag": - _("Unexpected end tag (%(name)s). Ignored."), + "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 (%(name)s) that can be in head. Moved.", "unexpected-start-tag": - _("Unexpected start tag (%(name)s)."), + "Unexpected start tag (%(name)s).", "missing-end-tag": - _("Missing end tag (%(name)s)."), + "Missing end tag (%(name)s).", "missing-end-tags": - _("Missing end tags (%(name)s)."), + "Missing end tags (%(name)s).", "unexpected-start-tag-implies-end-tag": - _("Unexpected start tag (%(startName)s) " - "implies end tag (%(endName)s)."), + "Unexpected start tag (%(startName)s) " + "implies end tag (%(endName)s).", "unexpected-start-tag-treated-as": - _("Unexpected start tag (%(originalName)s). Treated as %(newName)s."), + "Unexpected start tag (%(originalName)s). Treated as %(newName)s.", "deprecated-tag": - _("Unexpected start tag %(name)s. Don't use it!"), + "Unexpected start tag %(name)s. Don't use it!", "unexpected-start-tag-ignored": - _("Unexpected start tag %(name)s. Ignored."), + "Unexpected start tag %(name)s. Ignored.", "expected-one-end-tag-but-got-another": - _("Unexpected end tag (%(gotName)s). " - "Missing end tag (%(expectedName)s)."), + "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 (%(name)s) seen too early. Expected other end tag.", "end-tag-too-early-named": - _("Unexpected end tag (%(gotName)s). Expected end tag (%(expectedName)s)."), + "Unexpected end tag (%(gotName)s). Expected end tag (%(expectedName)s).", "end-tag-too-early-ignored": - _("End tag (%(name)s) seen 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."), + "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."), + "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."), + "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."), + "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."), + "Unexpected end tag (%(originalName)s). Treated as %(newName)s.", "no-end-tag": - _("This element (%(name)s) has 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 (%(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 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 non-space characters in " + "table context caused voodoo mode.", "unexpected-hidden-input-in-table": - _("Unexpected input with type hidden in table context."), + "Unexpected input with type hidden in table context.", "unexpected-form-in-table": - _("Unexpected form in table context."), + "Unexpected form in table context.", "unexpected-start-tag-implies-table-voodoo": - _("Unexpected start tag (%(name)s) in " - "table context caused voodoo mode."), + "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 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 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."), + "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 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 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 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 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 input start tag in the select phase.", "unexpected-start-tag-in-select": - _("Unexpected start tag token (%(name)s in the select phase. " - "Ignored."), + "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 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 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 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 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 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 end tag token (%(name)s)" + " in the after body phase.", "unexpected-char-in-frameset": - _("Unexpected characters in the frameset phase. Characters ignored."), + "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 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 token (frameset) " + "in the frameset phase (innerHTML).", "unexpected-end-tag-in-frameset": - _("Unexpected end tag token (%(name)s)" - " in the frameset phase. Ignored."), + "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 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 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 (%(name)s)" + " in the after frameset phase. Ignored.", "unexpected-end-tag-after-body-innerhtml": - _("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."), + "Unexpected non-space characters. Expected end of file.", "expected-eof-but-got-start-tag": - _("Unexpected start tag (%(name)s)" - ". Expected end of file."), + "Unexpected start tag (%(name)s)" + ". Expected end of file.", "expected-eof-but-got-end-tag": - _("Unexpected end tag (%(name)s)" - ". Expected end of file."), + "Unexpected end tag (%(name)s)" + ". Expected end of file.", "eof-in-table": - _("Unexpected end of file. Expected table content."), + "Unexpected end of file. Expected table content.", "eof-in-select": - _("Unexpected end of file. Expected select content."), + "Unexpected end of file. Expected select content.", "eof-in-frameset": - _("Unexpected end of file. Expected frameset content."), + "Unexpected end of file. Expected frameset content.", "eof-in-script-in-script": - _("Unexpected end of file. Expected script content."), + "Unexpected end of file. Expected script content.", "eof-in-foreign-lands": - _("Unexpected end of file. Expected foreign content"), + "Unexpected end of file. Expected foreign content", "non-void-element-with-trailing-solidus": - _("Trailing solidus not allowed on element %(name)s"), + "Trailing solidus not allowed on element %(name)s", "unexpected-html-element-in-foreign-content": - _("Element %(name)s not allowed in a non-html context"), + "Element %(name)s not allowed in a non-html context", "unexpected-end-tag-before-html": - _("Unexpected end tag (%(name)s) before html."), + "Unexpected end tag (%(name)s) before html.", "XXX-undefined-error": - _("Undefined error (this sucks and should be fixed)"), + "Undefined error (this sucks and should be fixed)", } namespaces = { @@ -298,7 +296,7 @@ namespaces = { "xmlns": "http://www.w3.org/2000/xmlns/" } -scopingElements = frozenset(( +scopingElements = frozenset([ (namespaces["html"], "applet"), (namespaces["html"], "caption"), (namespaces["html"], "html"), @@ -316,9 +314,9 @@ scopingElements = frozenset(( (namespaces["svg"], "foreignObject"), (namespaces["svg"], "desc"), (namespaces["svg"], "title"), -)) +]) -formattingElements = frozenset(( +formattingElements = frozenset([ (namespaces["html"], "a"), (namespaces["html"], "b"), (namespaces["html"], "big"), @@ -333,9 +331,9 @@ formattingElements = frozenset(( (namespaces["html"], "strong"), (namespaces["html"], "tt"), (namespaces["html"], "u") -)) +]) -specialElements = frozenset(( +specialElements = frozenset([ (namespaces["html"], "address"), (namespaces["html"], "applet"), (namespaces["html"], "area"), @@ -416,22 +414,22 @@ specialElements = frozenset(( (namespaces["html"], "wbr"), (namespaces["html"], "xmp"), (namespaces["svg"], "foreignObject") -)) +]) -htmlIntegrationPointElements = frozenset(( +htmlIntegrationPointElements = frozenset([ (namespaces["mathml"], "annotaion-xml"), (namespaces["svg"], "foreignObject"), (namespaces["svg"], "desc"), (namespaces["svg"], "title") -)) +]) -mathmlTextIntegrationPointElements = frozenset(( +mathmlTextIntegrationPointElements = frozenset([ (namespaces["mathml"], "mi"), (namespaces["mathml"], "mo"), (namespaces["mathml"], "mn"), (namespaces["mathml"], "ms"), (namespaces["mathml"], "mtext") -)) +]) adjustForeignAttributes = { "xlink:actuate": ("xlink", "actuate", namespaces["xlink"]), @@ -451,21 +449,21 @@ adjustForeignAttributes = { unadjustForeignAttributes = dict([((ns, local), qname) for qname, (prefix, local, ns) in adjustForeignAttributes.items()]) -spaceCharacters = frozenset(( +spaceCharacters = frozenset([ "\t", "\n", "\u000C", " ", "\r" -)) +]) -tableInsertModeElements = frozenset(( +tableInsertModeElements = frozenset([ "table", "tbody", "tfoot", "thead", "tr" -)) +]) asciiLowercase = frozenset(string.ascii_lowercase) asciiUppercase = frozenset(string.ascii_uppercase) @@ -486,7 +484,7 @@ headingElements = ( "h6" ) -voidElements = frozenset(( +voidElements = frozenset([ "base", "command", "event-source", @@ -502,11 +500,11 @@ voidElements = frozenset(( "input", "source", "track" -)) +]) -cdataElements = frozenset(('title', 'textarea')) +cdataElements = frozenset(['title', 'textarea']) -rcdataElements = frozenset(( +rcdataElements = frozenset([ 'style', 'script', 'xmp', @@ -514,27 +512,27 @@ rcdataElements = frozenset(( '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")), + "": 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 @@ -574,7 +572,7 @@ entitiesWindows1252 = ( 376 # 0x9F 0x0178 LATIN CAPITAL LETTER Y WITH DIAERESIS ) -xmlEntities = frozenset(('lt;', 'gt;', 'amp;', 'apos;', 'quot;')) +xmlEntities = frozenset(['lt;', 'gt;', 'amp;', 'apos;', 'quot;']) entities = { "AElig": "\xc6", @@ -3088,8 +3086,8 @@ tokenTypes = { "ParseError": 7 } -tagTokenTypes = frozenset((tokenTypes["StartTag"], tokenTypes["EndTag"], - tokenTypes["EmptyTag"])) +tagTokenTypes = frozenset([tokenTypes["StartTag"], tokenTypes["EndTag"], + tokenTypes["EmptyTag"]]) prefixes = dict([(v, k) for k, v in namespaces.items()]) diff --git a/Shared/lib/python3.4/site-packages/html5lib/filters/lint.py b/Shared/lib/python3.4/site-packages/html5lib/filters/lint.py index 7cc99a4..8884696 100644 --- a/Shared/lib/python3.4/site-packages/html5lib/filters/lint.py +++ b/Shared/lib/python3.4/site-packages/html5lib/filters/lint.py @@ -1,8 +1,5 @@ from __future__ import absolute_import, division, unicode_literals -from gettext import gettext -_ = gettext - from . import _base from ..constants import cdataElements, rcdataElements, voidElements @@ -23,24 +20,24 @@ class Filter(_base.Filter): if type in ("StartTag", "EmptyTag"): name = token["name"] if contentModelFlag != "PCDATA": - raise LintError(_("StartTag not in PCDATA content model flag: %(tag)s") % {"tag": name}) + raise LintError("StartTag not in PCDATA content model flag: %(tag)s" % {"tag": name}) if not isinstance(name, str): - raise LintError(_("Tag name is not a string: %(tag)r") % {"tag": name}) + raise LintError("Tag name is not a string: %(tag)r" % {"tag": name}) if not name: - raise LintError(_("Empty tag name")) + raise LintError("Empty tag name") if type == "StartTag" and name in voidElements: - raise LintError(_("Void element reported as StartTag token: %(tag)s") % {"tag": name}) + raise LintError("Void element reported as StartTag token: %(tag)s" % {"tag": name}) elif type == "EmptyTag" and name not in voidElements: - raise LintError(_("Non-void element reported as EmptyTag token: %(tag)s") % {"tag": token["name"]}) + raise LintError("Non-void element reported as EmptyTag token: %(tag)s" % {"tag": token["name"]}) if type == "StartTag": open_elements.append(name) for name, value in token["data"]: if not isinstance(name, str): - raise LintError(_("Attribute name is not a string: %(name)r") % {"name": name}) + raise LintError("Attribute name is not a string: %(name)r" % {"name": name}) if not name: - raise LintError(_("Empty attribute name")) + raise LintError("Empty attribute name") if not isinstance(value, str): - raise LintError(_("Attribute value is not a string: %(value)r") % {"value": value}) + raise LintError("Attribute value is not a string: %(value)r" % {"value": value}) if name in cdataElements: contentModelFlag = "CDATA" elif name in rcdataElements: @@ -51,43 +48,43 @@ class Filter(_base.Filter): elif type == "EndTag": name = token["name"] if not isinstance(name, str): - raise LintError(_("Tag name is not a string: %(tag)r") % {"tag": name}) + raise LintError("Tag name is not a string: %(tag)r" % {"tag": name}) if not name: - raise LintError(_("Empty tag name")) + raise LintError("Empty tag name") if name in voidElements: - raise LintError(_("Void element reported as EndTag token: %(tag)s") % {"tag": name}) + raise LintError("Void element reported as EndTag token: %(tag)s" % {"tag": name}) start_name = open_elements.pop() if start_name != name: - raise LintError(_("EndTag (%(end)s) does not match StartTag (%(start)s)") % {"end": name, "start": start_name}) + raise LintError("EndTag (%(end)s) does not match StartTag (%(start)s)" % {"end": name, "start": start_name}) contentModelFlag = "PCDATA" elif type == "Comment": if contentModelFlag != "PCDATA": - raise LintError(_("Comment not in PCDATA content model flag")) + raise LintError("Comment not in PCDATA content model flag") elif type in ("Characters", "SpaceCharacters"): data = token["data"] if not isinstance(data, str): - raise LintError(_("Attribute name is not a string: %(name)r") % {"name": data}) + raise LintError("Attribute name is not a string: %(name)r" % {"name": data}) if not data: - raise LintError(_("%(type)s token with empty data") % {"type": type}) + raise LintError("%(type)s token with empty data" % {"type": type}) if type == "SpaceCharacters": data = data.strip(spaceCharacters) if data: - raise LintError(_("Non-space character(s) found in SpaceCharacters token: %(token)r") % {"token": data}) + raise LintError("Non-space character(s) found in SpaceCharacters token: %(token)r" % {"token": data}) elif type == "Doctype": name = token["name"] if contentModelFlag != "PCDATA": - raise LintError(_("Doctype not in PCDATA content model flag: %(name)s") % {"name": name}) + raise LintError("Doctype not in PCDATA content model flag: %(name)s" % {"name": name}) if not isinstance(name, str): - raise LintError(_("Tag name is not a string: %(tag)r") % {"tag": name}) + raise LintError("Tag name is not a string: %(tag)r" % {"tag": name}) # XXX: what to do with token["data"] ? elif type in ("ParseError", "SerializeError"): pass else: - raise LintError(_("Unknown token type: %(type)s") % {"type": type}) + raise LintError("Unknown token type: %(type)s" % {"type": type}) yield token diff --git a/Shared/lib/python3.4/site-packages/html5lib/html5parser.py b/Shared/lib/python3.4/site-packages/html5lib/html5parser.py index b0f14f3..12aa6a3 100644 --- a/Shared/lib/python3.4/site-packages/html5lib/html5parser.py +++ b/Shared/lib/python3.4/site-packages/html5lib/html5parser.py @@ -18,6 +18,7 @@ from .constants import cdataElements, rcdataElements from .constants import tokenTypes, ReparseException, namespaces from .constants import htmlIntegrationPointElements, mathmlTextIntegrationPointElements from .constants import adjustForeignAttributes as adjustForeignAttributesMap +from .constants import E def parse(doc, treebuilder="etree", encoding=None, @@ -129,6 +130,17 @@ class HTMLParser(object): 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] + def isHTMLIntegrationPoint(self, element): if (element.name == "annotation-xml" and element.namespace == namespaces["mathml"]): @@ -245,7 +257,7 @@ class HTMLParser(object): # XXX The idea is to make errorcode mandatory. self.errors.append((self.tokenizer.stream.position(), errorcode, datavars)) if self.strict: - raise ParseError + raise ParseError(E[errorcode] % datavars) def normalizeToken(self, token): """ HTML5 specific normalizations to the token stream """ @@ -868,7 +880,7 @@ def getPhases(debug): self.startTagHandler = utils.MethodDispatcher([ ("html", self.startTagHtml), (("base", "basefont", "bgsound", "command", "link", "meta", - "noframes", "script", "style", "title"), + "script", "style", "title"), self.startTagProcessInHead), ("body", self.startTagBody), ("frameset", self.startTagFrameset), @@ -1205,8 +1217,7 @@ def getPhases(debug): attributes["name"] = "isindex" self.processStartTag(impliedTagToken("input", "StartTag", attributes=attributes, - selfClosing= - token["selfClosing"])) + selfClosing=token["selfClosing"])) self.processEndTag(impliedTagToken("label")) self.processStartTag(impliedTagToken("hr", "StartTag")) self.processEndTag(impliedTagToken("form")) diff --git a/Shared/lib/python3.4/site-packages/html5lib/inputstream.py b/Shared/lib/python3.4/site-packages/html5lib/inputstream.py index 9e03b93..7020aa6 100644 --- a/Shared/lib/python3.4/site-packages/html5lib/inputstream.py +++ b/Shared/lib/python3.4/site-packages/html5lib/inputstream.py @@ -28,7 +28,18 @@ 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_re = re.compile("[\u0001-\u0008\u000B\u000E-\u001F\u007F-\u009F\uD800-\uDFFF\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]") + +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]" + +if utils.supports_lone_surrogates: + # Use one extra step of indirection and create surrogates with + # unichr. Not using this indirection would introduce an illegal + # unicode literal on platforms not supporting such lone + # surrogates. + invalid_unicode_re = re.compile(invalid_unicode_no_surrogate + + eval('"\\uD800-\\uDFFF"')) +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, @@ -164,13 +175,18 @@ class HTMLUnicodeInputStream(object): """ - # Craziness - if len("\U0010FFFF") == 1: + 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 + self.replaceCharactersRegexp = None + elif len("\U0010FFFF") == 1: self.reportCharacterErrors = self.characterErrorsUCS4 - self.replaceCharactersRegexp = re.compile("[\uD800-\uDFFF]") + self.replaceCharactersRegexp = re.compile(eval('"[\\uD800-\\uDFFF]"')) else: self.reportCharacterErrors = self.characterErrorsUCS2 - self.replaceCharactersRegexp = re.compile("([\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?/ + (?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 HTMLSanitizerMixin(object): """ sanitization of XHTML+MathML+SVG and of inline style attributes.""" @@ -100,8 +115,8 @@ class HTMLSanitizerMixin(object): 'xml:base', 'xml:lang', 'xml:space', 'xmlns', 'xmlns:xlink', 'y', 'y1', 'y2', 'zoomAndPan'] - attr_val_is_uri = ['href', 'src', 'cite', 'action', 'longdesc', 'poster', - 'xlink:href', 'xml:base'] + attr_val_is_uri = ['href', 'src', 'cite', 'action', 'longdesc', 'poster', 'background', 'datasrc', + 'dynsrc', 'lowsrc', 'ping', 'poster', 'xlink:href', 'xml:base'] svg_attr_val_allows_ref = ['clip-path', 'color-profile', 'cursor', 'fill', 'filter', 'marker', 'marker-start', 'marker-mid', 'marker-end', @@ -138,7 +153,9 @@ class HTMLSanitizerMixin(object): acceptable_protocols = ['ed2k', 'ftp', 'http', 'https', 'irc', 'mailto', 'news', 'gopher', 'nntp', 'telnet', 'webcal', 'xmpp', 'callto', 'feed', 'urn', 'aim', 'rsync', 'tag', - 'ssh', 'sftp', 'rtsp', 'afs'] + 'ssh', 'sftp', 'rtsp', 'afs', 'data'] + + acceptable_content_types = ['image/png', 'image/jpeg', 'image/gif', 'image/webp', 'image/bmp', 'text/plain'] # subclasses may define their own versions of these constants allowed_elements = acceptable_elements + mathml_elements + svg_elements @@ -147,6 +164,7 @@ class HTMLSanitizerMixin(object): allowed_css_keywords = acceptable_css_keywords allowed_svg_properties = acceptable_svg_properties allowed_protocols = acceptable_protocols + allowed_content_types = acceptable_content_types # Sanitize the +html+, escaping all elements not in ALLOWED_ELEMENTS, and # stripping out all # attributes not in ALLOWED_ATTRIBUTES. Style @@ -189,10 +207,21 @@ class HTMLSanitizerMixin(object): unescape(attrs[attr])).lower() # remove replacement characters from unescaped characters val_unescaped = val_unescaped.replace("\ufffd", "") - if (re.match("^[a-z0-9][-+.a-z0-9]*:", val_unescaped) and - (val_unescaped.split(':')[0] not in - self.allowed_protocols)): + 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 = content_type_rgx.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][^)]+?\)', @@ -245,7 +274,7 @@ class HTMLSanitizerMixin(object): elif prop.split('-')[0].lower() in ['background', 'border', 'margin', 'padding']: for keyword in value.split(): - if not keyword in self.acceptable_css_keywords and \ + if keyword not in self.acceptable_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): break else: diff --git a/Shared/lib/python3.4/site-packages/html5lib/serializer/htmlserializer.py b/Shared/lib/python3.4/site-packages/html5lib/serializer/htmlserializer.py index 412a5a2..be4d634 100644 --- a/Shared/lib/python3.4/site-packages/html5lib/serializer/htmlserializer.py +++ b/Shared/lib/python3.4/site-packages/html5lib/serializer/htmlserializer.py @@ -1,9 +1,6 @@ from __future__ import absolute_import, division, unicode_literals from six import text_type -import gettext -_ = gettext.gettext - try: from functools import reduce except ImportError: @@ -35,7 +32,7 @@ else: v = utils.surrogatePairToCodepoint(v) else: v = ord(v) - if not v in encode_entity_map or k.islower(): + if v not in encode_entity_map or k.islower(): # prefer < over < and similarly for &, >, etc. encode_entity_map[v] = k @@ -208,7 +205,7 @@ class HTMLSerializer(object): if token["systemId"]: if token["systemId"].find('"') >= 0: if token["systemId"].find("'") >= 0: - self.serializeError(_("System identifer contains both single and double quote characters")) + self.serializeError("System identifer contains both single and double quote characters") quote_char = "'" else: quote_char = '"' @@ -220,7 +217,7 @@ class HTMLSerializer(object): elif type in ("Characters", "SpaceCharacters"): if type == "SpaceCharacters" or in_cdata: if in_cdata and token["data"].find("= 0: - self.serializeError(_("Unexpected " % name) elif type == "Comment": data = token["data"] if data.find("--") >= 0: - self.serializeError(_("Comment contains --")) + self.serializeError("Comment contains --") yield self.encodeStrict("" % token["data"]) elif type == "Entity": name = token["name"] key = name + ";" - if not key in entities: - self.serializeError(_("Entity %s not recognized" % name)) + if key not in entities: + self.serializeError("Entity %s not recognized" % name) if self.resolve_entities and key not in xmlEntities: data = entities[key] else: diff --git a/Shared/lib/python3.4/site-packages/html5lib/treebuilders/dom.py b/Shared/lib/python3.4/site-packages/html5lib/treebuilders/dom.py index 61e5ed7..234233b 100644 --- a/Shared/lib/python3.4/site-packages/html5lib/treebuilders/dom.py +++ b/Shared/lib/python3.4/site-packages/html5lib/treebuilders/dom.py @@ -158,7 +158,7 @@ def getDomBuilder(DomImplementation): else: # HACK: allow text nodes as children of the document node if hasattr(self.dom, '_child_node_types'): - if not Node.TEXT_NODE in self.dom._child_node_types: + if Node.TEXT_NODE not in self.dom._child_node_types: self.dom._child_node_types = list(self.dom._child_node_types) self.dom._child_node_types.append(Node.TEXT_NODE) self.dom.appendChild(self.dom.createTextNode(data)) diff --git a/Shared/lib/python3.4/site-packages/html5lib/treewalkers/__init__.py b/Shared/lib/python3.4/site-packages/html5lib/treewalkers/__init__.py index 18124e7..20b91b1 100644 --- a/Shared/lib/python3.4/site-packages/html5lib/treewalkers/__init__.py +++ b/Shared/lib/python3.4/site-packages/html5lib/treewalkers/__init__.py @@ -10,8 +10,12 @@ returning an iterator generating tokens. from __future__ import absolute_import, division, unicode_literals +__all__ = ["getTreeWalker", "pprint", "dom", "etree", "genshistream", "lxmletree", + "pulldom"] + import sys +from .. import constants from ..utils import default_etree treeWalkerCache = {} @@ -55,3 +59,89 @@ def getTreeWalker(treeType, implementation=None, **kwargs): # XXX: NEVER cache here, caching is done in the etree submodule return etree.getETreeModule(implementation, **kwargs).TreeWalker return treeWalkerCache.get(treeType) + + +def concatenateCharacterTokens(tokens): + pendingCharacters = [] + for token in tokens: + type = token["type"] + if type in ("Characters", "SpaceCharacters"): + pendingCharacters.append(token["data"]) + else: + if pendingCharacters: + yield {"type": "Characters", "data": "".join(pendingCharacters)} + pendingCharacters = [] + yield token + if pendingCharacters: + yield {"type": "Characters", "data": "".join(pendingCharacters)} + + +def pprint(walker): + """Pretty printer for tree walkers""" + output = [] + indent = 0 + for token in concatenateCharacterTokens(walker): + type = token["type"] + if type in ("StartTag", "EmptyTag"): + # tag name + if token["namespace"] and token["namespace"] != constants.namespaces["html"]: + if token["namespace"] in constants.prefixes: + ns = constants.prefixes[token["namespace"]] + else: + ns = token["namespace"] + name = "%s %s" % (ns, token["name"]) + else: + name = token["name"] + output.append("%s<%s>" % (" " * indent, name)) + indent += 2 + # attributes (sorted for consistent ordering) + attrs = token["data"] + for (namespace, localname), value in sorted(attrs.items()): + if namespace: + if namespace in constants.prefixes: + ns = constants.prefixes[namespace] + else: + ns = namespace + name = "%s %s" % (ns, localname) + else: + name = localname + output.append("%s%s=\"%s\"" % (" " * indent, name, value)) + # self-closing + if type == "EmptyTag": + indent -= 2 + + elif type == "EndTag": + indent -= 2 + + elif type == "Comment": + output.append("%s" % (" " * indent, token["data"])) + + elif type == "Doctype": + if token["name"]: + if token["publicId"]: + output.append("""%s""" % + (" " * indent, + token["name"], + token["publicId"], + token["systemId"] if token["systemId"] else "")) + elif token["systemId"]: + output.append("""%s""" % + (" " * indent, + token["name"], + token["systemId"])) + else: + output.append("%s" % (" " * indent, + token["name"])) + else: + output.append("%s" % (" " * indent,)) + + elif type == "Characters": + output.append("%s\"%s\"" % (" " * indent, token["data"])) + + elif type == "SpaceCharacters": + assert False, "concatenateCharacterTokens should have got rid of all Space tokens" + + else: + raise ValueError("Unknown token type, %s" % type) + + return "\n".join(output) diff --git a/Shared/lib/python3.4/site-packages/html5lib/treewalkers/_base.py b/Shared/lib/python3.4/site-packages/html5lib/treewalkers/_base.py index 34252e5..4e11cd0 100644 --- a/Shared/lib/python3.4/site-packages/html5lib/treewalkers/_base.py +++ b/Shared/lib/python3.4/site-packages/html5lib/treewalkers/_base.py @@ -1,8 +1,8 @@ from __future__ import absolute_import, division, unicode_literals from six import text_type, string_types -import gettext -_ = gettext.gettext +__all__ = ["DOCUMENT", "DOCTYPE", "TEXT", "ELEMENT", "COMMENT", "ENTITY", "UNKNOWN", + "TreeWalker", "NonRecursiveTreeWalker"] from xml.dom import Node @@ -58,7 +58,7 @@ class TreeWalker(object): "namespace": to_text(namespace), "data": attrs} if hasChildren: - yield self.error(_("Void element has children")) + yield self.error("Void element has children") def startTag(self, namespace, name, attrs): assert namespace is None or isinstance(namespace, string_types), type(namespace) @@ -122,7 +122,7 @@ class TreeWalker(object): return {"type": "Entity", "name": text_type(name)} def unknown(self, nodeType): - return self.error(_("Unknown node type: ") + nodeType) + return self.error("Unknown node type: " + nodeType) class NonRecursiveTreeWalker(TreeWalker): diff --git a/Shared/lib/python3.4/site-packages/html5lib/treewalkers/dom.py b/Shared/lib/python3.4/site-packages/html5lib/treewalkers/dom.py index a01287a..ac4dcf3 100644 --- a/Shared/lib/python3.4/site-packages/html5lib/treewalkers/dom.py +++ b/Shared/lib/python3.4/site-packages/html5lib/treewalkers/dom.py @@ -2,9 +2,6 @@ from __future__ import absolute_import, division, unicode_literals from xml.dom import Node -import gettext -_ = gettext.gettext - from . import _base diff --git a/Shared/lib/python3.4/site-packages/html5lib/treewalkers/etree.py b/Shared/lib/python3.4/site-packages/html5lib/treewalkers/etree.py index fd8a9cc..69840c2 100644 --- a/Shared/lib/python3.4/site-packages/html5lib/treewalkers/etree.py +++ b/Shared/lib/python3.4/site-packages/html5lib/treewalkers/etree.py @@ -7,12 +7,10 @@ except ImportError: from ordereddict import OrderedDict except ImportError: OrderedDict = dict -import gettext -_ = gettext.gettext import re -from six import text_type +from six import string_types from . import _base from ..utils import moduleFactoryFactory @@ -60,7 +58,7 @@ def getETreeBuilder(ElementTreeImplementation): return _base.COMMENT, node.text else: - assert type(node.tag) == text_type, type(node.tag) + assert isinstance(node.tag, string_types), type(node.tag) # This is assumed to be an ordinary element match = tag_regexp.match(node.tag) if match: diff --git a/Shared/lib/python3.4/site-packages/html5lib/treewalkers/lxmletree.py b/Shared/lib/python3.4/site-packages/html5lib/treewalkers/lxmletree.py index bc934ac..90e116d 100644 --- a/Shared/lib/python3.4/site-packages/html5lib/treewalkers/lxmletree.py +++ b/Shared/lib/python3.4/site-packages/html5lib/treewalkers/lxmletree.py @@ -4,9 +4,6 @@ from six import text_type from lxml import etree from ..treebuilders.etree import tag_regexp -from gettext import gettext -_ = gettext - from . import _base from .. import ihatexml @@ -130,7 +127,7 @@ class TreeWalker(_base.NonRecursiveTreeWalker): def getNodeDetails(self, node): if isinstance(node, tuple): # Text node node, key = node - assert key in ("text", "tail"), _("Text nodes are text or tail, found %s") % key + assert key in ("text", "tail"), "Text nodes are text or tail, found %s" % key return _base.TEXT, ensure_str(getattr(node, key)) elif isinstance(node, Root): @@ -169,7 +166,7 @@ class TreeWalker(_base.NonRecursiveTreeWalker): attrs, len(node) > 0 or node.text) def getFirstChild(self, node): - assert not isinstance(node, tuple), _("Text nodes have no children") + assert not isinstance(node, tuple), "Text nodes have no children" assert len(node) or node.text, "Node has no children" if node.text: @@ -180,7 +177,7 @@ class TreeWalker(_base.NonRecursiveTreeWalker): def getNextSibling(self, node): if isinstance(node, tuple): # Text node node, key = node - assert key in ("text", "tail"), _("Text nodes are text or tail, found %s") % key + assert key in ("text", "tail"), "Text nodes are text or tail, found %s" % key if key == "text": # XXX: we cannot use a "bool(node) and node[0] or None" construct here # because node[0] might evaluate to False if it has no child element @@ -196,7 +193,7 @@ class TreeWalker(_base.NonRecursiveTreeWalker): def getParentNode(self, node): if isinstance(node, tuple): # Text node node, key = node - assert key in ("text", "tail"), _("Text nodes are text or tail, found %s") % key + assert key in ("text", "tail"), "Text nodes are text or tail, found %s" % key if key == "text": return node # else: fallback to "normal" processing diff --git a/Shared/lib/python3.4/site-packages/html5lib/utils.py b/Shared/lib/python3.4/site-packages/html5lib/utils.py index 2f41f4d..fdc18fe 100644 --- a/Shared/lib/python3.4/site-packages/html5lib/utils.py +++ b/Shared/lib/python3.4/site-packages/html5lib/utils.py @@ -2,6 +2,8 @@ from __future__ import absolute_import, division, unicode_literals from types import ModuleType +from six import text_type + try: import xml.etree.cElementTree as default_etree except ImportError: @@ -9,7 +11,26 @@ except ImportError: __all__ = ["default_etree", "MethodDispatcher", "isSurrogatePair", - "surrogatePairToCodepoint", "moduleFactoryFactory"] + "surrogatePairToCodepoint", "moduleFactoryFactory", + "supports_lone_surrogates"] + + +# 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"') + if not isinstance(_x, text_type): + # We need this with u"" because of http://bugs.jython.org/issue2039 + _x = eval('u"\\uD800"') + assert isinstance(_x, text_type) +except: + supports_lone_surrogates = False +else: + supports_lone_surrogates = True class MethodDispatcher(dict): diff --git a/Shared/lib/python3.4/site-packages/ox-2.1.unknown.egg-info/PKG-INFO b/Shared/lib/python3.4/site-packages/ox-2.3.x.egg-info/PKG-INFO similarity index 96% rename from Shared/lib/python3.4/site-packages/ox-2.1.unknown.egg-info/PKG-INFO rename to Shared/lib/python3.4/site-packages/ox-2.3.x.egg-info/PKG-INFO index a743c58..cad46d6 100644 --- a/Shared/lib/python3.4/site-packages/ox-2.1.unknown.egg-info/PKG-INFO +++ b/Shared/lib/python3.4/site-packages/ox-2.3.x.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: ox -Version: 2.1.unknown +Version: 2.3.x Summary: python-ox - the web in a dict Home-page: http://code.0x2620.org/python-ox Author: 0x2620 diff --git a/Shared/lib/python3.4/site-packages/ox-2.1.unknown.egg-info/SOURCES.txt b/Shared/lib/python3.4/site-packages/ox-2.3.x.egg-info/SOURCES.txt similarity index 96% rename from Shared/lib/python3.4/site-packages/ox-2.1.unknown.egg-info/SOURCES.txt rename to Shared/lib/python3.4/site-packages/ox-2.3.x.egg-info/SOURCES.txt index 15045bb..95ddf17 100644 --- a/Shared/lib/python3.4/site-packages/ox-2.1.unknown.egg-info/SOURCES.txt +++ b/Shared/lib/python3.4/site-packages/ox-2.3.x.egg-info/SOURCES.txt @@ -42,7 +42,7 @@ ox/django/api/urls.py ox/django/api/views.py ox/torrent/__init__.py ox/torrent/bencode.py -ox/torrent/btformats.py +ox/torrent/bencode3.py ox/torrent/makemetafile.py ox/web/__init__.py ox/web/abebooks.py @@ -74,6 +74,7 @@ ox/web/piratecinema.py ox/web/rottentomatoes.py ox/web/siteparser.py ox/web/spiegel.py +ox/web/startpage.py ox/web/thepiratebay.py ox/web/torrent.py ox/web/tv.py diff --git a/Shared/lib/python3.4/site-packages/ox-2.1.unknown.egg-info/dependency_links.txt b/Shared/lib/python3.4/site-packages/ox-2.3.x.egg-info/dependency_links.txt similarity index 100% rename from Shared/lib/python3.4/site-packages/ox-2.1.unknown.egg-info/dependency_links.txt rename to Shared/lib/python3.4/site-packages/ox-2.3.x.egg-info/dependency_links.txt diff --git a/Shared/lib/python3.4/site-packages/ox-2.1.unknown.egg-info/installed-files.txt b/Shared/lib/python3.4/site-packages/ox-2.3.x.egg-info/installed-files.txt similarity index 97% rename from Shared/lib/python3.4/site-packages/ox-2.1.unknown.egg-info/installed-files.txt rename to Shared/lib/python3.4/site-packages/ox-2.3.x.egg-info/installed-files.txt index b944873..0204a65 100644 --- a/Shared/lib/python3.4/site-packages/ox-2.1.unknown.egg-info/installed-files.txt +++ b/Shared/lib/python3.4/site-packages/ox-2.3.x.egg-info/installed-files.txt @@ -1,162 +1,164 @@ -../ox/image.py -../ox/location.py +../ox/__init__.py +../ox/api.py ../ox/cache.py -../ox/net.py -../ox/utils.py -../ox/jsonc.py -../ox/normalize.py +../ox/file.py +../ox/fixunicode.py ../ox/form.py ../ox/format.py -../ox/__init__.py -../ox/movie.py -../ox/text.py ../ox/geo.py -../ox/api.py -../ox/fixunicode.py -../ox/oembed.py ../ox/html.py -../ox/file.py -../ox/srt.py -../ox/js.py +../ox/image.py ../ox/iso.py -../ox/django/http.py -../ox/django/utils.py -../ox/django/monitor.py +../ox/js.py +../ox/jsonc.py +../ox/location.py +../ox/movie.py +../ox/net.py +../ox/normalize.py +../ox/oembed.py +../ox/srt.py +../ox/text.py +../ox/utils.py ../ox/django/__init__.py -../ox/django/middleware.py ../ox/django/decorators.py ../ox/django/fields.py -../ox/django/shortcuts.py -../ox/django/views.py +../ox/django/http.py +../ox/django/middleware.py +../ox/django/monitor.py ../ox/django/query.py +../ox/django/shortcuts.py +../ox/django/utils.py +../ox/django/views.py ../ox/django/widgets.py ../ox/django/api/__init__.py +../ox/django/api/actions.py ../ox/django/api/urls.py ../ox/django/api/views.py -../ox/django/api/actions.py ../ox/torrent/__init__.py -../ox/torrent/makemetafile.py ../ox/torrent/bencode.py -../ox/torrent/btformats.py -../ox/web/oxdb.py -../ox/web/lyricsfly.py -../ox/web/spiegel.py -../ox/web/allmovie.py -../ox/web/twitter.py -../ox/web/siteparser.py -../ox/web/ubu.py -../ox/web/epguides.py +../ox/torrent/bencode3.py +../ox/torrent/makemetafile.py ../ox/web/__init__.py -../ox/web/archive.py -../ox/web/freebase.py -../ox/web/vimeo.py -../ox/web/thepiratebay.py -../ox/web/auth.py -../ox/web/duckduckgo.py -../ox/web/flixter.py -../ox/web/rottentomatoes.py -../ox/web/criterion.py -../ox/web/lookupbyisbn.py -../ox/web/wikipedia.py ../ox/web/abebooks.py +../ox/web/allmovie.py ../ox/web/amazon.py -../ox/web/impawards.py -../ox/web/tv.py -../ox/web/dailymotion.py -../ox/web/movieposterdb.py -../ox/web/filmsdivision.py -../ox/web/arsenalberlin.py -../ox/web/youtube.py -../ox/web/google.py -../ox/web/itunes.py -../ox/web/piratecinema.py -../ox/web/opensubtitles.py -../ox/web/mininova.py -../ox/web/imdb.py ../ox/web/apple.py -../ox/web/torrent.py +../ox/web/archive.py +../ox/web/arsenalberlin.py +../ox/web/auth.py +../ox/web/criterion.py +../ox/web/dailymotion.py +../ox/web/duckduckgo.py +../ox/web/epguides.py +../ox/web/filmsdivision.py +../ox/web/flixter.py +../ox/web/freebase.py +../ox/web/google.py +../ox/web/imdb.py +../ox/web/impawards.py +../ox/web/itunes.py +../ox/web/lookupbyisbn.py +../ox/web/lyricsfly.py ../ox/web/metacritic.py -../ox/__pycache__/image.cpython-34.pyc -../ox/__pycache__/location.cpython-34.pyc +../ox/web/mininova.py +../ox/web/movieposterdb.py +../ox/web/opensubtitles.py +../ox/web/oxdb.py +../ox/web/piratecinema.py +../ox/web/rottentomatoes.py +../ox/web/siteparser.py +../ox/web/spiegel.py +../ox/web/startpage.py +../ox/web/thepiratebay.py +../ox/web/torrent.py +../ox/web/tv.py +../ox/web/twitter.py +../ox/web/ubu.py +../ox/web/vimeo.py +../ox/web/wikipedia.py +../ox/web/youtube.py +../ox/__pycache__/__init__.cpython-34.pyc +../ox/__pycache__/api.cpython-34.pyc ../ox/__pycache__/cache.cpython-34.pyc -../ox/__pycache__/net.cpython-34.pyc -../ox/__pycache__/utils.cpython-34.pyc -../ox/__pycache__/jsonc.cpython-34.pyc -../ox/__pycache__/normalize.cpython-34.pyc +../ox/__pycache__/file.cpython-34.pyc +../ox/__pycache__/fixunicode.cpython-34.pyc ../ox/__pycache__/form.cpython-34.pyc ../ox/__pycache__/format.cpython-34.pyc -../ox/__pycache__/__init__.cpython-34.pyc -../ox/__pycache__/movie.cpython-34.pyc -../ox/__pycache__/text.cpython-34.pyc ../ox/__pycache__/geo.cpython-34.pyc -../ox/__pycache__/api.cpython-34.pyc -../ox/__pycache__/fixunicode.cpython-34.pyc -../ox/__pycache__/oembed.cpython-34.pyc ../ox/__pycache__/html.cpython-34.pyc -../ox/__pycache__/file.cpython-34.pyc -../ox/__pycache__/srt.cpython-34.pyc -../ox/__pycache__/js.cpython-34.pyc +../ox/__pycache__/image.cpython-34.pyc ../ox/__pycache__/iso.cpython-34.pyc -../ox/django/__pycache__/http.cpython-34.pyc -../ox/django/__pycache__/utils.cpython-34.pyc -../ox/django/__pycache__/monitor.cpython-34.pyc +../ox/__pycache__/js.cpython-34.pyc +../ox/__pycache__/jsonc.cpython-34.pyc +../ox/__pycache__/location.cpython-34.pyc +../ox/__pycache__/movie.cpython-34.pyc +../ox/__pycache__/net.cpython-34.pyc +../ox/__pycache__/normalize.cpython-34.pyc +../ox/__pycache__/oembed.cpython-34.pyc +../ox/__pycache__/srt.cpython-34.pyc +../ox/__pycache__/text.cpython-34.pyc +../ox/__pycache__/utils.cpython-34.pyc ../ox/django/__pycache__/__init__.cpython-34.pyc -../ox/django/__pycache__/middleware.cpython-34.pyc ../ox/django/__pycache__/decorators.cpython-34.pyc ../ox/django/__pycache__/fields.cpython-34.pyc -../ox/django/__pycache__/shortcuts.cpython-34.pyc -../ox/django/__pycache__/views.cpython-34.pyc +../ox/django/__pycache__/http.cpython-34.pyc +../ox/django/__pycache__/middleware.cpython-34.pyc +../ox/django/__pycache__/monitor.cpython-34.pyc ../ox/django/__pycache__/query.cpython-34.pyc +../ox/django/__pycache__/shortcuts.cpython-34.pyc +../ox/django/__pycache__/utils.cpython-34.pyc +../ox/django/__pycache__/views.cpython-34.pyc ../ox/django/__pycache__/widgets.cpython-34.pyc ../ox/django/api/__pycache__/__init__.cpython-34.pyc +../ox/django/api/__pycache__/actions.cpython-34.pyc ../ox/django/api/__pycache__/urls.cpython-34.pyc ../ox/django/api/__pycache__/views.cpython-34.pyc -../ox/django/api/__pycache__/actions.cpython-34.pyc ../ox/torrent/__pycache__/__init__.cpython-34.pyc -../ox/torrent/__pycache__/makemetafile.cpython-34.pyc ../ox/torrent/__pycache__/bencode.cpython-34.pyc -../ox/torrent/__pycache__/btformats.cpython-34.pyc -../ox/web/__pycache__/oxdb.cpython-34.pyc -../ox/web/__pycache__/lyricsfly.cpython-34.pyc -../ox/web/__pycache__/spiegel.cpython-34.pyc -../ox/web/__pycache__/allmovie.cpython-34.pyc -../ox/web/__pycache__/twitter.cpython-34.pyc -../ox/web/__pycache__/siteparser.cpython-34.pyc -../ox/web/__pycache__/ubu.cpython-34.pyc -../ox/web/__pycache__/epguides.cpython-34.pyc +../ox/torrent/__pycache__/bencode3.cpython-34.pyc +../ox/torrent/__pycache__/makemetafile.cpython-34.pyc ../ox/web/__pycache__/__init__.cpython-34.pyc -../ox/web/__pycache__/archive.cpython-34.pyc -../ox/web/__pycache__/freebase.cpython-34.pyc -../ox/web/__pycache__/vimeo.cpython-34.pyc -../ox/web/__pycache__/thepiratebay.cpython-34.pyc -../ox/web/__pycache__/auth.cpython-34.pyc -../ox/web/__pycache__/duckduckgo.cpython-34.pyc -../ox/web/__pycache__/flixter.cpython-34.pyc -../ox/web/__pycache__/rottentomatoes.cpython-34.pyc -../ox/web/__pycache__/criterion.cpython-34.pyc -../ox/web/__pycache__/lookupbyisbn.cpython-34.pyc -../ox/web/__pycache__/wikipedia.cpython-34.pyc ../ox/web/__pycache__/abebooks.cpython-34.pyc +../ox/web/__pycache__/allmovie.cpython-34.pyc ../ox/web/__pycache__/amazon.cpython-34.pyc -../ox/web/__pycache__/impawards.cpython-34.pyc -../ox/web/__pycache__/tv.cpython-34.pyc -../ox/web/__pycache__/dailymotion.cpython-34.pyc -../ox/web/__pycache__/movieposterdb.cpython-34.pyc -../ox/web/__pycache__/filmsdivision.cpython-34.pyc -../ox/web/__pycache__/arsenalberlin.cpython-34.pyc -../ox/web/__pycache__/youtube.cpython-34.pyc -../ox/web/__pycache__/google.cpython-34.pyc -../ox/web/__pycache__/itunes.cpython-34.pyc -../ox/web/__pycache__/piratecinema.cpython-34.pyc -../ox/web/__pycache__/opensubtitles.cpython-34.pyc -../ox/web/__pycache__/mininova.cpython-34.pyc -../ox/web/__pycache__/imdb.cpython-34.pyc ../ox/web/__pycache__/apple.cpython-34.pyc -../ox/web/__pycache__/torrent.cpython-34.pyc +../ox/web/__pycache__/archive.cpython-34.pyc +../ox/web/__pycache__/arsenalberlin.cpython-34.pyc +../ox/web/__pycache__/auth.cpython-34.pyc +../ox/web/__pycache__/criterion.cpython-34.pyc +../ox/web/__pycache__/dailymotion.cpython-34.pyc +../ox/web/__pycache__/duckduckgo.cpython-34.pyc +../ox/web/__pycache__/epguides.cpython-34.pyc +../ox/web/__pycache__/filmsdivision.cpython-34.pyc +../ox/web/__pycache__/flixter.cpython-34.pyc +../ox/web/__pycache__/freebase.cpython-34.pyc +../ox/web/__pycache__/google.cpython-34.pyc +../ox/web/__pycache__/imdb.cpython-34.pyc +../ox/web/__pycache__/impawards.cpython-34.pyc +../ox/web/__pycache__/itunes.cpython-34.pyc +../ox/web/__pycache__/lookupbyisbn.cpython-34.pyc +../ox/web/__pycache__/lyricsfly.cpython-34.pyc ../ox/web/__pycache__/metacritic.cpython-34.pyc +../ox/web/__pycache__/mininova.cpython-34.pyc +../ox/web/__pycache__/movieposterdb.cpython-34.pyc +../ox/web/__pycache__/opensubtitles.cpython-34.pyc +../ox/web/__pycache__/oxdb.cpython-34.pyc +../ox/web/__pycache__/piratecinema.cpython-34.pyc +../ox/web/__pycache__/rottentomatoes.cpython-34.pyc +../ox/web/__pycache__/siteparser.cpython-34.pyc +../ox/web/__pycache__/spiegel.cpython-34.pyc +../ox/web/__pycache__/startpage.cpython-34.pyc +../ox/web/__pycache__/thepiratebay.cpython-34.pyc +../ox/web/__pycache__/torrent.cpython-34.pyc +../ox/web/__pycache__/tv.cpython-34.pyc +../ox/web/__pycache__/twitter.cpython-34.pyc +../ox/web/__pycache__/ubu.cpython-34.pyc +../ox/web/__pycache__/vimeo.cpython-34.pyc +../ox/web/__pycache__/wikipedia.cpython-34.pyc +../ox/web/__pycache__/youtube.cpython-34.pyc ./ -dependency_links.txt PKG-INFO -SOURCES.txt -top_level.txt requires.txt +dependency_links.txt +top_level.txt +SOURCES.txt diff --git a/Shared/lib/python3.4/site-packages/ox-2.1.unknown.egg-info/requires.txt b/Shared/lib/python3.4/site-packages/ox-2.3.x.egg-info/requires.txt similarity index 63% rename from Shared/lib/python3.4/site-packages/ox-2.1.unknown.egg-info/requires.txt rename to Shared/lib/python3.4/site-packages/ox-2.3.x.egg-info/requires.txt index f82a831..95a4bf3 100644 --- a/Shared/lib/python3.4/site-packages/ox-2.1.unknown.egg-info/requires.txt +++ b/Shared/lib/python3.4/site-packages/ox-2.3.x.egg-info/requires.txt @@ -1,3 +1,3 @@ -six +six>=1.5.2 chardet feedparser diff --git a/Shared/lib/python3.4/site-packages/ox-2.1.unknown.egg-info/top_level.txt b/Shared/lib/python3.4/site-packages/ox-2.3.x.egg-info/top_level.txt similarity index 100% rename from Shared/lib/python3.4/site-packages/ox-2.1.unknown.egg-info/top_level.txt rename to Shared/lib/python3.4/site-packages/ox-2.3.x.egg-info/top_level.txt diff --git a/Shared/lib/python3.4/site-packages/ox/__init__.py b/Shared/lib/python3.4/site-packages/ox/__init__.py index ce09413..4ddaab8 100644 --- a/Shared/lib/python3.4/site-packages/ox/__init__.py +++ b/Shared/lib/python3.4/site-packages/ox/__init__.py @@ -5,7 +5,7 @@ try: from . import __version __version__ = __version.VERSION except: - __version__ = '2.1.x' + __version__ = '2.3.x' from . import cache from . import js diff --git a/Shared/lib/python3.4/site-packages/ox/__version.py b/Shared/lib/python3.4/site-packages/ox/__version.py deleted file mode 100644 index 0c52457..0000000 --- a/Shared/lib/python3.4/site-packages/ox/__version.py +++ /dev/null @@ -1 +0,0 @@ -VERSION="2.1.670" \ No newline at end of file diff --git a/Shared/lib/python3.4/site-packages/ox/api.py b/Shared/lib/python3.4/site-packages/ox/api.py index 3b57ae2..9717ff2 100644 --- a/Shared/lib/python3.4/site-packages/ox/api.py +++ b/Shared/lib/python3.4/site-packages/ox/api.py @@ -52,6 +52,8 @@ class API(object): def _add_action(self, action): def method(self, *args, **kw): + if args and kw: + raise ValueError('pass either a dictionary or kwargs, not both') if not kw: if args: kw = args[0] diff --git a/Shared/lib/python3.4/site-packages/ox/cache.py b/Shared/lib/python3.4/site-packages/ox/cache.py index 123ec96..882700a 100644 --- a/Shared/lib/python3.4/site-packages/ox/cache.py +++ b/Shared/lib/python3.4/site-packages/ox/cache.py @@ -62,6 +62,9 @@ def get_headers(url, data=None, headers=DEFAULT_HEADERS, timeout=cache_timeout): store.set(url, data, -1, url_headers) return url_headers +def get_json(url, data=None, headers=DEFAULT_HEADERS, timeout=cache_timeout): + return json.loads(read_url(url, data, headers, timeout).decode('utf-8')) + class InvalidResult(Exception): """Base class for exceptions in this module.""" def __init__(self, result, headers): @@ -113,10 +116,12 @@ def read_url(url, data=None, headers=DEFAULT_HEADERS, timeout=cache_timeout, val result = result.decode(encoding) return result +get_url=read_url + def save_url(url, filename, overwrite=False): if not os.path.exists(filename) or overwrite: dirname = os.path.dirname(filename) - if not os.path.exists(dirname): + if dirname and not os.path.exists(dirname): os.makedirs(dirname) data = read_url(url) with open(filename, 'wb') as f: diff --git a/Shared/lib/python3.4/site-packages/ox/django/api/actions.py b/Shared/lib/python3.4/site-packages/ox/django/api/actions.py index ab08749..54c5ee3 100644 --- a/Shared/lib/python3.4/site-packages/ox/django/api/actions.py +++ b/Shared/lib/python3.4/site-packages/ox/django/api/actions.py @@ -10,7 +10,7 @@ from ..shortcuts import render_to_json_response, json_response from ...utils import json def autodiscover(): - #register api actions from all installed apps + # Register api actions from all installed apps from django.utils.importlib import import_module from django.utils.module_loading import module_has_submodule for app in settings.INSTALLED_APPS: @@ -53,31 +53,24 @@ class ApiActions(dict): versions = {} def __init__(self): - def api(request): + def api(request, data): ''' - returns list of all known api actions - param data { - docs: bool - } - if docs is true, action properties contain docstrings - return { - status: {'code': int, 'text': string}, - data: { - actions: { - 'api': { - cache: true, - doc: 'recursion' - }, - 'hello': { - cache: true, - .. - } - ... - } - } + Returns a list of all api actions + takes { + code: boolean, // if true, return source code (optional) + docs: boolean // if true, return doc strings (optional) + } + returns { + actions: { + name: { + cache: boolean, // if false, don't cache results + code: string, // source code + doc: string // doc strings + }, + ... // more actions } + } ''' - data = json.loads(request.POST.get('data', '{}')) docs = data.get('docs', False) code = data.get('code', False) version = getattr(request, 'version', None) @@ -134,9 +127,9 @@ class ApiActions(dict): actions = ApiActions() -def error(request): +def error(request, data): ''' - this action is used to test api error codes, it should return a 503 error + This action is used to test API error codes. It should return a 503 error. ''' success = error_is_success return render_to_json_response({}) diff --git a/Shared/lib/python3.4/site-packages/ox/django/api/views.py b/Shared/lib/python3.4/site-packages/ox/django/api/views.py index 558a077..43591ed 100644 --- a/Shared/lib/python3.4/site-packages/ox/django/api/views.py +++ b/Shared/lib/python3.4/site-packages/ox/django/api/views.py @@ -2,6 +2,8 @@ # vi:si:et:sw=4:sts=4:ts=4 from __future__ import division, with_statement +import json + from django.shortcuts import render_to_response from django.template import RequestContext from django.conf import settings @@ -16,7 +18,9 @@ def api(request): 'text': 'use POST'}}) response['Access-Control-Allow-Origin'] = '*' return response - if not 'action' in request.POST: + if request.META['REQUEST_METHOD'] != "POST" or ( + not 'action' in request.POST and request.META.get('CONTENT_TYPE') != 'application/json' + ): methods = actions.keys() api = [] for f in sorted(methods): @@ -28,14 +32,20 @@ def api(request): 'sitename': settings.SITENAME }) return render_to_response('api.html', context) - action = request.POST['action'] + if request.META.get('CONTENT_TYPE') == 'application/json': + r = json.loads(request.body) + action = r['action'] + data = r.get('data', {}) + else: + action = request.POST['action'] + data = json.loads(request.POST.get('data', '{}')) version = getattr(request, 'version', None) if version: f = actions.versions.get(version, {}).get(action, actions.get(action)) else: f = actions.get(action) if f: - response = f(request) + response = f(request, data) else: response = render_to_json_response(json_response(status=400, text='Unknown action %s' % action)) diff --git a/Shared/lib/python3.4/site-packages/ox/django/fields.py b/Shared/lib/python3.4/site-packages/ox/django/fields.py index 7d110c1..2ff69d8 100644 --- a/Shared/lib/python3.4/site-packages/ox/django/fields.py +++ b/Shared/lib/python3.4/site-packages/ox/django/fields.py @@ -5,6 +5,7 @@ import datetime from django.db import models from django.utils import datetime_safe +from six import string_types from ox.utils import json @@ -66,7 +67,7 @@ class DictField(models.TextField): """Convert our JSON object to a string before we save""" if value == None: return value - if isinstance(value, basestring): + if isinstance(value, string_types): value = eval(value) assert isinstance(value, dict) value = json.dumps(value, default=to_json) @@ -92,7 +93,7 @@ class TupleField(models.TextField): def get_db_prep_save(self, value, connection): """Convert our JSON object to a string before we save""" - if isinstance(value, basestring): + if isinstance(value, string_types): value = eval(value) if isinstance(value, list): value = tuple(value) diff --git a/Shared/lib/python3.4/site-packages/ox/django/http.py b/Shared/lib/python3.4/site-packages/ox/django/http.py index 1fda91a..c07c36f 100644 --- a/Shared/lib/python3.4/site-packages/ox/django/http.py +++ b/Shared/lib/python3.4/site-packages/ox/django/http.py @@ -3,7 +3,7 @@ import os import mimetypes from datetime import datetime, timedelta -from urllib import quote +from six.moves.urllib.parse import quote from django.http import HttpResponse, Http404 from django.conf import settings @@ -26,14 +26,14 @@ def HttpFileResponse(path, content_type=None, filename=None): url = getattr(settings, PREFIX+'_URL', '') if root and path.startswith(root): path = url + path[len(root)+1:] - if isinstance(path, unicode): + if not isinstance(path, bytes): path = path.encode('utf-8') response['X-Accel-Redirect'] = path if content_type: response['Content-Type'] = content_type elif getattr(settings, 'XSENDFILE', False): response = HttpResponse() - if isinstance(path, unicode): + if not isinstance(path, bytes): path = path.encode('utf-8') response['X-Sendfile'] = path if content_type: @@ -42,7 +42,7 @@ def HttpFileResponse(path, content_type=None, filename=None): else: response = HttpResponse(open(path), content_type=content_type) if filename: - if isinstance(filename, unicode): + if not isinstance(filename, bytes): filename = filename.encode('utf-8') response['Content-Disposition'] = "attachment; filename*=UTF=8''%s" % quote(filename) diff --git a/Shared/lib/python3.4/site-packages/ox/django/middleware.py b/Shared/lib/python3.4/site-packages/ox/django/middleware.py index 8d13690..751c24a 100644 --- a/Shared/lib/python3.4/site-packages/ox/django/middleware.py +++ b/Shared/lib/python3.4/site-packages/ox/django/middleware.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vi:si:et:sw=4:sts=4:ts=4 -from shortcuts import HttpErrorJson, render_to_json_response +from .shortcuts import HttpErrorJson, render_to_json_response class ExceptionMiddleware(object): def process_exception(self, request, exception): diff --git a/Shared/lib/python3.4/site-packages/ox/django/monitor.py b/Shared/lib/python3.4/site-packages/ox/django/monitor.py index 6f88edc..f87e839 100644 --- a/Shared/lib/python3.4/site-packages/ox/django/monitor.py +++ b/Shared/lib/python3.4/site-packages/ox/django/monitor.py @@ -1,26 +1,27 @@ # -*- coding: utf-8 -*- # vi:si:et:sw=4:sts=4:ts=4 +from __future__ import print_function + import os import sys -import time import signal import threading import atexit -import Queue +from six.moves.queue import Queue _interval = 1.0 _times = {} _files = [] _running = False -_queue = Queue.Queue() +_queue = Queue() _lock = threading.Lock() def _restart(path): _queue.put(True) prefix = 'monitor (pid=%d):' % os.getpid() - print >> sys.stderr, '%s Change detected to \'%s\'.' % (prefix, path) - print >> sys.stderr, '%s Triggering process restart.' % prefix + print('%s Change detected to \'%s\'.' % (prefix, path), file=sys.stderr) + print('%s Triggering process restart.' % prefix, file=sys.stderr) os.kill(os.getpid(), signal.SIGINT) def _modified(path): @@ -59,7 +60,7 @@ def _monitor(): while 1: # Check modification times on all files in sys.modules. - for module in sys.modules.values(): + for module in list(sys.modules.values()): if not hasattr(module, '__file__'): continue path = getattr(module, '__file__') diff --git a/Shared/lib/python3.4/site-packages/ox/django/views.py b/Shared/lib/python3.4/site-packages/ox/django/views.py index 9c925b9..24a20d6 100644 --- a/Shared/lib/python3.4/site-packages/ox/django/views.py +++ b/Shared/lib/python3.4/site-packages/ox/django/views.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- # vi:si:et:sw=4:sts=4:ts=4 -import cookielib -import urllib2 -from StringIO import StringIO +from six import StringIO, PY2 +from six.moves import urllib +from six.moves import http_cookiejar as cookielib from celery.utils import get_full_cls_name from celery.backends import default_backend @@ -49,15 +49,15 @@ def api_proxy(request): cj = SessionCookieJar() if 'cj' in request.session: cj.load(request.session['cj']) - opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) + opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj)) opener.addheaders = [ ('User-Agent', request.META.get('HTTP_USER_AGENT')) ] form = ox.MultiPartForm() for key in request.POST: form.add_field(key, request.POST[key]) - r = urllib2.Request(url) - body = str(form) + r = urllib.request.Request(url) + body = form.body() r.add_header('Content-type', form.get_content_type()) r.add_header('Content-length', len(body)) r.add_data(body) diff --git a/Shared/lib/python3.4/site-packages/ox/file.py b/Shared/lib/python3.4/site-packages/ox/file.py index 081cda3..7be0910 100644 --- a/Shared/lib/python3.4/site-packages/ox/file.py +++ b/Shared/lib/python3.4/site-packages/ox/file.py @@ -9,6 +9,7 @@ import shutil import struct import subprocess import sqlite3 +from distutils.spawn import find_executable from .utils import json @@ -47,7 +48,7 @@ def _get_file_cache(): path = path[3:] return os.path.join(path, 'files.sqlite') -def cache(filename, type='oshash'): +def cache(filename, type='oshash', update=False): conn = sqlite3.connect(_get_file_cache(), timeout=10) conn.row_factory = sqlite3.Row @@ -67,11 +68,12 @@ def cache(filename, type='oshash'): info = '' for row in c: if stat.st_size == row['size'] and int(stat.st_mtime) == int(row['mtime']): - value = row[type] - if value: - if type == 'info': - value = json.loads(value) - return value + if not update: + value = row[type] + if value: + if type == 'info': + value = json.loads(value) + return value h = row['oshash'] sha1 = row['sha1'] info = row['info'] @@ -154,6 +156,8 @@ def avinfo(filename, cached=True): if cached: return cache(filename, 'info') if os.path.getsize(filename): + if find_executable('ffprobe'): + return ffprobe(filename) ffmpeg2theora = cmd('ffmpeg2theora') p = subprocess.Popen([ffmpeg2theora], stdout=subprocess.PIPE, stderr=subprocess.PIPE) info, error = p.communicate() @@ -219,62 +223,71 @@ def ffprobe(filename): return value info = {} - for key in ('duration', 'size', 'bit_rate'): - info[{ - 'bit_rate': 'bitrate' - }.get(key, key)] = fix_value(key, ffinfo['format'][key]) - info['audio'] = [] - info['video'] = [] - info['metadata'] = ffinfo['format'].get('tags', {}) - for s in ffinfo['streams']: - tags = s.pop('tags', {}) - language = None - for t in tags: - if t == 'language': - language = tags[t] - else: - info['metadata'][t] = tags[t] - if s.get('codec_type') in ('audio', 'video'): - stream = {} - if language and language != 'und': - stream['language'] = language - keys = [ - 'codec_name', - 'width', - 'height', - 'bit_rate', - 'index', - 'display_aspect_ratio', - 'sample_rate', - 'channels', - ] - if s['codec_type'] == 'video': - keys += [ - 'sample_aspect_ratio', - 'r_frame_rate', - 'pix_fmt', + if not 'format' in ffinfo: + info['error'] = 'badfile' + else: + for key in ('duration', 'size', 'bit_rate'): + if key in ffinfo['format']: + info[{ + 'bit_rate': 'bitrate' + }.get(key, key)] = fix_value(key, ffinfo['format'][key]) + info['audio'] = [] + info['video'] = [] + info['metadata'] = ffinfo['format'].get('tags', {}) + for s in ffinfo['streams']: + tags = s.pop('tags', {}) + language = None + for t in tags: + if t == 'language': + language = tags[t] + else: + info['metadata'][t] = tags[t] + if s.get('codec_type') in ('audio', 'video'): + stream = {} + if language and language != 'und': + stream['language'] = language + keys = [ + 'codec_name', + 'width', + 'height', + 'bit_rate', + 'index', + 'display_aspect_ratio', + 'sample_rate', + 'channels', ] + if s['codec_type'] == 'video': + keys += [ + 'sample_aspect_ratio', + 'r_frame_rate', + 'pix_fmt', + ] - for key in keys: - if key in s: - stream[{ - 'codec_name': 'codec', - 'bit_rate': 'bitrate', - 'index': 'id', - 'r_frame_rate': 'framerate', - 'sample_rate': 'samplerate', - 'pix_fmt': 'pixel_format', - }.get(key, key)] = fix_value(key, s[key]) - info[s['codec_type']].append(stream) - else: - pass - #print s - for v in info['video']: - if not 'display_aspect_ratio' in v and 'width' in v: - v['display_aspect_ratio'] = '%d:%d' % (v['width'], v['height']) - v['pixel_aspect_ratio'] = '1:1' + for key in keys: + if key in s: + stream[{ + 'codec_name': 'codec', + 'bit_rate': 'bitrate', + 'index': 'id', + 'r_frame_rate': 'framerate', + 'sample_rate': 'samplerate', + 'pix_fmt': 'pixel_format', + 'sample_aspect_ratio': 'pixel_aspect_ratio', + }.get(key, key)] = fix_value(key, s[key]) + info[s['codec_type']].append(stream) + else: + pass + #print s + for v in info['video']: + k = 'display_aspect_ratio' + if not k in v and 'width' in v \ + or (k in v and v[k] == '0:1'): + v[k] = '%d:%d' % (v['width'], v['height']) + v['pixel_aspect_ratio'] = '1:1' info['oshash'] = oshash(filename) - info['path'] = os.path.basename(filename) + info['path'] = filename + if not 'size' in info: + info['size'] = os.path.getsize(filename) return info def makedirs(path): diff --git a/Shared/lib/python3.4/site-packages/ox/fixunicode.py b/Shared/lib/python3.4/site-packages/ox/fixunicode.py index 3d8d1e8..b49e277 100644 --- a/Shared/lib/python3.4/site-packages/ox/fixunicode.py +++ b/Shared/lib/python3.4/site-packages/ox/fixunicode.py @@ -6,7 +6,7 @@ from __future__ import print_function import unicodedata -from six import unichr +from six import unichr, PY3 __all__ = ['fix_bad_unicode'] @@ -75,7 +75,7 @@ def fix_bad_unicode(text): >>> fix_bad_unicode('This text was never Unicode at all\x85') 'This text was never Unicode at all…' """ - if not isinstance(text, str): + if isinstance(text, bytes): raise TypeError("This isn't even decoded into Unicode yet. " "Decode it first.") if len(text) == 0: @@ -151,7 +151,10 @@ def text_badness(text): - Improbable single-byte characters, such as ƒ or ¬ - Letters in somewhat rare scripts ''' - assert isinstance(text, str) + if PY3: + assert isinstance(text, str) + else: + assert isinstance(text, unicode) errors = 0 very_weird_things = 0 weird_things = 0 diff --git a/Shared/lib/python3.4/site-packages/ox/form.py b/Shared/lib/python3.4/site-packages/ox/form.py index 8969e03..d9fe66d 100644 --- a/Shared/lib/python3.4/site-packages/ox/form.py +++ b/Shared/lib/python3.4/site-packages/ox/form.py @@ -68,7 +68,7 @@ class MultiPartForm(object): return body def body(self): - """Return a string representing the form data, including attached files.""" + """Return a byte string representing the form data, including attached files.""" # Build a list of lists, each containing "lines" of the # request. Each part is separated by a boundary string. # Once the list is built, return a string where each diff --git a/Shared/lib/python3.4/site-packages/ox/format.py b/Shared/lib/python3.4/site-packages/ox/format.py index a06c311..aafd89c 100644 --- a/Shared/lib/python3.4/site-packages/ox/format.py +++ b/Shared/lib/python3.4/site-packages/ox/format.py @@ -30,6 +30,8 @@ def toAZ(num): az = digits[r] + az return az +encode_base26=toAZ + def fromAZ(num): """ Converts a bijective base 26 string to an integer @@ -71,6 +73,8 @@ def to26(q): converted.insert(0, l) return "".join(converted) or 'A' +decode_base26=toAZ + def from26(q): """ Converts an base 26 string to an integer @@ -402,6 +406,37 @@ def format_duration(ms, verbosity=0, years=True, hours=True, milliseconds=True): duration = ' '.join(durations) return duration +def format_timecode(seconds): + ''' + >>> format_timecode(3599.999) + '00:59:59.999' + ''' + seconds = float(seconds) + d = int(seconds / 86400) + h = int(seconds % 86400 / 3600) + m = int(seconds % 3600 / 60) + s = float(seconds % 60) + duration = "%s%02d:%02d:%06.3f" % ('%d:' % d if d else '', h, m, s) + return duration + +def parse_timecode(string): + ''' + Takes a formatted timecode, returns seconds + + >> parse_timecode('1:02:03:04.05') + 93784.05 + >> parse_timecode('3') + 3.0 + >> parse_timecode('2:') + 120 + >> parse_timecode('1::') + 3600.0 + ''' + timecode = 0 + for i, v in enumerate(list(reversed(string.split(':')))[:4]): + timecode += float(v) * ( 86400 if i == 3 else pow(60, i)) + return timecode + def ms2runtime(ms, shortenLong=False): # deprecated - use format_duration ''' diff --git a/Shared/lib/python3.4/site-packages/ox/html.py b/Shared/lib/python3.4/site-packages/ox/html.py index dcdb246..d63d529 100644 --- a/Shared/lib/python3.4/site-packages/ox/html.py +++ b/Shared/lib/python3.4/site-packages/ox/html.py @@ -259,6 +259,10 @@ def sanitize_html(html, tags=None, global_attributes=[]): {'name': 'li'}, {'name': 'ol'}, {'name': 'ul'}, + # definition lists + {'name': 'dl'}, + {'name': 'dt'}, + {'name': 'dd'}, # tables {'name': 'table'}, {'name': 'tbody'}, diff --git a/Shared/lib/python3.4/site-packages/ox/image.py b/Shared/lib/python3.4/site-packages/ox/image.py index 4a1b57b..e7c7541 100644 --- a/Shared/lib/python3.4/site-packages/ox/image.py +++ b/Shared/lib/python3.4/site-packages/ox/image.py @@ -25,7 +25,13 @@ def drawText(image, position, text, font_file, font_size, color): draw = ImageDraw.Draw(image) font = ImageFont.truetype(font_file, font_size, encoding='unic') draw.text(position, text, fill=color, font=font) - return draw.textsize(text, font=font) + size = draw.textsize(text, font=font) + version = getattr(Image, 'PILLOW_VERSION', None) + if version and version > '2.1.0' and version < '2.6.1': + offset = font.getoffset(text) + else: + offset = (0, 0) + return (size[0] + offset[0], size[1] + offset[1]) def getHSL(rgb): rgb = [x / 255 for x in rgb] @@ -141,7 +147,13 @@ def getRGB(hsl): def getTextSize(image, text, font_file, font_size): draw = ImageDraw.Draw(image) font = ImageFont.truetype(font_file, font_size, encoding='unic') - return draw.textsize(text, font=font) + size = draw.textsize(text, font=font) + version = getattr(Image, 'PILLOW_VERSION', None) + if version and version > '2.1.0' and version < '2.6.1': + offset = font.getoffset(text) + else: + offset = (0, 0) + return (size[0] + offset[0], size[1] + offset[1]) def wrapText(text, max_width, max_lines, font_file, font_size): # wraps text to max_width and max_lines diff --git a/Shared/lib/python3.4/site-packages/ox/movie.py b/Shared/lib/python3.4/site-packages/ox/movie.py index e74b8a6..bb93101 100644 --- a/Shared/lib/python3.4/site-packages/ox/movie.py +++ b/Shared/lib/python3.4/site-packages/ox/movie.py @@ -29,7 +29,7 @@ def format_path(data, directory_key='director'): director = data['directorSort'] or ['Unknown Director'] title = data['seriesTitle' if data['isEpisode'] else 'title'] or 'Untitled' year = data['seriesYear' if data['isEpisode'] else 'year'] or None - parts = map(format_underscores, filter(lambda x: x != None, [ + parts = list(map(format_underscores, filter(lambda x: x != None, [ u'; '.join(director[:10]), u'%s%s' % (title, u' (%s)' % year if year else ''), u'%s%s%s%s%s%s' % ( @@ -40,7 +40,7 @@ def format_path(data, directory_key='director'): u'.%s' % data['language'] if data['language'] else '', u'.%s' % data['extension'] if data['extension'] else '' ) - ])) + ]))) if data.get('subdirectory'): parts.insert(-1, data['subdirectory']) return unicodedata.normalize('NFD', u'/'.join(parts)) @@ -188,8 +188,6 @@ def parse_path(path, directory_key='director'): # TODO: '.com.avi' ''' - def parse_title(string): - return title, year def parse_type(string): for type in EXTENSIONS: if string in EXTENSIONS[type]: @@ -210,7 +208,7 @@ def parse_path(path, directory_key='director'): string = re.sub('(?<=\w)_ ', ': ', string) return string data = {} - parts = map(lambda x: parse_underscores(x.strip()), path.split('/')) + parts = list(map(lambda x: parse_underscores(x.strip()), unicodedata.normalize('NFD', path).split('/'))) # subdirectory if len(parts) > 4: data['subdirectory'] = '/'.join(parts[3:-1]) @@ -226,14 +224,14 @@ def parse_path(path, directory_key='director'): # directorSort, director data['directorSort'] = data['director'] = [] if director: - data['directorSort'] = filter( + data['directorSort'] = list(filter( lambda x: x != 'Unknown Director', director.split('; ') - ) - data['director'] = map( + )) + data['director'] = list(map( lambda x: ' '.join(reversed(x.split(', '))), data['directorSort'] - ) + )) # title, year data['title'] = data['year'] = None if title: @@ -327,7 +325,7 @@ def parse_movie_path(path): """ episodeTitle = episodeYear = seriesTitle = None episodeDirector = [] - parts = path.split('/') + parts = unicodedata.normalize('NFD', path).split('/') #title/year if len(parts) == 4: diff --git a/Shared/lib/python3.4/site-packages/ox/net.py b/Shared/lib/python3.4/site-packages/ox/net.py index b4a470b..e125133 100644 --- a/Shared/lib/python3.4/site-packages/ox/net.py +++ b/Shared/lib/python3.4/site-packages/ox/net.py @@ -2,20 +2,21 @@ # vi:si:et:sw=4:sts=4:ts=4 # GPL 2008 from __future__ import with_statement, print_function -import os import gzip +import json +import os import re -from six import BytesIO, PY3 import struct -from six.moves import urllib +from six import BytesIO, PY3 +from six.moves import urllib from chardet.universaldetector import UniversalDetector DEBUG = False # Default headers for HTTP requests. DEFAULT_HEADERS = { - 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:28.0) Gecko/20100101 Firefox/28.0', + 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0', 'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en-us,en;q=0.5', @@ -47,9 +48,16 @@ def get_headers(url, data=None, headers=DEFAULT_HEADERS): headers = e.headers return dict(headers) +def get_json(url, data=None, headers=DEFAULT_HEADERS): + return json.loads(read_url(url, data, headers).decode('utf-8')) + def open_url(url, data=None, headers=DEFAULT_HEADERS): - if isinstance(url, bytes): - url = url.decode('utf-8') + if PY3: + if isinstance(url, bytes): + url = url.decode('utf-8') + else: + if not isinstance(url, bytes): + url = url.encode('utf-8') url = url.replace(' ', '%20') if data and PY3 and not isinstance(data, bytes): data = data.encode('utf-8') @@ -100,10 +108,12 @@ def detect_encoding(data): detector.close() return detector.result['encoding'] +get_url=read_url + def save_url(url, filename, overwrite=False): if not os.path.exists(filename) or overwrite: dirname = os.path.dirname(filename) - if not os.path.exists(dirname): + if dirname and not os.path.exists(dirname): os.makedirs(dirname) data = read_url(url) with open(filename, 'wb') as f: @@ -135,8 +145,9 @@ def oshash(url): if filesize > 65536: tail = get_range(url, filesize-65536, filesize) if filesize < 65536: - for offset in range(0, filesize, bytesize): - buffer = head[offset:offset+bytesize] + f = BytesIO(head) + for x in range(int(filesize/bytesize)): + buffer = f.read(bytesize) (l_value,)= struct.unpack(longlongformat, buffer) hash += l_value hash = hash & 0xFFFFFFFFFFFFFFFF #cut off 64bit overflow diff --git a/Shared/lib/python3.4/site-packages/ox/text.py b/Shared/lib/python3.4/site-packages/ox/text.py index 7630652..8bb8127 100644 --- a/Shared/lib/python3.4/site-packages/ox/text.py +++ b/Shared/lib/python3.4/site-packages/ox/text.py @@ -87,6 +87,7 @@ UA_REGEXPS = { '(Camino)\/(\d+)', '(Chimera)\/(\d+)', '(chromeframe)\/(\d+)', + '(Edge)\/(\d+)', '(Epiphany)\/(\d+)', # before Chrome, Chromium and Safari '(Chromium)\/(\d+)', # before Chrome '(Chrome)\/(\d+)', @@ -178,6 +179,7 @@ UA_VERSIONS = { '10.8': '10.8 (Mountain Lion)', '10.9': '10.9 (Mavericks)', '10.10': '10.10 (Yosemite)', + '10.11': '10.11 (El Capitan)', '40': 'Series 40', '60': 'Series 60', 'NT 3.1': 'NT 3.1 (3.1)', @@ -192,6 +194,7 @@ UA_VERSIONS = { 'NT 6.1': 'NT 6.1 (7)', 'NT 6.2': 'NT 6.2 (8)', 'NT 6.3': 'NT 6.3 (8.1)', + 'NT 6.4': 'NT 6.4 (10)', '16': 'NT 3.1 (3.1)', '3.1': 'NT 3.1 (3.1)', '95': 'NT 4.0 (95)', @@ -254,6 +257,8 @@ def get_sort_name(name): last_names = [] if re.search('^[0-9]+$', first_names[-1]): add_name() + if re.search('[(\[].+?[)\]]$', first_names[-1]): + add_name() if find_name(SUFFIXES): add_name() add_name() diff --git a/Shared/lib/python3.4/site-packages/ox/torrent/__init__.py b/Shared/lib/python3.4/site-packages/ox/torrent/__init__.py index ce8b0de..9e96bad 100644 --- a/Shared/lib/python3.4/site-packages/ox/torrent/__init__.py +++ b/Shared/lib/python3.4/site-packages/ox/torrent/__init__.py @@ -5,15 +5,19 @@ from threading import Event from hashlib import sha1 import os +from six import PY2 -from .bencode import bencode, bdecode +if PY2: + from .bencode import bencode, bdecode +else: + from .bencode3 import bencode, bdecode __all__ = ['create_torrent', 'get_info_hash', 'get_torrent_info', 'get_files', 'get_torrent_size'] def create_torrent(file, url, params = {}, flag = Event(), progress = lambda x: None, progress_percent = 1): "Creates a torrent for a given file, using url as tracker url" - from makemetafile import make_meta_file + from .makemetafile import make_meta_file return make_meta_file(file, url, params, flag, progress, progress_percent) def get_info_hash(torrentFile): diff --git a/Shared/lib/python3.4/site-packages/ox/torrent/bencode3.py b/Shared/lib/python3.4/site-packages/ox/torrent/bencode3.py new file mode 100644 index 0000000..d2a2906 --- /dev/null +++ b/Shared/lib/python3.4/site-packages/ox/torrent/bencode3.py @@ -0,0 +1,151 @@ +## +# +# bencode.py python3 compatable bencode / bdecode +# +## + +def _decode_int(data): + """ + decode integer from bytearray + return int, remaining data + """ + data = data[1:] + end = data.index(b'e') + return int(data[:end],10), data[end+1:] + +def _decode_str(data): + """ + decode string from bytearray + return string, remaining data + """ + start = data.index(b':') + l = int(data[:start].decode(),10) + if l <= 0: + raise Exception('invalid string size: %d'%d) + start += 1 + ret = bytes(data[start:start+l]) + data = data[start+l:] + return ret, data + +def _decode_list(data): + """ + decode list from bytearray + return list, remaining data + """ + ls = [] + data = data[1:] + while data[0] != ord(b'e'): + elem, data = _decode(data) + ls.append(elem) + return ls, data[1:] + +def _decode_dict(data): + """ + decode dict from bytearray + return dict, remaining data + """ + d = {} + data = data[1:] + while data[0] != ord(b'e'): + k, data = _decode_str(data) + v, data = _decode(data) + d[k.decode()] = v + return d, data[1:] + +def _decode(data): + """ + decode a bytearray + return deserialized object, remaining data + """ + ch = chr(data[0]) + if ch == 'l': + return _decode_list(data) + elif ch == 'i': + return _decode_int(data) + elif ch == 'd': + return _decode_dict(data) + elif ch.isdigit(): + return _decode_str(data) + else: + raise Exception('could not deserialize data: %s'%data) + +def bdecode(data): + """ + decode a bytearray + return deserialized object + """ + obj , data = _decode(data) + if len(data) > 0: + raise Exception('failed to deserialize, extra data: %s'%data) + return obj + +def _encode_str(s,buff): + """ + encode string to a buffer + """ + s = bytearray(s) + l = len(s) + buff.append(bytearray(str(l)+':','utf-8')) + buff.append(s) + +def _encode_int(i,buff): + """ + encode integer to a buffer + """ + buff.append(b'i') + buff.append(bytearray(str(i),'ascii')) + buff.append(b'e') + +def _encode_list(l,buff): + """ + encode list of elements to a buffer + """ + buff.append(b'l') + for i in l: + _encode(i,buff) + buff.append(b'e') + +def _encode_dict(d,buff): + """ + encode dict + """ + buff.append(b'd') + l = list(d.keys()) + l.sort() + for k in l: + _encode(str(k),buff) + _encode(d[k],buff) + buff.append(b'e') + +def _encode(obj,buff): + """ + encode element obj to a buffer buff + """ + if isinstance(obj,str): + _encode_str(bytearray(obj,'utf-8'),buff) + elif isinstance(obj,bytes): + _encode_str(bytearray(obj),buff) + elif isinstance(obj,bytearray): + _encode_str(obj,buff) + elif str(obj).isdigit(): + _encode_int(obj,buff) + elif isinstance(obj,list): + _encode_list(obj,buff) + elif hasattr(obj,'keys') and hasattr(obj,'values'): + _encode_dict(obj,buff) + elif str(obj) in ['True','False']: + _encode_int(int(obj and '1' or '0'),buff) + else: + raise Exception('non serializable object: %s'%obj) + + +def bencode(obj): + """ + bencode element, return bytearray + """ + buff = [] + _encode(obj,buff) + ret = bytearray() + for ba in buff: + ret += ba + return bytes(ret) diff --git a/Shared/lib/python3.4/site-packages/ox/torrent/btformats.py b/Shared/lib/python3.4/site-packages/ox/torrent/btformats.py deleted file mode 100644 index 825b87d..0000000 --- a/Shared/lib/python3.4/site-packages/ox/torrent/btformats.py +++ /dev/null @@ -1,100 +0,0 @@ -# Written by Bram Cohen -# see LICENSE.txt for license information - -from types import StringType, LongType, IntType, ListType, DictType -from re import compile - -reg = compile(r'^[^/\\.~][^/\\]*$') - -ints = (LongType, IntType) - -def check_info(info): - if type(info) != DictType: - raise ValueError, 'bad metainfo - not a dictionary' - pieces = info.get('pieces') - if type(pieces) != StringType or len(pieces) % 20 != 0: - raise ValueError, 'bad metainfo - bad pieces key' - piecelength = info.get('piece length') - if type(piecelength) not in ints or piecelength <= 0: - raise ValueError, 'bad metainfo - illegal piece length' - name = info.get('name') - if type(name) != StringType: - raise ValueError, 'bad metainfo - bad name' - if not reg.match(name): - raise ValueError, 'name %s disallowed for security reasons' % name - if info.has_key('files') == info.has_key('length'): - raise ValueError, 'single/multiple file mix' - if info.has_key('length'): - length = info.get('length') - if type(length) not in ints or length < 0: - raise ValueError, 'bad metainfo - bad length' - else: - files = info.get('files') - if type(files) != ListType: - raise ValueError - for f in files: - if type(f) != DictType: - raise ValueError, 'bad metainfo - bad file value' - length = f.get('length') - if type(length) not in ints or length < 0: - raise ValueError, 'bad metainfo - bad length' - path = f.get('path') - if type(path) != ListType or path == []: - raise ValueError, 'bad metainfo - bad path' - for p in path: - if type(p) != StringType: - raise ValueError, 'bad metainfo - bad path dir' - if not reg.match(p): - raise ValueError, 'path %s disallowed for security reasons' % p - for i in xrange(len(files)): - for j in xrange(i): - if files[i]['path'] == files[j]['path']: - raise ValueError, 'bad metainfo - duplicate path' - -def check_message(message): - if type(message) != DictType: - raise ValueError - check_info(message.get('info')) - if type(message.get('announce')) != StringType: - raise ValueError - -def check_peers(message): - if type(message) != DictType: - raise ValueError - if message.has_key('failure reason'): - if type(message['failure reason']) != StringType: - raise ValueError - return - peers = message.get('peers') - if type(peers) == ListType: - for p in peers: - if type(p) != DictType: - raise ValueError - if type(p.get('ip')) != StringType: - raise ValueError - port = p.get('port') - if type(port) not in ints or p <= 0: - raise ValueError - if p.has_key('peer id'): - id = p['peer id'] - if type(id) != StringType or len(id) != 20: - raise ValueError - elif type(peers) != StringType or len(peers) % 6 != 0: - raise ValueError - interval = message.get('interval', 1) - if type(interval) not in ints or interval <= 0: - raise ValueError - minint = message.get('min interval', 1) - if type(minint) not in ints or minint <= 0: - raise ValueError - if type(message.get('tracker id', '')) != StringType: - raise ValueError - npeers = message.get('num peers', 0) - if type(npeers) not in ints or npeers < 0: - raise ValueError - dpeers = message.get('done peers', 0) - if type(dpeers) not in ints or dpeers < 0: - raise ValueError - last = message.get('last', 0) - if type(last) not in ints or last < 0: - raise ValueError diff --git a/Shared/lib/python3.4/site-packages/ox/torrent/makemetafile.py b/Shared/lib/python3.4/site-packages/ox/torrent/makemetafile.py index cc9cce1..31d6ebe 100644 --- a/Shared/lib/python3.4/site-packages/ox/torrent/makemetafile.py +++ b/Shared/lib/python3.4/site-packages/ox/torrent/makemetafile.py @@ -6,9 +6,13 @@ from os.path import getsize, split, join, abspath, isdir from os import listdir from hashlib import sha1 as sha from copy import copy -from string import strip -from bencode import bencode -from btformats import check_info +import re + +from six import PY2 +if PY2: + from .bencode import bencode +else: + from .bencode3 import bencode from threading import Event from time import time from traceback import print_exc @@ -57,14 +61,63 @@ def print_announcelist_details(): print ('') print (' httpseeds = optional list of http-seed URLs, in the format:') print (' url[|url...]') + +reg = re.compile(r'^[^/\\.~][^/\\]*$') + +def is_number(value): + return isinstance(value, int) or isinstance(value,float) + + +def check_info(info): + if not isinstance(info, dict): + raise ValueError('bad metainfo - not a dictionary') + pieces = info.get('pieces') + if not isinstance(pieces, bytes) or len(pieces) % 20 != 0: + raise ValueError('bad metainfo - bad pieces key') + piecelength = info.get('piece length') + if not is_number(piecelength) or piecelength <= 0: + raise ValueError('bad metainfo - illegal piece length') + name = info.get('name') + if not isinstance(name, bytes): + raise ValueError('bad metainfo - bad name') + if not reg.match(name.decode('utf-8')): + raise ValueError('name %s disallowed for security reasons' % name) + if ('files' in info) == ('length' in info): + raise ValueError('single/multiple file mix') + if 'length' in info: + length = info.get('length') + if not is_number(length) or length < 0: + raise ValueError('bad metainfo - bad length') + else: + files = info.get('files') + if not isinstance(files, list): + raise ValueError + for f in files: + if not isinstance(f, dict): + raise ValueError('bad metainfo - bad file value') + length = f.get('length') + if not is_number(length) or length < 0: + raise ValueError('bad metainfo - bad length') + path = f.get('path') + if not isinstance(path, list) or path == []: + raise ValueError('bad metainfo - bad path') + for p in path: + if not isinstance(p, bytes): + raise ValueError('bad metainfo - bad path dir') + if not reg.match(p.decode('utf-8')): + raise ValueError('path %s disallowed for security reasons' % p) + for i in range(len(files)): + for j in range(i): + if files[i]['path'] == files[j]['path']: + raise ValueError('bad metainfo - duplicate path') def make_meta_file(file, url, params = {}, flag = Event(), progress = lambda x: None, progress_percent = 1): - if params.has_key('piece_size_pow2'): + if 'piece_size_pow2' in params: piece_len_exp = params['piece_size_pow2'] else: piece_len_exp = default_piece_len_exp - if params.has_key('target') and params['target'] != '': + if 'target' in params and params['target'] != '': f = params['target'] else: a, b = split(file) @@ -75,7 +128,7 @@ def make_meta_file(file, url, params = {}, flag = Event(), if piece_len_exp == 0: # automatic size = calcsize(file) - if size > 8L*1024*1024*1024: # > 8 gig = + if size > 8*1024*1024*1024: # > 8 gig = piece_len_exp = 21 # 2 meg pieces elif size > 2*1024*1024*1024: # > 2 gig = piece_len_exp = 20 # 1 meg pieces @@ -92,7 +145,7 @@ def make_meta_file(file, url, params = {}, flag = Event(), piece_length = 2 ** piece_len_exp encoding = None - if params.has_key('filesystem_encoding'): + if 'filesystem_encoding' in params: encoding = params['filesystem_encoding'] if not encoding: encoding = ENCODING @@ -103,29 +156,29 @@ def make_meta_file(file, url, params = {}, flag = Event(), if flag.isSet(): return check_info(info) - h = open(f, 'wb') - data = {'info': info, 'announce': strip(url), 'creation date': long(time())} + h = open(f.encode(encoding), 'wb') + data = {'info': info, 'announce': url.strip(), 'creation date': int(time())} - if params.has_key('comment') and params['comment']: + if 'comment' in params and params['comment']: data['comment'] = params['comment'] - if params.has_key('real_announce_list'): # shortcut for progs calling in from outside + if 'real_announce_list' in params: # shortcut for progs calling in from outside data['announce-list'] = params['real_announce_list'] - elif params.has_key('announce_list') and params['announce_list']: + elif 'announce_list' in params and params['announce_list']: l = [] for tier in params['announce_list'].split('|'): l.append(tier.split(',')) data['announce-list'] = l - if params.has_key('real_httpseeds'): # shortcut for progs calling in from outside + if 'real_httpseeds' in params: # shortcut for progs calling in from outside data['httpseeds'] = params['real_httpseeds'] - elif params.has_key('httpseeds') and params['httpseeds']: + elif 'httpseeds' in params and params['httpseeds']: data['httpseeds'] = params['httpseeds'].split('|') - if params.has_key('url-list') and params['url-list']: + if 'url-list' in params and params['url-list']: data['url-list'] = params['url-list'].split('|') - if params.has_key('playtime') and params['playtime']: + if 'playtime' in params and params['playtime']: data['info']['playtime'] = params['playtime'] h.write(bencode(data)) @@ -134,7 +187,7 @@ def make_meta_file(file, url, params = {}, flag = Event(), def calcsize(file): if not isdir(file): return getsize(file) - total = 0L + total = 0 for s in subfiles(abspath(file)): total += getsize(s[1]) return total @@ -151,8 +204,8 @@ def uniconvertl(l, e): def uniconvert(s, e): try: - if s.__class__.__name__ != 'unicode': - s = unicode(s,e) + if isinstance(s, bytes): + s = s.decode(e) except UnicodeError: raise UnicodeError('bad filename: '+s) return s.encode('utf-8') @@ -164,15 +217,15 @@ def makeinfo(file, piece_length, encoding, flag, progress, progress_percent=1): subs.sort() pieces = [] sh = sha() - done = 0L + done = 0 fs = [] totalsize = 0.0 - totalhashed = 0L + totalhashed = 0 for p, f in subs: totalsize += getsize(f) for p, f in subs: - pos = 0L + pos = 0 size = getsize(f) fs.append({'length': size, 'path': uniconvertl(p, encoding)}) h = open(f, 'rb') @@ -196,13 +249,13 @@ def makeinfo(file, piece_length, encoding, flag, progress, progress_percent=1): h.close() if done > 0: pieces.append(sh.digest()) - return {'pieces': ''.join(pieces), + return {'pieces': b''.join(pieces), 'piece length': piece_length, 'files': fs, 'name': uniconvert(split(file)[1], encoding) } else: size = getsize(file) pieces = [] - p = 0L + p = 0 h = open(file, 'rb') while p < size: x = h.read(min(piece_length, size - p)) @@ -217,7 +270,7 @@ def makeinfo(file, piece_length, encoding, flag, progress, progress_percent=1): else: progress(min(piece_length, size - p)) h.close() - return {'pieces': ''.join(pieces), + return {'pieces': b''.join(pieces), 'piece length': piece_length, 'length': size, 'name': uniconvert(split(file)[1], encoding) } @@ -240,7 +293,7 @@ def completedir(dir, url, params = {}, flag = Event(), files = listdir(dir) files.sort() ext = '.torrent' - if params.has_key('target'): + if 'target' in params: target = params['target'] else: target = '' diff --git a/Shared/lib/python3.4/site-packages/ox/web/amazon.py b/Shared/lib/python3.4/site-packages/ox/web/amazon.py index 920fe89..19a72c7 100644 --- a/Shared/lib/python3.4/site-packages/ox/web/amazon.py +++ b/Shared/lib/python3.4/site-packages/ox/web/amazon.py @@ -7,7 +7,7 @@ from six.moves.urllib.parse import quote from ox import find_re, strip_tags, decode_html from ox.cache import read_url -import lxml +import lxml.html def findISBN(title, author): diff --git a/Shared/lib/python3.4/site-packages/ox/web/archive.py b/Shared/lib/python3.4/site-packages/ox/web/archive.py index 7f4b572..52ac487 100644 --- a/Shared/lib/python3.4/site-packages/ox/web/archive.py +++ b/Shared/lib/python3.4/site-packages/ox/web/archive.py @@ -15,9 +15,14 @@ def get_data(id): details = cache.read_url('%s?output=json' % url) details = json.loads(details) for key in ('title', 'description', 'runtime'): - data[key] = details['metadata'][key] - if isinstance(data[key], list): - data[key] = data[key][0] + if key in details['metadata']: + data[key] = details['metadata'][key] + if isinstance(data[key], list): + data[key] = data[key][0] + if isinstance(data[key], basestring): + data[key] = data[key].strip() + if data[key][0] == '[' and data[key][-1] == ']': + data[key] = data[key][1:-1] data['url'] = url data['image'] = 'http://archive.org/download/%s/format=thumbnail' % id data['ogg'] = 'http://archive.org/download/%s/format=Ogg+video' % id diff --git a/Shared/lib/python3.4/site-packages/ox/web/criterion.py b/Shared/lib/python3.4/site-packages/ox/web/criterion.py index 93636d7..2e81ce1 100644 --- a/Shared/lib/python3.4/site-packages/ox/web/criterion.py +++ b/Shared/lib/python3.4/site-packages/ox/web/criterion.py @@ -5,7 +5,7 @@ import re import ox.cache from ox.cache import read_url -from ox.html import strip_tags +from ox.html import strip_tags, decode_html from ox.text import find_re import imdb @@ -36,14 +36,15 @@ def get_data(id, timeout=ox.cache.cache_timeout, get_imdb=False): html = ox.cache.read_url(data["url"], timeout=timeout) data["number"] = find_re(html, "
  • Spine #(\d+)") - data["title"] = find_re(html, "

    (.*?)

    ") - data["title"] = data["title"].split(u' \u2014 The Television Version')[0] + data["title"] = decode_html(find_re(html, "

    (.*?)

    ")) + data["title"] = data["title"].split(u' \u2014 The Television Version')[0].strip() data["director"] = strip_tags(find_re(html, "

    (.*?)

    ")) results = find_re(html, '
    (.*?)
    ') results = re.compile("
  • (.*?)
  • ").findall(results) data["country"] = results[0] data["year"] = results[1] - data["synopsis"] = strip_tags(find_re(html, "
    .*?

    (.*?)

    ")) + data["synopsis"] = decode_html(strip_tags(find_re(html, + "
    .*?

    (.*?)

    "))) result = find_re(html, "
    (.*?)
    ") if 'Blu-Ray' in result or 'Essential Art House DVD' in result: diff --git a/Shared/lib/python3.4/site-packages/ox/web/imdb.py b/Shared/lib/python3.4/site-packages/ox/web/imdb.py index 6103fdb..cc0cc48 100644 --- a/Shared/lib/python3.4/site-packages/ox/web/imdb.py +++ b/Shared/lib/python3.4/site-packages/ox/web/imdb.py @@ -6,7 +6,7 @@ import re import time import unicodedata -from six.moves import urllib +from six.moves.urllib.parse import urlencode from six import string_types from .. import find_re, strip_tags, decode_html @@ -37,7 +37,7 @@ class Imdb(SiteParser): 'alternativeTitles': { 'page': 'releaseinfo', 're': [ - 'name="akas".*?(.*?)', + ']*?id="akas"[^>]*?>(.*?)', "td>(.*?).*?(.*?)" ], 'type': 'list' @@ -74,7 +74,7 @@ class Imdb(SiteParser): 'type': 'list' }, 'connections': { - 'page': 'trivia?tab=mc', + 'page': 'movieconnections', 're': '

    (.*?)

    (.*?)(<\/div>\n (.*?)(.*?)<\/div', re.DOTALL).findall(data))) + cc[rel] = list(map(get_conn, re.compile('(.*?)(.*?)<\/div', re.DOTALL).findall(data))) self['connections'] = cc @@ -665,7 +664,7 @@ def get_movie_by_title(title, timeout=-1): params['q'] = unicodedata.normalize('NFKC', params['q']).encode('latin-1') except: params['q'] = params['q'].encode('utf-8') - params = urllib.urlencode(params) + params = urlencode(params) url = "http://akas.imdb.com/find?" + params data = read_url(url, timeout=timeout, unicode=True) #if search results in redirect, get id of current page @@ -741,7 +740,7 @@ def get_movie_id(title, director='', year='', timeout=-1): params['q'] = unicodedata.normalize('NFKC', params['q']).encode('latin-1') except: params['q'] = params['q'].encode('utf-8') - params = urllib.urlencode(params) + params = urlencode(params) url = "http://akas.imdb.com/find?" + params #print url diff --git a/Shared/lib/python3.4/site-packages/ox/web/itunes.py b/Shared/lib/python3.4/site-packages/ox/web/itunes.py index 886ff08..f599099 100644 --- a/Shared/lib/python3.4/site-packages/ox/web/itunes.py +++ b/Shared/lib/python3.4/site-packages/ox/web/itunes.py @@ -2,7 +2,7 @@ # encoding: utf-8 from __future__ import print_function import re -from six.moves import urllib +from six.moves.urllib.parse import urlencode from ox.cache import read_url from ox.html import decode_html, strip_tags @@ -29,7 +29,7 @@ def compose_url(request, parameters): if request == 'advancedSearch': url = 'http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZSearch.woa/wa/advancedSearch?' if parameters['media'] == 'music': - url += urllib.urlencode({ + url += urlencode({ 'albumTerm': parameters['title'], 'allArtistNames': parameters['artist'], 'composerTerm': '', @@ -42,7 +42,7 @@ def compose_url(request, parameters): 'songTerm': '' }) elif parameters['media'] == 'movie': - url += urllib.urlencode({ + url += urlencode({ 'actorTerm': '', 'closedCaption': 0, 'descriptionTerm': '', diff --git a/Shared/lib/python3.4/site-packages/ox/web/rottentomatoes.py b/Shared/lib/python3.4/site-packages/ox/web/rottentomatoes.py index 8c89fd8..fd3265d 100644 --- a/Shared/lib/python3.4/site-packages/ox/web/rottentomatoes.py +++ b/Shared/lib/python3.4/site-packages/ox/web/rottentomatoes.py @@ -7,12 +7,6 @@ from ox import find_re, strip_tags def get_url(id=None, imdb=None): - #this would also wor but does not cache: - ''' - from urllib2 import urlopen - u = urlopen(url) - return u.url - ''' if imdb: url = "http://www.rottentomatoes.com/alias?type=imdbid&s=%s" % imdb data = read_url(url) diff --git a/Shared/lib/python3.4/site-packages/ox/web/startpage.py b/Shared/lib/python3.4/site-packages/ox/web/startpage.py new file mode 100644 index 0000000..1df25a4 --- /dev/null +++ b/Shared/lib/python3.4/site-packages/ox/web/startpage.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# vi:si:et:sw=4:sts=4:ts=4 +from six.moves import urllib + +import lxml.html +import ox + +DEFAULT_MAX_RESULTS = 10 +DEFAULT_TIMEOUT = 24*60*60 + +def read_url(url, data=None, headers=ox.net.DEFAULT_HEADERS, timeout=DEFAULT_TIMEOUT): + return ox.cache.read_url(url, data, headers, timeout, unicode=True) + +def quote_plus(s): + if not isinstance(s, bytes): + s = s.encode('utf-8') + return urllib.parse.quote_plus(s) + +def find(query, max_results=DEFAULT_MAX_RESULTS, timeout=DEFAULT_TIMEOUT): + """ + Return max_results tuples with title, url, description + + >>> find("The Matrix site:imdb.com", 1)[0][0] + u'The Matrix (1999) - IMDb' + + >>> find("The Matrix site:imdb.com", 1)[0][1] + u'http://www.imdb.com/title/tt0133093/' + """ + results = [] + url = 'https://eu1.startpage.com/do/search?nosteeraway=1&abp=1&language=english&cmd=process_search&query=%s&x=0&y=0&cat=web&engine0=v1all' % quote_plus(query) + + data = read_url(url, timeout=timeout) + doc = lxml.html.document_fromstring(data) + for r in doc.xpath("//div[contains(@class, 'result')]"): + t = r.find('h3') + if t is not None: + title = t.text_content().strip() + url = t.find('a').attrib['href'] + description = r.find_class('desc')[0].text_content() + results.append((title, url, description)) + if len(results) >= max_results: + break + return results + diff --git a/Shared/lib/python3.4/site-packages/ox/web/thepiratebay.py b/Shared/lib/python3.4/site-packages/ox/web/thepiratebay.py index 7002ebc..125ce7d 100644 --- a/Shared/lib/python3.4/site-packages/ox/web/thepiratebay.py +++ b/Shared/lib/python3.4/site-packages/ox/web/thepiratebay.py @@ -25,7 +25,7 @@ def find_movies(query=None, imdb=None, max_results=10): if imdb: query = "tt" + normalize_imdbid(imdb) results = [] - next = ["http://thepiratebay.org/search/%s/0/3/200" % quote(query), ] + next = ["https://thepiratebay.se/search/%s/0/3/200" % quote(query), ] page_count = 1 while next and page_count < 4: page_count += 1 @@ -33,12 +33,12 @@ def find_movies(query=None, imdb=None, max_results=10): if not url.startswith('http'): if not url.startswith('/'): url = "/" + url - url = "http://thepiratebay.org" + url + url = "https://thepiratebay.se" + url data = read_url(url, timeout=cache_timeout, unicode=True) regexp = '''(.*?).*?''' for row in re.compile(regexp, re.DOTALL).findall(data): torrentType = row[0] - torrentLink = "http://thepiratebay.org" + row[1] + torrentLink = "https://thepiratebay.se" + row[1] torrentTitle = decode_html(row[2]) # 201 = Movies , 202 = Movie DVDR, 205 TV Shows if torrentType in ['201']: @@ -61,7 +61,7 @@ def get_id(piratebayId): def exists(piratebayId): piratebayId = get_id(piratebayId) - return ox.net.exists("http://thepiratebay.org/torrent/%s" % piratebayId) + return ox.net.exists("https://thepiratebay.se/torrent/%s" % piratebayId) def get_data(piratebayId): _key_map = { @@ -75,7 +75,7 @@ def get_data(piratebayId): torrent = dict() torrent[u'id'] = piratebayId torrent[u'domain'] = 'thepiratebay.org' - torrent[u'comment_link'] = 'http://thepiratebay.org/torrent/%s' % piratebayId + torrent[u'comment_link'] = 'https://thepiratebay.se/torrent/%s' % piratebayId data = read_url(torrent['comment_link'], unicode=True) torrent[u'title'] = find_re(data, '(.*?) \(download torrent\) - TPB') diff --git a/Shared/lib/python3.4/site-packages/ox/web/ubu.py b/Shared/lib/python3.4/site-packages/ox/web/ubu.py index 7286234..2d532f1 100644 --- a/Shared/lib/python3.4/site-packages/ox/web/ubu.py +++ b/Shared/lib/python3.4/site-packages/ox/web/ubu.py @@ -3,12 +3,14 @@ from __future__ import print_function import re -from ox import find_re, strip_tags, decode_html +import lxml.html + +from ox import strip_tags, decode_html from ox.cache import read_url def get_id(url): - return url.replace('http://www.ubu.com/', '').split('.html')[0] + return url.replace('http://www.ubu.com/', '').split('.html')[0].replace('/./', '/') def get_url(id): return 'http://www.ubu.com/%s.html' % id @@ -22,51 +24,92 @@ def get_data(url): 'url': url, 'type': re.compile('ubu.com/(.*?)/').findall(url)[0] } - for videourl, title in re.compile('(.*?)').findall(data): - if videourl.endswith('.srt'): - m['srt'] = videourl - elif not 'video' in m: - m['video'] = videourl - m['video'] = m['video'].replace('/video/ ', '/video/').replace(' ', '%20') - if m['video'] == 'http://ubumexico.centro.org.mx/video/': - del m['video'] - m['title'] = strip_tags(decode_html(title)).strip() - if not 'url' in m: - print(url, 'missing') - if 'title' in m: - m['title'] = re.sub('(.*?) \(\d{4}\)$', '\\1', m['title']) - - match = re.compile("flashvars','file=(.*?.flv)'").findall(data) - if match: - m['flv'] = match[0] - m['flv'] = m['flv'].replace('/video/ ', '/video/').replace(' ', '%20') - - y = re.compile('\((\d{4})\)').findall(data) - if y: - m['year'] = int(y[0]) - d = re.compile('Director: (.+)').findall(data) - if d: - m['director'] = strip_tags(decode_html(d[0])).strip() - - a = re.compile('Back to (.*?)', re.DOTALL).findall(data) - if a: - m['artist'] = strip_tags(decode_html(a[0][1])).strip() + if m['type'] == 'sound': + m['tracks'] = [{ + 'title': strip_tags(decode_html(t[1])).strip(), + 'url': t[0] + } for t in re.compile('"(http.*?.mp3)"[^>]*>(.+)(.*?) in UbuWeb Film').findall(data) + for videourl, title in re.compile('href="(http://ubumexico.centro.org.mx/.*?)">(.*?)').findall(data): + if videourl.endswith('.srt'): + m['srt'] = videourl + elif not 'video' in m: + m['video'] = videourl + m['video'] = m['video'].replace('/video/ ', '/video/').replace(' ', '%20') + if m['video'] == 'http://ubumexico.centro.org.mx/video/': + del m['video'] + if not 'title' in m: + m['title'] = strip_tags(decode_html(title)).strip() + if not 'url' in m: + print(url, 'missing') + if 'title' in m: + m['title'] = re.sub('(.*?) \(\d{4}\)$', '\\1', m['title']) + + if not 'title' in m: + match = re.compile('(.*?)').findall(data) + if match: + m['title'] = strip_tags(decode_html(match[0])).strip() + if not 'title' in m: + match = re.compile(".*?&(.*?)", re.DOTALL).findall(data) + if match: + m['title'] = re.sub('\s+', ' ', match[0]).strip() + if ' - ' in m['title']: + m['title'] = m['title'].split(' - ', 1)[-1] + if 'title' in m: + m['title'] = strip_tags(decode_html(m['title']).strip()) + match = re.compile("flashvars','file=(.*?.flv)'").findall(data) + if match: + m['flv'] = match[0] + m['flv'] = m['flv'].replace('/video/ ', '/video/').replace(' ', '%20') + + match = re.compile('''src=(.*?) type="video/mp4"''').findall(data) + if match: + m['mp4'] = match[0].strip('"').strip("'").replace(' ', '%20') + if not m['mp4'].startswith('http'): + m['mp4'] = 'http://ubumexico.centro.org.mx/video/' + m['mp4'] + elif 'video' in m and (m['video'].endswith('.mp4') or m['video'].endswith('.m4v')): + m['mp4'] = m['video'] + + doc = lxml.html.document_fromstring(read_url(url)) + desc = doc.xpath("//div[contains(@id, 'ubudesc')]") + if len(desc): + txt = [] + for part in desc[0].text_content().split('\n\n'): + if part == 'RESOURCES:': + break + if part.strip(): + txt.append(part) + if txt: + if len(txt) > 1 and txt[0].strip() == m.get('title'): + txt = txt[1:] + m['description'] = '\n\n'.join(txt).split('RESOURCES')[0].split('RELATED')[0].strip() + y = re.compile('\((\d{4})\)').findall(data) + if y: + m['year'] = int(y[0]) + d = re.compile('Director: (.+)').findall(data) + if d: + m['director'] = strip_tags(decode_html(d[0])).strip() + + a = re.compile('Back to (.*?)', re.DOTALL).findall(data) if a: m['artist'] = strip_tags(decode_html(a[0][1])).strip() else: - a = re.compile('(.*?)\(b\..*?\d{4}\)').findall(data) + a = re.compile('(.*?) in UbuWeb Film').findall(data) if a: - m['artist'] = strip_tags(decode_html(a[0])).strip() - elif m['id'] == 'film/lawder_color': - m['artist'] = 'Standish Lawder' - if 'artist' in m: - m['artist'] = m['artist'].replace('in UbuWeb Film', '') - m['artist'] = m['artist'].replace('on UbuWeb Film', '').strip() - if m['id'] == 'film/coulibeuf': - m['title'] = 'Balkan Baroque' - m['year'] = 1999 + m['artist'] = strip_tags(decode_html(a[0][1])).strip() + else: + a = re.compile('(.*?)\(b\..*?\d{4}\)').findall(data) + if a: + m['artist'] = strip_tags(decode_html(a[0])).strip() + elif m['id'] == 'film/lawder_color': + m['artist'] = 'Standish Lawder' + + if 'artist' in m: + m['artist'] = m['artist'].replace('in UbuWeb Film', '') + m['artist'] = m['artist'].replace('on UbuWeb Film', '').strip() + if m['id'] == 'film/coulibeuf': + m['title'] = 'Balkan Baroque' + m['year'] = 1999 return m def get_films(): @@ -98,3 +141,12 @@ def get_ids(): ids.append(u) ids = [get_id(url) for url in list(set(ids))] return ids + +def get_sound_ids(): + data = read_url('http://www.ubu.com/sound/') + ids = [] + for url, author in re.compile('(.*?)').findall(data): + url = 'http://www.ubu.com/sound' + url[1:] + ids.append(url) + ids = [get_id(url) for url in sorted(set(ids))] + return ids diff --git a/Shared/lib/python3.4/site-packages/ox/web/youtube.py b/Shared/lib/python3.4/site-packages/ox/web/youtube.py index 5ac9ee2..7268598 100644 --- a/Shared/lib/python3.4/site-packages/ox/web/youtube.py +++ b/Shared/lib/python3.4/site-packages/ox/web/youtube.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- # vi:si:et:sw=4:sts=4:ts=4 -from urllib import quote, unquote_plus -import urllib2 -import cookielib +from six.moves.urllib.parse import quote, unquote_plus +from six.moves import urllib +from six.moves import http_cookiejar as cookielib import re from xml.dom.minidom import parseString import json @@ -167,7 +167,7 @@ def download_webm(id, filename): stream_type = 'video/webm' url = "http://www.youtube.com/watch?v=%s" % id cj = cookielib.CookieJar() - opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) + opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj)) opener.addheaders = [ ('User-Agent', 'Mozilla/5.0 (X11; Linux i686; rv:2.0) Gecko/20100101 Firefox/4.0'), diff --git a/Shared/lib/python3.4/site-packages/pkg_resources.py b/Shared/lib/python3.4/site-packages/pkg_resources/__init__.py similarity index 85% rename from Shared/lib/python3.4/site-packages/pkg_resources.py rename to Shared/lib/python3.4/site-packages/pkg_resources/__init__.py index 517298c..d09e0b6 100644 --- a/Shared/lib/python3.4/site-packages/pkg_resources.py +++ b/Shared/lib/python3.4/site-packages/pkg_resources/__init__.py @@ -14,12 +14,14 @@ The package resource API is designed to work with normal filesystem packages, method. """ +from __future__ import absolute_import + import sys import os import io import time import re -import imp +import types import zipfile import zipimport import warnings @@ -34,8 +36,15 @@ import collections import plistlib import email.parser import tempfile +import textwrap from pkgutil import get_importer +try: + import _imp +except ImportError: + # Python 3.2 compatibility + import imp as _imp + PY3 = sys.version_info > (3,) PY2 = not PY3 @@ -50,6 +59,8 @@ if PY3: else: string_types = str, eval('unicode') +iteritems = (lambda i: i.items()) if PY3 else lambda i: i.iteritems() + # capture these to bypass sandboxing from os import utime try: @@ -64,15 +75,160 @@ from os.path import isdir, split # Avoid try/except due to potential problems with delayed import mechanisms. if sys.version_info >= (3, 3) and sys.implementation.name == "cpython": - import importlib._bootstrap as importlib_bootstrap + import importlib.machinery as importlib_machinery else: - importlib_bootstrap = None + importlib_machinery = None try: import parser except ImportError: pass +try: + import pkg_resources._vendor.packaging.version + import pkg_resources._vendor.packaging.specifiers + packaging = pkg_resources._vendor.packaging +except ImportError: + # fallback to naturally-installed version; allows system packagers to + # omit vendored packages. + import packaging.version + import packaging.specifiers + + +if (3, 0) < sys.version_info < (3, 3): + msg = ( + "Support for Python 3.0-3.2 has been dropped. Future versions " + "will fail here." + ) + warnings.warn(msg) + +# declare some globals that will be defined later to +# satisfy the linters. +require = None +working_set = None + + +class PEP440Warning(RuntimeWarning): + """ + Used when there is an issue with a version or specifier not complying with + PEP 440. + """ + + +class _SetuptoolsVersionMixin(object): + + def __hash__(self): + return super(_SetuptoolsVersionMixin, self).__hash__() + + def __lt__(self, other): + if isinstance(other, tuple): + return tuple(self) < other + else: + return super(_SetuptoolsVersionMixin, self).__lt__(other) + + def __le__(self, other): + if isinstance(other, tuple): + return tuple(self) <= other + else: + return super(_SetuptoolsVersionMixin, self).__le__(other) + + def __eq__(self, other): + if isinstance(other, tuple): + return tuple(self) == other + else: + return super(_SetuptoolsVersionMixin, self).__eq__(other) + + def __ge__(self, other): + if isinstance(other, tuple): + return tuple(self) >= other + else: + return super(_SetuptoolsVersionMixin, self).__ge__(other) + + def __gt__(self, other): + if isinstance(other, tuple): + return tuple(self) > other + else: + return super(_SetuptoolsVersionMixin, self).__gt__(other) + + def __ne__(self, other): + if isinstance(other, tuple): + return tuple(self) != other + else: + return super(_SetuptoolsVersionMixin, self).__ne__(other) + + def __getitem__(self, key): + return tuple(self)[key] + + def __iter__(self): + component_re = re.compile(r'(\d+ | [a-z]+ | \.| -)', re.VERBOSE) + replace = { + 'pre': 'c', + 'preview': 'c', + '-': 'final-', + 'rc': 'c', + 'dev': '@', + }.get + + def _parse_version_parts(s): + for part in component_re.split(s): + part = replace(part, part) + if not part or part == '.': + continue + if part[:1] in '0123456789': + # pad for numeric comparison + yield part.zfill(8) + else: + yield '*'+part + + # ensure that alpha/beta/candidate are before final + yield '*final' + + def old_parse_version(s): + parts = [] + for part in _parse_version_parts(s.lower()): + if part.startswith('*'): + # remove '-' before a prerelease tag + if part < '*final': + while parts and parts[-1] == '*final-': + parts.pop() + # remove trailing zeros from each series of numeric parts + while parts and parts[-1] == '00000000': + parts.pop() + parts.append(part) + return tuple(parts) + + # Warn for use of this function + warnings.warn( + "You have iterated over the result of " + "pkg_resources.parse_version. This is a legacy behavior which is " + "inconsistent with the new version class introduced in setuptools " + "8.0. In most cases, conversion to a tuple is unnecessary. For " + "comparison of versions, sort the Version instances directly. If " + "you have another use case requiring the tuple, please file a " + "bug with the setuptools project describing that need.", + RuntimeWarning, + stacklevel=1, + ) + + for part in old_parse_version(str(self)): + yield part + + +class SetuptoolsVersion(_SetuptoolsVersionMixin, packaging.version.Version): + pass + + +class SetuptoolsLegacyVersion(_SetuptoolsVersionMixin, + packaging.version.LegacyVersion): + pass + + +def parse_version(v): + try: + return SetuptoolsVersion(v) + except packaging.version.InvalidVersion: + return SetuptoolsLegacyVersion(v) + _state_vars = {} @@ -153,6 +309,9 @@ __all__ = [ 'ResolutionError', 'VersionConflict', 'DistributionNotFound', 'UnknownExtra', 'ExtractionError', + # Warnings + 'PEP440Warning', + # Parsing functions and string utilities 'parse_requirements', 'parse_version', 'safe_name', 'safe_version', 'get_platform', 'compatible_platforms', 'yield_lines', 'split_sections', @@ -180,12 +339,79 @@ class ResolutionError(Exception): def __repr__(self): return self.__class__.__name__+repr(self.args) + class VersionConflict(ResolutionError): - """An already-installed version conflicts with the requested version""" + """ + An already-installed version conflicts with the requested version. + + Should be initialized with the installed Distribution and the requested + Requirement. + """ + + _template = "{self.dist} is installed but {self.req} is required" + + @property + def dist(self): + return self.args[0] + + @property + def req(self): + return self.args[1] + + def report(self): + return self._template.format(**locals()) + + def with_context(self, required_by): + """ + If required_by is non-empty, return a version of self that is a + ContextualVersionConflict. + """ + if not required_by: + return self + args = self.args + (required_by,) + return ContextualVersionConflict(*args) + + +class ContextualVersionConflict(VersionConflict): + """ + A VersionConflict that accepts a third parameter, the set of the + requirements that required the installed Distribution. + """ + + _template = VersionConflict._template + ' by {self.required_by}' + + @property + def required_by(self): + return self.args[2] + class DistributionNotFound(ResolutionError): """A requested distribution was not found""" + _template = ("The '{self.req}' distribution was not found " + "and is required by {self.requirers_str}") + + @property + def req(self): + return self.args[0] + + @property + def requirers(self): + return self.args[1] + + @property + def requirers_str(self): + if not self.requirers: + return 'the application' + return ', '.join(self.requirers) + + def report(self): + return self._template.format(**locals()) + + def __str__(self): + return self.report() + + class UnknownExtra(ResolutionError): """Distribution doesn't have an "extra feature" of the given name""" _provider_factories = {} @@ -490,8 +716,7 @@ class WorkingSet(object): if dist is not None and dist not in req: # XXX add more info raise VersionConflict(dist, req) - else: - return dist + return dist def iter_entry_points(self, group, name=None): """Yield entry point objects from `group` matching `name` @@ -590,6 +815,10 @@ class WorkingSet(object): best = {} to_activate = [] + # Mapping of requirement to set of distributions that required it; + # useful for reporting info about conflicts. + required_by = collections.defaultdict(set) + while requirements: # process dependencies breadth-first req = requirements.pop(0) @@ -613,19 +842,22 @@ class WorkingSet(object): ws = WorkingSet([]) dist = best[req.key] = env.best_match(req, ws, installer) if dist is None: - #msg = ("The '%s' distribution was not found on this " - # "system, and is required by this application.") - #raise DistributionNotFound(msg % req) - - # unfortunately, zc.buildout uses a str(err) - # to get the name of the distribution here.. - raise DistributionNotFound(req) + requirers = required_by.get(req, None) + raise DistributionNotFound(req, requirers) to_activate.append(dist) if dist not in req: # Oops, the "best" so far conflicts with a dependency - # XXX put more info here - raise VersionConflict(dist, req) - requirements.extend(dist.requires(req.extras)[::-1]) + dependent_req = required_by[req] + raise VersionConflict(dist, req).with_context(dependent_req) + + # push the new requirements onto the stack + new_requirements = dist.requires(req.extras)[::-1] + requirements.extend(new_requirements) + + # Register the new requirements needed by req + for new_requirement in new_requirements: + required_by[new_requirement].add(req.project_name) + processed[req] = True # return list of distros to activate @@ -693,8 +925,7 @@ class WorkingSet(object): try: resolvees = shadow_set.resolve(req, env, installer) - except ResolutionError: - v = sys.exc_info()[1] + except ResolutionError as v: # save error info error_info[dist] = v if fallback: @@ -1143,13 +1374,15 @@ def safe_name(name): def safe_version(version): - """Convert an arbitrary string to a standard version string - - Spaces become dots, and all other non-alphanumeric characters become - dashes, with runs of multiple dashes condensed to a single dash. """ - version = version.replace(' ','.') - return re.sub('[^A-Za-z0-9.]+', '-', version) + Convert an arbitrary string to a standard version string + """ + try: + # normalize the version + return str(packaging.version.Version(version)) + except packaging.version.InvalidVersion: + version = version.replace(' ','.') + return re.sub('[^A-Za-z0-9.]+', '-', version) def safe_extra(extra): @@ -1177,6 +1410,7 @@ class MarkerEvaluation(object): 'python_version': lambda: platform.python_version()[:3], 'platform_version': platform.version, 'platform_machine': platform.machine, + 'platform_python_implementation': platform.python_implementation, 'python_implementation': platform.python_implementation, } @@ -1188,8 +1422,8 @@ class MarkerEvaluation(object): """ try: cls.evaluate_marker(text) - except SyntaxError: - return cls.normalize_exception(sys.exc_info()[1]) + except SyntaxError as e: + return cls.normalize_exception(e) return False @staticmethod @@ -1269,6 +1503,10 @@ class MarkerEvaluation(object): 'in': lambda x, y: x in y, '==': operator.eq, '!=': operator.ne, + '<': operator.lt, + '>': operator.gt, + '<=': operator.le, + '>=': operator.ge, } if hasattr(symbol, 'or_test'): ops[symbol.or_test] = cls.test @@ -1288,6 +1526,17 @@ class MarkerEvaluation(object): """ return cls.interpret(parser.expr(text).totuple(1)[1]) + @staticmethod + def _translate_metadata2(env): + """ + Markerlib implements Metadata 1.2 (PEP 345) environment markers. + Translate the variables to Metadata 2.0 (PEP 426). + """ + return dict( + (key.replace('.', '_'), value) + for key, value in env + ) + @classmethod def _markerlib_evaluate(cls, text): """ @@ -1296,16 +1545,11 @@ class MarkerEvaluation(object): Raise SyntaxError if marker is invalid. """ import _markerlib - # markerlib implements Metadata 1.2 (PEP 345) environment markers. - # Translate the variables to Metadata 2.0 (PEP 426). - env = _markerlib.default_environment() - for key in env.keys(): - new_key = key.replace('.', '_') - env[new_key] = env.pop(key) + + env = cls._translate_metadata2(_markerlib.default_environment()) try: result = _markerlib.interpret(text, env) - except NameError: - e = sys.exc_info()[1] + except NameError as e: raise SyntaxError(e.args[0]) return result @@ -1501,8 +1745,8 @@ class DefaultProvider(EggProvider): register_loader_type(type(None), DefaultProvider) -if importlib_bootstrap is not None: - register_loader_type(importlib_bootstrap.SourceFileLoader, DefaultProvider) +if importlib_machinery is not None: + register_loader_type(importlib_machinery.SourceFileLoader, DefaultProvider) class EmptyProvider(NullProvider): @@ -1909,8 +2153,8 @@ def find_on_path(importer, path_item, only=False): break register_finder(pkgutil.ImpImporter, find_on_path) -if importlib_bootstrap is not None: - register_finder(importlib_bootstrap.FileFinder, find_on_path) +if importlib_machinery is not None: + register_finder(importlib_machinery.FileFinder, find_on_path) _declare_state('dict', _namespace_handlers={}) _declare_state('dict', _namespace_packages={}) @@ -1944,7 +2188,7 @@ def _handle_ns(packageName, path_item): return None module = sys.modules.get(packageName) if module is None: - module = sys.modules[packageName] = imp.new_module(packageName) + module = sys.modules[packageName] = types.ModuleType(packageName) module.__path__ = [] _set_parent_ns(packageName) elif not hasattr(module,'__path__'): @@ -1963,7 +2207,7 @@ def _handle_ns(packageName, path_item): def declare_namespace(packageName): """Declare that package 'packageName' is a namespace package""" - imp.acquire_lock() + _imp.acquire_lock() try: if packageName in _namespace_packages: return @@ -1990,18 +2234,18 @@ def declare_namespace(packageName): _handle_ns(packageName, path_item) finally: - imp.release_lock() + _imp.release_lock() def fixup_namespace_packages(path_item, parent=None): """Ensure that previously-declared namespace packages include path_item""" - imp.acquire_lock() + _imp.acquire_lock() try: for package in _namespace_packages.get(parent,()): subpath = _handle_ns(package, path_item) if subpath: fixup_namespace_packages(subpath, package) finally: - imp.release_lock() + _imp.release_lock() def file_ns_handler(importer, path_item, packageName, module): """Compute an ns-package subpath for a filesystem or zipfile importer""" @@ -2018,8 +2262,8 @@ def file_ns_handler(importer, path_item, packageName, module): register_namespace_handler(pkgutil.ImpImporter, file_ns_handler) register_namespace_handler(zipimport.zipimporter, file_ns_handler) -if importlib_bootstrap is not None: - register_namespace_handler(importlib_bootstrap.FileFinder, file_ns_handler) +if importlib_machinery is not None: + register_namespace_handler(importlib_machinery.FileFinder, file_ns_handler) def null_ns_handler(importer, path_item, packageName, module): @@ -2067,79 +2311,25 @@ CONTINUE = re.compile(r"\s*\\\s*(#.*)?$").match # Distribution or extra DISTRO = re.compile(r"\s*((\w|[-.])+)").match # ver. info -VERSION = re.compile(r"\s*(<=?|>=?|==|!=)\s*((\w|[-.])+)").match +VERSION = re.compile(r"\s*(<=?|>=?|===?|!=|~=)\s*((\w|[-.*_!+])+)").match # comma between items COMMA = re.compile(r"\s*,").match OBRACKET = re.compile(r"\s*\[").match CBRACKET = re.compile(r"\s*\]").match MODULE = re.compile(r"\w+(\.\w+)*$").match EGG_NAME = re.compile( - r"(?P[^-]+)" - r"( -(?P[^-]+) (-py(?P[^-]+) (-(?P.+))? )? )?", - re.VERBOSE | re.IGNORECASE + r""" + (?P[^-]+) ( + -(?P[^-]+) ( + -py(?P[^-]+) ( + -(?P.+) + )? + )? + )? + """, + re.VERBOSE | re.IGNORECASE, ).match -component_re = re.compile(r'(\d+ | [a-z]+ | \.| -)', re.VERBOSE) -replace = {'pre':'c', 'preview':'c','-':'final-','rc':'c','dev':'@'}.get - -def _parse_version_parts(s): - for part in component_re.split(s): - part = replace(part, part) - if not part or part=='.': - continue - if part[:1] in '0123456789': - # pad for numeric comparison - yield part.zfill(8) - else: - yield '*'+part - - # ensure that alpha/beta/candidate are before final - yield '*final' - -def parse_version(s): - """Convert a version string to a chronologically-sortable key - - This is a rough cross between distutils' StrictVersion and LooseVersion; - if you give it versions that would work with StrictVersion, then it behaves - the same; otherwise it acts like a slightly-smarter LooseVersion. It is - *possible* to create pathological version coding schemes that will fool - this parser, but they should be very rare in practice. - - The returned value will be a tuple of strings. Numeric portions of the - version are padded to 8 digits so they will compare numerically, but - without relying on how numbers compare relative to strings. Dots are - dropped, but dashes are retained. Trailing zeros between alpha segments - or dashes are suppressed, so that e.g. "2.4.0" is considered the same as - "2.4". Alphanumeric parts are lower-cased. - - The algorithm assumes that strings like "-" and any alpha string that - alphabetically follows "final" represents a "patch level". So, "2.4-1" - is assumed to be a branch or patch of "2.4", and therefore "2.4.1" is - considered newer than "2.4-1", which in turn is newer than "2.4". - - Strings like "a", "b", "c", "alpha", "beta", "candidate" and so on (that - come before "final" alphabetically) are assumed to be pre-release versions, - so that the version "2.4" is considered newer than "2.4a1". - - Finally, to handle miscellaneous cases, the strings "pre", "preview", and - "rc" are treated as if they were "c", i.e. as though they were release - candidates, and therefore are not as new as a version string that does not - contain them, and "dev" is replaced with an '@' so that it sorts lower than - than any other pre-release tag. - """ - parts = [] - for part in _parse_version_parts(s.lower()): - if part.startswith('*'): - # remove '-' before a prerelease tag - if part < '*final': - while parts and parts[-1] == '*final-': - parts.pop() - # remove trailing zeros from each series of numeric parts - while parts and parts[-1]=='00000000': - parts.pop() - parts.append(part) - return tuple(parts) - class EntryPoint(object): """Object representing an advertised importable object""" @@ -2164,17 +2354,30 @@ class EntryPoint(object): def __repr__(self): return "EntryPoint.parse(%r)" % str(self) - def load(self, require=True, env=None, installer=None): + def load(self, require=True, *args, **kwargs): + """ + Require packages for this EntryPoint, then resolve it. + """ + if not require or args or kwargs: + warnings.warn( + "Parameters to load are deprecated. Call .resolve and " + ".require separately.", + DeprecationWarning, + stacklevel=2, + ) if require: - self.require(env, installer) - entry = __import__(self.module_name, globals(), globals(), - ['__name__']) - for attr in self.attrs: - try: - entry = getattr(entry, attr) - except AttributeError: - raise ImportError("%r has no %r attribute" % (entry, attr)) - return entry + self.require(*args, **kwargs) + return self.resolve() + + def resolve(self): + """ + Resolve the entry point from its module and attrs. + """ + module = __import__(self.module_name, fromlist=['__name__'], level=0) + try: + return functools.reduce(getattr, self.attrs, module) + except AttributeError as exc: + raise ImportError(str(exc)) def require(self, env=None, installer=None): if self.extras and not self.dist: @@ -2183,6 +2386,15 @@ class EntryPoint(object): items = working_set.resolve(reqs, env, installer) list(map(working_set.add, items)) + pattern = re.compile( + r'\s*' + r'(?P.+?)\s*' + r'=\s*' + r'(?P[\w.]+)\s*' + r'(:\s*(?P[\w.]+))?\s*' + r'(?P\[.*\])?\s*$' + ) + @classmethod def parse(cls, src, dist=None): """Parse a single entry point from string `src` @@ -2194,25 +2406,23 @@ class EntryPoint(object): The entry name and module name are required, but the ``:attrs`` and ``[extras]`` parts are optional """ - try: - attrs = extras = () - name, value = src.split('=', 1) - if '[' in value: - value, extras = value.split('[', 1) - req = Requirement.parse("x[" + extras) - if req.specs: - raise ValueError - extras = req.extras - if ':' in value: - value, attrs = value.split(':', 1) - if not MODULE(attrs.rstrip()): - raise ValueError - attrs = attrs.rstrip().split('.') - except ValueError: + m = cls.pattern.match(src) + if not m: msg = "EntryPoint must be in 'name=module:attrs [extras]' format" raise ValueError(msg, src) - else: - return cls(name.strip(), value.strip(), attrs, extras, dist) + res = m.groupdict() + extras = cls._parse_extras(res['extras']) + attrs = res['attr'].split('.') if res['attr'] else () + return cls(res['name'], res['module'], attrs, extras, dist) + + @classmethod + def _parse_extras(cls, extras_spec): + if not extras_spec: + return () + req = Requirement.parse('x' + extras_spec) + if req.specs: + raise ValueError() + return req.extras @classmethod def parse_group(cls, group, lines, dist=None): @@ -2292,12 +2502,12 @@ class Distribution(object): @property def hashcmp(self): return ( - getattr(self, 'parsed_version', ()), + self.parsed_version, self.precedence, self.key, _remove_md5_fragment(self.location), - self.py_version, - self.platform, + self.py_version or '', + self.platform or '', ) def __hash__(self): @@ -2338,11 +2548,36 @@ class Distribution(object): @property def parsed_version(self): - try: - return self._parsed_version - except AttributeError: - self._parsed_version = pv = parse_version(self.version) - return pv + if not hasattr(self, "_parsed_version"): + self._parsed_version = parse_version(self.version) + + return self._parsed_version + + def _warn_legacy_version(self): + LV = packaging.version.LegacyVersion + is_legacy = isinstance(self._parsed_version, LV) + if not is_legacy: + return + + # While an empty version is technically a legacy version and + # is not a valid PEP 440 version, it's also unlikely to + # actually come from someone and instead it is more likely that + # it comes from setuptools attempting to parse a filename and + # including it in the list. So for that we'll gate this warning + # on if the version is anything at all or not. + if not self.version: + return + + tmpl = textwrap.dedent(""" + '{project_name} ({version})' is being parsed as a legacy, + non PEP 440, + version. You may find odd behavior and sort order. + In particular it will be sorted as less than 0.0. It + is recommended to migrate to PEP 440 compatible + versions. + """).strip().replace('\n', ' ') + + warnings.warn(tmpl.format(**vars(self)), PEP440Warning) @property def version(self): @@ -2447,7 +2682,12 @@ class Distribution(object): def as_requirement(self): """Return a ``Requirement`` that matches this distribution exactly""" - return Requirement.parse('%s==%s' % (self.project_name, self.version)) + if isinstance(self.parsed_version, packaging.version.Version): + spec = "%s==%s" % (self.project_name, self.parsed_version) + else: + spec = "%s===%s" % (self.project_name, self.parsed_version) + + return Requirement.parse(spec) def load_entry_point(self, group, name): """Return the `name` entry point of `group` or raise ImportError""" @@ -2638,6 +2878,11 @@ def issue_warning(*args,**kw): warnings.warn(stacklevel=level + 1, *args, **kw) +class RequirementParseError(ValueError): + def __str__(self): + return ' '.join(self.args) + + def parse_requirements(strs): """Yield ``Requirement`` objects for each specification in `strs` @@ -2656,14 +2901,13 @@ def parse_requirements(strs): line = next(lines) p = 0 except StopIteration: - raise ValueError( - "\\ must not appear on the last nonblank line" - ) + msg = "\\ must not appear on the last nonblank line" + raise RequirementParseError(msg) match = ITEM(line, p) if not match: msg = "Expected " + item_name + " in" - raise ValueError(msg, line, "at", line[p:]) + raise RequirementParseError(msg, line, "at", line[p:]) items.append(match.group(*groups)) p = match.end() @@ -2674,7 +2918,7 @@ def parse_requirements(strs): p = match.end() elif not TERMINATOR(line, p): msg = "Expected ',' or end-of-list in" - raise ValueError(msg, line, "at", line[p:]) + raise RequirementParseError(msg, line, "at", line[p:]) match = TERMINATOR(line, p) # skip the terminator, if any @@ -2685,7 +2929,7 @@ def parse_requirements(strs): for line in lines: match = DISTRO(line) if not match: - raise ValueError("Missing distribution spec", line) + raise RequirementParseError("Missing distribution spec", line) project_name = match.group(1) p = match.end() extras = [] @@ -2699,7 +2943,7 @@ def parse_requirements(strs): line, p, specs = scan_list(VERSION, LINE_END, line, p, (1, 2), "version spec") - specs = [(op, safe_version(val)) for op, val in specs] + specs = [(op, val) for op, val in specs] yield Requirement(project_name, specs, extras) @@ -2708,26 +2952,23 @@ class Requirement: """DO NOT CALL THIS UNDOCUMENTED METHOD; use Requirement.parse()!""" self.unsafe_name, project_name = project_name, safe_name(project_name) self.project_name, self.key = project_name, project_name.lower() - index = [ - (parse_version(v), state_machine[op], op, v) - for op, v in specs - ] - index.sort() - self.specs = [(op, ver) for parsed, trans, op, ver in index] - self.index, self.extras = index, tuple(map(safe_extra, extras)) + self.specifier = packaging.specifiers.SpecifierSet( + ",".join(["".join([x, y]) for x, y in specs]) + ) + self.specs = specs + self.extras = tuple(map(safe_extra, extras)) self.hashCmp = ( self.key, - tuple((op, parsed) for parsed, trans, op, ver in index), + self.specifier, frozenset(self.extras), ) self.__hash = hash(self.hashCmp) def __str__(self): - specs = ','.join([''.join(s) for s in self.specs]) extras = ','.join(self.extras) if extras: extras = '[%s]' % extras - return '%s%s%s' % (self.project_name, extras, specs) + return '%s%s%s' % (self.project_name, extras, self.specifier) def __eq__(self, other): return ( @@ -2735,33 +2976,20 @@ class Requirement: self.hashCmp == other.hashCmp ) + def __ne__(self, other): + return not self == other + def __contains__(self, item): if isinstance(item, Distribution): if item.key != self.key: return False - # only get if we need it - if self.index: - item = item.parsed_version - elif isinstance(item, string_types): - item = parse_version(item) - last = None - # -1, 0, 1 - compare = lambda a, b: (a > b) - (a < b) - for parsed, trans, op, ver in self.index: - # Indexing: 0, 1, -1 - action = trans[compare(item, parsed)] - if action == 'F': - return False - elif action == 'T': - return True - elif action == '+': - last = True - elif action == '-' or last is None: - last = False - # no rules encountered - if last is None: - last = True - return last + + item = item.version + + # Allow prereleases always in order to match the previous behavior of + # this method. In the future this should be smarter and follow PEP 440 + # more accurately. + return self.specifier.contains(item, prereleases=True) def __hash__(self): return self.__hash @@ -2770,22 +2998,8 @@ class Requirement: @staticmethod def parse(s): - reqs = list(parse_requirements(s)) - if reqs: - if len(reqs) == 1: - return reqs[0] - raise ValueError("Expected only one requirement", s) - raise ValueError("No requirements found", s) - -state_machine = { - # =>< - '<': '--T', - '<=': 'T-T', - '>': 'F+F', - '>=': 'T+F', - '==': 'T..', - '!=': 'F++', -} + req, = parse_requirements(s) + return req def _get_mro(cls): @@ -2809,14 +3023,14 @@ def ensure_directory(path): os.makedirs(dirname) -def _bypass_ensure_directory(path, mode=0o777): +def _bypass_ensure_directory(path): """Sandbox-bypassing version of ensure_directory()""" if not WRITE_SUPPORT: raise IOError('"os.mkdir" not supported on this platform.') dirname, filename = split(path) if dirname and filename and not isdir(dirname): _bypass_ensure_directory(dirname) - mkdir(dirname, mode) + mkdir(dirname, 0o755) def split_sections(s): @@ -2855,28 +3069,56 @@ def _mkstemp(*args,**kw): os.open = old_open -# Set up global resource manager (deliberately not state-saved) -_manager = ResourceManager() -def _initialize(g): - for name in dir(_manager): +# Silence the PEP440Warning by default, so that end users don't get hit by it +# randomly just because they use pkg_resources. We want to append the rule +# because we want earlier uses of filterwarnings to take precedence over this +# one. +warnings.filterwarnings("ignore", category=PEP440Warning, append=True) + + +# from jaraco.functools 1.3 +def _call_aside(f, *args, **kwargs): + f(*args, **kwargs) + return f + + +@_call_aside +def _initialize(g=globals()): + "Set up global resource manager (deliberately not state-saved)" + manager = ResourceManager() + g['_manager'] = manager + for name in dir(manager): if not name.startswith('_'): - g[name] = getattr(_manager, name) -_initialize(globals()) + g[name] = getattr(manager, name) -# Prepare the master working set and make the ``require()`` API available -working_set = WorkingSet._build_master() -_declare_state('object', working_set=working_set) -require = working_set.require -iter_entry_points = working_set.iter_entry_points -add_activation_listener = working_set.subscribe -run_script = working_set.run_script -# backward compatibility -run_main = run_script -# Activate all distributions already on sys.path, and ensure that -# all distributions added to the working set in the future (e.g. by -# calling ``require()``) will get activated as well. -add_activation_listener(lambda dist: dist.activate()) -working_set.entries=[] -# match order -list(map(working_set.add_entry, sys.path)) +@_call_aside +def _initialize_master_working_set(): + """ + Prepare the master working set and make the ``require()`` + API available. + + This function has explicit effects on the global state + of pkg_resources. It is intended to be invoked once at + the initialization of this module. + + Invocation by other packages is unsupported and done + at their own risk. + """ + working_set = WorkingSet._build_master() + _declare_state('object', working_set=working_set) + + require = working_set.require + iter_entry_points = working_set.iter_entry_points + add_activation_listener = working_set.subscribe + run_script = working_set.run_script + # backward compatibility + run_main = run_script + # Activate all distributions already on sys.path, and ensure that + # all distributions added to the working set in the future (e.g. by + # calling ``require()``) will get activated as well. + add_activation_listener(lambda dist: dist.activate()) + working_set.entries=[] + # match order + list(map(working_set.add_entry, sys.path)) + globals().update(locals()) diff --git a/Shared/lib/python3.4/site-packages/setuptools/_vendor/__init__.py b/Shared/lib/python3.4/site-packages/pkg_resources/_vendor/__init__.py similarity index 100% rename from Shared/lib/python3.4/site-packages/setuptools/_vendor/__init__.py rename to Shared/lib/python3.4/site-packages/pkg_resources/_vendor/__init__.py diff --git a/Shared/lib/python3.4/site-packages/setuptools/_vendor/packaging/__about__.py b/Shared/lib/python3.4/site-packages/pkg_resources/_vendor/packaging/__about__.py similarity index 98% rename from Shared/lib/python3.4/site-packages/setuptools/_vendor/packaging/__about__.py rename to Shared/lib/python3.4/site-packages/pkg_resources/_vendor/packaging/__about__.py index b64681e..eadb794 100644 --- a/Shared/lib/python3.4/site-packages/setuptools/_vendor/packaging/__about__.py +++ b/Shared/lib/python3.4/site-packages/pkg_resources/_vendor/packaging/__about__.py @@ -22,7 +22,7 @@ __title__ = "packaging" __summary__ = "Core utilities for Python packages" __uri__ = "https://github.com/pypa/packaging" -__version__ = "14.2" +__version__ = "15.3" __author__ = "Donald Stufft" __email__ = "donald@stufft.io" diff --git a/Shared/lib/python3.4/site-packages/setuptools/_vendor/packaging/__init__.py b/Shared/lib/python3.4/site-packages/pkg_resources/_vendor/packaging/__init__.py similarity index 100% rename from Shared/lib/python3.4/site-packages/setuptools/_vendor/packaging/__init__.py rename to Shared/lib/python3.4/site-packages/pkg_resources/_vendor/packaging/__init__.py diff --git a/Shared/lib/python3.4/site-packages/setuptools/_vendor/packaging/_compat.py b/Shared/lib/python3.4/site-packages/pkg_resources/_vendor/packaging/_compat.py similarity index 63% rename from Shared/lib/python3.4/site-packages/setuptools/_vendor/packaging/_compat.py rename to Shared/lib/python3.4/site-packages/pkg_resources/_vendor/packaging/_compat.py index f2ff383..5c396ce 100644 --- a/Shared/lib/python3.4/site-packages/setuptools/_vendor/packaging/_compat.py +++ b/Shared/lib/python3.4/site-packages/pkg_resources/_vendor/packaging/_compat.py @@ -25,3 +25,16 @@ if PY3: string_types = str, else: string_types = basestring, + + +def with_metaclass(meta, *bases): + """ + Create a base class with a metaclass. + """ + # This requires a bit of explanation: the basic idea is to make a dummy + # metaclass for one level of class instantiation that replaces itself with + # the actual metaclass. + class metaclass(meta): + def __new__(cls, name, this_bases, d): + return meta(name, bases, d) + return type.__new__(metaclass, 'temporary_class', (), {}) diff --git a/Shared/lib/python3.4/site-packages/setuptools/_vendor/packaging/_structures.py b/Shared/lib/python3.4/site-packages/pkg_resources/_vendor/packaging/_structures.py similarity index 100% rename from Shared/lib/python3.4/site-packages/setuptools/_vendor/packaging/_structures.py rename to Shared/lib/python3.4/site-packages/pkg_resources/_vendor/packaging/_structures.py diff --git a/Shared/lib/python3.4/site-packages/pkg_resources/_vendor/packaging/specifiers.py b/Shared/lib/python3.4/site-packages/pkg_resources/_vendor/packaging/specifiers.py new file mode 100644 index 0000000..891664f --- /dev/null +++ b/Shared/lib/python3.4/site-packages/pkg_resources/_vendor/packaging/specifiers.py @@ -0,0 +1,784 @@ +# Copyright 2014 Donald Stufft +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from __future__ import absolute_import, division, print_function + +import abc +import functools +import itertools +import re + +from ._compat import string_types, with_metaclass +from .version import Version, LegacyVersion, parse + + +class InvalidSpecifier(ValueError): + """ + An invalid specifier was found, users should refer to PEP 440. + """ + + +class BaseSpecifier(with_metaclass(abc.ABCMeta, object)): + + @abc.abstractmethod + def __str__(self): + """ + Returns the str representation of this Specifier like object. This + should be representative of the Specifier itself. + """ + + @abc.abstractmethod + def __hash__(self): + """ + Returns a hash value for this Specifier like object. + """ + + @abc.abstractmethod + def __eq__(self, other): + """ + Returns a boolean representing whether or not the two Specifier like + objects are equal. + """ + + @abc.abstractmethod + def __ne__(self, other): + """ + Returns a boolean representing whether or not the two Specifier like + objects are not equal. + """ + + @abc.abstractproperty + def prereleases(self): + """ + Returns whether or not pre-releases as a whole are allowed by this + specifier. + """ + + @prereleases.setter + def prereleases(self, value): + """ + Sets whether or not pre-releases as a whole are allowed by this + specifier. + """ + + @abc.abstractmethod + def contains(self, item, prereleases=None): + """ + Determines if the given item is contained within this specifier. + """ + + @abc.abstractmethod + def filter(self, iterable, prereleases=None): + """ + Takes an iterable of items and filters them so that only items which + are contained within this specifier are allowed in it. + """ + + +class _IndividualSpecifier(BaseSpecifier): + + _operators = {} + + def __init__(self, spec="", prereleases=None): + match = self._regex.search(spec) + if not match: + raise InvalidSpecifier("Invalid specifier: '{0}'".format(spec)) + + self._spec = ( + match.group("operator").strip(), + match.group("version").strip(), + ) + + # Store whether or not this Specifier should accept prereleases + self._prereleases = prereleases + + def __repr__(self): + pre = ( + ", prereleases={0!r}".format(self.prereleases) + if self._prereleases is not None + else "" + ) + + return "<{0}({1!r}{2})>".format( + self.__class__.__name__, + str(self), + pre, + ) + + def __str__(self): + return "{0}{1}".format(*self._spec) + + def __hash__(self): + return hash(self._spec) + + def __eq__(self, other): + if isinstance(other, string_types): + try: + other = self.__class__(other) + except InvalidSpecifier: + return NotImplemented + elif not isinstance(other, self.__class__): + return NotImplemented + + return self._spec == other._spec + + def __ne__(self, other): + if isinstance(other, string_types): + try: + other = self.__class__(other) + except InvalidSpecifier: + return NotImplemented + elif not isinstance(other, self.__class__): + return NotImplemented + + return self._spec != other._spec + + def _get_operator(self, op): + return getattr(self, "_compare_{0}".format(self._operators[op])) + + def _coerce_version(self, version): + if not isinstance(version, (LegacyVersion, Version)): + version = parse(version) + return version + + @property + def operator(self): + return self._spec[0] + + @property + def version(self): + return self._spec[1] + + @property + def prereleases(self): + return self._prereleases + + @prereleases.setter + def prereleases(self, value): + self._prereleases = value + + def __contains__(self, item): + return self.contains(item) + + def contains(self, item, prereleases=None): + # Determine if prereleases are to be allowed or not. + if prereleases is None: + prereleases = self.prereleases + + # Normalize item to a Version or LegacyVersion, this allows us to have + # a shortcut for ``"2.0" in Specifier(">=2") + item = self._coerce_version(item) + + # Determine if we should be supporting prereleases in this specifier + # or not, if we do not support prereleases than we can short circuit + # logic if this version is a prereleases. + if item.is_prerelease and not prereleases: + return False + + # Actually do the comparison to determine if this item is contained + # within this Specifier or not. + return self._get_operator(self.operator)(item, self.version) + + def filter(self, iterable, prereleases=None): + yielded = False + found_prereleases = [] + + kw = {"prereleases": prereleases if prereleases is not None else True} + + # Attempt to iterate over all the values in the iterable and if any of + # them match, yield them. + for version in iterable: + parsed_version = self._coerce_version(version) + + if self.contains(parsed_version, **kw): + # If our version is a prerelease, and we were not set to allow + # prereleases, then we'll store it for later incase nothing + # else matches this specifier. + if (parsed_version.is_prerelease + and not (prereleases or self.prereleases)): + found_prereleases.append(version) + # Either this is not a prerelease, or we should have been + # accepting prereleases from the begining. + else: + yielded = True + yield version + + # Now that we've iterated over everything, determine if we've yielded + # any values, and if we have not and we have any prereleases stored up + # then we will go ahead and yield the prereleases. + if not yielded and found_prereleases: + for version in found_prereleases: + yield version + + +class LegacySpecifier(_IndividualSpecifier): + + _regex = re.compile( + r""" + ^ + \s* + (?P(==|!=|<=|>=|<|>)) + \s* + (?P + [^\s]* # We just match everything, except for whitespace since this + # is a "legacy" specifier and the version string can be just + # about anything. + ) + \s* + $ + """, + re.VERBOSE | re.IGNORECASE, + ) + + _operators = { + "==": "equal", + "!=": "not_equal", + "<=": "less_than_equal", + ">=": "greater_than_equal", + "<": "less_than", + ">": "greater_than", + } + + def _coerce_version(self, version): + if not isinstance(version, LegacyVersion): + version = LegacyVersion(str(version)) + return version + + def _compare_equal(self, prospective, spec): + return prospective == self._coerce_version(spec) + + def _compare_not_equal(self, prospective, spec): + return prospective != self._coerce_version(spec) + + def _compare_less_than_equal(self, prospective, spec): + return prospective <= self._coerce_version(spec) + + def _compare_greater_than_equal(self, prospective, spec): + return prospective >= self._coerce_version(spec) + + def _compare_less_than(self, prospective, spec): + return prospective < self._coerce_version(spec) + + def _compare_greater_than(self, prospective, spec): + return prospective > self._coerce_version(spec) + + +def _require_version_compare(fn): + @functools.wraps(fn) + def wrapped(self, prospective, spec): + if not isinstance(prospective, Version): + return False + return fn(self, prospective, spec) + return wrapped + + +class Specifier(_IndividualSpecifier): + + _regex = re.compile( + r""" + ^ + \s* + (?P(~=|==|!=|<=|>=|<|>|===)) + (?P + (?: + # The identity operators allow for an escape hatch that will + # do an exact string match of the version you wish to install. + # This will not be parsed by PEP 440 and we cannot determine + # any semantic meaning from it. This operator is discouraged + # but included entirely as an escape hatch. + (?<====) # Only match for the identity operator + \s* + [^\s]* # We just match everything, except for whitespace + # since we are only testing for strict identity. + ) + | + (?: + # The (non)equality operators allow for wild card and local + # versions to be specified so we have to define these two + # operators separately to enable that. + (?<===|!=) # Only match for equals and not equals + + \s* + v? + (?:[0-9]+!)? # epoch + [0-9]+(?:\.[0-9]+)* # release + (?: # pre release + [-_\.]? + (a|b|c|rc|alpha|beta|pre|preview) + [-_\.]? + [0-9]* + )? + (?: # post release + (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) + )? + + # You cannot use a wild card and a dev or local version + # together so group them with a | and make them optional. + (?: + (?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release + (?:\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*)? # local + | + \.\* # Wild card syntax of .* + )? + ) + | + (?: + # The compatible operator requires at least two digits in the + # release segment. + (?<=~=) # Only match for the compatible operator + + \s* + v? + (?:[0-9]+!)? # epoch + [0-9]+(?:\.[0-9]+)+ # release (We have a + instead of a *) + (?: # pre release + [-_\.]? + (a|b|c|rc|alpha|beta|pre|preview) + [-_\.]? + [0-9]* + )? + (?: # post release + (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) + )? + (?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release + ) + | + (?: + # All other operators only allow a sub set of what the + # (non)equality operators do. Specifically they do not allow + # local versions to be specified nor do they allow the prefix + # matching wild cards. + (?=": "greater_than_equal", + "<": "less_than", + ">": "greater_than", + "===": "arbitrary", + } + + @_require_version_compare + def _compare_compatible(self, prospective, spec): + # Compatible releases have an equivalent combination of >= and ==. That + # is that ~=2.2 is equivalent to >=2.2,==2.*. This allows us to + # implement this in terms of the other specifiers instead of + # implementing it ourselves. The only thing we need to do is construct + # the other specifiers. + + # We want everything but the last item in the version, but we want to + # ignore post and dev releases and we want to treat the pre-release as + # it's own separate segment. + prefix = ".".join( + list( + itertools.takewhile( + lambda x: (not x.startswith("post") + and not x.startswith("dev")), + _version_split(spec), + ) + )[:-1] + ) + + # Add the prefix notation to the end of our string + prefix += ".*" + + return (self._get_operator(">=")(prospective, spec) + and self._get_operator("==")(prospective, prefix)) + + @_require_version_compare + def _compare_equal(self, prospective, spec): + # We need special logic to handle prefix matching + if spec.endswith(".*"): + # Split the spec out by dots, and pretend that there is an implicit + # dot in between a release segment and a pre-release segment. + spec = _version_split(spec[:-2]) # Remove the trailing .* + + # Split the prospective version out by dots, and pretend that there + # is an implicit dot in between a release segment and a pre-release + # segment. + prospective = _version_split(str(prospective)) + + # Shorten the prospective version to be the same length as the spec + # so that we can determine if the specifier is a prefix of the + # prospective version or not. + prospective = prospective[:len(spec)] + + # Pad out our two sides with zeros so that they both equal the same + # length. + spec, prospective = _pad_version(spec, prospective) + else: + # Convert our spec string into a Version + spec = Version(spec) + + # If the specifier does not have a local segment, then we want to + # act as if the prospective version also does not have a local + # segment. + if not spec.local: + prospective = Version(prospective.public) + + return prospective == spec + + @_require_version_compare + def _compare_not_equal(self, prospective, spec): + return not self._compare_equal(prospective, spec) + + @_require_version_compare + def _compare_less_than_equal(self, prospective, spec): + return prospective <= Version(spec) + + @_require_version_compare + def _compare_greater_than_equal(self, prospective, spec): + return prospective >= Version(spec) + + @_require_version_compare + def _compare_less_than(self, prospective, spec): + # Convert our spec to a Version instance, since we'll want to work with + # it as a version. + spec = Version(spec) + + # Check to see if the prospective version is less than the spec + # version. If it's not we can short circuit and just return False now + # instead of doing extra unneeded work. + if not prospective < spec: + return False + + # This special case is here so that, unless the specifier itself + # includes is a pre-release version, that we do not accept pre-release + # versions for the version mentioned in the specifier (e.g. <3.1 should + # not match 3.1.dev0, but should match 3.0.dev0). + if not spec.is_prerelease and prospective.is_prerelease: + if Version(prospective.base_version) == Version(spec.base_version): + return False + + # If we've gotten to here, it means that prospective version is both + # less than the spec version *and* it's not a pre-release of the same + # version in the spec. + return True + + @_require_version_compare + def _compare_greater_than(self, prospective, spec): + # Convert our spec to a Version instance, since we'll want to work with + # it as a version. + spec = Version(spec) + + # Check to see if the prospective version is greater than the spec + # version. If it's not we can short circuit and just return False now + # instead of doing extra unneeded work. + if not prospective > spec: + return False + + # This special case is here so that, unless the specifier itself + # includes is a post-release version, that we do not accept + # post-release versions for the version mentioned in the specifier + # (e.g. >3.1 should not match 3.0.post0, but should match 3.2.post0). + if not spec.is_postrelease and prospective.is_postrelease: + if Version(prospective.base_version) == Version(spec.base_version): + return False + + # Ensure that we do not allow a local version of the version mentioned + # in the specifier, which is techincally greater than, to match. + if prospective.local is not None: + if Version(prospective.base_version) == Version(spec.base_version): + return False + + # If we've gotten to here, it means that prospective version is both + # greater than the spec version *and* it's not a pre-release of the + # same version in the spec. + return True + + def _compare_arbitrary(self, prospective, spec): + return str(prospective).lower() == str(spec).lower() + + @property + def prereleases(self): + # If there is an explicit prereleases set for this, then we'll just + # blindly use that. + if self._prereleases is not None: + return self._prereleases + + # Look at all of our specifiers and determine if they are inclusive + # operators, and if they are if they are including an explicit + # prerelease. + operator, version = self._spec + if operator in ["==", ">=", "<=", "~=", "==="]: + # The == specifier can include a trailing .*, if it does we + # want to remove before parsing. + if operator == "==" and version.endswith(".*"): + version = version[:-2] + + # Parse the version, and if it is a pre-release than this + # specifier allows pre-releases. + if parse(version).is_prerelease: + return True + + return False + + @prereleases.setter + def prereleases(self, value): + self._prereleases = value + + +_prefix_regex = re.compile(r"^([0-9]+)((?:a|b|c|rc)[0-9]+)$") + + +def _version_split(version): + result = [] + for item in version.split("."): + match = _prefix_regex.search(item) + if match: + result.extend(match.groups()) + else: + result.append(item) + return result + + +def _pad_version(left, right): + left_split, right_split = [], [] + + # Get the release segment of our versions + left_split.append(list(itertools.takewhile(lambda x: x.isdigit(), left))) + right_split.append(list(itertools.takewhile(lambda x: x.isdigit(), right))) + + # Get the rest of our versions + left_split.append(left[len(left_split):]) + right_split.append(left[len(right_split):]) + + # Insert our padding + left_split.insert( + 1, + ["0"] * max(0, len(right_split[0]) - len(left_split[0])), + ) + right_split.insert( + 1, + ["0"] * max(0, len(left_split[0]) - len(right_split[0])), + ) + + return ( + list(itertools.chain(*left_split)), + list(itertools.chain(*right_split)), + ) + + +class SpecifierSet(BaseSpecifier): + + def __init__(self, specifiers="", prereleases=None): + # Split on , to break each indidivual specifier into it's own item, and + # strip each item to remove leading/trailing whitespace. + specifiers = [s.strip() for s in specifiers.split(",") if s.strip()] + + # Parsed each individual specifier, attempting first to make it a + # Specifier and falling back to a LegacySpecifier. + parsed = set() + for specifier in specifiers: + try: + parsed.add(Specifier(specifier)) + except InvalidSpecifier: + parsed.add(LegacySpecifier(specifier)) + + # Turn our parsed specifiers into a frozen set and save them for later. + self._specs = frozenset(parsed) + + # Store our prereleases value so we can use it later to determine if + # we accept prereleases or not. + self._prereleases = prereleases + + def __repr__(self): + pre = ( + ", prereleases={0!r}".format(self.prereleases) + if self._prereleases is not None + else "" + ) + + return "".format(str(self), pre) + + def __str__(self): + return ",".join(sorted(str(s) for s in self._specs)) + + def __hash__(self): + return hash(self._specs) + + def __and__(self, other): + if isinstance(other, string_types): + other = SpecifierSet(other) + elif not isinstance(other, SpecifierSet): + return NotImplemented + + specifier = SpecifierSet() + specifier._specs = frozenset(self._specs | other._specs) + + if self._prereleases is None and other._prereleases is not None: + specifier._prereleases = other._prereleases + elif self._prereleases is not None and other._prereleases is None: + specifier._prereleases = self._prereleases + elif self._prereleases == other._prereleases: + specifier._prereleases = self._prereleases + else: + raise ValueError( + "Cannot combine SpecifierSets with True and False prerelease " + "overrides." + ) + + return specifier + + def __eq__(self, other): + if isinstance(other, string_types): + other = SpecifierSet(other) + elif isinstance(other, _IndividualSpecifier): + other = SpecifierSet(str(other)) + elif not isinstance(other, SpecifierSet): + return NotImplemented + + return self._specs == other._specs + + def __ne__(self, other): + if isinstance(other, string_types): + other = SpecifierSet(other) + elif isinstance(other, _IndividualSpecifier): + other = SpecifierSet(str(other)) + elif not isinstance(other, SpecifierSet): + return NotImplemented + + return self._specs != other._specs + + def __len__(self): + return len(self._specs) + + def __iter__(self): + return iter(self._specs) + + @property + def prereleases(self): + # If we have been given an explicit prerelease modifier, then we'll + # pass that through here. + if self._prereleases is not None: + return self._prereleases + + # If we don't have any specifiers, and we don't have a forced value, + # then we'll just return None since we don't know if this should have + # pre-releases or not. + if not self._specs: + return None + + # Otherwise we'll see if any of the given specifiers accept + # prereleases, if any of them do we'll return True, otherwise False. + return any(s.prereleases for s in self._specs) + + @prereleases.setter + def prereleases(self, value): + self._prereleases = value + + def __contains__(self, item): + return self.contains(item) + + def contains(self, item, prereleases=None): + # Ensure that our item is a Version or LegacyVersion instance. + if not isinstance(item, (LegacyVersion, Version)): + item = parse(item) + + # Determine if we're forcing a prerelease or not, if we're not forcing + # one for this particular filter call, then we'll use whatever the + # SpecifierSet thinks for whether or not we should support prereleases. + if prereleases is None: + prereleases = self.prereleases + + # We can determine if we're going to allow pre-releases by looking to + # see if any of the underlying items supports them. If none of them do + # and this item is a pre-release then we do not allow it and we can + # short circuit that here. + # Note: This means that 1.0.dev1 would not be contained in something + # like >=1.0.devabc however it would be in >=1.0.debabc,>0.0.dev0 + if not prereleases and item.is_prerelease: + return False + + # We simply dispatch to the underlying specs here to make sure that the + # given version is contained within all of them. + # Note: This use of all() here means that an empty set of specifiers + # will always return True, this is an explicit design decision. + return all( + s.contains(item, prereleases=prereleases) + for s in self._specs + ) + + def filter(self, iterable, prereleases=None): + # Determine if we're forcing a prerelease or not, if we're not forcing + # one for this particular filter call, then we'll use whatever the + # SpecifierSet thinks for whether or not we should support prereleases. + if prereleases is None: + prereleases = self.prereleases + + # If we have any specifiers, then we want to wrap our iterable in the + # filter method for each one, this will act as a logical AND amongst + # each specifier. + if self._specs: + for spec in self._specs: + iterable = spec.filter(iterable, prereleases=bool(prereleases)) + return iterable + # If we do not have any specifiers, then we need to have a rough filter + # which will filter out any pre-releases, unless there are no final + # releases, and which will filter out LegacyVersion in general. + else: + filtered = [] + found_prereleases = [] + + for item in iterable: + # Ensure that we some kind of Version class for this item. + if not isinstance(item, (LegacyVersion, Version)): + parsed_version = parse(item) + else: + parsed_version = item + + # Filter out any item which is parsed as a LegacyVersion + if isinstance(parsed_version, LegacyVersion): + continue + + # Store any item which is a pre-release for later unless we've + # already found a final version or we are accepting prereleases + if parsed_version.is_prerelease and not prereleases: + if not filtered: + found_prereleases.append(item) + else: + filtered.append(item) + + # If we've found no items except for pre-releases, then we'll go + # ahead and use the pre-releases + if not filtered and found_prereleases and prereleases is None: + return found_prereleases + + return filtered diff --git a/Shared/lib/python3.4/site-packages/pkg_resources/_vendor/packaging/version.py b/Shared/lib/python3.4/site-packages/pkg_resources/_vendor/packaging/version.py new file mode 100644 index 0000000..4ba574b --- /dev/null +++ b/Shared/lib/python3.4/site-packages/pkg_resources/_vendor/packaging/version.py @@ -0,0 +1,403 @@ +# Copyright 2014 Donald Stufft +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from __future__ import absolute_import, division, print_function + +import collections +import itertools +import re + +from ._structures import Infinity + + +__all__ = [ + "parse", "Version", "LegacyVersion", "InvalidVersion", "VERSION_PATTERN" +] + + +_Version = collections.namedtuple( + "_Version", + ["epoch", "release", "dev", "pre", "post", "local"], +) + + +def parse(version): + """ + Parse the given version string and return either a :class:`Version` object + or a :class:`LegacyVersion` object depending on if the given version is + a valid PEP 440 version or a legacy version. + """ + try: + return Version(version) + except InvalidVersion: + return LegacyVersion(version) + + +class InvalidVersion(ValueError): + """ + An invalid version was found, users should refer to PEP 440. + """ + + +class _BaseVersion(object): + + def __hash__(self): + return hash(self._key) + + def __lt__(self, other): + return self._compare(other, lambda s, o: s < o) + + def __le__(self, other): + return self._compare(other, lambda s, o: s <= o) + + def __eq__(self, other): + return self._compare(other, lambda s, o: s == o) + + def __ge__(self, other): + return self._compare(other, lambda s, o: s >= o) + + def __gt__(self, other): + return self._compare(other, lambda s, o: s > o) + + def __ne__(self, other): + return self._compare(other, lambda s, o: s != o) + + def _compare(self, other, method): + if not isinstance(other, _BaseVersion): + return NotImplemented + + return method(self._key, other._key) + + +class LegacyVersion(_BaseVersion): + + def __init__(self, version): + self._version = str(version) + self._key = _legacy_cmpkey(self._version) + + def __str__(self): + return self._version + + def __repr__(self): + return "".format(repr(str(self))) + + @property + def public(self): + return self._version + + @property + def base_version(self): + return self._version + + @property + def local(self): + return None + + @property + def is_prerelease(self): + return False + + @property + def is_postrelease(self): + return False + + +_legacy_version_component_re = re.compile( + r"(\d+ | [a-z]+ | \.| -)", re.VERBOSE, +) + +_legacy_version_replacement_map = { + "pre": "c", "preview": "c", "-": "final-", "rc": "c", "dev": "@", +} + + +def _parse_version_parts(s): + for part in _legacy_version_component_re.split(s): + part = _legacy_version_replacement_map.get(part, part) + + if not part or part == ".": + continue + + if part[:1] in "0123456789": + # pad for numeric comparison + yield part.zfill(8) + else: + yield "*" + part + + # ensure that alpha/beta/candidate are before final + yield "*final" + + +def _legacy_cmpkey(version): + # We hardcode an epoch of -1 here. A PEP 440 version can only have a epoch + # greater than or equal to 0. This will effectively put the LegacyVersion, + # which uses the defacto standard originally implemented by setuptools, + # as before all PEP 440 versions. + epoch = -1 + + # This scheme is taken from pkg_resources.parse_version setuptools prior to + # it's adoption of the packaging library. + parts = [] + for part in _parse_version_parts(version.lower()): + if part.startswith("*"): + # remove "-" before a prerelease tag + if part < "*final": + while parts and parts[-1] == "*final-": + parts.pop() + + # remove trailing zeros from each series of numeric parts + while parts and parts[-1] == "00000000": + parts.pop() + + parts.append(part) + parts = tuple(parts) + + return epoch, parts + +# Deliberately not anchored to the start and end of the string, to make it +# easier for 3rd party code to reuse +VERSION_PATTERN = r""" + v? + (?: + (?:(?P[0-9]+)!)? # epoch + (?P[0-9]+(?:\.[0-9]+)*) # release segment + (?P
                                              # pre-release
    +            [-_\.]?
    +            (?P(a|b|c|rc|alpha|beta|pre|preview))
    +            [-_\.]?
    +            (?P[0-9]+)?
    +        )?
    +        (?P                                         # post release
    +            (?:-(?P[0-9]+))
    +            |
    +            (?:
    +                [-_\.]?
    +                (?Ppost|rev|r)
    +                [-_\.]?
    +                (?P[0-9]+)?
    +            )
    +        )?
    +        (?P                                          # dev release
    +            [-_\.]?
    +            (?Pdev)
    +            [-_\.]?
    +            (?P[0-9]+)?
    +        )?
    +    )
    +    (?:\+(?P[a-z0-9]+(?:[-_\.][a-z0-9]+)*))?       # local version
    +"""
    +
    +
    +class Version(_BaseVersion):
    +
    +    _regex = re.compile(
    +        r"^\s*" + VERSION_PATTERN + r"\s*$",
    +        re.VERBOSE | re.IGNORECASE,
    +    )
    +
    +    def __init__(self, version):
    +        # Validate the version and parse it into pieces
    +        match = self._regex.search(version)
    +        if not match:
    +            raise InvalidVersion("Invalid version: '{0}'".format(version))
    +
    +        # Store the parsed out pieces of the version
    +        self._version = _Version(
    +            epoch=int(match.group("epoch")) if match.group("epoch") else 0,
    +            release=tuple(int(i) for i in match.group("release").split(".")),
    +            pre=_parse_letter_version(
    +                match.group("pre_l"),
    +                match.group("pre_n"),
    +            ),
    +            post=_parse_letter_version(
    +                match.group("post_l"),
    +                match.group("post_n1") or match.group("post_n2"),
    +            ),
    +            dev=_parse_letter_version(
    +                match.group("dev_l"),
    +                match.group("dev_n"),
    +            ),
    +            local=_parse_local_version(match.group("local")),
    +        )
    +
    +        # Generate a key which will be used for sorting
    +        self._key = _cmpkey(
    +            self._version.epoch,
    +            self._version.release,
    +            self._version.pre,
    +            self._version.post,
    +            self._version.dev,
    +            self._version.local,
    +        )
    +
    +    def __repr__(self):
    +        return "".format(repr(str(self)))
    +
    +    def __str__(self):
    +        parts = []
    +
    +        # Epoch
    +        if self._version.epoch != 0:
    +            parts.append("{0}!".format(self._version.epoch))
    +
    +        # Release segment
    +        parts.append(".".join(str(x) for x in self._version.release))
    +
    +        # Pre-release
    +        if self._version.pre is not None:
    +            parts.append("".join(str(x) for x in self._version.pre))
    +
    +        # Post-release
    +        if self._version.post is not None:
    +            parts.append(".post{0}".format(self._version.post[1]))
    +
    +        # Development release
    +        if self._version.dev is not None:
    +            parts.append(".dev{0}".format(self._version.dev[1]))
    +
    +        # Local version segment
    +        if self._version.local is not None:
    +            parts.append(
    +                "+{0}".format(".".join(str(x) for x in self._version.local))
    +            )
    +
    +        return "".join(parts)
    +
    +    @property
    +    def public(self):
    +        return str(self).split("+", 1)[0]
    +
    +    @property
    +    def base_version(self):
    +        parts = []
    +
    +        # Epoch
    +        if self._version.epoch != 0:
    +            parts.append("{0}!".format(self._version.epoch))
    +
    +        # Release segment
    +        parts.append(".".join(str(x) for x in self._version.release))
    +
    +        return "".join(parts)
    +
    +    @property
    +    def local(self):
    +        version_string = str(self)
    +        if "+" in version_string:
    +            return version_string.split("+", 1)[1]
    +
    +    @property
    +    def is_prerelease(self):
    +        return bool(self._version.dev or self._version.pre)
    +
    +    @property
    +    def is_postrelease(self):
    +        return bool(self._version.post)
    +
    +
    +def _parse_letter_version(letter, number):
    +    if letter:
    +        # We consider there to be an implicit 0 in a pre-release if there is
    +        # not a numeral associated with it.
    +        if number is None:
    +            number = 0
    +
    +        # We normalize any letters to their lower case form
    +        letter = letter.lower()
    +
    +        # We consider some words to be alternate spellings of other words and
    +        # in those cases we want to normalize the spellings to our preferred
    +        # spelling.
    +        if letter == "alpha":
    +            letter = "a"
    +        elif letter == "beta":
    +            letter = "b"
    +        elif letter in ["c", "pre", "preview"]:
    +            letter = "rc"
    +        elif letter in ["rev", "r"]:
    +            letter = "post"
    +
    +        return letter, int(number)
    +    if not letter and number:
    +        # We assume if we are given a number, but we are not given a letter
    +        # then this is using the implicit post release syntax (e.g. 1.0-1)
    +        letter = "post"
    +
    +        return letter, int(number)
    +
    +
    +_local_version_seperators = re.compile(r"[\._-]")
    +
    +
    +def _parse_local_version(local):
    +    """
    +    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    +    """
    +    if local is not None:
    +        return tuple(
    +            part.lower() if not part.isdigit() else int(part)
    +            for part in _local_version_seperators.split(local)
    +        )
    +
    +
    +def _cmpkey(epoch, release, pre, post, dev, local):
    +    # When we compare a release version, we want to compare it with all of the
    +    # trailing zeros removed. So we'll use a reverse the list, drop all the now
    +    # leading zeros until we come to something non zero, then take the rest
    +    # re-reverse it back into the correct order and make it a tuple and use
    +    # that for our sorting key.
    +    release = tuple(
    +        reversed(list(
    +            itertools.dropwhile(
    +                lambda x: x == 0,
    +                reversed(release),
    +            )
    +        ))
    +    )
    +
    +    # We need to "trick" the sorting algorithm to put 1.0.dev0 before 1.0a0.
    +    # We'll do this by abusing the pre segment, but we _only_ want to do this
    +    # if there is not a pre or a post segment. If we have one of those then
    +    # the normal sorting rules will handle this case correctly.
    +    if pre is None and post is None and dev is not None:
    +        pre = -Infinity
    +    # Versions without a pre-release (except as noted above) should sort after
    +    # those with one.
    +    elif pre is None:
    +        pre = Infinity
    +
    +    # Versions without a post segment should sort before those with one.
    +    if post is None:
    +        post = -Infinity
    +
    +    # Versions without a development segment should sort after those with one.
    +    if dev is None:
    +        dev = Infinity
    +
    +    if local is None:
    +        # Versions without a local segment should sort before those with one.
    +        local = -Infinity
    +    else:
    +        # Versions with a local segment need that segment parsed to implement
    +        # the sorting rules in PEP440.
    +        # - Alpha numeric segments sort before numeric segments
    +        # - Alpha numeric segments sort lexicographically
    +        # - Numeric segments sort numerically
    +        # - Shorter versions sort before longer versions when the prefixes
    +        #   match exactly
    +        local = tuple(
    +            (i, "") if isinstance(i, int) else (-Infinity, i)
    +            for i in local
    +        )
    +
    +    return epoch, release, pre, post, dev, local
    diff --git a/Shared/lib/python3.4/site-packages/python_stdnum-0.9.egg-info/installed-files.txt b/Shared/lib/python3.4/site-packages/python_stdnum-0.9.egg-info/installed-files.txt
    index f6c15c3..611ae1a 100644
    --- a/Shared/lib/python3.4/site-packages/python_stdnum-0.9.egg-info/installed-files.txt
    +++ b/Shared/lib/python3.4/site-packages/python_stdnum-0.9.egg-info/installed-files.txt
    @@ -1,228 +1,228 @@
    -../stdnum/meid.py
    -../stdnum/imei.py
    -../stdnum/verhoeff.py
    -../stdnum/iban.py
    -../stdnum/grid.py
    -../stdnum/__init__.py
    -../stdnum/exceptions.py
    -../stdnum/ismn.py
    -../stdnum/imsi.py
    -../stdnum/isan.py
    -../stdnum/isbn.py
    -../stdnum/issn.py
    -../stdnum/isil.py
    -../stdnum/numdb.py
     ../stdnum/luhn.py
    -../stdnum/ean.py
    +../stdnum/isil.py
    +../stdnum/exceptions.py
    +../stdnum/verhoeff.py
    +../stdnum/meid.py
    +../stdnum/iban.py
    +../stdnum/imei.py
    +../stdnum/ismn.py
    +../stdnum/__init__.py
    +../stdnum/numdb.py
    +../stdnum/issn.py
    +../stdnum/isan.py
     ../stdnum/util.py
    -../stdnum/bg/pnf.py
    -../stdnum/bg/egn.py
    -../stdnum/bg/__init__.py
    -../stdnum/bg/vat.py
    -../stdnum/at/__init__.py
    +../stdnum/grid.py
    +../stdnum/isbn.py
    +../stdnum/imsi.py
    +../stdnum/ean.py
    +../stdnum/ro/__init__.py
    +../stdnum/ro/cf.py
    +../stdnum/ro/cnp.py
    +../stdnum/dk/cpr.py
    +../stdnum/dk/__init__.py
    +../stdnum/dk/cvr.py
    +../stdnum/cz/rc.py
    +../stdnum/cz/__init__.py
    +../stdnum/cz/dic.py
     ../stdnum/at/uid.py
    -../stdnum/lv/pvn.py
    -../stdnum/lv/__init__.py
    +../stdnum/at/__init__.py
    +../stdnum/gb/__init__.py
    +../stdnum/gb/vat.py
    +../stdnum/nl/bsn.py
    +../stdnum/nl/postcode.py
    +../stdnum/nl/onderwijsnummer.py
    +../stdnum/nl/__init__.py
    +../stdnum/nl/brin.py
    +../stdnum/nl/btw.py
    +../stdnum/de/__init__.py
    +../stdnum/de/vat.py
    +../stdnum/se/__init__.py
    +../stdnum/se/vat.py
    +../stdnum/cy/__init__.py
    +../stdnum/cy/vat.py
    +../stdnum/hu/__init__.py
    +../stdnum/hu/anum.py
     ../stdnum/ie/pps.py
     ../stdnum/ie/__init__.py
     ../stdnum/ie/vat.py
    -../stdnum/gr/__init__.py
    -../stdnum/gr/vat.py
    -../stdnum/br/cpf.py
    -../stdnum/br/__init__.py
    -../stdnum/ee/__init__.py
    -../stdnum/ee/kmkr.py
    -../stdnum/eu/__init__.py
    -../stdnum/eu/vat.py
    -../stdnum/pl/__init__.py
    -../stdnum/pl/nip.py
    -../stdnum/fr/tva.py
    -../stdnum/fr/__init__.py
    -../stdnum/fr/siren.py
    -../stdnum/ro/__init__.py
    -../stdnum/ro/cnp.py
    -../stdnum/ro/cf.py
    -../stdnum/es/__init__.py
    -../stdnum/es/nif.py
    -../stdnum/es/nie.py
    -../stdnum/es/dni.py
    -../stdnum/es/cif.py
    -../stdnum/mt/__init__.py
    -../stdnum/mt/vat.py
    -../stdnum/dk/__init__.py
    -../stdnum/dk/cpr.py
    -../stdnum/dk/cvr.py
    -../stdnum/it/__init__.py
    -../stdnum/it/iva.py
    +../stdnum/lv/__init__.py
    +../stdnum/lv/pvn.py
     ../stdnum/be/__init__.py
     ../stdnum/be/vat.py
    -../stdnum/iso7064/mod_11_10.py
    -../stdnum/iso7064/__init__.py
    -../stdnum/iso7064/mod_37_36.py
    -../stdnum/iso7064/mod_11_2.py
    -../stdnum/iso7064/mod_97_10.py
    -../stdnum/iso7064/mod_37_2.py
    -../stdnum/lt/__init__.py
    +../stdnum/hr/__init__.py
    +../stdnum/hr/oib.py
    +../stdnum/my/__init__.py
    +../stdnum/my/nric.py
     ../stdnum/lt/pvm.py
    +../stdnum/lt/__init__.py
    +../stdnum/ee/kmkr.py
    +../stdnum/ee/__init__.py
    +../stdnum/gr/__init__.py
    +../stdnum/gr/vat.py
    +../stdnum/es/nie.py
    +../stdnum/es/__init__.py
    +../stdnum/es/nif.py
    +../stdnum/es/dni.py
    +../stdnum/es/cif.py
    +../stdnum/bg/egn.py
    +../stdnum/bg/__init__.py
    +../stdnum/bg/pnf.py
    +../stdnum/bg/vat.py
     ../stdnum/fi/hetu.py
     ../stdnum/fi/__init__.py
     ../stdnum/fi/alv.py
    -../stdnum/si/__init__.py
    -../stdnum/si/ddv.py
    -../stdnum/se/__init__.py
    -../stdnum/se/vat.py
    -../stdnum/my/__init__.py
    -../stdnum/my/nric.py
    -../stdnum/nl/__init__.py
    -../stdnum/nl/btw.py
    -../stdnum/nl/onderwijsnummer.py
    -../stdnum/nl/bsn.py
    -../stdnum/nl/brin.py
    -../stdnum/nl/postcode.py
    -../stdnum/hr/oib.py
    -../stdnum/hr/__init__.py
    -../stdnum/hu/__init__.py
    -../stdnum/hu/anum.py
    +../stdnum/pt/__init__.py
    +../stdnum/pt/nif.py
    +../stdnum/iso7064/mod_37_2.py
    +../stdnum/iso7064/mod_37_36.py
    +../stdnum/iso7064/__init__.py
    +../stdnum/iso7064/mod_11_10.py
    +../stdnum/iso7064/mod_97_10.py
    +../stdnum/iso7064/mod_11_2.py
    +../stdnum/br/__init__.py
    +../stdnum/br/cpf.py
    +../stdnum/eu/__init__.py
    +../stdnum/eu/vat.py
    +../stdnum/us/ein.py
     ../stdnum/us/tin.py
    +../stdnum/us/ssn.py
     ../stdnum/us/ptin.py
     ../stdnum/us/__init__.py
     ../stdnum/us/atin.py
    -../stdnum/us/ein.py
     ../stdnum/us/itin.py
    -../stdnum/us/ssn.py
    -../stdnum/gb/__init__.py
    -../stdnum/gb/vat.py
    -../stdnum/de/__init__.py
    -../stdnum/de/vat.py
    -../stdnum/cz/__init__.py
    -../stdnum/cz/rc.py
    -../stdnum/cz/dic.py
    -../stdnum/sk/__init__.py
    -../stdnum/sk/rc.py
    +../stdnum/pl/nip.py
    +../stdnum/pl/__init__.py
    +../stdnum/fr/siren.py
    +../stdnum/fr/tva.py
    +../stdnum/fr/__init__.py
     ../stdnum/sk/dph.py
    -../stdnum/pt/__init__.py
    -../stdnum/pt/nif.py
    +../stdnum/sk/rc.py
    +../stdnum/sk/__init__.py
     ../stdnum/lu/tva.py
     ../stdnum/lu/__init__.py
    -../stdnum/cy/__init__.py
    -../stdnum/cy/vat.py
    -../stdnum/isbn.dat
    -../stdnum/iban.dat
    -../stdnum/isil.dat
    +../stdnum/it/iva.py
    +../stdnum/it/__init__.py
    +../stdnum/mt/__init__.py
    +../stdnum/mt/vat.py
    +../stdnum/si/__init__.py
    +../stdnum/si/ddv.py
     ../stdnum/imsi.dat
    +../stdnum/isbn.dat
    +../stdnum/isil.dat
    +../stdnum/iban.dat
     ../stdnum/my/bp.dat
     ../stdnum/us/ein.dat
    -../stdnum/__pycache__/meid.cpython-34.pyc
    -../stdnum/__pycache__/imei.cpython-34.pyc
    -../stdnum/__pycache__/verhoeff.cpython-34.pyc
    -../stdnum/__pycache__/iban.cpython-34.pyc
    -../stdnum/__pycache__/grid.cpython-34.pyc
    -../stdnum/__pycache__/__init__.cpython-34.pyc
    -../stdnum/__pycache__/exceptions.cpython-34.pyc
    -../stdnum/__pycache__/ismn.cpython-34.pyc
    -../stdnum/__pycache__/imsi.cpython-34.pyc
    -../stdnum/__pycache__/isan.cpython-34.pyc
    -../stdnum/__pycache__/isbn.cpython-34.pyc
    -../stdnum/__pycache__/issn.cpython-34.pyc
    -../stdnum/__pycache__/isil.cpython-34.pyc
    -../stdnum/__pycache__/numdb.cpython-34.pyc
     ../stdnum/__pycache__/luhn.cpython-34.pyc
    -../stdnum/__pycache__/ean.cpython-34.pyc
    +../stdnum/__pycache__/isil.cpython-34.pyc
    +../stdnum/__pycache__/exceptions.cpython-34.pyc
    +../stdnum/__pycache__/verhoeff.cpython-34.pyc
    +../stdnum/__pycache__/meid.cpython-34.pyc
    +../stdnum/__pycache__/iban.cpython-34.pyc
    +../stdnum/__pycache__/imei.cpython-34.pyc
    +../stdnum/__pycache__/ismn.cpython-34.pyc
    +../stdnum/__pycache__/__init__.cpython-34.pyc
    +../stdnum/__pycache__/numdb.cpython-34.pyc
    +../stdnum/__pycache__/issn.cpython-34.pyc
    +../stdnum/__pycache__/isan.cpython-34.pyc
     ../stdnum/__pycache__/util.cpython-34.pyc
    -../stdnum/bg/__pycache__/pnf.cpython-34.pyc
    -../stdnum/bg/__pycache__/egn.cpython-34.pyc
    -../stdnum/bg/__pycache__/__init__.cpython-34.pyc
    -../stdnum/bg/__pycache__/vat.cpython-34.pyc
    -../stdnum/at/__pycache__/__init__.cpython-34.pyc
    +../stdnum/__pycache__/grid.cpython-34.pyc
    +../stdnum/__pycache__/isbn.cpython-34.pyc
    +../stdnum/__pycache__/imsi.cpython-34.pyc
    +../stdnum/__pycache__/ean.cpython-34.pyc
    +../stdnum/ro/__pycache__/__init__.cpython-34.pyc
    +../stdnum/ro/__pycache__/cf.cpython-34.pyc
    +../stdnum/ro/__pycache__/cnp.cpython-34.pyc
    +../stdnum/dk/__pycache__/cpr.cpython-34.pyc
    +../stdnum/dk/__pycache__/__init__.cpython-34.pyc
    +../stdnum/dk/__pycache__/cvr.cpython-34.pyc
    +../stdnum/cz/__pycache__/rc.cpython-34.pyc
    +../stdnum/cz/__pycache__/__init__.cpython-34.pyc
    +../stdnum/cz/__pycache__/dic.cpython-34.pyc
     ../stdnum/at/__pycache__/uid.cpython-34.pyc
    -../stdnum/lv/__pycache__/pvn.cpython-34.pyc
    -../stdnum/lv/__pycache__/__init__.cpython-34.pyc
    +../stdnum/at/__pycache__/__init__.cpython-34.pyc
    +../stdnum/gb/__pycache__/__init__.cpython-34.pyc
    +../stdnum/gb/__pycache__/vat.cpython-34.pyc
    +../stdnum/nl/__pycache__/bsn.cpython-34.pyc
    +../stdnum/nl/__pycache__/postcode.cpython-34.pyc
    +../stdnum/nl/__pycache__/onderwijsnummer.cpython-34.pyc
    +../stdnum/nl/__pycache__/__init__.cpython-34.pyc
    +../stdnum/nl/__pycache__/brin.cpython-34.pyc
    +../stdnum/nl/__pycache__/btw.cpython-34.pyc
    +../stdnum/de/__pycache__/__init__.cpython-34.pyc
    +../stdnum/de/__pycache__/vat.cpython-34.pyc
    +../stdnum/se/__pycache__/__init__.cpython-34.pyc
    +../stdnum/se/__pycache__/vat.cpython-34.pyc
    +../stdnum/cy/__pycache__/__init__.cpython-34.pyc
    +../stdnum/cy/__pycache__/vat.cpython-34.pyc
    +../stdnum/hu/__pycache__/__init__.cpython-34.pyc
    +../stdnum/hu/__pycache__/anum.cpython-34.pyc
     ../stdnum/ie/__pycache__/pps.cpython-34.pyc
     ../stdnum/ie/__pycache__/__init__.cpython-34.pyc
     ../stdnum/ie/__pycache__/vat.cpython-34.pyc
    -../stdnum/gr/__pycache__/__init__.cpython-34.pyc
    -../stdnum/gr/__pycache__/vat.cpython-34.pyc
    -../stdnum/br/__pycache__/cpf.cpython-34.pyc
    -../stdnum/br/__pycache__/__init__.cpython-34.pyc
    -../stdnum/ee/__pycache__/__init__.cpython-34.pyc
    -../stdnum/ee/__pycache__/kmkr.cpython-34.pyc
    -../stdnum/eu/__pycache__/__init__.cpython-34.pyc
    -../stdnum/eu/__pycache__/vat.cpython-34.pyc
    -../stdnum/pl/__pycache__/__init__.cpython-34.pyc
    -../stdnum/pl/__pycache__/nip.cpython-34.pyc
    -../stdnum/fr/__pycache__/tva.cpython-34.pyc
    -../stdnum/fr/__pycache__/__init__.cpython-34.pyc
    -../stdnum/fr/__pycache__/siren.cpython-34.pyc
    -../stdnum/ro/__pycache__/__init__.cpython-34.pyc
    -../stdnum/ro/__pycache__/cnp.cpython-34.pyc
    -../stdnum/ro/__pycache__/cf.cpython-34.pyc
    -../stdnum/es/__pycache__/__init__.cpython-34.pyc
    -../stdnum/es/__pycache__/nif.cpython-34.pyc
    -../stdnum/es/__pycache__/nie.cpython-34.pyc
    -../stdnum/es/__pycache__/dni.cpython-34.pyc
    -../stdnum/es/__pycache__/cif.cpython-34.pyc
    -../stdnum/mt/__pycache__/__init__.cpython-34.pyc
    -../stdnum/mt/__pycache__/vat.cpython-34.pyc
    -../stdnum/dk/__pycache__/__init__.cpython-34.pyc
    -../stdnum/dk/__pycache__/cpr.cpython-34.pyc
    -../stdnum/dk/__pycache__/cvr.cpython-34.pyc
    -../stdnum/it/__pycache__/__init__.cpython-34.pyc
    -../stdnum/it/__pycache__/iva.cpython-34.pyc
    +../stdnum/lv/__pycache__/__init__.cpython-34.pyc
    +../stdnum/lv/__pycache__/pvn.cpython-34.pyc
     ../stdnum/be/__pycache__/__init__.cpython-34.pyc
     ../stdnum/be/__pycache__/vat.cpython-34.pyc
    -../stdnum/iso7064/__pycache__/mod_11_10.cpython-34.pyc
    -../stdnum/iso7064/__pycache__/__init__.cpython-34.pyc
    -../stdnum/iso7064/__pycache__/mod_37_36.cpython-34.pyc
    -../stdnum/iso7064/__pycache__/mod_11_2.cpython-34.pyc
    -../stdnum/iso7064/__pycache__/mod_97_10.cpython-34.pyc
    -../stdnum/iso7064/__pycache__/mod_37_2.cpython-34.pyc
    -../stdnum/lt/__pycache__/__init__.cpython-34.pyc
    +../stdnum/hr/__pycache__/__init__.cpython-34.pyc
    +../stdnum/hr/__pycache__/oib.cpython-34.pyc
    +../stdnum/my/__pycache__/__init__.cpython-34.pyc
    +../stdnum/my/__pycache__/nric.cpython-34.pyc
     ../stdnum/lt/__pycache__/pvm.cpython-34.pyc
    +../stdnum/lt/__pycache__/__init__.cpython-34.pyc
    +../stdnum/ee/__pycache__/kmkr.cpython-34.pyc
    +../stdnum/ee/__pycache__/__init__.cpython-34.pyc
    +../stdnum/gr/__pycache__/__init__.cpython-34.pyc
    +../stdnum/gr/__pycache__/vat.cpython-34.pyc
    +../stdnum/es/__pycache__/nie.cpython-34.pyc
    +../stdnum/es/__pycache__/__init__.cpython-34.pyc
    +../stdnum/es/__pycache__/nif.cpython-34.pyc
    +../stdnum/es/__pycache__/dni.cpython-34.pyc
    +../stdnum/es/__pycache__/cif.cpython-34.pyc
    +../stdnum/bg/__pycache__/egn.cpython-34.pyc
    +../stdnum/bg/__pycache__/__init__.cpython-34.pyc
    +../stdnum/bg/__pycache__/pnf.cpython-34.pyc
    +../stdnum/bg/__pycache__/vat.cpython-34.pyc
     ../stdnum/fi/__pycache__/hetu.cpython-34.pyc
     ../stdnum/fi/__pycache__/__init__.cpython-34.pyc
     ../stdnum/fi/__pycache__/alv.cpython-34.pyc
    -../stdnum/si/__pycache__/__init__.cpython-34.pyc
    -../stdnum/si/__pycache__/ddv.cpython-34.pyc
    -../stdnum/se/__pycache__/__init__.cpython-34.pyc
    -../stdnum/se/__pycache__/vat.cpython-34.pyc
    -../stdnum/my/__pycache__/__init__.cpython-34.pyc
    -../stdnum/my/__pycache__/nric.cpython-34.pyc
    -../stdnum/nl/__pycache__/__init__.cpython-34.pyc
    -../stdnum/nl/__pycache__/btw.cpython-34.pyc
    -../stdnum/nl/__pycache__/onderwijsnummer.cpython-34.pyc
    -../stdnum/nl/__pycache__/bsn.cpython-34.pyc
    -../stdnum/nl/__pycache__/brin.cpython-34.pyc
    -../stdnum/nl/__pycache__/postcode.cpython-34.pyc
    -../stdnum/hr/__pycache__/oib.cpython-34.pyc
    -../stdnum/hr/__pycache__/__init__.cpython-34.pyc
    -../stdnum/hu/__pycache__/__init__.cpython-34.pyc
    -../stdnum/hu/__pycache__/anum.cpython-34.pyc
    +../stdnum/pt/__pycache__/__init__.cpython-34.pyc
    +../stdnum/pt/__pycache__/nif.cpython-34.pyc
    +../stdnum/iso7064/__pycache__/mod_37_2.cpython-34.pyc
    +../stdnum/iso7064/__pycache__/mod_37_36.cpython-34.pyc
    +../stdnum/iso7064/__pycache__/__init__.cpython-34.pyc
    +../stdnum/iso7064/__pycache__/mod_11_10.cpython-34.pyc
    +../stdnum/iso7064/__pycache__/mod_97_10.cpython-34.pyc
    +../stdnum/iso7064/__pycache__/mod_11_2.cpython-34.pyc
    +../stdnum/br/__pycache__/__init__.cpython-34.pyc
    +../stdnum/br/__pycache__/cpf.cpython-34.pyc
    +../stdnum/eu/__pycache__/__init__.cpython-34.pyc
    +../stdnum/eu/__pycache__/vat.cpython-34.pyc
    +../stdnum/us/__pycache__/ein.cpython-34.pyc
     ../stdnum/us/__pycache__/tin.cpython-34.pyc
    +../stdnum/us/__pycache__/ssn.cpython-34.pyc
     ../stdnum/us/__pycache__/ptin.cpython-34.pyc
     ../stdnum/us/__pycache__/__init__.cpython-34.pyc
     ../stdnum/us/__pycache__/atin.cpython-34.pyc
    -../stdnum/us/__pycache__/ein.cpython-34.pyc
     ../stdnum/us/__pycache__/itin.cpython-34.pyc
    -../stdnum/us/__pycache__/ssn.cpython-34.pyc
    -../stdnum/gb/__pycache__/__init__.cpython-34.pyc
    -../stdnum/gb/__pycache__/vat.cpython-34.pyc
    -../stdnum/de/__pycache__/__init__.cpython-34.pyc
    -../stdnum/de/__pycache__/vat.cpython-34.pyc
    -../stdnum/cz/__pycache__/__init__.cpython-34.pyc
    -../stdnum/cz/__pycache__/rc.cpython-34.pyc
    -../stdnum/cz/__pycache__/dic.cpython-34.pyc
    -../stdnum/sk/__pycache__/__init__.cpython-34.pyc
    -../stdnum/sk/__pycache__/rc.cpython-34.pyc
    +../stdnum/pl/__pycache__/nip.cpython-34.pyc
    +../stdnum/pl/__pycache__/__init__.cpython-34.pyc
    +../stdnum/fr/__pycache__/siren.cpython-34.pyc
    +../stdnum/fr/__pycache__/tva.cpython-34.pyc
    +../stdnum/fr/__pycache__/__init__.cpython-34.pyc
     ../stdnum/sk/__pycache__/dph.cpython-34.pyc
    -../stdnum/pt/__pycache__/__init__.cpython-34.pyc
    -../stdnum/pt/__pycache__/nif.cpython-34.pyc
    +../stdnum/sk/__pycache__/rc.cpython-34.pyc
    +../stdnum/sk/__pycache__/__init__.cpython-34.pyc
     ../stdnum/lu/__pycache__/tva.cpython-34.pyc
     ../stdnum/lu/__pycache__/__init__.cpython-34.pyc
    -../stdnum/cy/__pycache__/__init__.cpython-34.pyc
    -../stdnum/cy/__pycache__/vat.cpython-34.pyc
    +../stdnum/it/__pycache__/iva.cpython-34.pyc
    +../stdnum/it/__pycache__/__init__.cpython-34.pyc
    +../stdnum/mt/__pycache__/__init__.cpython-34.pyc
    +../stdnum/mt/__pycache__/vat.cpython-34.pyc
    +../stdnum/si/__pycache__/__init__.cpython-34.pyc
    +../stdnum/si/__pycache__/ddv.cpython-34.pyc
     ./
    -dependency_links.txt
    +top_level.txt
     PKG-INFO
     SOURCES.txt
    -top_level.txt
     requires.txt
    +dependency_links.txt
    diff --git a/Shared/lib/python3.4/site-packages/requests-2.3.0.dist-info/RECORD b/Shared/lib/python3.4/site-packages/requests-2.3.0.dist-info/RECORD
    index 88fe4cc..da61403 100644
    --- a/Shared/lib/python3.4/site-packages/requests-2.3.0.dist-info/RECORD
    +++ b/Shared/lib/python3.4/site-packages/requests-2.3.0.dist-info/RECORD
    @@ -83,81 +83,81 @@ requests-2.3.0.dist-info/pydist.json,sha256=7nySdPrVYYyJK2C3cPlHJr1oSZ_-lFiBlp9D
     requests-2.3.0.dist-info/RECORD,,
     requests-2.3.0.dist-info/top_level.txt,sha256=fMSVmHfb5rbGOo6xv-O_tUX6j-WyixssE-SnwcDRxNQ,9
     requests-2.3.0.dist-info/WHEEL,sha256=SXYYsi-y-rEGIva8sB8iKF6bAFD6YDhmqHX5hI3fc0o,110
    -requests/packages/chardet/__pycache__/__init__.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/mbcsgroupprober.cpython-34.pyc,,
    -requests/packages/urllib3/packages/__pycache__/__init__.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/escprober.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/jisfreq.cpython-34.pyc,,
    -requests/packages/urllib3/__pycache__/fields.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/euckrfreq.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/universaldetector.cpython-34.pyc,,
    -requests/packages/urllib3/util/__pycache__/connection.cpython-34.pyc,,
    -requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-34.pyc,,
    -requests/packages/urllib3/util/__pycache__/__init__.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/eucjpprober.cpython-34.pyc,,
    -requests/packages/urllib3/__pycache__/request.cpython-34.pyc,,
    -requests/packages/urllib3/__pycache__/exceptions.cpython-34.pyc,,
    -requests/__pycache__/status_codes.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/chardistribution.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/langhebrewmodel.cpython-34.pyc,,
    -requests/packages/urllib3/__pycache__/connection.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/big5freq.cpython-34.pyc,,
    -requests/packages/urllib3/contrib/__pycache__/ntlmpool.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/euckrprober.cpython-34.pyc,,
    -requests/packages/__pycache__/__init__.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/euctwfreq.cpython-34.pyc,,
     requests/packages/chardet/__pycache__/sbcsgroupprober.cpython-34.pyc,,
    -requests/__pycache__/hooks.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/sjisprober.cpython-34.pyc,,
    -requests/__pycache__/structures.cpython-34.pyc,,
    -requests/packages/urllib3/util/__pycache__/url.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/langthaimodel.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/gb2312prober.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/cp949prober.cpython-34.pyc,,
    -requests/__pycache__/models.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/chardetect.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/gb2312freq.cpython-34.pyc,,
    -requests/__pycache__/auth.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/euctwprober.cpython-34.pyc,,
    -requests/packages/urllib3/util/__pycache__/response.cpython-34.pyc,,
    -requests/packages/urllib3/packages/__pycache__/six.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/sbcharsetprober.cpython-34.pyc,,
    -requests/__pycache__/utils.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/hebrewprober.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/codingstatemachine.cpython-34.pyc,,
    -requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-34.pyc,,
    -requests/__pycache__/api.cpython-34.pyc,,
    -requests/packages/urllib3/util/__pycache__/ssl_.cpython-34.pyc,,
    -requests/__pycache__/adapters.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/mbcssm.cpython-34.pyc,,
    -requests/packages/urllib3/util/__pycache__/timeout.cpython-34.pyc,,
    -requests/packages/urllib3/__pycache__/_collections.cpython-34.pyc,,
    -requests/packages/urllib3/__pycache__/poolmanager.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/constants.cpython-34.pyc,,
    -requests/packages/urllib3/contrib/__pycache__/__init__.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/charsetprober.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/big5prober.cpython-34.pyc,,
    -requests/__pycache__/sessions.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/charsetgroupprober.cpython-34.pyc,,
    -requests/__pycache__/compat.cpython-34.pyc,,
    -requests/packages/urllib3/__pycache__/response.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/escsm.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/langbulgarianmodel.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/mbcharsetprober.cpython-34.pyc,,
    -requests/__pycache__/exceptions.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/utf8prober.cpython-34.pyc,,
     requests/packages/chardet/__pycache__/compat.cpython-34.pyc,,
    -requests/packages/urllib3/packages/__pycache__/ordered_dict.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/jpcntx.cpython-34.pyc,,
    -requests/packages/urllib3/util/__pycache__/request.cpython-34.pyc,,
    -requests/__pycache__/cookies.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/latin1prober.cpython-34.pyc,,
    -requests/packages/urllib3/__pycache__/filepost.cpython-34.pyc,,
    -requests/packages/urllib3/__pycache__/connectionpool.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/langcyrillicmodel.cpython-34.pyc,,
    -requests/packages/urllib3/contrib/__pycache__/pyopenssl.cpython-34.pyc,,
    -requests/packages/chardet/__pycache__/langhungarianmodel.cpython-34.pyc,,
    -requests/__pycache__/certs.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/big5prober.cpython-34.pyc,,
    +requests/packages/urllib3/util/__pycache__/connection.cpython-34.pyc,,
    +requests/packages/urllib3/util/__pycache__/ssl_.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/chardistribution.cpython-34.pyc,,
    +requests/packages/urllib3/__pycache__/connection.cpython-34.pyc,,
    +requests/packages/urllib3/util/__pycache__/timeout.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/utf8prober.cpython-34.pyc,,
    +requests/packages/urllib3/__pycache__/_collections.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/escsm.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/__init__.cpython-34.pyc,,
     requests/packages/urllib3/__pycache__/__init__.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/jisfreq.cpython-34.pyc,,
    +requests/packages/urllib3/packages/__pycache__/six.cpython-34.pyc,,
    +requests/__pycache__/hooks.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/mbcssm.cpython-34.pyc,,
    +requests/packages/urllib3/util/__pycache__/__init__.cpython-34.pyc,,
    +requests/packages/urllib3/__pycache__/poolmanager.cpython-34.pyc,,
    +requests/packages/urllib3/util/__pycache__/url.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/constants.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/langhebrewmodel.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/latin1prober.cpython-34.pyc,,
    +requests/__pycache__/sessions.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/euctwfreq.cpython-34.pyc,,
    +requests/__pycache__/certs.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/euckrprober.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/universaldetector.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/langbulgarianmodel.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/langhungarianmodel.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/codingstatemachine.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/jpcntx.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/chardetect.cpython-34.pyc,,
    +requests/__pycache__/exceptions.cpython-34.pyc,,
    +requests/__pycache__/compat.cpython-34.pyc,,
    +requests/packages/urllib3/__pycache__/fields.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/sbcharsetprober.cpython-34.pyc,,
    +requests/__pycache__/api.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/hebrewprober.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/big5freq.cpython-34.pyc,,
    +requests/packages/urllib3/packages/__pycache__/ordered_dict.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/euckrfreq.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/langthaimodel.cpython-34.pyc,,
    +requests/packages/urllib3/packages/__pycache__/__init__.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/eucjpprober.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/gb2312freq.cpython-34.pyc,,
    +requests/packages/urllib3/util/__pycache__/response.cpython-34.pyc,,
    +requests/packages/urllib3/contrib/__pycache__/ntlmpool.cpython-34.pyc,,
    +requests/__pycache__/status_codes.cpython-34.pyc,,
    +requests/__pycache__/models.cpython-34.pyc,,
     requests/__pycache__/__init__.cpython-34.pyc,,
    +requests/__pycache__/adapters.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/escprober.cpython-34.pyc,,
    +requests/packages/urllib3/contrib/__pycache__/__init__.cpython-34.pyc,,
    +requests/__pycache__/structures.cpython-34.pyc,,
    +requests/packages/urllib3/__pycache__/response.cpython-34.pyc,,
    +requests/packages/urllib3/__pycache__/exceptions.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/sjisprober.cpython-34.pyc,,
    +requests/packages/urllib3/util/__pycache__/request.cpython-34.pyc,,
    +requests/packages/urllib3/__pycache__/filepost.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/charsetprober.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/langcyrillicmodel.cpython-34.pyc,,
    +requests/__pycache__/cookies.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/charsetgroupprober.cpython-34.pyc,,
    +requests/packages/__pycache__/__init__.cpython-34.pyc,,
    +requests/packages/urllib3/__pycache__/connectionpool.cpython-34.pyc,,
    +requests/packages/urllib3/contrib/__pycache__/pyopenssl.cpython-34.pyc,,
     requests/packages/chardet/__pycache__/langgreekmodel.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/mbcsgroupprober.cpython-34.pyc,,
    +requests/__pycache__/auth.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/cp949prober.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/gb2312prober.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/mbcharsetprober.cpython-34.pyc,,
    +requests/packages/urllib3/__pycache__/request.cpython-34.pyc,,
    +requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-34.pyc,,
    +requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-34.pyc,,
    +requests/__pycache__/utils.cpython-34.pyc,,
    +requests/packages/chardet/__pycache__/euctwprober.cpython-34.pyc,,
    diff --git a/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/DESCRIPTION.rst b/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/DESCRIPTION.rst
    new file mode 100644
    index 0000000..c6b6a1c
    --- /dev/null
    +++ b/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/DESCRIPTION.rst
    @@ -0,0 +1,238 @@
    +===============================
    +Installing and Using Setuptools
    +===============================
    +
    +.. contents:: **Table of Contents**
    +
    +
    +`Change History `_.
    +
    +-------------------------
    +Installation Instructions
    +-------------------------
    +
    +The recommended way to bootstrap setuptools on any system is to download
    +`ez_setup.py`_ and run it using the target Python environment. Different
    +operating systems have different recommended techniques to accomplish this
    +basic routine, so below are some examples to get you started.
    +
    +Setuptools requires Python 2.6 or later. To install setuptools
    +on Python 2.4 or Python 2.5, use the `bootstrap script for Setuptools 1.x
    +`_.
    +
    +The link provided to ez_setup.py is a bookmark to bootstrap script for the
    +latest known stable release.
    +
    +.. _ez_setup.py: https://bootstrap.pypa.io/ez_setup.py
    +
    +Windows (Powershell 3 or later)
    +===============================
    +
    +For best results, uninstall previous versions FIRST (see `Uninstalling`_).
    +
    +Using Windows 8 (which includes PowerShell 3) or earlier versions of Windows
    +with PowerShell 3 installed, it's possible to install with one simple
    +Powershell command. Start up Powershell and paste this command::
    +
    +    > (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python -
    +
    +You must start the Powershell with Administrative privileges or you may choose
    +to install a user-local installation::
    +
    +    > (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python - --user
    +
    +If you have Python 3.3 or later, you can use the ``py`` command to install to
    +different Python versions. For example, to install to Python 3.3 if you have
    +Python 2.7 installed::
    +
    +    > (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | py -3 -
    +
    +The recommended way to install setuptools on Windows is to download
    +`ez_setup.py`_ and run it. The script will download the appropriate
    +distribution file and install it for you.
    +
    +Once installation is complete, you will find an ``easy_install`` program in
    +your Python ``Scripts`` subdirectory.  For simple invocation and best results,
    +add this directory to your ``PATH`` environment variable, if it is not already
    +present. If you did a user-local install, the ``Scripts`` subdirectory is
    +``$env:APPDATA\Python\Scripts``.
    +
    +
    +Windows (simplified)
    +====================
    +
    +For Windows without PowerShell 3 or for installation without a command-line,
    +download `ez_setup.py`_ using your preferred web browser or other technique
    +and "run" that file.
    +
    +
    +Unix (wget)
    +===========
    +
    +Most Linux distributions come with wget.
    +
    +Download `ez_setup.py`_ and run it using the target Python version. The script
    +will download the appropriate version and install it for you::
    +
    +    > wget https://bootstrap.pypa.io/ez_setup.py -O - | python
    +
    +Note that you will may need to invoke the command with superuser privileges to
    +install to the system Python::
    +
    +    > wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
    +
    +Alternatively, Setuptools may be installed to a user-local path::
    +
    +    > wget https://bootstrap.pypa.io/ez_setup.py -O - | python - --user
    +
    +Note that on some older systems (noted on Debian 6 and CentOS 5 installations),
    +`wget` may refuse to download `ez_setup.py`, complaining that the certificate common name `*.c.ssl.fastly.net`
    +does not match the host name `bootstrap.pypa.io`. In addition, the `ez_setup.py` script may then encounter similar problems using
    +`wget` internally to download `setuptools-x.y.zip`, complaining that the certificate common name of `www.python.org` does not match the
    +host name `pypi.python.org`. Those are known issues, related to a bug in the older versions of `wget`
    +(see `Issue 59 `_). If you happen to encounter them,
    +install Setuptools as follows::
    +
    +    > wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py
    +    > python ez_setup.py --insecure
    +
    +
    +Unix including Mac OS X (curl)
    +==============================
    +
    +If your system has curl installed, follow the ``wget`` instructions but
    +replace ``wget`` with ``curl`` and ``-O`` with ``-o``. For example::
    +
    +    > curl https://bootstrap.pypa.io/ez_setup.py -o - | python
    +
    +
    +Advanced Installation
    +=====================
    +
    +For more advanced installation options, such as installing to custom
    +locations or prefixes, download and extract the source
    +tarball from `Setuptools on PyPI `_
    +and run setup.py with any supported distutils and Setuptools options.
    +For example::
    +
    +    setuptools-x.x$ python setup.py install --prefix=/opt/setuptools
    +
    +Use ``--help`` to get a full options list, but we recommend consulting
    +the `EasyInstall manual`_ for detailed instructions, especially `the section
    +on custom installation locations`_.
    +
    +.. _EasyInstall manual: https://pythonhosted.org/setuptools/EasyInstall
    +.. _the section on custom installation locations: https://pythonhosted.org/setuptools/EasyInstall#custom-installation-locations
    +
    +
    +Downloads
    +=========
    +
    +All setuptools downloads can be found at `the project's home page in the Python
    +Package Index`_.  Scroll to the very bottom of the page to find the links.
    +
    +.. _the project's home page in the Python Package Index: https://pypi.python.org/pypi/setuptools
    +
    +In addition to the PyPI downloads, the development version of ``setuptools``
    +is available from the `Bitbucket repo`_, and in-development versions of the
    +`0.6 branch`_ are available as well.
    +
    +.. _Bitbucket repo: https://bitbucket.org/pypa/setuptools/get/default.tar.gz#egg=setuptools-dev
    +.. _0.6 branch: http://svn.python.org/projects/sandbox/branches/setuptools-0.6/#egg=setuptools-dev06
    +
    +Uninstalling
    +============
    +
    +On Windows, if Setuptools was installed using an ``.exe`` or ``.msi``
    +installer, simply use the uninstall feature of "Add/Remove Programs" in the
    +Control Panel.
    +
    +Otherwise, to uninstall Setuptools or Distribute, regardless of the Python
    +version, delete all ``setuptools*`` and ``distribute*`` files and
    +directories from your system's ``site-packages`` directory
    +(and any other ``sys.path`` directories) FIRST.
    +
    +If you are upgrading or otherwise plan to re-install Setuptools or Distribute,
    +nothing further needs to be done. If you want to completely remove Setuptools,
    +you may also want to remove the 'easy_install' and 'easy_install-x.x' scripts
    +and associated executables installed to the Python scripts directory.
    +
    +--------------------------------
    +Using Setuptools and EasyInstall
    +--------------------------------
    +
    +Here are some of the available manuals, tutorials, and other resources for
    +learning about Setuptools, Python Eggs, and EasyInstall:
    +
    +* `The EasyInstall user's guide and reference manual`_
    +* `The setuptools Developer's Guide`_
    +* `The pkg_resources API reference`_
    +* `The Internal Structure of Python Eggs`_
    +
    +Questions, comments, and bug reports should be directed to the `distutils-sig
    +mailing list`_.  If you have written (or know of) any tutorials, documentation,
    +plug-ins, or other resources for setuptools users, please let us know about
    +them there, so this reference list can be updated.  If you have working,
    +*tested* patches to correct problems or add features, you may submit them to
    +the `setuptools bug tracker`_.
    +
    +.. _setuptools bug tracker: https://bitbucket.org/pypa/setuptools/issues
    +.. _The Internal Structure of Python Eggs: https://pythonhosted.org/setuptools/formats.html
    +.. _The setuptools Developer's Guide: https://pythonhosted.org/setuptools/setuptools.html
    +.. _The pkg_resources API reference: https://pythonhosted.org/setuptools/pkg_resources.html
    +.. _The EasyInstall user's guide and reference manual: https://pythonhosted.org/setuptools/easy_install.html
    +.. _distutils-sig mailing list: http://mail.python.org/pipermail/distutils-sig/
    +
    +
    +-------
    +Credits
    +-------
    +
    +* The original design for the ``.egg`` format and the ``pkg_resources`` API was
    +  co-created by Phillip Eby and Bob Ippolito.  Bob also implemented the first
    +  version of ``pkg_resources``, and supplied the OS X operating system version
    +  compatibility algorithm.
    +
    +* Ian Bicking implemented many early "creature comfort" features of
    +  easy_install, including support for downloading via Sourceforge and
    +  Subversion repositories.  Ian's comments on the Web-SIG about WSGI
    +  application deployment also inspired the concept of "entry points" in eggs,
    +  and he has given talks at PyCon and elsewhere to inform and educate the
    +  community about eggs and setuptools.
    +
    +* Jim Fulton contributed time and effort to build automated tests of various
    +  aspects of ``easy_install``, and supplied the doctests for the command-line
    +  ``.exe`` wrappers on Windows.
    +
    +* Phillip J. Eby is the seminal author of setuptools, and
    +  first proposed the idea of an importable binary distribution format for
    +  Python application plug-ins.
    +
    +* Significant parts of the implementation of setuptools were funded by the Open
    +  Source Applications Foundation, to provide a plug-in infrastructure for the
    +  Chandler PIM application.  In addition, many OSAF staffers (such as Mike
    +  "Code Bear" Taylor) contributed their time and stress as guinea pigs for the
    +  use of eggs and setuptools, even before eggs were "cool".  (Thanks, guys!)
    +
    +* Tarek Ziadé is the principal author of the Distribute fork, which
    +  re-invigorated the community on the project, encouraged renewed innovation,
    +  and addressed many defects.
    +
    +* Since the merge with Distribute, Jason R. Coombs is the
    +  maintainer of setuptools.  The project is maintained in coordination with
    +  the Python Packaging Authority (PyPA) and the larger Python community.
    +
    +.. _files:
    +
    +
    +---------------
    +Code of Conduct
    +---------------
    +
    +Everyone interacting in the setuptools 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/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/METADATA b/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/METADATA
    new file mode 100644
    index 0000000..20fa41e
    --- /dev/null
    +++ b/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/METADATA
    @@ -0,0 +1,268 @@
    +Metadata-Version: 2.0
    +Name: setuptools
    +Version: 18.5
    +Summary: Easily download, build, install, upgrade, and uninstall Python packages
    +Home-page: https://bitbucket.org/pypa/setuptools
    +Author: Python Packaging Authority
    +Author-email: distutils-sig@python.org
    +License: PSF or ZPL
    +Keywords: CPAN PyPI distutils eggs package management
    +Platform: UNKNOWN
    +Classifier: Development Status :: 5 - Production/Stable
    +Classifier: Intended Audience :: Developers
    +Classifier: License :: OSI Approved :: Python Software Foundation License
    +Classifier: License :: OSI Approved :: Zope Public License
    +Classifier: Operating System :: OS Independent
    +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: Topic :: Software Development :: Libraries :: Python Modules
    +Classifier: Topic :: System :: Archiving :: Packaging
    +Classifier: Topic :: System :: Systems Administration
    +Classifier: Topic :: Utilities
    +Provides-Extra: certs
    +Requires-Dist: certifi (==2015.04.28); extra == 'certs'
    +Provides-Extra: ssl
    +Requires-Dist: wincertstore (==0.2); sys_platform=='win32' and extra == 'ssl'
    +
    +===============================
    +Installing and Using Setuptools
    +===============================
    +
    +.. contents:: **Table of Contents**
    +
    +
    +`Change History `_.
    +
    +-------------------------
    +Installation Instructions
    +-------------------------
    +
    +The recommended way to bootstrap setuptools on any system is to download
    +`ez_setup.py`_ and run it using the target Python environment. Different
    +operating systems have different recommended techniques to accomplish this
    +basic routine, so below are some examples to get you started.
    +
    +Setuptools requires Python 2.6 or later. To install setuptools
    +on Python 2.4 or Python 2.5, use the `bootstrap script for Setuptools 1.x
    +`_.
    +
    +The link provided to ez_setup.py is a bookmark to bootstrap script for the
    +latest known stable release.
    +
    +.. _ez_setup.py: https://bootstrap.pypa.io/ez_setup.py
    +
    +Windows (Powershell 3 or later)
    +===============================
    +
    +For best results, uninstall previous versions FIRST (see `Uninstalling`_).
    +
    +Using Windows 8 (which includes PowerShell 3) or earlier versions of Windows
    +with PowerShell 3 installed, it's possible to install with one simple
    +Powershell command. Start up Powershell and paste this command::
    +
    +    > (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python -
    +
    +You must start the Powershell with Administrative privileges or you may choose
    +to install a user-local installation::
    +
    +    > (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python - --user
    +
    +If you have Python 3.3 or later, you can use the ``py`` command to install to
    +different Python versions. For example, to install to Python 3.3 if you have
    +Python 2.7 installed::
    +
    +    > (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | py -3 -
    +
    +The recommended way to install setuptools on Windows is to download
    +`ez_setup.py`_ and run it. The script will download the appropriate
    +distribution file and install it for you.
    +
    +Once installation is complete, you will find an ``easy_install`` program in
    +your Python ``Scripts`` subdirectory.  For simple invocation and best results,
    +add this directory to your ``PATH`` environment variable, if it is not already
    +present. If you did a user-local install, the ``Scripts`` subdirectory is
    +``$env:APPDATA\Python\Scripts``.
    +
    +
    +Windows (simplified)
    +====================
    +
    +For Windows without PowerShell 3 or for installation without a command-line,
    +download `ez_setup.py`_ using your preferred web browser or other technique
    +and "run" that file.
    +
    +
    +Unix (wget)
    +===========
    +
    +Most Linux distributions come with wget.
    +
    +Download `ez_setup.py`_ and run it using the target Python version. The script
    +will download the appropriate version and install it for you::
    +
    +    > wget https://bootstrap.pypa.io/ez_setup.py -O - | python
    +
    +Note that you will may need to invoke the command with superuser privileges to
    +install to the system Python::
    +
    +    > wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
    +
    +Alternatively, Setuptools may be installed to a user-local path::
    +
    +    > wget https://bootstrap.pypa.io/ez_setup.py -O - | python - --user
    +
    +Note that on some older systems (noted on Debian 6 and CentOS 5 installations),
    +`wget` may refuse to download `ez_setup.py`, complaining that the certificate common name `*.c.ssl.fastly.net`
    +does not match the host name `bootstrap.pypa.io`. In addition, the `ez_setup.py` script may then encounter similar problems using
    +`wget` internally to download `setuptools-x.y.zip`, complaining that the certificate common name of `www.python.org` does not match the
    +host name `pypi.python.org`. Those are known issues, related to a bug in the older versions of `wget`
    +(see `Issue 59 `_). If you happen to encounter them,
    +install Setuptools as follows::
    +
    +    > wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py
    +    > python ez_setup.py --insecure
    +
    +
    +Unix including Mac OS X (curl)
    +==============================
    +
    +If your system has curl installed, follow the ``wget`` instructions but
    +replace ``wget`` with ``curl`` and ``-O`` with ``-o``. For example::
    +
    +    > curl https://bootstrap.pypa.io/ez_setup.py -o - | python
    +
    +
    +Advanced Installation
    +=====================
    +
    +For more advanced installation options, such as installing to custom
    +locations or prefixes, download and extract the source
    +tarball from `Setuptools on PyPI `_
    +and run setup.py with any supported distutils and Setuptools options.
    +For example::
    +
    +    setuptools-x.x$ python setup.py install --prefix=/opt/setuptools
    +
    +Use ``--help`` to get a full options list, but we recommend consulting
    +the `EasyInstall manual`_ for detailed instructions, especially `the section
    +on custom installation locations`_.
    +
    +.. _EasyInstall manual: https://pythonhosted.org/setuptools/EasyInstall
    +.. _the section on custom installation locations: https://pythonhosted.org/setuptools/EasyInstall#custom-installation-locations
    +
    +
    +Downloads
    +=========
    +
    +All setuptools downloads can be found at `the project's home page in the Python
    +Package Index`_.  Scroll to the very bottom of the page to find the links.
    +
    +.. _the project's home page in the Python Package Index: https://pypi.python.org/pypi/setuptools
    +
    +In addition to the PyPI downloads, the development version of ``setuptools``
    +is available from the `Bitbucket repo`_, and in-development versions of the
    +`0.6 branch`_ are available as well.
    +
    +.. _Bitbucket repo: https://bitbucket.org/pypa/setuptools/get/default.tar.gz#egg=setuptools-dev
    +.. _0.6 branch: http://svn.python.org/projects/sandbox/branches/setuptools-0.6/#egg=setuptools-dev06
    +
    +Uninstalling
    +============
    +
    +On Windows, if Setuptools was installed using an ``.exe`` or ``.msi``
    +installer, simply use the uninstall feature of "Add/Remove Programs" in the
    +Control Panel.
    +
    +Otherwise, to uninstall Setuptools or Distribute, regardless of the Python
    +version, delete all ``setuptools*`` and ``distribute*`` files and
    +directories from your system's ``site-packages`` directory
    +(and any other ``sys.path`` directories) FIRST.
    +
    +If you are upgrading or otherwise plan to re-install Setuptools or Distribute,
    +nothing further needs to be done. If you want to completely remove Setuptools,
    +you may also want to remove the 'easy_install' and 'easy_install-x.x' scripts
    +and associated executables installed to the Python scripts directory.
    +
    +--------------------------------
    +Using Setuptools and EasyInstall
    +--------------------------------
    +
    +Here are some of the available manuals, tutorials, and other resources for
    +learning about Setuptools, Python Eggs, and EasyInstall:
    +
    +* `The EasyInstall user's guide and reference manual`_
    +* `The setuptools Developer's Guide`_
    +* `The pkg_resources API reference`_
    +* `The Internal Structure of Python Eggs`_
    +
    +Questions, comments, and bug reports should be directed to the `distutils-sig
    +mailing list`_.  If you have written (or know of) any tutorials, documentation,
    +plug-ins, or other resources for setuptools users, please let us know about
    +them there, so this reference list can be updated.  If you have working,
    +*tested* patches to correct problems or add features, you may submit them to
    +the `setuptools bug tracker`_.
    +
    +.. _setuptools bug tracker: https://bitbucket.org/pypa/setuptools/issues
    +.. _The Internal Structure of Python Eggs: https://pythonhosted.org/setuptools/formats.html
    +.. _The setuptools Developer's Guide: https://pythonhosted.org/setuptools/setuptools.html
    +.. _The pkg_resources API reference: https://pythonhosted.org/setuptools/pkg_resources.html
    +.. _The EasyInstall user's guide and reference manual: https://pythonhosted.org/setuptools/easy_install.html
    +.. _distutils-sig mailing list: http://mail.python.org/pipermail/distutils-sig/
    +
    +
    +-------
    +Credits
    +-------
    +
    +* The original design for the ``.egg`` format and the ``pkg_resources`` API was
    +  co-created by Phillip Eby and Bob Ippolito.  Bob also implemented the first
    +  version of ``pkg_resources``, and supplied the OS X operating system version
    +  compatibility algorithm.
    +
    +* Ian Bicking implemented many early "creature comfort" features of
    +  easy_install, including support for downloading via Sourceforge and
    +  Subversion repositories.  Ian's comments on the Web-SIG about WSGI
    +  application deployment also inspired the concept of "entry points" in eggs,
    +  and he has given talks at PyCon and elsewhere to inform and educate the
    +  community about eggs and setuptools.
    +
    +* Jim Fulton contributed time and effort to build automated tests of various
    +  aspects of ``easy_install``, and supplied the doctests for the command-line
    +  ``.exe`` wrappers on Windows.
    +
    +* Phillip J. Eby is the seminal author of setuptools, and
    +  first proposed the idea of an importable binary distribution format for
    +  Python application plug-ins.
    +
    +* Significant parts of the implementation of setuptools were funded by the Open
    +  Source Applications Foundation, to provide a plug-in infrastructure for the
    +  Chandler PIM application.  In addition, many OSAF staffers (such as Mike
    +  "Code Bear" Taylor) contributed their time and stress as guinea pigs for the
    +  use of eggs and setuptools, even before eggs were "cool".  (Thanks, guys!)
    +
    +* Tarek Ziadé is the principal author of the Distribute fork, which
    +  re-invigorated the community on the project, encouraged renewed innovation,
    +  and addressed many defects.
    +
    +* Since the merge with Distribute, Jason R. Coombs is the
    +  maintainer of setuptools.  The project is maintained in coordination with
    +  the Python Packaging Authority (PyPA) and the larger Python community.
    +
    +.. _files:
    +
    +
    +---------------
    +Code of Conduct
    +---------------
    +
    +Everyone interacting in the setuptools 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/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/RECORD b/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/RECORD
    new file mode 100644
    index 0000000..537e181
    --- /dev/null
    +++ b/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/RECORD
    @@ -0,0 +1,124 @@
    +easy_install.py,sha256=MDC9vt5AxDsXX5qcKlBz2TnW6Tpuv_AobnfhCJ9X3PM,126
    +_markerlib/__init__.py,sha256=GSmhZqvAitLJHhSgtqqusfq2nJ_ClP3oy3Lm0uZLIsU,552
    +_markerlib/markers.py,sha256=YuFp0-osufFIoqnzG3L0Z2fDCx4Vln3VUDeXJ2DA_1I,3979
    +pkg_resources/__init__.py,sha256=HXzgG0K1DI6hcI-gkMYoq6hPsoERSezP32FMP0Hxt00,106833
    +pkg_resources/_vendor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
    +pkg_resources/_vendor/packaging/__about__.py,sha256=YzdrW-1lWmyCBDyrcNkZbJo4tiDWXpoiqPjfyCYMzIE,1073
    +pkg_resources/_vendor/packaging/__init__.py,sha256=2V8n-eEpSgBuXlV8hlMmhU7ZklpsrrusWMZNp2gC4Hs,906
    +pkg_resources/_vendor/packaging/_compat.py,sha256=wofog8iYo_zudt_10i6JiXKHDs5GhCuXC09hCuSJiv4,1253
    +pkg_resources/_vendor/packaging/_structures.py,sha256=93YvgrEE2HgFp8AdXy0pwCRVnZeutRHO_-puJ7T0cPw,1809
    +pkg_resources/_vendor/packaging/specifiers.py,sha256=UV9T01_kKloA8PSeMI3HTYBSJ_4KLs00yLvrlciZ3yU,28079
    +pkg_resources/_vendor/packaging/version.py,sha256=dEGrWZJZ6sef1xMxSfDCego2hS3Q86by0hUIFVk-AGc,11949
    +setuptools/__init__.py,sha256=3k29_xXPwjFtkdBbuqaQ-VA3_Mdqyq4ADDIwfsc9ISo,5424
    +setuptools/archive_util.py,sha256=N30WE5ZQjkytzhAodAXw4FkK-9J5AP1ChrClHnZthOA,6609
    +setuptools/cli-32.exe,sha256=dfEuovMNnA2HLa3jRfMPVi5tk4R7alCbpTvuxtCyw0Y,65536
    +setuptools/cli-64.exe,sha256=KLABu5pyrnokJCv6skjXZ6GsXeyYHGcqOUT3oHI3Xpo,74752
    +setuptools/cli-arm-32.exe,sha256=0pFNIi2SmY2gdY91Y4LRhj1wuBsnv5cG1fus3iBJv40,69120
    +setuptools/cli.exe,sha256=dfEuovMNnA2HLa3jRfMPVi5tk4R7alCbpTvuxtCyw0Y,65536
    +setuptools/compat.py,sha256=-Hl58PuLOEHUDM3-qsgmk50qNiyLLF3RgBgJ-eGGZG0,2094
    +setuptools/depends.py,sha256=gMRnrqQSr_Yp_wf09O88vKSQah1YjjEi5PsDNezM2Hs,6370
    +setuptools/dist.py,sha256=alEPOcofbGQSfkVQk6h0yEGNyKiQyCvNQa5YmnUm6wU,35320
    +setuptools/extension.py,sha256=nQ9GFTKxRIwmE1W7t1ZSBmuPAUJK_gVRYOCwxA1L38U,1649
    +setuptools/gui-32.exe,sha256=XBr0bHMA6Hpz2s9s9Bzjl-PwXfa9nH4ie0rFn4V2kWA,65536
    +setuptools/gui-64.exe,sha256=aYKMhX1IJLn4ULHgWX0sE0yREUt6B3TEHf_jOw6yNyE,75264
    +setuptools/gui-arm-32.exe,sha256=R5gRWLkY7wvO_CVGxoi7LZVTv0h-DKsKScy6fkbp4XI,69120
    +setuptools/gui.exe,sha256=XBr0bHMA6Hpz2s9s9Bzjl-PwXfa9nH4ie0rFn4V2kWA,65536
    +setuptools/lib2to3_ex.py,sha256=6jPF9sJuHiz0cyg4cwIBLl2VMAxcl3GYSZwWAOuJplU,1998
    +setuptools/msvc9_support.py,sha256=fo2vjb-dna1SEuHezQCTuelCo6XFBv5cqaI56ABJ1vw,2187
    +setuptools/package_index.py,sha256=aavWGle1RtmelMjeTOxjFoGpEdGdGY4hfRnLHUkbD0c,38760
    +setuptools/py26compat.py,sha256=ggKS8_aZWWHHS792vF3uXp5vmUkGNk3vjLreLTHr_-Q,431
    +setuptools/py27compat.py,sha256=CGj-jZcFgHUkrEdLvArkxHj96tAaMbG2-yJtUVU7QVI,306
    +setuptools/py31compat.py,sha256=O3X_wdWrvXTifeSFbRaCMuc23cDhMHJn7QlITb5cQ8E,1637
    +setuptools/sandbox.py,sha256=Gg5UfpsC5xsg_1x68pWRXG4t3nRWNpTk7m13lrnMTKw,13925
    +setuptools/script (dev).tmpl,sha256=f7MR17dTkzaqkCMSVseyOCMVrPVSMdmTQsaB8cZzfuI,201
    +setuptools/script.tmpl,sha256=WGTt5piezO27c-Dbx6l5Q4T3Ff20A5z7872hv3aAhYY,138
    +setuptools/site-patch.py,sha256=K-0-cAx36mX_PG-qPZwosG9ZLCliRjquKQ4nHiJvvzg,2389
    +setuptools/ssl_support.py,sha256=FASqXlRCmXAi6LUWLUIo0u14MpJqHBgkOc5KPHSRrtI,8044
    +setuptools/unicode_utils.py,sha256=gvhAHRj1LELCz-1MP3rfXGi__O1CAm5aksO9Njd2lpU,981
    +setuptools/utils.py,sha256=08Z7mt-9mvrx-XvmS5EyKoRn2lxNTlgFsUwBU3Eq9JQ,293
    +setuptools/version.py,sha256=puctVnBYQ-XKHe7xBHqCJwzHsPjWBWn-FQt0kRDJjEg,21
    +setuptools/windows_support.py,sha256=5GrfqSP2-dLGJoZTq2g6dCKkyQxxa2n5IQiXlJCoYEE,714
    +setuptools/command/__init__.py,sha256=gQMXoLa0TtUtmUZY0ptSouWWA5kcTArWyDQ6QwkjoVQ,554
    +setuptools/command/alias.py,sha256=1sLQxZcNh6dDQpDmm4G7UGGTol83nY1NTPmNBbm2siI,2381
    +setuptools/command/bdist_egg.py,sha256=3eblnHDm1t8Hwh8K5z1QaWOVkxUvxQc40KV_YZVHNFs,17184
    +setuptools/command/bdist_rpm.py,sha256=B7l0TnzCGb-0nLlm6rS00jWLkojASwVmdhW2w5Qz_Ak,1508
    +setuptools/command/bdist_wininst.py,sha256=_6dz3lpB1tY200LxKPLM7qgwTCceOMgaWFF-jW2-pm0,637
    +setuptools/command/build_ext.py,sha256=pkQ8xp3YPVGGLkGv-SvfxC_GqFpboph1AFEoMFOgQMo,11964
    +setuptools/command/build_py.py,sha256=uTgiBroMgyV-Lq4Kt42PLWQknM9G8c8_6TiDv4H5_Sw,7915
    +setuptools/command/develop.py,sha256=uyRwABU1JnhQhZO9rS8-nenkzLwKKJt2P7WPnsXrHd4,6610
    +setuptools/command/easy_install.py,sha256=_gRt2BDjiJpHuDPJzOFOTThWjspKy7NYIV_Br_PmyB0,87190
    +setuptools/command/egg_info.py,sha256=7AEcwMZQ5zl48_Cu_srTxCUqlJBokW10jRlFHZof2fs,16852
    +setuptools/command/install.py,sha256=QwaFiZRU3ytIHoPh8uJ9EqV3Fu9C4ca4B7UGAo95tws,4685
    +setuptools/command/install_egg_info.py,sha256=KXNB8O34-rK-cZZZr2fnT8kqNktDmTfUA88X2Iln66c,4001
    +setuptools/command/install_lib.py,sha256=ntpy-9xiFHfDmXmX_Lfp7nMchw7FpgyP66H7reixI_Y,3771
    +setuptools/command/install_scripts.py,sha256=vX2JC6v7l090N7CrTfihWBklNbPvfNKAY2LRtukM9XE,2231
    +setuptools/command/launcher manifest.xml,sha256=xlLbjWrB01tKC0-hlVkOKkiSPbzMml2eOPtJ_ucCnbE,628
    +setuptools/command/register.py,sha256=bHlMm1qmBbSdahTOT8w6UhA-EgeQIz7p6cD-qOauaiI,270
    +setuptools/command/rotate.py,sha256=Qm7SOa32L9XG5b_C7_SSYvKM5rqFXroeQ6w8GXIsY2o,2038
    +setuptools/command/saveopts.py,sha256=za7QCBcQimKKriWcoCcbhxPjUz30gSB74zuTL47xpP4,658
    +setuptools/command/sdist.py,sha256=rMT2qS0u4GYJtL4IXiYG-ElEa111wqzQVHpv9uE1L5w,7079
    +setuptools/command/setopt.py,sha256=Z3_kav60D2XHZjM0cRhGo7wbBYo7nr4U_U-wMMbpmu8,5080
    +setuptools/command/test.py,sha256=yJEniqTzav6R6vimRG3tb7l233rGDSAmFafXIHe9UzU,6562
    +setuptools/command/upload_docs.py,sha256=di-XRGtxW5TSFYR6nK9XZj3I5JIU4V00SOFRhptdOGc,6782
    +setuptools-18.5.dist-info/DESCRIPTION.rst,sha256=MDsJej8DPV2OKpAKpu74g-2xksRd-uGTeZn4W7D1dnI,9940
    +setuptools-18.5.dist-info/METADATA,sha256=AnJr1ZA0xypJknGm_uX312zkByzCrA6_ZyjZDI0d408,11256
    +setuptools-18.5.dist-info/RECORD,,
    +setuptools-18.5.dist-info/WHEEL,sha256=GrqQvamwgBV4nLoJe0vhYRSWzWsx7xjlt74FT0SWYfE,110
    +setuptools-18.5.dist-info/dependency_links.txt,sha256=g1tkmtmOY1n1KRGVLZKBtbJf0CCZ2Jil8uGvMfQRJNE,226
    +setuptools-18.5.dist-info/entry_points.txt,sha256=xrrbAWSD2o_blM5eb2oXvmCTvfdcjUMunUT4T8C-AAs,2793
    +setuptools-18.5.dist-info/metadata.json,sha256=kuSZ-oLefqfph4-5BoCXPJKfOx98Dz9L4EgOJ08ZZl0,4678
    +setuptools-18.5.dist-info/top_level.txt,sha256=7780fzudMJkykiTcIrAQ8m8Lll6kot3EEePye3VJgEE,49
    +setuptools-18.5.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
    +/srv/openmedialibrary/platform/Shared/home/.local/bin/easy_install,sha256=7h7lc5DCAhnE08UwEm49wGymGDGdOcrkRdncTKYmXIQ,233
    +/srv/openmedialibrary/platform/Shared/home/.local/bin/easy_install-3.4,sha256=7h7lc5DCAhnE08UwEm49wGymGDGdOcrkRdncTKYmXIQ,233
    +setuptools/command/__pycache__/develop.cpython-34.pyc,,
    +setuptools/__pycache__/__init__.cpython-34.pyc,,
    +pkg_resources/__pycache__/__init__.cpython-34.pyc,,
    +setuptools/command/__pycache__/bdist_rpm.cpython-34.pyc,,
    +setuptools/command/__pycache__/egg_info.cpython-34.pyc,,
    +pkg_resources/_vendor/__pycache__/__init__.cpython-34.pyc,,
    +setuptools/command/__pycache__/install_scripts.cpython-34.pyc,,
    +setuptools/command/__pycache__/build_py.cpython-34.pyc,,
    +setuptools/command/__pycache__/register.cpython-34.pyc,,
    +setuptools/__pycache__/lib2to3_ex.cpython-34.pyc,,
    +_markerlib/__pycache__/markers.cpython-34.pyc,,
    +setuptools/command/__pycache__/test.cpython-34.pyc,,
    +setuptools/command/__pycache__/install_egg_info.cpython-34.pyc,,
    +setuptools/__pycache__/msvc9_support.cpython-34.pyc,,
    +setuptools/command/__pycache__/bdist_wininst.cpython-34.pyc,,
    +setuptools/__pycache__/dist.cpython-34.pyc,,
    +setuptools/command/__pycache__/easy_install.cpython-34.pyc,,
    +setuptools/__pycache__/ssl_support.cpython-34.pyc,,
    +setuptools/__pycache__/py27compat.cpython-34.pyc,,
    +setuptools/__pycache__/py26compat.cpython-34.pyc,,
    +setuptools/command/__pycache__/upload_docs.cpython-34.pyc,,
    +pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-34.pyc,,
    +pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-34.pyc,,
    +setuptools/__pycache__/archive_util.cpython-34.pyc,,
    +_markerlib/__pycache__/__init__.cpython-34.pyc,,
    +pkg_resources/_vendor/packaging/__pycache__/version.cpython-34.pyc,,
    +setuptools/__pycache__/package_index.cpython-34.pyc,,
    +setuptools/command/__pycache__/rotate.cpython-34.pyc,,
    +setuptools/__pycache__/version.cpython-34.pyc,,
    +setuptools/command/__pycache__/build_ext.cpython-34.pyc,,
    +setuptools/__pycache__/py31compat.cpython-34.pyc,,
    +pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-34.pyc,,
    +setuptools/command/__pycache__/bdist_egg.cpython-34.pyc,,
    +setuptools/__pycache__/site-patch.cpython-34.pyc,,
    +pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-34.pyc,,
    +setuptools/__pycache__/unicode_utils.cpython-34.pyc,,
    +setuptools/__pycache__/depends.cpython-34.pyc,,
    +setuptools/command/__pycache__/sdist.cpython-34.pyc,,
    +setuptools/command/__pycache__/install_lib.cpython-34.pyc,,
    +setuptools/__pycache__/utils.cpython-34.pyc,,
    +setuptools/__pycache__/sandbox.cpython-34.pyc,,
    +setuptools/command/__pycache__/saveopts.cpython-34.pyc,,
    +setuptools/command/__pycache__/install.cpython-34.pyc,,
    +setuptools/__pycache__/compat.cpython-34.pyc,,
    +setuptools/__pycache__/windows_support.cpython-34.pyc,,
    +setuptools/command/__pycache__/__init__.cpython-34.pyc,,
    +setuptools/command/__pycache__/setopt.cpython-34.pyc,,
    +pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-34.pyc,,
    +__pycache__/easy_install.cpython-34.pyc,,
    +setuptools/__pycache__/extension.cpython-34.pyc,,
    +setuptools/command/__pycache__/alias.cpython-34.pyc,,
    diff --git a/Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/WHEEL b/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/WHEEL
    similarity index 70%
    rename from Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/WHEEL
    rename to Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/WHEEL
    index f2ddc35..0de529b 100644
    --- a/Shared/lib/python3.4/site-packages/chardet-2.2.1.dist-info/WHEEL
    +++ b/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/WHEEL
    @@ -1,5 +1,5 @@
     Wheel-Version: 1.0
    -Generator: bdist_wheel (0.22.0)
    +Generator: bdist_wheel (0.26.0)
     Root-Is-Purelib: true
     Tag: py2-none-any
     Tag: py3-none-any
    diff --git a/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/dependency_links.txt b/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/dependency_links.txt
    similarity index 50%
    rename from Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/dependency_links.txt
    rename to Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/dependency_links.txt
    index b454c16..b0477ad 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/dependency_links.txt
    +++ b/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/dependency_links.txt
    @@ -1,2 +1,2 @@
    -https://pypi.python.org/packages/source/c/certifi/certifi-1.0.1.tar.gz#md5=45f5cb94b8af9e1df0f9450a8f61b790
    +https://pypi.python.org/packages/source/c/certifi/certifi-2015.04.28.tar.gz#md5=12c7c3a063b2ff97a0f8291d8de41e8c
     https://pypi.python.org/packages/source/w/wincertstore/wincertstore-0.2.zip#md5=ae728f2f007185648d0c7a8679b361e2
    diff --git a/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/entry_points.txt b/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/entry_points.txt
    similarity index 95%
    rename from Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/entry_points.txt
    rename to Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/entry_points.txt
    index 72a5ffe..ef17af1 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/entry_points.txt
    +++ b/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/entry_points.txt
    @@ -1,6 +1,6 @@
     [console_scripts]
     easy_install = setuptools.command.easy_install:main
    -easy_install-3.4 = setuptools.command.easy_install:main
    +easy_install-3.5 = setuptools.command.easy_install:main
     
     [distutils.commands]
     alias = setuptools.command.alias:alias
    @@ -56,9 +56,6 @@ namespace_packages.txt = setuptools.command.egg_info:overwrite_arg
     requires.txt = setuptools.command.egg_info:write_requirements
     top_level.txt = setuptools.command.egg_info:write_toplevel_names
     
    -[setuptools.file_finders]
    -svn_cvs = setuptools.command.sdist:_default_revctrl
    -
     [setuptools.installation]
     eggsecutable = setuptools.command.easy_install:bootstrap
     
    diff --git a/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/metadata.json b/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/metadata.json
    new file mode 100644
    index 0000000..5cb9549
    --- /dev/null
    +++ b/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/metadata.json
    @@ -0,0 +1 @@
    +{"generator": "bdist_wheel (0.26.0)", "summary": "Easily download, build, install, upgrade, and uninstall Python packages", "classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Python Software Foundation License", "License :: OSI Approved :: Zope Public License", "Operating System :: OS Independent", "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", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Archiving :: Packaging", "Topic :: System :: Systems Administration", "Topic :: Utilities"], "extensions": {"python.details": {"project_urls": {"Home": "https://bitbucket.org/pypa/setuptools"}, "contacts": [{"email": "distutils-sig@python.org", "name": "Python Packaging Authority", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}}, "python.exports": {"console_scripts": {"easy_install": "setuptools.command.easy_install:main", "easy_install-3.5": "setuptools.command.easy_install:main"}, "distutils.commands": {"alias": "setuptools.command.alias:alias", "bdist_egg": "setuptools.command.bdist_egg:bdist_egg", "bdist_rpm": "setuptools.command.bdist_rpm:bdist_rpm", "bdist_wininst": "setuptools.command.bdist_wininst:bdist_wininst", "build_ext": "setuptools.command.build_ext:build_ext", "build_py": "setuptools.command.build_py:build_py", "develop": "setuptools.command.develop:develop", "easy_install": "setuptools.command.easy_install:easy_install", "egg_info": "setuptools.command.egg_info:egg_info", "install": "setuptools.command.install:install", "install_egg_info": "setuptools.command.install_egg_info:install_egg_info", "install_lib": "setuptools.command.install_lib:install_lib", "install_scripts": "setuptools.command.install_scripts:install_scripts", "register": "setuptools.command.register:register", "rotate": "setuptools.command.rotate:rotate", "saveopts": "setuptools.command.saveopts:saveopts", "sdist": "setuptools.command.sdist:sdist", "setopt": "setuptools.command.setopt:setopt", "test": "setuptools.command.test:test", "upload_docs": "setuptools.command.upload_docs:upload_docs"}, "distutils.setup_keywords": {"convert_2to3_doctests": "setuptools.dist:assert_string_list", "dependency_links": "setuptools.dist:assert_string_list", "eager_resources": "setuptools.dist:assert_string_list", "entry_points": "setuptools.dist:check_entry_points", "exclude_package_data": "setuptools.dist:check_package_data", "extras_require": "setuptools.dist:check_extras", "include_package_data": "setuptools.dist:assert_bool", "install_requires": "setuptools.dist:check_requirements", "namespace_packages": "setuptools.dist:check_nsp", "package_data": "setuptools.dist:check_package_data", "packages": "setuptools.dist:check_packages", "setup_requires": "setuptools.dist:check_requirements", "test_loader": "setuptools.dist:check_importable", "test_runner": "setuptools.dist:check_importable", "test_suite": "setuptools.dist:check_test_suite", "tests_require": "setuptools.dist:check_requirements", "use_2to3": "setuptools.dist:assert_bool", "use_2to3_exclude_fixers": "setuptools.dist:assert_string_list", "use_2to3_fixers": "setuptools.dist:assert_string_list", "zip_safe": "setuptools.dist:assert_bool"}, "egg_info.writers": {"PKG-INFO": "setuptools.command.egg_info:write_pkg_info", "dependency_links.txt": "setuptools.command.egg_info:overwrite_arg", "depends.txt": "setuptools.command.egg_info:warn_depends_obsolete", "eager_resources.txt": "setuptools.command.egg_info:overwrite_arg", "entry_points.txt": "setuptools.command.egg_info:write_entries", "namespace_packages.txt": "setuptools.command.egg_info:overwrite_arg", "requires.txt": "setuptools.command.egg_info:write_requirements", "top_level.txt": "setuptools.command.egg_info:write_toplevel_names"}, "setuptools.installation": {"eggsecutable": "setuptools.command.easy_install:bootstrap"}}, "python.commands": {"wrap_console": {"easy_install": "setuptools.command.easy_install:main", "easy_install-3.5": "setuptools.command.easy_install:main"}}}, "keywords": ["CPAN", "PyPI", "distutils", "eggs", "package", "management"], "license": "PSF or ZPL", "metadata_version": "2.0", "name": "setuptools", "extras": ["certs", "ssl"], "run_requires": [{"requires": ["certifi (==2015.04.28)"], "extra": "certs"}, {"requires": ["wincertstore (==0.2)"], "extra": "ssl", "environment": "sys_platform=='win32'"}], "version": "18.5", "test_requires": [{"requires": ["pytest", "setuptools[ssl]"]}]}
    \ No newline at end of file
    diff --git a/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/top_level.txt b/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/top_level.txt
    similarity index 100%
    rename from Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/top_level.txt
    rename to Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/top_level.txt
    diff --git a/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/zip-safe b/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/zip-safe
    similarity index 50%
    rename from Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/zip-safe
    rename to Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/zip-safe
    index d3f5a12..8b13789 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/zip-safe
    +++ b/Shared/lib/python3.4/site-packages/setuptools-18.5.dist-info/zip-safe
    @@ -1 +1 @@
    -
    +
    diff --git a/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/DESCRIPTION.rst b/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/DESCRIPTION.rst
    deleted file mode 100644
    index 1e4e517..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/DESCRIPTION.rst
    +++ /dev/null
    @@ -1,2111 +0,0 @@
    -===============================
    -Installing and Using Setuptools
    -===============================
    -
    -.. contents:: **Table of Contents**
    -
    -
    --------------------------
    -Installation Instructions
    --------------------------
    -
    -The recommended way to bootstrap setuptools on any system is to download
    -`ez_setup.py`_ and run it using the target Python environment. Different
    -operating systems have different recommended techniques to accomplish this
    -basic routine, so below are some examples to get you started.
    -
    -Setuptools requires Python 2.6 or later. To install setuptools
    -on Python 2.4 or Python 2.5, use the `bootstrap script for Setuptools 1.x
    -`_.
    -
    -The link provided to ez_setup.py is a bookmark to bootstrap script for the
    -latest known stable release.
    -
    -.. _ez_setup.py: https://bootstrap.pypa.io/ez_setup.py
    -
    -Windows (Powershell 3 or later)
    -===============================
    -
    -For best results, uninstall previous versions FIRST (see `Uninstalling`_).
    -
    -Using Windows 8 (which includes PowerShell 3) or earlier versions of Windows
    -with PowerShell 3 installed, it's possible to install with one simple
    -Powershell command. Start up Powershell and paste this command::
    -
    -    > (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python -
    -
    -You must start the Powershell with Administrative privileges or you may choose
    -to install a user-local installation::
    -
    -    > (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python - --user
    -
    -If you have Python 3.3 or later, you can use the ``py`` command to install to
    -different Python versions. For example, to install to Python 3.3 if you have
    -Python 2.7 installed::
    -
    -    > (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | py -3 -
    -
    -The recommended way to install setuptools on Windows is to download
    -`ez_setup.py`_ and run it. The script will download the appropriate
    -distribution file and install it for you.
    -
    -Once installation is complete, you will find an ``easy_install`` program in
    -your Python ``Scripts`` subdirectory.  For simple invocation and best results,
    -add this directory to your ``PATH`` environment variable, if it is not already
    -present. If you did a user-local install, the ``Scripts`` subdirectory is
    -``$env:APPDATA\Python\Scripts``.
    -
    -
    -Windows (simplified)
    -====================
    -
    -For Windows without PowerShell 3 or for installation without a command-line,
    -download `ez_setup.py`_ using your preferred web browser or other technique
    -and "run" that file.
    -
    -
    -Unix (wget)
    -===========
    -
    -Most Linux distributions come with wget.
    -
    -Download `ez_setup.py`_ and run it using the target Python version. The script
    -will download the appropriate version and install it for you::
    -
    -    > wget https://bootstrap.pypa.io/ez_setup.py -O - | python
    -
    -Note that you will may need to invoke the command with superuser privileges to
    -install to the system Python::
    -
    -    > wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
    -
    -Alternatively, Setuptools may be installed to a user-local path::
    -
    -    > wget https://bootstrap.pypa.io/ez_setup.py -O - | python - --user
    -
    -Unix including Mac OS X (curl)
    -==============================
    -
    -If your system has curl installed, follow the ``wget`` instructions but
    -replace ``wget`` with ``curl`` and ``-O`` with ``-o``. For example::
    -
    -    > curl https://bootstrap.pypa.io/ez_setup.py -o - | python
    -
    -
    -Advanced Installation
    -=====================
    -
    -For more advanced installation options, such as installing to custom
    -locations or prefixes, download and extract the source
    -tarball from `Setuptools on PyPI `_
    -and run setup.py with any supported distutils and Setuptools options.
    -For example::
    -
    -    setuptools-x.x$ python setup.py install --prefix=/opt/setuptools
    -
    -Use ``--help`` to get a full options list, but we recommend consulting
    -the `EasyInstall manual`_ for detailed instructions, especially `the section
    -on custom installation locations`_.
    -
    -.. _EasyInstall manual: https://pythonhosted.org/setuptools/EasyInstall
    -.. _the section on custom installation locations: https://pythonhosted.org/setuptools/EasyInstall#custom-installation-locations
    -
    -
    -Downloads
    -=========
    -
    -All setuptools downloads can be found at `the project's home page in the Python
    -Package Index`_.  Scroll to the very bottom of the page to find the links.
    -
    -.. _the project's home page in the Python Package Index: https://pypi.python.org/pypi/setuptools
    -
    -In addition to the PyPI downloads, the development version of ``setuptools``
    -is available from the `Bitbucket repo`_, and in-development versions of the
    -`0.6 branch`_ are available as well.
    -
    -.. _Bitbucket repo: https://bitbucket.org/pypa/setuptools/get/default.tar.gz#egg=setuptools-dev
    -.. _0.6 branch: http://svn.python.org/projects/sandbox/branches/setuptools-0.6/#egg=setuptools-dev06
    -
    -Uninstalling
    -============
    -
    -On Windows, if Setuptools was installed using an ``.exe`` or ``.msi``
    -installer, simply use the uninstall feature of "Add/Remove Programs" in the
    -Control Panel.
    -
    -Otherwise, to uninstall Setuptools or Distribute, regardless of the Python
    -version, delete all ``setuptools*`` and ``distribute*`` files and
    -directories from your system's ``site-packages`` directory
    -(and any other ``sys.path`` directories) FIRST.
    -
    -If you are upgrading or otherwise plan to re-install Setuptools or Distribute,
    -nothing further needs to be done. If you want to completely remove Setuptools,
    -you may also want to remove the 'easy_install' and 'easy_install-x.x' scripts
    -and associated executables installed to the Python scripts directory.
    -
    ---------------------------------
    -Using Setuptools and EasyInstall
    ---------------------------------
    -
    -Here are some of the available manuals, tutorials, and other resources for
    -learning about Setuptools, Python Eggs, and EasyInstall:
    -
    -* `The EasyInstall user's guide and reference manual`_
    -* `The setuptools Developer's Guide`_
    -* `The pkg_resources API reference`_
    -* `Package Compatibility Notes`_ (user-maintained)
    -* `The Internal Structure of Python Eggs`_
    -
    -Questions, comments, and bug reports should be directed to the `distutils-sig
    -mailing list`_.  If you have written (or know of) any tutorials, documentation,
    -plug-ins, or other resources for setuptools users, please let us know about
    -them there, so this reference list can be updated.  If you have working,
    -*tested* patches to correct problems or add features, you may submit them to
    -the `setuptools bug tracker`_.
    -
    -.. _setuptools bug tracker: https://bitbucket.org/pypa/setuptools/issues
    -.. _Package Compatibility Notes: https://pythonhosted.org/setuptools/PackageNotes
    -.. _The Internal Structure of Python Eggs: https://pythonhosted.org/setuptools/formats.html
    -.. _The setuptools Developer's Guide: https://pythonhosted.org/setuptools/setuptools.html
    -.. _The pkg_resources API reference: https://pythonhosted.org/setuptools/pkg_resources.html
    -.. _The EasyInstall user's guide and reference manual: https://pythonhosted.org/setuptools/easy_install.html
    -.. _distutils-sig mailing list: http://mail.python.org/pipermail/distutils-sig/
    -
    -
    --------
    -Credits
    --------
    -
    -* The original design for the ``.egg`` format and the ``pkg_resources`` API was
    -  co-created by Phillip Eby and Bob Ippolito.  Bob also implemented the first
    -  version of ``pkg_resources``, and supplied the OS X operating system version
    -  compatibility algorithm.
    -
    -* Ian Bicking implemented many early "creature comfort" features of
    -  easy_install, including support for downloading via Sourceforge and
    -  Subversion repositories.  Ian's comments on the Web-SIG about WSGI
    -  application deployment also inspired the concept of "entry points" in eggs,
    -  and he has given talks at PyCon and elsewhere to inform and educate the
    -  community about eggs and setuptools.
    -
    -* Jim Fulton contributed time and effort to build automated tests of various
    -  aspects of ``easy_install``, and supplied the doctests for the command-line
    -  ``.exe`` wrappers on Windows.
    -
    -* Phillip J. Eby is the seminal author of setuptools, and
    -  first proposed the idea of an importable binary distribution format for
    -  Python application plug-ins.
    -
    -* Significant parts of the implementation of setuptools were funded by the Open
    -  Source Applications Foundation, to provide a plug-in infrastructure for the
    -  Chandler PIM application.  In addition, many OSAF staffers (such as Mike
    -  "Code Bear" Taylor) contributed their time and stress as guinea pigs for the
    -  use of eggs and setuptools, even before eggs were "cool".  (Thanks, guys!)
    -
    -* Tarek Ziadé is the principal author of the Distribute fork, which
    -  re-invigorated the community on the project, encouraged renewed innovation,
    -  and addressed many defects.
    -
    -* Since the merge with Distribute, Jason R. Coombs is the
    -  maintainer of setuptools.  The project is maintained in coordination with
    -  the Python Packaging Authority (PyPA) and the larger Python community.
    -
    -.. _files:
    -
    -=======
    -CHANGES
    -=======
    -
    ------
    -6.0.2
    ------
    -
    -* `Issue #262 `_: Fixed regression in pip install due to egg-info directories
    -  being omitted. Re-opens `Issue #118 `_.
    -
    ------
    -6.0.1
    ------
    -
    -* `Issue #259 `_: Fixed regression with namespace package handling on ``single
    -  version, externally managed`` installs.
    -
    ----
    -6.0
    ----
    -
    -* `Issue #100 `_: When building a distribution, Setuptools will no longer match
    -  default files using platform-dependent case sensitivity, but rather will
    -  only match the files if their case matches exactly. As a result, on Windows
    -  and other case-insensitive file systems, files with names such as
    -  'readme.txt' or 'README.TXT' will be omitted from the distribution and a
    -  warning will be issued indicating that 'README.txt' was not found. Other
    -  filenames affected are:
    -
    -    - README.rst
    -    - README
    -    - setup.cfg
    -    - setup.py (or the script name)
    -    - test/test*.py
    -
    -  Any users producing distributions with filenames that match those above
    -  case-insensitively, but not case-sensitively, should rename those files in
    -  their repository for better portability.
    -* `Pull Request #72 `_: When using ``single_version_externally_managed``, the
    -  exclusion list now includes Python 3.2 ``__pycache__`` entries.
    -* `Pull Request #76 `_ and `Pull Request #78 `_: lines in top_level.txt are now
    -  ordered deterministically.
    -* `Issue #118 `_: The egg-info directory is now no longer included in the list
    -  of outputs.
    -* `Issue #258 `_: Setuptools now patches distutils msvc9compiler to
    -  recognize the specially-packaged compiler package for easy extension module
    -  support on Python 2.6, 2.7, and 3.2.
    -
    ----
    -5.8
    ----
    -
    -* `Issue #237 `_: ``pkg_resources`` now uses explicit detection of Python 2 vs.
    -  Python 3, supporting environments where builtins have been patched to make
    -  Python 3 look more like Python 2.
    -
    ----
    -5.7
    ----
    -
    -* `Issue #240 `_: Based on real-world performance measures against 5.4, zip
    -  manifests are now cached in all circumstances. The
    -  ``PKG_RESOURCES_CACHE_ZIP_MANIFESTS`` environment variable is no longer
    -  relevant. The observed "memory increase" referenced in the 5.4 release
    -  notes and detailed in `Issue #154 `_ was likely not an increase over the status
    -  quo, but rather only an increase over not storing the zip info at all.
    -
    ----
    -5.6
    ----
    -
    -* `Issue #242 `_: Use absolute imports in svn_utils to avoid issues if the
    -  installing package adds an xml module to the path.
    -
    ------
    -5.5.1
    ------
    -
    -* `Issue #239 `_: Fix typo in 5.5 such that fix did not take.
    -
    ----
    -5.5
    ----
    -
    -* `Issue #239 `_: Setuptools now includes the setup_requires directive on
    -  Distribution objects and validates the syntax just like install_requires
    -  and tests_require directives.
    -
    ------
    -5.4.2
    ------
    -
    -* `Issue #236 `_: Corrected regression in execfile implementation for Python 2.6.
    -
    ------
    -5.4.1
    ------
    -
    -* `Python #7776 `_: (ssl_support) Correct usage of host for validation when
    -  tunneling for HTTPS.
    -
    ----
    -5.4
    ----
    -
    -* `Issue #154 `_: ``pkg_resources`` will now cache the zip manifests rather than
    -  re-processing the same file from disk multiple times, but only if the
    -  environment variable ``PKG_RESOURCES_CACHE_ZIP_MANIFESTS`` is set. Clients
    -  that package many modules in the same zip file will see some improvement
    -  in startup time by enabling this feature. This feature is not enabled by
    -  default because it causes a substantial increase in memory usage.
    -
    ----
    -5.3
    ----
    -
    -* `Issue #185 `_: Make svn tagging work on the new style SVN metadata.
    -  Thanks cazabon!
    -* Prune revision control directories (e.g .svn) from base path
    -  as well as sub-directories.
    -
    ----
    -5.2
    ----
    -
    -* Added a `Developer Guide
    -  `_ to the official
    -  documentation.
    -* Some code refactoring and cleanup was done with no intended behavioral
    -  changes.
    -* During install_egg_info, the generated lines for namespace package .pth
    -  files are now processed even during a dry run.
    -
    ----
    -5.1
    ----
    -
    -* `Issue #202 `_: Implemented more robust cache invalidation for the ZipImporter,
    -  building on the work in `Issue #168 `_. Special thanks to Jurko Gospodnetic and
    -  PJE.
    -
    ------
    -5.0.2
    ------
    -
    -* `Issue #220 `_: Restored script templates.
    -
    ------
    -5.0.1
    ------
    -
    -* Renamed script templates to end with .tmpl now that they no longer need
    -  to be processed by 2to3. Fixes spurious syntax errors during build/install.
    -
    ----
    -5.0
    ----
    -
    -* `Issue #218 `_: Re-release of 3.8.1 to signal that it supersedes 4.x.
    -* Incidentally, script templates were updated not to include the triple-quote
    -  escaping.
    -
    --------------------------
    -3.7.1 and 3.8.1 and 4.0.1
    --------------------------
    -
    -* `Issue #213 `_: Use legacy StringIO behavior for compatibility under pbr.
    -* `Issue #218 `_: Setuptools 3.8.1 superseded 4.0.1, and 4.x was removed
    -  from the available versions to install.
    -
    ----
    -4.0
    ----
    -
    -* `Issue #210 `_: ``setup.py develop`` now copies scripts in binary mode rather
    -  than text mode, matching the behavior of the ``install`` command.
    -
    ----
    -3.8
    ----
    -
    -* Extend `Issue #197 `_ workaround to include all Python 3 versions prior to
    -  3.2.2.
    -
    ----
    -3.7
    ----
    -
    -* `Issue #193 `_: Improved handling of Unicode filenames when building manifests.
    -
    ----
    -3.6
    ----
    -
    -* `Issue #203 `_: Honor proxy settings for Powershell downloader in the bootstrap
    -  routine.
    -
    ------
    -3.5.2
    ------
    -
    -* `Issue #168 `_: More robust handling of replaced zip files and stale caches.
    -  Fixes ZipImportError complaining about a 'bad local header'.
    -
    ------
    -3.5.1
    ------
    -
    -* `Issue #199 `_: Restored ``install._install`` for compatibility with earlier
    -  NumPy versions.
    -
    ----
    -3.5
    ----
    -
    -* `Issue #195 `_: Follow symbolic links in find_packages (restoring behavior
    -  broken in 3.4).
    -* `Issue #197 `_: On Python 3.1, PKG-INFO is now saved in a UTF-8 encoding instead
    -  of ``sys.getpreferredencoding`` to match the behavior on Python 2.6-3.4.
    -* `Issue #192 `_: Preferred bootstrap location is now
    -  https://bootstrap.pypa.io/ez_setup.py (mirrored from former location).
    -
    ------
    -3.4.4
    ------
    -
    -* `Issue #184 `_: Correct failure where find_package over-matched packages
    -  when directory traversal isn't short-circuited.
    -
    ------
    -3.4.3
    ------
    -
    -* `Issue #183 `_: Really fix test command with Python 3.1.
    -
    ------
    -3.4.2
    ------
    -
    -* `Issue #183 `_: Fix additional regression in test command on Python 3.1.
    -
    ------
    -3.4.1
    ------
    -
    -* `Issue #180 `_: Fix regression in test command not caught by py.test-run tests.
    -
    ----
    -3.4
    ----
    -
    -* `Issue #176 `_: Add parameter to the test command to support a custom test
    -  runner: --test-runner or -r.
    -* `Issue #177 `_: Now assume most common invocation to install command on
    -  platforms/environments without stack support (issuing a warning). Setuptools
    -  now installs naturally on IronPython. Behavior on CPython should be
    -  unchanged.
    -
    ----
    -3.3
    ----
    -
    -* Add ``include`` parameter to ``setuptools.find_packages()``.
    -
    ----
    -3.2
    ----
    -
    -* `Pull Request #39 `_: Add support for C++ targets from Cython ``.pyx`` files.
    -* `Issue #162 `_: Update dependency on certifi to 1.0.1.
    -* `Issue #164 `_: Update dependency on wincertstore to 0.2.
    -
    ----
    -3.1
    ----
    -
    -* `Issue #161 `_: Restore Features functionality to allow backward compatibility
    -  (for Features) until the uses of that functionality is sufficiently removed.
    -
    ------
    -3.0.2
    ------
    -
    -* Correct typo in previous bugfix.
    -
    ------
    -3.0.1
    ------
    -
    -* `Issue #157 `_: Restore support for Python 2.6 in bootstrap script where
    -  ``zipfile.ZipFile`` does not yet have support for context managers.
    -
    ----
    -3.0
    ----
    -
    -* `Issue #125 `_: Prevent Subversion support from creating a ~/.subversion
    -  directory just for checking the presence of a Subversion repository.
    -* `Issue #12 `_: Namespace packages are now imported lazily.  That is, the mere
    -  declaration of a namespace package in an egg on ``sys.path`` no longer
    -  causes it to be imported when ``pkg_resources`` is imported.  Note that this
    -  change means that all of a namespace package's ``__init__.py`` files must
    -  include a ``declare_namespace()`` call in order to ensure that they will be
    -  handled properly at runtime.  In 2.x it was possible to get away without
    -  including the declaration, but only at the cost of forcing namespace
    -  packages to be imported early, which 3.0 no longer does.
    -* `Issue #148 `_: When building (bdist_egg), setuptools no longer adds
    -  ``__init__.py`` files to namespace packages. Any packages that rely on this
    -  behavior will need to create ``__init__.py`` files and include the
    -  ``declare_namespace()``.
    -* `Issue #7 `_: Setuptools itself is now distributed as a zip archive in addition to
    -  tar archive. ez_setup.py now uses zip archive. This approach avoids the potential
    -  security vulnerabilities presented by use of tar archives in ez_setup.py.
    -  It also leverages the security features added to ZipFile.extract in Python 2.7.4.
    -* `Issue #65 `_: Removed deprecated Features functionality.
    -* `Pull Request #28 `_: Remove backport of ``_bytecode_filenames`` which is
    -  available in Python 2.6 and later, but also has better compatibility with
    -  Python 3 environments.
    -* `Issue #156 `_: Fix spelling of __PYVENV_LAUNCHER__ variable.
    -
    ----
    -2.2
    ----
    -
    -* `Issue #141 `_: Restored fix for allowing setup_requires dependencies to
    -  override installed dependencies during setup.
    -* `Issue #128 `_: Fixed issue where only the first dependency link was honored
    -  in a distribution where multiple dependency links were supplied.
    -
    ------
    -2.1.2
    ------
    -
    -* `Issue #144 `_: Read long_description using codecs module to avoid errors
    -  installing on systems where LANG=C.
    -
    ------
    -2.1.1
    ------
    -
    -* `Issue #139 `_: Fix regression in re_finder for CVS repos (and maybe Git repos
    -  as well).
    -
    ----
    -2.1
    ----
    -
    -* `Issue #129 `_: Suppress inspection of ``*.whl`` files when searching for files
    -  in a zip-imported file.
    -* `Issue #131 `_: Fix RuntimeError when constructing an egg fetcher.
    -
    ------
    -2.0.2
    ------
    -
    -* Fix NameError during installation with Python implementations (e.g. Jython)
    -  not containing parser module.
    -* Fix NameError in ``sdist:re_finder``.
    -
    ------
    -2.0.1
    ------
    -
    -* `Issue #124 `_: Fixed error in list detection in upload_docs.
    -
    ----
    -2.0
    ----
    -
    -* `Issue #121 `_: Exempt lib2to3 pickled grammars from DirectorySandbox.
    -* `Issue #41 `_: Dropped support for Python 2.4 and Python 2.5. Clients requiring
    -  setuptools for those versions of Python should use setuptools 1.x.
    -* Removed ``setuptools.command.easy_install.HAS_USER_SITE``. Clients
    -  expecting this boolean variable should use ``site.ENABLE_USER_SITE``
    -  instead.
    -* Removed ``pkg_resources.ImpWrapper``. Clients that expected this class
    -  should use ``pkgutil.ImpImporter`` instead.
    -
    ------
    -1.4.2
    ------
    -
    -* `Issue #116 `_: Correct TypeError when reading a local package index on Python
    -  3.
    -
    ------
    -1.4.1
    ------
    -
    -* `Issue #114 `_: Use ``sys.getfilesystemencoding`` for decoding config in
    -  ``bdist_wininst`` distributions.
    -
    -* `Issue #105 `_ and `Issue #113 `_: Establish a more robust technique for
    -  determining the terminal encoding::
    -
    -    1. Try ``getpreferredencoding``
    -    2. If that returns US_ASCII or None, try the encoding from
    -       ``getdefaultlocale``. If that encoding was a "fallback" because Python
    -       could not figure it out from the environment or OS, encoding remains
    -       unresolved.
    -    3. If the encoding is resolved, then make sure Python actually implements
    -       the encoding.
    -    4. On the event of an error or unknown codec, revert to fallbacks
    -       (UTF-8 on Darwin, ASCII on everything else).
    -    5. On the encoding is 'mac-roman' on Darwin, use UTF-8 as 'mac-roman' was
    -       a bug on older Python releases.
    -
    -    On a side note, it would seem that the encoding only matters for when SVN
    -    does not yet support ``--xml`` and when getting repository and svn version
    -    numbers. The ``--xml`` technique should yield UTF-8 according to some
    -    messages on the SVN mailing lists. So if the version numbers are always
    -    7-bit ASCII clean, it may be best to only support the file parsing methods
    -    for legacy SVN releases and support for SVN without the subprocess command
    -    would simple go away as support for the older SVNs does.
    -
    ----
    -1.4
    ----
    -
    -* `Issue #27 `_: ``easy_install`` will now use credentials from .pypirc if
    -  present for connecting to the package index.
    -* `Pull Request #21 `_: Omit unwanted newlines in ``package_index._encode_auth``
    -  when the username/password pair length indicates wrapping.
    -
    ------
    -1.3.2
    ------
    -
    -* `Issue #99 `_: Fix filename encoding issues in SVN support.
    -
    ------
    -1.3.1
    ------
    -
    -* Remove exuberant warning in SVN support when SVN is not used.
    -
    ----
    -1.3
    ----
    -
    -* Address security vulnerability in SSL match_hostname check as reported in
    -  `Python #17997 `_.
    -* Prefer `backports.ssl_match_hostname
    -  `_ for backport
    -  implementation if present.
    -* Correct NameError in ``ssl_support`` module (``socket.error``).
    -
    ----
    -1.2
    ----
    -
    -* `Issue #26 `_: Add support for SVN 1.7. Special thanks to Philip Thiem for the
    -  contribution.
    -* `Issue #93 `_: Wheels are now distributed with every release. Note that as
    -  reported in `Issue #108 `_, as of Pip 1.4, scripts aren't installed properly
    -  from wheels. Therefore, if using Pip to install setuptools from a wheel,
    -  the ``easy_install`` command will not be available.
    -* Setuptools "natural" launcher support, introduced in 1.0, is now officially
    -  supported.
    -
    ------
    -1.1.7
    ------
    -
    -* Fixed behavior of NameError handling in 'script template (dev).py' (script
    -  launcher for 'develop' installs).
    -* ``ez_setup.py`` now ensures partial downloads are cleaned up following
    -  a failed download.
    -* `Distribute #363 `_ and `Issue #55 `_: Skip an sdist test that fails on locales
    -  other than UTF-8.
    -
    ------
    -1.1.6
    ------
    -
    -* `Distribute #349 `_: ``sandbox.execfile`` now opens the target file in binary
    -  mode, thus honoring a BOM in the file when compiled.
    -
    ------
    -1.1.5
    ------
    -
    -* `Issue #69 `_: Second attempt at fix (logic was reversed).
    -
    ------
    -1.1.4
    ------
    -
    -* `Issue #77 `_: Fix error in upload command (Python 2.4).
    -
    ------
    -1.1.3
    ------
    -
    -* Fix NameError in previous patch.
    -
    ------
    -1.1.2
    ------
    -
    -* `Issue #69 `_: Correct issue where 404 errors are returned for URLs with
    -  fragments in them (such as #egg=).
    -
    ------
    -1.1.1
    ------
    -
    -* `Issue #75 `_: Add ``--insecure`` option to ez_setup.py to accommodate
    -  environments where a trusted SSL connection cannot be validated.
    -* `Issue #76 `_: Fix AttributeError in upload command with Python 2.4.
    -
    ----
    -1.1
    ----
    -
    -* `Issue #71 `_ (`Distribute #333 `_): EasyInstall now puts less emphasis on the
    -  condition when a host is blocked via ``--allow-hosts``.
    -* `Issue #72 `_: Restored Python 2.4 compatibility in ``ez_setup.py``.
    -
    ----
    -1.0
    ----
    -
    -* `Issue #60 `_: On Windows, Setuptools supports deferring to another launcher,
    -  such as Vinay Sajip's `pylauncher `_
    -  (included with Python 3.3) to launch console and GUI scripts and not install
    -  its own launcher executables. This experimental functionality is currently
    -  only enabled if  the ``SETUPTOOLS_LAUNCHER`` environment variable is set to
    -  "natural". In the future, this behavior may become default, but only after
    -  it has matured and seen substantial adoption. The ``SETUPTOOLS_LAUNCHER``
    -  also accepts "executable" to force the default behavior of creating launcher
    -  executables.
    -* `Issue #63 `_: Bootstrap script (ez_setup.py) now prefers Powershell, curl, or
    -  wget for retrieving the Setuptools tarball for improved security of the
    -  install. The script will still fall back to a simple ``urlopen`` on
    -  platforms that do not have these tools.
    -* `Issue #65 `_: Deprecated the ``Features`` functionality.
    -* `Issue #52 `_: In ``VerifyingHTTPSConn``, handle a tunnelled (proxied)
    -  connection.
    -
    -Backward-Incompatible Changes
    -=============================
    -
    -This release includes a couple of backward-incompatible changes, but most if
    -not all users will find 1.0 a drop-in replacement for 0.9.
    -
    -* `Issue #50 `_: Normalized API of environment marker support. Specifically,
    -  removed line number and filename from SyntaxErrors when returned from
    -  `pkg_resources.invalid_marker`. Any clients depending on the specific
    -  string representation of exceptions returned by that function may need to
    -  be updated to account for this change.
    -* `Issue #50 `_: SyntaxErrors generated by `pkg_resources.invalid_marker` are
    -  normalized for cross-implementation consistency.
    -* Removed ``--ignore-conflicts-at-my-risk`` and ``--delete-conflicting``
    -  options to easy_install. These options have been deprecated since 0.6a11.
    -
    ------
    -0.9.8
    ------
    -
    -* `Issue #53 `_: Fix NameErrors in `_vcs_split_rev_from_url`.
    -
    ------
    -0.9.7
    ------
    -
    -* `Issue #49 `_: Correct AttributeError on PyPy where a hashlib.HASH object does
    -  not have a `.name` attribute.
    -* `Issue #34 `_: Documentation now refers to bootstrap script in code repository
    -  referenced by bookmark.
    -* Add underscore-separated keys to environment markers (markerlib).
    -
    ------
    -0.9.6
    ------
    -
    -* `Issue #44 `_: Test failure on Python 2.4 when MD5 hash doesn't have a `.name`
    -  attribute.
    -
    ------
    -0.9.5
    ------
    -
    -* `Python #17980 `_: Fix security vulnerability in SSL certificate validation.
    -
    ------
    -0.9.4
    ------
    -
    -* `Issue #43 `_: Fix issue (introduced in 0.9.1) with version resolution when
    -  upgrading over other releases of Setuptools.
    -
    ------
    -0.9.3
    ------
    -
    -* `Issue #42 `_: Fix new ``AttributeError`` introduced in last fix.
    -
    ------
    -0.9.2
    ------
    -
    -* `Issue #42 `_: Fix regression where blank checksums would trigger an
    -  ``AttributeError``.
    -
    ------
    -0.9.1
    ------
    -
    -* `Distribute #386 `_: Allow other positional and keyword arguments to os.open.
    -* Corrected dependency on certifi mis-referenced in 0.9.
    -
    ----
    -0.9
    ----
    -
    -* `package_index` now validates hashes other than MD5 in download links.
    -
    ----
    -0.8
    ----
    -
    -* Code base now runs on Python 2.4 - Python 3.3 without Python 2to3
    -  conversion.
    -
    ------
    -0.7.8
    ------
    -
    -* `Distribute #375 `_: Yet another fix for yet another regression.
    -
    ------
    -0.7.7
    ------
    -
    -* `Distribute #375 `_: Repair AttributeError created in last release (redo).
    -* `Issue #30 `_: Added test for get_cache_path.
    -
    ------
    -0.7.6
    ------
    -
    -* `Distribute #375 `_: Repair AttributeError created in last release.
    -
    ------
    -0.7.5
    ------
    -
    -* `Issue #21 `_: Restore Python 2.4 compatibility in ``test_easy_install``.
    -* `Distribute #375 `_: Merged additional warning from Distribute 0.6.46.
    -* Now honor the environment variable
    -  ``SETUPTOOLS_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT`` in addition to the now
    -  deprecated ``DISTRIBUTE_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT``.
    -
    ------
    -0.7.4
    ------
    -
    -* `Issue #20 `_: Fix comparison of parsed SVN version on Python 3.
    -
    ------
    -0.7.3
    ------
    -
    -* `Issue #1 `_: Disable installation of Windows-specific files on non-Windows systems.
    -* Use new sysconfig module with Python 2.7 or >=3.2.
    -
    ------
    -0.7.2
    ------
    -
    -* `Issue #14 `_: Use markerlib when the `parser` module is not available.
    -* `Issue #10 `_: ``ez_setup.py`` now uses HTTPS to download setuptools from PyPI.
    -
    ------
    -0.7.1
    ------
    -
    -* Fix NameError (`Issue #3 `_) again - broken in bad merge.
    -
    ----
    -0.7
    ----
    -
    -* Merged Setuptools and Distribute. See docs/merge.txt for details.
    -
    -Added several features that were slated for setuptools 0.6c12:
    -
    -* Index URL now defaults to HTTPS.
    -* Added experimental environment marker support. Now clients may designate a
    -  PEP-426 environment marker for "extra" dependencies. Setuptools uses this
    -  feature in ``setup.py`` for optional SSL and certificate validation support
    -  on older platforms. Based on Distutils-SIG discussions, the syntax is
    -  somewhat tentative. There should probably be a PEP with a firmer spec before
    -  the feature should be considered suitable for use.
    -* Added support for SSL certificate validation when installing packages from
    -  an HTTPS service.
    -
    ------
    -0.7b4
    ------
    -
    -* `Issue #3 `_: Fixed NameError in SSL support.
    -
    -------
    -0.6.49
    -------
    -
    -* Move warning check in ``get_cache_path`` to follow the directory creation
    -  to avoid errors when the cache path does not yet exist. Fixes the error
    -  reported in `Distribute #375 `_.
    -
    -------
    -0.6.48
    -------
    -
    -* Correct AttributeError in ``ResourceManager.get_cache_path`` introduced in
    -  0.6.46 (redo).
    -
    -------
    -0.6.47
    -------
    -
    -* Correct AttributeError in ``ResourceManager.get_cache_path`` introduced in
    -  0.6.46.
    -
    -------
    -0.6.46
    -------
    -
    -* `Distribute #375 `_: Issue a warning if the PYTHON_EGG_CACHE or otherwise
    -  customized egg cache location specifies a directory that's group- or
    -  world-writable.
    -
    -------
    -0.6.45
    -------
    -
    -* `Distribute #379 `_: ``distribute_setup.py`` now traps VersionConflict as well,
    -  restoring ability to upgrade from an older setuptools version.
    -
    -------
    -0.6.44
    -------
    -
    -* ``distribute_setup.py`` has been updated to allow Setuptools 0.7 to
    -  satisfy use_setuptools.
    -
    -------
    -0.6.43
    -------
    -
    -* `Distribute #378 `_: Restore support for Python 2.4 Syntax (regression in 0.6.42).
    -
    -------
    -0.6.42
    -------
    -
    -* External links finder no longer yields duplicate links.
    -* `Distribute #337 `_: Moved site.py to setuptools/site-patch.py (graft of very old
    -  patch from setuptools trunk which inspired PR `#31 `_).
    -
    -------
    -0.6.41
    -------
    -
    -* `Distribute #27 `_: Use public api for loading resources from zip files rather than
    -  the private method `_zip_directory_cache`.
    -* Added a new function ``easy_install.get_win_launcher`` which may be used by
    -  third-party libraries such as buildout to get a suitable script launcher.
    -
    -------
    -0.6.40
    -------
    -
    -* `Distribute #376 `_: brought back cli.exe and gui.exe that were deleted in the
    -  previous release.
    -
    -------
    -0.6.39
    -------
    -
    -* Add support for console launchers on ARM platforms.
    -* Fix possible issue in GUI launchers where the subsystem was not supplied to
    -  the linker.
    -* Launcher build script now refactored for robustness.
    -* `Distribute #375 `_: Resources extracted from a zip egg to the file system now also
    -  check the contents of the file against the zip contents during each
    -  invocation of get_resource_filename.
    -
    -------
    -0.6.38
    -------
    -
    -* `Distribute #371 `_: The launcher manifest file is now installed properly.
    -
    -------
    -0.6.37
    -------
    -
    -* `Distribute #143 `_: Launcher scripts, including easy_install itself, are now
    -  accompanied by a manifest on 32-bit Windows environments to avoid the
    -  Installer Detection Technology and thus undesirable UAC elevation described
    -  in `this Microsoft article
    -  `_.
    -
    -------
    -0.6.36
    -------
    -
    -* `Pull Request #35 `_: In `Buildout #64 `_, it was reported that
    -  under Python 3, installation of distutils scripts could attempt to copy
    -  the ``__pycache__`` directory as a file, causing an error, apparently only
    -  under Windows. Easy_install now skips all directories when processing
    -  metadata scripts.
    -
    -------
    -0.6.35
    -------
    -
    -
    -Note this release is backward-incompatible with distribute 0.6.23-0.6.34 in
    -how it parses version numbers.
    -
    -* `Distribute #278 `_: Restored compatibility with distribute 0.6.22 and setuptools
    -  0.6. Updated the documentation to match more closely with the version
    -  parsing as intended in setuptools 0.6.
    -
    -------
    -0.6.34
    -------
    -
    -* `Distribute #341 `_: 0.6.33 fails to build under Python 2.4.
    -
    -------
    -0.6.33
    -------
    -
    -* Fix 2 errors with Jython 2.5.
    -* Fix 1 failure with Jython 2.5 and 2.7.
    -* Disable workaround for Jython scripts on Linux systems.
    -* `Distribute #336 `_: `setup.py` no longer masks failure exit code when tests fail.
    -* Fix issue in pkg_resources where try/except around a platform-dependent
    -  import would trigger hook load failures on Mercurial. See pull request 32
    -  for details.
    -* `Distribute #341 `_: Fix a ResourceWarning.
    -
    -------
    -0.6.32
    -------
    -
    -* Fix test suite with Python 2.6.
    -* Fix some DeprecationWarnings and ResourceWarnings.
    -* `Distribute #335 `_: Backed out `setup_requires` superceding installed requirements
    -  until regression can be addressed.
    -
    -------
    -0.6.31
    -------
    -
    -* `Distribute #303 `_: Make sure the manifest only ever contains UTF-8 in Python 3.
    -* `Distribute #329 `_: Properly close files created by tests for compatibility with
    -  Jython.
    -* Work around `Jython #1980 `_ and `Jython #1981 `_.
    -* `Distribute #334 `_: Provide workaround for packages that reference `sys.__stdout__`
    -  such as numpy does. This change should address
    -  `virtualenv `#359 `_ `_ as long
    -  as the system encoding is UTF-8 or the IO encoding is specified in the
    -  environment, i.e.::
    -
    -     PYTHONIOENCODING=utf8 pip install numpy
    -
    -* Fix for encoding issue when installing from Windows executable on Python 3.
    -* `Distribute #323 `_: Allow `setup_requires` requirements to supercede installed
    -  requirements. Added some new keyword arguments to existing pkg_resources
    -  methods. Also had to updated how __path__ is handled for namespace packages
    -  to ensure that when a new egg distribution containing a namespace package is
    -  placed on sys.path, the entries in __path__ are found in the same order they
    -  would have been in had that egg been on the path when pkg_resources was
    -  first imported.
    -
    -------
    -0.6.30
    -------
    -
    -* `Distribute #328 `_: Clean up temporary directories in distribute_setup.py.
    -* Fix fatal bug in distribute_setup.py.
    -
    -------
    -0.6.29
    -------
    -
    -* `Pull Request #14 `_: Honor file permissions in zip files.
    -* `Distribute #327 `_: Merged pull request `#24 `_ to fix a dependency problem with pip.
    -* Merged pull request `#23 `_ to fix https://github.com/pypa/virtualenv/issues/301.
    -* If Sphinx is installed, the `upload_docs` command now runs `build_sphinx`
    -  to produce uploadable documentation.
    -* `Distribute #326 `_: `upload_docs` provided mangled auth credentials under Python 3.
    -* `Distribute #320 `_: Fix check for "createable" in distribute_setup.py.
    -* `Distribute #305 `_: Remove a warning that was triggered during normal operations.
    -* `Distribute #311 `_: Print metadata in UTF-8 independent of platform.
    -* `Distribute #303 `_: Read manifest file with UTF-8 encoding under Python 3.
    -* `Distribute #301 `_: Allow to run tests of namespace packages when using 2to3.
    -* `Distribute #304 `_: Prevent import loop in site.py under Python 3.3.
    -* `Distribute #283 `_: Reenable scanning of `*.pyc` / `*.pyo` files on Python 3.3.
    -* `Distribute #299 `_: The develop command didn't work on Python 3, when using 2to3,
    -  as the egg link would go to the Python 2 source. Linking to the 2to3'd code
    -  in build/lib makes it work, although you will have to rebuild the module
    -  before testing it.
    -* `Distribute #306 `_: Even if 2to3 is used, we build in-place under Python 2.
    -* `Distribute #307 `_: Prints the full path when .svn/entries is broken.
    -* `Distribute #313 `_: Support for sdist subcommands (Python 2.7)
    -* `Distribute #314 `_: test_local_index() would fail an OS X.
    -* `Distribute #310 `_: Non-ascii characters in a namespace __init__.py causes errors.
    -* `Distribute #218 `_: Improved documentation on behavior of `package_data` and
    -  `include_package_data`. Files indicated by `package_data` are now included
    -  in the manifest.
    -* `distribute_setup.py` now allows a `--download-base` argument for retrieving
    -  distribute from a specified location.
    -
    -------
    -0.6.28
    -------
    -
    -* `Distribute #294 `_: setup.py can now be invoked from any directory.
    -* Scripts are now installed honoring the umask.
    -* Added support for .dist-info directories.
    -* `Distribute #283 `_: Fix and disable scanning of `*.pyc` / `*.pyo` files on
    -  Python 3.3.
    -
    -------
    -0.6.27
    -------
    -
    -* Support current snapshots of CPython 3.3.
    -* Distribute now recognizes README.rst as a standard, default readme file.
    -* Exclude 'encodings' modules when removing modules from sys.modules.
    -  Workaround for `#285 `_.
    -* `Distribute #231 `_: Don't fiddle with system python when used with buildout
    -  (bootstrap.py)
    -
    -------
    -0.6.26
    -------
    -
    -* `Distribute #183 `_: Symlinked files are now extracted from source distributions.
    -* `Distribute #227 `_: Easy_install fetch parameters are now passed during the
    -  installation of a source distribution; now fulfillment of setup_requires
    -  dependencies will honor the parameters passed to easy_install.
    -
    -------
    -0.6.25
    -------
    -
    -* `Distribute #258 `_: Workaround a cache issue
    -* `Distribute #260 `_: distribute_setup.py now accepts the --user parameter for
    -  Python 2.6 and later.
    -* `Distribute #262 `_: package_index.open_with_auth no longer throws LookupError
    -  on Python 3.
    -* `Distribute #269 `_: AttributeError when an exception occurs reading Manifest.in
    -  on late releases of Python.
    -* `Distribute #272 `_: Prevent TypeError when namespace package names are unicode
    -  and single-install-externally-managed is used. Also fixes PIP issue
    -  449.
    -* `Distribute #273 `_: Legacy script launchers now install with Python2/3 support.
    -
    -------
    -0.6.24
    -------
    -
    -* `Distribute #249 `_: Added options to exclude 2to3 fixers
    -
    -------
    -0.6.23
    -------
    -
    -* `Distribute #244 `_: Fixed a test
    -* `Distribute #243 `_: Fixed a test
    -* `Distribute #239 `_: Fixed a test
    -* `Distribute #240 `_: Fixed a test
    -* `Distribute #241 `_: Fixed a test
    -* `Distribute #237 `_: Fixed a test
    -* `Distribute #238 `_: easy_install now uses 64bit executable wrappers on 64bit Python
    -* `Distribute #208 `_: Fixed parsed_versions, it now honors post-releases as noted in the documentation
    -* `Distribute #207 `_: Windows cli and gui wrappers pass CTRL-C to child python process
    -* `Distribute #227 `_: easy_install now passes its arguments to setup.py bdist_egg
    -* `Distribute #225 `_: Fixed a NameError on Python 2.5, 2.4
    -
    -------
    -0.6.21
    -------
    -
    -* `Distribute #225 `_: FIxed a regression on py2.4
    -
    -------
    -0.6.20
    -------
    -
    -* `Distribute #135 `_: Include url in warning when processing URLs in package_index.
    -* `Distribute #212 `_: Fix issue where easy_instal fails on Python 3 on windows installer.
    -* `Distribute #213 `_: Fix typo in documentation.
    -
    -------
    -0.6.19
    -------
    -
    -* `Distribute #206 `_: AttributeError: 'HTTPMessage' object has no attribute 'getheaders'
    -
    -------
    -0.6.18
    -------
    -
    -* `Distribute #210 `_: Fixed a regression introduced by `Distribute #204 `_ fix.
    -
    -------
    -0.6.17
    -------
    -
    -* Support 'DISTRIBUTE_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT' environment
    -  variable to allow to disable installation of easy_install-${version} script.
    -* Support Python >=3.1.4 and >=3.2.1.
    -* `Distribute #204 `_: Don't try to import the parent of a namespace package in
    -  declare_namespace
    -* `Distribute #196 `_: Tolerate responses with multiple Content-Length headers
    -* `Distribute #205 `_: Sandboxing doesn't preserve working_set. Leads to setup_requires
    -  problems.
    -
    -------
    -0.6.16
    -------
    -
    -* Builds sdist gztar even on Windows (avoiding `Distribute #193 `_).
    -* `Distribute #192 `_: Fixed metadata omitted on Windows when package_dir
    -  specified with forward-slash.
    -* `Distribute #195 `_: Cython build support.
    -* `Distribute #200 `_: Issues with recognizing 64-bit packages on Windows.
    -
    -------
    -0.6.15
    -------
    -
    -* Fixed typo in bdist_egg
    -* Several issues under Python 3 has been solved.
    -* `Distribute #146 `_: Fixed missing DLL files after easy_install of windows exe package.
    -
    -------
    -0.6.14
    -------
    -
    -* `Distribute #170 `_: Fixed unittest failure. Thanks to Toshio.
    -* `Distribute #171 `_: Fixed race condition in unittests cause deadlocks in test suite.
    -* `Distribute #143 `_: Fixed a lookup issue with easy_install.
    -  Thanks to David and Zooko.
    -* `Distribute #174 `_: Fixed the edit mode when its used with setuptools itself
    -
    -------
    -0.6.13
    -------
    -
    -* `Distribute #160 `_: 2.7 gives ValueError("Invalid IPv6 URL")
    -* `Distribute #150 `_: Fixed using ~/.local even in a --no-site-packages virtualenv
    -* `Distribute #163 `_: scan index links before external links, and don't use the md5 when
    -  comparing two distributions
    -
    -------
    -0.6.12
    -------
    -
    -* `Distribute #149 `_: Fixed various failures on 2.3/2.4
    -
    -------
    -0.6.11
    -------
    -
    -* Found another case of SandboxViolation - fixed
    -* `Distribute #15 `_ and `Distribute #48 `_: Introduced a socket timeout of 15 seconds on url openings
    -* Added indexsidebar.html into MANIFEST.in
    -* `Distribute #108 `_: Fixed TypeError with Python3.1
    -* `Distribute #121 `_: Fixed --help install command trying to actually install.
    -* `Distribute #112 `_: Added an os.makedirs so that Tarek's solution will work.
    -* `Distribute #133 `_: Added --no-find-links to easy_install
    -* Added easy_install --user
    -* `Distribute #100 `_: Fixed develop --user not taking '.' in PYTHONPATH into account
    -* `Distribute #134 `_: removed spurious UserWarnings. Patch by VanLindberg
    -* `Distribute #138 `_: cant_write_to_target error when setup_requires is used.
    -* `Distribute #147 `_: respect the sys.dont_write_bytecode flag
    -
    -------
    -0.6.10
    -------
    -
    -* Reverted change made for the DistributionNotFound exception because
    -  zc.buildout uses the exception message to get the name of the
    -  distribution.
    -
    ------
    -0.6.9
    ------
    -
    -* `Distribute #90 `_: unknown setuptools version can be added in the working set
    -* `Distribute #87 `_: setupt.py doesn't try to convert distribute_setup.py anymore
    -  Initial Patch by arfrever.
    -* `Distribute #89 `_: added a side bar with a download link to the doc.
    -* `Distribute #86 `_: fixed missing sentence in pkg_resources doc.
    -* Added a nicer error message when a DistributionNotFound is raised.
    -* `Distribute #80 `_: test_develop now works with Python 3.1
    -* `Distribute #93 `_: upload_docs now works if there is an empty sub-directory.
    -* `Distribute #70 `_: exec bit on non-exec files
    -* `Distribute #99 `_: now the standalone easy_install command doesn't uses a
    -  "setup.cfg" if any exists in the working directory. It will use it
    -  only if triggered by ``install_requires`` from a setup.py call
    -  (install, develop, etc).
    -* `Distribute #101 `_: Allowing ``os.devnull`` in Sandbox
    -* `Distribute #92 `_: Fixed the "no eggs" found error with MacPort
    -  (platform.mac_ver() fails)
    -* `Distribute #103 `_: test_get_script_header_jython_workaround not run
    -  anymore under py3 with C or POSIX local. Contributed by Arfrever.
    -* `Distribute #104 `_: remvoved the assertion when the installation fails,
    -  with a nicer message for the end user.
    -* `Distribute #100 `_: making sure there's no SandboxViolation when
    -  the setup script patches setuptools.
    -
    ------
    -0.6.8
    ------
    -
    -* Added "check_packages" in dist. (added in Setuptools 0.6c11)
    -* Fixed the DONT_PATCH_SETUPTOOLS state.
    -
    ------
    -0.6.7
    ------
    -
    -* `Distribute #58 `_: Added --user support to the develop command
    -* `Distribute #11 `_: Generated scripts now wrap their call to the script entry point
    -  in the standard "if name == 'main'"
    -* Added the 'DONT_PATCH_SETUPTOOLS' environment variable, so virtualenv
    -  can drive an installation that doesn't patch a global setuptools.
    -* Reviewed unladen-swallow specific change from
    -  http://code.google.com/p/unladen-swallow/source/detail?spec=svn875&r=719
    -  and determined that it no longer applies. Distribute should work fine with
    -  Unladen Swallow 2009Q3.
    -* `Distribute #21 `_: Allow PackageIndex.open_url to gracefully handle all cases of a
    -  httplib.HTTPException instead of just InvalidURL and BadStatusLine.
    -* Removed virtual-python.py from this distribution and updated documentation
    -  to point to the actively maintained virtualenv instead.
    -* `Distribute #64 `_: use_setuptools no longer rebuilds the distribute egg every
    -  time it is run
    -* use_setuptools now properly respects the requested version
    -* use_setuptools will no longer try to import a distribute egg for the
    -  wrong Python version
    -* `Distribute #74 `_: no_fake should be True by default.
    -* `Distribute #72 `_: avoid a bootstrapping issue with easy_install -U
    -
    ------
    -0.6.6
    ------
    -
    -* Unified the bootstrap file so it works on both py2.x and py3k without 2to3
    -  (patch by Holger Krekel)
    -
    ------
    -0.6.5
    ------
    -
    -* `Distribute #65 `_: cli.exe and gui.exe are now generated at build time,
    -  depending on the platform in use.
    -
    -* `Distribute #67 `_: Fixed doc typo (PEP 381/382)
    -
    -* Distribute no longer shadows setuptools if we require a 0.7-series
    -  setuptools.  And an error is raised when installing a 0.7 setuptools with
    -  distribute.
    -
    -* When run from within buildout, no attempt is made to modify an existing
    -  setuptools egg, whether in a shared egg directory or a system setuptools.
    -
    -* Fixed a hole in sandboxing allowing builtin file to write outside of
    -  the sandbox.
    -
    ------
    -0.6.4
    ------
    -
    -* Added the generation of `distribute_setup_3k.py` during the release.
    -  This closes `Distribute #52 `_.
    -
    -* Added an upload_docs command to easily upload project documentation to
    -  PyPI's https://pythonhosted.org. This close issue `Distribute #56 `_.
    -
    -* Fixed a bootstrap bug on the use_setuptools() API.
    -
    ------
    -0.6.3
    ------
    -
    -setuptools
    -==========
    -
    -* Fixed a bunch of calls to file() that caused crashes on Python 3.
    -
    -bootstrapping
    -=============
    -
    -* Fixed a bug in sorting that caused bootstrap to fail on Python 3.
    -
    ------
    -0.6.2
    ------
    -
    -setuptools
    -==========
    -
    -* Added Python 3 support; see docs/python3.txt.
    -  This closes `Old Setuptools #39 `_.
    -
    -* Added option to run 2to3 automatically when installing on Python 3.
    -  This closes issue `Distribute #31 `_.
    -
    -* Fixed invalid usage of requirement.parse, that broke develop -d.
    -  This closes `Old Setuptools #44 `_.
    -
    -* Fixed script launcher for 64-bit Windows.
    -  This closes `Old Setuptools #2 `_.
    -
    -* KeyError when compiling extensions.
    -  This closes `Old Setuptools #41 `_.
    -
    -bootstrapping
    -=============
    -
    -* Fixed bootstrap not working on Windows. This closes issue `Distribute #49 `_.
    -
    -* Fixed 2.6 dependencies. This closes issue `Distribute #50 `_.
    -
    -* Make sure setuptools is patched when running through easy_install
    -  This closes `Old Setuptools #40 `_.
    -
    ------
    -0.6.1
    ------
    -
    -setuptools
    -==========
    -
    -* package_index.urlopen now catches BadStatusLine and malformed url errors.
    -  This closes `Distribute #16 `_ and `Distribute #18 `_.
    -
    -* zip_ok is now False by default. This closes `Old Setuptools #33 `_.
    -
    -* Fixed invalid URL error catching. `Old Setuptools #20 `_.
    -
    -* Fixed invalid bootstraping with easy_install installation (`Distribute #40 `_).
    -  Thanks to Florian Schulze for the help.
    -
    -* Removed buildout/bootstrap.py. A new repository will create a specific
    -  bootstrap.py script.
    -
    -
    -bootstrapping
    -=============
    -
    -* The boostrap process leave setuptools alone if detected in the system
    -  and --root or --prefix is provided, but is not in the same location.
    -  This closes `Distribute #10 `_.
    -
    ----
    -0.6
    ----
    -
    -setuptools
    -==========
    -
    -* Packages required at build time where not fully present at install time.
    -  This closes `Distribute #12 `_.
    -
    -* Protected against failures in tarfile extraction. This closes `Distribute #10 `_.
    -
    -* Made Jython api_tests.txt doctest compatible. This closes `Distribute #7 `_.
    -
    -* sandbox.py replaced builtin type file with builtin function open. This
    -  closes `Distribute #6 `_.
    -
    -* Immediately close all file handles. This closes `Distribute #3 `_.
    -
    -* Added compatibility with Subversion 1.6. This references `Distribute #1 `_.
    -
    -pkg_resources
    -=============
    -
    -* Avoid a call to /usr/bin/sw_vers on OSX and use the official platform API
    -  instead. Based on a patch from ronaldoussoren. This closes issue `#5 `_.
    -
    -* Fixed a SandboxViolation for mkdir that could occur in certain cases.
    -  This closes `Distribute #13 `_.
    -
    -* Allow to find_on_path on systems with tight permissions to fail gracefully.
    -  This closes `Distribute #9 `_.
    -
    -* Corrected inconsistency between documentation and code of add_entry.
    -  This closes `Distribute #8 `_.
    -
    -* Immediately close all file handles. This closes `Distribute #3 `_.
    -
    -easy_install
    -============
    -
    -* Immediately close all file handles. This closes `Distribute #3 `_.
    -
    ------
    -0.6c9
    ------
    -
    - * Fixed a missing files problem when using Windows source distributions on
    -   non-Windows platforms, due to distutils not handling manifest file line
    -   endings correctly.
    -
    - * Updated Pyrex support to work with Pyrex 0.9.6 and higher.
    -
    - * Minor changes for Jython compatibility, including skipping tests that can't
    -   work on Jython.
    -
    - * Fixed not installing eggs in ``install_requires`` if they were also used for
    -   ``setup_requires`` or ``tests_require``.
    -
    - * Fixed not fetching eggs in ``install_requires`` when running tests.
    -
    - * Allow ``ez_setup.use_setuptools()`` to upgrade existing setuptools
    -   installations when called from a standalone ``setup.py``.
    -
    - * Added a warning if a namespace package is declared, but its parent package
    -   is not also declared as a namespace.
    -
    - * Support Subversion 1.5
    -
    - * Removed use of deprecated ``md5`` module if ``hashlib`` is available
    -
    - * Fixed ``bdist_wininst upload`` trying to upload the ``.exe`` twice
    -
    - * Fixed ``bdist_egg`` putting a ``native_libs.txt`` in the source package's
    -   ``.egg-info``, when it should only be in the built egg's ``EGG-INFO``.
    -
    - * Ensure that _full_name is set on all shared libs before extensions are
    -   checked for shared lib usage.  (Fixes a bug in the experimental shared
    -   library build support.)
    -
    - * Fix to allow unpacked eggs containing native libraries to fail more
    -   gracefully under Google App Engine (with an ``ImportError`` loading the
    -   C-based module, instead of getting a ``NameError``).
    -
    ------
    -0.6c7
    ------
    -
    - * Fixed ``distutils.filelist.findall()`` crashing on broken symlinks, and
    -   ``egg_info`` command failing on new, uncommitted SVN directories.
    -
    - * Fix import problems with nested namespace packages installed via
    -   ``--root`` or ``--single-version-externally-managed``, due to the
    -   parent package not having the child package as an attribute.
    -
    ------
    -0.6c6
    ------
    -
    - * Added ``--egg-path`` option to ``develop`` command, allowing you to force
    -   ``.egg-link`` files to use relative paths (allowing them to be shared across
    -   platforms on a networked drive).
    -
    - * Fix not building binary RPMs correctly.
    -
    - * Fix "eggsecutables" (such as setuptools' own egg) only being runnable with
    -   bash-compatible shells.
    -
    - * Fix ``#!`` parsing problems in Windows ``.exe`` script wrappers, when there
    -   was whitespace inside a quoted argument or at the end of the ``#!`` line
    -   (a regression introduced in 0.6c4).
    -
    - * Fix ``test`` command possibly failing if an older version of the project
    -   being tested was installed on ``sys.path`` ahead of the test source
    -   directory.
    -
    - * Fix ``find_packages()`` treating ``ez_setup`` and directories with ``.`` in
    -   their names as packages.
    -
    ------
    -0.6c5
    ------
    -
    - * Fix uploaded ``bdist_rpm`` packages being described as ``bdist_egg``
    -   packages under Python versions less than 2.5.
    -
    - * Fix uploaded ``bdist_wininst`` packages being described as suitable for
    -   "any" version by Python 2.5, even if a ``--target-version`` was specified.
    -
    ------
    -0.6c4
    ------
    -
    - * Overhauled Windows script wrapping to support ``bdist_wininst`` better.
    -   Scripts installed with ``bdist_wininst`` will always use ``#!python.exe`` or
    -   ``#!pythonw.exe`` as the executable name (even when built on non-Windows
    -   platforms!), and the wrappers will look for the executable in the script's
    -   parent directory (which should find the right version of Python).
    -
    - * Fix ``upload`` command not uploading files built by ``bdist_rpm`` or
    -   ``bdist_wininst`` under Python 2.3 and 2.4.
    -
    - * Add support for "eggsecutable" headers: a ``#!/bin/sh`` script that is
    -   prepended to an ``.egg`` file to allow it to be run as a script on Unix-ish
    -   platforms.  (This is mainly so that setuptools itself can have a single-file
    -   installer on Unix, without doing multiple downloads, dealing with firewalls,
    -   etc.)
    -
    - * Fix problem with empty revision numbers in Subversion 1.4 ``entries`` files
    -
    - * Use cross-platform relative paths in ``easy-install.pth`` when doing
    -   ``develop`` and the source directory is a subdirectory of the installation
    -   target directory.
    -
    - * Fix a problem installing eggs with a system packaging tool if the project
    -   contained an implicit namespace package; for example if the ``setup()``
    -   listed a namespace package ``foo.bar`` without explicitly listing ``foo``
    -   as a namespace package.
    -
    ------
    -0.6c3
    ------
    -
    - * Fixed breakages caused by Subversion 1.4's new "working copy" format
    -
    ------
    -0.6c2
    ------
    -
    - * The ``ez_setup`` module displays the conflicting version of setuptools (and
    -   its installation location) when a script requests a version that's not
    -   available.
    -
    - * Running ``setup.py develop`` on a setuptools-using project will now install
    -   setuptools if needed, instead of only downloading the egg.
    -
    ------
    -0.6c1
    ------
    -
    - * Fixed ``AttributeError`` when trying to download a ``setup_requires``
    -   dependency when a distribution lacks a ``dependency_links`` setting.
    -
    - * Made ``zip-safe`` and ``not-zip-safe`` flag files contain a single byte, so
    -   as to play better with packaging tools that complain about zero-length
    -   files.
    -
    - * Made ``setup.py develop`` respect the ``--no-deps`` option, which it
    -   previously was ignoring.
    -
    - * Support ``extra_path`` option to ``setup()`` when ``install`` is run in
    -   backward-compatibility mode.
    -
    - * Source distributions now always include a ``setup.cfg`` file that explicitly
    -   sets ``egg_info`` options such that they produce an identical version number
    -   to the source distribution's version number.  (Previously, the default
    -   version number could be different due to the use of ``--tag-date``, or if
    -   the version was overridden on the command line that built the source
    -   distribution.)
    -
    ------
    -0.6b4
    ------
    -
    - * Fix ``register`` not obeying name/version set by ``egg_info`` command, if
    -   ``egg_info`` wasn't explicitly run first on the same command line.
    -
    - * Added ``--no-date`` and ``--no-svn-revision`` options to ``egg_info``
    -   command, to allow suppressing tags configured in ``setup.cfg``.
    -
    - * Fixed redundant warnings about missing ``README`` file(s); it should now
    -   appear only if you are actually a source distribution.
    -
    ------
    -0.6b3
    ------
    -
    - * Fix ``bdist_egg`` not including files in subdirectories of ``.egg-info``.
    -
    - * Allow ``.py`` files found by the ``include_package_data`` option to be
    -   automatically included.  Remove duplicate data file matches if both
    -   ``include_package_data`` and ``package_data`` are used to refer to the same
    -   files.
    -
    ------
    -0.6b1
    ------
    -
    - * Strip ``module`` from the end of compiled extension modules when computing
    -   the name of a ``.py`` loader/wrapper.  (Python's import machinery ignores
    -   this suffix when searching for an extension module.)
    -
    -------
    -0.6a11
    -------
    -
    - * Added ``test_loader`` keyword to support custom test loaders
    -
    - * Added ``setuptools.file_finders`` entry point group to allow implementing
    -   revision control plugins.
    -
    - * Added ``--identity`` option to ``upload`` command.
    -
    - * Added ``dependency_links`` to allow specifying URLs for ``--find-links``.
    -
    - * Enhanced test loader to scan packages as well as modules, and call
    -   ``additional_tests()`` if present to get non-unittest tests.
    -
    - * Support namespace packages in conjunction with system packagers, by omitting
    -   the installation of any ``__init__.py`` files for namespace packages, and
    -   adding a special ``.pth`` file to create a working package in
    -   ``sys.modules``.
    -
    - * Made ``--single-version-externally-managed`` automatic when ``--root`` is
    -   used, so that most system packagers won't require special support for
    -   setuptools.
    -
    - * Fixed ``setup_requires``, ``tests_require``, etc. not using ``setup.cfg`` or
    -   other configuration files for their option defaults when installing, and
    -   also made the install use ``--multi-version`` mode so that the project
    -   directory doesn't need to support .pth files.
    -
    - * ``MANIFEST.in`` is now forcibly closed when any errors occur while reading
    -   it.  Previously, the file could be left open and the actual error would be
    -   masked by problems trying to remove the open file on Windows systems.
    -
    -------
    -0.6a10
    -------
    -
    - * Fixed the ``develop`` command ignoring ``--find-links``.
    -
    ------
    -0.6a9
    ------
    -
    - * The ``sdist`` command no longer uses the traditional ``MANIFEST`` file to
    -   create source distributions.  ``MANIFEST.in`` is still read and processed,
    -   as are the standard defaults and pruning.  But the manifest is built inside
    -   the project's ``.egg-info`` directory as ``SOURCES.txt``, and it is rebuilt
    -   every time the ``egg_info`` command is run.
    -
    - * Added the ``include_package_data`` keyword to ``setup()``, allowing you to
    -   automatically include any package data listed in revision control or
    -   ``MANIFEST.in``
    -
    - * Added the ``exclude_package_data`` keyword to ``setup()``, allowing you to
    -   trim back files included via the ``package_data`` and
    -   ``include_package_data`` options.
    -
    - * Fixed ``--tag-svn-revision`` not working when run from a source
    -   distribution.
    -
    - * Added warning for namespace packages with missing ``declare_namespace()``
    -
    - * Added ``tests_require`` keyword to ``setup()``, so that e.g. packages
    -   requiring ``nose`` to run unit tests can make this dependency optional
    -   unless the ``test`` command is run.
    -
    - * Made all commands that use ``easy_install`` respect its configuration
    -   options, as this was causing some problems with ``setup.py install``.
    -
    - * Added an ``unpack_directory()`` driver to ``setuptools.archive_util``, so
    -   that you can process a directory tree through a processing filter as if it
    -   were a zipfile or tarfile.
    -
    - * Added an internal ``install_egg_info`` command to use as part of old-style
    -   ``install`` operations, that installs an ``.egg-info`` directory with the
    -   package.
    -
    - * Added a ``--single-version-externally-managed`` option to the ``install``
    -   command so that you can more easily wrap a "flat" egg in a system package.
    -
    - * Enhanced ``bdist_rpm`` so that it installs single-version eggs that
    -   don't rely on a ``.pth`` file.  The ``--no-egg`` option has been removed,
    -   since all RPMs are now built in a more backwards-compatible format.
    -
    - * Support full roundtrip translation of eggs to and from ``bdist_wininst``
    -   format.  Running ``bdist_wininst`` on a setuptools-based package wraps the
    -   egg in an .exe that will safely install it as an egg (i.e., with metadata
    -   and entry-point wrapper scripts), and ``easy_install`` can turn the .exe
    -   back into an ``.egg`` file or directory and install it as such.
    -
    -
    ------
    -0.6a8
    ------
    -
    - * Fixed some problems building extensions when Pyrex was installed, especially
    -   with Python 2.4 and/or packages using SWIG.
    -
    - * Made ``develop`` command accept all the same options as ``easy_install``,
    -   and use the ``easy_install`` command's configuration settings as defaults.
    -
    - * Made ``egg_info --tag-svn-revision`` fall back to extracting the revision
    -   number from ``PKG-INFO`` in case it is being run on a source distribution of
    -   a snapshot taken from a Subversion-based project.
    -
    - * Automatically detect ``.dll``, ``.so`` and ``.dylib`` files that are being
    -   installed as data, adding them to ``native_libs.txt`` automatically.
    -
    - * Fixed some problems with fresh checkouts of projects that don't include
    -   ``.egg-info/PKG-INFO`` under revision control and put the project's source
    -   code directly in the project directory.  If such a package had any
    -   requirements that get processed before the ``egg_info`` command can be run,
    -   the setup scripts would fail with a "Missing 'Version:' header and/or
    -   PKG-INFO file" error, because the egg runtime interpreted the unbuilt
    -   metadata in a directory on ``sys.path`` (i.e. the current directory) as
    -   being a corrupted egg.  Setuptools now monkeypatches the distribution
    -   metadata cache to pretend that the egg has valid version information, until
    -   it has a chance to make it actually be so (via the ``egg_info`` command).
    -
    ------
    -0.6a5
    ------
    -
    - * Fixed missing gui/cli .exe files in distribution.  Fixed bugs in tests.
    -
    ------
    -0.6a3
    ------
    -
    - * Added ``gui_scripts`` entry point group to allow installing GUI scripts
    -   on Windows and other platforms.  (The special handling is only for Windows;
    -   other platforms are treated the same as for ``console_scripts``.)
    -
    ------
    -0.6a2
    ------
    -
    - * Added ``console_scripts`` entry point group to allow installing scripts
    -   without the need to create separate script files.  On Windows, console
    -   scripts get an ``.exe`` wrapper so you can just type their name.  On other
    -   platforms, the scripts are written without a file extension.
    -
    ------
    -0.6a1
    ------
    -
    - * Added support for building "old-style" RPMs that don't install an egg for
    -   the target package, using a ``--no-egg`` option.
    -
    - * The ``build_ext`` command now works better when using the ``--inplace``
    -   option and multiple Python versions.  It now makes sure that all extensions
    -   match the current Python version, even if newer copies were built for a
    -   different Python version.
    -
    - * The ``upload`` command no longer attaches an extra ``.zip`` when uploading
    -   eggs, as PyPI now supports egg uploads without trickery.
    -
    - * The ``ez_setup`` script/module now displays a warning before downloading
    -   the setuptools egg, and attempts to check the downloaded egg against an
    -   internal MD5 checksum table.
    -
    - * Fixed the ``--tag-svn-revision`` option of ``egg_info`` not finding the
    -   latest revision number; it was using the revision number of the directory
    -   containing ``setup.py``, not the highest revision number in the project.
    -
    - * Added ``eager_resources`` setup argument
    -
    - * The ``sdist`` command now recognizes Subversion "deleted file" entries and
    -   does not include them in source distributions.
    -
    - * ``setuptools`` now embeds itself more thoroughly into the distutils, so that
    -   other distutils extensions (e.g. py2exe, py2app) will subclass setuptools'
    -   versions of things, rather than the native distutils ones.
    -
    - * Added ``entry_points`` and ``setup_requires`` arguments to ``setup()``;
    -   ``setup_requires`` allows you to automatically find and download packages
    -   that are needed in order to *build* your project (as opposed to running it).
    -
    - * ``setuptools`` now finds its commands, ``setup()`` argument validators, and
    -   metadata writers using entry points, so that they can be extended by
    -   third-party packages.  See `Creating distutils Extensions
    -   `_
    -   for more details.
    -
    - * The vestigial ``depends`` command has been removed.  It was never finished
    -   or documented, and never would have worked without EasyInstall - which it
    -   pre-dated and was never compatible with.
    -
    -------
    -0.5a12
    -------
    -
    - * The zip-safety scanner now checks for modules that might be used with
    -   ``python -m``, and marks them as unsafe for zipping, since Python 2.4 can't
    -   handle ``-m`` on zipped modules.
    -
    -------
    -0.5a11
    -------
    -
    - * Fix breakage of the "develop" command that was caused by the addition of
    -   ``--always-unzip`` to the ``easy_install`` command.
    -
    ------
    -0.5a9
    ------
    -
    - * Include ``svn:externals`` directories in source distributions as well as
    -   normal subversion-controlled files and directories.
    -
    - * Added ``exclude=patternlist`` option to ``setuptools.find_packages()``
    -
    - * Changed --tag-svn-revision to include an "r" in front of the revision number
    -   for better readability.
    -
    - * Added ability to build eggs without including source files (except for any
    -   scripts, of course), using the ``--exclude-source-files`` option to
    -   ``bdist_egg``.
    -
    - * ``setup.py install`` now automatically detects when an "unmanaged" package
    -   or module is going to be on ``sys.path`` ahead of a package being installed,
    -   thereby preventing the newer version from being imported.  If this occurs,
    -   a warning message is output to ``sys.stderr``, but installation proceeds
    -   anyway.  The warning message informs the user what files or directories
    -   need deleting, and advises them they can also use EasyInstall (with the
    -   ``--delete-conflicting`` option) to do it automatically.
    -
    - * The ``egg_info`` command now adds a ``top_level.txt`` file to the metadata
    -   directory that lists all top-level modules and packages in the distribution.
    -   This is used by the ``easy_install`` command to find possibly-conflicting
    -   "unmanaged" packages when installing the distribution.
    -
    - * Added ``zip_safe`` and ``namespace_packages`` arguments to ``setup()``.
    -   Added package analysis to determine zip-safety if the ``zip_safe`` flag
    -   is not given, and advise the author regarding what code might need changing.
    -
    - * Fixed the swapped ``-d`` and ``-b`` options of ``bdist_egg``.
    -
    ------
    -0.5a8
    ------
    -
    - * The "egg_info" command now always sets the distribution metadata to "safe"
    -   forms of the distribution name and version, so that distribution files will
    -   be generated with parseable names (i.e., ones that don't include '-' in the
    -   name or version).  Also, this means that if you use the various ``--tag``
    -   options of "egg_info", any distributions generated will use the tags in the
    -   version, not just egg distributions.
    -
    - * Added support for defining command aliases in distutils configuration files,
    -   under the "[aliases]" section.  To prevent recursion and to allow aliases to
    -   call the command of the same name, a given alias can be expanded only once
    -   per command-line invocation.  You can define new aliases with the "alias"
    -   command, either for the local, global, or per-user configuration.
    -
    - * Added "rotate" command to delete old distribution files, given a set of
    -   patterns to match and the number of files to keep.  (Keeps the most
    -   recently-modified distribution files matching each pattern.)
    -
    - * Added "saveopts" command that saves all command-line options for the current
    -   invocation to the local, global, or per-user configuration file.  Useful for
    -   setting defaults without having to hand-edit a configuration file.
    -
    - * Added a "setopt" command that sets a single option in a specified distutils
    -   configuration file.
    -
    ------
    -0.5a7
    ------
    -
    - * Added "upload" support for egg and source distributions, including a bug
    -   fix for "upload" and a temporary workaround for lack of .egg support in
    -   PyPI.
    -
    ------
    -0.5a6
    ------
    -
    - * Beefed up the "sdist" command so that if you don't have a MANIFEST.in, it
    -   will include all files under revision control (CVS or Subversion) in the
    -   current directory, and it will regenerate the list every time you create a
    -   source distribution, not just when you tell it to.  This should make the
    -   default "do what you mean" more often than the distutils' default behavior
    -   did, while still retaining the old behavior in the presence of MANIFEST.in.
    -
    - * Fixed the "develop" command always updating .pth files, even if you
    -   specified ``-n`` or ``--dry-run``.
    -
    - * Slightly changed the format of the generated version when you use
    -   ``--tag-build`` on the "egg_info" command, so that you can make tagged
    -   revisions compare *lower* than the version specified in setup.py (e.g. by
    -   using ``--tag-build=dev``).
    -
    ------
    -0.5a5
    ------
    -
    - * Added ``develop`` command to ``setuptools``-based packages.  This command
    -   installs an ``.egg-link`` pointing to the package's source directory, and
    -   script wrappers that ``execfile()`` the source versions of the package's
    -   scripts.  This lets you put your development checkout(s) on sys.path without
    -   having to actually install them.  (To uninstall the link, use
    -   use ``setup.py develop --uninstall``.)
    -
    - * Added ``egg_info`` command to ``setuptools``-based packages.  This command
    -   just creates or updates the "projectname.egg-info" directory, without
    -   building an egg.  (It's used by the ``bdist_egg``, ``test``, and ``develop``
    -   commands.)
    -
    - * Enhanced the ``test`` command so that it doesn't install the package, but
    -   instead builds any C extensions in-place, updates the ``.egg-info``
    -   metadata, adds the source directory to ``sys.path``, and runs the tests
    -   directly on the source.  This avoids an "unmanaged" installation of the
    -   package to ``site-packages`` or elsewhere.
    -
    - * Made ``easy_install`` a standard ``setuptools`` command, moving it from
    -   the ``easy_install`` module to ``setuptools.command.easy_install``.  Note
    -   that if you were importing or extending it, you must now change your imports
    -   accordingly.  ``easy_install.py`` is still installed as a script, but not as
    -   a module.
    -
    ------
    -0.5a4
    ------
    -
    - * Setup scripts using setuptools can now list their dependencies directly in
    -   the setup.py file, without having to manually create a ``depends.txt`` file.
    -   The ``install_requires`` and ``extras_require`` arguments to ``setup()``
    -   are used to create a dependencies file automatically.  If you are manually
    -   creating ``depends.txt`` right now, please switch to using these setup
    -   arguments as soon as practical, because ``depends.txt`` support will be
    -   removed in the 0.6 release cycle.  For documentation on the new arguments,
    -   see the ``setuptools.dist.Distribution`` class.
    -
    - * Setup scripts using setuptools now always install using ``easy_install``
    -   internally, for ease of uninstallation and upgrading.
    -
    ------
    -0.5a1
    ------
    -
    - * Added support for "self-installation" bootstrapping.  Packages can now
    -   include ``ez_setup.py`` in their source distribution, and add the following
    -   to their ``setup.py``, in order to automatically bootstrap installation of
    -   setuptools as part of their setup process::
    -
    -    from ez_setup import use_setuptools
    -    use_setuptools()
    -
    -    from setuptools import setup
    -    # etc...
    -
    ------
    -0.4a2
    ------
    -
    - * Added ``ez_setup.py`` installer/bootstrap script to make initial setuptools
    -   installation easier, and to allow distributions using setuptools to avoid
    -   having to include setuptools in their source distribution.
    -
    - * All downloads are now managed by the ``PackageIndex`` class (which is now
    -   subclassable and replaceable), so that embedders can more easily override
    -   download logic, give download progress reports, etc.  The class has also
    -   been moved to the new ``setuptools.package_index`` module.
    -
    - * The ``Installer`` class no longer handles downloading, manages a temporary
    -   directory, or tracks the ``zip_ok`` option.  Downloading is now handled
    -   by ``PackageIndex``, and ``Installer`` has become an ``easy_install``
    -   command class based on ``setuptools.Command``.
    -
    - * There is a new ``setuptools.sandbox.run_setup()`` API to invoke a setup
    -   script in a directory sandbox, and a new ``setuptools.archive_util`` module
    -   with an ``unpack_archive()`` API.  These were split out of EasyInstall to
    -   allow reuse by other tools and applications.
    -
    - * ``setuptools.Command`` now supports reinitializing commands using keyword
    -   arguments to set/reset options.  Also, ``Command`` subclasses can now set
    -   their ``command_consumes_arguments`` attribute to ``True`` in order to
    -   receive an ``args`` option containing the rest of the command line.
    -
    ------
    -0.3a2
    ------
    -
    - * Added new options to ``bdist_egg`` to allow tagging the egg's version number
    -   with a subversion revision number, the current date, or an explicit tag
    -   value.  Run ``setup.py bdist_egg --help`` to get more information.
    -
    - * Misc. bug fixes
    -
    ------
    -0.3a1
    ------
    -
    - * Initial release.
    -
    -
    diff --git a/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/METADATA b/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/METADATA
    deleted file mode 100644
    index 91b42d0..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/METADATA
    +++ /dev/null
    @@ -1,2142 +0,0 @@
    -Metadata-Version: 2.0
    -Name: setuptools
    -Version: 6.0.2
    -Summary: Easily download, build, install, upgrade, and uninstall Python packages
    -Home-page: https://bitbucket.org/pypa/setuptools
    -Author: Python Packaging Authority
    -Author-email: distutils-sig@python.org
    -License: PSF or ZPL
    -Keywords: CPAN PyPI distutils eggs package management
    -Platform: UNKNOWN
    -Classifier: Development Status :: 5 - Production/Stable
    -Classifier: Intended Audience :: Developers
    -Classifier: License :: OSI Approved :: Python Software Foundation License
    -Classifier: License :: OSI Approved :: Zope Public License
    -Classifier: Operating System :: OS Independent
    -Classifier: Programming Language :: Python :: 2.6
    -Classifier: Programming Language :: Python :: 2.7
    -Classifier: Programming Language :: Python :: 3
    -Classifier: Programming Language :: Python :: 3.1
    -Classifier: Programming Language :: Python :: 3.2
    -Classifier: Programming Language :: Python :: 3.3
    -Classifier: Programming Language :: Python :: 3.4
    -Classifier: Topic :: Software Development :: Libraries :: Python Modules
    -Classifier: Topic :: System :: Archiving :: Packaging
    -Classifier: Topic :: System :: Systems Administration
    -Classifier: Topic :: Utilities
    -Provides-Extra: certs
    -Requires-Dist: certifi (==1.0.1); extra == 'certs'
    -Provides-Extra: ssl
    -Requires-Dist: wincertstore (==0.2); sys_platform=='win32' and extra == 'ssl'
    -
    -===============================
    -Installing and Using Setuptools
    -===============================
    -
    -.. contents:: **Table of Contents**
    -
    -
    --------------------------
    -Installation Instructions
    --------------------------
    -
    -The recommended way to bootstrap setuptools on any system is to download
    -`ez_setup.py`_ and run it using the target Python environment. Different
    -operating systems have different recommended techniques to accomplish this
    -basic routine, so below are some examples to get you started.
    -
    -Setuptools requires Python 2.6 or later. To install setuptools
    -on Python 2.4 or Python 2.5, use the `bootstrap script for Setuptools 1.x
    -`_.
    -
    -The link provided to ez_setup.py is a bookmark to bootstrap script for the
    -latest known stable release.
    -
    -.. _ez_setup.py: https://bootstrap.pypa.io/ez_setup.py
    -
    -Windows (Powershell 3 or later)
    -===============================
    -
    -For best results, uninstall previous versions FIRST (see `Uninstalling`_).
    -
    -Using Windows 8 (which includes PowerShell 3) or earlier versions of Windows
    -with PowerShell 3 installed, it's possible to install with one simple
    -Powershell command. Start up Powershell and paste this command::
    -
    -    > (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python -
    -
    -You must start the Powershell with Administrative privileges or you may choose
    -to install a user-local installation::
    -
    -    > (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python - --user
    -
    -If you have Python 3.3 or later, you can use the ``py`` command to install to
    -different Python versions. For example, to install to Python 3.3 if you have
    -Python 2.7 installed::
    -
    -    > (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | py -3 -
    -
    -The recommended way to install setuptools on Windows is to download
    -`ez_setup.py`_ and run it. The script will download the appropriate
    -distribution file and install it for you.
    -
    -Once installation is complete, you will find an ``easy_install`` program in
    -your Python ``Scripts`` subdirectory.  For simple invocation and best results,
    -add this directory to your ``PATH`` environment variable, if it is not already
    -present. If you did a user-local install, the ``Scripts`` subdirectory is
    -``$env:APPDATA\Python\Scripts``.
    -
    -
    -Windows (simplified)
    -====================
    -
    -For Windows without PowerShell 3 or for installation without a command-line,
    -download `ez_setup.py`_ using your preferred web browser or other technique
    -and "run" that file.
    -
    -
    -Unix (wget)
    -===========
    -
    -Most Linux distributions come with wget.
    -
    -Download `ez_setup.py`_ and run it using the target Python version. The script
    -will download the appropriate version and install it for you::
    -
    -    > wget https://bootstrap.pypa.io/ez_setup.py -O - | python
    -
    -Note that you will may need to invoke the command with superuser privileges to
    -install to the system Python::
    -
    -    > wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
    -
    -Alternatively, Setuptools may be installed to a user-local path::
    -
    -    > wget https://bootstrap.pypa.io/ez_setup.py -O - | python - --user
    -
    -Unix including Mac OS X (curl)
    -==============================
    -
    -If your system has curl installed, follow the ``wget`` instructions but
    -replace ``wget`` with ``curl`` and ``-O`` with ``-o``. For example::
    -
    -    > curl https://bootstrap.pypa.io/ez_setup.py -o - | python
    -
    -
    -Advanced Installation
    -=====================
    -
    -For more advanced installation options, such as installing to custom
    -locations or prefixes, download and extract the source
    -tarball from `Setuptools on PyPI `_
    -and run setup.py with any supported distutils and Setuptools options.
    -For example::
    -
    -    setuptools-x.x$ python setup.py install --prefix=/opt/setuptools
    -
    -Use ``--help`` to get a full options list, but we recommend consulting
    -the `EasyInstall manual`_ for detailed instructions, especially `the section
    -on custom installation locations`_.
    -
    -.. _EasyInstall manual: https://pythonhosted.org/setuptools/EasyInstall
    -.. _the section on custom installation locations: https://pythonhosted.org/setuptools/EasyInstall#custom-installation-locations
    -
    -
    -Downloads
    -=========
    -
    -All setuptools downloads can be found at `the project's home page in the Python
    -Package Index`_.  Scroll to the very bottom of the page to find the links.
    -
    -.. _the project's home page in the Python Package Index: https://pypi.python.org/pypi/setuptools
    -
    -In addition to the PyPI downloads, the development version of ``setuptools``
    -is available from the `Bitbucket repo`_, and in-development versions of the
    -`0.6 branch`_ are available as well.
    -
    -.. _Bitbucket repo: https://bitbucket.org/pypa/setuptools/get/default.tar.gz#egg=setuptools-dev
    -.. _0.6 branch: http://svn.python.org/projects/sandbox/branches/setuptools-0.6/#egg=setuptools-dev06
    -
    -Uninstalling
    -============
    -
    -On Windows, if Setuptools was installed using an ``.exe`` or ``.msi``
    -installer, simply use the uninstall feature of "Add/Remove Programs" in the
    -Control Panel.
    -
    -Otherwise, to uninstall Setuptools or Distribute, regardless of the Python
    -version, delete all ``setuptools*`` and ``distribute*`` files and
    -directories from your system's ``site-packages`` directory
    -(and any other ``sys.path`` directories) FIRST.
    -
    -If you are upgrading or otherwise plan to re-install Setuptools or Distribute,
    -nothing further needs to be done. If you want to completely remove Setuptools,
    -you may also want to remove the 'easy_install' and 'easy_install-x.x' scripts
    -and associated executables installed to the Python scripts directory.
    -
    ---------------------------------
    -Using Setuptools and EasyInstall
    ---------------------------------
    -
    -Here are some of the available manuals, tutorials, and other resources for
    -learning about Setuptools, Python Eggs, and EasyInstall:
    -
    -* `The EasyInstall user's guide and reference manual`_
    -* `The setuptools Developer's Guide`_
    -* `The pkg_resources API reference`_
    -* `Package Compatibility Notes`_ (user-maintained)
    -* `The Internal Structure of Python Eggs`_
    -
    -Questions, comments, and bug reports should be directed to the `distutils-sig
    -mailing list`_.  If you have written (or know of) any tutorials, documentation,
    -plug-ins, or other resources for setuptools users, please let us know about
    -them there, so this reference list can be updated.  If you have working,
    -*tested* patches to correct problems or add features, you may submit them to
    -the `setuptools bug tracker`_.
    -
    -.. _setuptools bug tracker: https://bitbucket.org/pypa/setuptools/issues
    -.. _Package Compatibility Notes: https://pythonhosted.org/setuptools/PackageNotes
    -.. _The Internal Structure of Python Eggs: https://pythonhosted.org/setuptools/formats.html
    -.. _The setuptools Developer's Guide: https://pythonhosted.org/setuptools/setuptools.html
    -.. _The pkg_resources API reference: https://pythonhosted.org/setuptools/pkg_resources.html
    -.. _The EasyInstall user's guide and reference manual: https://pythonhosted.org/setuptools/easy_install.html
    -.. _distutils-sig mailing list: http://mail.python.org/pipermail/distutils-sig/
    -
    -
    --------
    -Credits
    --------
    -
    -* The original design for the ``.egg`` format and the ``pkg_resources`` API was
    -  co-created by Phillip Eby and Bob Ippolito.  Bob also implemented the first
    -  version of ``pkg_resources``, and supplied the OS X operating system version
    -  compatibility algorithm.
    -
    -* Ian Bicking implemented many early "creature comfort" features of
    -  easy_install, including support for downloading via Sourceforge and
    -  Subversion repositories.  Ian's comments on the Web-SIG about WSGI
    -  application deployment also inspired the concept of "entry points" in eggs,
    -  and he has given talks at PyCon and elsewhere to inform and educate the
    -  community about eggs and setuptools.
    -
    -* Jim Fulton contributed time and effort to build automated tests of various
    -  aspects of ``easy_install``, and supplied the doctests for the command-line
    -  ``.exe`` wrappers on Windows.
    -
    -* Phillip J. Eby is the seminal author of setuptools, and
    -  first proposed the idea of an importable binary distribution format for
    -  Python application plug-ins.
    -
    -* Significant parts of the implementation of setuptools were funded by the Open
    -  Source Applications Foundation, to provide a plug-in infrastructure for the
    -  Chandler PIM application.  In addition, many OSAF staffers (such as Mike
    -  "Code Bear" Taylor) contributed their time and stress as guinea pigs for the
    -  use of eggs and setuptools, even before eggs were "cool".  (Thanks, guys!)
    -
    -* Tarek Ziadé is the principal author of the Distribute fork, which
    -  re-invigorated the community on the project, encouraged renewed innovation,
    -  and addressed many defects.
    -
    -* Since the merge with Distribute, Jason R. Coombs is the
    -  maintainer of setuptools.  The project is maintained in coordination with
    -  the Python Packaging Authority (PyPA) and the larger Python community.
    -
    -.. _files:
    -
    -=======
    -CHANGES
    -=======
    -
    ------
    -6.0.2
    ------
    -
    -* `Issue #262 `_: Fixed regression in pip install due to egg-info directories
    -  being omitted. Re-opens `Issue #118 `_.
    -
    ------
    -6.0.1
    ------
    -
    -* `Issue #259 `_: Fixed regression with namespace package handling on ``single
    -  version, externally managed`` installs.
    -
    ----
    -6.0
    ----
    -
    -* `Issue #100 `_: When building a distribution, Setuptools will no longer match
    -  default files using platform-dependent case sensitivity, but rather will
    -  only match the files if their case matches exactly. As a result, on Windows
    -  and other case-insensitive file systems, files with names such as
    -  'readme.txt' or 'README.TXT' will be omitted from the distribution and a
    -  warning will be issued indicating that 'README.txt' was not found. Other
    -  filenames affected are:
    -
    -    - README.rst
    -    - README
    -    - setup.cfg
    -    - setup.py (or the script name)
    -    - test/test*.py
    -
    -  Any users producing distributions with filenames that match those above
    -  case-insensitively, but not case-sensitively, should rename those files in
    -  their repository for better portability.
    -* `Pull Request #72 `_: When using ``single_version_externally_managed``, the
    -  exclusion list now includes Python 3.2 ``__pycache__`` entries.
    -* `Pull Request #76 `_ and `Pull Request #78 `_: lines in top_level.txt are now
    -  ordered deterministically.
    -* `Issue #118 `_: The egg-info directory is now no longer included in the list
    -  of outputs.
    -* `Issue #258 `_: Setuptools now patches distutils msvc9compiler to
    -  recognize the specially-packaged compiler package for easy extension module
    -  support on Python 2.6, 2.7, and 3.2.
    -
    ----
    -5.8
    ----
    -
    -* `Issue #237 `_: ``pkg_resources`` now uses explicit detection of Python 2 vs.
    -  Python 3, supporting environments where builtins have been patched to make
    -  Python 3 look more like Python 2.
    -
    ----
    -5.7
    ----
    -
    -* `Issue #240 `_: Based on real-world performance measures against 5.4, zip
    -  manifests are now cached in all circumstances. The
    -  ``PKG_RESOURCES_CACHE_ZIP_MANIFESTS`` environment variable is no longer
    -  relevant. The observed "memory increase" referenced in the 5.4 release
    -  notes and detailed in `Issue #154 `_ was likely not an increase over the status
    -  quo, but rather only an increase over not storing the zip info at all.
    -
    ----
    -5.6
    ----
    -
    -* `Issue #242 `_: Use absolute imports in svn_utils to avoid issues if the
    -  installing package adds an xml module to the path.
    -
    ------
    -5.5.1
    ------
    -
    -* `Issue #239 `_: Fix typo in 5.5 such that fix did not take.
    -
    ----
    -5.5
    ----
    -
    -* `Issue #239 `_: Setuptools now includes the setup_requires directive on
    -  Distribution objects and validates the syntax just like install_requires
    -  and tests_require directives.
    -
    ------
    -5.4.2
    ------
    -
    -* `Issue #236 `_: Corrected regression in execfile implementation for Python 2.6.
    -
    ------
    -5.4.1
    ------
    -
    -* `Python #7776 `_: (ssl_support) Correct usage of host for validation when
    -  tunneling for HTTPS.
    -
    ----
    -5.4
    ----
    -
    -* `Issue #154 `_: ``pkg_resources`` will now cache the zip manifests rather than
    -  re-processing the same file from disk multiple times, but only if the
    -  environment variable ``PKG_RESOURCES_CACHE_ZIP_MANIFESTS`` is set. Clients
    -  that package many modules in the same zip file will see some improvement
    -  in startup time by enabling this feature. This feature is not enabled by
    -  default because it causes a substantial increase in memory usage.
    -
    ----
    -5.3
    ----
    -
    -* `Issue #185 `_: Make svn tagging work on the new style SVN metadata.
    -  Thanks cazabon!
    -* Prune revision control directories (e.g .svn) from base path
    -  as well as sub-directories.
    -
    ----
    -5.2
    ----
    -
    -* Added a `Developer Guide
    -  `_ to the official
    -  documentation.
    -* Some code refactoring and cleanup was done with no intended behavioral
    -  changes.
    -* During install_egg_info, the generated lines for namespace package .pth
    -  files are now processed even during a dry run.
    -
    ----
    -5.1
    ----
    -
    -* `Issue #202 `_: Implemented more robust cache invalidation for the ZipImporter,
    -  building on the work in `Issue #168 `_. Special thanks to Jurko Gospodnetic and
    -  PJE.
    -
    ------
    -5.0.2
    ------
    -
    -* `Issue #220 `_: Restored script templates.
    -
    ------
    -5.0.1
    ------
    -
    -* Renamed script templates to end with .tmpl now that they no longer need
    -  to be processed by 2to3. Fixes spurious syntax errors during build/install.
    -
    ----
    -5.0
    ----
    -
    -* `Issue #218 `_: Re-release of 3.8.1 to signal that it supersedes 4.x.
    -* Incidentally, script templates were updated not to include the triple-quote
    -  escaping.
    -
    --------------------------
    -3.7.1 and 3.8.1 and 4.0.1
    --------------------------
    -
    -* `Issue #213 `_: Use legacy StringIO behavior for compatibility under pbr.
    -* `Issue #218 `_: Setuptools 3.8.1 superseded 4.0.1, and 4.x was removed
    -  from the available versions to install.
    -
    ----
    -4.0
    ----
    -
    -* `Issue #210 `_: ``setup.py develop`` now copies scripts in binary mode rather
    -  than text mode, matching the behavior of the ``install`` command.
    -
    ----
    -3.8
    ----
    -
    -* Extend `Issue #197 `_ workaround to include all Python 3 versions prior to
    -  3.2.2.
    -
    ----
    -3.7
    ----
    -
    -* `Issue #193 `_: Improved handling of Unicode filenames when building manifests.
    -
    ----
    -3.6
    ----
    -
    -* `Issue #203 `_: Honor proxy settings for Powershell downloader in the bootstrap
    -  routine.
    -
    ------
    -3.5.2
    ------
    -
    -* `Issue #168 `_: More robust handling of replaced zip files and stale caches.
    -  Fixes ZipImportError complaining about a 'bad local header'.
    -
    ------
    -3.5.1
    ------
    -
    -* `Issue #199 `_: Restored ``install._install`` for compatibility with earlier
    -  NumPy versions.
    -
    ----
    -3.5
    ----
    -
    -* `Issue #195 `_: Follow symbolic links in find_packages (restoring behavior
    -  broken in 3.4).
    -* `Issue #197 `_: On Python 3.1, PKG-INFO is now saved in a UTF-8 encoding instead
    -  of ``sys.getpreferredencoding`` to match the behavior on Python 2.6-3.4.
    -* `Issue #192 `_: Preferred bootstrap location is now
    -  https://bootstrap.pypa.io/ez_setup.py (mirrored from former location).
    -
    ------
    -3.4.4
    ------
    -
    -* `Issue #184 `_: Correct failure where find_package over-matched packages
    -  when directory traversal isn't short-circuited.
    -
    ------
    -3.4.3
    ------
    -
    -* `Issue #183 `_: Really fix test command with Python 3.1.
    -
    ------
    -3.4.2
    ------
    -
    -* `Issue #183 `_: Fix additional regression in test command on Python 3.1.
    -
    ------
    -3.4.1
    ------
    -
    -* `Issue #180 `_: Fix regression in test command not caught by py.test-run tests.
    -
    ----
    -3.4
    ----
    -
    -* `Issue #176 `_: Add parameter to the test command to support a custom test
    -  runner: --test-runner or -r.
    -* `Issue #177 `_: Now assume most common invocation to install command on
    -  platforms/environments without stack support (issuing a warning). Setuptools
    -  now installs naturally on IronPython. Behavior on CPython should be
    -  unchanged.
    -
    ----
    -3.3
    ----
    -
    -* Add ``include`` parameter to ``setuptools.find_packages()``.
    -
    ----
    -3.2
    ----
    -
    -* `Pull Request #39 `_: Add support for C++ targets from Cython ``.pyx`` files.
    -* `Issue #162 `_: Update dependency on certifi to 1.0.1.
    -* `Issue #164 `_: Update dependency on wincertstore to 0.2.
    -
    ----
    -3.1
    ----
    -
    -* `Issue #161 `_: Restore Features functionality to allow backward compatibility
    -  (for Features) until the uses of that functionality is sufficiently removed.
    -
    ------
    -3.0.2
    ------
    -
    -* Correct typo in previous bugfix.
    -
    ------
    -3.0.1
    ------
    -
    -* `Issue #157 `_: Restore support for Python 2.6 in bootstrap script where
    -  ``zipfile.ZipFile`` does not yet have support for context managers.
    -
    ----
    -3.0
    ----
    -
    -* `Issue #125 `_: Prevent Subversion support from creating a ~/.subversion
    -  directory just for checking the presence of a Subversion repository.
    -* `Issue #12 `_: Namespace packages are now imported lazily.  That is, the mere
    -  declaration of a namespace package in an egg on ``sys.path`` no longer
    -  causes it to be imported when ``pkg_resources`` is imported.  Note that this
    -  change means that all of a namespace package's ``__init__.py`` files must
    -  include a ``declare_namespace()`` call in order to ensure that they will be
    -  handled properly at runtime.  In 2.x it was possible to get away without
    -  including the declaration, but only at the cost of forcing namespace
    -  packages to be imported early, which 3.0 no longer does.
    -* `Issue #148 `_: When building (bdist_egg), setuptools no longer adds
    -  ``__init__.py`` files to namespace packages. Any packages that rely on this
    -  behavior will need to create ``__init__.py`` files and include the
    -  ``declare_namespace()``.
    -* `Issue #7 `_: Setuptools itself is now distributed as a zip archive in addition to
    -  tar archive. ez_setup.py now uses zip archive. This approach avoids the potential
    -  security vulnerabilities presented by use of tar archives in ez_setup.py.
    -  It also leverages the security features added to ZipFile.extract in Python 2.7.4.
    -* `Issue #65 `_: Removed deprecated Features functionality.
    -* `Pull Request #28 `_: Remove backport of ``_bytecode_filenames`` which is
    -  available in Python 2.6 and later, but also has better compatibility with
    -  Python 3 environments.
    -* `Issue #156 `_: Fix spelling of __PYVENV_LAUNCHER__ variable.
    -
    ----
    -2.2
    ----
    -
    -* `Issue #141 `_: Restored fix for allowing setup_requires dependencies to
    -  override installed dependencies during setup.
    -* `Issue #128 `_: Fixed issue where only the first dependency link was honored
    -  in a distribution where multiple dependency links were supplied.
    -
    ------
    -2.1.2
    ------
    -
    -* `Issue #144 `_: Read long_description using codecs module to avoid errors
    -  installing on systems where LANG=C.
    -
    ------
    -2.1.1
    ------
    -
    -* `Issue #139 `_: Fix regression in re_finder for CVS repos (and maybe Git repos
    -  as well).
    -
    ----
    -2.1
    ----
    -
    -* `Issue #129 `_: Suppress inspection of ``*.whl`` files when searching for files
    -  in a zip-imported file.
    -* `Issue #131 `_: Fix RuntimeError when constructing an egg fetcher.
    -
    ------
    -2.0.2
    ------
    -
    -* Fix NameError during installation with Python implementations (e.g. Jython)
    -  not containing parser module.
    -* Fix NameError in ``sdist:re_finder``.
    -
    ------
    -2.0.1
    ------
    -
    -* `Issue #124 `_: Fixed error in list detection in upload_docs.
    -
    ----
    -2.0
    ----
    -
    -* `Issue #121 `_: Exempt lib2to3 pickled grammars from DirectorySandbox.
    -* `Issue #41 `_: Dropped support for Python 2.4 and Python 2.5. Clients requiring
    -  setuptools for those versions of Python should use setuptools 1.x.
    -* Removed ``setuptools.command.easy_install.HAS_USER_SITE``. Clients
    -  expecting this boolean variable should use ``site.ENABLE_USER_SITE``
    -  instead.
    -* Removed ``pkg_resources.ImpWrapper``. Clients that expected this class
    -  should use ``pkgutil.ImpImporter`` instead.
    -
    ------
    -1.4.2
    ------
    -
    -* `Issue #116 `_: Correct TypeError when reading a local package index on Python
    -  3.
    -
    ------
    -1.4.1
    ------
    -
    -* `Issue #114 `_: Use ``sys.getfilesystemencoding`` for decoding config in
    -  ``bdist_wininst`` distributions.
    -
    -* `Issue #105 `_ and `Issue #113 `_: Establish a more robust technique for
    -  determining the terminal encoding::
    -
    -    1. Try ``getpreferredencoding``
    -    2. If that returns US_ASCII or None, try the encoding from
    -       ``getdefaultlocale``. If that encoding was a "fallback" because Python
    -       could not figure it out from the environment or OS, encoding remains
    -       unresolved.
    -    3. If the encoding is resolved, then make sure Python actually implements
    -       the encoding.
    -    4. On the event of an error or unknown codec, revert to fallbacks
    -       (UTF-8 on Darwin, ASCII on everything else).
    -    5. On the encoding is 'mac-roman' on Darwin, use UTF-8 as 'mac-roman' was
    -       a bug on older Python releases.
    -
    -    On a side note, it would seem that the encoding only matters for when SVN
    -    does not yet support ``--xml`` and when getting repository and svn version
    -    numbers. The ``--xml`` technique should yield UTF-8 according to some
    -    messages on the SVN mailing lists. So if the version numbers are always
    -    7-bit ASCII clean, it may be best to only support the file parsing methods
    -    for legacy SVN releases and support for SVN without the subprocess command
    -    would simple go away as support for the older SVNs does.
    -
    ----
    -1.4
    ----
    -
    -* `Issue #27 `_: ``easy_install`` will now use credentials from .pypirc if
    -  present for connecting to the package index.
    -* `Pull Request #21 `_: Omit unwanted newlines in ``package_index._encode_auth``
    -  when the username/password pair length indicates wrapping.
    -
    ------
    -1.3.2
    ------
    -
    -* `Issue #99 `_: Fix filename encoding issues in SVN support.
    -
    ------
    -1.3.1
    ------
    -
    -* Remove exuberant warning in SVN support when SVN is not used.
    -
    ----
    -1.3
    ----
    -
    -* Address security vulnerability in SSL match_hostname check as reported in
    -  `Python #17997 `_.
    -* Prefer `backports.ssl_match_hostname
    -  `_ for backport
    -  implementation if present.
    -* Correct NameError in ``ssl_support`` module (``socket.error``).
    -
    ----
    -1.2
    ----
    -
    -* `Issue #26 `_: Add support for SVN 1.7. Special thanks to Philip Thiem for the
    -  contribution.
    -* `Issue #93 `_: Wheels are now distributed with every release. Note that as
    -  reported in `Issue #108 `_, as of Pip 1.4, scripts aren't installed properly
    -  from wheels. Therefore, if using Pip to install setuptools from a wheel,
    -  the ``easy_install`` command will not be available.
    -* Setuptools "natural" launcher support, introduced in 1.0, is now officially
    -  supported.
    -
    ------
    -1.1.7
    ------
    -
    -* Fixed behavior of NameError handling in 'script template (dev).py' (script
    -  launcher for 'develop' installs).
    -* ``ez_setup.py`` now ensures partial downloads are cleaned up following
    -  a failed download.
    -* `Distribute #363 `_ and `Issue #55 `_: Skip an sdist test that fails on locales
    -  other than UTF-8.
    -
    ------
    -1.1.6
    ------
    -
    -* `Distribute #349 `_: ``sandbox.execfile`` now opens the target file in binary
    -  mode, thus honoring a BOM in the file when compiled.
    -
    ------
    -1.1.5
    ------
    -
    -* `Issue #69 `_: Second attempt at fix (logic was reversed).
    -
    ------
    -1.1.4
    ------
    -
    -* `Issue #77 `_: Fix error in upload command (Python 2.4).
    -
    ------
    -1.1.3
    ------
    -
    -* Fix NameError in previous patch.
    -
    ------
    -1.1.2
    ------
    -
    -* `Issue #69 `_: Correct issue where 404 errors are returned for URLs with
    -  fragments in them (such as #egg=).
    -
    ------
    -1.1.1
    ------
    -
    -* `Issue #75 `_: Add ``--insecure`` option to ez_setup.py to accommodate
    -  environments where a trusted SSL connection cannot be validated.
    -* `Issue #76 `_: Fix AttributeError in upload command with Python 2.4.
    -
    ----
    -1.1
    ----
    -
    -* `Issue #71 `_ (`Distribute #333 `_): EasyInstall now puts less emphasis on the
    -  condition when a host is blocked via ``--allow-hosts``.
    -* `Issue #72 `_: Restored Python 2.4 compatibility in ``ez_setup.py``.
    -
    ----
    -1.0
    ----
    -
    -* `Issue #60 `_: On Windows, Setuptools supports deferring to another launcher,
    -  such as Vinay Sajip's `pylauncher `_
    -  (included with Python 3.3) to launch console and GUI scripts and not install
    -  its own launcher executables. This experimental functionality is currently
    -  only enabled if  the ``SETUPTOOLS_LAUNCHER`` environment variable is set to
    -  "natural". In the future, this behavior may become default, but only after
    -  it has matured and seen substantial adoption. The ``SETUPTOOLS_LAUNCHER``
    -  also accepts "executable" to force the default behavior of creating launcher
    -  executables.
    -* `Issue #63 `_: Bootstrap script (ez_setup.py) now prefers Powershell, curl, or
    -  wget for retrieving the Setuptools tarball for improved security of the
    -  install. The script will still fall back to a simple ``urlopen`` on
    -  platforms that do not have these tools.
    -* `Issue #65 `_: Deprecated the ``Features`` functionality.
    -* `Issue #52 `_: In ``VerifyingHTTPSConn``, handle a tunnelled (proxied)
    -  connection.
    -
    -Backward-Incompatible Changes
    -=============================
    -
    -This release includes a couple of backward-incompatible changes, but most if
    -not all users will find 1.0 a drop-in replacement for 0.9.
    -
    -* `Issue #50 `_: Normalized API of environment marker support. Specifically,
    -  removed line number and filename from SyntaxErrors when returned from
    -  `pkg_resources.invalid_marker`. Any clients depending on the specific
    -  string representation of exceptions returned by that function may need to
    -  be updated to account for this change.
    -* `Issue #50 `_: SyntaxErrors generated by `pkg_resources.invalid_marker` are
    -  normalized for cross-implementation consistency.
    -* Removed ``--ignore-conflicts-at-my-risk`` and ``--delete-conflicting``
    -  options to easy_install. These options have been deprecated since 0.6a11.
    -
    ------
    -0.9.8
    ------
    -
    -* `Issue #53 `_: Fix NameErrors in `_vcs_split_rev_from_url`.
    -
    ------
    -0.9.7
    ------
    -
    -* `Issue #49 `_: Correct AttributeError on PyPy where a hashlib.HASH object does
    -  not have a `.name` attribute.
    -* `Issue #34 `_: Documentation now refers to bootstrap script in code repository
    -  referenced by bookmark.
    -* Add underscore-separated keys to environment markers (markerlib).
    -
    ------
    -0.9.6
    ------
    -
    -* `Issue #44 `_: Test failure on Python 2.4 when MD5 hash doesn't have a `.name`
    -  attribute.
    -
    ------
    -0.9.5
    ------
    -
    -* `Python #17980 `_: Fix security vulnerability in SSL certificate validation.
    -
    ------
    -0.9.4
    ------
    -
    -* `Issue #43 `_: Fix issue (introduced in 0.9.1) with version resolution when
    -  upgrading over other releases of Setuptools.
    -
    ------
    -0.9.3
    ------
    -
    -* `Issue #42 `_: Fix new ``AttributeError`` introduced in last fix.
    -
    ------
    -0.9.2
    ------
    -
    -* `Issue #42 `_: Fix regression where blank checksums would trigger an
    -  ``AttributeError``.
    -
    ------
    -0.9.1
    ------
    -
    -* `Distribute #386 `_: Allow other positional and keyword arguments to os.open.
    -* Corrected dependency on certifi mis-referenced in 0.9.
    -
    ----
    -0.9
    ----
    -
    -* `package_index` now validates hashes other than MD5 in download links.
    -
    ----
    -0.8
    ----
    -
    -* Code base now runs on Python 2.4 - Python 3.3 without Python 2to3
    -  conversion.
    -
    ------
    -0.7.8
    ------
    -
    -* `Distribute #375 `_: Yet another fix for yet another regression.
    -
    ------
    -0.7.7
    ------
    -
    -* `Distribute #375 `_: Repair AttributeError created in last release (redo).
    -* `Issue #30 `_: Added test for get_cache_path.
    -
    ------
    -0.7.6
    ------
    -
    -* `Distribute #375 `_: Repair AttributeError created in last release.
    -
    ------
    -0.7.5
    ------
    -
    -* `Issue #21 `_: Restore Python 2.4 compatibility in ``test_easy_install``.
    -* `Distribute #375 `_: Merged additional warning from Distribute 0.6.46.
    -* Now honor the environment variable
    -  ``SETUPTOOLS_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT`` in addition to the now
    -  deprecated ``DISTRIBUTE_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT``.
    -
    ------
    -0.7.4
    ------
    -
    -* `Issue #20 `_: Fix comparison of parsed SVN version on Python 3.
    -
    ------
    -0.7.3
    ------
    -
    -* `Issue #1 `_: Disable installation of Windows-specific files on non-Windows systems.
    -* Use new sysconfig module with Python 2.7 or >=3.2.
    -
    ------
    -0.7.2
    ------
    -
    -* `Issue #14 `_: Use markerlib when the `parser` module is not available.
    -* `Issue #10 `_: ``ez_setup.py`` now uses HTTPS to download setuptools from PyPI.
    -
    ------
    -0.7.1
    ------
    -
    -* Fix NameError (`Issue #3 `_) again - broken in bad merge.
    -
    ----
    -0.7
    ----
    -
    -* Merged Setuptools and Distribute. See docs/merge.txt for details.
    -
    -Added several features that were slated for setuptools 0.6c12:
    -
    -* Index URL now defaults to HTTPS.
    -* Added experimental environment marker support. Now clients may designate a
    -  PEP-426 environment marker for "extra" dependencies. Setuptools uses this
    -  feature in ``setup.py`` for optional SSL and certificate validation support
    -  on older platforms. Based on Distutils-SIG discussions, the syntax is
    -  somewhat tentative. There should probably be a PEP with a firmer spec before
    -  the feature should be considered suitable for use.
    -* Added support for SSL certificate validation when installing packages from
    -  an HTTPS service.
    -
    ------
    -0.7b4
    ------
    -
    -* `Issue #3 `_: Fixed NameError in SSL support.
    -
    -------
    -0.6.49
    -------
    -
    -* Move warning check in ``get_cache_path`` to follow the directory creation
    -  to avoid errors when the cache path does not yet exist. Fixes the error
    -  reported in `Distribute #375 `_.
    -
    -------
    -0.6.48
    -------
    -
    -* Correct AttributeError in ``ResourceManager.get_cache_path`` introduced in
    -  0.6.46 (redo).
    -
    -------
    -0.6.47
    -------
    -
    -* Correct AttributeError in ``ResourceManager.get_cache_path`` introduced in
    -  0.6.46.
    -
    -------
    -0.6.46
    -------
    -
    -* `Distribute #375 `_: Issue a warning if the PYTHON_EGG_CACHE or otherwise
    -  customized egg cache location specifies a directory that's group- or
    -  world-writable.
    -
    -------
    -0.6.45
    -------
    -
    -* `Distribute #379 `_: ``distribute_setup.py`` now traps VersionConflict as well,
    -  restoring ability to upgrade from an older setuptools version.
    -
    -------
    -0.6.44
    -------
    -
    -* ``distribute_setup.py`` has been updated to allow Setuptools 0.7 to
    -  satisfy use_setuptools.
    -
    -------
    -0.6.43
    -------
    -
    -* `Distribute #378 `_: Restore support for Python 2.4 Syntax (regression in 0.6.42).
    -
    -------
    -0.6.42
    -------
    -
    -* External links finder no longer yields duplicate links.
    -* `Distribute #337 `_: Moved site.py to setuptools/site-patch.py (graft of very old
    -  patch from setuptools trunk which inspired PR `#31 `_).
    -
    -------
    -0.6.41
    -------
    -
    -* `Distribute #27 `_: Use public api for loading resources from zip files rather than
    -  the private method `_zip_directory_cache`.
    -* Added a new function ``easy_install.get_win_launcher`` which may be used by
    -  third-party libraries such as buildout to get a suitable script launcher.
    -
    -------
    -0.6.40
    -------
    -
    -* `Distribute #376 `_: brought back cli.exe and gui.exe that were deleted in the
    -  previous release.
    -
    -------
    -0.6.39
    -------
    -
    -* Add support for console launchers on ARM platforms.
    -* Fix possible issue in GUI launchers where the subsystem was not supplied to
    -  the linker.
    -* Launcher build script now refactored for robustness.
    -* `Distribute #375 `_: Resources extracted from a zip egg to the file system now also
    -  check the contents of the file against the zip contents during each
    -  invocation of get_resource_filename.
    -
    -------
    -0.6.38
    -------
    -
    -* `Distribute #371 `_: The launcher manifest file is now installed properly.
    -
    -------
    -0.6.37
    -------
    -
    -* `Distribute #143 `_: Launcher scripts, including easy_install itself, are now
    -  accompanied by a manifest on 32-bit Windows environments to avoid the
    -  Installer Detection Technology and thus undesirable UAC elevation described
    -  in `this Microsoft article
    -  `_.
    -
    -------
    -0.6.36
    -------
    -
    -* `Pull Request #35 `_: In `Buildout #64 `_, it was reported that
    -  under Python 3, installation of distutils scripts could attempt to copy
    -  the ``__pycache__`` directory as a file, causing an error, apparently only
    -  under Windows. Easy_install now skips all directories when processing
    -  metadata scripts.
    -
    -------
    -0.6.35
    -------
    -
    -
    -Note this release is backward-incompatible with distribute 0.6.23-0.6.34 in
    -how it parses version numbers.
    -
    -* `Distribute #278 `_: Restored compatibility with distribute 0.6.22 and setuptools
    -  0.6. Updated the documentation to match more closely with the version
    -  parsing as intended in setuptools 0.6.
    -
    -------
    -0.6.34
    -------
    -
    -* `Distribute #341 `_: 0.6.33 fails to build under Python 2.4.
    -
    -------
    -0.6.33
    -------
    -
    -* Fix 2 errors with Jython 2.5.
    -* Fix 1 failure with Jython 2.5 and 2.7.
    -* Disable workaround for Jython scripts on Linux systems.
    -* `Distribute #336 `_: `setup.py` no longer masks failure exit code when tests fail.
    -* Fix issue in pkg_resources where try/except around a platform-dependent
    -  import would trigger hook load failures on Mercurial. See pull request 32
    -  for details.
    -* `Distribute #341 `_: Fix a ResourceWarning.
    -
    -------
    -0.6.32
    -------
    -
    -* Fix test suite with Python 2.6.
    -* Fix some DeprecationWarnings and ResourceWarnings.
    -* `Distribute #335 `_: Backed out `setup_requires` superceding installed requirements
    -  until regression can be addressed.
    -
    -------
    -0.6.31
    -------
    -
    -* `Distribute #303 `_: Make sure the manifest only ever contains UTF-8 in Python 3.
    -* `Distribute #329 `_: Properly close files created by tests for compatibility with
    -  Jython.
    -* Work around `Jython #1980 `_ and `Jython #1981 `_.
    -* `Distribute #334 `_: Provide workaround for packages that reference `sys.__stdout__`
    -  such as numpy does. This change should address
    -  `virtualenv `#359 `_ `_ as long
    -  as the system encoding is UTF-8 or the IO encoding is specified in the
    -  environment, i.e.::
    -
    -     PYTHONIOENCODING=utf8 pip install numpy
    -
    -* Fix for encoding issue when installing from Windows executable on Python 3.
    -* `Distribute #323 `_: Allow `setup_requires` requirements to supercede installed
    -  requirements. Added some new keyword arguments to existing pkg_resources
    -  methods. Also had to updated how __path__ is handled for namespace packages
    -  to ensure that when a new egg distribution containing a namespace package is
    -  placed on sys.path, the entries in __path__ are found in the same order they
    -  would have been in had that egg been on the path when pkg_resources was
    -  first imported.
    -
    -------
    -0.6.30
    -------
    -
    -* `Distribute #328 `_: Clean up temporary directories in distribute_setup.py.
    -* Fix fatal bug in distribute_setup.py.
    -
    -------
    -0.6.29
    -------
    -
    -* `Pull Request #14 `_: Honor file permissions in zip files.
    -* `Distribute #327 `_: Merged pull request `#24 `_ to fix a dependency problem with pip.
    -* Merged pull request `#23 `_ to fix https://github.com/pypa/virtualenv/issues/301.
    -* If Sphinx is installed, the `upload_docs` command now runs `build_sphinx`
    -  to produce uploadable documentation.
    -* `Distribute #326 `_: `upload_docs` provided mangled auth credentials under Python 3.
    -* `Distribute #320 `_: Fix check for "createable" in distribute_setup.py.
    -* `Distribute #305 `_: Remove a warning that was triggered during normal operations.
    -* `Distribute #311 `_: Print metadata in UTF-8 independent of platform.
    -* `Distribute #303 `_: Read manifest file with UTF-8 encoding under Python 3.
    -* `Distribute #301 `_: Allow to run tests of namespace packages when using 2to3.
    -* `Distribute #304 `_: Prevent import loop in site.py under Python 3.3.
    -* `Distribute #283 `_: Reenable scanning of `*.pyc` / `*.pyo` files on Python 3.3.
    -* `Distribute #299 `_: The develop command didn't work on Python 3, when using 2to3,
    -  as the egg link would go to the Python 2 source. Linking to the 2to3'd code
    -  in build/lib makes it work, although you will have to rebuild the module
    -  before testing it.
    -* `Distribute #306 `_: Even if 2to3 is used, we build in-place under Python 2.
    -* `Distribute #307 `_: Prints the full path when .svn/entries is broken.
    -* `Distribute #313 `_: Support for sdist subcommands (Python 2.7)
    -* `Distribute #314 `_: test_local_index() would fail an OS X.
    -* `Distribute #310 `_: Non-ascii characters in a namespace __init__.py causes errors.
    -* `Distribute #218 `_: Improved documentation on behavior of `package_data` and
    -  `include_package_data`. Files indicated by `package_data` are now included
    -  in the manifest.
    -* `distribute_setup.py` now allows a `--download-base` argument for retrieving
    -  distribute from a specified location.
    -
    -------
    -0.6.28
    -------
    -
    -* `Distribute #294 `_: setup.py can now be invoked from any directory.
    -* Scripts are now installed honoring the umask.
    -* Added support for .dist-info directories.
    -* `Distribute #283 `_: Fix and disable scanning of `*.pyc` / `*.pyo` files on
    -  Python 3.3.
    -
    -------
    -0.6.27
    -------
    -
    -* Support current snapshots of CPython 3.3.
    -* Distribute now recognizes README.rst as a standard, default readme file.
    -* Exclude 'encodings' modules when removing modules from sys.modules.
    -  Workaround for `#285 `_.
    -* `Distribute #231 `_: Don't fiddle with system python when used with buildout
    -  (bootstrap.py)
    -
    -------
    -0.6.26
    -------
    -
    -* `Distribute #183 `_: Symlinked files are now extracted from source distributions.
    -* `Distribute #227 `_: Easy_install fetch parameters are now passed during the
    -  installation of a source distribution; now fulfillment of setup_requires
    -  dependencies will honor the parameters passed to easy_install.
    -
    -------
    -0.6.25
    -------
    -
    -* `Distribute #258 `_: Workaround a cache issue
    -* `Distribute #260 `_: distribute_setup.py now accepts the --user parameter for
    -  Python 2.6 and later.
    -* `Distribute #262 `_: package_index.open_with_auth no longer throws LookupError
    -  on Python 3.
    -* `Distribute #269 `_: AttributeError when an exception occurs reading Manifest.in
    -  on late releases of Python.
    -* `Distribute #272 `_: Prevent TypeError when namespace package names are unicode
    -  and single-install-externally-managed is used. Also fixes PIP issue
    -  449.
    -* `Distribute #273 `_: Legacy script launchers now install with Python2/3 support.
    -
    -------
    -0.6.24
    -------
    -
    -* `Distribute #249 `_: Added options to exclude 2to3 fixers
    -
    -------
    -0.6.23
    -------
    -
    -* `Distribute #244 `_: Fixed a test
    -* `Distribute #243 `_: Fixed a test
    -* `Distribute #239 `_: Fixed a test
    -* `Distribute #240 `_: Fixed a test
    -* `Distribute #241 `_: Fixed a test
    -* `Distribute #237 `_: Fixed a test
    -* `Distribute #238 `_: easy_install now uses 64bit executable wrappers on 64bit Python
    -* `Distribute #208 `_: Fixed parsed_versions, it now honors post-releases as noted in the documentation
    -* `Distribute #207 `_: Windows cli and gui wrappers pass CTRL-C to child python process
    -* `Distribute #227 `_: easy_install now passes its arguments to setup.py bdist_egg
    -* `Distribute #225 `_: Fixed a NameError on Python 2.5, 2.4
    -
    -------
    -0.6.21
    -------
    -
    -* `Distribute #225 `_: FIxed a regression on py2.4
    -
    -------
    -0.6.20
    -------
    -
    -* `Distribute #135 `_: Include url in warning when processing URLs in package_index.
    -* `Distribute #212 `_: Fix issue where easy_instal fails on Python 3 on windows installer.
    -* `Distribute #213 `_: Fix typo in documentation.
    -
    -------
    -0.6.19
    -------
    -
    -* `Distribute #206 `_: AttributeError: 'HTTPMessage' object has no attribute 'getheaders'
    -
    -------
    -0.6.18
    -------
    -
    -* `Distribute #210 `_: Fixed a regression introduced by `Distribute #204 `_ fix.
    -
    -------
    -0.6.17
    -------
    -
    -* Support 'DISTRIBUTE_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT' environment
    -  variable to allow to disable installation of easy_install-${version} script.
    -* Support Python >=3.1.4 and >=3.2.1.
    -* `Distribute #204 `_: Don't try to import the parent of a namespace package in
    -  declare_namespace
    -* `Distribute #196 `_: Tolerate responses with multiple Content-Length headers
    -* `Distribute #205 `_: Sandboxing doesn't preserve working_set. Leads to setup_requires
    -  problems.
    -
    -------
    -0.6.16
    -------
    -
    -* Builds sdist gztar even on Windows (avoiding `Distribute #193 `_).
    -* `Distribute #192 `_: Fixed metadata omitted on Windows when package_dir
    -  specified with forward-slash.
    -* `Distribute #195 `_: Cython build support.
    -* `Distribute #200 `_: Issues with recognizing 64-bit packages on Windows.
    -
    -------
    -0.6.15
    -------
    -
    -* Fixed typo in bdist_egg
    -* Several issues under Python 3 has been solved.
    -* `Distribute #146 `_: Fixed missing DLL files after easy_install of windows exe package.
    -
    -------
    -0.6.14
    -------
    -
    -* `Distribute #170 `_: Fixed unittest failure. Thanks to Toshio.
    -* `Distribute #171 `_: Fixed race condition in unittests cause deadlocks in test suite.
    -* `Distribute #143 `_: Fixed a lookup issue with easy_install.
    -  Thanks to David and Zooko.
    -* `Distribute #174 `_: Fixed the edit mode when its used with setuptools itself
    -
    -------
    -0.6.13
    -------
    -
    -* `Distribute #160 `_: 2.7 gives ValueError("Invalid IPv6 URL")
    -* `Distribute #150 `_: Fixed using ~/.local even in a --no-site-packages virtualenv
    -* `Distribute #163 `_: scan index links before external links, and don't use the md5 when
    -  comparing two distributions
    -
    -------
    -0.6.12
    -------
    -
    -* `Distribute #149 `_: Fixed various failures on 2.3/2.4
    -
    -------
    -0.6.11
    -------
    -
    -* Found another case of SandboxViolation - fixed
    -* `Distribute #15 `_ and `Distribute #48 `_: Introduced a socket timeout of 15 seconds on url openings
    -* Added indexsidebar.html into MANIFEST.in
    -* `Distribute #108 `_: Fixed TypeError with Python3.1
    -* `Distribute #121 `_: Fixed --help install command trying to actually install.
    -* `Distribute #112 `_: Added an os.makedirs so that Tarek's solution will work.
    -* `Distribute #133 `_: Added --no-find-links to easy_install
    -* Added easy_install --user
    -* `Distribute #100 `_: Fixed develop --user not taking '.' in PYTHONPATH into account
    -* `Distribute #134 `_: removed spurious UserWarnings. Patch by VanLindberg
    -* `Distribute #138 `_: cant_write_to_target error when setup_requires is used.
    -* `Distribute #147 `_: respect the sys.dont_write_bytecode flag
    -
    -------
    -0.6.10
    -------
    -
    -* Reverted change made for the DistributionNotFound exception because
    -  zc.buildout uses the exception message to get the name of the
    -  distribution.
    -
    ------
    -0.6.9
    ------
    -
    -* `Distribute #90 `_: unknown setuptools version can be added in the working set
    -* `Distribute #87 `_: setupt.py doesn't try to convert distribute_setup.py anymore
    -  Initial Patch by arfrever.
    -* `Distribute #89 `_: added a side bar with a download link to the doc.
    -* `Distribute #86 `_: fixed missing sentence in pkg_resources doc.
    -* Added a nicer error message when a DistributionNotFound is raised.
    -* `Distribute #80 `_: test_develop now works with Python 3.1
    -* `Distribute #93 `_: upload_docs now works if there is an empty sub-directory.
    -* `Distribute #70 `_: exec bit on non-exec files
    -* `Distribute #99 `_: now the standalone easy_install command doesn't uses a
    -  "setup.cfg" if any exists in the working directory. It will use it
    -  only if triggered by ``install_requires`` from a setup.py call
    -  (install, develop, etc).
    -* `Distribute #101 `_: Allowing ``os.devnull`` in Sandbox
    -* `Distribute #92 `_: Fixed the "no eggs" found error with MacPort
    -  (platform.mac_ver() fails)
    -* `Distribute #103 `_: test_get_script_header_jython_workaround not run
    -  anymore under py3 with C or POSIX local. Contributed by Arfrever.
    -* `Distribute #104 `_: remvoved the assertion when the installation fails,
    -  with a nicer message for the end user.
    -* `Distribute #100 `_: making sure there's no SandboxViolation when
    -  the setup script patches setuptools.
    -
    ------
    -0.6.8
    ------
    -
    -* Added "check_packages" in dist. (added in Setuptools 0.6c11)
    -* Fixed the DONT_PATCH_SETUPTOOLS state.
    -
    ------
    -0.6.7
    ------
    -
    -* `Distribute #58 `_: Added --user support to the develop command
    -* `Distribute #11 `_: Generated scripts now wrap their call to the script entry point
    -  in the standard "if name == 'main'"
    -* Added the 'DONT_PATCH_SETUPTOOLS' environment variable, so virtualenv
    -  can drive an installation that doesn't patch a global setuptools.
    -* Reviewed unladen-swallow specific change from
    -  http://code.google.com/p/unladen-swallow/source/detail?spec=svn875&r=719
    -  and determined that it no longer applies. Distribute should work fine with
    -  Unladen Swallow 2009Q3.
    -* `Distribute #21 `_: Allow PackageIndex.open_url to gracefully handle all cases of a
    -  httplib.HTTPException instead of just InvalidURL and BadStatusLine.
    -* Removed virtual-python.py from this distribution and updated documentation
    -  to point to the actively maintained virtualenv instead.
    -* `Distribute #64 `_: use_setuptools no longer rebuilds the distribute egg every
    -  time it is run
    -* use_setuptools now properly respects the requested version
    -* use_setuptools will no longer try to import a distribute egg for the
    -  wrong Python version
    -* `Distribute #74 `_: no_fake should be True by default.
    -* `Distribute #72 `_: avoid a bootstrapping issue with easy_install -U
    -
    ------
    -0.6.6
    ------
    -
    -* Unified the bootstrap file so it works on both py2.x and py3k without 2to3
    -  (patch by Holger Krekel)
    -
    ------
    -0.6.5
    ------
    -
    -* `Distribute #65 `_: cli.exe and gui.exe are now generated at build time,
    -  depending on the platform in use.
    -
    -* `Distribute #67 `_: Fixed doc typo (PEP 381/382)
    -
    -* Distribute no longer shadows setuptools if we require a 0.7-series
    -  setuptools.  And an error is raised when installing a 0.7 setuptools with
    -  distribute.
    -
    -* When run from within buildout, no attempt is made to modify an existing
    -  setuptools egg, whether in a shared egg directory or a system setuptools.
    -
    -* Fixed a hole in sandboxing allowing builtin file to write outside of
    -  the sandbox.
    -
    ------
    -0.6.4
    ------
    -
    -* Added the generation of `distribute_setup_3k.py` during the release.
    -  This closes `Distribute #52 `_.
    -
    -* Added an upload_docs command to easily upload project documentation to
    -  PyPI's https://pythonhosted.org. This close issue `Distribute #56 `_.
    -
    -* Fixed a bootstrap bug on the use_setuptools() API.
    -
    ------
    -0.6.3
    ------
    -
    -setuptools
    -==========
    -
    -* Fixed a bunch of calls to file() that caused crashes on Python 3.
    -
    -bootstrapping
    -=============
    -
    -* Fixed a bug in sorting that caused bootstrap to fail on Python 3.
    -
    ------
    -0.6.2
    ------
    -
    -setuptools
    -==========
    -
    -* Added Python 3 support; see docs/python3.txt.
    -  This closes `Old Setuptools #39 `_.
    -
    -* Added option to run 2to3 automatically when installing on Python 3.
    -  This closes issue `Distribute #31 `_.
    -
    -* Fixed invalid usage of requirement.parse, that broke develop -d.
    -  This closes `Old Setuptools #44 `_.
    -
    -* Fixed script launcher for 64-bit Windows.
    -  This closes `Old Setuptools #2 `_.
    -
    -* KeyError when compiling extensions.
    -  This closes `Old Setuptools #41 `_.
    -
    -bootstrapping
    -=============
    -
    -* Fixed bootstrap not working on Windows. This closes issue `Distribute #49 `_.
    -
    -* Fixed 2.6 dependencies. This closes issue `Distribute #50 `_.
    -
    -* Make sure setuptools is patched when running through easy_install
    -  This closes `Old Setuptools #40 `_.
    -
    ------
    -0.6.1
    ------
    -
    -setuptools
    -==========
    -
    -* package_index.urlopen now catches BadStatusLine and malformed url errors.
    -  This closes `Distribute #16 `_ and `Distribute #18 `_.
    -
    -* zip_ok is now False by default. This closes `Old Setuptools #33 `_.
    -
    -* Fixed invalid URL error catching. `Old Setuptools #20 `_.
    -
    -* Fixed invalid bootstraping with easy_install installation (`Distribute #40 `_).
    -  Thanks to Florian Schulze for the help.
    -
    -* Removed buildout/bootstrap.py. A new repository will create a specific
    -  bootstrap.py script.
    -
    -
    -bootstrapping
    -=============
    -
    -* The boostrap process leave setuptools alone if detected in the system
    -  and --root or --prefix is provided, but is not in the same location.
    -  This closes `Distribute #10 `_.
    -
    ----
    -0.6
    ----
    -
    -setuptools
    -==========
    -
    -* Packages required at build time where not fully present at install time.
    -  This closes `Distribute #12 `_.
    -
    -* Protected against failures in tarfile extraction. This closes `Distribute #10 `_.
    -
    -* Made Jython api_tests.txt doctest compatible. This closes `Distribute #7 `_.
    -
    -* sandbox.py replaced builtin type file with builtin function open. This
    -  closes `Distribute #6 `_.
    -
    -* Immediately close all file handles. This closes `Distribute #3 `_.
    -
    -* Added compatibility with Subversion 1.6. This references `Distribute #1 `_.
    -
    -pkg_resources
    -=============
    -
    -* Avoid a call to /usr/bin/sw_vers on OSX and use the official platform API
    -  instead. Based on a patch from ronaldoussoren. This closes issue `#5 `_.
    -
    -* Fixed a SandboxViolation for mkdir that could occur in certain cases.
    -  This closes `Distribute #13 `_.
    -
    -* Allow to find_on_path on systems with tight permissions to fail gracefully.
    -  This closes `Distribute #9 `_.
    -
    -* Corrected inconsistency between documentation and code of add_entry.
    -  This closes `Distribute #8 `_.
    -
    -* Immediately close all file handles. This closes `Distribute #3 `_.
    -
    -easy_install
    -============
    -
    -* Immediately close all file handles. This closes `Distribute #3 `_.
    -
    ------
    -0.6c9
    ------
    -
    - * Fixed a missing files problem when using Windows source distributions on
    -   non-Windows platforms, due to distutils not handling manifest file line
    -   endings correctly.
    -
    - * Updated Pyrex support to work with Pyrex 0.9.6 and higher.
    -
    - * Minor changes for Jython compatibility, including skipping tests that can't
    -   work on Jython.
    -
    - * Fixed not installing eggs in ``install_requires`` if they were also used for
    -   ``setup_requires`` or ``tests_require``.
    -
    - * Fixed not fetching eggs in ``install_requires`` when running tests.
    -
    - * Allow ``ez_setup.use_setuptools()`` to upgrade existing setuptools
    -   installations when called from a standalone ``setup.py``.
    -
    - * Added a warning if a namespace package is declared, but its parent package
    -   is not also declared as a namespace.
    -
    - * Support Subversion 1.5
    -
    - * Removed use of deprecated ``md5`` module if ``hashlib`` is available
    -
    - * Fixed ``bdist_wininst upload`` trying to upload the ``.exe`` twice
    -
    - * Fixed ``bdist_egg`` putting a ``native_libs.txt`` in the source package's
    -   ``.egg-info``, when it should only be in the built egg's ``EGG-INFO``.
    -
    - * Ensure that _full_name is set on all shared libs before extensions are
    -   checked for shared lib usage.  (Fixes a bug in the experimental shared
    -   library build support.)
    -
    - * Fix to allow unpacked eggs containing native libraries to fail more
    -   gracefully under Google App Engine (with an ``ImportError`` loading the
    -   C-based module, instead of getting a ``NameError``).
    -
    ------
    -0.6c7
    ------
    -
    - * Fixed ``distutils.filelist.findall()`` crashing on broken symlinks, and
    -   ``egg_info`` command failing on new, uncommitted SVN directories.
    -
    - * Fix import problems with nested namespace packages installed via
    -   ``--root`` or ``--single-version-externally-managed``, due to the
    -   parent package not having the child package as an attribute.
    -
    ------
    -0.6c6
    ------
    -
    - * Added ``--egg-path`` option to ``develop`` command, allowing you to force
    -   ``.egg-link`` files to use relative paths (allowing them to be shared across
    -   platforms on a networked drive).
    -
    - * Fix not building binary RPMs correctly.
    -
    - * Fix "eggsecutables" (such as setuptools' own egg) only being runnable with
    -   bash-compatible shells.
    -
    - * Fix ``#!`` parsing problems in Windows ``.exe`` script wrappers, when there
    -   was whitespace inside a quoted argument or at the end of the ``#!`` line
    -   (a regression introduced in 0.6c4).
    -
    - * Fix ``test`` command possibly failing if an older version of the project
    -   being tested was installed on ``sys.path`` ahead of the test source
    -   directory.
    -
    - * Fix ``find_packages()`` treating ``ez_setup`` and directories with ``.`` in
    -   their names as packages.
    -
    ------
    -0.6c5
    ------
    -
    - * Fix uploaded ``bdist_rpm`` packages being described as ``bdist_egg``
    -   packages under Python versions less than 2.5.
    -
    - * Fix uploaded ``bdist_wininst`` packages being described as suitable for
    -   "any" version by Python 2.5, even if a ``--target-version`` was specified.
    -
    ------
    -0.6c4
    ------
    -
    - * Overhauled Windows script wrapping to support ``bdist_wininst`` better.
    -   Scripts installed with ``bdist_wininst`` will always use ``#!python.exe`` or
    -   ``#!pythonw.exe`` as the executable name (even when built on non-Windows
    -   platforms!), and the wrappers will look for the executable in the script's
    -   parent directory (which should find the right version of Python).
    -
    - * Fix ``upload`` command not uploading files built by ``bdist_rpm`` or
    -   ``bdist_wininst`` under Python 2.3 and 2.4.
    -
    - * Add support for "eggsecutable" headers: a ``#!/bin/sh`` script that is
    -   prepended to an ``.egg`` file to allow it to be run as a script on Unix-ish
    -   platforms.  (This is mainly so that setuptools itself can have a single-file
    -   installer on Unix, without doing multiple downloads, dealing with firewalls,
    -   etc.)
    -
    - * Fix problem with empty revision numbers in Subversion 1.4 ``entries`` files
    -
    - * Use cross-platform relative paths in ``easy-install.pth`` when doing
    -   ``develop`` and the source directory is a subdirectory of the installation
    -   target directory.
    -
    - * Fix a problem installing eggs with a system packaging tool if the project
    -   contained an implicit namespace package; for example if the ``setup()``
    -   listed a namespace package ``foo.bar`` without explicitly listing ``foo``
    -   as a namespace package.
    -
    ------
    -0.6c3
    ------
    -
    - * Fixed breakages caused by Subversion 1.4's new "working copy" format
    -
    ------
    -0.6c2
    ------
    -
    - * The ``ez_setup`` module displays the conflicting version of setuptools (and
    -   its installation location) when a script requests a version that's not
    -   available.
    -
    - * Running ``setup.py develop`` on a setuptools-using project will now install
    -   setuptools if needed, instead of only downloading the egg.
    -
    ------
    -0.6c1
    ------
    -
    - * Fixed ``AttributeError`` when trying to download a ``setup_requires``
    -   dependency when a distribution lacks a ``dependency_links`` setting.
    -
    - * Made ``zip-safe`` and ``not-zip-safe`` flag files contain a single byte, so
    -   as to play better with packaging tools that complain about zero-length
    -   files.
    -
    - * Made ``setup.py develop`` respect the ``--no-deps`` option, which it
    -   previously was ignoring.
    -
    - * Support ``extra_path`` option to ``setup()`` when ``install`` is run in
    -   backward-compatibility mode.
    -
    - * Source distributions now always include a ``setup.cfg`` file that explicitly
    -   sets ``egg_info`` options such that they produce an identical version number
    -   to the source distribution's version number.  (Previously, the default
    -   version number could be different due to the use of ``--tag-date``, or if
    -   the version was overridden on the command line that built the source
    -   distribution.)
    -
    ------
    -0.6b4
    ------
    -
    - * Fix ``register`` not obeying name/version set by ``egg_info`` command, if
    -   ``egg_info`` wasn't explicitly run first on the same command line.
    -
    - * Added ``--no-date`` and ``--no-svn-revision`` options to ``egg_info``
    -   command, to allow suppressing tags configured in ``setup.cfg``.
    -
    - * Fixed redundant warnings about missing ``README`` file(s); it should now
    -   appear only if you are actually a source distribution.
    -
    ------
    -0.6b3
    ------
    -
    - * Fix ``bdist_egg`` not including files in subdirectories of ``.egg-info``.
    -
    - * Allow ``.py`` files found by the ``include_package_data`` option to be
    -   automatically included.  Remove duplicate data file matches if both
    -   ``include_package_data`` and ``package_data`` are used to refer to the same
    -   files.
    -
    ------
    -0.6b1
    ------
    -
    - * Strip ``module`` from the end of compiled extension modules when computing
    -   the name of a ``.py`` loader/wrapper.  (Python's import machinery ignores
    -   this suffix when searching for an extension module.)
    -
    -------
    -0.6a11
    -------
    -
    - * Added ``test_loader`` keyword to support custom test loaders
    -
    - * Added ``setuptools.file_finders`` entry point group to allow implementing
    -   revision control plugins.
    -
    - * Added ``--identity`` option to ``upload`` command.
    -
    - * Added ``dependency_links`` to allow specifying URLs for ``--find-links``.
    -
    - * Enhanced test loader to scan packages as well as modules, and call
    -   ``additional_tests()`` if present to get non-unittest tests.
    -
    - * Support namespace packages in conjunction with system packagers, by omitting
    -   the installation of any ``__init__.py`` files for namespace packages, and
    -   adding a special ``.pth`` file to create a working package in
    -   ``sys.modules``.
    -
    - * Made ``--single-version-externally-managed`` automatic when ``--root`` is
    -   used, so that most system packagers won't require special support for
    -   setuptools.
    -
    - * Fixed ``setup_requires``, ``tests_require``, etc. not using ``setup.cfg`` or
    -   other configuration files for their option defaults when installing, and
    -   also made the install use ``--multi-version`` mode so that the project
    -   directory doesn't need to support .pth files.
    -
    - * ``MANIFEST.in`` is now forcibly closed when any errors occur while reading
    -   it.  Previously, the file could be left open and the actual error would be
    -   masked by problems trying to remove the open file on Windows systems.
    -
    -------
    -0.6a10
    -------
    -
    - * Fixed the ``develop`` command ignoring ``--find-links``.
    -
    ------
    -0.6a9
    ------
    -
    - * The ``sdist`` command no longer uses the traditional ``MANIFEST`` file to
    -   create source distributions.  ``MANIFEST.in`` is still read and processed,
    -   as are the standard defaults and pruning.  But the manifest is built inside
    -   the project's ``.egg-info`` directory as ``SOURCES.txt``, and it is rebuilt
    -   every time the ``egg_info`` command is run.
    -
    - * Added the ``include_package_data`` keyword to ``setup()``, allowing you to
    -   automatically include any package data listed in revision control or
    -   ``MANIFEST.in``
    -
    - * Added the ``exclude_package_data`` keyword to ``setup()``, allowing you to
    -   trim back files included via the ``package_data`` and
    -   ``include_package_data`` options.
    -
    - * Fixed ``--tag-svn-revision`` not working when run from a source
    -   distribution.
    -
    - * Added warning for namespace packages with missing ``declare_namespace()``
    -
    - * Added ``tests_require`` keyword to ``setup()``, so that e.g. packages
    -   requiring ``nose`` to run unit tests can make this dependency optional
    -   unless the ``test`` command is run.
    -
    - * Made all commands that use ``easy_install`` respect its configuration
    -   options, as this was causing some problems with ``setup.py install``.
    -
    - * Added an ``unpack_directory()`` driver to ``setuptools.archive_util``, so
    -   that you can process a directory tree through a processing filter as if it
    -   were a zipfile or tarfile.
    -
    - * Added an internal ``install_egg_info`` command to use as part of old-style
    -   ``install`` operations, that installs an ``.egg-info`` directory with the
    -   package.
    -
    - * Added a ``--single-version-externally-managed`` option to the ``install``
    -   command so that you can more easily wrap a "flat" egg in a system package.
    -
    - * Enhanced ``bdist_rpm`` so that it installs single-version eggs that
    -   don't rely on a ``.pth`` file.  The ``--no-egg`` option has been removed,
    -   since all RPMs are now built in a more backwards-compatible format.
    -
    - * Support full roundtrip translation of eggs to and from ``bdist_wininst``
    -   format.  Running ``bdist_wininst`` on a setuptools-based package wraps the
    -   egg in an .exe that will safely install it as an egg (i.e., with metadata
    -   and entry-point wrapper scripts), and ``easy_install`` can turn the .exe
    -   back into an ``.egg`` file or directory and install it as such.
    -
    -
    ------
    -0.6a8
    ------
    -
    - * Fixed some problems building extensions when Pyrex was installed, especially
    -   with Python 2.4 and/or packages using SWIG.
    -
    - * Made ``develop`` command accept all the same options as ``easy_install``,
    -   and use the ``easy_install`` command's configuration settings as defaults.
    -
    - * Made ``egg_info --tag-svn-revision`` fall back to extracting the revision
    -   number from ``PKG-INFO`` in case it is being run on a source distribution of
    -   a snapshot taken from a Subversion-based project.
    -
    - * Automatically detect ``.dll``, ``.so`` and ``.dylib`` files that are being
    -   installed as data, adding them to ``native_libs.txt`` automatically.
    -
    - * Fixed some problems with fresh checkouts of projects that don't include
    -   ``.egg-info/PKG-INFO`` under revision control and put the project's source
    -   code directly in the project directory.  If such a package had any
    -   requirements that get processed before the ``egg_info`` command can be run,
    -   the setup scripts would fail with a "Missing 'Version:' header and/or
    -   PKG-INFO file" error, because the egg runtime interpreted the unbuilt
    -   metadata in a directory on ``sys.path`` (i.e. the current directory) as
    -   being a corrupted egg.  Setuptools now monkeypatches the distribution
    -   metadata cache to pretend that the egg has valid version information, until
    -   it has a chance to make it actually be so (via the ``egg_info`` command).
    -
    ------
    -0.6a5
    ------
    -
    - * Fixed missing gui/cli .exe files in distribution.  Fixed bugs in tests.
    -
    ------
    -0.6a3
    ------
    -
    - * Added ``gui_scripts`` entry point group to allow installing GUI scripts
    -   on Windows and other platforms.  (The special handling is only for Windows;
    -   other platforms are treated the same as for ``console_scripts``.)
    -
    ------
    -0.6a2
    ------
    -
    - * Added ``console_scripts`` entry point group to allow installing scripts
    -   without the need to create separate script files.  On Windows, console
    -   scripts get an ``.exe`` wrapper so you can just type their name.  On other
    -   platforms, the scripts are written without a file extension.
    -
    ------
    -0.6a1
    ------
    -
    - * Added support for building "old-style" RPMs that don't install an egg for
    -   the target package, using a ``--no-egg`` option.
    -
    - * The ``build_ext`` command now works better when using the ``--inplace``
    -   option and multiple Python versions.  It now makes sure that all extensions
    -   match the current Python version, even if newer copies were built for a
    -   different Python version.
    -
    - * The ``upload`` command no longer attaches an extra ``.zip`` when uploading
    -   eggs, as PyPI now supports egg uploads without trickery.
    -
    - * The ``ez_setup`` script/module now displays a warning before downloading
    -   the setuptools egg, and attempts to check the downloaded egg against an
    -   internal MD5 checksum table.
    -
    - * Fixed the ``--tag-svn-revision`` option of ``egg_info`` not finding the
    -   latest revision number; it was using the revision number of the directory
    -   containing ``setup.py``, not the highest revision number in the project.
    -
    - * Added ``eager_resources`` setup argument
    -
    - * The ``sdist`` command now recognizes Subversion "deleted file" entries and
    -   does not include them in source distributions.
    -
    - * ``setuptools`` now embeds itself more thoroughly into the distutils, so that
    -   other distutils extensions (e.g. py2exe, py2app) will subclass setuptools'
    -   versions of things, rather than the native distutils ones.
    -
    - * Added ``entry_points`` and ``setup_requires`` arguments to ``setup()``;
    -   ``setup_requires`` allows you to automatically find and download packages
    -   that are needed in order to *build* your project (as opposed to running it).
    -
    - * ``setuptools`` now finds its commands, ``setup()`` argument validators, and
    -   metadata writers using entry points, so that they can be extended by
    -   third-party packages.  See `Creating distutils Extensions
    -   `_
    -   for more details.
    -
    - * The vestigial ``depends`` command has been removed.  It was never finished
    -   or documented, and never would have worked without EasyInstall - which it
    -   pre-dated and was never compatible with.
    -
    -------
    -0.5a12
    -------
    -
    - * The zip-safety scanner now checks for modules that might be used with
    -   ``python -m``, and marks them as unsafe for zipping, since Python 2.4 can't
    -   handle ``-m`` on zipped modules.
    -
    -------
    -0.5a11
    -------
    -
    - * Fix breakage of the "develop" command that was caused by the addition of
    -   ``--always-unzip`` to the ``easy_install`` command.
    -
    ------
    -0.5a9
    ------
    -
    - * Include ``svn:externals`` directories in source distributions as well as
    -   normal subversion-controlled files and directories.
    -
    - * Added ``exclude=patternlist`` option to ``setuptools.find_packages()``
    -
    - * Changed --tag-svn-revision to include an "r" in front of the revision number
    -   for better readability.
    -
    - * Added ability to build eggs without including source files (except for any
    -   scripts, of course), using the ``--exclude-source-files`` option to
    -   ``bdist_egg``.
    -
    - * ``setup.py install`` now automatically detects when an "unmanaged" package
    -   or module is going to be on ``sys.path`` ahead of a package being installed,
    -   thereby preventing the newer version from being imported.  If this occurs,
    -   a warning message is output to ``sys.stderr``, but installation proceeds
    -   anyway.  The warning message informs the user what files or directories
    -   need deleting, and advises them they can also use EasyInstall (with the
    -   ``--delete-conflicting`` option) to do it automatically.
    -
    - * The ``egg_info`` command now adds a ``top_level.txt`` file to the metadata
    -   directory that lists all top-level modules and packages in the distribution.
    -   This is used by the ``easy_install`` command to find possibly-conflicting
    -   "unmanaged" packages when installing the distribution.
    -
    - * Added ``zip_safe`` and ``namespace_packages`` arguments to ``setup()``.
    -   Added package analysis to determine zip-safety if the ``zip_safe`` flag
    -   is not given, and advise the author regarding what code might need changing.
    -
    - * Fixed the swapped ``-d`` and ``-b`` options of ``bdist_egg``.
    -
    ------
    -0.5a8
    ------
    -
    - * The "egg_info" command now always sets the distribution metadata to "safe"
    -   forms of the distribution name and version, so that distribution files will
    -   be generated with parseable names (i.e., ones that don't include '-' in the
    -   name or version).  Also, this means that if you use the various ``--tag``
    -   options of "egg_info", any distributions generated will use the tags in the
    -   version, not just egg distributions.
    -
    - * Added support for defining command aliases in distutils configuration files,
    -   under the "[aliases]" section.  To prevent recursion and to allow aliases to
    -   call the command of the same name, a given alias can be expanded only once
    -   per command-line invocation.  You can define new aliases with the "alias"
    -   command, either for the local, global, or per-user configuration.
    -
    - * Added "rotate" command to delete old distribution files, given a set of
    -   patterns to match and the number of files to keep.  (Keeps the most
    -   recently-modified distribution files matching each pattern.)
    -
    - * Added "saveopts" command that saves all command-line options for the current
    -   invocation to the local, global, or per-user configuration file.  Useful for
    -   setting defaults without having to hand-edit a configuration file.
    -
    - * Added a "setopt" command that sets a single option in a specified distutils
    -   configuration file.
    -
    ------
    -0.5a7
    ------
    -
    - * Added "upload" support for egg and source distributions, including a bug
    -   fix for "upload" and a temporary workaround for lack of .egg support in
    -   PyPI.
    -
    ------
    -0.5a6
    ------
    -
    - * Beefed up the "sdist" command so that if you don't have a MANIFEST.in, it
    -   will include all files under revision control (CVS or Subversion) in the
    -   current directory, and it will regenerate the list every time you create a
    -   source distribution, not just when you tell it to.  This should make the
    -   default "do what you mean" more often than the distutils' default behavior
    -   did, while still retaining the old behavior in the presence of MANIFEST.in.
    -
    - * Fixed the "develop" command always updating .pth files, even if you
    -   specified ``-n`` or ``--dry-run``.
    -
    - * Slightly changed the format of the generated version when you use
    -   ``--tag-build`` on the "egg_info" command, so that you can make tagged
    -   revisions compare *lower* than the version specified in setup.py (e.g. by
    -   using ``--tag-build=dev``).
    -
    ------
    -0.5a5
    ------
    -
    - * Added ``develop`` command to ``setuptools``-based packages.  This command
    -   installs an ``.egg-link`` pointing to the package's source directory, and
    -   script wrappers that ``execfile()`` the source versions of the package's
    -   scripts.  This lets you put your development checkout(s) on sys.path without
    -   having to actually install them.  (To uninstall the link, use
    -   use ``setup.py develop --uninstall``.)
    -
    - * Added ``egg_info`` command to ``setuptools``-based packages.  This command
    -   just creates or updates the "projectname.egg-info" directory, without
    -   building an egg.  (It's used by the ``bdist_egg``, ``test``, and ``develop``
    -   commands.)
    -
    - * Enhanced the ``test`` command so that it doesn't install the package, but
    -   instead builds any C extensions in-place, updates the ``.egg-info``
    -   metadata, adds the source directory to ``sys.path``, and runs the tests
    -   directly on the source.  This avoids an "unmanaged" installation of the
    -   package to ``site-packages`` or elsewhere.
    -
    - * Made ``easy_install`` a standard ``setuptools`` command, moving it from
    -   the ``easy_install`` module to ``setuptools.command.easy_install``.  Note
    -   that if you were importing or extending it, you must now change your imports
    -   accordingly.  ``easy_install.py`` is still installed as a script, but not as
    -   a module.
    -
    ------
    -0.5a4
    ------
    -
    - * Setup scripts using setuptools can now list their dependencies directly in
    -   the setup.py file, without having to manually create a ``depends.txt`` file.
    -   The ``install_requires`` and ``extras_require`` arguments to ``setup()``
    -   are used to create a dependencies file automatically.  If you are manually
    -   creating ``depends.txt`` right now, please switch to using these setup
    -   arguments as soon as practical, because ``depends.txt`` support will be
    -   removed in the 0.6 release cycle.  For documentation on the new arguments,
    -   see the ``setuptools.dist.Distribution`` class.
    -
    - * Setup scripts using setuptools now always install using ``easy_install``
    -   internally, for ease of uninstallation and upgrading.
    -
    ------
    -0.5a1
    ------
    -
    - * Added support for "self-installation" bootstrapping.  Packages can now
    -   include ``ez_setup.py`` in their source distribution, and add the following
    -   to their ``setup.py``, in order to automatically bootstrap installation of
    -   setuptools as part of their setup process::
    -
    -    from ez_setup import use_setuptools
    -    use_setuptools()
    -
    -    from setuptools import setup
    -    # etc...
    -
    ------
    -0.4a2
    ------
    -
    - * Added ``ez_setup.py`` installer/bootstrap script to make initial setuptools
    -   installation easier, and to allow distributions using setuptools to avoid
    -   having to include setuptools in their source distribution.
    -
    - * All downloads are now managed by the ``PackageIndex`` class (which is now
    -   subclassable and replaceable), so that embedders can more easily override
    -   download logic, give download progress reports, etc.  The class has also
    -   been moved to the new ``setuptools.package_index`` module.
    -
    - * The ``Installer`` class no longer handles downloading, manages a temporary
    -   directory, or tracks the ``zip_ok`` option.  Downloading is now handled
    -   by ``PackageIndex``, and ``Installer`` has become an ``easy_install``
    -   command class based on ``setuptools.Command``.
    -
    - * There is a new ``setuptools.sandbox.run_setup()`` API to invoke a setup
    -   script in a directory sandbox, and a new ``setuptools.archive_util`` module
    -   with an ``unpack_archive()`` API.  These were split out of EasyInstall to
    -   allow reuse by other tools and applications.
    -
    - * ``setuptools.Command`` now supports reinitializing commands using keyword
    -   arguments to set/reset options.  Also, ``Command`` subclasses can now set
    -   their ``command_consumes_arguments`` attribute to ``True`` in order to
    -   receive an ``args`` option containing the rest of the command line.
    -
    ------
    -0.3a2
    ------
    -
    - * Added new options to ``bdist_egg`` to allow tagging the egg's version number
    -   with a subversion revision number, the current date, or an explicit tag
    -   value.  Run ``setup.py bdist_egg --help`` to get more information.
    -
    - * Misc. bug fixes
    -
    ------
    -0.3a1
    ------
    -
    - * Initial release.
    -
    -
    diff --git a/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/RECORD b/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/RECORD
    deleted file mode 100644
    index a44b7ba..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/RECORD
    +++ /dev/null
    @@ -1,166 +0,0 @@
    -easy_install.py,sha256=MDC9vt5AxDsXX5qcKlBz2TnW6Tpuv_AobnfhCJ9X3PM,126
    -pkg_resources.py,sha256=WKXd8GioLIuX5NYkaYNdzLmCbXIH-cdo900dtGVaTBo,100974
    -setuptools/archive_util.py,sha256=xr6Xl-PbXymPMuuq5TokDMs7SvKMVKsjUegw8mpj7_g,6556
    -setuptools/cli-32.exe,sha256=dfEuovMNnA2HLa3jRfMPVi5tk4R7alCbpTvuxtCyw0Y,65536
    -setuptools/cli-64.exe,sha256=KLABu5pyrnokJCv6skjXZ6GsXeyYHGcqOUT3oHI3Xpo,74752
    -setuptools/cli-arm-32.exe,sha256=0pFNIi2SmY2gdY91Y4LRhj1wuBsnv5cG1fus3iBJv40,69120
    -setuptools/cli.exe,sha256=dfEuovMNnA2HLa3jRfMPVi5tk4R7alCbpTvuxtCyw0Y,65536
    -setuptools/compat.py,sha256=-Hl58PuLOEHUDM3-qsgmk50qNiyLLF3RgBgJ-eGGZG0,2094
    -setuptools/depends.py,sha256=gMRnrqQSr_Yp_wf09O88vKSQah1YjjEi5PsDNezM2Hs,6370
    -setuptools/dist.py,sha256=tzUrozVQmFJxuvRVyisQqT_JURxR5OgJ3zHaLvFq2Is,33406
    -setuptools/extension.py,sha256=ph9C_JTTthk_w2xEW3Tdpms_EPFCYRSxANw-F5UAqsI,1821
    -setuptools/gui-32.exe,sha256=XBr0bHMA6Hpz2s9s9Bzjl-PwXfa9nH4ie0rFn4V2kWA,65536
    -setuptools/gui-64.exe,sha256=aYKMhX1IJLn4ULHgWX0sE0yREUt6B3TEHf_jOw6yNyE,75264
    -setuptools/gui-arm-32.exe,sha256=R5gRWLkY7wvO_CVGxoi7LZVTv0h-DKsKScy6fkbp4XI,69120
    -setuptools/gui.exe,sha256=XBr0bHMA6Hpz2s9s9Bzjl-PwXfa9nH4ie0rFn4V2kWA,65536
    -setuptools/lib2to3_ex.py,sha256=6jPF9sJuHiz0cyg4cwIBLl2VMAxcl3GYSZwWAOuJplU,1998
    -setuptools/msvc9_support.py,sha256=vVfk9Y6QvSEgjDooEc8uLqjMrPFRXL5VofDIKQi1EFs,2188
    -setuptools/package_index.py,sha256=IOHE81H91eEcR80gMquyQuU9Rh9cv7_6JOLLB0iNbhs,38943
    -setuptools/py26compat.py,sha256=ggKS8_aZWWHHS792vF3uXp5vmUkGNk3vjLreLTHr_-Q,431
    -setuptools/py27compat.py,sha256=CGj-jZcFgHUkrEdLvArkxHj96tAaMbG2-yJtUVU7QVI,306
    -setuptools/py31compat.py,sha256=O3X_wdWrvXTifeSFbRaCMuc23cDhMHJn7QlITb5cQ8E,1637
    -setuptools/sandbox.py,sha256=U5QwtrByF-ITHzGl1FyxhoRYdvNeic6-Ie-N6XW0Ybc,10430
    -setuptools/script (dev).tmpl,sha256=f7MR17dTkzaqkCMSVseyOCMVrPVSMdmTQsaB8cZzfuI,201
    -setuptools/script.tmpl,sha256=WGTt5piezO27c-Dbx6l5Q4T3Ff20A5z7872hv3aAhYY,138
    -setuptools/site-patch.py,sha256=K-0-cAx36mX_PG-qPZwosG9ZLCliRjquKQ4nHiJvvzg,2389
    -setuptools/ssl_support.py,sha256=FASqXlRCmXAi6LUWLUIo0u14MpJqHBgkOc5KPHSRrtI,8044
    -setuptools/svn_utils.py,sha256=SDSOSVpbAvWoswgKdTQAOxd8pEd1ZdRtqD4skntW6-E,18855
    -setuptools/unicode_utils.py,sha256=gvhAHRj1LELCz-1MP3rfXGi__O1CAm5aksO9Njd2lpU,981
    -setuptools/utils.py,sha256=08Z7mt-9mvrx-XvmS5EyKoRn2lxNTlgFsUwBU3Eq9JQ,293
    -setuptools/version.py,sha256=hGqPB0hmCaq_OizI44M2dAaitOf_dLYmD4ACQAs5F94,22
    -setuptools/__init__.py,sha256=CliC3Pe-ej7j-iPQ1fu9Rkh2DdrfkBzRcSIJ3vF5dmg,5195
    -setuptools/command/alias.py,sha256=1sLQxZcNh6dDQpDmm4G7UGGTol83nY1NTPmNBbm2siI,2381
    -setuptools/command/bdist_egg.py,sha256=vGysGAHsTGSbSUwEBtHZ-Mtz54nU_tSwcc8DlnHfM7A,17606
    -setuptools/command/bdist_rpm.py,sha256=B7l0TnzCGb-0nLlm6rS00jWLkojASwVmdhW2w5Qz_Ak,1508
    -setuptools/command/bdist_wininst.py,sha256=_6dz3lpB1tY200LxKPLM7qgwTCceOMgaWFF-jW2-pm0,637
    -setuptools/command/build_ext.py,sha256=cukClSx-aLSuWmhWLmXPNDNr9ZHpFL7a01z71bwy9Go,12324
    -setuptools/command/build_py.py,sha256=FtFC7cRlKQCHT4-1yDey3igltuiGwFh8VsFg2U0B0kw,8644
    -setuptools/command/develop.py,sha256=uyRwABU1JnhQhZO9rS8-nenkzLwKKJt2P7WPnsXrHd4,6610
    -setuptools/command/easy_install.py,sha256=Nsa4Zj-oUL4GAI5KDxy1HTJ1KCJbm6sDPUEPv036xf4,82661
    -setuptools/command/egg_info.py,sha256=6B4Gh1qPpPGPcyFL3R68SsTLGwownVDkauJl_X1bVFg,15212
    -setuptools/command/install.py,sha256=QwaFiZRU3ytIHoPh8uJ9EqV3Fu9C4ca4B7UGAo95tws,4685
    -setuptools/command/install_egg_info.py,sha256=KXNB8O34-rK-cZZZr2fnT8kqNktDmTfUA88X2Iln66c,4001
    -setuptools/command/install_lib.py,sha256=ntpy-9xiFHfDmXmX_Lfp7nMchw7FpgyP66H7reixI_Y,3771
    -setuptools/command/install_scripts.py,sha256=evsgRosqRxlww6l7BBx43RINpAbLd1raVkW2-dmFCyU,2041
    -setuptools/command/launcher manifest.xml,sha256=xlLbjWrB01tKC0-hlVkOKkiSPbzMml2eOPtJ_ucCnbE,628
    -setuptools/command/register.py,sha256=bHlMm1qmBbSdahTOT8w6UhA-EgeQIz7p6cD-qOauaiI,270
    -setuptools/command/rotate.py,sha256=Qm7SOa32L9XG5b_C7_SSYvKM5rqFXroeQ6w8GXIsY2o,2038
    -setuptools/command/saveopts.py,sha256=za7QCBcQimKKriWcoCcbhxPjUz30gSB74zuTL47xpP4,658
    -setuptools/command/sdist.py,sha256=Nx1zjnpFJwk1gVvm96TDAoq_aHDH_53hWRKq8Wmjvgg,8604
    -setuptools/command/setopt.py,sha256=Z3_kav60D2XHZjM0cRhGo7wbBYo7nr4U_U-wMMbpmu8,5080
    -setuptools/command/test.py,sha256=-ZbBhuoKrfOx_pgA-53H-qRw6Z9evRP8_z1KdKI7yvw,6481
    -setuptools/command/upload_docs.py,sha256=617bECKkdDizKaV_kN62hXjgmwKMbpY4l3zecNEdjNk,6811
    -setuptools/command/__init__.py,sha256=gQMXoLa0TtUtmUZY0ptSouWWA5kcTArWyDQ6QwkjoVQ,554
    -setuptools/tests/environment.py,sha256=Sl9Pok7ZEakC6YXP8urDkh9-XxQpoJAzyzzZUqOGOXQ,4658
    -setuptools/tests/py26compat.py,sha256=i_JBukWMEat4AM1FtU8DAd06r0gjZR3uma_jb_gxEXU,267
    -setuptools/tests/script-with-bom.py,sha256=nWOGL62VEQBsH5GaZvCyRyYqobziynGaqQJisffifsc,46
    -setuptools/tests/server.py,sha256=Fqk53860mwB_wDNOzixZLjCq_c8_1kaGiXBm5fHco2c,2651
    -setuptools/tests/test_bdist_egg.py,sha256=yD2dP8ApUtyo4rpwzSEGgeLjxihU7xHVAK2O2bCL52U,1962
    -setuptools/tests/test_build_ext.py,sha256=mfWDSPPR2auCi3AbZILJp-175Dj0551d6xpvM0md4zE,650
    -setuptools/tests/test_develop.py,sha256=JFvKRFbjzsExQBmg1kN-dWijhPY4uGO1TMQFDy9QFoc,3496
    -setuptools/tests/test_dist_info.py,sha256=ZgVLERe6WZpWUcwrLGk2b_cSOMZMASLV1hTV4hgQLG0,2615
    -setuptools/tests/test_easy_install.py,sha256=vjr2KNv78vgLg7otZeqz9yPXe0M7gOxiOE5MRvARblk,15704
    -setuptools/tests/test_egg_info.py,sha256=mJ8BDZuIWe_4-2mo_OQGAdi0DG1mS3pm0ZAEPdS_2vc,6745
    -setuptools/tests/test_find_packages.py,sha256=McPOROBbIR7JK5a2tMWTA88S6LrbcGMnPAZ66Oq32AQ,6005
    -setuptools/tests/test_integration.py,sha256=gXHi9iQ9LMqAjWcoGe4yvS-H3UczoOW3ij-x-afP0a4,2506
    -setuptools/tests/test_markerlib.py,sha256=UYBTjaug56cWxIwlCubdSTGZ-s9bqB1co54636x0xfo,2506
    -setuptools/tests/test_msvc9compiler.py,sha256=XDCexE-n1vPmcJIIHQyNalDm2EcquW_S6V1CAfdjayk,5617
    -setuptools/tests/test_packageindex.py,sha256=8vay-a5Dry_cg71WFA1rlofIWO5c9KI6D6PKN4WKKiI,7625
    -setuptools/tests/test_resources.py,sha256=-YyuIR1EGofI44SycRIhF59NCxP_r8MD8iZj7aBGXHg,23639
    -setuptools/tests/test_sandbox.py,sha256=bdUzddjT6dojVbFOHQPFqqYaLGAMcLKVlWI_ADcY9SE,2364
    -setuptools/tests/test_sdist.py,sha256=6RoBhb-GeyzK1vt4J5jFOfvr6ibjJVbFlJktiO6Ls2w,19045
    -setuptools/tests/test_svn.py,sha256=UI9rRTWQDw7NGRzSKmgcsnkDGX8M4QDj447kCXvf5D8,7806
    -setuptools/tests/test_test.py,sha256=pnN_pLgda5uEJU0-X8n04g90OaxQ5_CTsLTxy2SqR80,3697
    -setuptools/tests/test_upload_docs.py,sha256=N__IVGihRBRqA3PetRcIDmNFu1XOhR7ix0e50xMuq_M,2139
    -setuptools/tests/__init__.py,sha256=6dOlIFbLaq185Y7B7wNUXwMGl1UCGGdM98pYTzMDmYQ,12531
    -setuptools/_vendor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
    -setuptools/_vendor/packaging/version.py,sha256=7CVQcHdtoeHsafRfjCBc5SG5Wg3SzY2NQR5UD1SJKrI,26559
    -setuptools/_vendor/packaging/_compat.py,sha256=a95VQwJSBuU5Z74gjfkiXsiE54MPR4fXIQU9PiqpsvQ,800
    -setuptools/_vendor/packaging/_structures.py,sha256=93YvgrEE2HgFp8AdXy0pwCRVnZeutRHO_-puJ7T0cPw,1809
    -setuptools/_vendor/packaging/__about__.py,sha256=ZszNzs5_oxVVHyFdNAxM4yzJ7pHmQaXo1cUbf2xAAtw,1073
    -setuptools/_vendor/packaging/__init__.py,sha256=2V8n-eEpSgBuXlV8hlMmhU7ZklpsrrusWMZNp2gC4Hs,906
    -setuptools-6.0.2.dist-info/dependency_links.txt,sha256=UaFV2I99Rbdie_2lV4pEX6M2jKNDN7RhFSbiL1-PDiY,221
    -setuptools-6.0.2.dist-info/DESCRIPTION.rst,sha256=4qJuy_Iu2M0r2utPdQiCuNynTJEBS2ojXprb1lknImU,84114
    -setuptools-6.0.2.dist-info/entry_points.txt,sha256=wxdNYALrJxn2PJtYZXehrEYO05eRXr7j2I3vzIu3hK4,2872
    -setuptools-6.0.2.dist-info/METADATA,sha256=8Z_ApY-PWD-SA7iVX66fapng4BiFIUQb2VK0EHDDjMg,85476
    -setuptools-6.0.2.dist-info/metadata.json,sha256=44bzVnOVTScjdjHMPOVrN952QJ2Z8Y2cZ5F9W6tij4k,4800
    -setuptools-6.0.2.dist-info/RECORD,,
    -setuptools-6.0.2.dist-info/top_level.txt,sha256=7780fzudMJkykiTcIrAQ8m8Lll6kot3EEePye3VJgEE,49
    -setuptools-6.0.2.dist-info/WHEEL,sha256=56WjMPRUEpmb30QaTzVbQCpri5lzKGby5HLDkAMQeIU,116
    -setuptools-6.0.2.dist-info/zip-safe,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
    -_markerlib/markers.py,sha256=YuFp0-osufFIoqnzG3L0Z2fDCx4Vln3VUDeXJ2DA_1I,3979
    -_markerlib/__init__.py,sha256=GSmhZqvAitLJHhSgtqqusfq2nJ_ClP3oy3Lm0uZLIsU,552
    -/srv/openmedialibrary/platform/Shared/home/.local/bin/easy_install,sha256=7h7lc5DCAhnE08UwEm49wGymGDGdOcrkRdncTKYmXIQ,233
    -/srv/openmedialibrary/platform/Shared/home/.local/bin/easy_install-3.4,sha256=7h7lc5DCAhnE08UwEm49wGymGDGdOcrkRdncTKYmXIQ,233
    -setuptools/__pycache__/py27compat.cpython-34.pyc,,
    -setuptools/tests/__pycache__/test_packageindex.cpython-34.pyc,,
    -setuptools/command/__pycache__/bdist_rpm.cpython-34.pyc,,
    -setuptools/command/__pycache__/bdist_wininst.cpython-34.pyc,,
    -setuptools/command/__pycache__/saveopts.cpython-34.pyc,,
    -setuptools/tests/__pycache__/test_build_ext.cpython-34.pyc,,
    -setuptools/command/__pycache__/upload_docs.cpython-34.pyc,,
    -setuptools/tests/__pycache__/test_bdist_egg.cpython-34.pyc,,
    -setuptools/tests/__pycache__/test_upload_docs.cpython-34.pyc,,
    -setuptools/command/__pycache__/setopt.cpython-34.pyc,,
    -setuptools/__pycache__/sandbox.cpython-34.pyc,,
    -setuptools/_vendor/packaging/__pycache__/_compat.cpython-34.pyc,,
    -setuptools/tests/__pycache__/test_markerlib.cpython-34.pyc,,
    -setuptools/command/__pycache__/sdist.cpython-34.pyc,,
    -setuptools/tests/__pycache__/test_svn.cpython-34.pyc,,
    -setuptools/__pycache__/unicode_utils.cpython-34.pyc,,
    -setuptools/tests/__pycache__/test_dist_info.cpython-34.pyc,,
    -setuptools/__pycache__/utils.cpython-34.pyc,,
    -setuptools/__pycache__/site-patch.cpython-34.pyc,,
    -setuptools/_vendor/packaging/__pycache__/_structures.cpython-34.pyc,,
    -__pycache__/pkg_resources.cpython-34.pyc,,
    -setuptools/_vendor/packaging/__pycache__/__init__.cpython-34.pyc,,
    -setuptools/__pycache__/py31compat.cpython-34.pyc,,
    -setuptools/tests/__pycache__/__init__.cpython-34.pyc,,
    -setuptools/__pycache__/compat.cpython-34.pyc,,
    -setuptools/tests/__pycache__/test_egg_info.cpython-34.pyc,,
    -setuptools/tests/__pycache__/test_test.cpython-34.pyc,,
    -setuptools/command/__pycache__/install_scripts.cpython-34.pyc,,
    -setuptools/__pycache__/py26compat.cpython-34.pyc,,
    -setuptools/tests/__pycache__/test_integration.cpython-34.pyc,,
    -setuptools/command/__pycache__/register.cpython-34.pyc,,
    -setuptools/command/__pycache__/install_egg_info.cpython-34.pyc,,
    -__pycache__/easy_install.cpython-34.pyc,,
    -setuptools/tests/__pycache__/test_develop.cpython-34.pyc,,
    -setuptools/__pycache__/package_index.cpython-34.pyc,,
    -setuptools/command/__pycache__/build_ext.cpython-34.pyc,,
    -setuptools/tests/__pycache__/server.cpython-34.pyc,,
    -setuptools/tests/__pycache__/environment.cpython-34.pyc,,
    -_markerlib/__pycache__/markers.cpython-34.pyc,,
    -setuptools/__pycache__/dist.cpython-34.pyc,,
    -setuptools/tests/__pycache__/test_easy_install.cpython-34.pyc,,
    -setuptools/command/__pycache__/bdist_egg.cpython-34.pyc,,
    -setuptools/tests/__pycache__/test_find_packages.cpython-34.pyc,,
    -setuptools/command/__pycache__/build_py.cpython-34.pyc,,
    -setuptools/command/__pycache__/__init__.cpython-34.pyc,,
    -setuptools/command/__pycache__/develop.cpython-34.pyc,,
    -setuptools/command/__pycache__/install.cpython-34.pyc,,
    -setuptools/command/__pycache__/alias.cpython-34.pyc,,
    -setuptools/_vendor/__pycache__/__init__.cpython-34.pyc,,
    -setuptools/command/__pycache__/egg_info.cpython-34.pyc,,
    -setuptools/tests/__pycache__/test_msvc9compiler.cpython-34.pyc,,
    -setuptools/__pycache__/svn_utils.cpython-34.pyc,,
    -setuptools/__pycache__/msvc9_support.cpython-34.pyc,,
    -setuptools/__pycache__/version.cpython-34.pyc,,
    -setuptools/command/__pycache__/test.cpython-34.pyc,,
    -setuptools/tests/__pycache__/py26compat.cpython-34.pyc,,
    -setuptools/__pycache__/ssl_support.cpython-34.pyc,,
    -setuptools/_vendor/packaging/__pycache__/__about__.cpython-34.pyc,,
    -setuptools/tests/__pycache__/script-with-bom.cpython-34.pyc,,
    -setuptools/__pycache__/__init__.cpython-34.pyc,,
    -setuptools/command/__pycache__/install_lib.cpython-34.pyc,,
    -_markerlib/__pycache__/__init__.cpython-34.pyc,,
    -setuptools/__pycache__/archive_util.cpython-34.pyc,,
    -setuptools/_vendor/packaging/__pycache__/version.cpython-34.pyc,,
    -setuptools/tests/__pycache__/test_sdist.cpython-34.pyc,,
    -setuptools/__pycache__/depends.cpython-34.pyc,,
    -setuptools/tests/__pycache__/test_resources.cpython-34.pyc,,
    -setuptools/__pycache__/extension.cpython-34.pyc,,
    -setuptools/__pycache__/lib2to3_ex.cpython-34.pyc,,
    -setuptools/command/__pycache__/easy_install.cpython-34.pyc,,
    -setuptools/tests/__pycache__/test_sandbox.cpython-34.pyc,,
    -setuptools/command/__pycache__/rotate.cpython-34.pyc,,
    diff --git a/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/metadata.json b/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/metadata.json
    deleted file mode 100644
    index 6d64ebe..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/metadata.json
    +++ /dev/null
    @@ -1 +0,0 @@
    -{"keywords": ["CPAN", "PyPI", "distutils", "eggs", "package", "management"], "name": "setuptools", "classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Python Software Foundation License", "License :: OSI Approved :: Zope Public License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Archiving :: Packaging", "Topic :: System :: Systems Administration", "Topic :: Utilities"], "extensions": {"python.exports": {"distutils.setup_keywords": {"test_loader": "setuptools.dist:check_importable", "dependency_links": "setuptools.dist:assert_string_list", "use_2to3_fixers": "setuptools.dist:assert_string_list", "extras_require": "setuptools.dist:check_extras", "namespace_packages": "setuptools.dist:check_nsp", "use_2to3_exclude_fixers": "setuptools.dist:assert_string_list", "include_package_data": "setuptools.dist:assert_bool", "package_data": "setuptools.dist:check_package_data", "install_requires": "setuptools.dist:check_requirements", "eager_resources": "setuptools.dist:assert_string_list", "entry_points": "setuptools.dist:check_entry_points", "test_runner": "setuptools.dist:check_importable", "packages": "setuptools.dist:check_packages", "test_suite": "setuptools.dist:check_test_suite", "convert_2to3_doctests": "setuptools.dist:assert_string_list", "zip_safe": "setuptools.dist:assert_bool", "exclude_package_data": "setuptools.dist:check_package_data", "tests_require": "setuptools.dist:check_requirements", "setup_requires": "setuptools.dist:check_requirements", "use_2to3": "setuptools.dist:assert_bool"}, "distutils.commands": {"easy_install": "setuptools.command.easy_install:easy_install", "develop": "setuptools.command.develop:develop", "rotate": "setuptools.command.rotate:rotate", "install": "setuptools.command.install:install", "bdist_egg": "setuptools.command.bdist_egg:bdist_egg", "build_py": "setuptools.command.build_py:build_py", "bdist_rpm": "setuptools.command.bdist_rpm:bdist_rpm", "build_ext": "setuptools.command.build_ext:build_ext", "register": "setuptools.command.register:register", "upload_docs": "setuptools.command.upload_docs:upload_docs", "alias": "setuptools.command.alias:alias", "setopt": "setuptools.command.setopt:setopt", "saveopts": "setuptools.command.saveopts:saveopts", "bdist_wininst": "setuptools.command.bdist_wininst:bdist_wininst", "install_scripts": "setuptools.command.install_scripts:install_scripts", "test": "setuptools.command.test:test", "install_egg_info": "setuptools.command.install_egg_info:install_egg_info", "sdist": "setuptools.command.sdist:sdist", "egg_info": "setuptools.command.egg_info:egg_info", "install_lib": "setuptools.command.install_lib:install_lib"}, "setuptools.installation": {"eggsecutable": "setuptools.command.easy_install:bootstrap"}, "egg_info.writers": {"requires.txt": "setuptools.command.egg_info:write_requirements", "depends.txt": "setuptools.command.egg_info:warn_depends_obsolete", "dependency_links.txt": "setuptools.command.egg_info:overwrite_arg", "top_level.txt": "setuptools.command.egg_info:write_toplevel_names", "entry_points.txt": "setuptools.command.egg_info:write_entries", "namespace_packages.txt": "setuptools.command.egg_info:overwrite_arg", "PKG-INFO": "setuptools.command.egg_info:write_pkg_info", "eager_resources.txt": "setuptools.command.egg_info:overwrite_arg"}, "console_scripts": {"easy_install": "setuptools.command.easy_install:main", "easy_install-3.4": "setuptools.command.easy_install:main"}, "setuptools.file_finders": {"svn_cvs": "setuptools.command.sdist:_default_revctrl"}}, "python.details": {"project_urls": {"Home": "https://bitbucket.org/pypa/setuptools"}, "contacts": [{"email": "distutils-sig@python.org", "name": "Python Packaging Authority", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}}, "python.commands": {"wrap_console": {"easy_install": "setuptools.command.easy_install:main", "easy_install-3.4": "setuptools.command.easy_install:main"}}}, "summary": "Easily download, build, install, upgrade, and uninstall Python packages", "test_requires": [{"requires": ["setuptools[ssl]", "pytest"]}], "run_requires": [{"extra": "certs", "requires": ["certifi (==1.0.1)"]}, {"extra": "ssl", "requires": ["wincertstore (==0.2)"], "environment": "sys_platform=='win32'"}], "license": "PSF or ZPL", "extras": ["certs", "ssl"], "generator": "bdist_wheel (0.24.0)", "version": "6.0.2", "metadata_version": "2.0"}
    \ No newline at end of file
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/__init__.py b/Shared/lib/python3.4/site-packages/setuptools/__init__.py
    index d99ab2a..712ec08 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools/__init__.py
    +++ b/Shared/lib/python3.4/site-packages/setuptools/__init__.py
    @@ -1,7 +1,7 @@
     """Extensions to the 'distutils' for large or complex distributions"""
     
     import os
    -import sys
    +import functools
     import distutils.core
     import distutils.filelist
     from distutils.core import Command as _Command
    @@ -74,21 +74,24 @@ class PackageFinder(object):
                 yield pkg
     
         @staticmethod
    -    def _all_dirs(base_path):
    +    def _candidate_dirs(base_path):
             """
    -        Return all dirs in base_path, relative to base_path
    +        Return all dirs in base_path that might be packages.
             """
    +        has_dot = lambda name: '.' in name
             for root, dirs, files in os.walk(base_path, followlinks=True):
    +            # Exclude directories that contain a period, as they cannot be
    +            #  packages. Mutate the list to avoid traversal.
    +            dirs[:] = filterfalse(has_dot, dirs)
                 for dir in dirs:
                     yield os.path.relpath(os.path.join(root, dir), base_path)
     
         @classmethod
         def _find_packages_iter(cls, base_path):
    -        dirs = cls._all_dirs(base_path)
    -        suitable = filterfalse(lambda n: '.' in n, dirs)
    +        candidates = cls._candidate_dirs(base_path)
             return (
                 path.replace(os.path.sep, '.')
    -            for path in suitable
    +            for path in candidates
                 if cls._looks_like_package(os.path.join(base_path, path))
             )
     
    @@ -121,34 +124,45 @@ class Command(_Command):
         command_consumes_arguments = False
     
         def __init__(self, dist, **kw):
    -        # Add support for keyword arguments
    -        _Command.__init__(self,dist)
    -        for k,v in kw.items():
    -            setattr(self,k,v)
    +        """
    +        Construct the command for dist, updating
    +        vars(self) with any keyword parameters.
    +        """
    +        _Command.__init__(self, dist)
    +        vars(self).update(kw)
     
         def reinitialize_command(self, command, reinit_subcommands=0, **kw):
             cmd = _Command.reinitialize_command(self, command, reinit_subcommands)
    -        for k,v in kw.items():
    -            setattr(cmd,k,v)    # update command with keywords
    +        vars(cmd).update(kw)
             return cmd
     
    -distutils.core.Command = Command    # we can't patch distutils.cmd, alas
    +# we can't patch distutils.cmd, alas
    +distutils.core.Command = Command
     
    -def findall(dir = os.curdir):
    -    """Find all files under 'dir' and return the list of full filenames
    -    (relative to 'dir').
    +
    +def _find_all_simple(path):
         """
    -    all_files = []
    -    for base, dirs, files in os.walk(dir):
    -        if base==os.curdir or base.startswith(os.curdir+os.sep):
    -            base = base[2:]
    -        if base:
    -            files = [os.path.join(base, f) for f in files]
    -        all_files.extend(filter(os.path.isfile, files))
    -    return all_files
    +    Find all files under 'path'
    +    """
    +    results = (
    +        os.path.join(base, file)
    +        for base, dirs, files in os.walk(path, followlinks=True)
    +        for file in files
    +    )
    +    return filter(os.path.isfile, results)
     
    -distutils.filelist.findall = findall    # fix findall bug in distutils.
     
    -# sys.dont_write_bytecode was introduced in Python 2.6.
    -_dont_write_bytecode = getattr(sys, 'dont_write_bytecode',
    -    bool(os.environ.get("PYTHONDONTWRITEBYTECODE")))
    +def findall(dir=os.curdir):
    +    """
    +    Find all files under 'dir' and return the list of full filenames.
    +    Unless dir is '.', return full filenames with dir prepended.
    +    """
    +    files = _find_all_simple(dir)
    +    if dir == os.curdir:
    +        make_rel = functools.partial(os.path.relpath, start=dir)
    +        files = map(make_rel, files)
    +    return list(files)
    +
    +
    +# fix findall bug in distutils (http://bugs.python.org/issue12885)
    +distutils.filelist.findall = findall
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/_vendor/packaging/version.py b/Shared/lib/python3.4/site-packages/setuptools/_vendor/packaging/version.py
    deleted file mode 100644
    index 0affe89..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools/_vendor/packaging/version.py
    +++ /dev/null
    @@ -1,786 +0,0 @@
    -# Copyright 2014 Donald Stufft
    -#
    -# Licensed under the Apache License, Version 2.0 (the "License");
    -# you may not use this file except in compliance with the License.
    -# You may obtain a copy of the License at
    -#
    -# http://www.apache.org/licenses/LICENSE-2.0
    -#
    -# Unless required by applicable law or agreed to in writing, software
    -# distributed under the License is distributed on an "AS IS" BASIS,
    -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -# See the License for the specific language governing permissions and
    -# limitations under the License.
    -from __future__ import absolute_import, division, print_function
    -
    -import collections
    -import itertools
    -import re
    -
    -from ._compat import string_types
    -from ._structures import Infinity
    -
    -
    -__all__ = [
    -    "parse", "Version", "LegacyVersion", "InvalidVersion", "Specifier",
    -    "InvalidSpecifier",
    -]
    -
    -
    -_Version = collections.namedtuple(
    -    "_Version",
    -    ["epoch", "release", "dev", "pre", "post", "local"],
    -)
    -
    -
    -def parse(version):
    -    """
    -    Parse the given version string and return either a :class:`Version` object
    -    or a :class:`LegacyVersion` object depending on if the given version is
    -    a valid PEP 440 version or a legacy version.
    -    """
    -    try:
    -        return Version(version)
    -    except InvalidVersion:
    -        return LegacyVersion(version)
    -
    -
    -class InvalidVersion(ValueError):
    -    """
    -    An invalid version was found, users should refer to PEP 440.
    -    """
    -
    -
    -class _BaseVersion(object):
    -
    -    def __hash__(self):
    -        return hash(self._key)
    -
    -    def __lt__(self, other):
    -        return self._compare(other, lambda s, o: s < o)
    -
    -    def __le__(self, other):
    -        return self._compare(other, lambda s, o: s <= o)
    -
    -    def __eq__(self, other):
    -        return self._compare(other, lambda s, o: s == o)
    -
    -    def __ge__(self, other):
    -        return self._compare(other, lambda s, o: s >= o)
    -
    -    def __gt__(self, other):
    -        return self._compare(other, lambda s, o: s > o)
    -
    -    def __ne__(self, other):
    -        return self._compare(other, lambda s, o: s != o)
    -
    -    def _compare(self, other, method):
    -        if not isinstance(other, _BaseVersion):
    -            return NotImplemented
    -
    -        return method(self._key, other._key)
    -
    -
    -class LegacyVersion(_BaseVersion):
    -
    -    def __init__(self, version):
    -        self._version = str(version)
    -        self._key = _legacy_cmpkey(self._version)
    -
    -    def __str__(self):
    -        return self._version
    -
    -    def __repr__(self):
    -        return "".format(repr(str(self)))
    -
    -    @property
    -    def public(self):
    -        return self._version
    -
    -    @property
    -    def local(self):
    -        return None
    -
    -    @property
    -    def is_prerelease(self):
    -        return False
    -
    -
    -_legacy_version_component_re = re.compile(
    -    r"(\d+ | [a-z]+ | \.| -)", re.VERBOSE,
    -)
    -
    -_legacy_version_replacement_map = {
    -    "pre": "c", "preview": "c", "-": "final-", "rc": "c", "dev": "@",
    -}
    -
    -
    -def _parse_version_parts(s):
    -    for part in _legacy_version_component_re.split(s):
    -        part = _legacy_version_replacement_map.get(part, part)
    -
    -        if not part or part == ".":
    -            continue
    -
    -        if part[:1] in "0123456789":
    -            # pad for numeric comparison
    -            yield part.zfill(8)
    -        else:
    -            yield "*" + part
    -
    -    # ensure that alpha/beta/candidate are before final
    -    yield "*final"
    -
    -
    -def _legacy_cmpkey(version):
    -    # We hardcode an epoch of -1 here. A PEP 440 version can only have a epoch
    -    # greater than or equal to 0. This will effectively put the LegacyVersion,
    -    # which uses the defacto standard originally implemented by setuptools,
    -    # as before all PEP 440 versions.
    -    epoch = -1
    -
    -    # This scheme is taken from pkg_resources.parse_version setuptools prior to
    -    # it's adoption of the packaging library.
    -    parts = []
    -    for part in _parse_version_parts(version.lower()):
    -        if part.startswith("*"):
    -            # remove "-" before a prerelease tag
    -            if part < "*final":
    -                while parts and parts[-1] == "*final-":
    -                    parts.pop()
    -
    -            # remove trailing zeros from each series of numeric parts
    -            while parts and parts[-1] == "00000000":
    -                parts.pop()
    -
    -        parts.append(part)
    -    parts = tuple(parts)
    -
    -    return epoch, parts
    -
    -
    -class Version(_BaseVersion):
    -
    -    _regex = re.compile(
    -        r"""
    -        ^
    -        \s*
    -        v?
    -        (?:
    -            (?:(?P[0-9]+)!)?                           # epoch
    -            (?P[0-9]+(?:\.[0-9]+)*)                  # release segment
    -            (?P
                                              # pre-release
    -                [-_\.]?
    -                (?P(a|b|c|rc|alpha|beta|pre|preview))
    -                [-_\.]?
    -                (?P[0-9]+)?
    -            )?
    -            (?P                                         # post release
    -                (?:-(?P[0-9]+))
    -                |
    -                (?:
    -                    [-_\.]?
    -                    (?Ppost|rev|r)
    -                    [-_\.]?
    -                    (?P[0-9]+)?
    -                )
    -            )?
    -            (?P                                          # dev release
    -                [-_\.]?
    -                (?Pdev)
    -                [-_\.]?
    -                (?P[0-9]+)?
    -            )?
    -        )
    -        (?:\+(?P[a-z0-9]+(?:[-_\.][a-z0-9]+)*))?       # local version
    -        \s*
    -        $
    -        """,
    -        re.VERBOSE | re.IGNORECASE,
    -    )
    -
    -    def __init__(self, version):
    -        # Validate the version and parse it into pieces
    -        match = self._regex.search(version)
    -        if not match:
    -            raise InvalidVersion("Invalid version: '{0}'".format(version))
    -
    -        # Store the parsed out pieces of the version
    -        self._version = _Version(
    -            epoch=int(match.group("epoch")) if match.group("epoch") else 0,
    -            release=tuple(int(i) for i in match.group("release").split(".")),
    -            pre=_parse_letter_version(
    -                match.group("pre_l"),
    -                match.group("pre_n"),
    -            ),
    -            post=_parse_letter_version(
    -                match.group("post_l"),
    -                match.group("post_n1") or match.group("post_n2"),
    -            ),
    -            dev=_parse_letter_version(
    -                match.group("dev_l"),
    -                match.group("dev_n"),
    -            ),
    -            local=_parse_local_version(match.group("local")),
    -        )
    -
    -        # Generate a key which will be used for sorting
    -        self._key = _cmpkey(
    -            self._version.epoch,
    -            self._version.release,
    -            self._version.pre,
    -            self._version.post,
    -            self._version.dev,
    -            self._version.local,
    -        )
    -
    -    def __repr__(self):
    -        return "".format(repr(str(self)))
    -
    -    def __str__(self):
    -        parts = []
    -
    -        # Epoch
    -        if self._version.epoch != 0:
    -            parts.append("{0}!".format(self._version.epoch))
    -
    -        # Release segment
    -        parts.append(".".join(str(x) for x in self._version.release))
    -
    -        # Pre-release
    -        if self._version.pre is not None:
    -            parts.append("".join(str(x) for x in self._version.pre))
    -
    -        # Post-release
    -        if self._version.post is not None:
    -            parts.append(".post{0}".format(self._version.post[1]))
    -
    -        # Development release
    -        if self._version.dev is not None:
    -            parts.append(".dev{0}".format(self._version.dev[1]))
    -
    -        # Local version segment
    -        if self._version.local is not None:
    -            parts.append(
    -                "+{0}".format(".".join(str(x) for x in self._version.local))
    -            )
    -
    -        return "".join(parts)
    -
    -    @property
    -    def public(self):
    -        return str(self).split("+", 1)[0]
    -
    -    @property
    -    def local(self):
    -        version_string = str(self)
    -        if "+" in version_string:
    -            return version_string.split("+", 1)[1]
    -
    -    @property
    -    def is_prerelease(self):
    -        return bool(self._version.dev or self._version.pre)
    -
    -
    -def _parse_letter_version(letter, number):
    -    if letter:
    -        # We consider there to be an implicit 0 in a pre-release if there is
    -        # not a numeral associated with it.
    -        if number is None:
    -            number = 0
    -
    -        # We normalize any letters to their lower case form
    -        letter = letter.lower()
    -
    -        # We consider some words to be alternate spellings of other words and
    -        # in those cases we want to normalize the spellings to our preferred
    -        # spelling.
    -        if letter == "alpha":
    -            letter = "a"
    -        elif letter == "beta":
    -            letter = "b"
    -        elif letter in ["rc", "pre", "preview"]:
    -            letter = "c"
    -
    -        return letter, int(number)
    -    if not letter and number:
    -        # We assume if we are given a number, but we are not given a letter
    -        # then this is using the implicit post release syntax (e.g. 1.0-1)
    -        letter = "post"
    -
    -        return letter, int(number)
    -
    -
    -_local_version_seperators = re.compile(r"[\._-]")
    -
    -
    -def _parse_local_version(local):
    -    """
    -    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    -    """
    -    if local is not None:
    -        return tuple(
    -            part.lower() if not part.isdigit() else int(part)
    -            for part in _local_version_seperators.split(local)
    -        )
    -
    -
    -def _cmpkey(epoch, release, pre, post, dev, local):
    -    # When we compare a release version, we want to compare it with all of the
    -    # trailing zeros removed. So we'll use a reverse the list, drop all the now
    -    # leading zeros until we come to something non zero, then take the rest
    -    # re-reverse it back into the correct order and make it a tuple and use
    -    # that for our sorting key.
    -    release = tuple(
    -        reversed(list(
    -            itertools.dropwhile(
    -                lambda x: x == 0,
    -                reversed(release),
    -            )
    -        ))
    -    )
    -
    -    # We need to "trick" the sorting algorithm to put 1.0.dev0 before 1.0a0.
    -    # We'll do this by abusing the pre segment, but we _only_ want to do this
    -    # if there is not a pre or a post segment. If we have one of those then
    -    # the normal sorting rules will handle this case correctly.
    -    if pre is None and post is None and dev is not None:
    -        pre = -Infinity
    -    # Versions without a pre-release (except as noted above) should sort after
    -    # those with one.
    -    elif pre is None:
    -        pre = Infinity
    -
    -    # Versions without a post segment should sort before those with one.
    -    if post is None:
    -        post = -Infinity
    -
    -    # Versions without a development segment should sort after those with one.
    -    if dev is None:
    -        dev = Infinity
    -
    -    if local is None:
    -        # Versions without a local segment should sort before those with one.
    -        local = -Infinity
    -    else:
    -        # Versions with a local segment need that segment parsed to implement
    -        # the sorting rules in PEP440.
    -        # - Alpha numeric segments sort before numeric segments
    -        # - Alpha numeric segments sort lexicographically
    -        # - Numeric segments sort numerically
    -        # - Shorter versions sort before longer versions when the prefixes
    -        #   match exactly
    -        local = tuple(
    -            (i, "") if isinstance(i, int) else (-Infinity, i)
    -            for i in local
    -        )
    -
    -    return epoch, release, pre, post, dev, local
    -
    -
    -class InvalidSpecifier(ValueError):
    -    """
    -    An invalid specifier was found, users should refer to PEP 440.
    -    """
    -
    -
    -class Specifier(object):
    -
    -    _regex = re.compile(
    -        r"""
    -        ^
    -        \s*
    -        (?P(~=|==|!=|<=|>=|<|>|===))
    -        (?P
    -            (?:
    -                # The identity operators allow for an escape hatch that will
    -                # do an exact string match of the version you wish to install.
    -                # This will not be parsed by PEP 440 and we cannot determine
    -                # any semantic meaning from it. This operator is discouraged
    -                # but included entirely as an escape hatch.
    -                (?<====)  # Only match for the identity operator
    -                \s*
    -                [^\s]*    # We just match everything, except for whitespace
    -                          # since we are only testing for strict identity.
    -            )
    -            |
    -            (?:
    -                # The (non)equality operators allow for wild card and local
    -                # versions to be specified so we have to define these two
    -                # operators separately to enable that.
    -                (?<===|!=)            # Only match for equals and not equals
    -
    -                \s*
    -                v?
    -                (?:[0-9]+!)?          # epoch
    -                [0-9]+(?:\.[0-9]+)*   # release
    -                (?:                   # pre release
    -                    [-_\.]?
    -                    (a|b|c|rc|alpha|beta|pre|preview)
    -                    [-_\.]?
    -                    [0-9]*
    -                )?
    -                (?:                   # post release
    -                    (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*)
    -                )?
    -
    -                # You cannot use a wild card and a dev or local version
    -                # together so group them with a | and make them optional.
    -                (?:
    -                    (?:[-_\.]?dev[-_\.]?[0-9]*)?         # dev release
    -                    (?:\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*)? # local
    -                    |
    -                    \.\*  # Wild card syntax of .*
    -                )?
    -            )
    -            |
    -            (?:
    -                # The compatible operator requires at least two digits in the
    -                # release segment.
    -                (?<=~=)               # Only match for the compatible operator
    -
    -                \s*
    -                v?
    -                (?:[0-9]+!)?          # epoch
    -                [0-9]+(?:\.[0-9]+)+   # release  (We have a + instead of a *)
    -                (?:                   # pre release
    -                    [-_\.]?
    -                    (a|b|c|rc|alpha|beta|pre|preview)
    -                    [-_\.]?
    -                    [0-9]*
    -                )?
    -                (?:                                   # post release
    -                    (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*)
    -                )?
    -                (?:[-_\.]?dev[-_\.]?[0-9]*)?          # dev release
    -            )
    -            |
    -            (?:
    -                # All other operators only allow a sub set of what the
    -                # (non)equality operators do. Specifically they do not allow
    -                # local versions to be specified nor do they allow the prefix
    -                # matching wild cards.
    -                (?=": "greater_than_equal",
    -        "<": "less_than",
    -        ">": "greater_than",
    -        "===": "arbitrary",
    -    }
    -
    -    def __init__(self, specs="", prereleases=None):
    -        # Split on comma to get each individual specification
    -        _specs = set()
    -        for spec in (s for s in specs.split(",") if s):
    -            match = self._regex.search(spec)
    -            if not match:
    -                raise InvalidSpecifier("Invalid specifier: '{0}'".format(spec))
    -
    -            _specs.add(
    -                (
    -                    match.group("operator").strip(),
    -                    match.group("version").strip(),
    -                )
    -            )
    -
    -        # Set a frozen set for our specifications
    -        self._specs = frozenset(_specs)
    -
    -        # Store whether or not this Specifier should accept prereleases
    -        self._prereleases = prereleases
    -
    -    def __repr__(self):
    -        return "".format(repr(str(self)))
    -
    -    def __str__(self):
    -        return ",".join(["".join(s) for s in sorted(self._specs)])
    -
    -    def __hash__(self):
    -        return hash(self._specs)
    -
    -    def __and__(self, other):
    -        if isinstance(other, string_types):
    -            other = Specifier(other)
    -        elif not isinstance(other, Specifier):
    -            return NotImplemented
    -
    -        return self.__class__(",".join([str(self), str(other)]))
    -
    -    def __eq__(self, other):
    -        if isinstance(other, string_types):
    -            other = Specifier(other)
    -        elif not isinstance(other, Specifier):
    -            return NotImplemented
    -
    -        return self._specs == other._specs
    -
    -    def __ne__(self, other):
    -        if isinstance(other, string_types):
    -            other = Specifier(other)
    -        elif not isinstance(other, Specifier):
    -            return NotImplemented
    -
    -        return self._specs != other._specs
    -
    -    def _get_operator(self, op):
    -        return getattr(self, "_compare_{0}".format(self._operators[op]))
    -
    -    def _compare_compatible(self, prospective, spec):
    -        # Compatible releases have an equivalent combination of >= and ==. That
    -        # is that ~=2.2 is equivalent to >=2.2,==2.*. This allows us to
    -        # implement this in terms of the other specifiers instead of
    -        # implementing it ourselves. The only thing we need to do is construct
    -        # the other specifiers.
    -
    -        # We want everything but the last item in the version, but we want to
    -        # ignore post and dev releases and we want to treat the pre-release as
    -        # it's own separate segment.
    -        prefix = ".".join(
    -            list(
    -                itertools.takewhile(
    -                    lambda x: (not x.startswith("post")
    -                               and not x.startswith("dev")),
    -                    _version_split(spec),
    -                )
    -            )[:-1]
    -        )
    -
    -        # Add the prefix notation to the end of our string
    -        prefix += ".*"
    -
    -        return (self._get_operator(">=")(prospective, spec)
    -                and self._get_operator("==")(prospective, prefix))
    -
    -    def _compare_equal(self, prospective, spec):
    -        # We need special logic to handle prefix matching
    -        if spec.endswith(".*"):
    -            # Split the spec out by dots, and pretend that there is an implicit
    -            # dot in between a release segment and a pre-release segment.
    -            spec = _version_split(spec[:-2])  # Remove the trailing .*
    -
    -            # Split the prospective version out by dots, and pretend that there
    -            # is an implicit dot in between a release segment and a pre-release
    -            # segment.
    -            prospective = _version_split(str(prospective))
    -
    -            # Shorten the prospective version to be the same length as the spec
    -            # so that we can determine if the specifier is a prefix of the
    -            # prospective version or not.
    -            prospective = prospective[:len(spec)]
    -
    -            # Pad out our two sides with zeros so that they both equal the same
    -            # length.
    -            spec, prospective = _pad_version(spec, prospective)
    -        else:
    -            # Convert our spec string into a Version
    -            spec = Version(spec)
    -
    -            # If the specifier does not have a local segment, then we want to
    -            # act as if the prospective version also does not have a local
    -            # segment.
    -            if not spec.local:
    -                prospective = Version(prospective.public)
    -
    -        return prospective == spec
    -
    -    def _compare_not_equal(self, prospective, spec):
    -        return not self._compare_equal(prospective, spec)
    -
    -    def _compare_less_than_equal(self, prospective, spec):
    -        return prospective <= Version(spec)
    -
    -    def _compare_greater_than_equal(self, prospective, spec):
    -        return prospective >= Version(spec)
    -
    -    def _compare_less_than(self, prospective, spec):
    -        # Less than are defined as exclusive operators, this implies that
    -        # pre-releases do not match for the same series as the spec. This is
    -        # implemented by making V imply !=V.*.
    -        return (prospective > Version(spec)
    -                and self._get_operator("!=")(prospective, spec + ".*"))
    -
    -    def _compare_arbitrary(self, prospective, spec):
    -        return str(prospective).lower() == str(spec).lower()
    -
    -    @property
    -    def prereleases(self):
    -        # If there is an explicit prereleases set for this, then we'll just
    -        # blindly use that.
    -        if self._prereleases is not None:
    -            return self._prereleases
    -
    -        # Look at all of our specifiers and determine if they are inclusive
    -        # operators, and if they are if they are including an explicit
    -        # prerelease.
    -        for spec, version in self._specs:
    -            if spec in ["==", ">=", "<=", "~="]:
    -                # The == specifier can include a trailing .*, if it does we
    -                # want to remove before parsing.
    -                if spec == "==" and version.endswith(".*"):
    -                    version = version[:-2]
    -
    -                # Parse the version, and if it is a pre-release than this
    -                # specifier allows pre-releases.
    -                if parse(version).is_prerelease:
    -                    return True
    -
    -        return False
    -
    -    @prereleases.setter
    -    def prereleases(self, value):
    -        self._prereleases = value
    -
    -    def contains(self, item, prereleases=None):
    -        # Determine if prereleases are to be allowed or not.
    -        if prereleases is None:
    -            prereleases = self.prereleases
    -
    -        # Normalize item to a Version or LegacyVersion, this allows us to have
    -        # a shortcut for ``"2.0" in Specifier(">=2")
    -        if isinstance(item, (Version, LegacyVersion)):
    -            version_item = item
    -        else:
    -            try:
    -                version_item = Version(item)
    -            except ValueError:
    -                version_item = LegacyVersion(item)
    -
    -        # Determine if we should be supporting prereleases in this specifier
    -        # or not, if we do not support prereleases than we can short circuit
    -        # logic if this version is a prereleases.
    -        if version_item.is_prerelease and not prereleases:
    -            return False
    -
    -        # Detect if we have any specifiers, if we do not then anything matches
    -        # and we can short circuit all this logic.
    -        if not self._specs:
    -            return True
    -
    -        # If we're operating on a LegacyVersion, then we can only support
    -        # arbitrary comparison so do a quick check to see if the spec contains
    -        # any non arbitrary specifiers
    -        if isinstance(version_item, LegacyVersion):
    -            if any(op != "===" for op, _ in self._specs):
    -                return False
    -
    -        # Ensure that the passed in version matches all of our version
    -        # specifiers
    -        return all(
    -            self._get_operator(op)(
    -                version_item if op != "===" else item,
    -                spec,
    -            )
    -            for op, spec, in self._specs
    -        )
    -
    -    def filter(self, iterable, prereleases=None):
    -        iterable = list(iterable)
    -        yielded = False
    -        found_prereleases = []
    -
    -        kw = {"prereleases": prereleases if prereleases is not None else True}
    -
    -        # Attempt to iterate over all the values in the iterable and if any of
    -        # them match, yield them.
    -        for version in iterable:
    -            if not isinstance(version, (Version, LegacyVersion)):
    -                parsed_version = parse(version)
    -            else:
    -                parsed_version = version
    -
    -            if self.contains(parsed_version, **kw):
    -                # If our version is a prerelease, and we were not set to allow
    -                # prereleases, then we'll store it for later incase nothing
    -                # else matches this specifier.
    -                if (parsed_version.is_prerelease
    -                        and not (prereleases or self.prereleases)):
    -                    found_prereleases.append(version)
    -                # Either this is not a prerelease, or we should have been
    -                # accepting prereleases from the begining.
    -                else:
    -                    yielded = True
    -                    yield version
    -
    -        # Now that we've iterated over everything, determine if we've yielded
    -        # any values, and if we have not and we have any prereleases stored up
    -        # then we will go ahead and yield the prereleases.
    -        if not yielded and found_prereleases:
    -            for version in found_prereleases:
    -                yield version
    -
    -
    -_prefix_regex = re.compile(r"^([0-9]+)((?:a|b|c|rc)[0-9]+)$")
    -
    -
    -def _version_split(version):
    -    result = []
    -    for item in version.split("."):
    -        match = _prefix_regex.search(item)
    -        if match:
    -            result.extend(match.groups())
    -        else:
    -            result.append(item)
    -    return result
    -
    -
    -def _pad_version(left, right):
    -    left_split, right_split = [], []
    -
    -    # Get the release segment of our versions
    -    left_split.append(list(itertools.takewhile(lambda x: x.isdigit(), left)))
    -    right_split.append(list(itertools.takewhile(lambda x: x.isdigit(), right)))
    -
    -    # Get the rest of our versions
    -    left_split.append(left[len(left_split):])
    -    right_split.append(left[len(right_split):])
    -
    -    # Insert our padding
    -    left_split.insert(
    -        1,
    -        ["0"] * max(0, len(right_split[0]) - len(left_split[0])),
    -    )
    -    right_split.insert(
    -        1,
    -        ["0"] * max(0, len(left_split[0]) - len(right_split[0])),
    -    )
    -
    -    return (
    -        list(itertools.chain(*left_split)),
    -        list(itertools.chain(*right_split)),
    -    )
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/archive_util.py b/Shared/lib/python3.4/site-packages/setuptools/archive_util.py
    index 67a67e2..b3c9fa5 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools/archive_util.py
    +++ b/Shared/lib/python3.4/site-packages/setuptools/archive_util.py
    @@ -64,20 +64,23 @@ def unpack_directory(filename, extract_dir, progress_filter=default_filter):
         Raises ``UnrecognizedFormat`` if `filename` is not a directory
         """
         if not os.path.isdir(filename):
    -        raise UnrecognizedFormat("%s is not a directory" % (filename,))
    +        raise UnrecognizedFormat("%s is not a directory" % filename)
     
    -    paths = {filename:('',extract_dir)}
    +    paths = {
    +        filename: ('', extract_dir),
    +    }
         for base, dirs, files in os.walk(filename):
    -        src,dst = paths[base]
    +        src, dst = paths[base]
             for d in dirs:
    -            paths[os.path.join(base,d)] = src+d+'/', os.path.join(dst,d)
    +            paths[os.path.join(base, d)] = src + d + '/', os.path.join(dst, d)
             for f in files:
    -            target = os.path.join(dst,f)
    -            target = progress_filter(src+f, target)
    +            target = os.path.join(dst, f)
    +            target = progress_filter(src + f, target)
                 if not target:
    -                continue    # skip non-files
    +                # skip non-files
    +                continue
                 ensure_directory(target)
    -            f = os.path.join(base,f)
    +            f = os.path.join(base, f)
                 shutil.copyfile(f, target)
                 shutil.copystat(f, target)
     
    @@ -112,12 +115,8 @@ def unpack_zipfile(filename, extract_dir, progress_filter=default_filter):
                     # file
                     ensure_directory(target)
                     data = z.read(info.filename)
    -                f = open(target,'wb')
    -                try:
    +                with open(target, 'wb') as f:
                         f.write(data)
    -                finally:
    -                    f.close()
    -                    del data
                 unix_attributes = info.external_attr >> 16
                 if unix_attributes:
                     os.chmod(target, unix_attributes)
    @@ -137,18 +136,21 @@ def unpack_tarfile(filename, extract_dir, progress_filter=default_filter):
                 "%s is not a compressed or uncompressed tar file" % (filename,)
             )
         with contextlib.closing(tarobj):
    -        tarobj.chown = lambda *args: None   # don't do any chowning!
    +        # don't do any chowning!
    +        tarobj.chown = lambda *args: None
             for member in tarobj:
                 name = member.name
                 # don't extract absolute paths or ones with .. in them
                 if not name.startswith('/') and '..' not in name.split('/'):
                     prelim_dst = os.path.join(extract_dir, *name.split('/'))
     
    -                # resolve any links and to extract the link targets as normal files
    +                # resolve any links and to extract the link targets as normal
    +                # files
                     while member is not None and (member.islnk() or member.issym()):
                         linkpath = member.linkname
                         if member.issym():
    -                        linkpath = posixpath.join(posixpath.dirname(member.name), linkpath)
    +                        base = posixpath.dirname(member.name)
    +                        linkpath = posixpath.join(base, linkpath)
                             linkpath = posixpath.normpath(linkpath)
                         member = tarobj._getmember(linkpath)
     
    @@ -158,9 +160,11 @@ def unpack_tarfile(filename, extract_dir, progress_filter=default_filter):
                             if final_dst.endswith(os.sep):
                                 final_dst = final_dst[:-1]
                             try:
    -                            tarobj._extract_member(member, final_dst)  # XXX Ugh
    +                            # XXX Ugh
    +                            tarobj._extract_member(member, final_dst)
                             except tarfile.ExtractError:
    -                            pass    # chown/chmod/mkfifo/mknode/makedev failed
    +                            # chown/chmod/mkfifo/mknode/makedev failed
    +                            pass
             return True
     
     extraction_drivers = unpack_directory, unpack_zipfile, unpack_tarfile
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/cli-32.exe b/Shared/lib/python3.4/site-packages/setuptools/cli-32.exe
    old mode 100755
    new mode 100644
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/cli-64.exe b/Shared/lib/python3.4/site-packages/setuptools/cli-64.exe
    old mode 100755
    new mode 100644
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/cli-arm-32.exe b/Shared/lib/python3.4/site-packages/setuptools/cli-arm-32.exe
    old mode 100755
    new mode 100644
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/cli.exe b/Shared/lib/python3.4/site-packages/setuptools/cli.exe
    old mode 100755
    new mode 100644
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/command/bdist_egg.py b/Shared/lib/python3.4/site-packages/setuptools/command/bdist_egg.py
    index 34fdeec..87dce88 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools/command/bdist_egg.py
    +++ b/Shared/lib/python3.4/site-packages/setuptools/command/bdist_egg.py
    @@ -2,7 +2,6 @@
     
     Build .egg distributions"""
     
    -# This module should be kept compatible with Python 2.3
     from distutils.errors import DistutilsSetupError
     from distutils.dir_util import remove_tree, mkpath
     from distutils import log
    @@ -406,10 +405,6 @@ def scan_module(egg_dir, base, name, stubs):
                 if bad in symbols:
                     log.warn("%s: module MAY be using inspect.%s", module, bad)
                     safe = False
    -    if '__name__' in symbols and '__main__' in symbols and '.' not in module:
    -        if sys.version[:3] == "2.4":  # -m works w/zipfiles in 2.5
    -            log.warn("%s: top-level module may be 'python -m' script", module)
    -            safe = False
         return safe
     
     
    @@ -441,7 +436,7 @@ INSTALL_DIRECTORY_ATTRS = [
     ]
     
     
    -def make_zipfile(zip_filename, base_dir, verbose=0, dry_run=0, compress=None,
    +def make_zipfile(zip_filename, base_dir, verbose=0, dry_run=0, compress=True,
                      mode='w'):
         """Create a zip file from all the files under 'base_dir'.  The output
         zip file will be named 'base_dir' + ".zip".  Uses either the "zipfile"
    @@ -463,11 +458,7 @@ def make_zipfile(zip_filename, base_dir, verbose=0, dry_run=0, compress=None,
                         z.write(path, p)
                     log.debug("adding '%s'" % p)
     
    -    if compress is None:
    -        # avoid 2.3 zipimport bug when 64 bits
    -        compress = (sys.version >= "2.4")
    -
    -    compression = [zipfile.ZIP_STORED, zipfile.ZIP_DEFLATED][bool(compress)]
    +    compression = zipfile.ZIP_DEFLATED if compress else zipfile.ZIP_STORED
         if not dry_run:
             z = zipfile.ZipFile(zip_filename, mode, compression=compression)
             for dirname, dirs, files in os.walk(base_dir):
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/command/build_ext.py b/Shared/lib/python3.4/site-packages/setuptools/command/build_ext.py
    index 53bf9cd..92e4a18 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools/command/build_ext.py
    +++ b/Shared/lib/python3.4/site-packages/setuptools/command/build_ext.py
    @@ -6,12 +6,13 @@ from distutils.errors import DistutilsError
     from distutils import log
     import os
     import sys
    +import itertools
     
     from setuptools.extension import Library
     
     try:
    -    # Attempt to use Pyrex for building extensions, if available
    -    from Pyrex.Distutils.build_ext import build_ext as _build_ext
    +    # Attempt to use Cython for building extensions, if available
    +    from Cython.Distutils.build_ext import build_ext as _build_ext
     except ImportError:
         _build_ext = _du_build_ext
     
    @@ -33,19 +34,13 @@ if sys.platform == "darwin":
         use_stubs = True
     elif os.name != 'nt':
         try:
    -        from dl import RTLD_NOW
    -
    -        have_rtld = True
    -        use_stubs = True
    +        import dl
    +        use_stubs = have_rtld = hasattr(dl, 'RTLD_NOW')
         except ImportError:
             pass
     
     
    -def if_dl(s):
    -    if have_rtld:
    -        return s
    -    return ''
    -
    +if_dl = lambda s: s if have_rtld else ''
     
     class build_ext(_build_ext):
         def run(self):
    @@ -78,15 +73,6 @@ class build_ext(_build_ext):
                 if ext._needs_stub:
                     self.write_stub(package_dir or os.curdir, ext, True)
     
    -    if _build_ext is not _du_build_ext and not hasattr(_build_ext,
    -                                                       'pyrex_sources'):
    -        # Workaround for problems using some Pyrex versions w/SWIG and/or 2.4
    -        def swig_sources(self, sources, *otherargs):
    -            # first do any Pyrex processing
    -            sources = _build_ext.swig_sources(self, sources) or sources
    -            # Then do any actual SWIG stuff on the remainder
    -            return _du_build_ext.swig_sources(self, sources, *otherargs)
    -
         def get_ext_filename(self, fullname):
             filename = _build_ext.get_ext_filename(self, fullname)
             if fullname in self.ext_map:
    @@ -123,10 +109,10 @@ class build_ext(_build_ext):
                 # XXX what to do with conflicts?
                 self.ext_map[fullname.split('.')[-1]] = ext
     
    -            ltd = ext._links_to_dynamic = \
    -                self.shlibs and self.links_to_dynamic(ext) or False
    -            ext._needs_stub = ltd and use_stubs and not isinstance(ext,
    -                                                                   Library)
    +            ltd = self.shlibs and self.links_to_dynamic(ext) or False
    +            ns = ltd and use_stubs and not isinstance(ext, Library)
    +            ext._links_to_dynamic = ltd
    +            ext._needs_stub = ns
                 filename = ext._file_name = self.get_ext_filename(fullname)
                 libdir = os.path.dirname(os.path.join(self.build_lib, filename))
                 if ltd and libdir not in ext.library_dirs:
    @@ -180,15 +166,15 @@ class build_ext(_build_ext):
             return _build_ext.get_export_symbols(self, ext)
     
         def build_extension(self, ext):
    +        ext._convert_pyx_sources_to_lang()
             _compiler = self.compiler
             try:
                 if isinstance(ext, Library):
                     self.compiler = self.shlib_compiler
                 _build_ext.build_extension(self, ext)
                 if ext._needs_stub:
    -                self.write_stub(
    -                    self.get_finalized_command('build_py').build_lib, ext
    -                )
    +                cmd = self.get_finalized_command('build_py').build_lib
    +                self.write_stub(cmd, ext)
             finally:
                 self.compiler = _compiler
     
    @@ -199,22 +185,27 @@ class build_ext(_build_ext):
             # XXX static-compiled version
             libnames = dict.fromkeys([lib._full_name for lib in self.shlibs])
             pkg = '.'.join(ext._full_name.split('.')[:-1] + [''])
    -        for libname in ext.libraries:
    -            if pkg + libname in libnames:
    -                return True
    -        return False
    +        return any(pkg + libname in libnames for libname in ext.libraries)
     
         def get_outputs(self):
    -        outputs = _build_ext.get_outputs(self)
    -        optimize = self.get_finalized_command('build_py').optimize
    -        for ext in self.extensions:
    -            if ext._needs_stub:
    -                base = os.path.join(self.build_lib, *ext._full_name.split('.'))
    -                outputs.append(base + '.py')
    -                outputs.append(base + '.pyc')
    -                if optimize:
    -                    outputs.append(base + '.pyo')
    -        return outputs
    +        return _build_ext.get_outputs(self) + self.__get_stubs_outputs()
    +
    +    def __get_stubs_outputs(self):
    +        # assemble the base name for each extension that needs a stub
    +        ns_ext_bases = (
    +            os.path.join(self.build_lib, *ext._full_name.split('.'))
    +            for ext in self.extensions
    +            if ext._needs_stub
    +        )
    +        # pair each base with the extension
    +        pairs = itertools.product(ns_ext_bases, self.__get_output_extensions())
    +        return list(base + fnext for base, fnext in pairs)
    +
    +    def __get_output_extensions(self):
    +        yield '.py'
    +        yield '.pyc'
    +        if self.get_finalized_command('build_py').optimize:
    +            yield '.pyo'
     
         def write_stub(self, output_dir, ext, compile=False):
             log.info("writing stub loader for %s to %s", ext._full_name,
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/command/build_py.py b/Shared/lib/python3.4/site-packages/setuptools/command/build_py.py
    index 9808069..a873d54 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools/command/build_py.py
    +++ b/Shared/lib/python3.4/site-packages/setuptools/command/build_py.py
    @@ -136,22 +136,7 @@ class build_py(orig.build_py, Mixin2to3):
                     mf.setdefault(src_dirs[d], []).append(path)
     
         def get_data_files(self):
    -        pass  # kludge 2.4 for lazy computation
    -
    -    if sys.version < "2.4":  # Python 2.4 already has this code
    -        def get_outputs(self, include_bytecode=1):
    -            """Return complete list of files copied to the build directory
    -
    -            This includes both '.py' files and data files, as well as '.pyc'
    -            and '.pyo' files if 'include_bytecode' is true.  (This method is
    -            needed for the 'install_lib' command to do its job properly, and to
    -            generate a correct installation manifest.)
    -            """
    -            return orig.build_py.get_outputs(self, include_bytecode) + [
    -                os.path.join(build_dir, filename)
    -                for package, src_dir, build_dir, filenames in self.data_files
    -                for filename in filenames
    -            ]
    +        pass  # Lazily compute data files in _get_data_files() function.
     
         def check_package(self, package, package_dir):
             """Check namespace packages' __init__ for declare_namespace"""
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/command/easy_install.py b/Shared/lib/python3.4/site-packages/setuptools/command/easy_install.py
    index 6854827..45d180b 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools/command/easy_install.py
    +++ b/Shared/lib/python3.4/site-packages/setuptools/command/easy_install.py
    @@ -34,8 +34,12 @@ import textwrap
     import warnings
     import site
     import struct
    +import contextlib
    +import subprocess
    +import shlex
    +import io
     
    -from setuptools import Command, _dont_write_bytecode
    +from setuptools import Command
     from setuptools.sandbox import run_setup
     from setuptools.py31compat import get_path, get_config_vars
     from setuptools.command import setopt
    @@ -53,9 +57,9 @@ from pkg_resources import (
     )
     import pkg_resources
     
    +# Turn on PEP440Warnings
    +warnings.filterwarnings("default", category=pkg_resources.PEP440Warning)
     
    -sys_executable = os.environ.get('__PYVENV_LAUNCHER__',
    -                                os.path.normpath(sys.executable))
     
     __all__ = [
         'samefile', 'easy_install', 'PthDistributions', 'extract_wininst_cfg',
    @@ -148,12 +152,9 @@ class easy_install(Command):
         create_index = PackageIndex
     
         def initialize_options(self):
    -        if site.ENABLE_USER_SITE:
    -            whereami = os.path.abspath(__file__)
    -            self.user = whereami.startswith(site.USER_SITE)
    -        else:
    -            self.user = 0
    -
    +        # the --user option seems to be an opt-in one,
    +        # so the default should be False.
    +        self.user = 0
             self.zip_ok = self.local_snapshots_ok = None
             self.install_dir = self.script_dir = self.exclude_scripts = None
             self.index_url = None
    @@ -199,20 +200,34 @@ class easy_install(Command):
             )
     
         def delete_blockers(self, blockers):
    -        for filename in blockers:
    -            if os.path.exists(filename) or os.path.islink(filename):
    -                log.info("Deleting %s", filename)
    -                if not self.dry_run:
    -                    if (os.path.isdir(filename) and
    -                            not os.path.islink(filename)):
    -                        rmtree(filename)
    -                    else:
    -                        os.unlink(filename)
    +        extant_blockers = (
    +            filename for filename in blockers
    +            if os.path.exists(filename) or os.path.islink(filename)
    +        )
    +        list(map(self._delete_path, extant_blockers))
    +
    +    def _delete_path(self, path):
    +        log.info("Deleting %s", path)
    +        if self.dry_run:
    +            return
    +
    +        is_tree = os.path.isdir(path) and not os.path.islink(path)
    +        remover = rmtree if is_tree else os.unlink
    +        remover(path)
    +
    +    @staticmethod
    +    def _render_version():
    +        """
    +        Render the Setuptools version and installation details, then exit.
    +        """
    +        ver = sys.version[:3]
    +        dist = get_distribution('setuptools')
    +        tmpl = 'setuptools {dist.version} from {dist.location} (Python {ver})'
    +        print(tmpl.format(**locals()))
    +        raise SystemExit()
     
         def finalize_options(self):
    -        if self.version:
    -            print('setuptools %s' % get_distribution('setuptools').version)
    -            sys.exit()
    +        self.version and self._render_version()
     
             py_version = sys.version.split()[0]
             prefix, exec_prefix = get_config_vars('prefix', 'exec_prefix')
    @@ -236,18 +251,7 @@ class easy_install(Command):
                 self.config_vars['userbase'] = self.install_userbase
                 self.config_vars['usersite'] = self.install_usersite
     
    -        # fix the install_dir if "--user" was used
    -        # XXX: duplicate of the code in the setup command
    -        if self.user and site.ENABLE_USER_SITE:
    -            self.create_home_path()
    -            if self.install_userbase is None:
    -                raise DistutilsPlatformError(
    -                    "User base directory is not specified")
    -            self.install_base = self.install_platbase = self.install_userbase
    -            if os.name == 'posix':
    -                self.select_scheme("unix_user")
    -            else:
    -                self.select_scheme(os.name + "_user")
    +        self._fix_install_dir_for_user_site()
     
             self.expand_basedirs()
             self.expand_dirs()
    @@ -342,6 +346,21 @@ class easy_install(Command):
     
             self.outputs = []
     
    +    def _fix_install_dir_for_user_site(self):
    +        """
    +        Fix the install_dir if "--user" was used.
    +        """
    +        if not self.user or not site.ENABLE_USER_SITE:
    +            return
    +
    +        self.create_home_path()
    +        if self.install_userbase is None:
    +            msg = "User base directory is not specified"
    +            raise DistutilsPlatformError(msg)
    +        self.install_base = self.install_platbase = self.install_userbase
    +        scheme_name = os.name.replace('posix', 'unix') + '_user'
    +        self.select_scheme(scheme_name)
    +
         def _expand_attrs(self, attrs):
             for attr in attrs:
                 val = getattr(self, attr)
    @@ -434,7 +453,7 @@ class easy_install(Command):
                 self.pth_file = None
     
             PYTHONPATH = os.environ.get('PYTHONPATH', '').split(os.pathsep)
    -        if instdir not in map(normalize_path, [_f for _f in PYTHONPATH if _f]):
    +        if instdir not in map(normalize_path, filter(None, PYTHONPATH)):
                 # only PYTHONPATH dirs need a site.py, so pretend it's there
                 self.sitepy_installed = True
             elif self.multi_version and not os.path.exists(pth_file):
    @@ -442,43 +461,49 @@ class easy_install(Command):
                 self.pth_file = None  # and don't create a .pth file
             self.install_dir = instdir
     
    +    __cant_write_msg = textwrap.dedent("""
    +        can't create or remove files in install directory
    +
    +        The following error occurred while trying to add or remove files in the
    +        installation directory:
    +
    +            %s
    +
    +        The installation directory you specified (via --install-dir, --prefix, or
    +        the distutils default setting) was:
    +
    +            %s
    +        """).lstrip()
    +
    +    __not_exists_id = textwrap.dedent("""
    +        This directory does not currently exist.  Please create it and try again, or
    +        choose a different installation directory (using the -d or --install-dir
    +        option).
    +        """).lstrip()
    +
    +    __access_msg = textwrap.dedent("""
    +        Perhaps your account does not have write access to this directory?  If the
    +        installation directory is a system-owned directory, you may need to sign in
    +        as the administrator or "root" account.  If you do not have administrative
    +        access to this machine, you may wish to choose a different installation
    +        directory, preferably one that is listed in your PYTHONPATH environment
    +        variable.
    +
    +        For information on other options, you may wish to consult the
    +        documentation at:
    +
    +          https://pythonhosted.org/setuptools/easy_install.html
    +
    +        Please make the appropriate changes for your system and try again.
    +        """).lstrip()
    +
         def cant_write_to_target(self):
    -        template = """can't create or remove files in install directory
    -
    -The following error occurred while trying to add or remove files in the
    -installation directory:
    -
    -    %s
    -
    -The installation directory you specified (via --install-dir, --prefix, or
    -the distutils default setting) was:
    -
    -    %s
    -"""
    -        msg = template % (sys.exc_info()[1], self.install_dir,)
    +        msg = self.__cant_write_msg % (sys.exc_info()[1], self.install_dir,)
     
             if not os.path.exists(self.install_dir):
    -            msg += """
    -This directory does not currently exist.  Please create it and try again, or
    -choose a different installation directory (using the -d or --install-dir
    -option).
    -"""
    +            msg += '\n' + self.__not_exists_id
             else:
    -            msg += """
    -Perhaps your account does not have write access to this directory?  If the
    -installation directory is a system-owned directory, you may need to sign in
    -as the administrator or "root" account.  If you do not have administrative
    -access to this machine, you may wish to choose a different installation
    -directory, preferably one that is listed in your PYTHONPATH environment
    -variable.
    -
    -For information on other options, you may wish to consult the
    -documentation at:
    -
    -  https://pythonhosted.org/setuptools/easy_install.html
    -
    -Please make the appropriate changes for your system and try again.
    -"""
    +            msg += '\n' + self.__access_msg
             raise DistutilsError(msg)
     
         def check_pth_processing(self):
    @@ -692,17 +717,10 @@ Please make the appropriate changes for your system and try again.
                 distros = WorkingSet([]).resolve(
                     [requirement], self.local_index, self.easy_install
                 )
    -        except DistributionNotFound:
    -            e = sys.exc_info()[1]
    -            raise DistutilsError(
    -                "Could not find required distribution %s" % e.args
    -            )
    -        except VersionConflict:
    -            e = sys.exc_info()[1]
    -            raise DistutilsError(
    -                "Installed distribution %s conflicts with requirement %s"
    -                % e.args
    -            )
    +        except DistributionNotFound as e:
    +            raise DistutilsError(str(e))
    +        except VersionConflict as e:
    +            raise DistutilsError(e.report())
             if self.always_copy or self.always_copy_from:
                 # Force all the relevant distros to be copied or activated
                 for dist in distros:
    @@ -743,7 +761,7 @@ Please make the appropriate changes for your system and try again.
     
         def install_wrapper_scripts(self, dist):
             if not self.exclude_scripts:
    -            for args in get_script_args(dist):
    +            for args in ScriptWriter.best().get_args(dist):
                     self.write_script(*args)
     
         def install_script(self, dist, script_name, script_text, dev_path=None):
    @@ -752,7 +770,7 @@ Please make the appropriate changes for your system and try again.
             is_script = is_python_script(script_text, script_name)
     
             if is_script:
    -            script_text = (get_script_header(script_text) +
    +            script_text = (ScriptWriter.get_header(script_text) +
                                self._load_template(dev_path) % locals())
             self.write_script(script_name, _to_ascii(script_text), 'b')
     
    @@ -916,9 +934,10 @@ Please make the appropriate changes for your system and try again.
                         f.write('%s: %s\n' % (k.replace('_', '-').title(), v))
                 f.close()
             script_dir = os.path.join(_egg_info, 'scripts')
    -        self.delete_blockers(  # delete entry-point scripts to avoid duping
    +        # delete entry-point scripts to avoid duping
    +        self.delete_blockers(
                 [os.path.join(script_dir, args[0]) for args in
    -             get_script_args(dist)]
    +             ScriptWriter.get_args(dist)]
             )
             # Build .egg file from tmpdir
             bdist_egg.make_zipfile(
    @@ -980,46 +999,52 @@ Please make the appropriate changes for your system and try again.
                         f.write('\n'.join(locals()[name]) + '\n')
                         f.close()
     
    +    __mv_warning = textwrap.dedent("""
    +        Because this distribution was installed --multi-version, before you can
    +        import modules from this package in an application, you will need to
    +        'import pkg_resources' and then use a 'require()' call similar to one of
    +        these examples, in order to select the desired version:
    +
    +            pkg_resources.require("%(name)s")  # latest installed version
    +            pkg_resources.require("%(name)s==%(version)s")  # this exact version
    +            pkg_resources.require("%(name)s>=%(version)s")  # this version or higher
    +        """).lstrip()
    +
    +    __id_warning = textwrap.dedent("""
    +        Note also that the installation directory must be on sys.path at runtime for
    +        this to work.  (e.g. by being the application's script directory, by being on
    +        PYTHONPATH, or by being added to sys.path by your code.)
    +        """)
    +
         def installation_report(self, req, dist, what="Installed"):
             """Helpful installation message for display to package users"""
             msg = "\n%(what)s %(eggloc)s%(extras)s"
             if self.multi_version and not self.no_report:
    -            msg += """
    -
    -Because this distribution was installed --multi-version, before you can
    -import modules from this package in an application, you will need to
    -'import pkg_resources' and then use a 'require()' call similar to one of
    -these examples, in order to select the desired version:
    -
    -    pkg_resources.require("%(name)s")  # latest installed version
    -    pkg_resources.require("%(name)s==%(version)s")  # this exact version
    -    pkg_resources.require("%(name)s>=%(version)s")  # this version or higher
    -"""
    +            msg += '\n' + self.__mv_warning
                 if self.install_dir not in map(normalize_path, sys.path):
    -                msg += """
    +                msg += '\n' + self.__id_warning
     
    -Note also that the installation directory must be on sys.path at runtime for
    -this to work.  (e.g. by being the application's script directory, by being on
    -PYTHONPATH, or by being added to sys.path by your code.)
    -"""
             eggloc = dist.location
             name = dist.project_name
             version = dist.version
             extras = ''  # TODO: self.report_extras(req, dist)
             return msg % locals()
     
    +    __editable_msg = textwrap.dedent("""
    +        Extracted editable version of %(spec)s to %(dirname)s
    +
    +        If it uses setuptools in its setup script, you can activate it in
    +        "development" mode by going to that directory and running::
    +
    +            %(python)s setup.py develop
    +
    +        See the setuptools documentation for the "develop" command for more info.
    +        """).lstrip()
    +
         def report_editable(self, spec, setup_script):
             dirname = os.path.dirname(setup_script)
             python = sys.executable
    -        return """\nExtracted editable version of %(spec)s to %(dirname)s
    -
    -If it uses setuptools in its setup script, you can activate it in
    -"development" mode by going to that directory and running::
    -
    -    %(python)s setup.py develop
    -
    -See the setuptools documentation for the "develop" command for more info.
    -""" % locals()
    +        return '\n' + self.__editable_msg % locals()
     
         def run_setup(self, setup_script, setup_base, args):
             sys.modules.setdefault('distutils.command.bdist_egg', bdist_egg)
    @@ -1038,8 +1063,7 @@ See the setuptools documentation for the "develop" command for more info.
             )
             try:
                 run_setup(setup_script, args)
    -        except SystemExit:
    -            v = sys.exc_info()[1]
    +        except SystemExit as v:
                 raise DistutilsError("Setup script exited with %s" % (v.args[0],))
     
         def build_and_install(self, setup_script, setup_base):
    @@ -1152,7 +1176,7 @@ See the setuptools documentation for the "develop" command for more info.
                     chmod(f, mode)
     
         def byte_compile(self, to_compile):
    -        if _dont_write_bytecode:
    +        if sys.dont_write_bytecode:
                 self.warn('byte-compiling is disabled, skipping.')
                 return
     
    @@ -1171,35 +1195,38 @@ See the setuptools documentation for the "develop" command for more info.
             finally:
                 log.set_verbosity(self.verbose)  # restore original verbosity
     
    +    __no_default_msg = textwrap.dedent("""
    +        bad install directory or PYTHONPATH
    +
    +        You are attempting to install a package to a directory that is not
    +        on PYTHONPATH and which Python does not read ".pth" files from.  The
    +        installation directory you specified (via --install-dir, --prefix, or
    +        the distutils default setting) was:
    +
    +            %s
    +
    +        and your PYTHONPATH environment variable currently contains:
    +
    +            %r
    +
    +        Here are some of your options for correcting the problem:
    +
    +        * You can choose a different installation directory, i.e., one that is
    +          on PYTHONPATH or supports .pth files
    +
    +        * You can add the installation directory to the PYTHONPATH environment
    +          variable.  (It must then also be on PYTHONPATH whenever you run
    +          Python and want to use the package(s) you are installing.)
    +
    +        * You can set up the installation directory to support ".pth" files by
    +          using one of the approaches described here:
    +
    +          https://pythonhosted.org/setuptools/easy_install.html#custom-installation-locations
    +
    +        Please make the appropriate changes for your system and try again.""").lstrip()
    +
         def no_default_version_msg(self):
    -        template = """bad install directory or PYTHONPATH
    -
    -You are attempting to install a package to a directory that is not
    -on PYTHONPATH and which Python does not read ".pth" files from.  The
    -installation directory you specified (via --install-dir, --prefix, or
    -the distutils default setting) was:
    -
    -    %s
    -
    -and your PYTHONPATH environment variable currently contains:
    -
    -    %r
    -
    -Here are some of your options for correcting the problem:
    -
    -* You can choose a different installation directory, i.e., one that is
    -  on PYTHONPATH or supports .pth files
    -
    -* You can add the installation directory to the PYTHONPATH environment
    -  variable.  (It must then also be on PYTHONPATH whenever you run
    -  Python and want to use the package(s) you are installing.)
    -
    -* You can set up the installation directory to support ".pth" files by
    -  using one of the approaches described here:
    -
    -  https://pythonhosted.org/setuptools/easy_install.html#custom-installation-locations
    -
    -Please make the appropriate changes for your system and try again."""
    +        template = self.__no_default_msg
             return template % (self.install_dir, os.environ.get('PYTHONPATH', ''))
     
         def install_site_py(self):
    @@ -1399,13 +1426,8 @@ def extract_wininst_cfg(dist_filename):
                 {'version': '', 'target_version': ''})
             try:
                 part = f.read(cfglen)
    -            # part is in bytes, but we need to read up to the first null
    -            # byte.
    -            if sys.version_info >= (2, 6):
    -                null_byte = bytes([0])
    -            else:
    -                null_byte = chr(0)
    -            config = part.split(null_byte, 1)[0]
    +            # Read up to the first null byte.
    +            config = part.split(b'\0', 1)[0]
                 # Now the config is in bytes, but for RawConfigParser, it should
                 #  be text, so decode it.
                 config = config.decode(sys.getfilesystemencoding())
    @@ -1517,23 +1539,16 @@ class PthDistributions(Environment):
             if not self.dirty:
                 return
     
    -        data = '\n'.join(map(self.make_relative, self.paths))
    -        if data:
    +        rel_paths = list(map(self.make_relative, self.paths))
    +        if rel_paths:
                 log.debug("Saving %s", self.filename)
    -            data = (
    -                "import sys; sys.__plen = len(sys.path)\n"
    -                "%s\n"
    -                "import sys; new=sys.path[sys.__plen:];"
    -                " del sys.path[sys.__plen:];"
    -                " p=getattr(sys,'__egginsert',0); sys.path[p:p]=new;"
    -                " sys.__egginsert = p+len(new)\n"
    -            ) % data
    +            lines = self._wrap_lines(rel_paths)
    +            data = '\n'.join(lines) + '\n'
     
                 if os.path.islink(self.filename):
                     os.unlink(self.filename)
    -            f = open(self.filename, 'wt')
    -            f.write(data)
    -            f.close()
    +            with open(self.filename, 'wt') as f:
    +                f.write(data)
     
             elif os.path.exists(self.filename):
                 log.debug("Deleting empty %s", self.filename)
    @@ -1541,12 +1556,20 @@ class PthDistributions(Environment):
     
             self.dirty = False
     
    +    @staticmethod
    +    def _wrap_lines(lines):
    +        return lines
    +
         def add(self, dist):
             """Add `dist` to the distribution map"""
    -        if (dist.location not in self.paths and (
    -            dist.location not in self.sitedirs or
    -            dist.location == os.getcwd()  # account for '.' being in PYTHONPATH
    -        )):
    +        new_path = (
    +            dist.location not in self.paths and (
    +                dist.location not in self.sitedirs or
    +                # account for '.' being in PYTHONPATH
    +                dist.location == os.getcwd()
    +            )
    +        )
    +        if new_path:
                 self.paths.append(dist.location)
                 self.dirty = True
             Environment.add(self, dist)
    @@ -1574,6 +1597,34 @@ class PthDistributions(Environment):
                 return path
     
     
    +class RewritePthDistributions(PthDistributions):
    +
    +    @classmethod
    +    def _wrap_lines(cls, lines):
    +        yield cls.prelude
    +        for line in lines:
    +            yield line
    +        yield cls.postlude
    +
    +    _inline = lambda text: textwrap.dedent(text).strip().replace('\n', '; ')
    +    prelude = _inline("""
    +        import sys
    +        sys.__plen = len(sys.path)
    +        """)
    +    postlude = _inline("""
    +        import sys
    +        new = sys.path[sys.__plen:]
    +        del sys.path[sys.__plen:]
    +        p = getattr(sys, '__egginsert', 0)
    +        sys.path[p:p] = new
    +        sys.__egginsert = p + len(new)
    +        """)
    +
    +
    +if os.environ.get('SETUPTOOLS_SYS_PATH_TECHNIQUE', 'rewrite') == 'rewrite':
    +    PthDistributions = RewritePthDistributions
    +
    +
     def _first_line_re():
         """
         Return a regular expression based on first_line_re suitable for matching
    @@ -1586,33 +1637,6 @@ def _first_line_re():
         return re.compile(first_line_re.pattern.decode())
     
     
    -def get_script_header(script_text, executable=sys_executable, wininst=False):
    -    """Create a #! line, getting options (if any) from script_text"""
    -    first = (script_text + '\n').splitlines()[0]
    -    match = _first_line_re().match(first)
    -    options = ''
    -    if match:
    -        options = match.group(1) or ''
    -        if options:
    -            options = ' ' + options
    -    if wininst:
    -        executable = "python.exe"
    -    else:
    -        executable = nt_quote_arg(executable)
    -    hdr = "#!%(executable)s%(options)s\n" % locals()
    -    if not isascii(hdr):
    -        # Non-ascii path to sys.executable, use -x to prevent warnings
    -        if options:
    -            if options.strip().startswith('-'):
    -                options = ' -x' + options.strip()[1:]
    -                # else: punt, we can't do it, let the warning happen anyway
    -        else:
    -            options = ' -x'
    -    executable = fix_jython_executable(executable, options)
    -    hdr = "#!%(executable)s%(options)s\n" % locals()
    -    return hdr
    -
    -
     def auto_chmod(func, arg, exc):
         if func is os.remove and os.name == 'nt':
             chmod(arg, stat.S_IWRITE)
    @@ -1811,9 +1835,8 @@ def is_python(text, filename=''):
     def is_sh(executable):
         """Determine if the specified executable is a .sh (contains a #! line)"""
         try:
    -        fp = open(executable)
    -        magic = fp.read(2)
    -        fp.close()
    +        with io.open(executable, encoding='latin-1') as fp:
    +            magic = fp.read(2)
         except (OSError, IOError):
             return executable
         return magic == '#!'
    @@ -1821,36 +1844,7 @@ def is_sh(executable):
     
     def nt_quote_arg(arg):
         """Quote a command line argument according to Windows parsing rules"""
    -
    -    result = []
    -    needquote = False
    -    nb = 0
    -
    -    needquote = (" " in arg) or ("\t" in arg)
    -    if needquote:
    -        result.append('"')
    -
    -    for c in arg:
    -        if c == '\\':
    -            nb += 1
    -        elif c == '"':
    -            # double preceding backslashes, then add a \"
    -            result.append('\\' * (nb * 2) + '\\"')
    -            nb = 0
    -        else:
    -            if nb:
    -                result.append('\\' * nb)
    -                nb = 0
    -            result.append(c)
    -
    -    if nb:
    -        result.append('\\' * nb)
    -
    -    if needquote:
    -        result.append('\\' * nb)  # double the trailing backslashes
    -        result.append('"')
    -
    -    return ''.join(result)
    +    return subprocess.list2cmdline([arg])
     
     
     def is_python_script(script_text, filename):
    @@ -1879,31 +1873,130 @@ def chmod(path, mode):
         log.debug("changing mode of %s to %o", path, mode)
         try:
             _chmod(path, mode)
    -    except os.error:
    -        e = sys.exc_info()[1]
    +    except os.error as e:
             log.debug("chmod failed: %s", e)
     
     
     def fix_jython_executable(executable, options):
    -    if sys.platform.startswith('java') and is_sh(executable):
    -        # Workaround for Jython is not needed on Linux systems.
    -        import java
    +    warnings.warn("Use JythonCommandSpec", DeprecationWarning, stacklevel=2)
     
    -        if java.lang.System.getProperty("os.name") == "Linux":
    -            return executable
    +    if not JythonCommandSpec.relevant():
    +        return executable
     
    -        # Workaround Jython's sys.executable being a .sh (an invalid
    -        # shebang line interpreter)
    -        if options:
    +    cmd = CommandSpec.best().from_param(executable)
    +    cmd.install_options(options)
    +    return cmd.as_header().lstrip('#!').rstrip('\n')
    +
    +
    +class CommandSpec(list):
    +    """
    +    A command spec for a #! header, specified as a list of arguments akin to
    +    those passed to Popen.
    +    """
    +
    +    options = []
    +    split_args = dict()
    +
    +    @classmethod
    +    def best(cls):
    +        """
    +        Choose the best CommandSpec class based on environmental conditions.
    +        """
    +        return cls if not JythonCommandSpec.relevant() else JythonCommandSpec
    +
    +    @classmethod
    +    def _sys_executable(cls):
    +        _default = os.path.normpath(sys.executable)
    +        return os.environ.get('__PYVENV_LAUNCHER__', _default)
    +
    +    @classmethod
    +    def from_param(cls, param):
    +        """
    +        Construct a CommandSpec from a parameter to build_scripts, which may
    +        be None.
    +        """
    +        if isinstance(param, cls):
    +            return param
    +        if isinstance(param, list):
    +            return cls(param)
    +        if param is None:
    +            return cls.from_environment()
    +        # otherwise, assume it's a string.
    +        return cls.from_string(param)
    +
    +    @classmethod
    +    def from_environment(cls):
    +        return cls([cls._sys_executable()])
    +
    +    @classmethod
    +    def from_string(cls, string):
    +        """
    +        Construct a command spec from a simple string representing a command
    +        line parseable by shlex.split.
    +        """
    +        items = shlex.split(string, **cls.split_args)
    +        return cls(items)
    +
    +    def install_options(self, script_text):
    +        self.options = shlex.split(self._extract_options(script_text))
    +        cmdline = subprocess.list2cmdline(self)
    +        if not isascii(cmdline):
    +            self.options[:0] = ['-x']
    +
    +    @staticmethod
    +    def _extract_options(orig_script):
    +        """
    +        Extract any options from the first line of the script.
    +        """
    +        first = (orig_script + '\n').splitlines()[0]
    +        match = _first_line_re().match(first)
    +        options = match.group(1) or '' if match else ''
    +        return options.strip()
    +
    +    def as_header(self):
    +        return self._render(self + list(self.options))
    +
    +    @staticmethod
    +    def _render(items):
    +        cmdline = subprocess.list2cmdline(items)
    +        return '#!' + cmdline + '\n'
    +
    +# For pbr compat; will be removed in a future version.
    +sys_executable = CommandSpec._sys_executable()
    +
    +
    +class WindowsCommandSpec(CommandSpec):
    +    split_args = dict(posix=False)
    +
    +
    +class JythonCommandSpec(CommandSpec):
    +    @classmethod
    +    def relevant(cls):
    +        return (
    +            sys.platform.startswith('java')
    +            and
    +            __import__('java').lang.System.getProperty('os.name') != 'Linux'
    +        )
    +
    +    def as_header(self):
    +        """
    +        Workaround Jython's sys.executable being a .sh (an invalid
    +        shebang line interpreter)
    +        """
    +        if not is_sh(self[0]):
    +            return super(JythonCommandSpec, self).as_header()
    +
    +        if self.options:
                 # Can't apply the workaround, leave it broken
                 log.warn(
                     "WARNING: Unable to adapt shebang line for Jython,"
                     " the following script is NOT executable\n"
                     "         see http://bugs.jython.org/issue1112 for"
                     " more information.")
    -        else:
    -            return '/usr/bin/env %s' % executable
    -    return executable
    +            return super(JythonCommandSpec, self).as_header()
    +
    +        items = ['/usr/bin/env'] + self + list(self.options)
    +        return self._render(items)
     
     
     class ScriptWriter(object):
    @@ -1924,39 +2017,92 @@ class ScriptWriter(object):
                 )
         """).lstrip()
     
    +    command_spec_class = CommandSpec
    +
         @classmethod
    -    def get_script_args(cls, dist, executable=sys_executable, wininst=False):
    +    def get_script_args(cls, dist, executable=None, wininst=False):
    +        # for backward compatibility
    +        warnings.warn("Use get_args", DeprecationWarning)
    +        writer = (WindowsScriptWriter if wininst else ScriptWriter).best()
    +        header = cls.get_script_header("", executable, wininst)
    +        return writer.get_args(dist, header)
    +
    +    @classmethod
    +    def get_script_header(cls, script_text, executable=None, wininst=False):
    +        # for backward compatibility
    +        warnings.warn("Use get_header", DeprecationWarning)
    +        if wininst:
    +            executable = "python.exe"
    +        cmd = cls.command_spec_class.best().from_param(executable)
    +        cmd.install_options(script_text)
    +        return cmd.as_header()
    +
    +    @classmethod
    +    def get_args(cls, dist, header=None):
             """
    -        Yield write_script() argument tuples for a distribution's entrypoints
    +        Yield write_script() argument tuples for a distribution's
    +        console_scripts and gui_scripts entry points.
             """
    -        gen_class = cls.get_writer(wininst)
    +        if header is None:
    +            header = cls.get_header()
             spec = str(dist.as_requirement())
    -        header = get_script_header("", executable, wininst)
             for type_ in 'console', 'gui':
                 group = type_ + '_scripts'
                 for name, ep in dist.get_entry_map(group).items():
    -                script_text = gen_class.template % locals()
    -                for res in gen_class._get_script_args(type_, name, header,
    -                                                      script_text):
    +                cls._ensure_safe_name(name)
    +                script_text = cls.template % locals()
    +                args = cls._get_script_args(type_, name, header, script_text)
    +                for res in args:
                         yield res
     
    +    @staticmethod
    +    def _ensure_safe_name(name):
    +        """
    +        Prevent paths in *_scripts entry point names.
    +        """
    +        has_path_sep = re.search(r'[\\/]', name)
    +        if has_path_sep:
    +            raise ValueError("Path separators not allowed in script names")
    +
         @classmethod
         def get_writer(cls, force_windows):
    -        if force_windows or sys.platform == 'win32':
    -            return WindowsScriptWriter.get_writer()
    -        return cls
    +        # for backward compatibility
    +        warnings.warn("Use best", DeprecationWarning)
    +        return WindowsScriptWriter.best() if force_windows else cls.best()
    +
    +    @classmethod
    +    def best(cls):
    +        """
    +        Select the best ScriptWriter for this environment.
    +        """
    +        return WindowsScriptWriter.best() if sys.platform == 'win32' else cls
     
         @classmethod
         def _get_script_args(cls, type_, name, header, script_text):
             # Simply write the stub with no extension.
             yield (name, header + script_text)
     
    +    @classmethod
    +    def get_header(cls, script_text="", executable=None):
    +        """Create a #! line, getting options (if any) from script_text"""
    +        cmd = cls.command_spec_class.best().from_param(executable)
    +        cmd.install_options(script_text)
    +        return cmd.as_header()
    +
     
     class WindowsScriptWriter(ScriptWriter):
    +    command_spec_class = WindowsCommandSpec
    +
         @classmethod
         def get_writer(cls):
    +        # for backward compatibility
    +        warnings.warn("Use best", DeprecationWarning)
    +        return cls.best()
    +
    +    @classmethod
    +    def best(cls):
             """
    -        Get a script writer suitable for Windows
    +        Select the best ScriptWriter suitable for Windows
             """
             writer_lookup = dict(
                 executable=WindowsExecutableLauncherWriter,
    @@ -2031,6 +2177,7 @@ class WindowsExecutableLauncherWriter(WindowsScriptWriter):
     
     # for backward-compatibility
     get_script_args = ScriptWriter.get_script_args
    +get_script_header = ScriptWriter.get_script_header
     
     
     def get_win_launcher(type):
    @@ -2114,39 +2261,41 @@ def bootstrap():
     def main(argv=None, **kw):
         from setuptools import setup
         from setuptools.dist import Distribution
    -    import distutils.core
     
    -    USAGE = """\
    -usage: %(script)s [options] requirement_or_url ...
    -   or: %(script)s --help
    -"""
    +    class DistributionWithoutHelpCommands(Distribution):
    +        common_usage = ""
    +
    +        def _show_help(self, *args, **kw):
    +            with _patch_usage():
    +                Distribution._show_help(self, *args, **kw)
    +
    +    if argv is None:
    +        argv = sys.argv[1:]
    +
    +    with _patch_usage():
    +        setup(
    +            script_args=['-q', 'easy_install', '-v'] + argv,
    +            script_name=sys.argv[0] or 'easy_install',
    +            distclass=DistributionWithoutHelpCommands, **kw
    +        )
    +
    +
    +@contextlib.contextmanager
    +def _patch_usage():
    +    import distutils.core
    +    USAGE = textwrap.dedent("""
    +        usage: %(script)s [options] requirement_or_url ...
    +           or: %(script)s --help
    +        """).lstrip()
     
         def gen_usage(script_name):
             return USAGE % dict(
                 script=os.path.basename(script_name),
             )
     
    -    def with_ei_usage(f):
    -        old_gen_usage = distutils.core.gen_usage
    -        try:
    -            distutils.core.gen_usage = gen_usage
    -            return f()
    -        finally:
    -            distutils.core.gen_usage = old_gen_usage
    -
    -    class DistributionWithoutHelpCommands(Distribution):
    -        common_usage = ""
    -
    -        def _show_help(self, *args, **kw):
    -            with_ei_usage(lambda: Distribution._show_help(self, *args, **kw))
    -
    -    if argv is None:
    -        argv = sys.argv[1:]
    -
    -    with_ei_usage(
    -        lambda: setup(
    -            script_args=['-q', 'easy_install', '-v'] + argv,
    -            script_name=sys.argv[0] or 'easy_install',
    -            distclass=DistributionWithoutHelpCommands, **kw
    -        )
    -    )
    +    saved = distutils.core.gen_usage
    +    distutils.core.gen_usage = gen_usage
    +    try:
    +        yield
    +    finally:
    +        distutils.core.gen_usage = saved
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/command/egg_info.py b/Shared/lib/python3.4/site-packages/setuptools/command/egg_info.py
    index 06764a1..50f3d5c 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools/command/egg_info.py
    +++ b/Shared/lib/python3.4/site-packages/setuptools/command/egg_info.py
    @@ -6,20 +6,26 @@ from distutils.filelist import FileList as _FileList
     from distutils.util import convert_path
     from distutils import log
     import distutils.errors
    +import distutils.filelist
     import os
     import re
     import sys
     
    +try:
    +    from setuptools_svn import svn_utils
    +except ImportError:
    +    pass
    +
     from setuptools import Command
     from setuptools.command.sdist import sdist
     from setuptools.compat import basestring, PY3, StringIO
    -from setuptools import svn_utils
     from setuptools.command.sdist import walk_revctrl
     from pkg_resources import (
         parse_requirements, safe_name, parse_version,
         safe_version, yield_lines, EntryPoint, iter_entry_points, to_filename)
     import setuptools.unicode_utils as unicode_utils
     
    +from pkg_resources import packaging
     
     class egg_info(Command):
         description = "create a distribution's .egg-info directory"
    @@ -68,10 +74,15 @@ class egg_info(Command):
             self.vtags = self.tags()
             self.egg_version = self.tagged_version()
     
    +        parsed_version = parse_version(self.egg_version)
    +
             try:
    +            is_version = isinstance(parsed_version, packaging.version.Version)
    +            spec = (
    +                "%s==%s" if is_version else "%s===%s"
    +            )
                 list(
    -                parse_requirements('%s==%s' % (self.egg_name,
    -                                               self.egg_version))
    +                parse_requirements(spec % (self.egg_name, self.egg_version))
                 )
             except ValueError:
                 raise distutils.errors.DistutilsOptionError(
    @@ -157,7 +168,8 @@ class egg_info(Command):
             self.mkpath(self.egg_info)
             installer = self.distribution.fetch_build_egg
             for ep in iter_entry_points('egg_info.writers'):
    -            writer = ep.load(installer=installer)
    +            ep.require(installer=installer)
    +            writer = ep.resolve()
                 writer(self, ep.name, os.path.join(self.egg_info, ep.name))
     
             # Get rid of native_libs.txt if it was put there by older bdist_egg
    @@ -183,6 +195,8 @@ class egg_info(Command):
     
         @staticmethod
         def get_svn_revision():
    +        if 'svn_utils' not in globals():
    +            return "0"
             return str(svn_utils.SvnInfo.load(os.curdir).get_revision())
     
         def find_sources(self):
    @@ -312,8 +326,33 @@ class manifest_maker(sdist):
             elif os.path.exists(self.manifest):
                 self.read_manifest()
             ei_cmd = self.get_finalized_command('egg_info')
    +        self._add_egg_info(cmd=ei_cmd)
             self.filelist.include_pattern("*", prefix=ei_cmd.egg_info)
     
    +    def _add_egg_info(self, cmd):
    +        """
    +        Add paths for egg-info files for an external egg-base.
    +
    +        The egg-info files are written to egg-base. If egg-base is
    +        outside the current working directory, this method
    +        searchs the egg-base directory for files to include
    +        in the manifest. Uses distutils.filelist.findall (which is
    +        really the version monkeypatched in by setuptools/__init__.py)
    +        to perform the search.
    +
    +        Since findall records relative paths, prefix the returned
    +        paths with cmd.egg_base, so add_default's include_pattern call
    +        (which is looking for the absolute cmd.egg_info) will match
    +        them.
    +        """
    +        if cmd.egg_base == os.curdir:
    +            # egg-info files were already added by something else
    +            return
    +
    +        discovered = distutils.filelist.findall(cmd.egg_base)
    +        resolved = (os.path.join(cmd.egg_base, path) for path in discovered)
    +        self.filelist.allfiles.extend(resolved)
    +
         def prune_file_list(self):
             build = self.get_finalized_command('build')
             base_dir = self.distribution.get_fullname()
    @@ -382,6 +421,12 @@ def write_requirements(cmd, basename, filename):
         cmd.write_or_delete_file("requirements", filename, data.getvalue())
     
     
    +def write_setup_requirements(cmd, basename, filename):
    +    data = StringIO()
    +    _write_requirements(data, cmd.distribution.setup_requires)
    +    cmd.write_or_delete_file("setup-requirements", filename, data.getvalue())
    +
    +
     def write_toplevel_names(cmd, basename, filename):
         pkgs = dict.fromkeys(
             [
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/command/install_scripts.py b/Shared/lib/python3.4/site-packages/setuptools/command/install_scripts.py
    index eb79fa3..be66cb2 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools/command/install_scripts.py
    +++ b/Shared/lib/python3.4/site-packages/setuptools/command/install_scripts.py
    @@ -13,8 +13,7 @@ class install_scripts(orig.install_scripts):
             self.no_ep = False
     
         def run(self):
    -        from setuptools.command.easy_install import get_script_args
    -        from setuptools.command.easy_install import sys_executable
    +        import setuptools.command.easy_install as ei
     
             self.run_command("egg_info")
             if self.distribution.scripts:
    @@ -31,11 +30,17 @@ class install_scripts(orig.install_scripts):
                 ei_cmd.egg_name, ei_cmd.egg_version,
             )
             bs_cmd = self.get_finalized_command('build_scripts')
    -        executable = getattr(bs_cmd, 'executable', sys_executable)
    -        is_wininst = getattr(
    -            self.get_finalized_command("bdist_wininst"), '_is_running', False
    -        )
    -        for args in get_script_args(dist, executable, is_wininst):
    +        exec_param = getattr(bs_cmd, 'executable', None)
    +        bw_cmd = self.get_finalized_command("bdist_wininst")
    +        is_wininst = getattr(bw_cmd, '_is_running', False)
    +        writer = ei.ScriptWriter
    +        if is_wininst:
    +            exec_param = "python.exe"
    +            writer = ei.WindowsScriptWriter
    +        # resolve the writer to the environment
    +        writer = writer.best()
    +        cmd = writer.command_spec_class.best().from_param(exec_param)
    +        for args in writer.get_args(dist, cmd.as_header()):
                 self.write_script(*args)
     
         def write_script(self, script_name, contents, mode="t", *ignored):
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/command/sdist.py b/Shared/lib/python3.4/site-packages/setuptools/command/sdist.py
    index a77c39f..851a177 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools/command/sdist.py
    +++ b/Shared/lib/python3.4/site-packages/setuptools/command/sdist.py
    @@ -1,19 +1,17 @@
     from glob import glob
    -from distutils.util import convert_path
     from distutils import log
     import distutils.command.sdist as orig
     import os
    -import re
     import sys
     
    -from setuptools import svn_utils
     from setuptools.compat import PY3
     from setuptools.utils import cs_path_exists
     
     import pkg_resources
     
    -READMES = ('README', 'README.rst', 'README.txt')
    +READMES = 'README', 'README.rst', 'README.txt'
     
    +_default_revctrl = list
     
     def walk_revctrl(dirname=''):
         """Find all files under revision control"""
    @@ -22,60 +20,6 @@ def walk_revctrl(dirname=''):
                 yield item
     
     
    -# TODO will need test case
    -class re_finder(object):
    -    """
    -    Finder that locates files based on entries in a file matched by a
    -    regular expression.
    -    """
    -
    -    def __init__(self, path, pattern, postproc=lambda x: x):
    -        self.pattern = pattern
    -        self.postproc = postproc
    -        self.entries_path = convert_path(path)
    -
    -    def _finder(self, dirname, filename):
    -        f = open(filename, 'rU')
    -        try:
    -            data = f.read()
    -        finally:
    -            f.close()
    -        for match in self.pattern.finditer(data):
    -            path = match.group(1)
    -            # postproc was formerly used when the svn finder
    -            # was an re_finder for calling unescape
    -            path = self.postproc(path)
    -            yield svn_utils.joinpath(dirname, path)
    -
    -    def find(self, dirname=''):
    -        path = svn_utils.joinpath(dirname, self.entries_path)
    -
    -        if not os.path.isfile(path):
    -            # entries file doesn't exist
    -            return
    -        for path in self._finder(dirname, path):
    -            if os.path.isfile(path):
    -                yield path
    -            elif os.path.isdir(path):
    -                for item in self.find(path):
    -                    yield item
    -
    -    __call__ = find
    -
    -
    -def _default_revctrl(dirname=''):
    -    'Primary svn_cvs entry point'
    -    for finder in finders:
    -        for item in finder(dirname):
    -            yield item
    -
    -
    -finders = [
    -    re_finder('CVS/Entries', re.compile(r"^\w?/([^/]+)/", re.M)),
    -    svn_utils.svn_finder,
    -]
    -
    -
     class sdist(orig.sdist):
         """Smart sdist that finds anything supported by revision control"""
     
    @@ -126,7 +70,8 @@ class sdist(orig.sdist):
             try:
                 orig.sdist.read_template(self)
             except:
    -            sys.exc_info()[2].tb_next.tb_frame.f_locals['template'].close()
    +            _, _, tb = sys.exc_info()
    +            tb.tb_next.tb_frame.f_locals['template'].close()
                 raise
     
         # Beginning with Python 2.7.2, 3.1.4, and 3.2.1, this leaky file handle
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/command/test.py b/Shared/lib/python3.4/site-packages/setuptools/command/test.py
    index 1038da7..160e21c 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools/command/test.py
    +++ b/Shared/lib/python3.4/site-packages/setuptools/command/test.py
    @@ -1,6 +1,5 @@
     from distutils.errors import DistutilsOptionError
     from unittest import TestLoader
    -import unittest
     import sys
     
     from pkg_resources import (resource_listdir, resource_exists, normalize_path,
    @@ -12,7 +11,7 @@ from setuptools.py31compat import unittest_main
     
     
     class ScanningLoader(TestLoader):
    -    def loadTestsFromModule(self, module):
    +    def loadTestsFromModule(self, module, pattern=None):
             """Return a suite of all tests cases contained in the given module
     
             If the module is a package, load tests from all the modules in it.
    @@ -62,20 +61,16 @@ class test(Command):
     
         def finalize_options(self):
     
    +        if self.test_suite and self.test_module:
    +            msg = "You may specify a module or a suite, but not both"
    +            raise DistutilsOptionError(msg)
    +
             if self.test_suite is None:
                 if self.test_module is None:
                     self.test_suite = self.distribution.test_suite
                 else:
                     self.test_suite = self.test_module + ".test_suite"
    -        elif self.test_module:
    -            raise DistutilsOptionError(
    -                "You may specify a module or a suite, but not both"
    -            )
     
    -        self.test_args = [self.test_suite]
    -
    -        if self.verbose:
    -            self.test_args.insert(0, '--verbose')
             if self.test_loader is None:
                 self.test_loader = getattr(self.distribution, 'test_loader', None)
             if self.test_loader is None:
    @@ -83,6 +78,16 @@ class test(Command):
             if self.test_runner is None:
                 self.test_runner = getattr(self.distribution, 'test_runner', None)
     
    +    @property
    +    def test_args(self):
    +        return list(self._test_args())
    +
    +    def _test_args(self):
    +        if self.verbose:
    +            yield '--verbose'
    +        if self.test_suite:
    +            yield self.test_suite
    +
         def with_project_on_sys_path(self, func):
             with_2to3 = PY3 and getattr(self.distribution, 'use_2to3', False)
     
    @@ -133,20 +138,19 @@ class test(Command):
             if self.distribution.tests_require:
                 self.distribution.fetch_build_eggs(self.distribution.tests_require)
     
    -        if self.test_suite:
    -            cmd = ' '.join(self.test_args)
    -            if self.dry_run:
    -                self.announce('skipping "unittest %s" (dry run)' % cmd)
    -            else:
    -                self.announce('running "unittest %s"' % cmd)
    -                self.with_project_on_sys_path(self.run_tests)
    +        cmd = ' '.join(self._argv)
    +        if self.dry_run:
    +            self.announce('skipping "%s" (dry run)' % cmd)
    +        else:
    +            self.announce('running "%s"' % cmd)
    +            self.with_project_on_sys_path(self.run_tests)
     
         def run_tests(self):
             # Purge modules under test from sys.modules. The test loader will
             # re-import them from the build location. Required when 2to3 is used
             # with namespace packages.
             if PY3 and getattr(self.distribution, 'use_2to3', False):
    -            module = self.test_args[-1].split('.')[0]
    +            module = self.test_suite.split('.')[0]
                 if module in _namespace_packages:
                     del_modules = []
                     if module in sys.modules:
    @@ -158,11 +162,15 @@ class test(Command):
                     list(map(sys.modules.__delitem__, del_modules))
     
             unittest_main(
    -            None, None, [unittest.__file__] + self.test_args,
    +            None, None, self._argv,
                 testLoader=self._resolve_as_ep(self.test_loader),
                 testRunner=self._resolve_as_ep(self.test_runner),
             )
     
    +    @property
    +    def _argv(self):
    +        return ['unittest'] + self.test_args
    +
         @staticmethod
         def _resolve_as_ep(val):
             """
    @@ -172,4 +180,4 @@ class test(Command):
             if val is None:
                 return
             parsed = EntryPoint.parse("x=" + val)
    -        return parsed.load(require=False)()
    +        return parsed.resolve()()
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/command/upload_docs.py b/Shared/lib/python3.4/site-packages/setuptools/command/upload_docs.py
    index cd6c300..001ee93 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools/command/upload_docs.py
    +++ b/Shared/lib/python3.4/site-packages/setuptools/command/upload_docs.py
    @@ -169,8 +169,7 @@ class upload_docs(upload):
                 conn.putheader('Authorization', auth)
                 conn.endheaders()
                 conn.send(body)
    -        except socket.error:
    -            e = sys.exc_info()[1]
    +        except socket.error as e:
                 self.announce(str(e), log.ERROR)
                 return
     
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/dist.py b/Shared/lib/python3.4/site-packages/setuptools/dist.py
    index 8b36f67..d7ad465 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools/dist.py
    +++ b/Shared/lib/python3.4/site-packages/setuptools/dist.py
    @@ -15,8 +15,12 @@ from distutils.errors import (DistutilsOptionError, DistutilsPlatformError,
     
     from setuptools.depends import Require
     from setuptools.compat import basestring, PY2
    +from setuptools import windows_support
     import pkg_resources
     
    +packaging = pkg_resources.packaging
    +
    +
     def _get_unpatched(cls):
         """Protect against re-patching the distutils if reloaded
     
    @@ -111,24 +115,26 @@ def check_extras(dist, attr, value):
     def assert_bool(dist, attr, value):
         """Verify that value is True, False, 0, or 1"""
         if bool(value) != value:
    -        raise DistutilsSetupError(
    -            "%r must be a boolean value (got %r)" % (attr,value)
    -        )
    +        tmpl = "{attr!r} must be a boolean value (got {value!r})"
    +        raise DistutilsSetupError(tmpl.format(attr=attr, value=value))
    +
    +
     def check_requirements(dist, attr, value):
         """Verify that install_requires is a valid requirements list"""
         try:
             list(pkg_resources.parse_requirements(value))
    -    except (TypeError,ValueError):
    -        raise DistutilsSetupError(
    -            "%r must be a string or list of strings "
    -            "containing valid project/version requirement specifiers" % (attr,)
    +    except (TypeError, ValueError) as error:
    +        tmpl = (
    +            "{attr!r} must be a string or list of strings "
    +            "containing valid project/version requirement specifiers; {error}"
             )
    +        raise DistutilsSetupError(tmpl.format(attr=attr, error=error))
    +
     def check_entry_points(dist, attr, value):
         """Verify that entry_points map is parseable"""
         try:
             pkg_resources.EntryPoint.parse_map(value)
    -    except ValueError:
    -        e = sys.exc_info()[1]
    +    except ValueError as e:
             raise DistutilsSetupError(e)
     
     def check_test_suite(dist, attr, value):
    @@ -268,6 +274,26 @@ class Distribution(_Distribution):
                 # Some people apparently take "version number" too literally :)
                 self.metadata.version = str(self.metadata.version)
     
    +        if self.metadata.version is not None:
    +            try:
    +                ver = packaging.version.Version(self.metadata.version)
    +                normalized_version = str(ver)
    +                if self.metadata.version != normalized_version:
    +                    warnings.warn(
    +                        "Normalizing '%s' to '%s'" % (
    +                            self.metadata.version,
    +                            normalized_version,
    +                        )
    +                    )
    +                    self.metadata.version = normalized_version
    +            except (packaging.version.InvalidVersion, TypeError):
    +                warnings.warn(
    +                    "The version specified (%r) is an invalid version, this "
    +                    "may not work as expected with newer versions of "
    +                    "setuptools, pip, and PyPI. Please see PEP 440 for more "
    +                    "details." % self.metadata.version
    +                )
    +
         def parse_command_line(self):
             """Process features after parsing command line options"""
             result = _Distribution.parse_command_line(self)
    @@ -305,6 +331,21 @@ class Distribution(_Distribution):
             else:
                 self.convert_2to3_doctests = []
     
    +    def get_egg_cache_dir(self):
    +        egg_cache_dir = os.path.join(os.curdir, '.eggs')
    +        if not os.path.exists(egg_cache_dir):
    +            os.mkdir(egg_cache_dir)
    +            windows_support.hide_file(egg_cache_dir)
    +            readme_txt_filename = os.path.join(egg_cache_dir, 'README.txt')
    +            with open(readme_txt_filename, 'w') as f:
    +                f.write('This directory contains eggs that were downloaded '
    +                        'by setuptools to build, test, and run plug-ins.\n\n')
    +                f.write('This directory caches those eggs to prevent '
    +                        'repeated downloads.\n\n')
    +                f.write('However, it is safe to delete this directory.\n\n')
    +
    +        return egg_cache_dir
    +
         def fetch_build_egg(self, req):
             """Fetch an egg needed for building"""
     
    @@ -328,8 +369,9 @@ class Distribution(_Distribution):
                     if 'find_links' in opts:
                         links = opts['find_links'][1].split() + links
                     opts['find_links'] = ('setup', links)
    +            install_dir = self.get_egg_cache_dir()
                 cmd = easy_install(
    -                dist, args=["x"], install_dir=os.curdir, exclude_scripts=True,
    +                dist, args=["x"], install_dir=install_dir, exclude_scripts=True,
                     always_copy=False, build_directory=None, editable=False,
                     upgrade=False, multi_version=True, no_report=True, user=False
                 )
    @@ -393,7 +435,8 @@ class Distribution(_Distribution):
         def print_commands(self):
             for ep in pkg_resources.iter_entry_points('distutils.commands'):
                 if ep.name not in self.cmdclass:
    -                cmdclass = ep.load(False) # don't require extras, we're not running
    +                # don't require extras as the commands won't be invoked
    +                cmdclass = ep.resolve()
                     self.cmdclass[ep.name] = cmdclass
             return _Distribution.print_commands(self)
     
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/extension.py b/Shared/lib/python3.4/site-packages/setuptools/extension.py
    index 8178ed3..35eb7c7 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools/extension.py
    +++ b/Shared/lib/python3.4/site-packages/setuptools/extension.py
    @@ -12,35 +12,33 @@ _Extension = _get_unpatched(distutils.core.Extension)
     
     msvc9_support.patch_for_specialized_compiler()
     
    -def have_pyrex():
    +def _have_cython():
         """
    -    Return True if Cython or Pyrex can be imported.
    +    Return True if Cython can be imported.
         """
    -    pyrex_impls = 'Cython.Distutils.build_ext', 'Pyrex.Distutils.build_ext'
    -    for pyrex_impl in pyrex_impls:
    -        try:
    -            # from (pyrex_impl) import build_ext
    -            __import__(pyrex_impl, fromlist=['build_ext']).build_ext
    -            return True
    -        except Exception:
    -            pass
    +    cython_impl = 'Cython.Distutils.build_ext',
    +    try:
    +        # from (cython_impl) import build_ext
    +        __import__(cython_impl, fromlist=['build_ext']).build_ext
    +        return True
    +    except Exception:
    +        pass
         return False
     
    +# for compatibility
    +have_pyrex = _have_cython
    +
     
     class Extension(_Extension):
         """Extension that uses '.c' files in place of '.pyx' files"""
     
    -    def __init__(self, *args, **kw):
    -        _Extension.__init__(self, *args, **kw)
    -        self._convert_pyx_sources_to_lang()
    -
         def _convert_pyx_sources_to_lang(self):
             """
             Replace sources with .pyx extensions to sources with the target
             language extension. This mechanism allows language authors to supply
             pre-converted sources but to prefer the .pyx sources.
             """
    -        if have_pyrex():
    +        if _have_cython():
                 # the build has Cython, so allow it to compile the .pyx files
                 return
             lang = self.language or ''
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/gui-32.exe b/Shared/lib/python3.4/site-packages/setuptools/gui-32.exe
    old mode 100755
    new mode 100644
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/gui-64.exe b/Shared/lib/python3.4/site-packages/setuptools/gui-64.exe
    old mode 100755
    new mode 100644
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/gui-arm-32.exe b/Shared/lib/python3.4/site-packages/setuptools/gui-arm-32.exe
    old mode 100755
    new mode 100644
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/gui.exe b/Shared/lib/python3.4/site-packages/setuptools/gui.exe
    old mode 100755
    new mode 100644
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/msvc9_support.py b/Shared/lib/python3.4/site-packages/setuptools/msvc9_support.py
    index d0be70e..a69c747 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools/msvc9_support.py
    +++ b/Shared/lib/python3.4/site-packages/setuptools/msvc9_support.py
    @@ -1,5 +1,3 @@
    -import sys
    -
     try:
         import distutils.msvc9compiler
     except ImportError:
    @@ -29,13 +27,15 @@ def patch_for_specialized_compiler():
     def find_vcvarsall(version):
         Reg = distutils.msvc9compiler.Reg
         VC_BASE = r'Software\%sMicrosoft\DevDiv\VCForPython\%0.1f'
    +    key = VC_BASE % ('', version)
         try:
             # Per-user installs register the compiler path here
    -        productdir = Reg.get_value(VC_BASE % ('', version), "installdir")
    +        productdir = Reg.get_value(key, "installdir")
         except KeyError:
             try:
                 # All-user installs on a 64-bit system register here
    -            productdir = Reg.get_value(VC_BASE % ('Wow6432Node\\', version), "installdir")
    +            key = VC_BASE % ('Wow6432Node\\', version)
    +            productdir = Reg.get_value(key, "installdir")
             except KeyError:
                 productdir = None
     
    @@ -50,8 +50,7 @@ def find_vcvarsall(version):
     def query_vcvarsall(version, *args, **kwargs):
         try:
             return unpatched['query_vcvarsall'](version, *args, **kwargs)
    -    except distutils.errors.DistutilsPlatformError:
    -        exc = sys.exc_info()[1]
    +    except distutils.errors.DistutilsPlatformError as exc:
             if exc and "vcvarsall.bat" in exc.args[0]:
                 message = 'Microsoft Visual C++ %0.1f is required (%s).' % (version, exc.args[0])
                 if int(version) == 9:
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/package_index.py b/Shared/lib/python3.4/site-packages/setuptools/package_index.py
    index 58572ce..cabf103 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools/package_index.py
    +++ b/Shared/lib/python3.4/site-packages/setuptools/package_index.py
    @@ -138,10 +138,9 @@ def interpret_distro_name(
         # versions in distribution archive names (sdist and bdist).
     
         parts = basename.split('-')
    -    if not py_version:
    -        for i,p in enumerate(parts[2:]):
    -            if len(p)==5 and p.startswith('py2.'):
    -                return # It's a bdist_dumb, not an sdist -- bail out
    +    if not py_version and any(re.match('py\d\.\d$', p) for p in parts[2:]):
    +        # it is a bdist_dumb, not an sdist -- bail out
    +        return
     
         for p in range(1,len(parts)+1):
             yield Distribution(
    @@ -699,25 +698,21 @@ class PackageIndex(Environment):
                 return local_open(url)
             try:
                 return open_with_auth(url, self.opener)
    -        except (ValueError, httplib.InvalidURL):
    -            v = sys.exc_info()[1]
    +        except (ValueError, httplib.InvalidURL) as v:
                 msg = ' '.join([str(arg) for arg in v.args])
                 if warning:
                     self.warn(warning, msg)
                 else:
                     raise DistutilsError('%s %s' % (url, msg))
    -        except urllib2.HTTPError:
    -            v = sys.exc_info()[1]
    +        except urllib2.HTTPError as v:
                 return v
    -        except urllib2.URLError:
    -            v = sys.exc_info()[1]
    +        except urllib2.URLError as v:
                 if warning:
                     self.warn(warning, v.reason)
                 else:
                     raise DistutilsError("Download error for %s: %s"
                                          % (url, v.reason))
    -        except httplib.BadStatusLine:
    -            v = sys.exc_info()[1]
    +        except httplib.BadStatusLine as v:
                 if warning:
                     self.warn(warning, v.line)
                 else:
    @@ -726,8 +721,7 @@ class PackageIndex(Environment):
                         'down, %s' %
                         (url, v.line)
                     )
    -        except httplib.HTTPException:
    -            v = sys.exc_info()[1]
    +        except httplib.HTTPException as v:
                 if warning:
                     self.warn(warning, v)
                 else:
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/sandbox.py b/Shared/lib/python3.4/site-packages/setuptools/sandbox.py
    index e79a13a..213cebf 100644
    --- a/Shared/lib/python3.4/site-packages/setuptools/sandbox.py
    +++ b/Shared/lib/python3.4/site-packages/setuptools/sandbox.py
    @@ -5,10 +5,12 @@ import operator
     import functools
     import itertools
     import re
    +import contextlib
    +import pickle
     
     import pkg_resources
     
    -if os.name == "java":
    +if sys.platform.startswith('java'):
         import org.python.modules.posix.PosixModule as _os
     else:
         _os = sys.modules[os.name]
    @@ -20,6 +22,7 @@ _open = open
     from distutils.errors import DistutilsError
     from pkg_resources import working_set
     
    +from setuptools import compat
     from setuptools.compat import builtins
     
     __all__ = [
    @@ -31,31 +34,197 @@ def _execfile(filename, globals, locals=None):
         Python 3 implementation of execfile.
         """
         mode = 'rb'
    -    # Python 2.6 compile requires LF for newlines, so use deprecated
    -    #  Universal newlines support.
    -    if sys.version_info < (2, 7):
    -        mode += 'U'
         with open(filename, mode) as stream:
             script = stream.read()
    +    # compile() function in Python 2.6 and 3.1 requires LF line endings.
    +    if sys.version_info[:2] < (2, 7) or sys.version_info[:2] >= (3, 0) and sys.version_info[:2] < (3, 2):
    +        script = script.replace(b'\r\n', b'\n')
    +        script = script.replace(b'\r', b'\n')
         if locals is None:
             locals = globals
         code = compile(script, filename, 'exec')
         exec(code, globals, locals)
     
    +
    +@contextlib.contextmanager
    +def save_argv(repl=None):
    +    saved = sys.argv[:]
    +    if repl is not None:
    +        sys.argv[:] = repl
    +    try:
    +        yield saved
    +    finally:
    +        sys.argv[:] = saved
    +
    +
    +@contextlib.contextmanager
    +def save_path():
    +    saved = sys.path[:]
    +    try:
    +        yield saved
    +    finally:
    +        sys.path[:] = saved
    +
    +
    +@contextlib.contextmanager
    +def override_temp(replacement):
    +    """
    +    Monkey-patch tempfile.tempdir with replacement, ensuring it exists
    +    """
    +    if not os.path.isdir(replacement):
    +        os.makedirs(replacement)
    +
    +    saved = tempfile.tempdir
    +
    +    tempfile.tempdir = replacement
    +
    +    try:
    +        yield
    +    finally:
    +        tempfile.tempdir = saved
    +
    +
    +@contextlib.contextmanager
    +def pushd(target):
    +    saved = os.getcwd()
    +    os.chdir(target)
    +    try:
    +        yield saved
    +    finally:
    +        os.chdir(saved)
    +
    +
    +class UnpickleableException(Exception):
    +    """
    +    An exception representing another Exception that could not be pickled.
    +    """
    +    @classmethod
    +    def dump(cls, type, exc):
    +        """
    +        Always return a dumped (pickled) type and exc. If exc can't be pickled,
    +        wrap it in UnpickleableException first.
    +        """
    +        try:
    +            return pickle.dumps(type), pickle.dumps(exc)
    +        except Exception:
    +            return cls.dump(cls, cls(repr(exc)))
    +
    +
    +class ExceptionSaver:
    +    """
    +    A Context Manager that will save an exception, serialized, and restore it
    +    later.
    +    """
    +    def __enter__(self):
    +        return self
    +
    +    def __exit__(self, type, exc, tb):
    +        if not exc:
    +            return
    +
    +        # dump the exception
    +        self._saved = UnpickleableException.dump(type, exc)
    +        self._tb = tb
    +
    +        # suppress the exception
    +        return True
    +
    +    def resume(self):
    +        "restore and re-raise any exception"
    +
    +        if '_saved' not in vars(self):
    +            return
    +
    +        type, exc = map(pickle.loads, self._saved)
    +        compat.reraise(type, exc, self._tb)
    +
    +
    +@contextlib.contextmanager
    +def save_modules():
    +    """
    +    Context in which imported modules are saved.
    +
    +    Translates exceptions internal to the context into the equivalent exception
    +    outside the context.
    +    """
    +    saved = sys.modules.copy()
    +    with ExceptionSaver() as saved_exc:
    +        yield saved
    +
    +    sys.modules.update(saved)
    +    # remove any modules imported since
    +    del_modules = (
    +        mod_name for mod_name in sys.modules
    +        if mod_name not in saved
    +        # exclude any encodings modules. See #285
    +        and not mod_name.startswith('encodings.')
    +    )
    +    _clear_modules(del_modules)
    +
    +    saved_exc.resume()
    +
    +
    +def _clear_modules(module_names):
    +    for mod_name in list(module_names):
    +        del sys.modules[mod_name]
    +
    +
    +@contextlib.contextmanager
    +def save_pkg_resources_state():
    +    saved = pkg_resources.__getstate__()
    +    try:
    +        yield saved
    +    finally:
    +        pkg_resources.__setstate__(saved)
    +
    +
    +@contextlib.contextmanager
    +def setup_context(setup_dir):
    +    temp_dir = os.path.join(setup_dir, 'temp')
    +    with save_pkg_resources_state():
    +        with save_modules():
    +            hide_setuptools()
    +            with save_path():
    +                with save_argv():
    +                    with override_temp(temp_dir):
    +                        with pushd(setup_dir):
    +                            # ensure setuptools commands are available
    +                            __import__('setuptools')
    +                            yield
    +
    +
    +def _needs_hiding(mod_name):
    +    """
    +    >>> _needs_hiding('setuptools')
    +    True
    +    >>> _needs_hiding('pkg_resources')
    +    True
    +    >>> _needs_hiding('setuptools_plugin')
    +    False
    +    >>> _needs_hiding('setuptools.__init__')
    +    True
    +    >>> _needs_hiding('distutils')
    +    True
    +    """
    +    pattern = re.compile('(setuptools|pkg_resources|distutils)(\.|$)')
    +    return bool(pattern.match(mod_name))
    +
    +
    +def hide_setuptools():
    +    """
    +    Remove references to setuptools' modules from sys.modules to allow the
    +    invocation to import the most appropriate setuptools. This technique is
    +    necessary to avoid issues such as #315 where setuptools upgrading itself
    +    would fail to find a function declared in the metadata.
    +    """
    +    modules = filter(_needs_hiding, sys.modules)
    +    _clear_modules(modules)
    +
    +
     def run_setup(setup_script, args):
         """Run a distutils setup script, sandboxed in its directory"""
    -    old_dir = os.getcwd()
    -    save_argv = sys.argv[:]
    -    save_path = sys.path[:]
         setup_dir = os.path.abspath(os.path.dirname(setup_script))
    -    temp_dir = os.path.join(setup_dir,'temp')
    -    if not os.path.isdir(temp_dir): os.makedirs(temp_dir)
    -    save_tmp = tempfile.tempdir
    -    save_modules = sys.modules.copy()
    -    pr_state = pkg_resources.__getstate__()
    -    try:
    -        tempfile.tempdir = temp_dir
    -        os.chdir(setup_dir)
    +    with setup_context(setup_dir):
             try:
                 sys.argv[:] = [setup_script]+list(args)
                 sys.path.insert(0, setup_dir)
    @@ -66,26 +235,10 @@ def run_setup(setup_script, args):
                     ns = dict(__file__=setup_script, __name__='__main__')
                     _execfile(setup_script, ns)
                 DirectorySandbox(setup_dir).run(runner)
    -        except SystemExit:
    -            v = sys.exc_info()[1]
    +        except SystemExit as v:
                 if v.args and v.args[0]:
                     raise
                 # Normal exit, just return
    -    finally:
    -        pkg_resources.__setstate__(pr_state)
    -        sys.modules.update(save_modules)
    -        # remove any modules imported within the sandbox
    -        del_modules = [
    -            mod_name for mod_name in sys.modules
    -            if mod_name not in save_modules
    -            # exclude any encodings modules. See #285
    -            and not mod_name.startswith('encodings.')
    -        ]
    -        list(map(sys.modules.__delitem__, del_modules))
    -        os.chdir(old_dir)
    -        sys.path[:] = save_path
    -        sys.argv[:] = save_argv
    -        tempfile.tempdir = save_tmp
     
     
     class AbstractSandbox:
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/svn_utils.py b/Shared/lib/python3.4/site-packages/setuptools/svn_utils.py
    deleted file mode 100644
    index dadb682..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools/svn_utils.py
    +++ /dev/null
    @@ -1,585 +0,0 @@
    -from __future__ import absolute_import
    -
    -import os
    -import re
    -import sys
    -from distutils import log
    -import xml.dom.pulldom
    -import shlex
    -import locale
    -import codecs
    -import unicodedata
    -import warnings
    -from setuptools.compat import unicode, PY2
    -from setuptools.py31compat import TemporaryDirectory
    -from xml.sax.saxutils import unescape
    -
    -try:
    -    import urlparse
    -except ImportError:
    -    import urllib.parse as urlparse
    -
    -from subprocess import Popen as _Popen, PIPE as _PIPE
    -
    -#NOTE: Use of the command line options require SVN 1.3 or newer (December 2005)
    -#      and SVN 1.3 hasn't been supported by the developers since mid 2008.
    -
    -#subprocess is called several times with shell=(sys.platform=='win32')
    -#see the follow for more information:
    -#       http://bugs.python.org/issue8557
    -#       http://stackoverflow.com/questions/5658622/
    -#              python-subprocess-popen-environment-path
    -
    -def _run_command(args, stdout=_PIPE, stderr=_PIPE, encoding=None, stream=0):
    -    #regarding the shell argument, see: http://bugs.python.org/issue8557
    -    try:
    -        proc = _Popen(args, stdout=stdout, stderr=stderr,
    -                      shell=(sys.platform == 'win32'))
    -
    -        data = proc.communicate()[stream]
    -    except OSError:
    -        return 1, ''
    -
    -    #doubled checked and
    -    data = decode_as_string(data, encoding)
    -
    -    #communciate calls wait()
    -    return proc.returncode, data
    -
    -
    -def _get_entry_schedule(entry):
    -    schedule = entry.getElementsByTagName('schedule')[0]
    -    return "".join([t.nodeValue
    -                    for t in schedule.childNodes
    -                    if t.nodeType == t.TEXT_NODE])
    -
    -
    -def _get_target_property(target):
    -    property_text = target.getElementsByTagName('property')[0]
    -    return "".join([t.nodeValue
    -                    for t in property_text.childNodes
    -                    if t.nodeType == t.TEXT_NODE])
    -
    -
    -def _get_xml_data(decoded_str):
    -    if PY2:
    -        #old versions want an encoded string
    -        data = decoded_str.encode('utf-8')
    -    else:
    -        data = decoded_str
    -    return data
    -
    -
    -def joinpath(prefix, *suffix):
    -    if not prefix or prefix == '.':
    -        return os.path.join(*suffix)
    -    return os.path.join(prefix, *suffix)
    -
    -def determine_console_encoding():
    -    try:
    -        #try for the preferred encoding
    -        encoding = locale.getpreferredencoding()
    -
    -        #see if the locale.getdefaultlocale returns null
    -        #some versions of python\platforms return US-ASCII
    -        #when it cannot determine an encoding
    -        if not encoding or encoding == "US-ASCII":
    -            encoding = locale.getdefaultlocale()[1]
    -
    -        if encoding:
    -            codecs.lookup(encoding)  # make sure a lookup error is not made
    -
    -    except (locale.Error, LookupError):
    -        encoding = None
    -
    -    is_osx = sys.platform == "darwin"
    -    if not encoding:
    -        return ["US-ASCII", "utf-8"][is_osx]
    -    elif encoding.startswith("mac-") and is_osx:
    -        #certain versions of python would return mac-roman as default
    -        #OSX as a left over of earlier mac versions.
    -        return "utf-8"
    -    else:
    -        return encoding
    -
    -_console_encoding = determine_console_encoding()
    -
    -def decode_as_string(text, encoding=None):
    -    """
    -    Decode the console or file output explicitly using getpreferredencoding.
    -    The text paraemeter should be a encoded string, if not no decode occurs
    -    If no encoding is given, getpreferredencoding is used.  If encoding is
    -    specified, that is used instead.  This would be needed for SVN --xml
    -    output.  Unicode is explicitly put in composed NFC form.
    -
    -    --xml should be UTF-8 (SVN Issue 2938) the discussion on the Subversion
    -    DEV List from 2007 seems to indicate the same.
    -    """
    -    #text should be a byte string
    -
    -    if encoding is None:
    -        encoding = _console_encoding
    -
    -    if not isinstance(text, unicode):
    -        text = text.decode(encoding)
    -
    -    text = unicodedata.normalize('NFC', text)
    -
    -    return text
    -
    -
    -def parse_dir_entries(decoded_str):
    -    '''Parse the entries from a recursive info xml'''
    -    doc = xml.dom.pulldom.parseString(_get_xml_data(decoded_str))
    -    entries = list()
    -
    -    for event, node in doc:
    -        if event == 'START_ELEMENT' and node.nodeName == 'entry':
    -            doc.expandNode(node)
    -            if not _get_entry_schedule(node).startswith('delete'):
    -                entries.append((node.getAttribute('path'),
    -                                node.getAttribute('kind')))
    -
    -    return entries[1:]  # do not want the root directory
    -
    -
    -def parse_externals_xml(decoded_str, prefix=''):
    -    '''Parse a propget svn:externals xml'''
    -    prefix = os.path.normpath(prefix)
    -    prefix = os.path.normcase(prefix)
    -
    -    doc = xml.dom.pulldom.parseString(_get_xml_data(decoded_str))
    -    externals = list()
    -
    -    for event, node in doc:
    -        if event == 'START_ELEMENT' and node.nodeName == 'target':
    -            doc.expandNode(node)
    -            path = os.path.normpath(node.getAttribute('path'))
    -
    -            if os.path.normcase(path).startswith(prefix):
    -                path = path[len(prefix)+1:]
    -
    -            data = _get_target_property(node)
    -            #data should be decoded already
    -            for external in parse_external_prop(data):
    -                externals.append(joinpath(path, external))
    -
    -    return externals  # do not want the root directory
    -
    -
    -def parse_external_prop(lines):
    -    """
    -    Parse the value of a retrieved svn:externals entry.
    -
    -    possible token setups (with quotng and backscaping in laters versions)
    -        URL[@#] EXT_FOLDERNAME
    -        [-r#] URL EXT_FOLDERNAME
    -        EXT_FOLDERNAME [-r#] URL
    -    """
    -    externals = []
    -    for line in lines.splitlines():
    -        line = line.lstrip()  # there might be a "\ "
    -        if not line:
    -            continue
    -
    -        if PY2:
    -            #shlex handles NULLs just fine and shlex in 2.7 tries to encode
    -            #as ascii automatiically
    -            line = line.encode('utf-8')
    -        line = shlex.split(line)
    -        if PY2:
    -            line = [x.decode('utf-8') for x in line]
    -
    -        #EXT_FOLDERNAME is either the first or last depending on where
    -        #the URL falls
    -        if urlparse.urlsplit(line[-1])[0]:
    -            external = line[0]
    -        else:
    -            external = line[-1]
    -
    -        external = decode_as_string(external, encoding="utf-8")
    -        externals.append(os.path.normpath(external))
    -
    -    return externals
    -
    -
    -def parse_prop_file(filename, key):
    -    found = False
    -    f = open(filename, 'rt')
    -    data = ''
    -    try:
    -        for line in iter(f.readline, ''):    # can't use direct iter!
    -            parts = line.split()
    -            if len(parts) == 2:
    -                kind, length = parts
    -                data = f.read(int(length))
    -                if kind == 'K' and data == key:
    -                    found = True
    -                elif kind == 'V' and found:
    -                    break
    -    finally:
    -        f.close()
    -
    -    return data
    -
    -
    -class SvnInfo(object):
    -    '''
    -    Generic svn_info object.  No has little knowledge of how to extract
    -    information.  Use cls.load to instatiate according svn version.
    -
    -    Paths are not filesystem encoded.
    -    '''
    -
    -    @staticmethod
    -    def get_svn_version():
    -        # Temp config directory should be enough to check for repository
    -        # This is needed because .svn always creates .subversion and
    -        # some operating systems do not handle dot directory correctly.
    -        # Real queries in real svn repos with be concerned with it creation
    -        with TemporaryDirectory() as tempdir:
    -            code, data = _run_command(['svn',
    -                                       '--config-dir', tempdir,
    -                                       '--version',
    -                                       '--quiet'])
    -
    -        if code == 0 and data:
    -            return data.strip()
    -        else:
    -            return ''
    -
    -    #svnversion return values (previous implementations return max revision)
    -    #   4123:4168     mixed revision working copy
    -    #   4168M         modified working copy
    -    #   4123S         switched working copy
    -    #   4123:4168MS   mixed revision, modified, switched working copy
    -    revision_re = re.compile(r'(?:([\-0-9]+):)?(\d+)([a-z]*)\s*$', re.I)
    -
    -    @classmethod
    -    def load(cls, dirname=''):
    -        normdir = os.path.normpath(dirname)
    -
    -        # Temp config directory should be enough to check for repository
    -        # This is needed because .svn always creates .subversion and
    -        # some operating systems do not handle dot directory correctly.
    -        # Real queries in real svn repos with be concerned with it creation
    -        with TemporaryDirectory() as tempdir:
    -            code, data = _run_command(['svn',
    -                                       '--config-dir', tempdir,
    -                                       'info', normdir])
    -
    -        # Must check for some contents, as some use empty directories
    -        # in testcases, however only enteries is needed also the info
    -        # command above MUST have worked
    -        svn_dir = os.path.join(normdir, '.svn')
    -        is_svn_wd = (not code or
    -                     os.path.isfile(os.path.join(svn_dir, 'entries')))
    -
    -        svn_version = tuple(cls.get_svn_version().split('.'))
    -
    -        try:
    -            base_svn_version = tuple(int(x) for x in svn_version[:2])
    -        except ValueError:
    -            base_svn_version = tuple()
    -
    -        if not is_svn_wd:
    -            #return an instance of this NO-OP class
    -            return SvnInfo(dirname)
    -
    -        if code or not base_svn_version or base_svn_version < (1, 3):
    -            warnings.warn(("No SVN 1.3+ command found: falling back "
    -                           "on pre 1.7 .svn parsing"), DeprecationWarning)
    -            return SvnFileInfo(dirname)
    -
    -        if base_svn_version < (1, 5):
    -            return Svn13Info(dirname)
    -
    -        return Svn15Info(dirname)
    -
    -    def __init__(self, path=''):
    -        self.path = path
    -        self._entries = None
    -        self._externals = None
    -
    -    def get_revision(self):
    -        'Retrieve the directory revision informatino using svnversion'
    -        code, data = _run_command(['svnversion', '-c', self.path])
    -        if code:
    -            log.warn("svnversion failed")
    -            return 0
    -
    -        parsed = self.revision_re.match(data)
    -        if parsed:
    -            return int(parsed.group(2))
    -        else:
    -            return 0
    -
    -    @property
    -    def entries(self):
    -        if self._entries is None:
    -            self._entries = self.get_entries()
    -        return self._entries
    -
    -    @property
    -    def externals(self):
    -        if self._externals is None:
    -            self._externals = self.get_externals()
    -        return self._externals
    -
    -    def iter_externals(self):
    -        '''
    -        Iterate over the svn:external references in the repository path.
    -        '''
    -        for item in self.externals:
    -            yield item
    -
    -    def iter_files(self):
    -        '''
    -        Iterate over the non-deleted file entries in the repository path
    -        '''
    -        for item, kind in self.entries:
    -            if kind.lower() == 'file':
    -                yield item
    -
    -    def iter_dirs(self, include_root=True):
    -        '''
    -        Iterate over the non-deleted file entries in the repository path
    -        '''
    -        if include_root:
    -            yield self.path
    -        for item, kind in self.entries:
    -            if kind.lower() == 'dir':
    -                yield item
    -
    -    def get_entries(self):
    -        return []
    -
    -    def get_externals(self):
    -        return []
    -
    -
    -class Svn13Info(SvnInfo):
    -    def get_entries(self):
    -        code, data = _run_command(['svn', 'info', '-R', '--xml', self.path],
    -                                  encoding="utf-8")
    -
    -        if code:
    -            log.debug("svn info failed")
    -            return []
    -
    -        return parse_dir_entries(data)
    -
    -    def get_externals(self):
    -        #Previous to 1.5 --xml was not supported for svn propget and the -R
    -        #output format breaks the shlex compatible semantics.
    -        cmd = ['svn', 'propget', 'svn:externals']
    -        result = []
    -        for folder in self.iter_dirs():
    -            code, lines = _run_command(cmd + [folder], encoding="utf-8")
    -            if code != 0:
    -                log.warn("svn propget failed")
    -                return []
    -            #lines should a str
    -            for external in parse_external_prop(lines):
    -                if folder:
    -                    external = os.path.join(folder, external)
    -                result.append(os.path.normpath(external))
    -
    -        return result
    -
    -
    -class Svn15Info(Svn13Info):
    -    def get_externals(self):
    -        cmd = ['svn', 'propget', 'svn:externals', self.path, '-R', '--xml']
    -        code, lines = _run_command(cmd, encoding="utf-8")
    -        if code:
    -            log.debug("svn propget failed")
    -            return []
    -        return parse_externals_xml(lines, prefix=os.path.abspath(self.path))
    -
    -
    -class SvnFileInfo(SvnInfo):
    -
    -    def __init__(self, path=''):
    -        super(SvnFileInfo, self).__init__(path)
    -        self._directories = None
    -        self._revision = None
    -
    -    def _walk_svn(self, base):
    -        entry_file = joinpath(base, '.svn', 'entries')
    -        if os.path.isfile(entry_file):
    -            entries = SVNEntriesFile.load(base)
    -            yield (base, False, entries.parse_revision())
    -            for path in entries.get_undeleted_records():
    -                path = decode_as_string(path)
    -                path = joinpath(base, path)
    -                if os.path.isfile(path):
    -                    yield (path, True, None)
    -                elif os.path.isdir(path):
    -                    for item in self._walk_svn(path):
    -                        yield item
    -
    -    def _build_entries(self):
    -        entries = list()
    -
    -        rev = 0
    -        for path, isfile, dir_rev in self._walk_svn(self.path):
    -            if isfile:
    -                entries.append((path, 'file'))
    -            else:
    -                entries.append((path, 'dir'))
    -                rev = max(rev, dir_rev)
    -
    -        self._entries = entries
    -        self._revision = rev
    -
    -    def get_entries(self):
    -        if self._entries is None:
    -            self._build_entries()
    -        return self._entries
    -
    -    def get_revision(self):
    -        if self._revision is None:
    -            self._build_entries()
    -        return self._revision
    -
    -    def get_externals(self):
    -        prop_files = [['.svn', 'dir-prop-base'],
    -                      ['.svn', 'dir-props']]
    -        externals = []
    -
    -        for dirname in self.iter_dirs():
    -            prop_file = None
    -            for rel_parts in prop_files:
    -                filename = joinpath(dirname, *rel_parts)
    -                if os.path.isfile(filename):
    -                    prop_file = filename
    -
    -            if prop_file is not None:
    -                ext_prop = parse_prop_file(prop_file, 'svn:externals')
    -                #ext_prop should be utf-8 coming from svn:externals
    -                ext_prop = decode_as_string(ext_prop, encoding="utf-8")
    -                externals.extend(parse_external_prop(ext_prop))
    -
    -        return externals
    -
    -
    -def svn_finder(dirname=''):
    -    #combined externals due to common interface
    -    #combined externals and entries due to lack of dir_props in 1.7
    -    info = SvnInfo.load(dirname)
    -    for path in info.iter_files():
    -        yield path
    -
    -    for path in info.iter_externals():
    -        sub_info = SvnInfo.load(path)
    -        for sub_path in sub_info.iter_files():
    -            yield sub_path
    -
    -
    -class SVNEntriesFile(object):
    -    def __init__(self, data):
    -        self.data = data
    -
    -    @classmethod
    -    def load(class_, base):
    -        filename = os.path.join(base, '.svn', 'entries')
    -        f = open(filename)
    -        try:
    -            result = SVNEntriesFile.read(f)
    -        finally:
    -            f.close()
    -        return result
    -
    -    @classmethod
    -    def read(class_, fileobj):
    -        data = fileobj.read()
    -        is_xml = data.startswith(' revision_line_number
    -                and section[revision_line_number])
    -        ]
    -        return rev_numbers
    -
    -    def get_undeleted_records(self):
    -        undeleted = lambda s: s and s[0] and (len(s) < 6 or s[5] != 'delete')
    -        result = [
    -            section[0]
    -            for section in self.get_sections()
    -            if undeleted(section)
    -        ]
    -        return result
    -
    -
    -class SVNEntriesFileXML(SVNEntriesFile):
    -    def is_valid(self):
    -        return True
    -
    -    def get_url(self):
    -        "Get repository URL"
    -        urlre = re.compile('url="([^"]+)"')
    -        return urlre.search(self.data).group(1)
    -
    -    def parse_revision_numbers(self):
    -        revre = re.compile(r'committed-rev="(\d+)"')
    -        return [
    -            int(m.group(1))
    -            for m in revre.finditer(self.data)
    -        ]
    -
    -    def get_undeleted_records(self):
    -        entries_pattern = \
    -            re.compile(r'name="([^"]+)"(?![^>]+deleted="true")', re.I)
    -        results = [
    -            unescape(match.group(1))
    -            for match in entries_pattern.finditer(self.data)
    -        ]
    -        return results
    -
    -
    -if __name__ == '__main__':
    -    for name in svn_finder(sys.argv[1]):
    -        print(name)
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/__init__.py b/Shared/lib/python3.4/site-packages/setuptools/tests/__init__.py
    deleted file mode 100644
    index d6a4542..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools/tests/__init__.py
    +++ /dev/null
    @@ -1,351 +0,0 @@
    -"""Tests for the 'setuptools' package"""
    -import sys
    -import os
    -import unittest
    -import doctest
    -import distutils.core
    -import distutils.cmd
    -from distutils.errors import DistutilsOptionError, DistutilsPlatformError
    -from distutils.errors import DistutilsSetupError
    -from distutils.core import Extension
    -from distutils.version import LooseVersion
    -from setuptools.compat import func_code
    -
    -from setuptools.compat import func_code
    -import setuptools.dist
    -import setuptools.depends as dep
    -from setuptools import Feature
    -from setuptools.depends import Require
    -
    -def additional_tests():
    -    suite = unittest.TestSuite((
    -        doctest.DocFileSuite(
    -            os.path.join('tests', 'api_tests.txt'),
    -            optionflags=doctest.ELLIPSIS, package='pkg_resources',
    -            ),
    -        ))
    -    if sys.platform == 'win32':
    -        suite.addTest(doctest.DocFileSuite('win_script_wrapper.txt'))
    -    return suite
    -
    -def makeSetup(**args):
    -    """Return distribution from 'setup(**args)', without executing commands"""
    -
    -    distutils.core._setup_stop_after = "commandline"
    -
    -    # Don't let system command line leak into tests!
    -    args.setdefault('script_args',['install'])
    -
    -    try:
    -        return setuptools.setup(**args)
    -    finally:
    -        distutils.core._setup_stop_after = None
    -
    -
    -class DependsTests(unittest.TestCase):
    -
    -    def testExtractConst(self):
    -        if not hasattr(dep, 'extract_constant'):
    -            # skip on non-bytecode platforms
    -            return
    -
    -        def f1():
    -            global x, y, z
    -            x = "test"
    -            y = z
    -
    -        fc = func_code(f1)
    -        # unrecognized name
    -        self.assertEqual(dep.extract_constant(fc,'q', -1), None)
    -
    -        # constant assigned
    -        self.assertEqual(dep.extract_constant(fc,'x', -1), "test")
    -
    -        # expression assigned
    -        self.assertEqual(dep.extract_constant(fc,'y', -1), -1)
    -
    -        # recognized name, not assigned
    -        self.assertEqual(dep.extract_constant(fc,'z', -1), None)
    -
    -    def testFindModule(self):
    -        self.assertRaises(ImportError, dep.find_module, 'no-such.-thing')
    -        self.assertRaises(ImportError, dep.find_module, 'setuptools.non-existent')
    -        f,p,i = dep.find_module('setuptools.tests')
    -        f.close()
    -
    -    def testModuleExtract(self):
    -        if not hasattr(dep, 'get_module_constant'):
    -            # skip on non-bytecode platforms
    -            return
    -
    -        from email import __version__
    -        self.assertEqual(
    -            dep.get_module_constant('email','__version__'), __version__
    -        )
    -        self.assertEqual(
    -            dep.get_module_constant('sys','version'), sys.version
    -        )
    -        self.assertEqual(
    -            dep.get_module_constant('setuptools.tests','__doc__'),__doc__
    -        )
    -
    -    def testRequire(self):
    -        if not hasattr(dep, 'extract_constant'):
    -            # skip on non-bytecode platformsh
    -            return
    -
    -        req = Require('Email','1.0.3','email')
    -
    -        self.assertEqual(req.name, 'Email')
    -        self.assertEqual(req.module, 'email')
    -        self.assertEqual(req.requested_version, '1.0.3')
    -        self.assertEqual(req.attribute, '__version__')
    -        self.assertEqual(req.full_name(), 'Email-1.0.3')
    -
    -        from email import __version__
    -        self.assertEqual(req.get_version(), __version__)
    -        self.assertTrue(req.version_ok('1.0.9'))
    -        self.assertTrue(not req.version_ok('0.9.1'))
    -        self.assertTrue(not req.version_ok('unknown'))
    -
    -        self.assertTrue(req.is_present())
    -        self.assertTrue(req.is_current())
    -
    -        req = Require('Email 3000','03000','email',format=LooseVersion)
    -        self.assertTrue(req.is_present())
    -        self.assertTrue(not req.is_current())
    -        self.assertTrue(not req.version_ok('unknown'))
    -
    -        req = Require('Do-what-I-mean','1.0','d-w-i-m')
    -        self.assertTrue(not req.is_present())
    -        self.assertTrue(not req.is_current())
    -
    -        req = Require('Tests', None, 'tests', homepage="http://example.com")
    -        self.assertEqual(req.format, None)
    -        self.assertEqual(req.attribute, None)
    -        self.assertEqual(req.requested_version, None)
    -        self.assertEqual(req.full_name(), 'Tests')
    -        self.assertEqual(req.homepage, 'http://example.com')
    -
    -        paths = [os.path.dirname(p) for p in __path__]
    -        self.assertTrue(req.is_present(paths))
    -        self.assertTrue(req.is_current(paths))
    -
    -
    -class DistroTests(unittest.TestCase):
    -
    -    def setUp(self):
    -        self.e1 = Extension('bar.ext',['bar.c'])
    -        self.e2 = Extension('c.y', ['y.c'])
    -
    -        self.dist = makeSetup(
    -            packages=['a', 'a.b', 'a.b.c', 'b', 'c'],
    -            py_modules=['b.d','x'],
    -            ext_modules = (self.e1, self.e2),
    -            package_dir = {},
    -        )
    -
    -    def testDistroType(self):
    -        self.assertTrue(isinstance(self.dist,setuptools.dist.Distribution))
    -
    -    def testExcludePackage(self):
    -        self.dist.exclude_package('a')
    -        self.assertEqual(self.dist.packages, ['b','c'])
    -
    -        self.dist.exclude_package('b')
    -        self.assertEqual(self.dist.packages, ['c'])
    -        self.assertEqual(self.dist.py_modules, ['x'])
    -        self.assertEqual(self.dist.ext_modules, [self.e1, self.e2])
    -
    -        self.dist.exclude_package('c')
    -        self.assertEqual(self.dist.packages, [])
    -        self.assertEqual(self.dist.py_modules, ['x'])
    -        self.assertEqual(self.dist.ext_modules, [self.e1])
    -
    -        # test removals from unspecified options
    -        makeSetup().exclude_package('x')
    -
    -    def testIncludeExclude(self):
    -        # remove an extension
    -        self.dist.exclude(ext_modules=[self.e1])
    -        self.assertEqual(self.dist.ext_modules, [self.e2])
    -
    -        # add it back in
    -        self.dist.include(ext_modules=[self.e1])
    -        self.assertEqual(self.dist.ext_modules, [self.e2, self.e1])
    -
    -        # should not add duplicate
    -        self.dist.include(ext_modules=[self.e1])
    -        self.assertEqual(self.dist.ext_modules, [self.e2, self.e1])
    -
    -    def testExcludePackages(self):
    -        self.dist.exclude(packages=['c','b','a'])
    -        self.assertEqual(self.dist.packages, [])
    -        self.assertEqual(self.dist.py_modules, ['x'])
    -        self.assertEqual(self.dist.ext_modules, [self.e1])
    -
    -    def testEmpty(self):
    -        dist = makeSetup()
    -        dist.include(packages=['a'], py_modules=['b'], ext_modules=[self.e2])
    -        dist = makeSetup()
    -        dist.exclude(packages=['a'], py_modules=['b'], ext_modules=[self.e2])
    -
    -    def testContents(self):
    -        self.assertTrue(self.dist.has_contents_for('a'))
    -        self.dist.exclude_package('a')
    -        self.assertTrue(not self.dist.has_contents_for('a'))
    -
    -        self.assertTrue(self.dist.has_contents_for('b'))
    -        self.dist.exclude_package('b')
    -        self.assertTrue(not self.dist.has_contents_for('b'))
    -
    -        self.assertTrue(self.dist.has_contents_for('c'))
    -        self.dist.exclude_package('c')
    -        self.assertTrue(not self.dist.has_contents_for('c'))
    -
    -    def testInvalidIncludeExclude(self):
    -        self.assertRaises(DistutilsSetupError,
    -            self.dist.include, nonexistent_option='x'
    -        )
    -        self.assertRaises(DistutilsSetupError,
    -            self.dist.exclude, nonexistent_option='x'
    -        )
    -        self.assertRaises(DistutilsSetupError,
    -            self.dist.include, packages={'x':'y'}
    -        )
    -        self.assertRaises(DistutilsSetupError,
    -            self.dist.exclude, packages={'x':'y'}
    -        )
    -        self.assertRaises(DistutilsSetupError,
    -            self.dist.include, ext_modules={'x':'y'}
    -        )
    -        self.assertRaises(DistutilsSetupError,
    -            self.dist.exclude, ext_modules={'x':'y'}
    -        )
    -
    -        self.assertRaises(DistutilsSetupError,
    -            self.dist.include, package_dir=['q']
    -        )
    -        self.assertRaises(DistutilsSetupError,
    -            self.dist.exclude, package_dir=['q']
    -        )
    -
    -
    -class FeatureTests(unittest.TestCase):
    -
    -    def setUp(self):
    -        self.req = Require('Distutils','1.0.3','distutils')
    -        self.dist = makeSetup(
    -            features={
    -                'foo': Feature("foo",standard=True,require_features=['baz',self.req]),
    -                'bar': Feature("bar",  standard=True, packages=['pkg.bar'],
    -                               py_modules=['bar_et'], remove=['bar.ext'],
    -                       ),
    -                'baz': Feature(
    -                        "baz", optional=False, packages=['pkg.baz'],
    -                        scripts = ['scripts/baz_it'],
    -                        libraries=[('libfoo','foo/foofoo.c')]
    -                       ),
    -                'dwim': Feature("DWIM", available=False, remove='bazish'),
    -            },
    -            script_args=['--without-bar', 'install'],
    -            packages = ['pkg.bar', 'pkg.foo'],
    -            py_modules = ['bar_et', 'bazish'],
    -            ext_modules = [Extension('bar.ext',['bar.c'])]
    -        )
    -
    -    def testDefaults(self):
    -        self.assertTrue(not
    -            Feature(
    -                "test",standard=True,remove='x',available=False
    -            ).include_by_default()
    -        )
    -        self.assertTrue(
    -            Feature("test",standard=True,remove='x').include_by_default()
    -        )
    -        # Feature must have either kwargs, removes, or require_features
    -        self.assertRaises(DistutilsSetupError, Feature, "test")
    -
    -    def testAvailability(self):
    -        self.assertRaises(
    -            DistutilsPlatformError,
    -            self.dist.features['dwim'].include_in, self.dist
    -        )
    -
    -    def testFeatureOptions(self):
    -        dist = self.dist
    -        self.assertTrue(
    -            ('with-dwim',None,'include DWIM') in dist.feature_options
    -        )
    -        self.assertTrue(
    -            ('without-dwim',None,'exclude DWIM (default)') in dist.feature_options
    -        )
    -        self.assertTrue(
    -            ('with-bar',None,'include bar (default)') in dist.feature_options
    -        )
    -        self.assertTrue(
    -            ('without-bar',None,'exclude bar') in dist.feature_options
    -        )
    -        self.assertEqual(dist.feature_negopt['without-foo'],'with-foo')
    -        self.assertEqual(dist.feature_negopt['without-bar'],'with-bar')
    -        self.assertEqual(dist.feature_negopt['without-dwim'],'with-dwim')
    -        self.assertTrue(not 'without-baz' in dist.feature_negopt)
    -
    -    def testUseFeatures(self):
    -        dist = self.dist
    -        self.assertEqual(dist.with_foo,1)
    -        self.assertEqual(dist.with_bar,0)
    -        self.assertEqual(dist.with_baz,1)
    -        self.assertTrue(not 'bar_et' in dist.py_modules)
    -        self.assertTrue(not 'pkg.bar' in dist.packages)
    -        self.assertTrue('pkg.baz' in dist.packages)
    -        self.assertTrue('scripts/baz_it' in dist.scripts)
    -        self.assertTrue(('libfoo','foo/foofoo.c') in dist.libraries)
    -        self.assertEqual(dist.ext_modules,[])
    -        self.assertEqual(dist.require_features, [self.req])
    -
    -        # If we ask for bar, it should fail because we explicitly disabled
    -        # it on the command line
    -        self.assertRaises(DistutilsOptionError, dist.include_feature, 'bar')
    -
    -    def testFeatureWithInvalidRemove(self):
    -        self.assertRaises(
    -            SystemExit, makeSetup, features = {'x':Feature('x', remove='y')}
    -        )
    -
    -class TestCommandTests(unittest.TestCase):
    -
    -    def testTestIsCommand(self):
    -        test_cmd = makeSetup().get_command_obj('test')
    -        self.assertTrue(isinstance(test_cmd, distutils.cmd.Command))
    -
    -    def testLongOptSuiteWNoDefault(self):
    -        ts1 = makeSetup(script_args=['test','--test-suite=foo.tests.suite'])
    -        ts1 = ts1.get_command_obj('test')
    -        ts1.ensure_finalized()
    -        self.assertEqual(ts1.test_suite, 'foo.tests.suite')
    -
    -    def testDefaultSuite(self):
    -        ts2 = makeSetup(test_suite='bar.tests.suite').get_command_obj('test')
    -        ts2.ensure_finalized()
    -        self.assertEqual(ts2.test_suite, 'bar.tests.suite')
    -
    -    def testDefaultWModuleOnCmdLine(self):
    -        ts3 = makeSetup(
    -            test_suite='bar.tests',
    -            script_args=['test','-m','foo.tests']
    -        ).get_command_obj('test')
    -        ts3.ensure_finalized()
    -        self.assertEqual(ts3.test_module, 'foo.tests')
    -        self.assertEqual(ts3.test_suite,  'foo.tests.test_suite')
    -
    -    def testConflictingOptions(self):
    -        ts4 = makeSetup(
    -            script_args=['test','-m','bar.tests', '-s','foo.tests.suite']
    -        ).get_command_obj('test')
    -        self.assertRaises(DistutilsOptionError, ts4.ensure_finalized)
    -
    -    def testNoSuite(self):
    -        ts5 = makeSetup().get_command_obj('test')
    -        ts5.ensure_finalized()
    -        self.assertEqual(ts5.test_suite, None)
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/environment.py b/Shared/lib/python3.4/site-packages/setuptools/tests/environment.py
    deleted file mode 100644
    index 476d280..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools/tests/environment.py
    +++ /dev/null
    @@ -1,165 +0,0 @@
    -import os
    -import zipfile
    -import sys
    -import tempfile
    -import unittest
    -import shutil
    -import stat
    -import unicodedata
    -
    -from subprocess import Popen as _Popen, PIPE as _PIPE
    -
    -
    -def _extract(self, member, path=None, pwd=None):
    -    """for zipfile py2.5 borrowed from cpython"""
    -    if not isinstance(member, zipfile.ZipInfo):
    -        member = self.getinfo(member)
    -
    -    if path is None:
    -        path = os.getcwd()
    -
    -    return _extract_member(self, member, path, pwd)
    -
    -
    -def _extract_from_zip(self, name, dest_path):
    -    dest_file = open(dest_path, 'wb')
    -    try:
    -        dest_file.write(self.read(name))
    -    finally:
    -        dest_file.close()
    -
    -
    -def _extract_member(self, member, targetpath, pwd):
    -    """for zipfile py2.5 borrowed from cpython"""
    -    # build the destination pathname, replacing
    -    # forward slashes to platform specific separators.
    -    # Strip trailing path separator, unless it represents the root.
    -    if (targetpath[-1:] in (os.path.sep, os.path.altsep)
    -            and len(os.path.splitdrive(targetpath)[1]) > 1):
    -        targetpath = targetpath[:-1]
    -
    -    # don't include leading "/" from file name if present
    -    if member.filename[0] == '/':
    -        targetpath = os.path.join(targetpath, member.filename[1:])
    -    else:
    -        targetpath = os.path.join(targetpath, member.filename)
    -
    -    targetpath = os.path.normpath(targetpath)
    -
    -    # Create all upper directories if necessary.
    -    upperdirs = os.path.dirname(targetpath)
    -    if upperdirs and not os.path.exists(upperdirs):
    -        os.makedirs(upperdirs)
    -
    -    if member.filename[-1] == '/':
    -        if not os.path.isdir(targetpath):
    -            os.mkdir(targetpath)
    -        return targetpath
    -
    -    _extract_from_zip(self, member.filename, targetpath)
    -
    -    return targetpath
    -
    -
    -def _remove_dir(target):
    -
    -    #on windows this seems to a problem
    -    for dir_path, dirs, files in os.walk(target):
    -        os.chmod(dir_path, stat.S_IWRITE)
    -        for filename in files:
    -            os.chmod(os.path.join(dir_path, filename), stat.S_IWRITE)
    -    shutil.rmtree(target)
    -
    -
    -class ZippedEnvironment(unittest.TestCase):
    -
    -    datafile = None
    -    dataname = None
    -    old_cwd = None
    -
    -    def setUp(self):
    -        if self.datafile is None or self.dataname is None:
    -            return
    -
    -        if not os.path.isfile(self.datafile):
    -            self.old_cwd = None
    -            return
    -
    -        self.old_cwd = os.getcwd()
    -
    -        self.temp_dir = tempfile.mkdtemp()
    -        zip_file, source, target = [None, None, None]
    -        try:
    -            zip_file = zipfile.ZipFile(self.datafile)
    -            for files in zip_file.namelist():
    -                _extract(zip_file, files, self.temp_dir)
    -        finally:
    -            if zip_file:
    -                zip_file.close()
    -            del zip_file
    -
    -        os.chdir(os.path.join(self.temp_dir, self.dataname))
    -
    -    def tearDown(self):
    -        #Assume setUp was never completed
    -        if self.dataname is None or self.datafile is None:
    -            return
    -
    -        try:
    -            if self.old_cwd:
    -                os.chdir(self.old_cwd)
    -                _remove_dir(self.temp_dir)
    -        except OSError:
    -            #sigh?
    -            pass
    -
    -
    -def _which_dirs(cmd):
    -    result = set()
    -    for path in os.environ.get('PATH', '').split(os.pathsep):
    -        filename = os.path.join(path, cmd)
    -        if os.access(filename, os.X_OK):
    -            result.add(path)
    -    return result
    -
    -
    -def run_setup_py(cmd, pypath=None, path=None,
    -                 data_stream=0, env=None):
    -    """
    -    Execution command for tests, separate from those used by the
    -    code directly to prevent accidental behavior issues
    -    """
    -    if env is None:
    -        env = dict()
    -        for envname in os.environ:
    -            env[envname] = os.environ[envname]
    -
    -    #override the python path if needed
    -    if pypath is not None:
    -        env["PYTHONPATH"] = pypath
    -
    -    #overide the execution path if needed
    -    if path is not None:
    -        env["PATH"] = path
    -    if not env.get("PATH", ""):
    -        env["PATH"] = _which_dirs("tar").union(_which_dirs("gzip"))
    -        env["PATH"] = os.pathsep.join(env["PATH"])
    -
    -    cmd = [sys.executable, "setup.py"] + list(cmd)
    -
    -    #regarding the shell argument, see: http://bugs.python.org/issue8557
    -    try:
    -        proc = _Popen(cmd, stdout=_PIPE, stderr=_PIPE,
    -                      shell=(sys.platform == 'win32'), env=env)
    -
    -        data = proc.communicate()[data_stream]
    -    except OSError:
    -        return 1, ''
    -
    -    #decode the console string if needed
    -    if hasattr(data,  "decode"):
    -        data = data.decode()  # should use the preffered encoding
    -        data = unicodedata.normalize('NFC', data)
    -
    -    #communciate calls wait()
    -    return proc.returncode, data
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/py26compat.py b/Shared/lib/python3.4/site-packages/setuptools/tests/py26compat.py
    deleted file mode 100644
    index d4fb891..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools/tests/py26compat.py
    +++ /dev/null
    @@ -1,14 +0,0 @@
    -import unittest
    -
    -try:
    -	# provide skipIf for Python 2.4-2.6
    -	skipIf = unittest.skipIf
    -except AttributeError:
    -	def skipIf(condition, reason):
    -		def skipper(func):
    -			def skip(*args, **kwargs):
    -				return
    -			if condition:
    -				return skip
    -			return func
    -		return skipper
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/script-with-bom.py b/Shared/lib/python3.4/site-packages/setuptools/tests/script-with-bom.py
    deleted file mode 100644
    index 22dee0d..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools/tests/script-with-bom.py
    +++ /dev/null
    @@ -1,3 +0,0 @@
    -# -*- coding: utf-8 -*-
    -
    -result = 'passed'
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/server.py b/Shared/lib/python3.4/site-packages/setuptools/tests/server.py
    deleted file mode 100644
    index ae2381e..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools/tests/server.py
    +++ /dev/null
    @@ -1,82 +0,0 @@
    -"""Basic http server for tests to simulate PyPI or custom indexes
    -"""
    -import sys
    -import time
    -import threading
    -from setuptools.compat import BaseHTTPRequestHandler
    -from setuptools.compat import (urllib2, URLError, HTTPServer,
    -                               SimpleHTTPRequestHandler)
    -
    -class IndexServer(HTTPServer):
    -    """Basic single-threaded http server simulating a package index
    -
    -    You can use this server in unittest like this::
    -        s = IndexServer()
    -        s.start()
    -        index_url = s.base_url() + 'mytestindex'
    -        # do some test requests to the index
    -        # The index files should be located in setuptools/tests/indexes
    -        s.stop()
    -    """
    -    def __init__(self, server_address=('', 0),
    -            RequestHandlerClass=SimpleHTTPRequestHandler):
    -        HTTPServer.__init__(self, server_address, RequestHandlerClass)
    -        self._run = True
    -
    -    def serve(self):
    -        while self._run:
    -            self.handle_request()
    -
    -    def start(self):
    -        self.thread = threading.Thread(target=self.serve)
    -        self.thread.start()
    -
    -    def stop(self):
    -        "Stop the server"
    -
    -        # Let the server finish the last request and wait for a new one.
    -        time.sleep(0.1)
    -
    -        # self.shutdown is not supported on python < 2.6, so just
    -        #  set _run to false, and make a request, causing it to
    -        #  terminate.
    -        self._run = False
    -        url = 'http://127.0.0.1:%(server_port)s/' % vars(self)
    -        try:
    -            if sys.version_info >= (2, 6):
    -                urllib2.urlopen(url, timeout=5)
    -            else:
    -                urllib2.urlopen(url)
    -        except URLError:
    -            # ignore any errors; all that's important is the request
    -            pass
    -        self.thread.join()
    -        self.socket.close()
    -
    -    def base_url(self):
    -        port = self.server_port
    -        return 'http://127.0.0.1:%s/setuptools/tests/indexes/' % port
    -
    -class RequestRecorder(BaseHTTPRequestHandler):
    -    def do_GET(self):
    -        requests = vars(self.server).setdefault('requests', [])
    -        requests.append(self)
    -        self.send_response(200, 'OK')
    -
    -class MockServer(HTTPServer, threading.Thread):
    -    """
    -    A simple HTTP Server that records the requests made to it.
    -    """
    -    def __init__(self, server_address=('', 0),
    -            RequestHandlerClass=RequestRecorder):
    -        HTTPServer.__init__(self, server_address, RequestHandlerClass)
    -        threading.Thread.__init__(self)
    -        self.setDaemon(True)
    -        self.requests = []
    -
    -    def run(self):
    -        self.serve_forever()
    -
    -    def url(self):
    -        return 'http://localhost:%(server_port)s/' % vars(self)
    -    url = property(url)
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/test_bdist_egg.py b/Shared/lib/python3.4/site-packages/setuptools/tests/test_bdist_egg.py
    deleted file mode 100644
    index cf4bcd1..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools/tests/test_bdist_egg.py
    +++ /dev/null
    @@ -1,72 +0,0 @@
    -"""develop tests
    -"""
    -import os
    -import re
    -import shutil
    -import site
    -import sys
    -import tempfile
    -import unittest
    -
    -from distutils.errors import DistutilsError
    -from setuptools.compat import StringIO
    -from setuptools.command.bdist_egg import bdist_egg
    -from setuptools.command import easy_install as easy_install_pkg
    -from setuptools.dist import Distribution
    -
    -SETUP_PY = """\
    -from setuptools import setup
    -
    -setup(name='foo', py_modules=['hi'])
    -"""
    -
    -class TestDevelopTest(unittest.TestCase):
    -
    -    def setUp(self):
    -        self.dir = tempfile.mkdtemp()
    -        self.old_cwd = os.getcwd()
    -        os.chdir(self.dir)
    -        f = open('setup.py', 'w')
    -        f.write(SETUP_PY)
    -        f.close()
    -        f = open('hi.py', 'w')
    -        f.write('1\n')
    -        f.close()
    -        if sys.version >= "2.6":
    -            self.old_base = site.USER_BASE
    -            site.USER_BASE = tempfile.mkdtemp()
    -            self.old_site = site.USER_SITE
    -            site.USER_SITE = tempfile.mkdtemp()
    -
    -    def tearDown(self):
    -        os.chdir(self.old_cwd)
    -        shutil.rmtree(self.dir)
    -        if sys.version >= "2.6":
    -            shutil.rmtree(site.USER_BASE)
    -            shutil.rmtree(site.USER_SITE)
    -            site.USER_BASE = self.old_base
    -            site.USER_SITE = self.old_site
    -
    -    def test_bdist_egg(self):
    -        dist = Distribution(dict(
    -            script_name='setup.py',
    -            script_args=['bdist_egg'],
    -            name='foo',
    -            py_modules=['hi']
    -            ))
    -        os.makedirs(os.path.join('build', 'src'))
    -        old_stdout = sys.stdout
    -        sys.stdout = o = StringIO()
    -        try:
    -            dist.parse_command_line()
    -            dist.run_commands()
    -        finally:
    -            sys.stdout = old_stdout
    -
    -        # let's see if we got our egg link at the right place
    -        [content] = os.listdir('dist')
    -        self.assertTrue(re.match('foo-0.0.0-py[23].\d.egg$', content))
    -
    -def test_suite():
    -    return unittest.makeSuite(TestDevelopTest)
    -
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/test_build_ext.py b/Shared/lib/python3.4/site-packages/setuptools/tests/test_build_ext.py
    deleted file mode 100644
    index a92e53a..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools/tests/test_build_ext.py
    +++ /dev/null
    @@ -1,19 +0,0 @@
    -"""build_ext tests
    -"""
    -import unittest
    -from distutils.command.build_ext import build_ext as distutils_build_ext
    -from setuptools.command.build_ext import build_ext
    -from setuptools.dist import Distribution
    -
    -class TestBuildExtTest(unittest.TestCase):
    -
    -    def test_get_ext_filename(self):
    -        # setuptools needs to give back the same
    -        # result than distutils, even if the fullname
    -        # is not in ext_map
    -        dist = Distribution()
    -        cmd = build_ext(dist)
    -        cmd.ext_map['foo/bar'] = ''
    -        res = cmd.get_ext_filename('foo')
    -        wanted = distutils_build_ext.get_ext_filename(cmd, 'foo')
    -        assert res == wanted
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/test_develop.py b/Shared/lib/python3.4/site-packages/setuptools/tests/test_develop.py
    deleted file mode 100644
    index 66d182e..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools/tests/test_develop.py
    +++ /dev/null
    @@ -1,122 +0,0 @@
    -"""develop tests
    -"""
    -import os
    -import shutil
    -import site
    -import sys
    -import tempfile
    -import unittest
    -
    -from distutils.errors import DistutilsError
    -from setuptools.command.develop import develop
    -from setuptools.dist import Distribution
    -
    -SETUP_PY = """\
    -from setuptools import setup
    -
    -setup(name='foo',
    -    packages=['foo'],
    -    use_2to3=True,
    -)
    -"""
    -
    -INIT_PY = """print "foo"
    -"""
    -
    -class TestDevelopTest(unittest.TestCase):
    -
    -    def setUp(self):
    -        if sys.version < "2.6" or hasattr(sys, 'real_prefix'):
    -            return
    -
    -        # Directory structure
    -        self.dir = tempfile.mkdtemp()
    -        os.mkdir(os.path.join(self.dir, 'foo'))
    -        # setup.py
    -        setup = os.path.join(self.dir, 'setup.py')
    -        f = open(setup, 'w')
    -        f.write(SETUP_PY)
    -        f.close()
    -        self.old_cwd = os.getcwd()
    -        # foo/__init__.py
    -        init = os.path.join(self.dir, 'foo', '__init__.py')
    -        f = open(init, 'w')
    -        f.write(INIT_PY)
    -        f.close()
    -
    -        os.chdir(self.dir)
    -        self.old_base = site.USER_BASE
    -        site.USER_BASE = tempfile.mkdtemp()
    -        self.old_site = site.USER_SITE
    -        site.USER_SITE = tempfile.mkdtemp()
    -
    -    def tearDown(self):
    -        if sys.version < "2.6" or hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix):
    -            return
    -
    -        os.chdir(self.old_cwd)
    -        shutil.rmtree(self.dir)
    -        shutil.rmtree(site.USER_BASE)
    -        shutil.rmtree(site.USER_SITE)
    -        site.USER_BASE = self.old_base
    -        site.USER_SITE = self.old_site
    -
    -    def test_develop(self):
    -        if sys.version < "2.6" or hasattr(sys, 'real_prefix'):
    -            return
    -        dist = Distribution(
    -            dict(name='foo',
    -                 packages=['foo'],
    -                 use_2to3=True,
    -                 version='0.0',
    -                 ))
    -        dist.script_name = 'setup.py'
    -        cmd = develop(dist)
    -        cmd.user = 1
    -        cmd.ensure_finalized()
    -        cmd.install_dir = site.USER_SITE
    -        cmd.user = 1
    -        old_stdout = sys.stdout
    -        #sys.stdout = StringIO()
    -        try:
    -            cmd.run()
    -        finally:
    -            sys.stdout = old_stdout
    -
    -        # let's see if we got our egg link at the right place
    -        content = os.listdir(site.USER_SITE)
    -        content.sort()
    -        self.assertEqual(content, ['easy-install.pth', 'foo.egg-link'])
    -
    -        # Check that we are using the right code.
    -        egg_link_file = open(os.path.join(site.USER_SITE, 'foo.egg-link'), 'rt')
    -        try:
    -            path = egg_link_file.read().split()[0].strip()
    -        finally:
    -            egg_link_file.close()
    -        init_file = open(os.path.join(path, 'foo', '__init__.py'), 'rt')
    -        try:
    -            init = init_file.read().strip()
    -        finally:
    -            init_file.close()
    -        if sys.version < "3":
    -            self.assertEqual(init, 'print "foo"')
    -        else:
    -            self.assertEqual(init, 'print("foo")')
    -
    -    def notest_develop_with_setup_requires(self):
    -
    -        wanted = ("Could not find suitable distribution for "
    -                  "Requirement.parse('I-DONT-EXIST')")
    -        old_dir = os.getcwd()
    -        os.chdir(self.dir)
    -        try:
    -            try:
    -                Distribution({'setup_requires': ['I_DONT_EXIST']})
    -            except DistutilsError:
    -                e = sys.exc_info()[1]
    -                error = str(e)
    -                if error == wanted:
    -                    pass
    -        finally:
    -            os.chdir(old_dir)
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/test_dist_info.py b/Shared/lib/python3.4/site-packages/setuptools/tests/test_dist_info.py
    deleted file mode 100644
    index a8adb68..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools/tests/test_dist_info.py
    +++ /dev/null
    @@ -1,83 +0,0 @@
    -"""Test .dist-info style distributions.
    -"""
    -import os
    -import shutil
    -import tempfile
    -import unittest
    -import textwrap
    -
    -try:
    -    import ast
    -except:
    -    pass
    -
    -import pkg_resources
    -
    -from setuptools.tests.py26compat import skipIf
    -
    -def DALS(s):
    -    "dedent and left-strip"
    -    return textwrap.dedent(s).lstrip()
    -
    -class TestDistInfo(unittest.TestCase):
    -
    -    def test_distinfo(self):
    -        dists = {}
    -        for d in pkg_resources.find_distributions(self.tmpdir):
    -            dists[d.project_name] = d
    -
    -        assert len(dists) == 2, dists
    -
    -        unversioned = dists['UnversionedDistribution']
    -        versioned = dists['VersionedDistribution']
    -
    -        assert versioned.version == '2.718' # from filename
    -        assert unversioned.version == '0.3' # from METADATA
    -
    -    @skipIf('ast' not in globals(),
    -        "ast is used to test conditional dependencies (Python >= 2.6)")
    -    def test_conditional_dependencies(self):
    -        requires = [pkg_resources.Requirement.parse('splort==4'),
    -                    pkg_resources.Requirement.parse('quux>=1.1')]
    -
    -        for d in pkg_resources.find_distributions(self.tmpdir):
    -            self.assertEqual(d.requires(), requires[:1])
    -            self.assertEqual(d.requires(extras=('baz',)), requires)
    -            self.assertEqual(d.extras, ['baz'])
    -
    -    def setUp(self):
    -        self.tmpdir = tempfile.mkdtemp()
    -        versioned = os.path.join(self.tmpdir,
    -                                 'VersionedDistribution-2.718.dist-info')
    -        os.mkdir(versioned)
    -        metadata_file = open(os.path.join(versioned, 'METADATA'), 'w+')
    -        try:
    -            metadata_file.write(DALS(
    -                """
    -                Metadata-Version: 1.2
    -                Name: VersionedDistribution
    -                Requires-Dist: splort (4)
    -                Provides-Extra: baz
    -                Requires-Dist: quux (>=1.1); extra == 'baz'
    -                """))
    -        finally:
    -            metadata_file.close()
    -        unversioned = os.path.join(self.tmpdir,
    -                                   'UnversionedDistribution.dist-info')
    -        os.mkdir(unversioned)
    -        metadata_file = open(os.path.join(unversioned, 'METADATA'), 'w+')
    -        try:
    -            metadata_file.write(DALS(
    -                """
    -                Metadata-Version: 1.2
    -                Name: UnversionedDistribution
    -                Version: 0.3
    -                Requires-Dist: splort (==4)
    -                Provides-Extra: baz
    -                Requires-Dist: quux (>=1.1); extra == 'baz'
    -                """))
    -        finally:
    -            metadata_file.close()
    -
    -    def tearDown(self):
    -        shutil.rmtree(self.tmpdir)
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/test_easy_install.py b/Shared/lib/python3.4/site-packages/setuptools/tests/test_easy_install.py
    deleted file mode 100644
    index a443095..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools/tests/test_easy_install.py
    +++ /dev/null
    @@ -1,462 +0,0 @@
    -"""Easy install Tests
    -"""
    -import sys
    -import os
    -import shutil
    -import tempfile
    -import unittest
    -import site
    -import contextlib
    -import textwrap
    -import tarfile
    -import logging
    -import distutils.core
    -
    -from setuptools.compat import StringIO, BytesIO, urlparse
    -from setuptools.sandbox import run_setup, SandboxViolation
    -from setuptools.command.easy_install import (
    -    easy_install, fix_jython_executable, get_script_args, nt_quote_arg)
    -from setuptools.command.easy_install import PthDistributions
    -from setuptools.command import easy_install as easy_install_pkg
    -from setuptools.dist import Distribution
    -from pkg_resources import working_set, VersionConflict
    -from pkg_resources import Distribution as PRDistribution
    -import setuptools.tests.server
    -import pkg_resources
    -from .py26compat import skipIf
    -
    -class FakeDist(object):
    -    def get_entry_map(self, group):
    -        if group != 'console_scripts':
    -            return {}
    -        return {'name': 'ep'}
    -
    -    def as_requirement(self):
    -        return 'spec'
    -
    -WANTED = """\
    -#!%s
    -# EASY-INSTALL-ENTRY-SCRIPT: 'spec','console_scripts','name'
    -__requires__ = 'spec'
    -import sys
    -from pkg_resources import load_entry_point
    -
    -if __name__ == '__main__':
    -    sys.exit(
    -        load_entry_point('spec', 'console_scripts', 'name')()
    -    )
    -""" % nt_quote_arg(fix_jython_executable(sys.executable, ""))
    -
    -SETUP_PY = """\
    -from setuptools import setup
    -
    -setup(name='foo')
    -"""
    -
    -class TestEasyInstallTest(unittest.TestCase):
    -
    -    def test_install_site_py(self):
    -        dist = Distribution()
    -        cmd = easy_install(dist)
    -        cmd.sitepy_installed = False
    -        cmd.install_dir = tempfile.mkdtemp()
    -        try:
    -            cmd.install_site_py()
    -            sitepy = os.path.join(cmd.install_dir, 'site.py')
    -            self.assertTrue(os.path.exists(sitepy))
    -        finally:
    -            shutil.rmtree(cmd.install_dir)
    -
    -    def test_get_script_args(self):
    -        dist = FakeDist()
    -
    -        old_platform = sys.platform
    -        try:
    -            name, script = [i for i in next(get_script_args(dist))][0:2]
    -        finally:
    -            sys.platform = old_platform
    -
    -        self.assertEqual(script, WANTED)
    -
    -    def test_no_find_links(self):
    -        # new option '--no-find-links', that blocks find-links added at
    -        # the project level
    -        dist = Distribution()
    -        cmd = easy_install(dist)
    -        cmd.check_pth_processing = lambda: True
    -        cmd.no_find_links = True
    -        cmd.find_links = ['link1', 'link2']
    -        cmd.install_dir = os.path.join(tempfile.mkdtemp(), 'ok')
    -        cmd.args = ['ok']
    -        cmd.ensure_finalized()
    -        self.assertEqual(cmd.package_index.scanned_urls, {})
    -
    -        # let's try without it (default behavior)
    -        cmd = easy_install(dist)
    -        cmd.check_pth_processing = lambda: True
    -        cmd.find_links = ['link1', 'link2']
    -        cmd.install_dir = os.path.join(tempfile.mkdtemp(), 'ok')
    -        cmd.args = ['ok']
    -        cmd.ensure_finalized()
    -        keys = sorted(cmd.package_index.scanned_urls.keys())
    -        self.assertEqual(keys, ['link1', 'link2'])
    -
    -
    -class TestPTHFileWriter(unittest.TestCase):
    -    def test_add_from_cwd_site_sets_dirty(self):
    -        '''a pth file manager should set dirty
    -        if a distribution is in site but also the cwd
    -        '''
    -        pth = PthDistributions('does-not_exist', [os.getcwd()])
    -        self.assertTrue(not pth.dirty)
    -        pth.add(PRDistribution(os.getcwd()))
    -        self.assertTrue(pth.dirty)
    -
    -    def test_add_from_site_is_ignored(self):
    -        if os.name != 'nt':
    -            location = '/test/location/does-not-have-to-exist'
    -        else:
    -            location = 'c:\\does_not_exist'
    -        pth = PthDistributions('does-not_exist', [location, ])
    -        self.assertTrue(not pth.dirty)
    -        pth.add(PRDistribution(location))
    -        self.assertTrue(not pth.dirty)
    -
    -
    -class TestUserInstallTest(unittest.TestCase):
    -
    -    def setUp(self):
    -        self.dir = tempfile.mkdtemp()
    -        setup = os.path.join(self.dir, 'setup.py')
    -        f = open(setup, 'w')
    -        f.write(SETUP_PY)
    -        f.close()
    -        self.old_cwd = os.getcwd()
    -        os.chdir(self.dir)
    -
    -        self.old_enable_site = site.ENABLE_USER_SITE
    -        self.old_file = easy_install_pkg.__file__
    -        self.old_base = site.USER_BASE
    -        site.USER_BASE = tempfile.mkdtemp()
    -        self.old_site = site.USER_SITE
    -        site.USER_SITE = tempfile.mkdtemp()
    -        easy_install_pkg.__file__ = site.USER_SITE
    -
    -    def tearDown(self):
    -        os.chdir(self.old_cwd)
    -        shutil.rmtree(self.dir)
    -
    -        shutil.rmtree(site.USER_BASE)
    -        shutil.rmtree(site.USER_SITE)
    -        site.USER_BASE = self.old_base
    -        site.USER_SITE = self.old_site
    -        site.ENABLE_USER_SITE = self.old_enable_site
    -        easy_install_pkg.__file__ = self.old_file
    -
    -    def test_user_install_implied(self):
    -        site.ENABLE_USER_SITE = True # disabled sometimes
    -        #XXX: replace with something meaningfull
    -        dist = Distribution()
    -        dist.script_name = 'setup.py'
    -        cmd = easy_install(dist)
    -        cmd.args = ['py']
    -        cmd.ensure_finalized()
    -        self.assertTrue(cmd.user, 'user should be implied')
    -
    -    def test_multiproc_atexit(self):
    -        try:
    -            __import__('multiprocessing')
    -        except ImportError:
    -            # skip the test if multiprocessing is not available
    -            return
    -
    -        log = logging.getLogger('test_easy_install')
    -        logging.basicConfig(level=logging.INFO, stream=sys.stderr)
    -        log.info('this should not break')
    -
    -    def test_user_install_not_implied_without_usersite_enabled(self):
    -        site.ENABLE_USER_SITE = False # usually enabled
    -        #XXX: replace with something meaningfull
    -        dist = Distribution()
    -        dist.script_name = 'setup.py'
    -        cmd = easy_install(dist)
    -        cmd.args = ['py']
    -        cmd.initialize_options()
    -        self.assertFalse(cmd.user, 'NOT user should be implied')
    -
    -    def test_local_index(self):
    -        # make sure the local index is used
    -        # when easy_install looks for installed
    -        # packages
    -        new_location = tempfile.mkdtemp()
    -        target = tempfile.mkdtemp()
    -        egg_file = os.path.join(new_location, 'foo-1.0.egg-info')
    -        f = open(egg_file, 'w')
    -        try:
    -            f.write('Name: foo\n')
    -        finally:
    -            f.close()
    -
    -        sys.path.append(target)
    -        old_ppath = os.environ.get('PYTHONPATH')
    -        os.environ['PYTHONPATH'] = os.path.pathsep.join(sys.path)
    -        try:
    -            dist = Distribution()
    -            dist.script_name = 'setup.py'
    -            cmd = easy_install(dist)
    -            cmd.install_dir = target
    -            cmd.args = ['foo']
    -            cmd.ensure_finalized()
    -            cmd.local_index.scan([new_location])
    -            res = cmd.easy_install('foo')
    -            actual = os.path.normcase(os.path.realpath(res.location))
    -            expected = os.path.normcase(os.path.realpath(new_location))
    -            self.assertEqual(actual, expected)
    -        finally:
    -            sys.path.remove(target)
    -            for basedir in [new_location, target, ]:
    -                if not os.path.exists(basedir) or not os.path.isdir(basedir):
    -                    continue
    -                try:
    -                    shutil.rmtree(basedir)
    -                except:
    -                    pass
    -            if old_ppath is not None:
    -                os.environ['PYTHONPATH'] = old_ppath
    -            else:
    -                del os.environ['PYTHONPATH']
    -
    -    def test_setup_requires(self):
    -        """Regression test for Distribute issue #318
    -
    -        Ensure that a package with setup_requires can be installed when
    -        setuptools is installed in the user site-packages without causing a
    -        SandboxViolation.
    -        """
    -
    -        test_pkg = create_setup_requires_package(self.dir)
    -        test_setup_py = os.path.join(test_pkg, 'setup.py')
    -
    -        try:
    -            with quiet_context():
    -                with reset_setup_stop_context():
    -                    run_setup(test_setup_py, ['install'])
    -        except SandboxViolation:
    -            self.fail('Installation caused SandboxViolation')
    -        except IndexError:
    -            # Test fails in some cases due to bugs in Python
    -            # See https://bitbucket.org/pypa/setuptools/issue/201
    -            pass
    -
    -
    -class TestSetupRequires(unittest.TestCase):
    -
    -    def test_setup_requires_honors_fetch_params(self):
    -        """
    -        When easy_install installs a source distribution which specifies
    -        setup_requires, it should honor the fetch parameters (such as
    -        allow-hosts, index-url, and find-links).
    -        """
    -        # set up a server which will simulate an alternate package index.
    -        p_index = setuptools.tests.server.MockServer()
    -        p_index.start()
    -        netloc = 1
    -        p_index_loc = urlparse(p_index.url)[netloc]
    -        if p_index_loc.endswith(':0'):
    -            # Some platforms (Jython) don't find a port to which to bind,
    -            #  so skip this test for them.
    -            return
    -        with quiet_context():
    -            # create an sdist that has a build-time dependency.
    -            with TestSetupRequires.create_sdist() as dist_file:
    -                with tempdir_context() as temp_install_dir:
    -                    with environment_context(PYTHONPATH=temp_install_dir):
    -                        ei_params = ['--index-url', p_index.url,
    -                            '--allow-hosts', p_index_loc,
    -                            '--exclude-scripts', '--install-dir', temp_install_dir,
    -                            dist_file]
    -                        with reset_setup_stop_context():
    -                            with argv_context(['easy_install']):
    -                                # attempt to install the dist. It should fail because
    -                                #  it doesn't exist.
    -                                self.assertRaises(SystemExit,
    -                                    easy_install_pkg.main, ei_params)
    -        # there should have been two or three requests to the server
    -        #  (three happens on Python 3.3a)
    -        self.assertTrue(2 <= len(p_index.requests) <= 3)
    -        self.assertEqual(p_index.requests[0].path, '/does-not-exist/')
    -
    -    @staticmethod
    -    @contextlib.contextmanager
    -    def create_sdist():
    -        """
    -        Return an sdist with a setup_requires dependency (of something that
    -        doesn't exist)
    -        """
    -        with tempdir_context() as dir:
    -            dist_path = os.path.join(dir, 'setuptools-test-fetcher-1.0.tar.gz')
    -            make_trivial_sdist(
    -                dist_path,
    -                textwrap.dedent("""
    -                    import setuptools
    -                    setuptools.setup(
    -                        name="setuptools-test-fetcher",
    -                        version="1.0",
    -                        setup_requires = ['does-not-exist'],
    -                    )
    -                """).lstrip())
    -            yield dist_path
    -
    -    def test_setup_requires_overrides_version_conflict(self):
    -        """
    -        Regression test for issue #323.
    -
    -        Ensures that a distribution's setup_requires requirements can still be
    -        installed and used locally even if a conflicting version of that
    -        requirement is already on the path.
    -        """
    -
    -        pr_state = pkg_resources.__getstate__()
    -        fake_dist = PRDistribution('does-not-matter', project_name='foobar',
    -                                   version='0.0')
    -        working_set.add(fake_dist)
    -
    -        try:
    -            with tempdir_context() as temp_dir:
    -                test_pkg = create_setup_requires_package(temp_dir)
    -                test_setup_py = os.path.join(test_pkg, 'setup.py')
    -                with quiet_context() as (stdout, stderr):
    -                    with reset_setup_stop_context():
    -                        try:
    -                            # Don't even need to install the package, just
    -                            # running the setup.py at all is sufficient
    -                            run_setup(test_setup_py, ['--name'])
    -                        except VersionConflict:
    -                            self.fail('Installing setup.py requirements '
    -                                'caused a VersionConflict')
    -
    -                lines = stdout.readlines()
    -                self.assertTrue(len(lines) > 0)
    -                self.assertTrue(lines[-1].strip(), 'test_pkg')
    -        finally:
    -            pkg_resources.__setstate__(pr_state)
    -
    -
    -def create_setup_requires_package(path):
    -    """Creates a source tree under path for a trivial test package that has a
    -    single requirement in setup_requires--a tarball for that requirement is
    -    also created and added to the dependency_links argument.
    -    """
    -
    -    test_setup_attrs = {
    -        'name': 'test_pkg', 'version': '0.0',
    -        'setup_requires': ['foobar==0.1'],
    -        'dependency_links': [os.path.abspath(path)]
    -    }
    -
    -    test_pkg = os.path.join(path, 'test_pkg')
    -    test_setup_py = os.path.join(test_pkg, 'setup.py')
    -    os.mkdir(test_pkg)
    -
    -    f = open(test_setup_py, 'w')
    -    f.write(textwrap.dedent("""\
    -        import setuptools
    -        setuptools.setup(**%r)
    -    """ % test_setup_attrs))
    -    f.close()
    -
    -    foobar_path = os.path.join(path, 'foobar-0.1.tar.gz')
    -    make_trivial_sdist(
    -        foobar_path,
    -        textwrap.dedent("""\
    -            import setuptools
    -            setuptools.setup(
    -                name='foobar',
    -                version='0.1'
    -            )
    -        """))
    -
    -    return test_pkg
    -
    -
    -def make_trivial_sdist(dist_path, setup_py):
    -    """Create a simple sdist tarball at dist_path, containing just a
    -    setup.py, the contents of which are provided by the setup_py string.
    -    """
    -
    -    setup_py_file = tarfile.TarInfo(name='setup.py')
    -    try:
    -        # Python 3 (StringIO gets converted to io module)
    -        MemFile = BytesIO
    -    except AttributeError:
    -        MemFile = StringIO
    -    setup_py_bytes = MemFile(setup_py.encode('utf-8'))
    -    setup_py_file.size = len(setup_py_bytes.getvalue())
    -    dist = tarfile.open(dist_path, 'w:gz')
    -    try:
    -        dist.addfile(setup_py_file, fileobj=setup_py_bytes)
    -    finally:
    -        dist.close()
    -
    -
    -@contextlib.contextmanager
    -def tempdir_context(cd=lambda dir:None):
    -    temp_dir = tempfile.mkdtemp()
    -    orig_dir = os.getcwd()
    -    try:
    -        cd(temp_dir)
    -        yield temp_dir
    -    finally:
    -        cd(orig_dir)
    -        shutil.rmtree(temp_dir)
    -
    -@contextlib.contextmanager
    -def environment_context(**updates):
    -    old_env = os.environ.copy()
    -    os.environ.update(updates)
    -    try:
    -        yield
    -    finally:
    -        for key in updates:
    -            del os.environ[key]
    -        os.environ.update(old_env)
    -
    -@contextlib.contextmanager
    -def argv_context(repl):
    -    old_argv = sys.argv[:]
    -    sys.argv[:] = repl
    -    yield
    -    sys.argv[:] = old_argv
    -
    -@contextlib.contextmanager
    -def reset_setup_stop_context():
    -    """
    -    When the setuptools tests are run using setup.py test, and then
    -    one wants to invoke another setup() command (such as easy_install)
    -    within those tests, it's necessary to reset the global variable
    -    in distutils.core so that the setup() command will run naturally.
    -    """
    -    setup_stop_after = distutils.core._setup_stop_after
    -    distutils.core._setup_stop_after = None
    -    yield
    -    distutils.core._setup_stop_after = setup_stop_after
    -
    -
    -@contextlib.contextmanager
    -def quiet_context():
    -    """
    -    Redirect stdout/stderr to StringIO objects to prevent console output from
    -    distutils commands.
    -    """
    -
    -    old_stdout = sys.stdout
    -    old_stderr = sys.stderr
    -    new_stdout = sys.stdout = StringIO()
    -    new_stderr = sys.stderr = StringIO()
    -    try:
    -        yield new_stdout, new_stderr
    -    finally:
    -        new_stdout.seek(0)
    -        new_stderr.seek(0)
    -        sys.stdout = old_stdout
    -        sys.stderr = old_stderr
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/test_egg_info.py b/Shared/lib/python3.4/site-packages/setuptools/tests/test_egg_info.py
    deleted file mode 100644
    index 7531e37..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools/tests/test_egg_info.py
    +++ /dev/null
    @@ -1,210 +0,0 @@
    -
    -import os
    -import sys
    -import tempfile
    -import shutil
    -import unittest
    -
    -import pkg_resources
    -import warnings
    -from setuptools.command import egg_info
    -from setuptools import svn_utils
    -from setuptools.tests import environment, test_svn
    -from setuptools.tests.py26compat import skipIf
    -
    -ENTRIES_V10 = pkg_resources.resource_string(__name__, 'entries-v10')
    -"An entries file generated with svn 1.6.17 against the legacy Setuptools repo"
    -
    -
    -class TestEggInfo(unittest.TestCase):
    -
    -    def setUp(self):
    -        self.test_dir = tempfile.mkdtemp()
    -        os.mkdir(os.path.join(self.test_dir, '.svn'))
    -
    -        self.old_cwd = os.getcwd()
    -        os.chdir(self.test_dir)
    -
    -    def tearDown(self):
    -        os.chdir(self.old_cwd)
    -        shutil.rmtree(self.test_dir)
    -
    -    def _write_entries(self, entries):
    -        fn = os.path.join(self.test_dir, '.svn', 'entries')
    -        entries_f = open(fn, 'wb')
    -        entries_f.write(entries)
    -        entries_f.close()
    -   
    -    @skipIf(not test_svn._svn_check, "No SVN to text, in the first place")
    -    def test_version_10_format(self):
    -        """
    -        """
    -        #keeping this set for 1.6 is a good check on the get_svn_revision
    -        #to ensure I return using svnversion what would had been returned
    -        version_str = svn_utils.SvnInfo.get_svn_version()
    -        version = [int(x) for x in version_str.split('.')[:2]]
    -        if version != [1, 6]:
    -            if hasattr(self, 'skipTest'):
    -                self.skipTest('')
    -            else:
    -                sys.stderr.write('\n   Skipping due to SVN Version\n')
    -                return
    -
    -        self._write_entries(ENTRIES_V10)
    -        rev = egg_info.egg_info.get_svn_revision()
    -        self.assertEqual(rev, '89000')
    -
    -    def test_version_10_format_legacy_parser(self):
    -        """
    -        """
    -        path_variable = None
    -        for env in os.environ:
    -            if env.lower() == 'path':
    -                path_variable = env
    -
    -        if path_variable:
    -            old_path = os.environ[path_variable]
    -            os.environ[path_variable] = ''
    -        #catch_warnings not available until py26
    -        warning_filters = warnings.filters
    -        warnings.filters = warning_filters[:]
    -        try:
    -            warnings.simplefilter("ignore", DeprecationWarning)
    -            self._write_entries(ENTRIES_V10)
    -            rev = egg_info.egg_info.get_svn_revision()
    -        finally:
    -            #restore the warning filters
    -            warnings.filters = warning_filters
    -            #restore the os path
    -            if path_variable:
    -                os.environ[path_variable] = old_path
    -
    -        self.assertEqual(rev, '89000')
    -
    -DUMMY_SOURCE_TXT = """CHANGES.txt
    -CONTRIBUTORS.txt
    -HISTORY.txt
    -LICENSE
    -MANIFEST.in
    -README.txt
    -setup.py
    -dummy/__init__.py
    -dummy/test.txt
    -dummy.egg-info/PKG-INFO
    -dummy.egg-info/SOURCES.txt
    -dummy.egg-info/dependency_links.txt
    -dummy.egg-info/top_level.txt"""
    -
    -
    -class TestSvnDummy(environment.ZippedEnvironment):
    -
    -    def setUp(self):
    -        version = svn_utils.SvnInfo.get_svn_version()
    -        if not version:  # None or Empty
    -            return None
    -
    -        self.base_version = tuple([int(x) for x in version.split('.')][:2])
    -
    -        if not self.base_version:
    -            raise ValueError('No SVN tools installed')
    -        elif self.base_version < (1, 3):
    -            raise ValueError('Insufficient SVN Version %s' % version)
    -        elif self.base_version >= (1, 9):
    -            #trying the latest version
    -            self.base_version = (1, 8)
    -
    -        self.dataname = "dummy%i%i" % self.base_version
    -        self.datafile = os.path.join('setuptools', 'tests',
    -                                     'svn_data', self.dataname + ".zip")
    -        super(TestSvnDummy, self).setUp()
    -
    -    @skipIf(not test_svn._svn_check, "No SVN to text, in the first place")
    -    def test_sources(self):
    -        code, data = environment.run_setup_py(["sdist"],
    -                                              pypath=self.old_cwd,
    -                                              data_stream=1)
    -        if code:
    -            raise AssertionError(data)
    -
    -        sources = os.path.join('dummy.egg-info', 'SOURCES.txt')
    -        infile = open(sources, 'r')
    -        try:
    -            read_contents = infile.read()
    -        finally:
    -            infile.close()
    -            del infile
    -
    -        self.assertEqual(DUMMY_SOURCE_TXT, read_contents)
    -
    -        return data
    -
    -    @skipIf(not test_svn._svn_check, "No SVN to text, in the first place")
    -    def test_svn_tags(self):
    -        code, data = environment.run_setup_py(["egg_info", 
    -                                               "--tag-svn-revision"],
    -                                              pypath=self.old_cwd,
    -                                              data_stream=1)
    -        if code:
    -            raise AssertionError(data)
    -
    -        pkginfo = os.path.join('dummy.egg-info', 'PKG-INFO')
    -        infile = open(pkginfo, 'r')
    -        try:
    -            read_contents = infile.readlines()
    -        finally:
    -            infile.close()
    -            del infile
    -
    -        self.assertTrue("Version: 0.1.1-r1\n" in read_contents)
    -
    -    @skipIf(not test_svn._svn_check, "No SVN to text, in the first place")
    -    def test_no_tags(self):
    -        code, data = environment.run_setup_py(["egg_info"],
    -                                              pypath=self.old_cwd,
    -                                              data_stream=1)
    -        if code:
    -            raise AssertionError(data)
    -
    -        pkginfo = os.path.join('dummy.egg-info', 'PKG-INFO')
    -        infile = open(pkginfo, 'r')
    -        try:
    -            read_contents = infile.readlines()
    -        finally:
    -            infile.close()
    -            del infile
    -
    -        self.assertTrue("Version: 0.1.1\n" in read_contents)
    -
    -
    -class TestSvnDummyLegacy(environment.ZippedEnvironment):
    -
    -    def setUp(self):
    -        self.base_version = (1, 6)
    -        self.dataname = "dummy%i%i" % self.base_version
    -        self.datafile = os.path.join('setuptools', 'tests',
    -                                     'svn_data', self.dataname + ".zip")
    -        super(TestSvnDummyLegacy, self).setUp()
    -
    -    def test_sources(self):
    -        code, data = environment.run_setup_py(["sdist"],
    -                                              pypath=self.old_cwd,
    -                                              path="",
    -                                              data_stream=1)
    -        if code:
    -            raise AssertionError(data)
    -
    -        sources = os.path.join('dummy.egg-info', 'SOURCES.txt')
    -        infile = open(sources, 'r')
    -        try:
    -            read_contents = infile.read()
    -        finally:
    -            infile.close()
    -            del infile
    -
    -        self.assertEqual(DUMMY_SOURCE_TXT, read_contents)
    -
    -        return data
    -
    -
    -def test_suite():
    -    return unittest.defaultTestLoader.loadTestsFromName(__name__)
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/test_find_packages.py b/Shared/lib/python3.4/site-packages/setuptools/tests/test_find_packages.py
    deleted file mode 100644
    index fe39072..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools/tests/test_find_packages.py
    +++ /dev/null
    @@ -1,170 +0,0 @@
    -"""Tests for setuptools.find_packages()."""
    -import os
    -import sys
    -import shutil
    -import tempfile
    -import unittest
    -import platform
    -
    -import setuptools
    -from setuptools import find_packages
    -from setuptools.tests.py26compat import skipIf
    -
    -find_420_packages = setuptools.PEP420PackageFinder.find
    -
    -# modeled after CPython's test.support.can_symlink
    -def can_symlink():
    -    TESTFN = tempfile.mktemp()
    -    symlink_path = TESTFN + "can_symlink"
    -    try:
    -        os.symlink(TESTFN, symlink_path)
    -        can = True
    -    except (OSError, NotImplementedError, AttributeError):
    -        can = False
    -    else:
    -        os.remove(symlink_path)
    -    globals().update(can_symlink=lambda: can)
    -    return can
    -
    -def has_symlink():
    -    bad_symlink = (
    -        # Windows symlink directory detection is broken on Python 3.2
    -        platform.system() == 'Windows' and sys.version_info[:2] == (3,2)
    -    )
    -    return can_symlink() and not bad_symlink
    -
    -class TestFindPackages(unittest.TestCase):
    -
    -    def setUp(self):
    -        self.dist_dir = tempfile.mkdtemp()
    -        self._make_pkg_structure()
    -
    -    def tearDown(self):
    -        shutil.rmtree(self.dist_dir)
    -
    -    def _make_pkg_structure(self):
    -        """Make basic package structure.
    -
    -        dist/
    -            docs/
    -                conf.py
    -            pkg/
    -                __pycache__/
    -                nspkg/
    -                    mod.py
    -                subpkg/
    -                    assets/
    -                        asset
    -                    __init__.py
    -            setup.py
    -
    -        """
    -        self.docs_dir = self._mkdir('docs', self.dist_dir)
    -        self._touch('conf.py', self.docs_dir)
    -        self.pkg_dir = self._mkdir('pkg', self.dist_dir)
    -        self._mkdir('__pycache__', self.pkg_dir)
    -        self.ns_pkg_dir = self._mkdir('nspkg', self.pkg_dir)
    -        self._touch('mod.py', self.ns_pkg_dir)
    -        self.sub_pkg_dir = self._mkdir('subpkg', self.pkg_dir)
    -        self.asset_dir = self._mkdir('assets', self.sub_pkg_dir)
    -        self._touch('asset', self.asset_dir)
    -        self._touch('__init__.py', self.sub_pkg_dir)
    -        self._touch('setup.py', self.dist_dir)
    -
    -    def _mkdir(self, path, parent_dir=None):
    -        if parent_dir:
    -            path = os.path.join(parent_dir, path)
    -        os.mkdir(path)
    -        return path
    -
    -    def _touch(self, path, dir_=None):
    -        if dir_:
    -            path = os.path.join(dir_, path)
    -        fp = open(path, 'w')
    -        fp.close()
    -        return path
    -
    -    def test_regular_package(self):
    -        self._touch('__init__.py', self.pkg_dir)
    -        packages = find_packages(self.dist_dir)
    -        self.assertEqual(packages, ['pkg', 'pkg.subpkg'])
    -
    -    def test_exclude(self):
    -        self._touch('__init__.py', self.pkg_dir)
    -        packages = find_packages(self.dist_dir, exclude=('pkg.*',))
    -        assert packages == ['pkg']
    -
    -    def test_include_excludes_other(self):
    -        """
    -        If include is specified, other packages should be excluded.
    -        """
    -        self._touch('__init__.py', self.pkg_dir)
    -        alt_dir = self._mkdir('other_pkg', self.dist_dir)
    -        self._touch('__init__.py', alt_dir)
    -        packages = find_packages(self.dist_dir, include=['other_pkg'])
    -        self.assertEqual(packages, ['other_pkg'])
    -
    -    def test_dir_with_dot_is_skipped(self):
    -        shutil.rmtree(os.path.join(self.dist_dir, 'pkg/subpkg/assets'))
    -        data_dir = self._mkdir('some.data', self.pkg_dir)
    -        self._touch('__init__.py', data_dir)
    -        self._touch('file.dat', data_dir)
    -        packages = find_packages(self.dist_dir)
    -        self.assertTrue('pkg.some.data' not in packages)
    -
    -    def test_dir_with_packages_in_subdir_is_excluded(self):
    -        """
    -        Ensure that a package in a non-package such as build/pkg/__init__.py
    -        is excluded.
    -        """
    -        build_dir = self._mkdir('build', self.dist_dir)
    -        build_pkg_dir = self._mkdir('pkg', build_dir)
    -        self._touch('__init__.py', build_pkg_dir)
    -        packages = find_packages(self.dist_dir)
    -        self.assertTrue('build.pkg' not in packages)
    -
    -    @skipIf(not has_symlink(), 'Symlink support required')
    -    def test_symlinked_packages_are_included(self):
    -        """
    -        A symbolically-linked directory should be treated like any other
    -        directory when matched as a package.
    -
    -        Create a link from lpkg -> pkg.
    -        """
    -        self._touch('__init__.py', self.pkg_dir)
    -        linked_pkg = os.path.join(self.dist_dir, 'lpkg')
    -        os.symlink('pkg', linked_pkg)
    -        assert os.path.isdir(linked_pkg)
    -        packages = find_packages(self.dist_dir)
    -        self.assertTrue('lpkg' in packages)
    -
    -    def _assert_packages(self, actual, expected):
    -        self.assertEqual(set(actual), set(expected))
    -
    -    def test_pep420_ns_package(self):
    -        packages = find_420_packages(
    -            self.dist_dir, include=['pkg*'], exclude=['pkg.subpkg.assets'])
    -        self._assert_packages(packages, ['pkg', 'pkg.nspkg', 'pkg.subpkg'])
    -
    -    def test_pep420_ns_package_no_includes(self):
    -        packages = find_420_packages(
    -            self.dist_dir, exclude=['pkg.subpkg.assets'])
    -        self._assert_packages(packages, ['docs', 'pkg', 'pkg.nspkg', 'pkg.subpkg'])
    -
    -    def test_pep420_ns_package_no_includes_or_excludes(self):
    -        packages = find_420_packages(self.dist_dir)
    -        expected = [
    -            'docs', 'pkg', 'pkg.nspkg', 'pkg.subpkg', 'pkg.subpkg.assets']
    -        self._assert_packages(packages, expected)
    -
    -    def test_regular_package_with_nested_pep420_ns_packages(self):
    -        self._touch('__init__.py', self.pkg_dir)
    -        packages = find_420_packages(
    -            self.dist_dir, exclude=['docs', 'pkg.subpkg.assets'])
    -        self._assert_packages(packages, ['pkg', 'pkg.nspkg', 'pkg.subpkg'])
    -
    -    def test_pep420_ns_package_no_non_package_dirs(self):
    -        shutil.rmtree(self.docs_dir)
    -        shutil.rmtree(os.path.join(self.dist_dir, 'pkg/subpkg/assets'))
    -        packages = find_420_packages(self.dist_dir)
    -        self._assert_packages(packages, ['pkg', 'pkg.nspkg', 'pkg.subpkg'])
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/test_integration.py b/Shared/lib/python3.4/site-packages/setuptools/tests/test_integration.py
    deleted file mode 100644
    index 8d6c1e5..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools/tests/test_integration.py
    +++ /dev/null
    @@ -1,83 +0,0 @@
    -"""Run some integration tests.
    -
    -Try to install a few packages.
    -"""
    -
    -import glob
    -import os
    -import sys
    -
    -import pytest
    -
    -from setuptools.command.easy_install import easy_install
    -from setuptools.command import easy_install as easy_install_pkg
    -from setuptools.dist import Distribution
    -
    -
    -@pytest.fixture
    -def install_context(request, tmpdir, monkeypatch):
    -    """Fixture to set up temporary installation directory.
    -    """
    -    # Save old values so we can restore them.
    -    new_cwd = tmpdir.mkdir('cwd')
    -    user_base = tmpdir.mkdir('user_base')
    -    user_site = tmpdir.mkdir('user_site')
    -    install_dir = tmpdir.mkdir('install_dir')
    -
    -    def fin():
    -        # undo the monkeypatch, particularly needed under
    -        # windows because of kept handle on cwd
    -        monkeypatch.undo() 
    -        new_cwd.remove()
    -        user_base.remove()
    -        user_site.remove()
    -        install_dir.remove()
    -    request.addfinalizer(fin)
    -
    -    # Change the environment and site settings to control where the
    -    # files are installed and ensure we do not overwrite anything.
    -    monkeypatch.chdir(new_cwd)
    -    monkeypatch.setattr(easy_install_pkg, '__file__', user_site.strpath)
    -    monkeypatch.setattr('site.USER_BASE', user_base.strpath)
    -    monkeypatch.setattr('site.USER_SITE', user_site.strpath)
    -    monkeypatch.setattr('sys.path', sys.path + [install_dir.strpath])
    -    monkeypatch.setenv('PYTHONPATH', os.path.pathsep.join(sys.path))
    -
    -    # Set up the command for performing the installation.
    -    dist = Distribution()
    -    cmd = easy_install(dist)
    -    cmd.install_dir = install_dir.strpath
    -    return cmd
    -
    -
    -def _install_one(requirement, cmd, pkgname, modulename):
    -    cmd.args = [requirement]
    -    cmd.ensure_finalized()
    -    cmd.run()
    -    target = cmd.install_dir
    -    dest_path = glob.glob(os.path.join(target, pkgname + '*.egg'))
    -    assert dest_path
    -    assert os.path.exists(os.path.join(dest_path[0], pkgname, modulename))
    -
    -
    -def test_stevedore(install_context):
    -    _install_one('stevedore', install_context,
    -                 'stevedore', 'extension.py')
    -
    -
    -@pytest.mark.xfail
    -def test_virtualenvwrapper(install_context):
    -    _install_one('virtualenvwrapper', install_context,
    -                 'virtualenvwrapper', 'hook_loader.py')
    -
    -
    -@pytest.mark.xfail
    -def test_pbr(install_context):
    -    _install_one('pbr', install_context,
    -                 'pbr', 'core.py')
    -
    -
    -@pytest.mark.xfail
    -def test_python_novaclient(install_context):
    -    _install_one('python-novaclient', install_context,
    -                 'novaclient', 'base.py')
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/test_markerlib.py b/Shared/lib/python3.4/site-packages/setuptools/tests/test_markerlib.py
    deleted file mode 100644
    index dae71cb..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools/tests/test_markerlib.py
    +++ /dev/null
    @@ -1,68 +0,0 @@
    -import os
    -import unittest
    -from setuptools.tests.py26compat import skipIf
    -
    -try:
    -    import ast
    -except ImportError:
    -    pass
    -
    -class TestMarkerlib(unittest.TestCase):
    -
    -    @skipIf('ast' not in globals(),
    -        "ast not available (Python < 2.6?)")
    -    def test_markers(self):
    -        from _markerlib import interpret, default_environment, compile
    -        
    -        os_name = os.name
    -        
    -        self.assertTrue(interpret(""))
    -        
    -        self.assertTrue(interpret("os.name != 'buuuu'"))
    -        self.assertTrue(interpret("os_name != 'buuuu'"))
    -        self.assertTrue(interpret("python_version > '1.0'"))
    -        self.assertTrue(interpret("python_version < '5.0'"))
    -        self.assertTrue(interpret("python_version <= '5.0'"))
    -        self.assertTrue(interpret("python_version >= '1.0'"))
    -        self.assertTrue(interpret("'%s' in os.name" % os_name))
    -        self.assertTrue(interpret("'%s' in os_name" % os_name))
    -        self.assertTrue(interpret("'buuuu' not in os.name"))
    -        
    -        self.assertFalse(interpret("os.name == 'buuuu'"))
    -        self.assertFalse(interpret("os_name == 'buuuu'"))
    -        self.assertFalse(interpret("python_version < '1.0'"))
    -        self.assertFalse(interpret("python_version > '5.0'"))
    -        self.assertFalse(interpret("python_version >= '5.0'"))
    -        self.assertFalse(interpret("python_version <= '1.0'"))
    -        self.assertFalse(interpret("'%s' not in os.name" % os_name))
    -        self.assertFalse(interpret("'buuuu' in os.name and python_version >= '5.0'"))    
    -        self.assertFalse(interpret("'buuuu' in os_name and python_version >= '5.0'"))    
    -        
    -        environment = default_environment()
    -        environment['extra'] = 'test'
    -        self.assertTrue(interpret("extra == 'test'", environment))
    -        self.assertFalse(interpret("extra == 'doc'", environment))
    -        
    -        def raises_nameError():
    -            try:
    -                interpret("python.version == '42'")
    -            except NameError:
    -                pass
    -            else:
    -                raise Exception("Expected NameError")
    -        
    -        raises_nameError()
    -        
    -        def raises_syntaxError():
    -            try:
    -                interpret("(x for x in (4,))")
    -            except SyntaxError:
    -                pass
    -            else:
    -                raise Exception("Expected SyntaxError")
    -            
    -        raises_syntaxError()
    -        
    -        statement = "python_version == '5'"
    -        self.assertEqual(compile(statement).__doc__, statement)
    -        
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/test_msvc9compiler.py b/Shared/lib/python3.4/site-packages/setuptools/tests/test_msvc9compiler.py
    deleted file mode 100644
    index 970f767..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools/tests/test_msvc9compiler.py
    +++ /dev/null
    @@ -1,157 +0,0 @@
    -"""msvc9compiler monkey patch test
    -
    -This test ensures that importing setuptools is sufficient to replace
    -the standard find_vcvarsall function with our patched version that
    -finds the Visual C++ for Python package.
    -"""
    -
    -import os
    -import shutil
    -import sys
    -import tempfile
    -import unittest
    -import distutils.errors
    -import contextlib
    -
    -# importing only setuptools should apply the patch
    -__import__('setuptools')
    -
    -class MockReg:
    -    """Mock for distutils.msvc9compiler.Reg. We patch it
    -    with an instance of this class that mocks out the
    -    functions that access the registry.
    -    """
    -
    -    def __init__(self, hkey_local_machine={}, hkey_current_user={}):
    -        self.hklm = hkey_local_machine
    -        self.hkcu = hkey_current_user
    -
    -    def __enter__(self):
    -        self.original_read_keys = distutils.msvc9compiler.Reg.read_keys
    -        self.original_read_values = distutils.msvc9compiler.Reg.read_values
    -
    -        _winreg = getattr(distutils.msvc9compiler, '_winreg', None)
    -        winreg = getattr(distutils.msvc9compiler, 'winreg', _winreg)
    -
    -        hives = {
    -            winreg.HKEY_CURRENT_USER: self.hkcu,
    -            winreg.HKEY_LOCAL_MACHINE: self.hklm,
    -        }
    -
    -        def read_keys(cls, base, key):
    -            """Return list of registry keys."""
    -            hive = hives.get(base, {})
    -            return [k.rpartition('\\')[2]
    -                    for k in hive if k.startswith(key.lower())]
    -
    -        def read_values(cls, base, key):
    -            """Return dict of registry keys and values."""
    -            hive = hives.get(base, {})
    -            return dict((k.rpartition('\\')[2], hive[k])
    -                        for k in hive if k.startswith(key.lower()))
    -
    -        distutils.msvc9compiler.Reg.read_keys = classmethod(read_keys)
    -        distutils.msvc9compiler.Reg.read_values = classmethod(read_values)
    -
    -        return self
    -
    -    def __exit__(self, exc_type, exc_value, exc_tb):
    -        distutils.msvc9compiler.Reg.read_keys = self.original_read_keys
    -        distutils.msvc9compiler.Reg.read_values = self.original_read_values
    -
    -@contextlib.contextmanager
    -def patch_env(**replacements):
    -    """
    -    In a context, patch the environment with replacements. Pass None values
    -    to clear the values.
    -    """
    -    saved = dict(
    -        (key, os.environ['key'])
    -        for key in replacements
    -        if key in os.environ
    -    )
    -
    -    # remove values that are null
    -    remove = (key for (key, value) in replacements.items() if value is None)
    -    for key in list(remove):
    -        os.environ.pop(key, None)
    -        replacements.pop(key)
    -
    -    os.environ.update(replacements)
    -
    -    try:
    -        yield saved
    -    finally:
    -        for key in replacements:
    -            os.environ.pop(key, None)
    -        os.environ.update(saved)
    -
    -class TestMSVC9Compiler(unittest.TestCase):
    -
    -    def test_find_vcvarsall_patch(self):
    -        if not hasattr(distutils, 'msvc9compiler'):
    -            # skip
    -            return
    -
    -        self.assertEqual(
    -            "setuptools.msvc9_support",
    -            distutils.msvc9compiler.find_vcvarsall.__module__,
    -            "find_vcvarsall was not patched"
    -        )
    -
    -        find_vcvarsall = distutils.msvc9compiler.find_vcvarsall
    -        query_vcvarsall = distutils.msvc9compiler.query_vcvarsall
    -
    -        # No registry entries or environment variable means we should
    -        # not find anything
    -        with patch_env(VS90COMNTOOLS=None):
    -            with MockReg():
    -                self.assertIsNone(find_vcvarsall(9.0))
    -
    -                try:
    -                    query_vcvarsall(9.0)
    -                    self.fail('Expected DistutilsPlatformError from query_vcvarsall()')
    -                except distutils.errors.DistutilsPlatformError:
    -                    exc_message = str(sys.exc_info()[1])
    -                self.assertIn('aka.ms/vcpython27', exc_message)
    -
    -        key_32 = r'software\microsoft\devdiv\vcforpython\9.0\installdir'
    -        key_64 = r'software\wow6432node\microsoft\devdiv\vcforpython\9.0\installdir'
    -
    -        # Make two mock files so we can tell whether HCKU entries are
    -        # preferred to HKLM entries.
    -        mock_installdir_1 = tempfile.mkdtemp()
    -        mock_vcvarsall_bat_1 = os.path.join(mock_installdir_1, 'vcvarsall.bat')
    -        open(mock_vcvarsall_bat_1, 'w').close()
    -        mock_installdir_2 = tempfile.mkdtemp()
    -        mock_vcvarsall_bat_2 = os.path.join(mock_installdir_2, 'vcvarsall.bat')
    -        open(mock_vcvarsall_bat_2, 'w').close()
    -        try:
    -            # Ensure we get the current user's setting first
    -            with MockReg(
    -                hkey_current_user={key_32: mock_installdir_1},
    -                hkey_local_machine={
    -                    key_32: mock_installdir_2,
    -                    key_64: mock_installdir_2,
    -                }
    -            ):
    -                self.assertEqual(mock_vcvarsall_bat_1, find_vcvarsall(9.0))
    -
    -            # Ensure we get the local machine value if it's there
    -            with MockReg(hkey_local_machine={key_32: mock_installdir_2}):
    -                self.assertEqual(mock_vcvarsall_bat_2, find_vcvarsall(9.0))
    -
    -            # Ensure we prefer the 64-bit local machine key
    -            # (*not* the Wow6432Node key)
    -            with MockReg(
    -                hkey_local_machine={
    -                    # This *should* only exist on 32-bit machines
    -                    key_32: mock_installdir_1,
    -                    # This *should* only exist on 64-bit machines
    -                    key_64: mock_installdir_2,
    -                }
    -            ):
    -                self.assertEqual(mock_vcvarsall_bat_1, find_vcvarsall(9.0))
    -        finally:
    -            shutil.rmtree(mock_installdir_1)
    -            shutil.rmtree(mock_installdir_2)
    diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/test_packageindex.py b/Shared/lib/python3.4/site-packages/setuptools/tests/test_packageindex.py
    deleted file mode 100644
    index 664566a..0000000
    --- a/Shared/lib/python3.4/site-packages/setuptools/tests/test_packageindex.py
    +++ /dev/null
    @@ -1,203 +0,0 @@
    -"""Package Index Tests
    -"""
    -import sys
    -import os
    -import unittest
    -import pkg_resources
    -from setuptools.compat import urllib2, httplib, HTTPError, unicode, pathname2url
    -import distutils.errors
    -import setuptools.package_index
    -from setuptools.tests.server import IndexServer
    -
    -class TestPackageIndex(unittest.TestCase):
    -
    -    def test_bad_url_bad_port(self):
    -        index = setuptools.package_index.PackageIndex()
    -        url = 'http://127.0.0.1:0/nonesuch/test_package_index'
    -        try:
    -            v = index.open_url(url)
    -        except Exception:
    -            v = sys.exc_info()[1]
    -            self.assertTrue(url in str(v))
    -        else:
    -            self.assertTrue(isinstance(v, HTTPError))
    -
    -    def test_bad_url_typo(self):
    -        # issue 16
    -        # easy_install inquant.contentmirror.plone breaks because of a typo
    -        # in its home URL
    -        index = setuptools.package_index.PackageIndex(
    -            hosts=('www.example.com',)
    -        )
    -
    -        url = 'url:%20https://svn.plone.org/svn/collective/inquant.contentmirror.plone/trunk'
    -        try:
    -            v = index.open_url(url)
    -        except Exception:
    -            v = sys.exc_info()[1]
    -            self.assertTrue(url in str(v))
    -        else:
    -            self.assertTrue(isinstance(v, HTTPError))
    -
    -    def test_bad_url_bad_status_line(self):
    -        index = setuptools.package_index.PackageIndex(
    -            hosts=('www.example.com',)
    -        )
    -
    -        def _urlopen(*args):
    -            raise httplib.BadStatusLine('line')
    -
    -        index.opener = _urlopen
    -        url = 'http://example.com'
    -        try:
    -            v = index.open_url(url)
    -        except Exception:
    -            v = sys.exc_info()[1]
    -            self.assertTrue('line' in str(v))
    -        else:
    -            raise AssertionError('Should have raise here!')
    -
    -    def test_bad_url_double_scheme(self):
    -        """
    -        A bad URL with a double scheme should raise a DistutilsError.
    -        """
    -        index = setuptools.package_index.PackageIndex(
    -            hosts=('www.example.com',)
    -        )
    -
    -        # issue 20
    -        url = 'http://http://svn.pythonpaste.org/Paste/wphp/trunk'
    -        try:
    -            index.open_url(url)
    -        except distutils.errors.DistutilsError:
    -            error = sys.exc_info()[1]
    -            msg = unicode(error)
    -            assert 'nonnumeric port' in msg or 'getaddrinfo failed' in msg or 'Name or service not known' in msg
    -            return
    -        raise RuntimeError("Did not raise")
    -
    -    def test_bad_url_screwy_href(self):
    -        index = setuptools.package_index.PackageIndex(
    -            hosts=('www.example.com',)
    -        )
    -
    -        # issue #160
    -        if sys.version_info[0] == 2 and sys.version_info[1] == 7:
    -            # this should not fail
    -            url = 'http://example.com'
    -            page = ('')
    -            index.process_index(url, page)
    -
    -    def test_url_ok(self):
    -        index = setuptools.package_index.PackageIndex(
    -            hosts=('www.example.com',)
    -        )
    -        url = 'file:///tmp/test_package_index'
    -        self.assertTrue(index.url_ok(url, True))
    -
    -    def test_links_priority(self):
    -        """
    -        Download links from the pypi simple index should be used before
    -        external download links.
    -        https://bitbucket.org/tarek/distribute/issue/163
    -
    -        Usecase :
    -        - someone uploads a package on pypi, a md5 is generated
    -        - someone manually copies this link (with the md5 in the url) onto an
    -          external page accessible from the package page.
    -        - someone reuploads the package (with a different md5)
    -        - while easy_installing, an MD5 error occurs because the external link
    -          is used
    -        -> Setuptools should use the link from pypi, not the external one.
    -        """
    -        if sys.platform.startswith('java'):
    -            # Skip this test on jython because binding to :0 fails
    -            return
    -
    -        # start an index server
    -        server = IndexServer()
    -        server.start()
    -        index_url = server.base_url() + 'test_links_priority/simple/'
    -
    -        # scan a test index
    -        pi = setuptools.package_index.PackageIndex(index_url)
    -        requirement = pkg_resources.Requirement.parse('foobar')
    -        pi.find_packages(requirement)
    -        server.stop()
    -
    -        # the distribution has been found
    -        self.assertTrue('foobar' in pi)
    -        # we have only one link, because links are compared without md5
    -        self.assertTrue(len(pi['foobar'])==1)
    -        # the link should be from the index
    -        self.assertTrue('correct_md5' in pi['foobar'][0].location)
    -
    -    def test_parse_bdist_wininst(self):
    -        self.assertEqual(setuptools.package_index.parse_bdist_wininst(
    -            'reportlab-2.5.win32-py2.4.exe'), ('reportlab-2.5', '2.4', 'win32'))
    -        self.assertEqual(setuptools.package_index.parse_bdist_wininst(
    -            'reportlab-2.5.win32.exe'), ('reportlab-2.5', None, 'win32'))
    -        self.assertEqual(setuptools.package_index.parse_bdist_wininst(
    -            'reportlab-2.5.win-amd64-py2.7.exe'), ('reportlab-2.5', '2.7', 'win-amd64'))
    -        self.assertEqual(setuptools.package_index.parse_bdist_wininst(
    -            'reportlab-2.5.win-amd64.exe'), ('reportlab-2.5', None, 'win-amd64'))
    -
    -    def test__vcs_split_rev_from_url(self):
    -        """
    -        Test the basic usage of _vcs_split_rev_from_url
    -        """
    -        vsrfu = setuptools.package_index.PackageIndex._vcs_split_rev_from_url
    -        url, rev = vsrfu('https://example.com/bar@2995')
    -        self.assertEqual(url, 'https://example.com/bar')
    -        self.assertEqual(rev, '2995')
    -
    -    def test_local_index(self):
    -        """
    -        local_open should be able to read an index from the file system.
    -        """
    -        f = open('index.html', 'w')
    -        f.write('
    content
    ') - f.close() - try: - url = 'file:' + pathname2url(os.getcwd()) + '/' - res = setuptools.package_index.local_open(url) - finally: - os.remove('index.html') - assert 'content' in res.read() - - -class TestContentCheckers(unittest.TestCase): - - def test_md5(self): - checker = setuptools.package_index.HashChecker.from_url( - 'http://foo/bar#md5=f12895fdffbd45007040d2e44df98478') - checker.feed('You should probably not be using MD5'.encode('ascii')) - self.assertEqual(checker.hash.hexdigest(), - 'f12895fdffbd45007040d2e44df98478') - self.assertTrue(checker.is_valid()) - - def test_other_fragment(self): - "Content checks should succeed silently if no hash is present" - checker = setuptools.package_index.HashChecker.from_url( - 'http://foo/bar#something%20completely%20different') - checker.feed('anything'.encode('ascii')) - self.assertTrue(checker.is_valid()) - - def test_blank_md5(self): - "Content checks should succeed if a hash is empty" - checker = setuptools.package_index.HashChecker.from_url( - 'http://foo/bar#md5=') - checker.feed('anything'.encode('ascii')) - self.assertTrue(checker.is_valid()) - - def test_get_hash_name_md5(self): - checker = setuptools.package_index.HashChecker.from_url( - 'http://foo/bar#md5=f12895fdffbd45007040d2e44df98478') - self.assertEqual(checker.hash_name, 'md5') - - def test_report(self): - checker = setuptools.package_index.HashChecker.from_url( - 'http://foo/bar#md5=f12895fdffbd45007040d2e44df98478') - rep = checker.report(lambda x: x, 'My message about %s') - self.assertEqual(rep, 'My message about md5') diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/test_resources.py b/Shared/lib/python3.4/site-packages/setuptools/tests/test_resources.py deleted file mode 100644 index 3baa3ab..0000000 --- a/Shared/lib/python3.4/site-packages/setuptools/tests/test_resources.py +++ /dev/null @@ -1,612 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# NOTE: the shebang and encoding lines are for ScriptHeaderTests do not remove - -import os -import sys -import tempfile -import shutil -from unittest import TestCase - -import pkg_resources -from pkg_resources import (parse_requirements, VersionConflict, parse_version, - Distribution, EntryPoint, Requirement, safe_version, safe_name, - WorkingSet) - -from setuptools.command.easy_install import (get_script_header, is_sh, - nt_quote_arg) -from setuptools.compat import StringIO, iteritems, PY3 -from .py26compat import skipIf - -def safe_repr(obj, short=False): - """ copied from Python2.7""" - try: - result = repr(obj) - except Exception: - result = object.__repr__(obj) - if not short or len(result) < pkg_resources._MAX_LENGTH: - return result - return result[:pkg_resources._MAX_LENGTH] + ' [truncated]...' - -class Metadata(pkg_resources.EmptyProvider): - """Mock object to return metadata as if from an on-disk distribution""" - - def __init__(self,*pairs): - self.metadata = dict(pairs) - - def has_metadata(self,name): - return name in self.metadata - - def get_metadata(self,name): - return self.metadata[name] - - def get_metadata_lines(self,name): - return pkg_resources.yield_lines(self.get_metadata(name)) - -dist_from_fn = pkg_resources.Distribution.from_filename - -class DistroTests(TestCase): - - def testCollection(self): - # empty path should produce no distributions - ad = pkg_resources.Environment([], platform=None, python=None) - self.assertEqual(list(ad), []) - self.assertEqual(ad['FooPkg'],[]) - ad.add(dist_from_fn("FooPkg-1.3_1.egg")) - ad.add(dist_from_fn("FooPkg-1.4-py2.4-win32.egg")) - ad.add(dist_from_fn("FooPkg-1.2-py2.4.egg")) - - # Name is in there now - self.assertTrue(ad['FooPkg']) - # But only 1 package - self.assertEqual(list(ad), ['foopkg']) - - # Distributions sort by version - self.assertEqual( - [dist.version for dist in ad['FooPkg']], ['1.4','1.3-1','1.2'] - ) - # Removing a distribution leaves sequence alone - ad.remove(ad['FooPkg'][1]) - self.assertEqual( - [dist.version for dist in ad['FooPkg']], ['1.4','1.2'] - ) - # And inserting adds them in order - ad.add(dist_from_fn("FooPkg-1.9.egg")) - self.assertEqual( - [dist.version for dist in ad['FooPkg']], ['1.9','1.4','1.2'] - ) - - ws = WorkingSet([]) - foo12 = dist_from_fn("FooPkg-1.2-py2.4.egg") - foo14 = dist_from_fn("FooPkg-1.4-py2.4-win32.egg") - req, = parse_requirements("FooPkg>=1.3") - - # Nominal case: no distros on path, should yield all applicable - self.assertEqual(ad.best_match(req,ws).version, '1.9') - # If a matching distro is already installed, should return only that - ws.add(foo14) - self.assertEqual(ad.best_match(req,ws).version, '1.4') - - # If the first matching distro is unsuitable, it's a version conflict - ws = WorkingSet([]) - ws.add(foo12) - ws.add(foo14) - self.assertRaises(VersionConflict, ad.best_match, req, ws) - - # If more than one match on the path, the first one takes precedence - ws = WorkingSet([]) - ws.add(foo14) - ws.add(foo12) - ws.add(foo14) - self.assertEqual(ad.best_match(req,ws).version, '1.4') - - def checkFooPkg(self,d): - self.assertEqual(d.project_name, "FooPkg") - self.assertEqual(d.key, "foopkg") - self.assertEqual(d.version, "1.3-1") - self.assertEqual(d.py_version, "2.4") - self.assertEqual(d.platform, "win32") - self.assertEqual(d.parsed_version, parse_version("1.3-1")) - - def testDistroBasics(self): - d = Distribution( - "/some/path", - project_name="FooPkg",version="1.3-1",py_version="2.4",platform="win32" - ) - self.checkFooPkg(d) - - d = Distribution("/some/path") - self.assertEqual(d.py_version, sys.version[:3]) - self.assertEqual(d.platform, None) - - def testDistroParse(self): - d = dist_from_fn("FooPkg-1.3_1-py2.4-win32.egg") - self.checkFooPkg(d) - d = dist_from_fn("FooPkg-1.3_1-py2.4-win32.egg-info") - self.checkFooPkg(d) - - def testDistroMetadata(self): - d = Distribution( - "/some/path", project_name="FooPkg", py_version="2.4", platform="win32", - metadata = Metadata( - ('PKG-INFO',"Metadata-Version: 1.0\nVersion: 1.3-1\n") - ) - ) - self.checkFooPkg(d) - - def distRequires(self, txt): - return Distribution("/foo", metadata=Metadata(('depends.txt', txt))) - - def checkRequires(self, dist, txt, extras=()): - self.assertEqual( - list(dist.requires(extras)), - list(parse_requirements(txt)) - ) - - def testDistroDependsSimple(self): - for v in "Twisted>=1.5", "Twisted>=1.5\nZConfig>=2.0": - self.checkRequires(self.distRequires(v), v) - - def testResolve(self): - ad = pkg_resources.Environment([]) - ws = WorkingSet([]) - # Resolving no requirements -> nothing to install - self.assertEqual(list(ws.resolve([],ad)), []) - # Request something not in the collection -> DistributionNotFound - self.assertRaises( - pkg_resources.DistributionNotFound, ws.resolve, parse_requirements("Foo"), ad - ) - Foo = Distribution.from_filename( - "/foo_dir/Foo-1.2.egg", - metadata=Metadata(('depends.txt', "[bar]\nBaz>=2.0")) - ) - ad.add(Foo) - ad.add(Distribution.from_filename("Foo-0.9.egg")) - - # Request thing(s) that are available -> list to activate - for i in range(3): - targets = list(ws.resolve(parse_requirements("Foo"), ad)) - self.assertEqual(targets, [Foo]) - list(map(ws.add,targets)) - self.assertRaises(VersionConflict, ws.resolve, - parse_requirements("Foo==0.9"), ad) - ws = WorkingSet([]) # reset - - # Request an extra that causes an unresolved dependency for "Baz" - self.assertRaises( - pkg_resources.DistributionNotFound, ws.resolve,parse_requirements("Foo[bar]"), ad - ) - Baz = Distribution.from_filename( - "/foo_dir/Baz-2.1.egg", metadata=Metadata(('depends.txt', "Foo")) - ) - ad.add(Baz) - - # Activation list now includes resolved dependency - self.assertEqual( - list(ws.resolve(parse_requirements("Foo[bar]"), ad)), [Foo,Baz] - ) - # Requests for conflicting versions produce VersionConflict - self.assertRaises(VersionConflict, - ws.resolve, parse_requirements("Foo==1.2\nFoo!=1.2"), ad) - - def testDistroDependsOptions(self): - d = self.distRequires(""" - Twisted>=1.5 - [docgen] - ZConfig>=2.0 - docutils>=0.3 - [fastcgi] - fcgiapp>=0.1""") - self.checkRequires(d,"Twisted>=1.5") - self.checkRequires( - d,"Twisted>=1.5 ZConfig>=2.0 docutils>=0.3".split(), ["docgen"] - ) - self.checkRequires( - d,"Twisted>=1.5 fcgiapp>=0.1".split(), ["fastcgi"] - ) - self.checkRequires( - d,"Twisted>=1.5 ZConfig>=2.0 docutils>=0.3 fcgiapp>=0.1".split(), - ["docgen","fastcgi"] - ) - self.checkRequires( - d,"Twisted>=1.5 fcgiapp>=0.1 ZConfig>=2.0 docutils>=0.3".split(), - ["fastcgi", "docgen"] - ) - self.assertRaises(pkg_resources.UnknownExtra, d.requires, ["foo"]) - - -class EntryPointTests(TestCase): - - def assertfields(self, ep): - self.assertEqual(ep.name,"foo") - self.assertEqual(ep.module_name,"setuptools.tests.test_resources") - self.assertEqual(ep.attrs, ("EntryPointTests",)) - self.assertEqual(ep.extras, ("x",)) - self.assertTrue(ep.load() is EntryPointTests) - self.assertEqual( - str(ep), - "foo = setuptools.tests.test_resources:EntryPointTests [x]" - ) - - def setUp(self): - self.dist = Distribution.from_filename( - "FooPkg-1.2-py2.4.egg", metadata=Metadata(('requires.txt','[x]'))) - - def testBasics(self): - ep = EntryPoint( - "foo", "setuptools.tests.test_resources", ["EntryPointTests"], - ["x"], self.dist - ) - self.assertfields(ep) - - def testParse(self): - s = "foo = setuptools.tests.test_resources:EntryPointTests [x]" - ep = EntryPoint.parse(s, self.dist) - self.assertfields(ep) - - ep = EntryPoint.parse("bar baz= spammity[PING]") - self.assertEqual(ep.name,"bar baz") - self.assertEqual(ep.module_name,"spammity") - self.assertEqual(ep.attrs, ()) - self.assertEqual(ep.extras, ("ping",)) - - ep = EntryPoint.parse(" fizzly = wocka:foo") - self.assertEqual(ep.name,"fizzly") - self.assertEqual(ep.module_name,"wocka") - self.assertEqual(ep.attrs, ("foo",)) - self.assertEqual(ep.extras, ()) - - def testRejects(self): - for ep in [ - "foo", "x=1=2", "x=a:b:c", "q=x/na", "fez=pish:tush-z", "x=f[a]>2", - ]: - try: EntryPoint.parse(ep) - except ValueError: pass - else: raise AssertionError("Should've been bad", ep) - - def checkSubMap(self, m): - self.assertEqual(len(m), len(self.submap_expect)) - for key, ep in iteritems(self.submap_expect): - self.assertEqual(repr(m.get(key)), repr(ep)) - - submap_expect = dict( - feature1=EntryPoint('feature1', 'somemodule', ['somefunction']), - feature2=EntryPoint('feature2', 'another.module', ['SomeClass'], ['extra1','extra2']), - feature3=EntryPoint('feature3', 'this.module', extras=['something']) - ) - submap_str = """ - # define features for blah blah - feature1 = somemodule:somefunction - feature2 = another.module:SomeClass [extra1,extra2] - feature3 = this.module [something] - """ - - def testParseList(self): - self.checkSubMap(EntryPoint.parse_group("xyz", self.submap_str)) - self.assertRaises(ValueError, EntryPoint.parse_group, "x a", "foo=bar") - self.assertRaises(ValueError, EntryPoint.parse_group, "x", - ["foo=baz", "foo=bar"]) - - def testParseMap(self): - m = EntryPoint.parse_map({'xyz':self.submap_str}) - self.checkSubMap(m['xyz']) - self.assertEqual(list(m.keys()),['xyz']) - m = EntryPoint.parse_map("[xyz]\n"+self.submap_str) - self.checkSubMap(m['xyz']) - self.assertEqual(list(m.keys()),['xyz']) - self.assertRaises(ValueError, EntryPoint.parse_map, ["[xyz]", "[xyz]"]) - self.assertRaises(ValueError, EntryPoint.parse_map, self.submap_str) - -class RequirementsTests(TestCase): - - def testBasics(self): - r = Requirement.parse("Twisted>=1.2") - self.assertEqual(str(r),"Twisted>=1.2") - self.assertEqual(repr(r),"Requirement.parse('Twisted>=1.2')") - self.assertEqual(r, Requirement("Twisted", [('>=','1.2')], ())) - self.assertEqual(r, Requirement("twisTed", [('>=','1.2')], ())) - self.assertNotEqual(r, Requirement("Twisted", [('>=','2.0')], ())) - self.assertNotEqual(r, Requirement("Zope", [('>=','1.2')], ())) - self.assertNotEqual(r, Requirement("Zope", [('>=','3.0')], ())) - self.assertNotEqual(r, Requirement.parse("Twisted[extras]>=1.2")) - - def testOrdering(self): - r1 = Requirement("Twisted", [('==','1.2c1'),('>=','1.2')], ()) - r2 = Requirement("Twisted", [('>=','1.2'),('==','1.2c1')], ()) - self.assertEqual(r1,r2) - self.assertEqual(str(r1),str(r2)) - self.assertEqual(str(r2),"Twisted==1.2c1,>=1.2") - - def testBasicContains(self): - r = Requirement("Twisted", [('>=','1.2')], ()) - foo_dist = Distribution.from_filename("FooPkg-1.3_1.egg") - twist11 = Distribution.from_filename("Twisted-1.1.egg") - twist12 = Distribution.from_filename("Twisted-1.2.egg") - self.assertTrue(parse_version('1.2') in r) - self.assertTrue(parse_version('1.1') not in r) - self.assertTrue('1.2' in r) - self.assertTrue('1.1' not in r) - self.assertTrue(foo_dist not in r) - self.assertTrue(twist11 not in r) - self.assertTrue(twist12 in r) - - def testAdvancedContains(self): - r, = parse_requirements("Foo>=1.2,<=1.3,==1.9,>2.0,!=2.5,<3.0,==4.5") - for v in ('1.2','1.2.2','1.3','1.9','2.0.1','2.3','2.6','3.0c1','4.5'): - self.assertTrue(v in r, (v,r)) - for v in ('1.2c1','1.3.1','1.5','1.9.1','2.0','2.5','3.0','4.0'): - self.assertTrue(v not in r, (v,r)) - - def testOptionsAndHashing(self): - r1 = Requirement.parse("Twisted[foo,bar]>=1.2") - r2 = Requirement.parse("Twisted[bar,FOO]>=1.2") - r3 = Requirement.parse("Twisted[BAR,FOO]>=1.2.0") - self.assertEqual(r1,r2) - self.assertEqual(r1,r3) - self.assertEqual(r1.extras, ("foo","bar")) - self.assertEqual(r2.extras, ("bar","foo")) # extras are normalized - self.assertEqual(hash(r1), hash(r2)) - self.assertEqual( - hash(r1), hash(("twisted", ((">=",parse_version("1.2")),), - frozenset(["foo","bar"]))) - ) - - def testVersionEquality(self): - r1 = Requirement.parse("foo==0.3a2") - r2 = Requirement.parse("foo!=0.3a4") - d = Distribution.from_filename - - self.assertTrue(d("foo-0.3a4.egg") not in r1) - self.assertTrue(d("foo-0.3a1.egg") not in r1) - self.assertTrue(d("foo-0.3a4.egg") not in r2) - - self.assertTrue(d("foo-0.3a2.egg") in r1) - self.assertTrue(d("foo-0.3a2.egg") in r2) - self.assertTrue(d("foo-0.3a3.egg") in r2) - self.assertTrue(d("foo-0.3a5.egg") in r2) - - def testSetuptoolsProjectName(self): - """ - The setuptools project should implement the setuptools package. - """ - - self.assertEqual( - Requirement.parse('setuptools').project_name, 'setuptools') - # setuptools 0.7 and higher means setuptools. - self.assertEqual( - Requirement.parse('setuptools == 0.7').project_name, 'setuptools') - self.assertEqual( - Requirement.parse('setuptools == 0.7a1').project_name, 'setuptools') - self.assertEqual( - Requirement.parse('setuptools >= 0.7').project_name, 'setuptools') - - -class ParseTests(TestCase): - - def testEmptyParse(self): - self.assertEqual(list(parse_requirements('')), []) - - def testYielding(self): - for inp,out in [ - ([], []), ('x',['x']), ([[]],[]), (' x\n y', ['x','y']), - (['x\n\n','y'], ['x','y']), - ]: - self.assertEqual(list(pkg_resources.yield_lines(inp)),out) - - def testSplitting(self): - sample = """ - x - [Y] - z - - a - [b ] - # foo - c - [ d] - [q] - v - """ - self.assertEqual(list(pkg_resources.split_sections(sample)), - [(None,["x"]), ("Y",["z","a"]), ("b",["c"]), ("d",[]), ("q",["v"])] - ) - self.assertRaises(ValueError,list,pkg_resources.split_sections("[foo")) - - def testSafeName(self): - self.assertEqual(safe_name("adns-python"), "adns-python") - self.assertEqual(safe_name("WSGI Utils"), "WSGI-Utils") - self.assertEqual(safe_name("WSGI Utils"), "WSGI-Utils") - self.assertEqual(safe_name("Money$$$Maker"), "Money-Maker") - self.assertNotEqual(safe_name("peak.web"), "peak-web") - - def testSafeVersion(self): - self.assertEqual(safe_version("1.2-1"), "1.2-1") - self.assertEqual(safe_version("1.2 alpha"), "1.2.alpha") - self.assertEqual(safe_version("2.3.4 20050521"), "2.3.4.20050521") - self.assertEqual(safe_version("Money$$$Maker"), "Money-Maker") - self.assertEqual(safe_version("peak.web"), "peak.web") - - def testSimpleRequirements(self): - self.assertEqual( - list(parse_requirements('Twis-Ted>=1.2-1')), - [Requirement('Twis-Ted',[('>=','1.2-1')], ())] - ) - self.assertEqual( - list(parse_requirements('Twisted >=1.2, \ # more\n<2.0')), - [Requirement('Twisted',[('>=','1.2'),('<','2.0')], ())] - ) - self.assertEqual( - Requirement.parse("FooBar==1.99a3"), - Requirement("FooBar", [('==','1.99a3')], ()) - ) - self.assertRaises(ValueError,Requirement.parse,">=2.3") - self.assertRaises(ValueError,Requirement.parse,"x\\") - self.assertRaises(ValueError,Requirement.parse,"x==2 q") - self.assertRaises(ValueError,Requirement.parse,"X==1\nY==2") - self.assertRaises(ValueError,Requirement.parse,"#") - - def testVersionEquality(self): - def c(s1,s2): - p1, p2 = parse_version(s1),parse_version(s2) - self.assertEqual(p1,p2, (s1,s2,p1,p2)) - - c('1.2-rc1', '1.2rc1') - c('0.4', '0.4.0') - c('0.4.0.0', '0.4.0') - c('0.4.0-0', '0.4-0') - c('0pl1', '0.0pl1') - c('0pre1', '0.0c1') - c('0.0.0preview1', '0c1') - c('0.0c1', '0-rc1') - c('1.2a1', '1.2.a.1') - c('1.2...a', '1.2a') - - def testVersionOrdering(self): - def c(s1,s2): - p1, p2 = parse_version(s1),parse_version(s2) - self.assertTrue(p1 dummy-0\.1\.1", - "copying dummy", - "copying dummy\.egg-info", - "hard linking \S+ -> dummy-0\.1\.1", - "hard linking dummy", - "hard linking dummy\.egg-info", - "Writing dummy-0\.1\.1", - "creating dist", - "creating 'dist", - "Creating tar archive", - "running check", - "adding 'dummy-0\.1\.1", - "tar .+ dist/dummy-0\.1\.1\.tar dummy-0\.1\.1", - "gzip .+ dist/dummy-0\.1\.1\.tar", - "removing 'dummy-0\.1\.1' \\(and everything under it\\)", - ) - - print(" DIR: " + os.path.abspath('.')) - for line in datalines: - found = False - for pattern in possible: - if re.match(pattern, line): - print(" READ: " + line) - found = True - break - if not found: - raise AssertionError("Unexpexected: %s\n-in-\n%s" - % (line, data)) - - return data - - def test_sources(self): - self._run() - - -class TestSvn(environment.ZippedEnvironment): - - def setUp(self): - version = svn_utils.SvnInfo.get_svn_version() - if not version: # None or Empty - return - - self.base_version = tuple([int(x) for x in version.split('.')][:2]) - - if not self.base_version: - raise ValueError('No SVN tools installed') - elif self.base_version < (1, 3): - raise ValueError('Insufficient SVN Version %s' % version) - elif self.base_version >= (1, 9): - # trying the latest version - self.base_version = (1, 8) - - self.dataname = "svn%i%i_example" % self.base_version - self.datafile = os.path.join('setuptools', 'tests', - 'svn_data', self.dataname + ".zip") - super(TestSvn, self).setUp() - - @skipIf(not test_svn._svn_check, "No SVN to text, in the first place") - def test_walksvn(self): - if self.base_version >= (1, 6): - folder2 = 'third party2' - folder3 = 'third party3' - else: - folder2 = 'third_party2' - folder3 = 'third_party3' - - # TODO is this right - expected = set([ - os.path.join('a file'), - os.path.join(folder2, 'Changes.txt'), - os.path.join(folder2, 'MD5SUMS'), - os.path.join(folder2, 'README.txt'), - os.path.join(folder3, 'Changes.txt'), - os.path.join(folder3, 'MD5SUMS'), - os.path.join(folder3, 'README.txt'), - os.path.join(folder3, 'TODO.txt'), - os.path.join(folder3, 'fin'), - os.path.join('third_party', 'README.txt'), - os.path.join('folder', folder2, 'Changes.txt'), - os.path.join('folder', folder2, 'MD5SUMS'), - os.path.join('folder', folder2, 'WatashiNiYomimasu.txt'), - os.path.join('folder', folder3, 'Changes.txt'), - os.path.join('folder', folder3, 'fin'), - os.path.join('folder', folder3, 'MD5SUMS'), - os.path.join('folder', folder3, 'oops'), - os.path.join('folder', folder3, 'WatashiNiYomimasu.txt'), - os.path.join('folder', folder3, 'ZuMachen.txt'), - os.path.join('folder', 'third_party', 'WatashiNiYomimasu.txt'), - os.path.join('folder', 'lalala.txt'), - os.path.join('folder', 'quest.txt'), - # The example will have a deleted file - # (or should) but shouldn't return it - ]) - self.assertEqual(set(x for x in walk_revctrl()), expected) - - -def test_suite(): - return unittest.defaultTestLoader.loadTestsFromName(__name__) diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/test_svn.py b/Shared/lib/python3.4/site-packages/setuptools/tests/test_svn.py deleted file mode 100644 index 3340036..0000000 --- a/Shared/lib/python3.4/site-packages/setuptools/tests/test_svn.py +++ /dev/null @@ -1,245 +0,0 @@ -# -*- coding: utf-8 -*- -"""svn tests""" - -import io -import os -import subprocess -import sys -import unittest -from setuptools.tests import environment -from setuptools.compat import unicode, unichr - -from setuptools import svn_utils -from setuptools.tests.py26compat import skipIf - - -def _do_svn_check(): - try: - subprocess.check_call(["svn", "--version"], - shell=(sys.platform == 'win32')) - return True - except (OSError, subprocess.CalledProcessError): - return False -_svn_check = _do_svn_check() - - -class TestSvnVersion(unittest.TestCase): - - def test_no_svn_found(self): - path_variable = None - for env in os.environ: - if env.lower() == 'path': - path_variable = env - - if path_variable is None: - try: - self.skipTest('Cannot figure out how to modify path') - except AttributeError: # PY26 doesn't have this - return - - old_path = os.environ[path_variable] - os.environ[path_variable] = '' - try: - version = svn_utils.SvnInfo.get_svn_version() - self.assertEqual(version, '') - finally: - os.environ[path_variable] = old_path - - @skipIf(not _svn_check, "No SVN to text, in the first place") - def test_svn_should_exist(self): - version = svn_utils.SvnInfo.get_svn_version() - self.assertNotEqual(version, '') - -def _read_utf8_file(path): - fileobj = None - try: - fileobj = io.open(path, 'r', encoding='utf-8') - data = fileobj.read() - return data - finally: - if fileobj: - fileobj.close() - - -class ParserInfoXML(unittest.TestCase): - - def parse_tester(self, svn_name, ext_spaces): - path = os.path.join('setuptools', 'tests', - 'svn_data', svn_name + '_info.xml') - #Remember these are pre-generated to test XML parsing - # so these paths might not valid on your system - example_base = "%s_example" % svn_name - - data = _read_utf8_file(path) - - expected = set([ - ("\\".join((example_base, 'a file')), 'file'), - ("\\".join((example_base, 'folder')), 'dir'), - ("\\".join((example_base, 'folder', 'lalala.txt')), 'file'), - ("\\".join((example_base, 'folder', 'quest.txt')), 'file'), - ]) - self.assertEqual(set(x for x in svn_utils.parse_dir_entries(data)), - expected) - - def test_svn13(self): - self.parse_tester('svn13', False) - - def test_svn14(self): - self.parse_tester('svn14', False) - - def test_svn15(self): - self.parse_tester('svn15', False) - - def test_svn16(self): - self.parse_tester('svn16', True) - - def test_svn17(self): - self.parse_tester('svn17', True) - - def test_svn18(self): - self.parse_tester('svn18', True) - -class ParserExternalXML(unittest.TestCase): - - def parse_tester(self, svn_name, ext_spaces): - path = os.path.join('setuptools', 'tests', - 'svn_data', svn_name + '_ext_list.xml') - example_base = svn_name + '_example' - data = _read_utf8_file(path) - - if ext_spaces: - folder2 = 'third party2' - folder3 = 'third party3' - else: - folder2 = 'third_party2' - folder3 = 'third_party3' - - expected = set([ - os.sep.join((example_base, folder2)), - os.sep.join((example_base, folder3)), - # folder is third_party大介 - os.sep.join((example_base, - unicode('third_party') + - unichr(0x5927) + unichr(0x4ecb))), - os.sep.join((example_base, 'folder', folder2)), - os.sep.join((example_base, 'folder', folder3)), - os.sep.join((example_base, 'folder', - unicode('third_party') + - unichr(0x5927) + unichr(0x4ecb))), - ]) - - expected = set(os.path.normpath(x) for x in expected) - dir_base = os.sep.join(('C:', 'development', 'svn_example')) - self.assertEqual(set(x for x - in svn_utils.parse_externals_xml(data, dir_base)), expected) - - def test_svn15(self): - self.parse_tester('svn15', False) - - def test_svn16(self): - self.parse_tester('svn16', True) - - def test_svn17(self): - self.parse_tester('svn17', True) - - def test_svn18(self): - self.parse_tester('svn18', True) - - -class ParseExternal(unittest.TestCase): - - def parse_tester(self, svn_name, ext_spaces): - path = os.path.join('setuptools', 'tests', - 'svn_data', svn_name + '_ext_list.txt') - data = _read_utf8_file(path) - - if ext_spaces: - expected = set(['third party2', 'third party3', - 'third party3b', 'third_party']) - else: - expected = set(['third_party2', 'third_party3', 'third_party']) - - self.assertEqual(set(x for x in svn_utils.parse_external_prop(data)), - expected) - - def test_svn13(self): - self.parse_tester('svn13', False) - - def test_svn14(self): - self.parse_tester('svn14', False) - - def test_svn15(self): - self.parse_tester('svn15', False) - - def test_svn16(self): - self.parse_tester('svn16', True) - - def test_svn17(self): - self.parse_tester('svn17', True) - - def test_svn18(self): - self.parse_tester('svn18', True) - - -class TestSvn(environment.ZippedEnvironment): - - def setUp(self): - version = svn_utils.SvnInfo.get_svn_version() - if not version: # empty or null - self.dataname = None - self.datafile = None - return - - self.base_version = tuple([int(x) for x in version.split('.')[:2]]) - - if self.base_version < (1,3): - raise ValueError('Insufficient SVN Version %s' % version) - elif self.base_version >= (1,9): - #trying the latest version - self.base_version = (1,8) - - self.dataname = "svn%i%i_example" % self.base_version - self.datafile = os.path.join('setuptools', 'tests', - 'svn_data', self.dataname + ".zip") - super(TestSvn, self).setUp() - - @skipIf(not _svn_check, "No SVN to text, in the first place") - def test_revision(self): - rev = svn_utils.SvnInfo.load('.').get_revision() - self.assertEqual(rev, 6) - - @skipIf(not _svn_check, "No SVN to text, in the first place") - def test_entries(self): - expected = set([ - (os.path.join('a file'), 'file'), - (os.path.join('folder'), 'dir'), - (os.path.join('folder', 'lalala.txt'), 'file'), - (os.path.join('folder', 'quest.txt'), 'file'), - #The example will have a deleted file (or should) - #but shouldn't return it - ]) - info = svn_utils.SvnInfo.load('.') - self.assertEqual(set(x for x in info.entries), expected) - - @skipIf(not _svn_check, "No SVN to text, in the first place") - def test_externals(self): - if self.base_version >= (1,6): - folder2 = 'third party2' - folder3 = 'third party3' - else: - folder2 = 'third_party2' - folder3 = 'third_party3' - - expected = set([ - os.path.join(folder2), - os.path.join(folder3), - os.path.join('third_party'), - os.path.join('folder', folder2), - os.path.join('folder', folder3), - os.path.join('folder', 'third_party'), - ]) - info = svn_utils.SvnInfo.load('.') - self.assertEqual(set([x for x in info.externals]), expected) - -def test_suite(): - return unittest.defaultTestLoader.loadTestsFromName(__name__) diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/test_test.py b/Shared/lib/python3.4/site-packages/setuptools/tests/test_test.py deleted file mode 100644 index df92085..0000000 --- a/Shared/lib/python3.4/site-packages/setuptools/tests/test_test.py +++ /dev/null @@ -1,126 +0,0 @@ -# -*- coding: UTF-8 -*- - -"""develop tests -""" -import os -import shutil -import site -import sys -import tempfile -import unittest - -from distutils.errors import DistutilsError -from setuptools.compat import StringIO, PY2 -from setuptools.command.test import test -from setuptools.command import easy_install as easy_install_pkg -from setuptools.dist import Distribution - -SETUP_PY = """\ -from setuptools import setup - -setup(name='foo', - packages=['name', 'name.space', 'name.space.tests'], - namespace_packages=['name'], - test_suite='name.space.tests.test_suite', -) -""" - -NS_INIT = """# -*- coding: Latin-1 -*- -# Söme Arbiträry Ünicode to test Issüé 310 -try: - __import__('pkg_resources').declare_namespace(__name__) -except ImportError: - from pkgutil import extend_path - __path__ = extend_path(__path__, __name__) -""" -# Make sure this is Latin-1 binary, before writing: -if PY2: - NS_INIT = NS_INIT.decode('UTF-8') -NS_INIT = NS_INIT.encode('Latin-1') - -TEST_PY = """import unittest - -class TestTest(unittest.TestCase): - def test_test(self): - print "Foo" # Should fail under Python 3 unless 2to3 is used - -test_suite = unittest.makeSuite(TestTest) -""" - -class TestTestTest(unittest.TestCase): - - def setUp(self): - if sys.version < "2.6" or hasattr(sys, 'real_prefix'): - return - - # Directory structure - self.dir = tempfile.mkdtemp() - os.mkdir(os.path.join(self.dir, 'name')) - os.mkdir(os.path.join(self.dir, 'name', 'space')) - os.mkdir(os.path.join(self.dir, 'name', 'space', 'tests')) - # setup.py - setup = os.path.join(self.dir, 'setup.py') - f = open(setup, 'wt') - f.write(SETUP_PY) - f.close() - self.old_cwd = os.getcwd() - # name/__init__.py - init = os.path.join(self.dir, 'name', '__init__.py') - f = open(init, 'wb') - f.write(NS_INIT) - f.close() - # name/space/__init__.py - init = os.path.join(self.dir, 'name', 'space', '__init__.py') - f = open(init, 'wt') - f.write('#empty\n') - f.close() - # name/space/tests/__init__.py - init = os.path.join(self.dir, 'name', 'space', 'tests', '__init__.py') - f = open(init, 'wt') - f.write(TEST_PY) - f.close() - - os.chdir(self.dir) - self.old_base = site.USER_BASE - site.USER_BASE = tempfile.mkdtemp() - self.old_site = site.USER_SITE - site.USER_SITE = tempfile.mkdtemp() - - def tearDown(self): - if sys.version < "2.6" or hasattr(sys, 'real_prefix'): - return - - os.chdir(self.old_cwd) - shutil.rmtree(self.dir) - shutil.rmtree(site.USER_BASE) - shutil.rmtree(site.USER_SITE) - site.USER_BASE = self.old_base - site.USER_SITE = self.old_site - - def test_test(self): - if sys.version < "2.6" or hasattr(sys, 'real_prefix'): - return - - dist = Distribution(dict( - name='foo', - packages=['name', 'name.space', 'name.space.tests'], - namespace_packages=['name'], - test_suite='name.space.tests.test_suite', - use_2to3=True, - )) - dist.script_name = 'setup.py' - cmd = test(dist) - cmd.user = 1 - cmd.ensure_finalized() - cmd.install_dir = site.USER_SITE - cmd.user = 1 - old_stdout = sys.stdout - sys.stdout = StringIO() - try: - try: # try/except/finally doesn't work in Python 2.4, so we need nested try-statements. - cmd.run() - except SystemExit: # The test runner calls sys.exit, stop that making an error. - pass - finally: - sys.stdout = old_stdout - diff --git a/Shared/lib/python3.4/site-packages/setuptools/tests/test_upload_docs.py b/Shared/lib/python3.4/site-packages/setuptools/tests/test_upload_docs.py deleted file mode 100644 index 769f16c..0000000 --- a/Shared/lib/python3.4/site-packages/setuptools/tests/test_upload_docs.py +++ /dev/null @@ -1,72 +0,0 @@ -"""build_ext tests -""" -import sys, os, shutil, tempfile, unittest, site, zipfile -from setuptools.command.upload_docs import upload_docs -from setuptools.dist import Distribution - -SETUP_PY = """\ -from setuptools import setup - -setup(name='foo') -""" - -class TestUploadDocsTest(unittest.TestCase): - def setUp(self): - self.dir = tempfile.mkdtemp() - setup = os.path.join(self.dir, 'setup.py') - f = open(setup, 'w') - f.write(SETUP_PY) - f.close() - self.old_cwd = os.getcwd() - os.chdir(self.dir) - - self.upload_dir = os.path.join(self.dir, 'build') - os.mkdir(self.upload_dir) - - # A test document. - f = open(os.path.join(self.upload_dir, 'index.html'), 'w') - f.write("Hello world.") - f.close() - - # An empty folder. - os.mkdir(os.path.join(self.upload_dir, 'empty')) - - if sys.version >= "2.6": - self.old_base = site.USER_BASE - site.USER_BASE = upload_docs.USER_BASE = tempfile.mkdtemp() - self.old_site = site.USER_SITE - site.USER_SITE = upload_docs.USER_SITE = tempfile.mkdtemp() - - def tearDown(self): - os.chdir(self.old_cwd) - shutil.rmtree(self.dir) - if sys.version >= "2.6": - shutil.rmtree(site.USER_BASE) - shutil.rmtree(site.USER_SITE) - site.USER_BASE = self.old_base - site.USER_SITE = self.old_site - - def test_create_zipfile(self): - # Test to make sure zipfile creation handles common cases. - # This explicitly includes a folder containing an empty folder. - - dist = Distribution() - - cmd = upload_docs(dist) - cmd.upload_dir = self.upload_dir - cmd.target_dir = self.upload_dir - tmp_dir = tempfile.mkdtemp() - tmp_file = os.path.join(tmp_dir, 'foo.zip') - try: - zip_file = cmd.create_zipfile(tmp_file) - - assert zipfile.is_zipfile(tmp_file) - - zip_file = zipfile.ZipFile(tmp_file) # woh... - - assert zip_file.namelist() == ['index.html'] - - zip_file.close() - finally: - shutil.rmtree(tmp_dir) - diff --git a/Shared/lib/python3.4/site-packages/setuptools/version.py b/Shared/lib/python3.4/site-packages/setuptools/version.py index c974945..1be1f7e 100644 --- a/Shared/lib/python3.4/site-packages/setuptools/version.py +++ b/Shared/lib/python3.4/site-packages/setuptools/version.py @@ -1 +1 @@ -__version__ = '6.0.2' +__version__ = '18.5' diff --git a/Shared/lib/python3.4/site-packages/setuptools/windows_support.py b/Shared/lib/python3.4/site-packages/setuptools/windows_support.py new file mode 100644 index 0000000..cb977cf --- /dev/null +++ b/Shared/lib/python3.4/site-packages/setuptools/windows_support.py @@ -0,0 +1,29 @@ +import platform +import ctypes + + +def windows_only(func): + if platform.system() != 'Windows': + return lambda *args, **kwargs: None + return func + + +@windows_only +def hide_file(path): + """ + Set the hidden attribute on a file or directory. + + From http://stackoverflow.com/questions/19622133/ + + `path` must be text. + """ + __import__('ctypes.wintypes') + SetFileAttributes = ctypes.windll.kernel32.SetFileAttributesW + SetFileAttributes.argtypes = ctypes.wintypes.LPWSTR, ctypes.wintypes.DWORD + SetFileAttributes.restype = ctypes.wintypes.BOOL + + FILE_ATTRIBUTE_HIDDEN = 0x02 + + ret = SetFileAttributes(path, FILE_ATTRIBUTE_HIDDEN) + if not ret: + raise ctypes.WinError() diff --git a/Shared/lib/python3.4/site-packages/six-1.8.0.dist-info/DESCRIPTION.rst b/Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/DESCRIPTION.rst similarity index 63% rename from Shared/lib/python3.4/site-packages/six-1.8.0.dist-info/DESCRIPTION.rst rename to Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/DESCRIPTION.rst index 70f0b0f..2e2607d 100644 --- a/Shared/lib/python3.4/site-packages/six-1.8.0.dist-info/DESCRIPTION.rst +++ b/Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/DESCRIPTION.rst @@ -3,16 +3,16 @@ for smoothing over the differences between the Python versions with the goal of writing Python code that is compatible on both Python versions. See the documentation for more information on what is provided. -Six supports every Python version since 2.5. It is contained in only one Python +Six supports every Python version since 2.6. It is contained in only one Python file, so it can be easily copied into your project. (The copyright and license notice must be retained.) -Online documentation is at http://pythonhosted.org/six/. +Online documentation is at https://pythonhosted.org/six/. -Bugs can be reported to http://bitbucket.org/gutworth/six. The code can also be -found there. +Bugs can be reported to https://bitbucket.org/gutworth/six. The code can also +be found there. For questions about six or porting in general, email the python-porting mailing -list: http://mail.python.org/mailman/listinfo/python-porting +list: https://mail.python.org/mailman/listinfo/python-porting diff --git a/Shared/lib/python3.4/site-packages/six-1.8.0.dist-info/METADATA b/Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/METADATA similarity index 77% rename from Shared/lib/python3.4/site-packages/six-1.8.0.dist-info/METADATA rename to Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/METADATA index dbcf6f7..4fc3d07 100644 --- a/Shared/lib/python3.4/site-packages/six-1.8.0.dist-info/METADATA +++ b/Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.0 Name: six -Version: 1.8.0 +Version: 1.10.0 Summary: Python 2 and 3 compatibility utilities Home-page: http://pypi.python.org/pypi/six/ Author: Benjamin Peterson @@ -19,16 +19,16 @@ for smoothing over the differences between the Python versions with the goal of writing Python code that is compatible on both Python versions. See the documentation for more information on what is provided. -Six supports every Python version since 2.5. It is contained in only one Python +Six supports every Python version since 2.6. It is contained in only one Python file, so it can be easily copied into your project. (The copyright and license notice must be retained.) -Online documentation is at http://pythonhosted.org/six/. +Online documentation is at https://pythonhosted.org/six/. -Bugs can be reported to http://bitbucket.org/gutworth/six. The code can also be -found there. +Bugs can be reported to https://bitbucket.org/gutworth/six. The code can also +be found there. For questions about six or porting in general, email the python-porting mailing -list: http://mail.python.org/mailman/listinfo/python-porting +list: https://mail.python.org/mailman/listinfo/python-porting diff --git a/Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/RECORD b/Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/RECORD new file mode 100644 index 0000000..6350c4e --- /dev/null +++ b/Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/RECORD @@ -0,0 +1,8 @@ +six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098 +six-1.10.0.dist-info/DESCRIPTION.rst,sha256=QWBtSTT2zzabwJv1NQbTfClSX13m-Qc6tqU4TRL1RLs,774 +six-1.10.0.dist-info/METADATA,sha256=5HceJsUnHof2IRamlCKO2MwNjve1eSP4rLzVQDfwpCQ,1283 +six-1.10.0.dist-info/RECORD,, +six-1.10.0.dist-info/WHEEL,sha256=GrqQvamwgBV4nLoJe0vhYRSWzWsx7xjlt74FT0SWYfE,110 +six-1.10.0.dist-info/metadata.json,sha256=jtOeeTBubYDChl_5Ql5ZPlKoHgg6rdqRIjOz1e5Ek2U,658 +six-1.10.0.dist-info/top_level.txt,sha256=_iVH_iYEtEXnD8nYGQYpYFUvkUW9sEO1GYbkeKSAais,4 +__pycache__/six.cpython-34.pyc,, diff --git a/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/WHEEL b/Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/WHEEL similarity index 67% rename from Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/WHEEL rename to Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/WHEEL index cabc9c4..0de529b 100644 --- a/Shared/lib/python3.4/site-packages/setuptools-6.0.2.dist-info/WHEEL +++ b/Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/WHEEL @@ -1,6 +1,6 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.24.0) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - +Wheel-Version: 1.0 +Generator: bdist_wheel (0.26.0) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/metadata.json b/Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/metadata.json new file mode 100644 index 0000000..21f9f6c --- /dev/null +++ b/Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/metadata.json @@ -0,0 +1 @@ +{"generator": "bdist_wheel (0.26.0)", "summary": "Python 2 and 3 compatibility utilities", "classifiers": ["Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Topic :: Software Development :: Libraries", "Topic :: Utilities"], "extensions": {"python.details": {"project_urls": {"Home": "http://pypi.python.org/pypi/six/"}, "contacts": [{"email": "benjamin@python.org", "name": "Benjamin Peterson", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}}}, "license": "MIT", "metadata_version": "2.0", "name": "six", "version": "1.10.0"} \ No newline at end of file diff --git a/Shared/lib/python3.4/site-packages/six-1.8.0.dist-info/top_level.txt b/Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/top_level.txt similarity index 100% rename from Shared/lib/python3.4/site-packages/six-1.8.0.dist-info/top_level.txt rename to Shared/lib/python3.4/site-packages/six-1.10.0.dist-info/top_level.txt diff --git a/Shared/lib/python3.4/site-packages/six-1.8.0.dist-info/RECORD b/Shared/lib/python3.4/site-packages/six-1.8.0.dist-info/RECORD deleted file mode 100644 index 7b3b67c..0000000 --- a/Shared/lib/python3.4/site-packages/six-1.8.0.dist-info/RECORD +++ /dev/null @@ -1,8 +0,0 @@ -six.py,sha256=6N-6RCENPfBtMpN5UmgDfDKmJebbbuPu_Dk3Zf8ngww,27344 -six-1.8.0.dist-info/METADATA,sha256=YdVJG54t6rwaLnVT7g9dy16nVwaDcBN5U_N3m5Vt6S0,1279 -six-1.8.0.dist-info/top_level.txt,sha256=_iVH_iYEtEXnD8nYGQYpYFUvkUW9sEO1GYbkeKSAais,4 -six-1.8.0.dist-info/DESCRIPTION.rst,sha256=wDIPS0rnIMXICM3qxqUg2g5ozzQyOpCLh8oaca9UgFQ,771 -six-1.8.0.dist-info/metadata.json,sha256=uTTPmv2luMnDfW-4DxQZPcjyeEnCFUfacrqXhA1zJTg,657 -six-1.8.0.dist-info/RECORD,, -six-1.8.0.dist-info/WHEEL,sha256=AvR0WeTpDaxT645bl5FQxUK6NPsTls2ttpcGJg3j1Xg,110 -__pycache__/six.cpython-34.pyc,, diff --git a/Shared/lib/python3.4/site-packages/six-1.8.0.dist-info/metadata.json b/Shared/lib/python3.4/site-packages/six-1.8.0.dist-info/metadata.json deleted file mode 100644 index 016c71a..0000000 --- a/Shared/lib/python3.4/site-packages/six-1.8.0.dist-info/metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"license": "MIT", "name": "six", "metadata_version": "2.0", "generator": "bdist_wheel (0.24.0)", "summary": "Python 2 and 3 compatibility utilities", "version": "1.8.0", "extensions": {"python.details": {"project_urls": {"Home": "http://pypi.python.org/pypi/six/"}, "document_names": {"description": "DESCRIPTION.rst"}, "contacts": [{"role": "author", "email": "benjamin@python.org", "name": "Benjamin Peterson"}]}}, "classifiers": ["Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Topic :: Software Development :: Libraries", "Topic :: Utilities"]} \ No newline at end of file diff --git a/Shared/lib/python3.4/site-packages/six.py b/Shared/lib/python3.4/site-packages/six.py index 21b0e80..190c023 100644 --- a/Shared/lib/python3.4/site-packages/six.py +++ b/Shared/lib/python3.4/site-packages/six.py @@ -1,6 +1,6 @@ """Utilities for writing code that runs on Python 2 and 3""" -# Copyright (c) 2010-2014 Benjamin Peterson +# Copyright (c) 2010-2015 Benjamin Peterson # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -23,17 +23,19 @@ from __future__ import absolute_import import functools +import itertools import operator import sys import types __author__ = "Benjamin Peterson " -__version__ = "1.8.0" +__version__ = "1.10.0" # Useful for very coarse version differentiation. PY2 = sys.version_info[0] == 2 PY3 = sys.version_info[0] == 3 +PY34 = sys.version_info[0:2] >= (3, 4) if PY3: string_types = str, @@ -56,6 +58,7 @@ else: else: # It's possible to have sizeof(long) != sizeof(Py_ssize_t). class X(object): + def __len__(self): return 1 << 31 try: @@ -87,9 +90,13 @@ class _LazyDescr(object): def __get__(self, obj, tp): result = self._resolve() - setattr(obj, self.name, result) # Invokes __set__. - # This is a bit ugly, but it avoids running this again. - delattr(obj.__class__, self.name) + setattr(obj, self.name, result) # Invokes __set__. + try: + # This is a bit ugly, but it avoids running this again by + # removing this descriptor. + delattr(obj.__class__, self.name) + except AttributeError: + pass return result @@ -155,12 +162,14 @@ class MovedAttribute(_LazyDescr): class _SixMetaPathImporter(object): + """ A meta path importer to import six.moves and its submodules. This class implements a PEP302 finder and loader. It should be compatible with Python 2.5 and all existing versions of Python3 """ + def __init__(self, six_module_name): self.name = six_module_name self.known_modules = {} @@ -218,6 +227,7 @@ _importer = _SixMetaPathImporter(__name__) class _MovedItems(_LazyModule): + """Lazy loading of moved objects""" __path__ = [] # mark as package @@ -229,8 +239,10 @@ _moved_attributes = [ MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"), MovedAttribute("intern", "__builtin__", "sys"), MovedAttribute("map", "itertools", "builtins", "imap", "map"), + MovedAttribute("getcwd", "os", "os", "getcwdu", "getcwd"), + MovedAttribute("getcwdb", "os", "os", "getcwd", "getcwdb"), MovedAttribute("range", "__builtin__", "builtins", "xrange", "range"), - MovedAttribute("reload_module", "__builtin__", "imp", "reload"), + MovedAttribute("reload_module", "__builtin__", "importlib" if PY34 else "imp", "reload"), MovedAttribute("reduce", "__builtin__", "functools"), MovedAttribute("shlex_quote", "pipes", "shlex", "quote"), MovedAttribute("StringIO", "StringIO", "io"), @@ -240,7 +252,6 @@ _moved_attributes = [ MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"), MovedAttribute("zip", "itertools", "builtins", "izip", "zip"), MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest"), - MovedModule("builtins", "__builtin__"), MovedModule("configparser", "ConfigParser"), MovedModule("copyreg", "copy_reg"), @@ -287,8 +298,13 @@ _moved_attributes = [ MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"), MovedModule("xmlrpc_client", "xmlrpclib", "xmlrpc.client"), MovedModule("xmlrpc_server", "SimpleXMLRPCServer", "xmlrpc.server"), - MovedModule("winreg", "_winreg"), ] +# Add windows specific modules. +if sys.platform == "win32": + _moved_attributes += [ + MovedModule("winreg", "_winreg"), + ] + for attr in _moved_attributes: setattr(_MovedItems, attr.name, attr) if isinstance(attr, MovedModule): @@ -302,6 +318,7 @@ _importer._add_module(moves, "moves") class Module_six_moves_urllib_parse(_LazyModule): + """Lazy loading of moved objects in six.moves.urllib_parse""" @@ -341,6 +358,7 @@ _importer._add_module(Module_six_moves_urllib_parse(__name__ + ".moves.urllib_pa class Module_six_moves_urllib_error(_LazyModule): + """Lazy loading of moved objects in six.moves.urllib_error""" @@ -360,6 +378,7 @@ _importer._add_module(Module_six_moves_urllib_error(__name__ + ".moves.urllib.er class Module_six_moves_urllib_request(_LazyModule): + """Lazy loading of moved objects in six.moves.urllib_request""" @@ -409,6 +428,7 @@ _importer._add_module(Module_six_moves_urllib_request(__name__ + ".moves.urllib. class Module_six_moves_urllib_response(_LazyModule): + """Lazy loading of moved objects in six.moves.urllib_response""" @@ -429,6 +449,7 @@ _importer._add_module(Module_six_moves_urllib_response(__name__ + ".moves.urllib class Module_six_moves_urllib_robotparser(_LazyModule): + """Lazy loading of moved objects in six.moves.urllib_robotparser""" @@ -446,6 +467,7 @@ _importer._add_module(Module_six_moves_urllib_robotparser(__name__ + ".moves.url class Module_six_moves_urllib(types.ModuleType): + """Create a six.moves.urllib namespace that resembles the Python 3 namespace""" __path__ = [] # mark as package parse = _importer._get_module("moves.urllib_parse") @@ -516,6 +538,9 @@ if PY3: create_bound_method = types.MethodType + def create_unbound_method(func, cls): + return func + Iterator = object else: def get_unbound_function(unbound): @@ -524,6 +549,9 @@ else: def create_bound_method(func, obj): return types.MethodType(func, obj, obj.__class__) + def create_unbound_method(func, cls): + return types.MethodType(func, None, cls) + class Iterator(object): def next(self): @@ -554,18 +582,30 @@ if PY3: def iterlists(d, **kw): return iter(d.lists(**kw)) + + viewkeys = operator.methodcaller("keys") + + viewvalues = operator.methodcaller("values") + + viewitems = operator.methodcaller("items") else: def iterkeys(d, **kw): - return iter(d.iterkeys(**kw)) + return d.iterkeys(**kw) def itervalues(d, **kw): - return iter(d.itervalues(**kw)) + return d.itervalues(**kw) def iteritems(d, **kw): - return iter(d.iteritems(**kw)) + return d.iteritems(**kw) def iterlists(d, **kw): - return iter(d.iterlists(**kw)) + return d.iterlists(**kw) + + viewkeys = operator.methodcaller("viewkeys") + + viewvalues = operator.methodcaller("viewvalues") + + viewitems = operator.methodcaller("viewitems") _add_doc(iterkeys, "Return an iterator over the keys of a dictionary.") _add_doc(itervalues, "Return an iterator over the values of a dictionary.") @@ -578,45 +618,66 @@ _add_doc(iterlists, if PY3: def b(s): return s.encode("latin-1") + def u(s): return s unichr = chr - if sys.version_info[1] <= 1: - def int2byte(i): - return bytes((i,)) - else: - # This is about 2x faster than the implementation above on 3.2+ - int2byte = operator.methodcaller("to_bytes", 1, "big") + import struct + int2byte = struct.Struct(">B").pack + del struct byte2int = operator.itemgetter(0) indexbytes = operator.getitem iterbytes = iter import io StringIO = io.StringIO BytesIO = io.BytesIO + _assertCountEqual = "assertCountEqual" + if sys.version_info[1] <= 1: + _assertRaisesRegex = "assertRaisesRegexp" + _assertRegex = "assertRegexpMatches" + else: + _assertRaisesRegex = "assertRaisesRegex" + _assertRegex = "assertRegex" else: def b(s): return s # Workaround for standalone backslash + def u(s): return unicode(s.replace(r'\\', r'\\\\'), "unicode_escape") unichr = unichr int2byte = chr + def byte2int(bs): return ord(bs[0]) + def indexbytes(buf, i): return ord(buf[i]) - def iterbytes(buf): - return (ord(byte) for byte in buf) + iterbytes = functools.partial(itertools.imap, ord) import StringIO StringIO = BytesIO = StringIO.StringIO + _assertCountEqual = "assertItemsEqual" + _assertRaisesRegex = "assertRaisesRegexp" + _assertRegex = "assertRegexpMatches" _add_doc(b, """Byte literal""") _add_doc(u, """Text literal""") +def assertCountEqual(self, *args, **kwargs): + return getattr(self, _assertCountEqual)(*args, **kwargs) + + +def assertRaisesRegex(self, *args, **kwargs): + return getattr(self, _assertRaisesRegex)(*args, **kwargs) + + +def assertRegex(self, *args, **kwargs): + return getattr(self, _assertRegex)(*args, **kwargs) + + if PY3: exec_ = getattr(moves.builtins, "exec") - def reraise(tp, value, tb=None): if value is None: value = tp() @@ -637,12 +698,26 @@ else: _locs_ = _globs_ exec("""exec _code_ in _globs_, _locs_""") - exec_("""def reraise(tp, value, tb=None): raise tp, value, tb """) +if sys.version_info[:2] == (3, 2): + exec_("""def raise_from(value, from_value): + if from_value is None: + raise value + raise value from from_value +""") +elif sys.version_info[:2] > (3, 2): + exec_("""def raise_from(value, from_value): + raise value from from_value +""") +else: + def raise_from(value, from_value): + raise value + + print_ = getattr(moves.builtins, "print", None) if print_ is None: def print_(*args, **kwargs): @@ -650,13 +725,14 @@ if print_ is None: fp = kwargs.pop("file", sys.stdout) if fp is None: return + def write(data): if not isinstance(data, basestring): data = str(data) # If the file has an encoding, encode unicode with it. if (isinstance(fp, file) and - isinstance(data, unicode) and - fp.encoding is not None): + isinstance(data, unicode) and + fp.encoding is not None): errors = getattr(fp, "errors", None) if errors is None: errors = "strict" @@ -697,6 +773,15 @@ if print_ is None: write(sep) write(arg) write(end) +if sys.version_info[:2] < (3, 3): + _print = print_ + + def print_(*args, **kwargs): + fp = kwargs.get("file", sys.stdout) + flush = kwargs.pop("flush", False) + _print(*args, **kwargs) + if flush and fp is not None: + fp.flush() _add_doc(reraise, """Reraise an exception.""") @@ -704,19 +789,21 @@ if sys.version_info[0:2] < (3, 4): def wraps(wrapped, assigned=functools.WRAPPER_ASSIGNMENTS, updated=functools.WRAPPER_UPDATES): def wrapper(f): - f = functools.wraps(wrapped)(f) + f = functools.wraps(wrapped, assigned, updated)(f) f.__wrapped__ = wrapped return f return wrapper else: wraps = functools.wraps + def with_metaclass(meta, *bases): """Create a base class with a metaclass.""" # This requires a bit of explanation: the basic idea is to make a dummy # metaclass for one level of class instantiation that replaces itself with # the actual metaclass. class metaclass(meta): + def __new__(cls, name, this_bases, d): return meta(name, bases, d) return type.__new__(metaclass, 'temporary_class', (), {}) @@ -737,6 +824,25 @@ def add_metaclass(metaclass): return metaclass(cls.__name__, cls.__bases__, orig_vars) return wrapper + +def python_2_unicode_compatible(klass): + """ + A decorator that defines __unicode__ and __str__ methods under Python 2. + Under Python 3 it does nothing. + + To support Python 2 and 3 with a single code base, define a __str__ method + returning text and apply this decorator to the class. + """ + if PY2: + if '__str__' not in klass.__dict__: + raise ValueError("@python_2_unicode_compatible cannot be applied " + "to %s because it doesn't define __str__()." % + klass.__name__) + klass.__unicode__ = klass.__str__ + klass.__str__ = lambda self: self.__unicode__().encode('utf-8') + return klass + + # Complete the moves implementation. # This code is at the end of this module to speed up module loading. # Turn this module into a package. @@ -754,7 +860,7 @@ if sys.meta_path: # the six meta path importer, since the other six instance will have # inserted an importer with different class. if (type(importer).__name__ == "_SixMetaPathImporter" and - importer.name == __name__): + importer.name == __name__): del sys.meta_path[i] break del i, importer diff --git a/Shared/lib/python3.4/site-packages/tornado-4.0.egg-info/installed-files.txt b/Shared/lib/python3.4/site-packages/tornado-4.0.egg-info/installed-files.txt index 1f5e39f..dbca232 100644 --- a/Shared/lib/python3.4/site-packages/tornado-4.0.egg-info/installed-files.txt +++ b/Shared/lib/python3.4/site-packages/tornado-4.0.egg-info/installed-files.txt @@ -1,74 +1,74 @@ -../tornado/netutil.py -../tornado/httpclient.py -../tornado/web.py -../tornado/iostream.py -../tornado/simple_httpclient.py -../tornado/template.py -../tornado/websocket.py -../tornado/concurrent.py -../tornado/testing.py -../tornado/gen.py ../tornado/__init__.py -../tornado/locale.py ../tornado/auth.py -../tornado/http1connection.py -../tornado/httpserver.py -../tornado/stack_context.py -../tornado/httputil.py -../tornado/options.py -../tornado/tcpclient.py -../tornado/tcpserver.py -../tornado/wsgi.py +../tornado/autoreload.py +../tornado/concurrent.py ../tornado/curl_httpclient.py ../tornado/escape.py -../tornado/util.py -../tornado/log.py -../tornado/process.py +../tornado/gen.py +../tornado/http1connection.py +../tornado/httpclient.py +../tornado/httpserver.py +../tornado/httputil.py ../tornado/ioloop.py -../tornado/autoreload.py -../tornado/test/template_test.py -../tornado/test/twisted_test.py +../tornado/iostream.py +../tornado/locale.py +../tornado/log.py +../tornado/netutil.py +../tornado/options.py +../tornado/process.py +../tornado/simple_httpclient.py +../tornado/stack_context.py +../tornado/tcpclient.py +../tornado/tcpserver.py +../tornado/template.py +../tornado/testing.py +../tornado/util.py +../tornado/web.py +../tornado/websocket.py +../tornado/wsgi.py +../tornado/test/__init__.py +../tornado/test/__main__.py +../tornado/test/auth_test.py +../tornado/test/concurrent_test.py +../tornado/test/curl_httpclient_test.py ../tornado/test/escape_test.py +../tornado/test/gen_test.py +../tornado/test/httpclient_test.py +../tornado/test/httpserver_test.py +../tornado/test/httputil_test.py ../tornado/test/import_test.py ../tornado/test/ioloop_test.py -../tornado/test/log_test.py -../tornado/test/util_test.py -../tornado/test/concurrent_test.py -../tornado/test/simple_httpclient_test.py -../tornado/test/__init__.py -../tornado/test/stack_context_test.py -../tornado/test/wsgi_test.py -../tornado/test/web_test.py -../tornado/test/gen_test.py -../tornado/test/websocket_test.py -../tornado/test/__main__.py -../tornado/test/resolve_test_helper.py -../tornado/test/locale_test.py -../tornado/test/testing_test.py -../tornado/test/tcpclient_test.py -../tornado/test/httpclient_test.py ../tornado/test/iostream_test.py -../tornado/test/options_test.py -../tornado/test/curl_httpclient_test.py -../tornado/test/runtests.py -../tornado/test/httpserver_test.py -../tornado/test/process_test.py -../tornado/test/httputil_test.py +../tornado/test/locale_test.py +../tornado/test/log_test.py ../tornado/test/netutil_test.py +../tornado/test/options_test.py +../tornado/test/process_test.py +../tornado/test/resolve_test_helper.py +../tornado/test/runtests.py +../tornado/test/simple_httpclient_test.py +../tornado/test/stack_context_test.py +../tornado/test/tcpclient_test.py +../tornado/test/template_test.py +../tornado/test/testing_test.py +../tornado/test/twisted_test.py ../tornado/test/util.py -../tornado/test/auth_test.py +../tornado/test/util_test.py +../tornado/test/web_test.py +../tornado/test/websocket_test.py +../tornado/test/wsgi_test.py +../tornado/platform/__init__.py +../tornado/platform/asyncio.py +../tornado/platform/auto.py +../tornado/platform/caresresolver.py +../tornado/platform/common.py +../tornado/platform/epoll.py ../tornado/platform/interface.py ../tornado/platform/kqueue.py -../tornado/platform/__init__.py -../tornado/platform/windows.py -../tornado/platform/asyncio.py -../tornado/platform/twisted.py ../tornado/platform/posix.py ../tornado/platform/select.py -../tornado/platform/epoll.py -../tornado/platform/caresresolver.py -../tornado/platform/auto.py -../tornado/platform/common.py +../tornado/platform/twisted.py +../tornado/platform/windows.py ../tornado/test/README ../tornado/test/csv_translations/fr_FR.csv ../tornado/test/gettext_translations/fr_FR/LC_MESSAGES/tornado_test.mo @@ -79,81 +79,81 @@ ../tornado/test/templates/utf8.html ../tornado/test/test.crt ../tornado/test/test.key -../tornado/__pycache__/netutil.cpython-34.pyc -../tornado/__pycache__/httpclient.cpython-34.pyc -../tornado/__pycache__/web.cpython-34.pyc -../tornado/__pycache__/iostream.cpython-34.pyc -../tornado/__pycache__/simple_httpclient.cpython-34.pyc -../tornado/__pycache__/template.cpython-34.pyc -../tornado/__pycache__/websocket.cpython-34.pyc -../tornado/__pycache__/concurrent.cpython-34.pyc -../tornado/__pycache__/testing.cpython-34.pyc -../tornado/__pycache__/gen.cpython-34.pyc ../tornado/__pycache__/__init__.cpython-34.pyc -../tornado/__pycache__/locale.cpython-34.pyc ../tornado/__pycache__/auth.cpython-34.pyc -../tornado/__pycache__/http1connection.cpython-34.pyc -../tornado/__pycache__/httpserver.cpython-34.pyc -../tornado/__pycache__/stack_context.cpython-34.pyc -../tornado/__pycache__/httputil.cpython-34.pyc -../tornado/__pycache__/options.cpython-34.pyc -../tornado/__pycache__/tcpclient.cpython-34.pyc -../tornado/__pycache__/tcpserver.cpython-34.pyc -../tornado/__pycache__/wsgi.cpython-34.pyc +../tornado/__pycache__/autoreload.cpython-34.pyc +../tornado/__pycache__/concurrent.cpython-34.pyc ../tornado/__pycache__/curl_httpclient.cpython-34.pyc ../tornado/__pycache__/escape.cpython-34.pyc -../tornado/__pycache__/util.cpython-34.pyc -../tornado/__pycache__/log.cpython-34.pyc -../tornado/__pycache__/process.cpython-34.pyc +../tornado/__pycache__/gen.cpython-34.pyc +../tornado/__pycache__/http1connection.cpython-34.pyc +../tornado/__pycache__/httpclient.cpython-34.pyc +../tornado/__pycache__/httpserver.cpython-34.pyc +../tornado/__pycache__/httputil.cpython-34.pyc ../tornado/__pycache__/ioloop.cpython-34.pyc -../tornado/__pycache__/autoreload.cpython-34.pyc -../tornado/test/__pycache__/template_test.cpython-34.pyc -../tornado/test/__pycache__/twisted_test.cpython-34.pyc +../tornado/__pycache__/iostream.cpython-34.pyc +../tornado/__pycache__/locale.cpython-34.pyc +../tornado/__pycache__/log.cpython-34.pyc +../tornado/__pycache__/netutil.cpython-34.pyc +../tornado/__pycache__/options.cpython-34.pyc +../tornado/__pycache__/process.cpython-34.pyc +../tornado/__pycache__/simple_httpclient.cpython-34.pyc +../tornado/__pycache__/stack_context.cpython-34.pyc +../tornado/__pycache__/tcpclient.cpython-34.pyc +../tornado/__pycache__/tcpserver.cpython-34.pyc +../tornado/__pycache__/template.cpython-34.pyc +../tornado/__pycache__/testing.cpython-34.pyc +../tornado/__pycache__/util.cpython-34.pyc +../tornado/__pycache__/web.cpython-34.pyc +../tornado/__pycache__/websocket.cpython-34.pyc +../tornado/__pycache__/wsgi.cpython-34.pyc +../tornado/test/__pycache__/__init__.cpython-34.pyc +../tornado/test/__pycache__/__main__.cpython-34.pyc +../tornado/test/__pycache__/auth_test.cpython-34.pyc +../tornado/test/__pycache__/concurrent_test.cpython-34.pyc +../tornado/test/__pycache__/curl_httpclient_test.cpython-34.pyc ../tornado/test/__pycache__/escape_test.cpython-34.pyc +../tornado/test/__pycache__/gen_test.cpython-34.pyc +../tornado/test/__pycache__/httpclient_test.cpython-34.pyc +../tornado/test/__pycache__/httpserver_test.cpython-34.pyc +../tornado/test/__pycache__/httputil_test.cpython-34.pyc ../tornado/test/__pycache__/import_test.cpython-34.pyc ../tornado/test/__pycache__/ioloop_test.cpython-34.pyc -../tornado/test/__pycache__/log_test.cpython-34.pyc -../tornado/test/__pycache__/util_test.cpython-34.pyc -../tornado/test/__pycache__/concurrent_test.cpython-34.pyc -../tornado/test/__pycache__/simple_httpclient_test.cpython-34.pyc -../tornado/test/__pycache__/__init__.cpython-34.pyc -../tornado/test/__pycache__/stack_context_test.cpython-34.pyc -../tornado/test/__pycache__/wsgi_test.cpython-34.pyc -../tornado/test/__pycache__/web_test.cpython-34.pyc -../tornado/test/__pycache__/gen_test.cpython-34.pyc -../tornado/test/__pycache__/websocket_test.cpython-34.pyc -../tornado/test/__pycache__/__main__.cpython-34.pyc -../tornado/test/__pycache__/resolve_test_helper.cpython-34.pyc -../tornado/test/__pycache__/locale_test.cpython-34.pyc -../tornado/test/__pycache__/testing_test.cpython-34.pyc -../tornado/test/__pycache__/tcpclient_test.cpython-34.pyc -../tornado/test/__pycache__/httpclient_test.cpython-34.pyc ../tornado/test/__pycache__/iostream_test.cpython-34.pyc -../tornado/test/__pycache__/options_test.cpython-34.pyc -../tornado/test/__pycache__/curl_httpclient_test.cpython-34.pyc -../tornado/test/__pycache__/runtests.cpython-34.pyc -../tornado/test/__pycache__/httpserver_test.cpython-34.pyc -../tornado/test/__pycache__/process_test.cpython-34.pyc -../tornado/test/__pycache__/httputil_test.cpython-34.pyc +../tornado/test/__pycache__/locale_test.cpython-34.pyc +../tornado/test/__pycache__/log_test.cpython-34.pyc ../tornado/test/__pycache__/netutil_test.cpython-34.pyc +../tornado/test/__pycache__/options_test.cpython-34.pyc +../tornado/test/__pycache__/process_test.cpython-34.pyc +../tornado/test/__pycache__/resolve_test_helper.cpython-34.pyc +../tornado/test/__pycache__/runtests.cpython-34.pyc +../tornado/test/__pycache__/simple_httpclient_test.cpython-34.pyc +../tornado/test/__pycache__/stack_context_test.cpython-34.pyc +../tornado/test/__pycache__/tcpclient_test.cpython-34.pyc +../tornado/test/__pycache__/template_test.cpython-34.pyc +../tornado/test/__pycache__/testing_test.cpython-34.pyc +../tornado/test/__pycache__/twisted_test.cpython-34.pyc ../tornado/test/__pycache__/util.cpython-34.pyc -../tornado/test/__pycache__/auth_test.cpython-34.pyc +../tornado/test/__pycache__/util_test.cpython-34.pyc +../tornado/test/__pycache__/web_test.cpython-34.pyc +../tornado/test/__pycache__/websocket_test.cpython-34.pyc +../tornado/test/__pycache__/wsgi_test.cpython-34.pyc +../tornado/platform/__pycache__/__init__.cpython-34.pyc +../tornado/platform/__pycache__/asyncio.cpython-34.pyc +../tornado/platform/__pycache__/auto.cpython-34.pyc +../tornado/platform/__pycache__/caresresolver.cpython-34.pyc +../tornado/platform/__pycache__/common.cpython-34.pyc +../tornado/platform/__pycache__/epoll.cpython-34.pyc ../tornado/platform/__pycache__/interface.cpython-34.pyc ../tornado/platform/__pycache__/kqueue.cpython-34.pyc -../tornado/platform/__pycache__/__init__.cpython-34.pyc -../tornado/platform/__pycache__/windows.cpython-34.pyc -../tornado/platform/__pycache__/asyncio.cpython-34.pyc -../tornado/platform/__pycache__/twisted.cpython-34.pyc ../tornado/platform/__pycache__/posix.cpython-34.pyc ../tornado/platform/__pycache__/select.cpython-34.pyc -../tornado/platform/__pycache__/epoll.cpython-34.pyc -../tornado/platform/__pycache__/caresresolver.cpython-34.pyc -../tornado/platform/__pycache__/auto.cpython-34.pyc -../tornado/platform/__pycache__/common.cpython-34.pyc +../tornado/platform/__pycache__/twisted.cpython-34.pyc +../tornado/platform/__pycache__/windows.cpython-34.pyc ../tornado/speedups.cpython-34m.so ./ dependency_links.txt PKG-INFO +requires.txt SOURCES.txt top_level.txt -requires.txt