git.fiddlerwoaroof.com
Browse code

Revert "setup virtualenv"

This reverts commit 28c28e39f3816b738afa40fe4887248856ae2ae2.

fiddlerwoaroof authored on 08/08/2014 03:06:33
Showing 148 changed files
1 1
deleted file mode 100644
... ...
@@ -1,29 +0,0 @@
1
-Copyright (c) 2011 Edward Langley
2
-All rights reserved.
3
-
4
-Redistribution and use in source and binary forms, with or without
5
-modification, are permitted provided that the following conditions
6
-are met:
7
-
8
-Redistributions of source code must retain the above copyright notice,
9
-this list of conditions and the following disclaimer.
10
-
11
-Redistributions in binary form must reproduce the above copyright
12
-notice, this list of conditions and the following disclaimer in the
13
-documentation and/or other materials provided with the distribution.
14
-
15
-Neither the name of the project's author nor the names of its
16
-contributors may be used to endorse or promote products derived from
17
-this software without specific prior written permission.
18
-
19
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
-HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
25
-TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 2
deleted file mode 100644
... ...
@@ -1,80 +0,0 @@
1
-# This file must be used with "source bin/activate" *from bash*
2
-# you cannot run it directly
3
-
4
-deactivate () {
5
-    unset pydoc
6
-
7
-    # reset old environment variables
8
-    if [ -n "$_OLD_VIRTUAL_PATH" ] ; then
9
-        PATH="$_OLD_VIRTUAL_PATH"
10
-        export PATH
11
-        unset _OLD_VIRTUAL_PATH
12
-    fi
13
-    if [ -n "$_OLD_VIRTUAL_PYTHONHOME" ] ; then
14
-        PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME"
15
-        export PYTHONHOME
16
-        unset _OLD_VIRTUAL_PYTHONHOME
17
-    fi
18
-
19
-    # This should detect bash and zsh, which have a hash command that must
20
-    # be called to get it to forget past commands.  Without forgetting
21
-    # past commands the $PATH changes we made may not be respected
22
-    if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
23
-        hash -r 2>/dev/null
24
-    fi
25
-
26
-    if [ -n "$_OLD_VIRTUAL_PS1" ] ; then
27
-        PS1="$_OLD_VIRTUAL_PS1"
28
-        export PS1
29
-        unset _OLD_VIRTUAL_PS1
30
-    fi
31
-
32
-    unset VIRTUAL_ENV
33
-    if [ ! "$1" = "nondestructive" ] ; then
34
-    # Self destruct!
35
-        unset -f deactivate
36
-    fi
37
-}
38
-
39
-# unset irrelevant variables
40
-deactivate nondestructive
41
-
42
-VIRTUAL_ENV="/home/edwlan/github_repos/pybrowse"
43
-export VIRTUAL_ENV
44
-
45
-_OLD_VIRTUAL_PATH="$PATH"
46
-PATH="$VIRTUAL_ENV/bin:$PATH"
47
-export PATH
48
-
49
-# unset PYTHONHOME if set
50
-# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
51
-# could use `if (set -u; : $PYTHONHOME) ;` in bash
52
-if [ -n "$PYTHONHOME" ] ; then
53
-    _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"
54
-    unset PYTHONHOME
55
-fi
56
-
57
-if [ -z "$VIRTUAL_ENV_DISABLE_PROMPT" ] ; then
58
-    _OLD_VIRTUAL_PS1="$PS1"
59
-    if [ "x" != x ] ; then
60
-        PS1="$PS1"
61
-    else
62
-    if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
63
-        # special case for Aspen magic directories
64
-        # see http://www.zetadev.com/software/aspen/
65
-        PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
66
-    else
67
-        PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
68
-    fi
69
-    fi
70
-    export PS1
71
-fi
72
-
73
-alias pydoc="python -m pydoc"
74
-
75
-# This should detect bash and zsh, which have a hash command that must
76
-# be called to get it to forget past commands.  Without forgetting
77
-# past commands the $PATH changes we made may not be respected
78
-if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
79
-    hash -r 2>/dev/null
80
-fi
81 0
deleted file mode 100644
... ...
@@ -1,42 +0,0 @@
1
-# This file must be used with "source bin/activate.csh" *from csh*.
2
-# You cannot run it directly.
3
-# Created by Davide Di Blasi <davidedb@gmail.com>.
4
-
5
-alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate && unalias pydoc'
6
-
7
-# Unset irrelevant variables.
8
-deactivate nondestructive
9
-
10
-setenv VIRTUAL_ENV "/home/edwlan/github_repos/pybrowse"
11
-
12
-set _OLD_VIRTUAL_PATH="$PATH"
13
-setenv PATH "$VIRTUAL_ENV/bin:$PATH"
14
-
15
-
16
-
17
-if ("" != "") then
18
-    set env_name = ""
19
-else
20
-    if (`basename "$VIRTUAL_ENV"` == "__") then
21
-        # special case for Aspen magic directories
22
-        # see http://www.zetadev.com/software/aspen/
23
-        set env_name = `basename \`dirname "$VIRTUAL_ENV"\``
24
-    else
25
-        set env_name = `basename "$VIRTUAL_ENV"`
26
-    endif
27
-endif
28
-
29
-# Could be in a non-interactive environment,
30
-# in which case, $prompt is undefined and we wouldn't
31
-# care about the prompt anyway.
32
-if ( $?prompt ) then
33
-    set _OLD_VIRTUAL_PROMPT="$prompt"
34
-    set prompt = "[$env_name] $prompt"
35
-endif
36
-
37
-unset env_name
38
-
39
-alias pydoc python -m pydoc
40
-
41
-rehash
42
-
43 0
deleted file mode 100644
... ...
@@ -1,74 +0,0 @@
1
-# This file must be used with ". bin/activate.fish" *from fish* (http://fishshell.org)
2
-# you cannot run it directly
3
-
4
-function deactivate  -d "Exit virtualenv and return to normal shell environment"
5
-    # reset old environment variables
6
-    if test -n "$_OLD_VIRTUAL_PATH" 
7
-        set -gx PATH $_OLD_VIRTUAL_PATH
8
-        set -e _OLD_VIRTUAL_PATH
9
-    end
10
-    if test -n "$_OLD_VIRTUAL_PYTHONHOME"
11
-        set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME
12
-        set -e _OLD_VIRTUAL_PYTHONHOME
13
-    end
14
-    
15
-    if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
16
-        functions -e fish_prompt
17
-        set -e _OLD_FISH_PROMPT_OVERRIDE
18
-        . ( begin
19
-                printf "function fish_prompt\n\t#"
20
-                functions _old_fish_prompt
21
-            end | psub )
22
-        functions -e _old_fish_prompt
23
-    end
24
-    
25
-    set -e VIRTUAL_ENV
26
-    if test "$argv[1]" != "nondestructive"
27
-        # Self destruct!
28
-        functions -e deactivate
29
-    end
30
-end
31
-
32
-# unset irrelevant variables
33
-deactivate nondestructive
34
-
35
-set -gx VIRTUAL_ENV "/home/edwlan/github_repos/pybrowse"
36
-
37
-set -gx _OLD_VIRTUAL_PATH $PATH
38
-set -gx PATH "$VIRTUAL_ENV/bin" $PATH
39
-
40
-# unset PYTHONHOME if set
41
-if set -q PYTHONHOME
42
-    set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
43
-    set -e PYTHONHOME
44
-end
45
-
46
-if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
47
-    # fish uses a function instead of an env var to generate the prompt.
48
-    
49
-    # save the current fish_prompt function as the function _old_fish_prompt
50
-    . ( begin
51
-            printf "function _old_fish_prompt\n\t#"
52
-            functions fish_prompt
53
-        end | psub )
54
-    
55
-    # with the original prompt function renamed, we can override with our own.
56
-    function fish_prompt
57
-        # Prompt override?
58
-        if test -n ""
59
-            printf "%s%s%s" "" (set_color normal) (_old_fish_prompt)
60
-            return
61
-        end
62
-        # ...Otherwise, prepend env
63
-        set -l _checkbase (basename "$VIRTUAL_ENV")
64
-        if test $_checkbase = "__"
65
-            # special case for Aspen magic directories
66
-            # see http://www.zetadev.com/software/aspen/
67
-            printf "%s[%s]%s %s" (set_color -b blue white) (basename (dirname "$VIRTUAL_ENV")) (set_color normal) (_old_fish_prompt)
68
-        else
69
-            printf "%s(%s)%s%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal) (_old_fish_prompt)
70
-        end
71
-    end 
72
-    
73
-    set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
74
-end
75 0
deleted file mode 100644
... ...
@@ -1,34 +0,0 @@
1
-"""By using execfile(this_file, dict(__file__=this_file)) you will
2
-activate this virtualenv environment.
3
-
4
-This can be used when you must use an existing Python interpreter, not
5
-the virtualenv bin/python
6
-"""
7
-
8
-try:
9
-    __file__
10
-except NameError:
11
-    raise AssertionError(
12
-        "You must run this like execfile('path/to/activate_this.py', dict(__file__='path/to/activate_this.py'))")
13
-import sys
14
-import os
15
-
16
-old_os_path = os.environ['PATH']
17
-os.environ['PATH'] = os.path.dirname(os.path.abspath(__file__)) + os.pathsep + old_os_path
18
-base = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
19
-if sys.platform == 'win32':
20
-    site_packages = os.path.join(base, 'Lib', 'site-packages')
21
-else:
22
-    site_packages = os.path.join(base, 'lib', 'python%s' % sys.version[:3], 'site-packages')
23
-prev_sys_path = list(sys.path)
24
-import site
25
-site.addsitedir(site_packages)
26
-sys.real_prefix = sys.prefix
27
-sys.prefix = base
28
-# Move the added items to the front of the path:
29
-new_sys_path = []
30
-for item in list(sys.path):
31
-    if item not in prev_sys_path:
32
-        new_sys_path.append(item)
33
-        sys.path.remove(item)
34
-sys.path[:0] = new_sys_path
35 0
deleted file mode 100755
... ...
@@ -1,9 +0,0 @@
1
-#!/home/edwlan/github_repos/pybrowse/bin/python2.7
2
-# EASY-INSTALL-ENTRY-SCRIPT: 'setuptools==0.6c11','console_scripts','easy_install'
3
-__requires__ = 'setuptools==0.6c11'
4
-import sys
5
-from pkg_resources import load_entry_point
6
-
7
-sys.exit(
8
-   load_entry_point('setuptools==0.6c11', 'console_scripts', 'easy_install')()
9
-)
10 0
deleted file mode 100755
... ...
@@ -1,9 +0,0 @@
1
-#!/home/edwlan/github_repos/pybrowse/bin/python2.7
2
-# EASY-INSTALL-ENTRY-SCRIPT: 'setuptools==0.6c11','console_scripts','easy_install-2.7'
3
-__requires__ = 'setuptools==0.6c11'
4
-import sys
5
-from pkg_resources import load_entry_point
6
-
7
-sys.exit(
8
-   load_entry_point('setuptools==0.6c11', 'console_scripts', 'easy_install-2.7')()
9
-)
10 0
deleted file mode 100755
... ...
@@ -1,9 +0,0 @@
1
-#!/home/edwlan/github_repos/pybrowse/bin/python2.7
2
-# EASY-INSTALL-ENTRY-SCRIPT: 'pip==1.3.1','console_scripts','pip'
3
-__requires__ = 'pip==1.3.1'
4
-import sys
5
-from pkg_resources import load_entry_point
6
-
7
-sys.exit(
8
-   load_entry_point('pip==1.3.1', 'console_scripts', 'pip')()
9
-)
10 0
deleted file mode 100755
... ...
@@ -1,9 +0,0 @@
1
-#!/home/edwlan/github_repos/pybrowse/bin/python2.7
2
-# EASY-INSTALL-ENTRY-SCRIPT: 'pip==1.3.1','console_scripts','pip-2.7'
3
-__requires__ = 'pip==1.3.1'
4
-import sys
5
-from pkg_resources import load_entry_point
6
-
7
-sys.exit(
8
-   load_entry_point('pip==1.3.1', 'console_scripts', 'pip-2.7')()
9
-)
10 0
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-python2.7
2 0
\ No newline at end of file
3 1
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-python2.7
2 0
\ No newline at end of file
3 1
deleted file mode 100755
4 2
Binary files a/bin/python2.7 and /dev/null differ
5 3
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/include/python2.7
2 0
\ No newline at end of file
3 1
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/UserDict.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
4 2
Binary files a/lib/python2.7/UserDict.pyc and /dev/null differ
5 3
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/_abcoll.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
4 2
Binary files a/lib/python2.7/_abcoll.pyc and /dev/null differ
5 3
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/_weakrefset.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
4 2
Binary files a/lib/python2.7/_weakrefset.pyc and /dev/null differ
5 3
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/abc.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
4 2
Binary files a/lib/python2.7/abc.pyc and /dev/null differ
5 3
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/codecs.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
4 2
Binary files a/lib/python2.7/codecs.pyc and /dev/null differ
5 3
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/copy_reg.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
4 2
Binary files a/lib/python2.7/copy_reg.pyc and /dev/null differ
5 3
deleted file mode 100644
... ...
@@ -1,101 +0,0 @@
1
-import os
2
-import sys
3
-import warnings 
4
-import imp
5
-import opcode # opcode is not a virtualenv module, so we can use it to find the stdlib
6
-              # Important! To work on pypy, this must be a module that resides in the
7
-              # lib-python/modified-x.y.z directory
8
-
9
-dirname = os.path.dirname
10
-
11
-distutils_path = os.path.join(os.path.dirname(opcode.__file__), 'distutils')
12
-if os.path.normpath(distutils_path) == os.path.dirname(os.path.normpath(__file__)):
13
-    warnings.warn(
14
-        "The virtualenv distutils package at %s appears to be in the same location as the system distutils?")
15
-else:
16
-    __path__.insert(0, distutils_path)
17
-    real_distutils = imp.load_module("_virtualenv_distutils", None, distutils_path, ('', '', imp.PKG_DIRECTORY))
18
-    # Copy the relevant attributes
19
-    try:
20
-        __revision__ = real_distutils.__revision__
21
-    except AttributeError:
22
-        pass
23
-    __version__ = real_distutils.__version__
24
-
25
-from distutils import dist, sysconfig
26
-
27
-try:
28
-    basestring
29
-except NameError:
30
-    basestring = str
31
-
32
-## patch build_ext (distutils doesn't know how to get the libs directory
33
-## path on windows - it hardcodes the paths around the patched sys.prefix)
34
-
35
-if sys.platform == 'win32':
36
-    from distutils.command.build_ext import build_ext as old_build_ext
37
-    class build_ext(old_build_ext):
38
-        def finalize_options (self):
39
-            if self.library_dirs is None:
40
-                self.library_dirs = []
41
-            elif isinstance(self.library_dirs, basestring):
42
-                self.library_dirs = self.library_dirs.split(os.pathsep)
43
-            
44
-            self.library_dirs.insert(0, os.path.join(sys.real_prefix, "Libs"))
45
-            old_build_ext.finalize_options(self)
46
-            
47
-    from distutils.command import build_ext as build_ext_module 
48
-    build_ext_module.build_ext = build_ext
49
-
50
-## distutils.dist patches:
51
-
52
-old_find_config_files = dist.Distribution.find_config_files
53
-def find_config_files(self):
54
-    found = old_find_config_files(self)
55
-    system_distutils = os.path.join(distutils_path, 'distutils.cfg')
56
-    #if os.path.exists(system_distutils):
57
-    #    found.insert(0, system_distutils)
58
-        # What to call the per-user config file
59
-    if os.name == 'posix':
60
-        user_filename = ".pydistutils.cfg"
61
-    else:
62
-        user_filename = "pydistutils.cfg"
63
-    user_filename = os.path.join(sys.prefix, user_filename)
64
-    if os.path.isfile(user_filename):
65
-        for item in list(found):
66
-            if item.endswith('pydistutils.cfg'):
67
-                found.remove(item)
68
-        found.append(user_filename)
69
-    return found
70
-dist.Distribution.find_config_files = find_config_files
71
-
72
-## distutils.sysconfig patches:
73
-
74
-old_get_python_inc = sysconfig.get_python_inc
75
-def sysconfig_get_python_inc(plat_specific=0, prefix=None):
76
-    if prefix is None:
77
-        prefix = sys.real_prefix
78
-    return old_get_python_inc(plat_specific, prefix)
79
-sysconfig_get_python_inc.__doc__ = old_get_python_inc.__doc__
80
-sysconfig.get_python_inc = sysconfig_get_python_inc
81
-
82
-old_get_python_lib = sysconfig.get_python_lib
83
-def sysconfig_get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
84
-    if standard_lib and prefix is None:
85
-        prefix = sys.real_prefix
86
-    return old_get_python_lib(plat_specific, standard_lib, prefix)
87
-sysconfig_get_python_lib.__doc__ = old_get_python_lib.__doc__
88
-sysconfig.get_python_lib = sysconfig_get_python_lib
89
-
90
-old_get_config_vars = sysconfig.get_config_vars
91
-def sysconfig_get_config_vars(*args):
92
-    real_vars = old_get_config_vars(*args)
93
-    if sys.platform == 'win32':
94
-        lib_dir = os.path.join(sys.real_prefix, "libs")
95
-        if isinstance(real_vars, dict) and 'LIBDIR' not in real_vars:
96
-            real_vars['LIBDIR'] = lib_dir # asked for all
97
-        elif isinstance(real_vars, list) and 'LIBDIR' in args:
98
-            real_vars = real_vars + [lib_dir] # asked for list
99
-    return real_vars
100
-sysconfig_get_config_vars.__doc__ = old_get_config_vars.__doc__
101
-sysconfig.get_config_vars = sysconfig_get_config_vars
102 0
deleted file mode 100644
103 1
Binary files a/lib/python2.7/distutils/__init__.pyc and /dev/null differ
104 2
deleted file mode 100644
... ...
@@ -1,6 +0,0 @@
1
-# This is a config file local to this virtualenv installation
2
-# You may include options that will be used by all distutils commands,
3
-# and by easy_install.  For instance:
4
-#
5
-#   [easy_install]
6
-#   find_links = http://mylocalsite
7 0
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/encodings
2 0
\ No newline at end of file
3 1
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/fnmatch.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
4 2
Binary files a/lib/python2.7/fnmatch.pyc and /dev/null differ
5 3
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/genericpath.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
4 2
Binary files a/lib/python2.7/genericpath.pyc and /dev/null differ
5 3
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/lib-dynload
2 0
\ No newline at end of file
3 1
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/linecache.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
4 2
Binary files a/lib/python2.7/linecache.pyc and /dev/null differ
5 3
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/locale.py
2 0
\ No newline at end of file
4 2
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/ntpath.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
... ...
@@ -1 +0,0 @@
1
-/usr
2 0
\ No newline at end of file
3 1
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/os.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
4 2
Binary files a/lib/python2.7/os.pyc and /dev/null differ
5 3
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/posixpath.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
4 2
Binary files a/lib/python2.7/posixpath.pyc and /dev/null differ
5 3
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/re.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
4 2
Binary files a/lib/python2.7/re.pyc and /dev/null differ
5 3
deleted file mode 100644
... ...
@@ -1,4 +0,0 @@
1
-import sys; sys.__plen = len(sys.path)
2
-./setuptools-0.6c11-py2.7.egg
3
-./pip-1.3.1-py2.7.egg
4
-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)
5 0
deleted file mode 100644
... ...
@@ -1,776 +0,0 @@
1
-Metadata-Version: 1.1
2
-Name: pip
3
-Version: 1.3.1
4
-Summary: A tool for installing and managing Python packages.
5
-Home-page: http://www.pip-installer.org
6
-Author: The pip developers
7
-Author-email: python-virtualenv@groups.google.com
8
-License: MIT
9
-Description: 
10
-        Project Info
11
-        ============
12
-        
13
-        * Project Page: https://github.com/pypa/pip
14
-        * Bug Tracking: https://github.com/pypa/pip/issues
15
-        * Mailing list: http://groups.google.com/group/python-virtualenv
16
-        * Docs: http://www.pip-installer.org
17
-        * IRC: #pip.
18
-        
19
-        
20
-        Quickstart
21
-        ==========
22
-        
23
-        Install a package:
24
-        
25
-        ::
26
-        
27
-          $ pip install SomePackage==1.0
28
-            [...]
29
-            Successfully installed SomePackage
30
-        
31
-        Show what files were installed:
32
-        
33
-        ::
34
-        
35
-          $ pip show --files SomePackage
36
-            Name: SomePackage
37
-            Version: 1.0
38
-            Location: /my/env/lib/pythonx.x/site-packages
39
-            Files:
40
-             ../somepackage/__init__.py
41
-             [...]
42
-        
43
-        List what packages are outdated:
44
-        
45
-        ::
46
-        
47
-          $ pip list --outdated
48
-            SomePackage (Current: 1.0 Latest: 2.0)
49
-        
50
-        Upgrade a package:
51
-        
52
-        ::
53
-        
54
-          $ pip install --upgrade SomePackage
55
-            [...]
56
-            Found existing installation: SomePackage 1.0
57
-            Uninstalling SomePackage:
58
-              Successfully uninstalled SomePackage
59
-            Running setup.py install for SomePackage
60
-            Successfully installed SomePackage
61
-        
62
-        Uninstall a package:
63
-        
64
-        ::
65
-        
66
-          $ pip uninstall SomePackage
67
-            Uninstalling SomePackage:
68
-              /my/env/lib/pythonx.x/site-packages/somepackage
69
-            Proceed (y/n)? y
70
-            Successfully uninstalled SomePackage
71
-        
72
-        
73
-        Changelog
74
-        =========
75
-        
76
-        1.3.1 (2013-03-08)
77
-        ------------------
78
-        
79
-        * Fixed a major backward incompatible change of parsing URLs to externally
80
-          hosted packages that got accidentily included in 1.3.
81
-        
82
-        1.3 (2013-03-07)
83
-        ----------------
84
-        
85
-        * SSL Cert Verification; Make https the default for PyPI access.
86
-          Thanks James Cleveland, Giovanni Bajo, Marcus Smith and many others (Pull #789).
87
-        
88
-        * Added "pip list" for listing installed packages and the latest version
89
-          available. Thanks Rafael Caricio, Miguel Araujo, Dmitry Gladkov (Pull #752)
90
-        
91
-        * Fixed security issues with pip's use of temp build directories.
92
-          Thanks David (d1b) and Thomas Guttler. (Pull #780)
93
-        
94
-        * Improvements to sphinx docs and cli help. (Pull #773)
95
-        
96
-        * Fixed issue #707, dealing with OS X temp dir handling, which was causing
97
-          global NumPy installs to fail. (Pull #768)
98
-        
99
-        * Split help output into general vs command-specific option groups.
100
-          Thanks Georgi Valkov. (Pull #744; Pull #721 contains preceding refactor)
101
-        
102
-        * Fixed dependency resolution when installing from archives with uppercase
103
-          project names. (Pull #724)
104
-        
105
-        * Fixed problem where re-installs always occurred when using file:// find-links.
106
-          (Pulls #683/#702)
107
-        
108
-        * "pip install -v" now shows the full download url, not just the archive name.
109
-          Thanks Marc Abramowitz (Pull #687)
110
-        
111
-        * Fix to prevent unnecessary PyPI redirects. Thanks Alex Gronholm (Pull #695)
112
-        
113
-        * Fixed issue #670 - install failure under Python 3 when the same version
114
-          of a package is found under 2 different URLs.  Thanks Paul Moore (Pull #671)
115
-        
116
-        * Fix git submodule recursive updates.  Thanks Roey Berman. (Pulls #674)
117
-        
118
-        * Explicitly ignore rel='download' links while looking for html pages.
119
-          Thanks Maxime R. (Pull #677)
120
-        
121
-        * --user/--upgrade install options now work together. Thanks 'eevee' for
122
-          discovering the problem. (Pull #705)
123
-        
124
-        * Added check in ``install --download`` to prevent re-downloading if the target
125
-          file already exists. Thanks Andrey Bulgakov. (Pull #669)
126
-        
127
-        * Added support for bare paths (including relative paths) as argument to
128
-          `--find-links`. Thanks Paul Moore for draft patch.
129
-        
130
-        * Added support for --no-index in requirements files.
131
-        
132
-        * Added "pip show" command to get information about an installed package.
133
-          Fixes #131. Thanks Kelsey Hightower and Rafael Caricio.
134
-        
135
-        * Added `--root` option for "pip install" to specify root directory. Behaves
136
-          like the same option in distutils but also plays nice with pip's egg-info.
137
-          Thanks Przemek Wrzos.  (Issue #253 / Pull #693)
138
-        
139
-        1.2.1 (2012-09-06)
140
-        ------------------
141
-        
142
-        * Fixed a regression introduced in 1.2 about raising an exception when
143
-          not finding any files to uninstall in the current environment. Thanks for
144
-          the fix, Marcus Smith.
145
-        
146
-        1.2 (2012-09-01)
147
-        ----------------
148
-        
149
-        * **Dropped support for Python 2.4** The minimum supported Python version is
150
-          now Python 2.5.
151
-        
152
-        * Fixed issue #605 - pypi mirror support broken on some DNS responses. Thanks
153
-          philwhin.
154
-        
155
-        * Fixed issue #355 - pip uninstall removes files it didn't install. Thanks
156
-          pjdelport.
157
-        
158
-        * Fixed issues #493, #494, #440, and #573 related to improving support for the
159
-          user installation scheme. Thanks Marcus Smith.
160
-        
161
-        * Write failure log to temp file if default location is not writable. Thanks
162
-          andreigc.
163
-        
164
-        * Pull in submodules for git editable checkouts. Fixes #289 and #421. Thanks
165
-          Hsiaoming Yang and Markus Hametner.
166
-        
167
-        * Use a temporary directory as the default build location outside of a
168
-          virtualenv. Fixes issues #339 and #381. Thanks Ben Rosser.
169
-        
170
-        * Added support for specifying extras with local editables. Thanks Nick
171
-          Stenning.
172
-        
173
-        * Added ``--egg`` flag to request egg-style rather than flat installation. Refs
174
-          issue #3. Thanks Kamal Bin Mustafa.
175
-        
176
-        * Fixed issue #510 - prevent e.g. ``gmpy2-2.0.tar.gz`` from matching a request
177
-          to ``pip install gmpy``; sdist filename must begin with full project name
178
-          followed by a dash. Thanks casevh for the report.
179
-        
180
-        * Fixed issue #504 - allow package URLS to have querystrings. Thanks W.
181
-          Trevor King.
182
-        
183
-        * Fixed issue #58 - pip freeze now falls back to non-editable format rather
184
-          than blowing up if it can't determine the origin repository of an editable.
185
-          Thanks Rory McCann.
186
-        
187
-        * Added a `__main__.py` file to enable `python -m pip` on Python versions
188
-          that support it. Thanks Alexey Luchko.
189
-        
190
-        * Fixed issue #487 - upgrade from VCS url of project that does exist on
191
-          index. Thanks Andrew Knapp for the report.
192
-        
193
-        * Fixed issue #486 - fix upgrade from VCS url of project with no distribution
194
-          on index.  Thanks Andrew Knapp for the report.
195
-        
196
-        * Fixed issue #427 - clearer error message on a malformed VCS url. Thanks
197
-          Thomas Fenzl.
198
-        
199
-        * Added support for using any of the built in guaranteed algorithms in
200
-          ``hashlib`` as a checksum hash.
201
-        
202
-        * Fixed issue #321 - Raise an exception if current working directory can't be
203
-          found or accessed.
204
-        
205
-        * Fixed issue #82 - Removed special casing of the user directory and use the
206
-          Python default instead.
207
-        
208
-        * Fixed #436 - Only warn about version conflicts if there is actually one.
209
-          This re-enables using ``==dev`` in requirements files.
210
-        
211
-        * Moved tests to be run on Travis CI: http://travis-ci.org/pypa/pip
212
-        
213
-        * Added a better help formatter.
214
-        
215
-        1.1 (2012-02-16)
216
-        ----------------
217
-        
218
-        * Fixed issue #326 - don't crash when a package's setup.py emits UTF-8 and
219
-          then fails. Thanks Marc Abramowitz.
220
-        
221
-        * Added ``--target`` option for installing directly to arbitrary directory.
222
-          Thanks Stavros Korokithakis.
223
-        
224
-        * Added support for authentication with Subversion repositories. Thanks
225
-          Qiangning Hong.
226
-        
227
-        * Fixed issue #315 - ``--download`` now downloads dependencies as well.
228
-          Thanks Qiangning Hong.
229
-        
230
-        * Errors from subprocesses will display the current working directory.
231
-          Thanks Antti Kaihola.
232
-        
233
-        * Fixed issue #369 - compatibility with Subversion 1.7. Thanks Qiangning
234
-          Hong. Note that setuptools remains incompatible with Subversion 1.7; to
235
-          get the benefits of pip's support you must use Distribute rather than
236
-          setuptools.
237
-        
238
-        * Fixed issue #57 - ignore py2app-generated OS X mpkg zip files in finder.
239
-          Thanks Rene Dudfield.
240
-        
241
-        * Fixed issue #182 - log to ~/Library/Logs/ by default on OS X framework
242
-          installs. Thanks Dan Callahan for report and patch.
243
-        
244
-        * Fixed issue #310 - understand version tags without minor version ("py3")
245
-          in sdist filenames. Thanks Stuart Andrews for report and Olivier Girardot for
246
-          patch.
247
-        
248
-        * Fixed issue #7 - Pip now supports optionally installing setuptools
249
-          "extras" dependencies; e.g. "pip install Paste[openid]". Thanks Matt Maker
250
-          and Olivier Girardot.
251
-        
252
-        * Fixed issue #391 - freeze no longer borks on requirements files with
253
-          --index-url or --find-links. Thanks Herbert Pfennig.
254
-        
255
-        * Fixed issue #288 - handle symlinks properly. Thanks lebedov for the patch.
256
-        
257
-        * Fixed issue #49 - pip install -U no longer reinstalls the same versions of
258
-          packages. Thanks iguananaut for the pull request.
259
-        
260
-        * Removed ``-E``/``--environment`` option and ``PIP_RESPECT_VIRTUALENV``;
261
-          both use a restart-in-venv mechanism that's broken, and neither one is
262
-          useful since every virtualenv now has pip inside it.  Replace ``pip -E
263
-          path/to/venv install Foo`` with ``virtualenv path/to/venv &&
264
-          path/to/venv/pip install Foo``.
265
-        
266
-        * Fixed issue #366 - pip throws IndexError when it calls `scraped_rel_links`
267
-        
268
-        * Fixed issue #22 - pip search should set and return a userful shell status code
269
-        
270
-        * Fixed issue #351 and #365 - added global ``--exists-action`` command line
271
-          option to easier script file exists conflicts, e.g. from editable
272
-          requirements from VCS that have a changed repo URL.
273
-        
274
-        
275
-        1.0.2 (2011-07-16)
276
-        ------------------
277
-        
278
-        * Fixed docs issues.
279
-        * Fixed issue #295 - Reinstall a package when using the ``install -I`` option
280
-        * Fixed issue #283 - Finds a Git tag pointing to same commit as origin/master
281
-        * Fixed issue #279 - Use absolute path for path to docs in setup.py
282
-        * Fixed issue #314 - Correctly handle exceptions on Python3.
283
-        * Fixed issue #320 - Correctly parse ``--editable`` lines in requirements files
284
-        
285
-        1.0.1 (2011-04-30)
286
-        ------------------
287
-        
288
-        * Start to use git-flow.
289
-        * Fixed issue #274 - `find_command` should not raise AttributeError
290
-        * Fixed issue #273 - respect Content-Disposition header. Thanks Bradley Ayers.
291
-        * Fixed issue #233 - pathext handling on Windows.
292
-        * Fixed issue #252 - svn+svn protocol.
293
-        * Fixed issue #44 - multiple CLI searches.
294
-        * Fixed issue #266 - current working directory when running setup.py clean.
295
-        
296
-        1.0 (2011-04-04)
297
-        ----------------
298
-        
299
-        * Added Python 3 support! Huge thanks to Vinay Sajip, Vitaly Babiy, Kelsey
300
-          Hightower, and Alex Gronholm, among others.
301
-        
302
-        * Download progress only shown on a real TTY. Thanks Alex Morega.
303
-        
304
-        * Fixed finding of VCS binaries to not be fooled by same-named directories.
305
-          Thanks Alex Morega.
306
-        
307
-        * Fixed uninstall of packages from system Python for users of Debian/Ubuntu
308
-          python-setuptools package (workaround until fixed in Debian and Ubuntu).
309
-        
310
-        * Added `get-pip.py <https://raw.github.com/pypa/pip/master/contrib/get-pip.py>`_
311
-          installer. Simply download and execute it, using the Python interpreter of
312
-          your choice::
313
-        
314
-            $ curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
315
-            $ python get-pip.py
316
-        
317
-          This may have to be run as root.
318
-        
319
-          .. note::
320
-        
321
-              Make sure you have `distribute <http://pypi.python.org/pypi/distribute>`_
322
-              installed before using the installer!
323
-        
324
-        0.8.3
325
-        -----
326
-        
327
-        * Moved main repository to Github: https://github.com/pypa/pip
328
-        
329
-        * Transferred primary maintenance from Ian to Jannis Leidel, Carl Meyer, Brian Rosner
330
-        
331
-        * Fixed issue #14 - No uninstall-on-upgrade with URL package. Thanks Oliver Tonnhofer
332
-        
333
-        * Fixed issue #163 - Egg name not properly resolved. Thanks Igor Sobreira
334
-        
335
-        * Fixed issue #178 - Non-alphabetical installation of requirements. Thanks Igor Sobreira
336
-        
337
-        * Fixed issue #199 - Documentation mentions --index instead of --index-url. Thanks Kelsey Hightower
338
-        
339
-        * Fixed issue #204 - rmtree undefined in mercurial.py. Thanks Kelsey Hightower
340
-        
341
-        * Fixed bug in Git vcs backend that would break during reinstallation.
342
-        
343
-        * Fixed bug in Mercurial vcs backend related to pip freeze and branch/tag resolution.
344
-        
345
-        * Fixed bug in version string parsing related to the suffix "-dev".
346
-        
347
-        0.8.2
348
-        -----
349
-        
350
-        * Avoid redundant unpacking of bundles (from pwaller)
351
-        
352
-        * Fixed issue #32, #150, #161 - Fixed checking out the correct
353
-          tag/branch/commit when updating an editable Git requirement.
354
-        
355
-        * Fixed issue #49 - Added ability to install version control requirements
356
-          without making them editable, e.g.::
357
-        
358
-            pip install git+https://github.com/pypa/pip/
359
-        
360
-        * Fixed issue #175 - Correctly locate build and source directory on Mac OS X.
361
-        
362
-        * Added ``git+https://`` scheme to Git VCS backend.
363
-        
364
-        0.8.1
365
-        -----
366
-        
367
-        * Added global --user flag as shortcut for --install-option="--user". From
368
-          Ronny Pfannschmidt.
369
-        
370
-        * Added support for `PyPI mirrors <http://pypi.python.org/mirrors>`_ as
371
-          defined in `PEP 381 <http://www.python.org/dev/peps/pep-0381/>`_, from
372
-          Jannis Leidel.
373
-        
374
-        * Fixed issue #138 - Git revisions ignored. Thanks John-Scott Atlakson.
375
-        
376
-        * Fixed issue #95 - Initial editable install of github package from a tag fails. Thanks John-Scott Atlakson.
377
-        
378
-        * Fixed issue #107 - Can't install if a directory in cwd has the same name as the package you're installing.
379
-        
380
-        * Fixed issue #39 - --install-option="--prefix=~/.local" ignored with -e.
381
-          Thanks Ronny Pfannschmidt and Wil Tan.
382
-        
383
-        
384
-        
385
-        0.8
386
-        ---
387
-        
388
-        * Track which ``build/`` directories pip creates, never remove directories
389
-          it doesn't create.  From Hugo Lopes Tavares.
390
-        
391
-        * Pip now accepts file:// index URLs. Thanks Dave Abrahams.
392
-        
393
-        * Various cleanup to make test-running more consistent and less fragile.
394
-          Thanks Dave Abrahams.
395
-        
396
-        * Real Windows support (with passing tests). Thanks Dave Abrahams.
397
-        
398
-        * ``pip-2.7`` etc. scripts are created (Python-version specific scripts)
399
-        
400
-        * ``contrib/build-standalone`` script creates a runnable ``.zip`` form of
401
-          pip, from Jannis Leidel
402
-        
403
-        * Editable git repos are updated when reinstalled
404
-        
405
-        * Fix problem with ``--editable`` when multiple ``.egg-info/`` directories
406
-          are found.
407
-        
408
-        * A number of VCS-related fixes for ``pip freeze``, from Hugo Lopes Tavares.
409
-        
410
-        * Significant test framework changes, from Hugo Lopes Tavares.
411
-        
412
-        0.7.2
413
-        -----
414
-        
415
-        * Set zip_safe=False to avoid problems some people are encountering where
416
-          pip is installed as a zip file.
417
-        
418
-        0.7.1
419
-        -----
420
-        
421
-        * Fixed opening of logfile with no directory name. Thanks Alexandre Conrad.
422
-        
423
-        * Temporary files are consistently cleaned up, especially after
424
-          installing bundles, also from Alex Conrad.
425
-        
426
-        * Tests now require at least ScriptTest 1.0.3.
427
-        
428
-        0.7
429
-        ---
430
-        
431
-        * Fixed uninstallation on Windows
432
-        * Added ``pip search`` command.
433
-        * Tab-complete names of installed distributions for ``pip uninstall``.
434
-        * Support tab-completion when there is a global-option before the
435
-          subcommand.
436
-        * Install header files in standard (scheme-default) location when installing
437
-          outside a virtualenv. Install them to a slightly more consistent
438
-          non-standard location inside a virtualenv (since the standard location is
439
-          a non-writable symlink to the global location).
440
-        * pip now logs to a central location by default (instead of creating
441
-          ``pip-log.txt`` all over the place) and constantly overwrites the
442
-          file in question. On Unix and Mac OS X this is ``'$HOME/.pip/pip.log'``
443
-          and on Windows it's ``'%HOME%\\pip\\pip.log'``. You are still able to
444
-          override this location with the ``$PIP_LOG_FILE`` environment variable.
445
-          For a complete (appended) logfile use the separate ``'--log'`` command line
446
-          option.
447
-        * Fixed an issue with Git that left an editable packge as a checkout of a
448
-          remote branch, even if the default behaviour would have been fine, too.
449
-        * Fixed installing from a Git tag with older versions of Git.
450
-        * Expand "~" in logfile and download cache paths.
451
-        * Speed up installing from Mercurial repositories by cloning without
452
-          updating the working copy multiple times.
453
-        * Fixed installing directly from directories (e.g.
454
-          ``pip install path/to/dir/``).
455
-        * Fixed installing editable packages with ``svn+ssh`` URLs.
456
-        * Don't print unwanted debug information when running the freeze command.
457
-        * Create log file directory automatically. Thanks Alexandre Conrad.
458
-        * Make test suite easier to run successfully. Thanks Dave Abrahams.
459
-        * Fixed "pip install ." and "pip install .."; better error for directory
460
-          without setup.py. Thanks Alexandre Conrad.
461
-        * Support Debian/Ubuntu "dist-packages" in zip command. Thanks duckx.
462
-        * Fix relative --src folder. Thanks Simon Cross.
463
-        * Handle missing VCS with an error message. Thanks Alexandre Conrad.
464
-        * Added --no-download option to install; pairs with --no-install to separate
465
-          download and installation into two steps. Thanks Simon Cross.
466
-        * Fix uninstalling from requirements file containing -f, -i, or
467
-          --extra-index-url.
468
-        * Leftover build directories are now removed. Thanks Alexandre Conrad.
469
-        
470
-        0.6.3
471
-        -----
472
-        
473
-        * Fixed import error on Windows with regard to the backwards compatibility
474
-          package
475
-        
476
-        0.6.2
477
-        -----
478
-        
479
-        * Fixed uninstall when /tmp is on a different filesystem.
480
-        
481
-        * Fixed uninstallation of distributions with namespace packages.
482
-        
483
-        0.6.1
484
-        -----
485
-        
486
-        * Added support for the ``https`` and ``http-static`` schemes to the
487
-          Mercurial and ``ftp`` scheme to the Bazaar backend.
488
-        
489
-        * Fixed uninstallation of scripts installed with easy_install.
490
-        
491
-        * Fixed an issue in the package finder that could result in an
492
-          infinite loop while looking for links.
493
-        
494
-        * Fixed issue with ``pip bundle`` and local files (which weren't being
495
-          copied into the bundle), from Whit Morriss.
496
-        
497
-        0.6
498
-        ---
499
-        
500
-        * Add ``pip uninstall`` and uninstall-before upgrade (from Carl
501
-          Meyer).
502
-        
503
-        * Extended configurability with config files and environment variables.
504
-        
505
-        * Allow packages to be upgraded, e.g., ``pip install Package==0.1``
506
-          then ``pip install Package==0.2``.
507
-        
508
-        * Allow installing/upgrading to Package==dev (fix "Source version does not
509
-          match target version" errors).
510
-        
511
-        * Added command and option completion for bash and zsh.
512
-        
513
-        * Extended integration with virtualenv by providing an option to
514
-          automatically use an active virtualenv and an option to warn if no active
515
-          virtualenv is found.
516
-        
517
-        * Fixed a bug with pip install --download and editable packages, where
518
-          directories were being set with 0000 permissions, now defaults to 755.
519
-        
520
-        * Fixed uninstallation of easy_installed console_scripts.
521
-        
522
-        * Fixed uninstallation on Mac OS X Framework layout installs
523
-        
524
-        * Fixed bug preventing uninstall of editables with source outside venv.
525
-        
526
-        * Creates download cache directory if not existing.
527
-        
528
-        0.5.1
529
-        -----
530
-        
531
-        * Fixed a couple little bugs, with git and with extensions.
532
-        
533
-        0.5
534
-        ---
535
-        
536
-        * Added ability to override the default log file name (``pip-log.txt``)
537
-          with the environmental variable ``$PIP_LOG_FILE``.
538
-        
539
-        * Made the freeze command print installed packages to stdout instead of
540
-          writing them to a file. Use simple redirection (e.g.
541
-          ``pip freeze > stable-req.txt``) to get a file with requirements.
542
-        
543
-        * Fixed problem with freezing editable packages from a Git repository.
544
-        
545
-        * Added support for base URLs using ``<base href='...'>`` when parsing
546
-          HTML pages.
547
-        
548
-        * Fixed installing of non-editable packages from version control systems.
549
-        
550
-        * Fixed issue with Bazaar's bzr+ssh scheme.
551
-        
552
-        * Added --download-dir option to the install command to retrieve package
553
-          archives. If given an editable package it will create an archive of it.
554
-        
555
-        * Added ability to pass local file and directory paths to ``--find-links``,
556
-          e.g. ``--find-links=file:///path/to/my/private/archive``
557
-        
558
-        * Reduced the amount of console log messages when fetching a page to find a
559
-          distribution was problematic. The full messages can be found in pip-log.txt.
560
-        
561
-        * Added ``--no-deps`` option to install ignore package dependencies
562
-        
563
-        * Added ``--no-index`` option to ignore the package index (PyPI) temporarily
564
-        
565
-        * Fixed installing editable packages from Git branches.
566
-        
567
-        * Fixes freezing of editable packages from Mercurial repositories.
568
-        
569
-        * Fixed handling read-only attributes of build files, e.g. of Subversion and
570
-          Bazaar on Windows.
571
-        
572
-        * When downloading a file from a redirect, use the redirected
573
-          location's extension to guess the compression (happens specifically
574
-          when redirecting to a bitbucket.org tip.gz file).
575
-        
576
-        * Editable freeze URLs now always use revision hash/id rather than tip or
577
-          branch names which could move.
578
-        
579
-        * Fixed comparison of repo URLs so incidental differences such as
580
-          presence/absence of final slashes or quoted/unquoted special
581
-          characters don't trigger "ignore/switch/wipe/backup" choice.
582
-        
583
-        * Fixed handling of attempt to checkout editable install to a
584
-          non-empty, non-repo directory.
585
-        
586
-        0.4
587
-        ---
588
-        
589
-        * Make ``-e`` work better with local hg repositories
590
-        
591
-        * Construct PyPI URLs the exact way easy_install constructs URLs (you
592
-          might notice this if you use a custom index that is
593
-          slash-sensitive).
594
-        
595
-        * Improvements on Windows (from `Ionel Maries Cristian
596
-          <http://ionelmc.wordpress.com/>`_).
597
-        
598
-        * Fixed problem with not being able to install private git repositories.
599
-        
600
-        * Make ``pip zip`` zip all its arguments, not just the first.
601
-        
602
-        * Fix some filename issues on Windows.
603
-        
604
-        * Allow the ``-i`` and ``--extra-index-url`` options in requirements
605
-          files.
606
-        
607
-        * Fix the way bundle components are unpacked and moved around, to make
608
-          bundles work.
609
-        
610
-        * Adds ``-s`` option to allow the access to the global site-packages if a
611
-          virtualenv is to be created.
612
-        
613
-        * Fixed support for Subversion 1.6.
614
-        
615
-        0.3.1
616
-        -----
617
-        
618
-        * Improved virtualenv restart and various path/cleanup problems on win32.
619
-        
620
-        * Fixed a regression with installing from svn repositories (when not
621
-          using ``-e``).
622
-        
623
-        * Fixes when installing editable packages that put their source in a
624
-          subdirectory (like ``src/``).
625
-        
626
-        * Improve ``pip -h``
627
-        
628
-        0.3
629
-        ---
630
-        
631
-        * Added support for editable packages created from Git, Mercurial and Bazaar
632
-          repositories and ability to freeze them. Refactored support for version
633
-          control systems.
634
-        
635
-        * Do not use ``sys.exit()`` from inside the code, instead use a
636
-          return.  This will make it easier to invoke programmatically.
637
-        
638
-        * Put the install record in ``Package.egg-info/installed-files.txt``
639
-          (previously they went in
640
-          ``site-packages/install-record-Package.txt``).
641
-        
642
-        * Fix a problem with ``pip freeze`` not including ``-e svn+`` when an
643
-          svn structure is peculiar.
644
-        
645
-        * Allow ``pip -E`` to work with a virtualenv that uses a different
646
-          version of Python than the parent environment.
647
-        
648
-        * Fixed Win32 virtualenv (``-E``) option.
649
-        
650
-        * Search the links passed in with ``-f`` for packages.
651
-        
652
-        * Detect zip files, even when the file doesn't have a ``.zip``
653
-          extension and it is served with the wrong Content-Type.
654
-        
655
-        * Installing editable from existing source now works, like ``pip
656
-          install -e some/path/`` will install the package in ``some/path/``.
657
-          Most importantly, anything that package requires will also be
658
-          installed by pip.
659
-        
660
-        * Add a ``--path`` option to ``pip un/zip``, so you can avoid zipping
661
-          files that are outside of where you expect.
662
-        
663
-        * Add ``--simulate`` option to ``pip zip``.
664
-        
665
-        0.2.1
666
-        -----
667
-        
668
-        * Fixed small problem that prevented using ``pip.py`` without actually
669
-          installing pip.
670
-        
671
-        * Fixed ``--upgrade``, which would download and appear to install
672
-          upgraded packages, but actually just reinstall the existing package.
673
-        
674
-        * Fixed Windows problem with putting the install record in the right
675
-          place, and generating the ``pip`` script with Setuptools.
676
-        
677
-        * Download links that include embedded spaces or other unsafe
678
-          characters (those characters get %-encoded).
679
-        
680
-        * Fixed use of URLs in requirement files, and problems with some blank
681
-          lines.
682
-        
683
-        * Turn some tar file errors into warnings.
684
-        
685
-        0.2
686
-        ---
687
-        
688
-        * Renamed to ``pip``, and to install you now do ``pip install
689
-          PACKAGE``
690
-        
691
-        * Added command ``pip zip PACKAGE`` and ``pip unzip PACKAGE``.  This
692
-          is particularly intended for Google App Engine to manage libraries
693
-          to stay under the 1000-file limit.
694
-        
695
-        * Some fixes to bundles, especially editable packages and when
696
-          creating a bundle using unnamed packages (like just an svn
697
-          repository without ``#egg=Package``).
698
-        
699
-        0.1.4
700
-        -----
701
-        
702
-        * Added an option ``--install-option`` to pass options to pass
703
-          arguments to ``setup.py install``
704
-        
705
-        * ``.svn/`` directories are no longer included in bundles, as these
706
-          directories are specific to a version of svn -- if you build a
707
-          bundle on a system with svn 1.5, you can't use the checkout on a
708
-          system with svn 1.4.  Instead a file ``svn-checkout.txt`` is
709
-          included that notes the original location and revision, and the
710
-          command you can use to turn it back into an svn checkout.  (Probably
711
-          unpacking the bundle should, maybe optionally, recreate this
712
-          information -- but that is not currently implemented, and it would
713
-          require network access.)
714
-        
715
-        * Avoid ambiguities over project name case, where for instance
716
-          MyPackage and mypackage would be considered different packages.
717
-          This in particular caused problems on Macs, where ``MyPackage/`` and
718
-          ``mypackage/`` are the same directory.
719
-        
720
-        * Added support for an environmental variable
721
-          ``$PIP_DOWNLOAD_CACHE`` which will cache package downloads, so
722
-          future installations won't require large downloads.  Network access
723
-          is still required, but just some downloads will be avoided when
724
-          using this.
725
-        
726
-        0.1.3
727
-        -----
728
-        
729
-        * Always use ``svn checkout`` (not ``export``) so that
730
-          ``tag_svn_revision`` settings give the revision of the package.
731
-        
732
-        * Don't update checkouts that came from ``.pybundle`` files.
733
-        
734
-        0.1.2
735
-        -----
736
-        
737
-        * Improve error text when there are errors fetching HTML pages when
738
-          seeking packages.
739
-        
740
-        * Improve bundles: include empty directories, make them work with
741
-          editable packages.
742
-        
743
-        * If you use ``-E env`` and the environment ``env/`` doesn't exist, a
744
-          new virtual environment will be created.
745
-        
746
-        * Fix ``dependency_links`` for finding packages.
747
-        
748
-        0.1.1
749
-        -----
750
-        
751
-        * Fixed a NameError exception when running pip outside of a
752
-          virtualenv environment.
753
-        
754
-        * Added HTTP proxy support (from Prabhu Ramachandran)
755
-        
756
-        * Fixed use of ``hashlib.md5`` on python2.5+ (also from Prabhu
757
-          Ramachandran)
758
-        
759
-        0.1
760
-        ---
761
-        
762
-        * Initial release
763
-        
764
-Keywords: easy_install distutils setuptools egg virtualenv
765
-Platform: UNKNOWN
766
-Classifier: Development Status :: 5 - Production/Stable
767
-Classifier: Intended Audience :: Developers
768
-Classifier: License :: OSI Approved :: MIT License
769
-Classifier: Topic :: Software Development :: Build Tools
770
-Classifier: Programming Language :: Python :: 2
771
-Classifier: Programming Language :: Python :: 2.5
772
-Classifier: Programming Language :: Python :: 2.6
773
-Classifier: Programming Language :: Python :: 2.7
774
-Classifier: Programming Language :: Python :: 3
775
-Classifier: Programming Language :: Python :: 3.1
776
-Classifier: Programming Language :: Python :: 3.2
777 0
deleted file mode 100644
... ...
@@ -1,60 +0,0 @@
1
-AUTHORS.txt
2
-CHANGES.txt
3
-LICENSE.txt
4
-MANIFEST.in
5
-PROJECT.txt
6
-README.rst
7
-setup.cfg
8
-setup.py
9
-docs/configuration.txt
10
-docs/cookbook.txt
11
-docs/development.txt
12
-docs/index.txt
13
-docs/installing.txt
14
-docs/logic.txt
15
-docs/news.txt
16
-docs/other-tools.txt
17
-docs/quickstart.txt
18
-docs/usage.txt
19
-pip/__init__.py
20
-pip/__main__.py
21
-pip/basecommand.py
22
-pip/baseparser.py
23
-pip/cacert.pem
24
-pip/cmdoptions.py
25
-pip/download.py
26
-pip/exceptions.py
27
-pip/index.py
28
-pip/locations.py
29
-pip/log.py
30
-pip/req.py
31
-pip/runner.py
32
-pip/status_codes.py
33
-pip/util.py
34
-pip.egg-info/PKG-INFO
35
-pip.egg-info/SOURCES.txt
36
-pip.egg-info/dependency_links.txt
37
-pip.egg-info/entry_points.txt
38
-pip.egg-info/not-zip-safe
39
-pip.egg-info/requires.txt
40
-pip.egg-info/top_level.txt
41
-pip/backwardcompat/__init__.py
42
-pip/backwardcompat/socket_create_connection.py
43
-pip/backwardcompat/ssl_match_hostname.py
44
-pip/commands/__init__.py
45
-pip/commands/bundle.py
46
-pip/commands/completion.py
47
-pip/commands/freeze.py
48
-pip/commands/help.py
49
-pip/commands/install.py
50
-pip/commands/list.py
51
-pip/commands/search.py
52
-pip/commands/show.py
53
-pip/commands/uninstall.py
54
-pip/commands/unzip.py
55
-pip/commands/zip.py
56
-pip/vcs/__init__.py
57
-pip/vcs/bazaar.py
58
-pip/vcs/git.py
59
-pip/vcs/mercurial.py
60
-pip/vcs/subversion.py
61 0
\ No newline at end of file
2 0
deleted file mode 100644
... ...
@@ -1,4 +0,0 @@
1
-[console_scripts]
2
-pip = pip:main
3
-pip-2.7 = pip:main
4
-
2 0
deleted file mode 100644
... ...
@@ -1,7 +0,0 @@
1
-
2
-
3
-[testing]
4
-nose
5
-virtualenv>=1.7
6
-scripttest>=1.1.1
7
-mock
8 0
\ No newline at end of file
2 0
deleted file mode 100644
... ...
@@ -1,236 +0,0 @@
1
-#!/usr/bin/env python
2
-import os
3
-import optparse
4
-
5
-import sys
6
-import re
7
-
8
-from pip.exceptions import InstallationError, CommandError, PipError
9
-from pip.log import logger
10
-from pip.util import get_installed_distributions, get_prog
11
-from pip.vcs import git, mercurial, subversion, bazaar  # noqa
12
-from pip.baseparser import create_main_parser
13
-from pip.commands import commands, get_similar_commands, get_summaries
14
-
15
-
16
-# The version as used in the setup.py and the docs conf.py
17
-__version__ = "1.3.1"
18
-
19
-
20
-def autocomplete():
21
-    """Command and option completion for the main option parser (and options)
22
-    and its subcommands (and options).
23
-
24
-    Enable by sourcing one of the completion shell scripts (bash or zsh).
25
-    """
26
-    # Don't complete if user hasn't sourced bash_completion file.
27
-    if 'PIP_AUTO_COMPLETE' not in os.environ:
28
-        return
29
-    cwords = os.environ['COMP_WORDS'].split()[1:]
30
-    cword = int(os.environ['COMP_CWORD'])
31
-    try:
32
-        current = cwords[cword - 1]
33
-    except IndexError:
34
-        current = ''
35
-
36
-    subcommands = [cmd for cmd, summary in get_summaries()]
37
-    options = []
38
-    # subcommand
39
-    try:
40
-        subcommand_name = [w for w in cwords if w in subcommands][0]
41
-    except IndexError:
42
-        subcommand_name = None
43
-
44
-    parser = create_main_parser()
45
-    # subcommand options
46
-    if subcommand_name:
47
-        # special case: 'help' subcommand has no options
48
-        if subcommand_name == 'help':
49
-            sys.exit(1)
50
-        # special case: list locally installed dists for uninstall command
51
-        if subcommand_name == 'uninstall' and not current.startswith('-'):
52
-            installed = []
53
-            lc = current.lower()
54
-            for dist in get_installed_distributions(local_only=True):
55
-                if dist.key.startswith(lc) and dist.key not in cwords[1:]:
56
-                    installed.append(dist.key)
57
-            # if there are no dists installed, fall back to option completion
58
-            if installed:
59
-                for dist in installed:
60
-                    print(dist)
61
-                sys.exit(1)
62
-
63
-        subcommand = commands[subcommand_name](parser)
64
-        options += [(opt.get_opt_string(), opt.nargs)
65
-                    for opt in subcommand.parser.option_list_all
66
-                    if opt.help != optparse.SUPPRESS_HELP]
67
-
68
-        # filter out previously specified options from available options
69
-        prev_opts = [x.split('=')[0] for x in cwords[1:cword - 1]]
70
-        options = [(x, v) for (x, v) in options if x not in prev_opts]
71
-        # filter options by current input
72
-        options = [(k, v) for k, v in options if k.startswith(current)]
73
-        for option in options:
74
-            opt_label = option[0]
75
-            # append '=' to options which require args
76
-            if option[1]:
77
-                opt_label += '='
78
-            print(opt_label)
79
-    else:
80
-        # show main parser options only when necessary
81
-        if current.startswith('-') or current.startswith('--'):
82
-            opts = [i.option_list for i in parser.option_groups]
83
-            opts.append(parser.option_list)
84
-            opts = (o for it in opts for o in it)
85
-
86
-            subcommands += [i.get_opt_string() for i in opts
87
-                            if i.help != optparse.SUPPRESS_HELP]
88
-
89
-        print(' '.join([x for x in subcommands if x.startswith(current)]))
90
-    sys.exit(1)
91
-
92
-
93
-def parseopts(args):
94
-    parser = create_main_parser()
95
-    parser.main = True # so the help formatter knows
96
-
97
-    # create command listing
98
-    command_summaries = get_summaries()
99
-
100
-    description = [''] + ['%-27s %s' % (i, j) for i, j in command_summaries]
101
-    parser.description = '\n'.join(description)
102
-
103
-    options, args = parser.parse_args(args)
104
-
105
-    if options.version:
106
-        sys.stdout.write(parser.version)
107
-        sys.stdout.write(os.linesep)
108
-        sys.exit()
109
-
110
-    # pip || pip help || pip --help -> print_help()
111
-    if not args or (args[0] == 'help' and len(args) == 1):
112
-        parser.print_help()
113
-        sys.exit()
114
-
115
-    if not args:
116
-        msg = ('You must give a command '
117
-               '(use "pip --help" to see a list of commands)')
118
-        raise CommandError(msg)
119
-
120
-    command = args[0].lower()
121
-
122
-    if command not in commands:
123
-        guess = get_similar_commands(command)
124
-
125
-        msg = ['unknown command "%s"' % command]
126
-        if guess:
127
-            msg.append('maybe you meant "%s"' % guess)
128
-
129
-        raise CommandError(' - '.join(msg))
130
-
131
-    return command, options, args, parser
132
-
133
-
134
-def main(initial_args=None):
135
-    if initial_args is None:
136
-        initial_args = sys.argv[1:]
137
-
138
-    autocomplete()
139
-
140
-    try:
141
-        cmd_name, options, args, parser = parseopts(initial_args)
142
-    except PipError:
143
-        e = sys.exc_info()[1]
144
-        sys.stderr.write("ERROR: %s" % e)
145
-        sys.stderr.write(os.linesep)
146
-        sys.exit(1)
147
-
148
-    command = commands[cmd_name](parser)  # see baseparser.Command
149
-    return command.main(args[1:], options)
150
-
151
-
152
-def bootstrap():
153
-    """
154
-    Bootstrapping function to be called from install-pip.py script.
155
-    """
156
-    return main(['install', '--upgrade', 'pip'])
157
-
158
-############################################################
159
-## Writing freeze files
160
-
161
-
162
-class FrozenRequirement(object):
163
-
164
-    def __init__(self, name, req, editable, comments=()):
165
-        self.name = name
166
-        self.req = req
167
-        self.editable = editable
168
-        self.comments = comments
169
-
170
-    _rev_re = re.compile(r'-r(\d+)$')
171
-    _date_re = re.compile(r'-(20\d\d\d\d\d\d)$')
172
-
173
-    @classmethod
174
-    def from_dist(cls, dist, dependency_links, find_tags=False):
175
-        location = os.path.normcase(os.path.abspath(dist.location))
176
-        comments = []
177
-        from pip.vcs import vcs, get_src_requirement
178
-        if vcs.get_backend_name(location):
179
-            editable = True
180
-            try:
181
-                req = get_src_requirement(dist, location, find_tags)
182
-            except InstallationError:
183
-                ex = sys.exc_info()[1]
184
-                logger.warn("Error when trying to get requirement for VCS system %s, falling back to uneditable format" % ex)
185
-                req = None
186
-            if req is None:
187
-                logger.warn('Could not determine repository location of %s' % location)
188
-                comments.append('## !! Could not determine repository location')
189
-                req = dist.as_requirement()
190
-                editable = False
191
-        else:
192
-            editable = False
193
-            req = dist.as_requirement()
194
-            specs = req.specs
195
-            assert len(specs) == 1 and specs[0][0] == '=='
196
-            version = specs[0][1]
197
-            ver_match = cls._rev_re.search(version)
198
-            date_match = cls._date_re.search(version)
199
-            if ver_match or date_match:
200
-                svn_backend = vcs.get_backend('svn')
201
-                if svn_backend:
202
-                    svn_location = svn_backend(
203
-                        ).get_location(dist, dependency_links)
204
-                if not svn_location:
205
-                    logger.warn(
206
-                        'Warning: cannot find svn location for %s' % req)
207
-                    comments.append('## FIXME: could not find svn URL in dependency_links for this package:')
208
-                else:
209
-                    comments.append('# Installing as editable to satisfy requirement %s:' % req)
210
-                    if ver_match:
211
-                        rev = ver_match.group(1)
212
-                    else:
213
-                        rev = '{%s}' % date_match.group(1)
214
-                    editable = True
215
-                    req = '%s@%s#egg=%s' % (svn_location, rev, cls.egg_name(dist))
216
-        return cls(dist.project_name, req, editable, comments)
217
-
218
-    @staticmethod
219
-    def egg_name(dist):
220
-        name = dist.egg_name()
221
-        match = re.search(r'-py\d\.\d$', name)
222
-        if match:
223
-            name = name[:match.start()]
224
-        return name
225
-
226
-    def __str__(self):
227
-        req = self.req
228
-        if self.editable:
229
-            req = '-e %s' % req
230
-        return '\n'.join(list(self.comments) + [str(req)]) + '\n'
231
-
232
-
233
-if __name__ == '__main__':
234
-    exit = main()
235
-    if exit:
236
-        sys.exit(exit)
237 0
deleted file mode 100644
238 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/__init__.pyc and /dev/null differ
239 2
deleted file mode 100644
... ...
@@ -1,7 +0,0 @@
1
-import sys
2
-from .runner import run
3
-
4
-if __name__ == '__main__':
5
-    exit = run()
6
-    if exit:
7
-        sys.exit(exit)
8 0
deleted file mode 100644
9 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/__main__.pyc and /dev/null differ
10 2
deleted file mode 100644
... ...
@@ -1,142 +0,0 @@
1
-"""Stuff that differs in different Python versions"""
2
-
3
-import os
4
-import imp
5
-import sys
6
-import site
7
-
8
-__all__ = ['WindowsError']
9
-
10
-uses_pycache = hasattr(imp, 'cache_from_source')
11
-
12
-
13
-class NeverUsedException(Exception):
14
-    """this exception should never be raised"""
15
-
16
-try:
17
-    WindowsError = WindowsError
18
-except NameError:
19
-    WindowsError = NeverUsedException
20
-
21
-try:
22
-    #new in Python 3.3
23
-    PermissionError = PermissionError
24
-except NameError:
25
-    PermissionError = NeverUsedException
26
-
27
-console_encoding = sys.__stdout__.encoding
28
-
29
-if sys.version_info >= (3,):
30
-    from io import StringIO, BytesIO
31
-    from functools import reduce
32
-    from urllib.error import URLError, HTTPError
33
-    from queue import Queue, Empty
34
-    from urllib.request import url2pathname
35
-    from urllib.request import urlretrieve
36
-    from email import message as emailmessage
37
-    import urllib.parse as urllib
38
-    import urllib.request as urllib2
39
-    import configparser as ConfigParser
40
-    import xmlrpc.client as xmlrpclib
41
-    import urllib.parse as urlparse
42
-    import http.client as httplib
43
-
44
-    def cmp(a, b):
45
-        return (a > b) - (a < b)
46
-
47
-    def b(s):
48
-        return s.encode('utf-8')
49
-
50
-    def u(s):
51
-        return s.decode('utf-8')
52
-
53
-    def console_to_str(s):
54
-        try:
55
-            return s.decode(console_encoding)
56
-        except UnicodeDecodeError:
57
-            return s.decode('utf_8')
58
-
59
-    def fwrite(f, s):
60
-        f.buffer.write(b(s))
61
-
62
-    bytes = bytes
63
-    string_types = (str,)
64
-    raw_input = input
65
-else:
66
-    from cStringIO import StringIO
67
-    from urllib2 import URLError, HTTPError
68
-    from Queue import Queue, Empty
69
-    from urllib import url2pathname, urlretrieve
70
-    from email import Message as emailmessage
71
-    import urllib
72
-    import urllib2
73
-    import urlparse
74
-    import ConfigParser
75
-    import xmlrpclib
76
-    import httplib
77
-
78
-    def b(s):
79
-        return s
80
-
81
-    def u(s):
82
-        return s
83
-
84
-    def console_to_str(s):
85
-        return s
86
-
87
-    def fwrite(f, s):
88
-        f.write(s)
89
-
90
-    bytes = str
91
-    string_types = (basestring,)
92
-    reduce = reduce
93
-    cmp = cmp
94
-    raw_input = raw_input
95
-    BytesIO = StringIO
96
-
97
-
98
-from distutils.sysconfig import get_python_lib, get_python_version
99
-
100
-#site.USER_SITE was created in py2.6
101
-user_site = getattr(site, 'USER_SITE', None)
102
-
103
-
104
-def product(*args, **kwds):
105
-    # product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
106
-    # product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111
107
-    pools = list(map(tuple, args)) * kwds.get('repeat', 1)
108
-    result = [[]]
109
-    for pool in pools:
110
-        result = [x + [y] for x in result for y in pool]
111
-    for prod in result:
112
-        yield tuple(prod)
113
-
114
-
115
-def home_lib(home):
116
-    """Return the lib dir under the 'home' installation scheme"""
117
-    if hasattr(sys, 'pypy_version_info'):
118
-        lib = 'site-packages'
119
-    else:
120
-        lib = os.path.join('lib', 'python')
121
-    return os.path.join(home, lib)
122
-
123
-
124
-## py25 has no builtin ssl module
125
-## only >=py32 has ssl.match_hostname and ssl.CertificateError
126
-try:
127
-    import ssl
128
-    try:
129
-        from ssl import match_hostname, CertificateError
130
-    except ImportError:
131
-        from pip.backwardcompat.ssl_match_hostname import match_hostname, CertificateError
132
-except ImportError:
133
-    ssl = None
134
-
135
-
136
-# patch for py25 socket to work with http://pypi.python.org/pypi/ssl/
137
-import socket
138
-if not hasattr(socket, 'create_connection'): # for Python 2.5
139
-    # monkey-patch socket module
140
-    from pip.backwardcompat.socket_create_connection import create_connection
141
-    socket.create_connection = create_connection
142
-
143 0
deleted file mode 100644
144 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/backwardcompat/__init__.pyc and /dev/null differ
145 2
deleted file mode 100644
... ...
@@ -1,44 +0,0 @@
1
-"""
2
-patch for py25 socket to work with http://pypi.python.org/pypi/ssl/
3
-copy-paste from py2.6 stdlib socket.py
4
-https://gist.github.com/zed/1347055
5
-"""
6
-import socket
7
-import sys
8
-
9
-_GLOBAL_DEFAULT_TIMEOUT = getattr(socket, '_GLOBAL_DEFAULT_TIMEOUT', object())
10
-def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,
11
-                      source_address=None):
12
-    """Connect to *address* and return the socket object.
13
-
14
-    Convenience function.  Connect to *address* (a 2-tuple ``(host,
15
-    port)``) and return the socket object.  Passing the optional
16
-    *timeout* parameter will set the timeout on the socket instance
17
-    before attempting to connect.  If no *timeout* is supplied, the
18
-    global default timeout setting returned by :func:`getdefaulttimeout`
19
-    is used.
20
-    """
21
-
22
-    host, port = address
23
-    err = None
24
-    for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM):
25
-        af, socktype, proto, canonname, sa = res
26
-        sock = None
27
-        try:
28
-            sock = socket.socket(af, socktype, proto)
29
-            if timeout is not _GLOBAL_DEFAULT_TIMEOUT:
30
-                sock.settimeout(timeout)
31
-            if source_address:
32
-                sock.bind(source_address)
33
-            sock.connect(sa)
34
-            return sock
35
-
36
-        except socket.error:
37
-            err = sys.exc_info()[1]
38
-            if sock is not None:
39
-                sock.close()
40
-
41
-    if err is not None:
42
-        raise err
43
-    else:
44
-        raise socket.error("getaddrinfo returns an empty list")
45 0
deleted file mode 100644
46 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/backwardcompat/socket_create_connection.pyc and /dev/null differ
47 2
deleted file mode 100644
... ...
@@ -1,60 +0,0 @@
1
-"""The match_hostname() function from Python 3.2, essential when using SSL."""
2
-
3
-import re
4
-
5
-__version__ = '3.2a3'
6
-
7
-class CertificateError(ValueError):
8
-    pass
9
-
10
-def _dnsname_to_pat(dn):
11
-    pats = []
12
-    for frag in dn.split(r'.'):
13
-        if frag == '*':
14
-            # When '*' is a fragment by itself, it matches a non-empty dotless
15
-            # fragment.
16
-            pats.append('[^.]+')
17
-        else:
18
-            # Otherwise, '*' matches any dotless fragment.
19
-            frag = re.escape(frag)
20
-            pats.append(frag.replace(r'\*', '[^.]*'))
21
-    return re.compile(r'\A' + r'\.'.join(pats) + r'\Z', re.IGNORECASE)
22
-
23
-def match_hostname(cert, hostname):
24
-    """Verify that *cert* (in decoded format as returned by
25
-    SSLSocket.getpeercert()) matches the *hostname*.  RFC 2818 rules
26
-    are mostly followed, but IP addresses are not accepted for *hostname*.
27
-
28
-    CertificateError is raised on failure. On success, the function
29
-    returns nothing.
30
-    """
31
-    if not cert:
32
-        raise ValueError("empty or no certificate")
33
-    dnsnames = []
34
-    san = cert.get('subjectAltName', ())
35
-    for key, value in san:
36
-        if key == 'DNS':
37
-            if _dnsname_to_pat(value).match(hostname):
38
-                return
39
-            dnsnames.append(value)
40
-    if not san:
41
-        # The subject is only checked when subjectAltName is empty
42
-        for sub in cert.get('subject', ()):
43
-            for key, value in sub:
44
-                # XXX according to RFC 2818, the most specific Common Name
45
-                # must be used.
46
-                if key == 'commonName':
47
-                    if _dnsname_to_pat(value).match(hostname):
48
-                        return
49
-                    dnsnames.append(value)
50
-    if len(dnsnames) > 1:
51
-        raise CertificateError("hostname %r "
52
-            "doesn't match either of %s"
53
-            % (hostname, ', '.join(map(repr, dnsnames))))
54
-    elif len(dnsnames) == 1:
55
-        raise CertificateError("hostname %r "
56
-            "doesn't match %r"
57
-            % (hostname, dnsnames[0]))
58
-    else:
59
-        raise CertificateError("no appropriate commonName or "
60
-            "subjectAltName fields were found")
61 0
deleted file mode 100644
62 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/backwardcompat/ssl_match_hostname.pyc and /dev/null differ
63 2
deleted file mode 100644
... ...
@@ -1,212 +0,0 @@
1
-"""Base Command class, and related routines"""
2
-
3
-import os
4
-import socket
5
-import sys
6
-import tempfile
7
-import traceback
8
-import time
9
-import optparse
10
-
11
-from pip.log import logger
12
-from pip.download import urlopen
13
-from pip.exceptions import (BadCommand, InstallationError, UninstallationError,
14
-                            CommandError)
15
-from pip.backwardcompat import StringIO, ssl
16
-from pip.baseparser import ConfigOptionParser, UpdatingDefaultsHelpFormatter
17
-from pip.status_codes import SUCCESS, ERROR, UNKNOWN_ERROR, VIRTUALENV_NOT_FOUND
18
-from pip.util import get_prog
19
-
20
-
21
-__all__ = ['Command']
22
-
23
-
24
-# for backwards compatibiliy
25
-get_proxy = urlopen.get_proxy
26
-
27
-
28
-class Command(object):
29
-    name = None
30
-    usage = None
31
-    hidden = False
32
-
33
-    def __init__(self, main_parser):
34
-        parser_kw = {
35
-            'usage': self.usage,
36
-            'prog': '%s %s' % (get_prog(), self.name),
37
-            'formatter': UpdatingDefaultsHelpFormatter(),
38
-            'add_help_option': False,
39
-            'name': self.name,
40
-            'description': self.__doc__,
41
-        }
42
-        self.main_parser = main_parser
43
-        self.parser = ConfigOptionParser(**parser_kw)
44
-
45
-        # Commands should add options to this option group
46
-        optgroup_name = '%s Options' % self.name.capitalize()
47
-        self.cmd_opts = optparse.OptionGroup(self.parser, optgroup_name)
48
-
49
-        # Re-add all options and option groups.
50
-        for group in main_parser.option_groups:
51
-            self._copy_option_group(self.parser, group)
52
-
53
-        # Copies all general options from the main parser.
54
-        self._copy_options(self.parser, main_parser.option_list)
55
-
56
-    def _copy_options(self, parser, options):
57
-        """Populate an option parser or group with options."""
58
-        for option in options:
59
-            if not option.dest:
60
-                continue
61
-            parser.add_option(option)
62
-
63
-    def _copy_option_group(self, parser, group):
64
-        """Copy option group (including options) to another parser."""
65
-        new_group = optparse.OptionGroup(parser, group.title)
66
-        self._copy_options(new_group, group.option_list)
67
-
68
-        parser.add_option_group(new_group)
69
-
70
-    def merge_options(self, initial_options, options):
71
-        # Make sure we have all global options carried over
72
-        attrs = ['log', 'proxy', 'require_venv',
73
-                 'log_explicit_levels', 'log_file',
74
-                 'timeout', 'default_vcs',
75
-                 'skip_requirements_regex',
76
-                 'no_input', 'exists_action',
77
-                 'cert']
78
-        if not ssl:
79
-            attrs.append('insecure')
80
-        for attr in attrs:
81
-            setattr(options, attr, getattr(initial_options, attr) or getattr(options, attr))
82
-        options.quiet += initial_options.quiet
83
-        options.verbose += initial_options.verbose
84
-
85
-    def setup_logging(self):
86
-        pass
87
-
88
-    def main(self, args, initial_options):
89
-        options, args = self.parser.parse_args(args)
90
-        self.merge_options(initial_options, options)
91
-
92
-        level = 1  # Notify
93
-        level += options.verbose
94
-        level -= options.quiet
95
-        level = logger.level_for_integer(4 - level)
96
-        complete_log = []
97
-        logger.consumers.extend(
98
-            [(level, sys.stdout),
99
-             (logger.DEBUG, complete_log.append)])
100
-        if options.log_explicit_levels:
101
-            logger.explicit_levels = True
102
-
103
-        self.setup_logging()
104
-
105
-        #TODO: try to get these passing down from the command?
106
-        #      without resorting to os.environ to hold these.
107
-
108
-        if options.no_input:
109
-            os.environ['PIP_NO_INPUT'] = '1'
110
-
111
-        if options.exists_action:
112
-            os.environ['PIP_EXISTS_ACTION'] = ''.join(options.exists_action)
113
-
114
-        if not ssl and options.insecure:
115
-            os.environ['PIP_INSECURE'] = '1'
116
-
117
-        if options.cert:
118
-            os.environ['PIP_CERT'] = options.cert
119
-
120
-        if options.require_venv:
121
-            # If a venv is required check if it can really be found
122
-            if not os.environ.get('VIRTUAL_ENV'):
123
-                logger.fatal('Could not find an activated virtualenv (required).')
124
-                sys.exit(VIRTUALENV_NOT_FOUND)
125
-
126
-        if options.log:
127
-            log_fp = open_logfile(options.log, 'a')
128
-            logger.consumers.append((logger.DEBUG, log_fp))
129
-        else:
130
-            log_fp = None
131
-
132
-        socket.setdefaulttimeout(options.timeout or None)
133
-
134
-        urlopen.setup(proxystr=options.proxy, prompting=not options.no_input)
135
-
136
-        exit = SUCCESS
137
-        store_log = False
138
-        try:
139
-            status = self.run(options, args)
140
-            # FIXME: all commands should return an exit status
141
-            # and when it is done, isinstance is not needed anymore
142
-            if isinstance(status, int):
143
-                exit = status
144
-        except (InstallationError, UninstallationError):
145
-            e = sys.exc_info()[1]
146
-            logger.fatal(str(e))
147
-            logger.info('Exception information:\n%s' % format_exc())
148
-            store_log = True
149
-            exit = ERROR
150
-        except BadCommand:
151
-            e = sys.exc_info()[1]
152
-            logger.fatal(str(e))
153
-            logger.info('Exception information:\n%s' % format_exc())
154
-            store_log = True
155
-            exit = ERROR
156
-        except CommandError:
157
-            e = sys.exc_info()[1]
158
-            logger.fatal('ERROR: %s' % e)
159
-            logger.info('Exception information:\n%s' % format_exc())
160
-            exit = ERROR
161
-        except KeyboardInterrupt:
162
-            logger.fatal('Operation cancelled by user')
163
-            logger.info('Exception information:\n%s' % format_exc())
164
-            store_log = True
165
-            exit = ERROR
166
-        except:
167
-            logger.fatal('Exception:\n%s' % format_exc())
168
-            store_log = True
169
-            exit = UNKNOWN_ERROR
170
-        if log_fp is not None:
171
-            log_fp.close()
172
-        if store_log:
173
-            log_fn = options.log_file
174
-            text = '\n'.join(complete_log)
175
-            try:
176
-                log_fp = open_logfile(log_fn, 'w')
177
-            except IOError:
178
-                temp = tempfile.NamedTemporaryFile(delete=False)
179
-                log_fn = temp.name
180
-                log_fp = open_logfile(log_fn, 'w')
181
-            logger.fatal('Storing complete log in %s' % log_fn)
182
-            log_fp.write(text)
183
-            log_fp.close()
184
-        return exit
185
-
186
-
187
-def format_exc(exc_info=None):
188
-    if exc_info is None:
189
-        exc_info = sys.exc_info()
190
-    out = StringIO()
191
-    traceback.print_exception(*exc_info, **dict(file=out))
192
-    return out.getvalue()
193
-
194
-
195
-def open_logfile(filename, mode='a'):
196
-    """Open the named log file in append mode.
197
-
198
-    If the file already exists, a separator will also be printed to
199
-    the file to separate past activity from current activity.
200
-    """
201
-    filename = os.path.expanduser(filename)
202
-    filename = os.path.abspath(filename)
203
-    dirname = os.path.dirname(filename)
204
-    if not os.path.exists(dirname):
205
-        os.makedirs(dirname)
206
-    exists = os.path.exists(filename)
207
-
208
-    log_fp = open(filename, mode)
209
-    if exists:
210
-        log_fp.write('%s\n' % ('-' * 60))
211
-        log_fp.write('%s run on %s\n' % (sys.argv[0], time.strftime('%c')))
212
-    return log_fp
213 0
deleted file mode 100644
214 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/basecommand.pyc and /dev/null differ
215 2
deleted file mode 100644
... ...
@@ -1,376 +0,0 @@
1
-"""Base option parser setup"""
2
-
3
-import sys
4
-import optparse
5
-import pkg_resources
6
-import os
7
-import textwrap
8
-from distutils.util import strtobool
9
-from pip.backwardcompat import ConfigParser, string_types, ssl
10
-from pip.locations import default_config_file, default_log_file
11
-from pip.util import get_terminal_size, get_prog
12
-
13
-
14
-class PrettyHelpFormatter(optparse.IndentedHelpFormatter):
15
-    """A prettier/less verbose help formatter for optparse."""
16
-
17
-    def __init__(self, *args, **kwargs):
18
-        # help position must be aligned with __init__.parseopts.description
19
-        kwargs['max_help_position'] = 30
20
-        kwargs['indent_increment'] = 1
21
-        kwargs['width'] = get_terminal_size()[0] - 2
22
-        optparse.IndentedHelpFormatter.__init__(self, *args, **kwargs)
23
-
24
-    def format_option_strings(self, option):
25
-        return self._format_option_strings(option, ' <%s>', ', ')
26
-
27
-    def _format_option_strings(self, option, mvarfmt=' <%s>', optsep=', '):
28
-        """
29
-        Return a comma-separated list of option strings and metavars.
30
-
31
-        :param option:  tuple of (short opt, long opt), e.g: ('-f', '--format')
32
-        :param mvarfmt: metavar format string - evaluated as mvarfmt % metavar
33
-        :param optsep:  separator
34
-        """
35
-        opts = []
36
-
37
-        if option._short_opts:
38
-            opts.append(option._short_opts[0])
39
-        if option._long_opts:
40
-            opts.append(option._long_opts[0])
41
-        if len(opts) > 1:
42
-            opts.insert(1, optsep)
43
-
44
-        if option.takes_value():
45
-            metavar = option.metavar or option.dest.lower()
46
-            opts.append(mvarfmt % metavar.lower())
47
-
48
-        return ''.join(opts)
49
-
50
-    def format_heading(self, heading):
51
-        if heading == 'Options':
52
-            return ''
53
-        return heading + ':\n'
54
-
55
-    def format_usage(self, usage):
56
-        """
57
-        Ensure there is only one newline between usage and the first heading
58
-        if there is no description.
59
-        """
60
-        msg = '\nUsage: %s\n' % self.indent_lines(textwrap.dedent(usage), "  ")
61
-        return msg
62
-
63
-    def format_description(self, description):
64
-        # leave full control over description to us
65
-        if description:
66
-            if hasattr(self.parser, 'main'):
67
-                label = 'Commands'
68
-            else:
69
-                label = 'Description'
70
-            #some doc strings have inital newlines, some don't
71
-            description = description.lstrip('\n')
72
-            #some doc strings have final newlines and spaces, some don't
73
-            description = description.rstrip()
74
-            #dedent, then reindent
75
-            description = self.indent_lines(textwrap.dedent(description), "  ")
76
-            description = '%s:\n%s\n' % (label, description)
77
-            return description
78
-        else:
79
-            return ''
80
-
81
-    def format_epilog(self, epilog):
82
-        # leave full control over epilog to us
83
-        if epilog:
84
-            return epilog
85
-        else:
86
-            return ''
87
-
88
-    def indent_lines(self, text, indent):
89
-        new_lines = [indent + line for line in text.split('\n')]
90
-        return "\n".join(new_lines)
91
-
92
-
93
-class UpdatingDefaultsHelpFormatter(PrettyHelpFormatter):
94
-    """Custom help formatter for use in ConfigOptionParser that updates
95
-    the defaults before expanding them, allowing them to show up correctly
96
-    in the help listing"""
97
-
98
-    def expand_default(self, option):
99
-        if self.parser is not None:
100
-            self.parser.update_defaults(self.parser.defaults)
101
-        return optparse.IndentedHelpFormatter.expand_default(self, option)
102
-
103
-
104
-class CustomOptionParser(optparse.OptionParser):
105
-    def insert_option_group(self, idx, *args, **kwargs):
106
-        """Insert an OptionGroup at a given position."""
107
-        group = self.add_option_group(*args, **kwargs)
108
-
109
-        self.option_groups.pop()
110
-        self.option_groups.insert(idx, group)
111
-
112
-        return group
113
-
114
-    @property
115
-    def option_list_all(self):
116
-        """Get a list of all options, including those in option groups."""
117
-        res = self.option_list[:]
118
-        for i in self.option_groups:
119
-            res.extend(i.option_list)
120
-
121
-        return res
122
-
123
-
124
-class ConfigOptionParser(CustomOptionParser):
125
-    """Custom option parser which updates its defaults by by checking the
126
-    configuration files and environmental variables"""
127
-
128
-    def __init__(self, *args, **kwargs):
129
-        self.config = ConfigParser.RawConfigParser()
130
-        self.name = kwargs.pop('name')
131
-        self.files = self.get_config_files()
132
-        self.config.read(self.files)
133
-        assert self.name
134
-        optparse.OptionParser.__init__(self, *args, **kwargs)
135
-
136
-    def get_config_files(self):
137
-        config_file = os.environ.get('PIP_CONFIG_FILE', False)
138
-        if config_file and os.path.exists(config_file):
139
-            return [config_file]
140
-        return [default_config_file]
141
-
142
-    def update_defaults(self, defaults):
143
-        """Updates the given defaults with values from the config files and
144
-        the environ. Does a little special handling for certain types of
145
-        options (lists)."""
146
-        # Then go and look for the other sources of configuration:
147
-        config = {}
148
-        # 1. config files
149
-        for section in ('global', self.name):
150
-            config.update(self.normalize_keys(self.get_config_section(section)))
151
-        # 2. environmental variables
152
-        config.update(self.normalize_keys(self.get_environ_vars()))
153
-        # Then set the options with those values
154
-        for key, val in config.items():
155
-            option = self.get_option(key)
156
-            if option is not None:
157
-                # ignore empty values
158
-                if not val:
159
-                    continue
160
-                # handle multiline configs
161
-                if option.action == 'append':
162
-                    val = val.split()
163
-                else:
164
-                    option.nargs = 1
165
-                if option.action in ('store_true', 'store_false', 'count'):
166
-                    val = strtobool(val)
167
-                try:
168
-                    val = option.convert_value(key, val)
169
-                except optparse.OptionValueError:
170
-                    e = sys.exc_info()[1]
171
-                    print("An error occurred during configuration: %s" % e)
172
-                    sys.exit(3)
173
-                defaults[option.dest] = val
174
-        return defaults
175
-
176
-    def normalize_keys(self, items):
177
-        """Return a config dictionary with normalized keys regardless of
178
-        whether the keys were specified in environment variables or in config
179
-        files"""
180
-        normalized = {}
181
-        for key, val in items:
182
-            key = key.replace('_', '-')
183
-            if not key.startswith('--'):
184
-                key = '--%s' % key  # only prefer long opts
185
-            normalized[key] = val
186
-        return normalized
187
-
188
-    def get_config_section(self, name):
189
-        """Get a section of a configuration"""
190
-        if self.config.has_section(name):
191
-            return self.config.items(name)
192
-        return []
193
-
194
-    def get_environ_vars(self, prefix='PIP_'):
195
-        """Returns a generator with all environmental vars with prefix PIP_"""
196
-        for key, val in os.environ.items():
197
-            if key.startswith(prefix):
198
-                yield (key.replace(prefix, '').lower(), val)
199
-
200
-    def get_default_values(self):
201
-        """Overridding to make updating the defaults after instantiation of
202
-        the option parser possible, update_defaults() does the dirty work."""
203
-        if not self.process_default_values:
204
-            # Old, pre-Optik 1.5 behaviour.
205
-            return optparse.Values(self.defaults)
206
-
207
-        defaults = self.update_defaults(self.defaults.copy())  # ours
208
-        for option in self._get_all_options():
209
-            default = defaults.get(option.dest)
210
-            if isinstance(default, string_types):
211
-                opt_str = option.get_opt_string()
212
-                defaults[option.dest] = option.check_value(opt_str, default)
213
-        return optparse.Values(defaults)
214
-
215
-    def error(self, msg):
216
-        self.print_usage(sys.stderr)
217
-        self.exit(2, "%s\n" % msg)
218
-
219
-
220
-try:
221
-    pip_dist = pkg_resources.get_distribution('pip')
222
-    version = '%s from %s (python %s)' % (
223
-        pip_dist, pip_dist.location, sys.version[:3])
224
-except pkg_resources.DistributionNotFound:
225
-    # when running pip.py without installing
226
-    version = None
227
-
228
-
229
-def create_main_parser():
230
-    parser_kw = {
231
-        'usage': '\n%prog <command> [options]',
232
-        'add_help_option': False,
233
-        'formatter': UpdatingDefaultsHelpFormatter(),
234
-        'name': 'global',
235
-        'prog': get_prog(),
236
-    }
237
-
238
-    parser = ConfigOptionParser(**parser_kw)
239
-    genopt = optparse.OptionGroup(parser, 'General Options')
240
-    parser.disable_interspersed_args()
241
-
242
-    # having a default version action just causes trouble
243
-    parser.version = version
244
-
245
-    for opt in standard_options:
246
-        genopt.add_option(opt)
247
-    parser.add_option_group(genopt)
248
-
249
-    return parser
250
-
251
-
252
-standard_options = [
253
-    optparse.make_option(
254
-        '-h', '--help',
255
-        dest='help',
256
-        action='help',
257
-        help='Show help.'),
258
-
259
-    optparse.make_option(
260
-        # Run only if inside a virtualenv, bail if not.
261
-        '--require-virtualenv', '--require-venv',
262
-        dest='require_venv',
263
-        action='store_true',
264
-        default=False,
265
-        help=optparse.SUPPRESS_HELP),
266
-
267
-    optparse.make_option(
268
-        '-v', '--verbose',
269
-        dest='verbose',
270
-        action='count',
271
-        default=0,
272
-        help='Give more output. Option is additive, and can be used up to 3 times.'),
273
-
274
-    optparse.make_option(
275
-        '-V', '--version',
276
-        dest='version',
277
-        action='store_true',
278
-        help='Show version and exit.'),
279
-
280
-    optparse.make_option(
281
-        '-q', '--quiet',
282
-        dest='quiet',
283
-        action='count',
284
-        default=0,
285
-        help='Give less output.'),
286
-
287
-    optparse.make_option(
288
-        '--log',
289
-        dest='log',
290
-        metavar='file',
291
-        help='Log file where a complete (maximum verbosity) record will be kept.'),
292
-
293
-    optparse.make_option(
294
-        # Writes the log levels explicitely to the log'
295
-        '--log-explicit-levels',
296
-        dest='log_explicit_levels',
297
-        action='store_true',
298
-        default=False,
299
-        help=optparse.SUPPRESS_HELP),
300
-
301
-    optparse.make_option(
302
-        # The default log file
303
-        '--local-log', '--log-file',
304
-        dest='log_file',
305
-        metavar='file',
306
-        default=default_log_file,
307
-        help=optparse.SUPPRESS_HELP),
308
-
309
-    optparse.make_option(
310
-        # Don't ask for input
311
-        '--no-input',
312
-        dest='no_input',
313
-        action='store_true',
314
-        default=False,
315
-        help=optparse.SUPPRESS_HELP),
316
-
317
-    optparse.make_option(
318
-        '--proxy',
319
-        dest='proxy',
320
-        type='str',
321
-        default='',
322
-        help="Specify a proxy in the form [user:passwd@]proxy.server:port."),
323
-
324
-    optparse.make_option(
325
-        '--timeout', '--default-timeout',
326
-        metavar='sec',
327
-        dest='timeout',
328
-        type='float',
329
-        default=15,
330
-        help='Set the socket timeout (default %default seconds).'),
331
-
332
-    optparse.make_option(
333
-        # The default version control system for editables, e.g. 'svn'
334
-        '--default-vcs',
335
-        dest='default_vcs',
336
-        type='str',
337
-        default='',
338
-        help=optparse.SUPPRESS_HELP),
339
-
340
-    optparse.make_option(
341
-        # A regex to be used to skip requirements
342
-        '--skip-requirements-regex',
343
-        dest='skip_requirements_regex',
344
-        type='str',
345
-        default='',
346
-        help=optparse.SUPPRESS_HELP),
347
-
348
-    optparse.make_option(
349
-        # Option when path already exist
350
-        '--exists-action',
351
-        dest='exists_action',
352
-        type='choice',
353
-        choices=['s', 'i', 'w', 'b'],
354
-        default=[],
355
-        action='append',
356
-        metavar='action',
357
-        help="Default action when a path already exists: "
358
-             "(s)witch, (i)gnore, (w)ipe, (b)ackup."),
359
-
360
-    optparse.make_option(
361
-        '--cert',
362
-        dest='cert',
363
-        type='str',
364
-        default='',
365
-        metavar='path',
366
-        help = "Path to alternate CA bundle."),
367
-
368
-    ]
369
-
370
-if not ssl:
371
-    standard_options.append(optparse.make_option(
372
-        '--insecure',
373
-        dest='insecure',
374
-        action='store_true',
375
-        default=False,
376
-        help = "Allow lack of certificate checking when ssl is not installed."))
377 0
deleted file mode 100644
378 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/baseparser.pyc and /dev/null differ
379 2
deleted file mode 100644
... ...
@@ -1,3895 +0,0 @@
1
-##
2
-## ca-bundle.crt -- Bundle of CA Root Certificates
3
-##
4
-## Certificate data from Mozilla as of: Sat Dec 29 20:03:40 2012
5
-##
6
-## This is a bundle of X.509 certificates of public Certificate Authorities
7
-## (CA). These were automatically extracted from Mozilla's root certificates
8
-## file (certdata.txt).  This file can be found in the mozilla source tree:
9
-## http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1
10
-##
11
-## It contains the certificates in PEM format and therefore
12
-## can be directly used with curl / libcurl / php_curl, or with
13
-## an Apache+mod_ssl webserver for SSL client authentication.
14
-## Just configure this file as the SSLCACertificateFile.
15
-##
16
-
17
-# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.87 $ $Date: 2012/12/29 16:32:45 $
18
-
19
-GTE CyberTrust Global Root
20
-==========================
21
-MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
22
-Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
23
-A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
24
-MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
25
-Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
26
-IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
27
-sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
28
-HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
29
-AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
30
-M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
31
-NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
32
-
33
-Thawte Server CA
34
-================
35
-MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
36
-DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
37
-dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
38
-AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
39
-b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
40
-BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
41
-c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
42
-A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
43
-ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
44
-/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
45
-1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
46
-MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
47
-GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
48
-GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
49
-
50
-Thawte Premium Server CA
51
-========================
52
-MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
53
-DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
54
-dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
55
-AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
56
-ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
57
-AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
58
-VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
59
-aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
60
-cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
61
-aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
62
-Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
63
-qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
64
-SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
65
-8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
66
-UCemDaYj+bvLpgcUQg==
67
-
68
-Equifax Secure CA
69
-=================
70
-MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
71
-ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
72
-MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
73
-B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
74
-nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
75
-fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
76
-8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
77
-A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
78
-CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
79
-A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
80
-spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
81
-Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
82
-zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
83
-BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
84
-70+sB3c4
85
-
86
-Digital Signature Trust Co. Global CA 1
87
-=======================================
88
-MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
89
-ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMTAeFw05ODEy
90
-MTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
91
-IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUA
92
-A4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJE
93
-NySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2i
94
-o74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
95
-BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
96
-dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
97
-IoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQY
98
-MBaAFGp5fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAM
99
-BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
100
-ACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lNQseSJqBcNJo4cvj9axY+IO6CizEq
101
-kzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4
102
-RbyhkwS7hp86W0N6w4pl
103
-
104
-Digital Signature Trust Co. Global CA 3
105
-=======================================
106
-MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
107
-ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMjAeFw05ODEy
108
-MDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
109
-IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUA
110
-A4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGOD
111
-VvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JS
112
-xhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
113
-BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
114
-dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
115
-IoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQY
116
-MBaAFB6CTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAM
117
-BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
118
-AEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHRxdf0CiUPPXiBng+xZ8SQTGPdXqfi
119
-up/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1
120
-mPnHfxsb1gYgAlihw6ID
121
-
122
-Verisign Class 3 Public Primary Certification Authority
123
-=======================================================
124
-MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
125
-FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
126
-IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
127
-XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
128
-IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
129
-A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
130
-f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
131
-hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
132
-TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
133
-WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
134
-Tqj/ZA1k
135
-
136
-Verisign Class 1 Public Primary Certification Authority - G2
137
-============================================================
138
-MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
139
-MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
140
-eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
141
-biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
142
-dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
143
-MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
144
-eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
145
-biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
146
-dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgd
147
-k4xWArzZbxpvUjZudVYKVdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIq
148
-WpDBucSmFc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQIDAQAB
149
-MA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0Jh9ZrbWB85a7FkCMM
150
-XErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2uluIncrKTdcu1OofdPvAbT6shkdHvC
151
-lUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68DzFc6PLZ
152
-
153
-Verisign Class 2 Public Primary Certification Authority - G2
154
-============================================================
155
-MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQswCQYDVQQGEwJV
156
-UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h
157
-cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp
158
-Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
159
-c3QgTmV0d29yazAeFw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJV
160
-UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h
161
-cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp
162
-Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
163
-c3QgTmV0d29yazCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjx
164
-nNuX6Zr8wgQGE75fUsjMHiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRC
165
-wiNPStjwDqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cCAwEA
166
-ATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9jinb3/7aHmZuovCfTK
167
-1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAXrXfMSTWqz9iP0b63GJZHc2pUIjRk
168
-LbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnInjBJ7xUS0rg==
169
-
170
-Verisign Class 3 Public Primary Certification Authority - G2
171
-============================================================
172
-MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
173
-MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
174
-eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
175
-biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
176
-dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
177
-MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
178
-eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
179
-biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
180
-dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
181
-FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
182
-lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
183
-MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
184
-1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
185
-Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
186
-
187
-GlobalSign Root CA
188
-==================
189
-MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
190
-GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
191
-b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
192
-BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
193
-VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
194
-DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
195
-THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
196
-Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
197
-c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
198
-gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
199
-HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
200
-AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
201
-Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
202
-j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
203
-hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
204
-X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
205
-
206
-GlobalSign Root CA - R2
207
-=======================
208
-MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
209
-YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
210
-bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
211
-aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
212
-bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
213
-ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
214
-s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
215
-S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
216
-TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
217
-ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
218
-FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
219
-YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
220
-BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
221
-9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
222
-01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
223
-9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
224
-TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
225
-
226
-ValiCert Class 1 VA
227
-===================
228
-MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
229
-b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
230
-YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
231
-bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy
232
-MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
233
-d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg
234
-UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
235
-LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
236
-A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi
237
-GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm
238
-DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG
239
-lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX
240
-icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP
241
-Orf1LXLI
242
-
243
-ValiCert Class 2 VA
244
-===================
245
-MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
246
-b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
247
-YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
248
-bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
249
-MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
250
-d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg
251
-UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
252
-LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
253
-A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC
254
-CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf
255
-ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ
256
-SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV
257
-UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8
258
-W9ViH0Pd
259
-
260
-RSA Root Certificate 1
261
-======================
262
-MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
263
-b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
264
-YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
265
-bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
266
-MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
267
-d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg
268
-UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
269
-LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
270
-A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td
271
-3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H
272
-BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs
273
-3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF
274
-V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r
275
-on+jjBXu
276
-
277
-Verisign Class 1 Public Primary Certification Authority - G3
278
-============================================================
279
-MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
280
-UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
281
-cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
282
-IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
283
-dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
284
-CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
285
-dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
286
-cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkg
287
-Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
288
-ggEBAN2E1Lm0+afY8wR4nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/E
289
-bRrsC+MO8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjVojYJ
290
-rKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjbPG7PoBMAGrgnoeS+
291
-Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP26KbqxzcSXKMpHgLZ2x87tNcPVkeB
292
-FQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vrn5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
293
-q2aN17O6x5q25lXQBfGfMY1aqtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/N
294
-y9Sn2WCVhDr4wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3
295
-ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrspSCAaWihT37h
296
-a88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4E1Z5T21Q6huwtVexN2ZYI/Pc
297
-D98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g==
298
-
299
-Verisign Class 2 Public Primary Certification Authority - G3
300
-============================================================
301
-MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJBgNVBAYTAlVT
302
-MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29y
303
-azE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ug
304
-b25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0
305
-aW9uIEF1dGhvcml0eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJ
306
-BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
307
-c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y
308
-aXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBD
309
-ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
310
-AQEArwoNwtUs22e5LeWUJ92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6
311
-tW8UvxDOJxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUYwZF7
312
-C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9okoqQHgiBVrKtaaNS
313
-0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjNqWm6o+sdDZykIKbBoMXRRkwXbdKs
314
-Zj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/ESrg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0
315
-JhU8wI1NQ0kdvekhktdmnLfexbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf
316
-0xwLRtxyID+u7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU
317
-sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RIsH/7NiXaldDx
318
-JBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTPcjnhsUPgKM+351psE2tJs//j
319
-GHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q
320
-
321
-Verisign Class 3 Public Primary Certification Authority - G3
322
-============================================================
323
-MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
324
-UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
325
-cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
326
-IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
327
-dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
328
-CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
329
-dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
330
-cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
331
-Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
332
-ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
333
-EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
334
-cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
335
-EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
336
-055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
337
-ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
338
-j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
339
-/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
340
-xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
341
-t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
342
-
343
-Verisign Class 4 Public Primary Certification Authority - G3
344
-============================================================
345
-MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
346
-UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
347
-cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
348
-IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
349
-dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
350
-CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
351
-dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
352
-cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg
353
-Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
354
-ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS
355
-tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM
356
-8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW
357
-Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX
358
-Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
359
-j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt
360
-mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm
361
-fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd
362
-RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
363
-UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
364
-
365
-Entrust.net Secure Server CA
366
-============================
367
-MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV
368
-BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg
369
-cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
370
-ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv
371
-cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG
372
-A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi
373
-eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p
374
-dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0
375
-aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ
376
-aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5
377
-gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw
378
-ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw
379
-CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l
380
-dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
381
-bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
382
-cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
383
-dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw
384
-NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow
385
-HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA
386
-BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN
387
-Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9
388
-n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
389
-
390
-Entrust.net Premium 2048 Secure Server CA
391
-=========================================
392
-MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
393
-ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
394
-bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
395
-BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
396
-NzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
397
-d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
398
-MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
399
-ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
400
-MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
401
-Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
402
-hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
403
-nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
404
-VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo3QwcjARBglghkgBhvhC
405
-AQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdER
406
-gL7YibkIozH5oSQJFrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B
407
-AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo
408
-oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQh7A6tcOdBTcS
409
-o8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z
410
-2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjX
411
-OP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ==
412
-
413
-Baltimore CyberTrust Root
414
-=========================
415
-MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
416
-ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
417
-ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
418
-SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
419
-dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
420
-uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
421
-UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
422
-G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
423
-XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
424
-l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
425
-VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
426
-BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
427
-cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
428
-hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
429
-Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
430
-RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
431
-
432
-Equifax Secure Global eBusiness CA
433
-==================================
434
-MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
435
-RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
436
-bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
437
-HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
438
-b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
439
-PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
440
-qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
441
-hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
442
-BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
443
-MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
444
-I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
445
-NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
446
-
447
-Equifax Secure eBusiness CA 1
448
-=============================
449
-MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
450
-RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
451
-LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
452
-ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
453
-IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
454
-1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
455
-IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
456
-MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
457
-Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
458
-AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
459
-lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
460
-KpYrtWKmpj29f5JZzVoqgrI3eQ==
461
-
462
-Equifax Secure eBusiness CA 2
463
-=============================
464
-MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEXMBUGA1UE
465
-ChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y
466
-MB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoT
467
-DkVxdWlmYXggU2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCB
468
-nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn
469
-2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5
470
-BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAG
471
-A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUx
472
-JjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoG
473
-A1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9e
474
-uSBIplBqy/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMB
475
-Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAAyGgq3oThr1
476
-jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia
477
-78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUm
478
-V+GRMOrN
479
-
480
-AddTrust Low-Value Services Root
481
-================================
482
-MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
483
-QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
484
-cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
485
-CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
486
-ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
487
-AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
488
-54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
489
-oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
490
-Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
491
-GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
492
-HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
493
-AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
494
-RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
495
-HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
496
-ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
497
-iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
498
-eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
499
-mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
500
-ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
501
-
502
-AddTrust External Root
503
-======================
504
-MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
505
-QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
506
-VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
507
-NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
508
-cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
509
-Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
510
-+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
511
-Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
512
-aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
513
-2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
514
-7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
515
-BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
516
-VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
517
-VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
518
-IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
519
-j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
520
-6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
521
-e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
522
-G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
523
-
524
-AddTrust Public Services Root
525
-=============================
526
-MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
527
-QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
528
-cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
529
-BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
530
-dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
531
-AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
532
-nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
533
-d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
534
-Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
535
-HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
536
-A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
537
-/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
538
-FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
539
-A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
540
-JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
541
-+YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
542
-GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
543
-Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
544
-EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
545
-
546
-AddTrust Qualified Certificates Root
547
-====================================
548
-MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
549
-QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
550
-cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
551
-CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
552
-IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
553
-9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
554
-64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
555
-KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
556
-L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
557
-wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
558
-MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
559
-BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
560
-BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
561
-azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
562
-ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
563
-GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
564
-dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
565
-RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
566
-iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
567
-
568
-Entrust Root Certification Authority
569
-====================================
570
-MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
571
-BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
572
-b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
573
-A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
574
-MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
575
-MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
576
-Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
577
-dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
578
-ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
579
-A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
580
-Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
581
-j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
582
-rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
583
-DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
584
-MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
585
-hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
586
-A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
587
-Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
588
-v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
589
-W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
590
-tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
591
-
592
-RSA Security 2048 v3
593
-====================
594
-MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
595
-ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
596
-MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
597
-BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
598
-AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
599
-Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
600
-WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
601
-KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
602
-+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
603
-MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
604
-FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
605
-v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
606
-0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
607
-VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
608
-nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
609
-pKnXwiJPZ9d37CAFYd4=
610
-
611
-GeoTrust Global CA
612
-==================
613
-MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
614
-Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
615
-MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
616
-LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
617
-CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
618
-BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
619
-8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
620
-T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
621
-vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
622
-AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
623
-DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
624
-zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
625
-d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
626
-mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
627
-XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
628
-Mw==
629
-
630
-GeoTrust Global CA 2
631
-====================
632
-MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
633
-R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
634
-MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
635
-LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
636
-ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
637
-NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
638
-LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
639
-Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
640
-HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
641
-MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
642
-K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
643
-srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
644
-ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
645
-OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
646
-x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
647
-H4z1Ir+rzoPz4iIprn2DQKi6bA==
648
-
649
-GeoTrust Universal CA
650
-=====================
651
-MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
652
-R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1
653
-MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu
654
-Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
655
-ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t
656
-JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e
657
-RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs
658
-7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d
659
-8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V
660
-qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga
661
-Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB
662
-Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu
663
-KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08
664
-ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0
665
-XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB
666
-hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc
667
-aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2
668
-qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL
669
-oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK
670
-xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF
671
-KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2
672
-DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK
673
-xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU
674
-p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI
675
-P/rmMuGNG2+k5o7Y+SlIis5z/iw=
676
-
677
-GeoTrust Universal CA 2
678
-=======================
679
-MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
680
-R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0
681
-MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg
682
-SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA
683
-A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0
684
-DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17
685
-j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q
686
-JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a
687
-QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2
688
-WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP
689
-20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn
690
-ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC
691
-SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG
692
-8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2
693
-+/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E
694
-BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z
695
-dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ
696
-4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+
697
-mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq
698
-A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg
699
-Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP
700
-pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d
701
-FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp
702
-gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm
703
-X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
704
-
705
-UTN-USER First-Network Applications
706
-===================================
707
-MIIEZDCCA0ygAwIBAgIQRL4Mi1AAJLQR0zYwS8AzdzANBgkqhkiG9w0BAQUFADCBozELMAkGA1UE
708
-BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
709
-IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzAp
710
-BgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBBcHBsaWNhdGlvbnMwHhcNOTkwNzA5MTg0ODM5
711
-WhcNMTkwNzA5MTg1NzQ5WjCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5T
712
-YWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
713
-dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzApBgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBB
714
-cHBsaWNhdGlvbnMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz+5Gh5DZVhawGNFug
715
-mliy+LUPBXeDrjKxdpJo7CNKyXY/45y2N3kDuatpjQclthln5LAbGHNhSuh+zdMvZOOmfAz6F4Cj
716
-DUeJT1FxL+78P/m4FoCHiZMlIJpDgmkkdihZNaEdwH+DBmQWICzTSaSFtMBhf1EI+GgVkYDLpdXu
717
-Ozr0hAReYFmnjDRy7rh4xdE7EkpvfmUnuaRVxblvQ6TFHSyZwFKkeEwVs0CYCGtDxgGwenv1axwi
718
-P8vv/6jQOkt2FZ7S0cYu49tXGzKiuG/ohqY/cKvlcJKrRB5AUPuco2LkbG6gyN7igEL66S/ozjIE
719
-j3yNtxyjNTwV3Z7DrpelAgMBAAGjgZEwgY4wCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8w
720
-HQYDVR0OBBYEFPqGydvguul49Uuo1hXf8NPhahQ8ME8GA1UdHwRIMEYwRKBCoECGPmh0dHA6Ly9j
721
-cmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LU5ldHdvcmtBcHBsaWNhdGlvbnMuY3JsMA0G
722
-CSqGSIb3DQEBBQUAA4IBAQCk8yXM0dSRgyLQzDKrm5ZONJFUICU0YV8qAhXhi6r/fWRRzwr/vH3Y
723
-IWp4yy9Rb/hCHTO967V7lMPDqaAt39EpHx3+jz+7qEUqf9FuVSTiuwL7MT++6LzsQCv4AdRWOOTK
724
-RIK1YSAhZ2X28AvnNPilwpyjXEAfhZOVBt5P1CeptqX8Fs1zMT+4ZSfP1FMa8Kxun08FDAOBp4Qp
725
-xFq9ZFdyrTvPNximmMatBrTcCKME1SmklpoSZ0qMYEWd8SOasACcaLWYUNPvji6SZbFIPiG+FTAq
726
-DbUMo2s/rn9X9R+WfN9v3YIwLGUbQErNaLly7HF27FSOH4UMAWr6pjisH8SE
727
-
728
-America Online Root Certification Authority 1
729
-=============================================
730
-MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
731
-QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
732
-Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
733
-A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
734
-T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
735
-ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
736
-v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
737
-DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
738
-sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
739
-8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
740
-AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
741
-o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
742
-GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
743
-VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
744
-3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
745
-Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
746
-sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
747
-
748
-America Online Root Certification Authority 2
749
-=============================================
750
-MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
751
-QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
752
-Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG
753
-A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
754
-T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD
755
-ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en
756
-fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8
757
-f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO
758
-qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN
759
-RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0
760
-gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn
761
-6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid
762
-FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6
763
-Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj
764
-B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op
765
-aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE
766
-AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY
767
-T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p
768
-+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg
769
-JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy
770
-zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO
771
-ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh
772
-1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf
773
-GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff
774
-Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP
775
-cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
776
-
777
-Visa eCommerce Root
778
-===================
779
-MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
780
-EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
781
-QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
782
-WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
783
-VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
784
-bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
785
-F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
786
-RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
787
-TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
788
-/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
789
-GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
790
-MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
791
-CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
792
-YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
793
-zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
794
-YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
795
-398znM/jra6O1I7mT1GvFpLgXPYHDw==
796
-
797
-Certum Root CA
798
-==============
799
-MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK
800
-ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla
801
-Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u
802
-by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x
803
-wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL
804
-kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ
805
-89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K
806
-Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P
807
-NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
808
-hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+
809
-GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg
810
-GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/
811
-0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS
812
-qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw==
813
-
814
-Comodo AAA Services root
815
-========================
816
-MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
817
-R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
818
-TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
819
-MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
820
-c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
821
-BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
822
-ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
823
-C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
824
-i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
825
-Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
826
-Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
827
-Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
828
-BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
829
-cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
830
-LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
831
-7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
832
-Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
833
-8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
834
-12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
835
-
836
-Comodo Secure Services root
837
-===========================
838
-MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
839
-R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
840
-TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
841
-MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
842
-Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
843
-BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
844
-ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
845
-9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
846
-rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
847
-oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
848
-p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
849
-FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
850
-gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
851
-YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
852
-aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
853
-4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
854
-Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
855
-DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
856
-pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
857
-RR3B7Hzs/Sk=
858
-
859
-Comodo Trusted Services root
860
-============================
861
-MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
862
-R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
863
-TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
864
-MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
865
-bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
866
-IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
867
-AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
868
-3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
869
-/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
870
-juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
871
-ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
872
-DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
873
-/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
874
-ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
875
-cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
876
-uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
877
-pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
878
-BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
879
-R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
880
-9y5Xt5hwXsjEeLBi
881
-
882
-QuoVadis Root CA
883
-================
884
-MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
885
-ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
886
-eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
887
-MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
888
-cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
889
-EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
890
-AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
891
-J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
892
-F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
893
-YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
894
-AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
895
-PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
896
-ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
897
-MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
898
-YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
899
-ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
900
-Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
901
-Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
902
-BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
903
-FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
904
-aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
905
-tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
906
-fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
907
-LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
908
-gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
909
-5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
910
-5nrQNiOKSnQ2+Q==
911
-
912
-QuoVadis Root CA 2
913
-==================
914
-MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
915
-EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx
916
-ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
917
-aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC
918
-DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6
919
-XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk
920
-lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB
921
-lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy
922
-lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt
923
-66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn
924
-wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh
925
-D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy
926
-BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie
927
-J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud
928
-DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU
929
-a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT
930
-ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv
931
-Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3
932
-UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm
933
-VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK
934
-+JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW
935
-IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1
936
-WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X
937
-f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II
938
-4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8
939
-VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u
940
-
941
-QuoVadis Root CA 3
942
-==================
943
-MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
944
-EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
945
-OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
946
-aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
947
-DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
948
-DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
949
-KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
950
-DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
951
-BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
952
-p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
953
-nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
954
-MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
955
-Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
956
-uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
957
-BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
958
-YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
959
-aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
960
-BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
961
-VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
962
-ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
963
-AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
964
-qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
965
-hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
966
-POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
967
-Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
968
-8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
969
-bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
970
-g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
971
-vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
972
-qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
973
-
974
-Security Communication Root CA
975
-==============================
976
-MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
977
-U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
978
-HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
979
-U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
980
-ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
981
-8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
982
-DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
983
-5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
984
-DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
985
-JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
986
-DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
987
-0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
988
-mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
989
-s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
990
-6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
991
-FL39vmwLAw==
992
-
993
-Sonera Class 1 Root CA
994
-======================
995
-MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
996
-U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAxMDQwNjEwNDkxM1oXDTIxMDQw
997
-NjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
998
-IENsYXNzMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H88
999
-7dF+2rDNbS82rDTG29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9
1000
-EJUkoVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk3w0LBUXl
1001
-0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBLqdReLjVQCfOAl/QMF645
1002
-2F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIINnvmLVz5MxxftLItyM19yejhW1ebZrgUa
1003
-HXVFsculJRwSVzb9IjcCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZT
1004
-iFIwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE9
1005
-28Jj2VuXZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0HDjxV
1006
-yhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VOTzF2nBBhjrZTOqMR
1007
-vq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2UvkVrCqIexVmiUefkl98HVrhq4uz2P
1008
-qYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4wzMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9Z
1009
-IRlXvVWa
1010
-
1011
-Sonera Class 2 Root CA
1012
-======================
1013
-MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
1014
-U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
1015
-NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
1016
-IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
1017
-/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
1018
-dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
1019
-f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
1020
-tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
1021
-nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
1022
-XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
1023
-0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
1024
-cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
1025
-Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
1026
-EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
1027
-llpwrN9M
1028
-
1029
-Staat der Nederlanden Root CA
1030
-=============================
1031
-MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
1032
-ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
1033
-Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
1034
-HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
1035
-bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
1036
-vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
1037
-jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
1038
-C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
1039
-vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
1040
-22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
1041
-HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
1042
-dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
1043
-BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
1044
-EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
1045
-MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
1046
-nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
1047
-iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
1048
-
1049
-TDC Internet Root CA
1050
-====================
1051
-MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE
1052
-ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx
1053
-NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu
1054
-ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
1055
-MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j
1056
-xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL
1057
-znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc
1058
-5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6
1059
-otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI
1060
-AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM
1061
-VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM
1062
-MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC
1063
-AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe
1064
-UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G
1065
-CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m
1066
-gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+
1067
-2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb
1068
-O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU
1069
-Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l
1070
-
1071
-TDC OCES Root CA
1072
-================
1073
-MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJESzEMMAoGA1UE
1074
-ChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEwODM5MzBaFw0zNzAyMTEwOTA5
1075
-MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIB
1076
-IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuH
1077
-nEz9pPPEXyG9VhDr2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0
1078
-zY0s2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItUGBxIYXvV
1079
-iGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKjdGqPqcNiKXEx5TukYBde
1080
-dObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+rTpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO
1081
-3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB
1082
-5DCB4TCB3gYIKoFQgSkBAQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5k
1083
-ay9yZXBvc2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRlciBm
1084
-cmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4xLiBDZXJ0aWZp
1085
-Y2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4x
1086
-LjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1UdHwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEM
1087
-MAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYm
1088
-aHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy
1089
-MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZJ2cdUBVLc647
1090
-+RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6
1091
-NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACromJkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4
1092
-A9G28kNBKWKnctj7fAXmMXAnVBhOinxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYsc
1093
-A+UYyAFMP8uXBV2YcaaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9
1094
-AOoBmbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQYqbsFbS1
1095
-AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9BKNDLdr8C2LqL19iUw==
1096
-
1097
-UTN DATACorp SGC Root CA
1098
-========================
1099
-MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE
1100
-BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
1101
-IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ
1102
-BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa
1103
-MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w
1104
-HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy
1105
-dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC
1106
-AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys
1107
-raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo
1108
-wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA
1109
-9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv
1110
-33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud
1111
-DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9
1112
-BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD
1113
-LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3
1114
-DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
1115
-Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0
1116
-I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx
1117
-EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP
1118
-DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI
1119
-
1120
-UTN USERFirst Email Root CA
1121
-===========================
1122
-MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE
1123
-BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
1124
-IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0
1125
-BgNVBAMTLVVUTi1VU0VSRmlyc3QtQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05
1126
-OTA3MDkxNzI4NTBaFw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQx
1127
-FzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsx
1128
-ITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UEAxMtVVROLVVTRVJGaXJz
1129
-dC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWlsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
1130
-MIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3BYHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIx
1131
-B8dOtINknS4p1aJkxIW9hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8
1132
-om+rWV6lL8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLmSGHG
1133
-TPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM1tZUOt4KpLoDd7Nl
1134
-yP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws6wIDAQABo4G5MIG2MAsGA1UdDwQE
1135
-AwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNV
1136
-HR8EUTBPME2gS6BJhkdodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGll
1137
-bnRBdXRoZW50aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH
1138
-AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u7mFVbwQ+zzne
1139
-xRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0xtcgBEXkzYABurorbs6q15L+
1140
-5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQrfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarV
1141
-NZ1yQAOJujEdxRBoUp7fooXFXAimeOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZ
1142
-w7JHpsIyYdfHb0gkUSeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ=
1143
-
1144
-UTN USERFirst Hardware Root CA
1145
-==============================
1146
-MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
1147
-BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
1148
-IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
1149
-BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
1150
-OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
1151
-eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
1152
-ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
1153
-DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
1154
-wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
1155
-tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
1156
-i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
1157
-Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
1158
-gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
1159
-lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
1160
-UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
1161
-BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
1162
-//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
1163
-XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
1164
-lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
1165
-iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
1166
-nfhmqA==
1167
-
1168
-UTN USERFirst Object Root CA
1169
-============================
1170
-MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UE
1171
-BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
1172
-IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAb
1173
-BgNVBAMTFFVUTi1VU0VSRmlyc3QtT2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAz
1174
-NlowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkx
1175
-HjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2Vy
1176
-dHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCCASIwDQYJKoZIhvcNAQEB
1177
-BQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicPHxzfOpuCaDDASmEd8S8O+r5596Uj71VR
1178
-loTN2+O5bj4x2AogZ8f02b+U60cEPgLOKqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQ
1179
-w5ujm9M89RKZd7G3CeBo5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vu
1180
-lBe3/IW+pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehbkkj7
1181
-RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUCAwEAAaOBrzCBrDAL
1182
-BgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU2u1kdBScFDyr3ZmpvVsoTYs8
1183
-ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmly
1184
-c3QtT2JqZWN0LmNybDApBgNVHSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQw
1185
-DQYJKoZIhvcNAQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw
1186
-NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXBmMiKVl0+7kNO
1187
-PmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU4U3GDZlDAQ0Slox4nb9QorFE
1188
-qmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK581OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCG
1189
-hU3IfdeLA/5u1fedFqySLKAj5ZyRUh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g=
1190
-
1191
-Camerfirma Chambers of Commerce Root
1192
-====================================
1193
-MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
1194
-QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
1195
-ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
1196
-NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
1197
-cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
1198
-MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
1199
-AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
1200
-xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
1201
-NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
1202
-DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
1203
-d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
1204
-EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
1205
-cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
1206
-AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
1207
-bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
1208
-VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
1209
-aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
1210
-fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
1211
-L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
1212
-UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
1213
-ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
1214
-erfutGWaIZDgqtCYvDi1czyL+Nw=
1215
-
1216
-Camerfirma Global Chambersign Root
1217
-==================================
1218
-MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
1219
-QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
1220
-ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
1221
-NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
1222
-YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
1223
-MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
1224
-ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
1225
-1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
1226
-by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
1227
-6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
1228
-8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
1229
-BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
1230
-aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
1231
-Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
1232
-aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
1233
-ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
1234
-bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
1235
-PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
1236
-gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
1237
-PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
1238
-IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
1239
-t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
1240
-
1241
-NetLock Qualified (Class QA) Root
1242
-=================================
1243
-MIIG0TCCBbmgAwIBAgIBezANBgkqhkiG9w0BAQUFADCByTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
1244
-CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
1245
-BAsTEVRhbnVzaXR2YW55a2lhZG9rMUIwQAYDVQQDEzlOZXRMb2NrIE1pbm9zaXRldHQgS296amVn
1246
-eXpvaSAoQ2xhc3MgUUEpIFRhbnVzaXR2YW55a2lhZG8xHjAcBgkqhkiG9w0BCQEWD2luZm9AbmV0
1247
-bG9jay5odTAeFw0wMzAzMzAwMTQ3MTFaFw0yMjEyMTUwMTQ3MTFaMIHJMQswCQYDVQQGEwJIVTER
1248
-MA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNhZ2kgS2Z0
1249
-LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxQjBABgNVBAMTOU5ldExvY2sgTWlub3NpdGV0
1250
-dCBLb3pqZWd5em9pIChDbGFzcyBRQSkgVGFudXNpdHZhbnlraWFkbzEeMBwGCSqGSIb3DQEJARYP
1251
-aW5mb0BuZXRsb2NrLmh1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx1Ilstg91IRV
1252
-CacbvWy5FPSKAtt2/GoqeKvld/Bu4IwjZ9ulZJm53QE+b+8tmjwi8F3JV6BVQX/yQ15YglMxZc4e
1253
-8ia6AFQer7C8HORSjKAyr7c3sVNnaHRnUPYtLmTeriZ539+Zhqurf4XsoPuAzPS4DB6TRWO53Lhb
1254
-m+1bOdRfYrCnjnxmOCyqsQhjF2d9zL2z8cM/z1A57dEZgxXbhxInlrfa6uWdvLrqOU+L73Sa58XQ
1255
-0uqGURzk/mQIKAR5BevKxXEOC++r6uwSEaEYBTJp0QwsGj0lmT+1fMptsK6ZmfoIYOcZwvK9UdPM
1256
-0wKswREMgM6r3JSda6M5UzrWhQIDAMV9o4ICwDCCArwwEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
1257
-HQ8BAf8EBAMCAQYwggJ1BglghkgBhvhCAQ0EggJmFoICYkZJR1lFTEVNISBFemVuIHRhbnVzaXR2
1258
-YW55IGEgTmV0TG9jayBLZnQuIE1pbm9zaXRldHQgU3pvbGdhbHRhdGFzaSBTemFiYWx5emF0YWJh
1259
-biBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBBIG1pbm9zaXRldHQgZWxla3Ryb25p
1260
-a3VzIGFsYWlyYXMgam9naGF0YXMgZXJ2ZW55ZXN1bGVzZW5laywgdmFsYW1pbnQgZWxmb2dhZGFz
1261
-YW5hayBmZWx0ZXRlbGUgYSBNaW5vc2l0ZXR0IFN6b2xnYWx0YXRhc2kgU3phYmFseXphdGJhbiwg
1262
-YXogQWx0YWxhbm9zIFN6ZXJ6b2Rlc2kgRmVsdGV0ZWxla2JlbiBlbG9pcnQgZWxsZW5vcnplc2kg
1263
-ZWxqYXJhcyBtZWd0ZXRlbGUuIEEgZG9rdW1lbnR1bW9rIG1lZ3RhbGFsaGF0b2sgYSBodHRwczov
1264
-L3d3dy5uZXRsb2NrLmh1L2RvY3MvIGNpbWVuIHZhZ3kga2VyaGV0b2sgYXogaW5mb0BuZXRsb2Nr
1265
-Lm5ldCBlLW1haWwgY2ltZW4uIFdBUk5JTkchIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0
1266
-aGlzIGNlcnRpZmljYXRlIGFyZSBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIFF1YWxpZmllZCBDUFMg
1267
-YXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3Lm5ldGxvY2suaHUvZG9jcy8gb3IgYnkgZS1tYWlsIGF0
1268
-IGluZm9AbmV0bG9jay5uZXQwHQYDVR0OBBYEFAlqYhaSsFq7VQ7LdTI6MuWyIckoMA0GCSqGSIb3
1269
-DQEBBQUAA4IBAQCRalCc23iBmz+LQuM7/KbD7kPgz/PigDVJRXYC4uMvBcXxKufAQTPGtpvQMznN
1270
-wNuhrWw3AkxYQTvyl5LGSKjN5Yo5iWH5Upfpvfb5lHTocQ68d4bDBsxafEp+NFAwLvt/MpqNPfMg
1271
-W/hqyobzMUwsWYACff44yTB1HLdV47yfuqhthCgFdbOLDcCRVCHnpgu0mfVRQdzNo0ci2ccBgcTc
1272
-R08m6h/t280NmPSjnLRzMkqWmf68f8glWPhY83ZmiVSkpj7EUFy6iRiCdUgh0k8T6GB+B3bbELVR
1273
-5qq5aKrN9p2QdRLqOBrKROi3macqaJVmlaut74nLYKkGEsaUR+ko
1274
-
1275
-NetLock Notary (Class A) Root
1276
-=============================
1277
-MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
1278
-EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
1279
-dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
1280
-ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
1281
-DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
1282
-EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
1283
-VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
1284
-cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
1285
-D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
1286
-z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
1287
-/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
1288
-tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
1289
-4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
1290
-A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
1291
-Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
1292
-bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
1293
-IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
1294
-LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
1295
-ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
1296
-IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
1297
-IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
1298
-b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
1299
-bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
1300
-Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
1301
-bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
1302
-ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
1303
-ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
1304
-CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
1305
-KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
1306
-8CgHrTwXZoi1/baI
1307
-
1308
-NetLock Business (Class B) Root
1309
-===============================
1310
-MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
1311
-CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
1312
-BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg
1313
-VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD
1314
-VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv
1315
-bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg
1316
-VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
1317
-iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S
1318
-o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr
1319
-1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
1320
-HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ
1321
-RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh
1322
-dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0
1323
-ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv
1324
-c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg
1325
-YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
1326
-c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz
1327
-Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA
1328
-bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl
1329
-IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2
1330
-YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj
1331
-cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM
1332
-43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR
1333
-stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI
1334
-
1335
-NetLock Express (Class C) Root
1336
-==============================
1337
-MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT
1338
-CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
1339
-BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD
1340
-KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ
1341
-BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
1342
-dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j
1343
-ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB
1344
-jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z
1345
-W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63
1346
-euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw
1347
-DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN
1348
-RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn
1349
-YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB
1350
-IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i
1351
-aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0
1352
-ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
1353
-ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo
1354
-dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y
1355
-emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k
1356
-IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ
1357
-UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg
1358
-YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2
1359
-xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW
1360
-gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A==
1361
-
1362
-XRamp Global CA Root
1363
-====================
1364
-MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
1365
-BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
1366
-dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
1367
-dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
1368
-HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
1369
-U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
1370
-dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
1371
-IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
1372
-foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
1373
-zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
1374
-AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
1375
-xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
1376
-EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
1377
-oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
1378
-AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
1379
-/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
1380
-qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
1381
-nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
1382
-8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
1383
-
1384
-Go Daddy Class 2 CA
1385
-===================
1386
-MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
1387
-VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
1388
-ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
1389
-A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
1390
-RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
1391
-ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
1392
-2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
1393
-qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
1394
-YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
1395
-vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
1396
-BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
1397
-atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
1398
-MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
1399
-A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
1400
-PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
1401
-I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
1402
-HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
1403
-Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
1404
-vZ8=
1405
-
1406
-Starfield Class 2 CA
1407
-====================
1408
-MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
1409
-U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
1410
-Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
1411
-MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
1412
-A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
1413
-SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
1414
-bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
1415
-JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
1416
-epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
1417
-F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
1418
-MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
1419
-hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
1420
-bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
1421
-QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
1422
-afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
1423
-PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
1424
-xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
1425
-KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
1426
-QBFGmh95DmK/D5fs4C8fF5Q=
1427
-
1428
-StartCom Certification Authority
1429
-================================
1430
-MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
1431
-U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
1432
-ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
1433
-NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
1434
-LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
1435
-U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
1436
-ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
1437
-o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
1438
-Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
1439
-eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
1440
-2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
1441
-6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
1442
-osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
1443
-untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
1444
-UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
1445
-37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
1446
-FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0
1447
-Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj
1448
-YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH
1449
-AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw
1450
-Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg
1451
-U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5
1452
-LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
1453
-cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh
1454
-cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT
1455
-dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
1456
-AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh
1457
-3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm
1458
-vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk
1459
-fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3
1460
-fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ
1461
-EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
1462
-yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl
1463
-1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/
1464
-lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro
1465
-g14=
1466
-
1467
-Taiwan GRCA
1468
-===========
1469
-MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG
1470
-EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X
1471
-DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv
1472
-dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD
1473
-ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN
1474
-w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5
1475
-BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O
1476
-1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO
1477
-htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov
1478
-J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7
1479
-Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t
1480
-B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB
1481
-O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8
1482
-lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV
1483
-HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2
1484
-09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ
1485
-TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj
1486
-Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2
1487
-Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU
1488
-D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz
1489
-DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk
1490
-Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk
1491
-7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ
1492
-CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy
1493
-+fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS
1494
-
1495
-Firmaprofesional Root CA
1496
-========================
1497
-MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT
1498
-GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp
1499
-Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA
1500
-ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL
1501
-MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT
1502
-OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2
1503
-ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB
1504
-AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V
1505
-j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH
1506
-lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf
1507
-3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8
1508
-NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww
1509
-KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG
1510
-AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud
1511
-DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD
1512
-ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq
1513
-u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf
1514
-wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm
1515
-7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG
1516
-VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA=
1517
-
1518
-Wells Fargo Root CA
1519
-===================
1520
-MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMCVVMxFDASBgNV
1521
-BAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhv
1522
-cml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
1523
-MDAxMDExMTY0MTI4WhcNMjEwMTE0MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dl
1524
-bGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEv
1525
-MC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG
1526
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n135zHCLielTWi5MbqNQ1mX
1527
-x3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHESxP9cMIlrCL1dQu3U+SlK93OvRw6esP3
1528
-E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4OJgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5
1529
-OEL8pahbSCOz6+MlsoCultQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4j
1530
-sNtlAHCEAQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMBAAGj
1531
-YTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcBCzAyMDAGCCsGAQUF
1532
-BwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRwb2xpY3kwDQYJKoZIhvcNAQEFBQAD
1533
-ggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrv
1534
-m+0fazbuSCUlFLZWohDo7qd/0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0R
1535
-OhPs7fpvcmR7nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx
1536
-x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ33ZwmVxwQ023
1537
-tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s=
1538
-
1539
-Swisscom Root CA 1
1540
-==================
1541
-MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG
1542
-EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
1543
-dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4
1544
-MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
1545
-aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC
1546
-IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM
1547
-MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF
1548
-NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe
1549
-AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC
1550
-b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn
1551
-7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN
1552
-cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp
1553
-WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5
1554
-haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY
1555
-MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
1556
-HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j
1557
-BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9
1558
-MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn
1559
-jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ
1560
-MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H
1561
-VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl
1562
-vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl
1563
-OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3
1564
-1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq
1565
-nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy
1566
-x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW
1567
-NY6E0F/6MBr1mmz0DlP5OlvRHA==
1568
-
1569
-DigiCert Assured ID Root CA
1570
-===========================
1571
-MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
1572
-EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
1573
-IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
1574
-MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
1575
-ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
1576
-ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
1577
-9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
1578
-UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
1579
-/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
1580
-oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
1581
-GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
1582
-66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
1583
-hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
1584
-EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
1585
-SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
1586
-8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
1587
-+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
1588
-
1589
-DigiCert Global Root CA
1590
-=======================
1591
-MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
1592
-EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
1593
-HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
1594
-MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
1595
-dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
1596
-hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
1597
-TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
1598
-BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
1599
-4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
1600
-7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
1601
-o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
1602
-8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
1603
-BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
1604
-EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
1605
-tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
1606
-UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
1607
-CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
1608
-
1609
-DigiCert High Assurance EV Root CA
1610
-==================================
1611
-MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
1612
-EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
1613
-KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
1614
-MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
1615
-MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
1616
-Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
1617
-Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
1618
-OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
1619
-MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
1620
-NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
1621
-h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
1622
-Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
1623
-JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
1624
-V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
1625
-myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
1626
-mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
1627
-vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
1628
-
1629
-Certplus Class 2 Primary CA
1630
-===========================
1631
-MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
1632
-BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
1633
-OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
1634
-dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
1635
-ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
1636
-5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
1637
-Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
1638
-YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
1639
-e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
1640
-CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
1641
-YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
1642
-L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
1643
-P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
1644
-TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
1645
-7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
1646
-//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
1647
-l7+ijrRU
1648
-
1649
-DST Root CA X3
1650
-==============
1651
-MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
1652
-ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
1653
-DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
1654
-cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
1655
-ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
1656
-rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
1657
-UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
1658
-xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
1659
-utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
1660
-AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
1661
-MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
1662
-dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
1663
-GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
1664
-RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
1665
-fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
1666
-
1667
-DST ACES CA X6
1668
-==============
1669
-MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
1670
-EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
1671
-MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
1672
-MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
1673
-CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
1674
-AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
1675
-DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
1676
-pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
1677
-GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
1678
-MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
1679
-EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
1680
-Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
1681
-dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
1682
-CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
1683
-5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
1684
-Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
1685
-nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
1686
-vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
1687
-oKfN5XozNmr6mis=
1688
-
1689
-TURKTRUST Certificate Services Provider Root 1
1690
-==============================================
1691
-MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
1692
-bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP
1693
-MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0
1694
-acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx
1695
-MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg
1696
-U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB
1697
-TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC
1698
-aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC
1699
-AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX
1700
-yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i
1701
-Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ
1702
-8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4
1703
-W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME
1704
-BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46
1705
-sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE
1706
-q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy
1707
-B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY
1708
-nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H
1709
-
1710
-TURKTRUST Certificate Services Provider Root 2
1711
-==============================================
1712
-MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF
1713
-bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
1714
-MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
1715
-QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN
1716
-MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr
1717
-dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G
1718
-A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
1719
-acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G
1720
-CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe
1721
-LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI
1722
-x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g
1723
-QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr
1724
-5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB
1725
-AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G
1726
-A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt
1727
-Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4
1728
-Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+
1729
-hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P
1730
-9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5
1731
-UrbnBEI=
1732
-
1733
-SwissSign Platinum CA - G2
1734
-==========================
1735
-MIIFwTCCA6mgAwIBAgIITrIAZwwDXU8wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UEBhMCQ0gxFTAT
1736
-BgNVBAoTDFN3aXNzU2lnbiBBRzEjMCEGA1UEAxMaU3dpc3NTaWduIFBsYXRpbnVtIENBIC0gRzIw
1737
-HhcNMDYxMDI1MDgzNjAwWhcNMzYxMDI1MDgzNjAwWjBJMQswCQYDVQQGEwJDSDEVMBMGA1UEChMM
1738
-U3dpc3NTaWduIEFHMSMwIQYDVQQDExpTd2lzc1NpZ24gUGxhdGludW0gQ0EgLSBHMjCCAiIwDQYJ
1739
-KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMrfogLi2vj8Bxax3mCq3pZcZB/HL37PZ/pEQtZ2Y5Wu
1740
-669yIIpFR4ZieIbWIDkm9K6j/SPnpZy1IiEZtzeTIsBQnIJ71NUERFzLtMKfkr4k2HtnIuJpX+UF
1741
-eNSH2XFwMyVTtIc7KZAoNppVRDBopIOXfw0enHb/FZ1glwCNioUD7IC+6ixuEFGSzH7VozPY1kne
1742
-WCqv9hbrS3uQMpe5up1Y8fhXSQQeol0GcN1x2/ndi5objM89o03Oy3z2u5yg+gnOI2Ky6Q0f4nIo
1743
-j5+saCB9bzuohTEJfwvH6GXp43gOCWcwizSC+13gzJ2BbWLuCB4ELE6b7P6pT1/9aXjvCR+htL/6
1744
-8++QHkwFix7qepF6w9fl+zC8bBsQWJj3Gl/QKTIDE0ZNYWqFTFJ0LwYfexHihJfGmfNtf9dng34T
1745
-aNhxKFrYzt3oEBSa/m0jh26OWnA81Y0JAKeqvLAxN23IhBQeW71FYyBrS3SMvds6DsHPWhaPpZjy
1746
-domyExI7C3d3rLvlPClKknLKYRorXkzig3R3+jVIeoVNjZpTxN94ypeRSCtFKwH3HBqi7Ri6Cr2D
1747
-+m+8jVeTO9TUps4e8aCxzqv9KyiaTxvXw3LbpMS/XUz13XuWae5ogObnmLo2t/5u7Su9IPhlGdpV
1748
-CX4l3P5hYnL5fhgC72O00Puv5TtjjGePAgMBAAGjgawwgakwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud
1749
-EwEB/wQFMAMBAf8wHQYDVR0OBBYEFFCvzAeHFUdvOMW0ZdHelarp35zMMB8GA1UdIwQYMBaAFFCv
1750
-zAeHFUdvOMW0ZdHelarp35zMMEYGA1UdIAQ/MD0wOwYJYIV0AVkBAQEBMC4wLAYIKwYBBQUHAgEW
1751
-IGh0dHA6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vMA0GCSqGSIb3DQEBBQUAA4ICAQAIhab1
1752
-Fgz8RBrBY+D5VUYI/HAcQiiWjrfFwUF1TglxeeVtlspLpYhg0DB0uMoI3LQwnkAHFmtllXcBrqS3
1753
-NQuB2nEVqXQXOHtYyvkv+8Bldo1bAbl93oI9ZLi+FHSjClTTLJUYFzX1UWs/j6KWYTl4a0vlpqD4
1754
-U99REJNi54Av4tHgvI42Rncz7Lj7jposiU0xEQ8mngS7twSNC/K5/FqdOxa3L8iYq/6KUFkuozv8
1755
-KV2LwUvJ4ooTHbG/u0IdUt1O2BReEMYxB+9xJ/cbOQncguqLs5WGXv312l0xpuAxtpTmREl0xRbl
1756
-9x8DYSjFyMsSoEJL+WuICI20MhjzdZ/EfwBPBZWcoxcCw7NTm6ogOSkrZvqdr16zktK1puEa+S1B
1757
-aYEUtLS17Yk9zvupnTVCRLEcFHOBzyoBNZox1S2PbYTfgE1X4z/FhHXaicYwu+uPyyIIoK6q8QNs
1758
-OktNCaUOcsZWayFCTiMlFGiudgp8DAdwZPmaL/YFOSbGDI8Zf0NebvRbFS/bYV3mZy8/CJT5YLSY
1759
-Mdp08YSTcU1f+2BY0fvEwW2JorsgH51xkcsymxM9Pn2SUjWskpSi0xjCfMfqr3YFFt1nJ8J+HAci
1760
-IfNAChs0B0QTwoRqjt8ZWr9/6x3iGjjRXK9HkmuAtTClyY3YqzGBH9/CZjfTk6mFhnll0g==
1761
-
1762
-SwissSign Gold CA - G2
1763
-======================
1764
-MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw
1765
-EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN
1766
-MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp
1767
-c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B
1768
-AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq
1769
-t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C
1770
-jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg
1771
-vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF
1772
-ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR
1773
-AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend
1774
-jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO
1775
-peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR
1776
-7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi
1777
-GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw
1778
-AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64
1779
-OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov
1780
-L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm
1781
-5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr
1782
-44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf
1783
-Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m
1784
-Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp
1785
-mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk
1786
-vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf
1787
-KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br
1788
-NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj
1789
-viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ
1790
-
1791
-SwissSign Silver CA - G2
1792
-========================
1793
-MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT
1794
-BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X
1795
-DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3
1796
-aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG
1797
-9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644
1798
-N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm
1799
-+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH
1800
-6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu
1801
-MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h
1802
-qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5
1803
-FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs
1804
-ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc
1805
-celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X
1806
-CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
1807
-BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB
1808
-tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0
1809
-cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P
1810
-4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F
1811
-kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L
1812
-3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx
1813
-/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa
1814
-DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP
1815
-e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu
1816
-WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ
1817
-DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub
1818
-DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u
1819
-
1820
-GeoTrust Primary Certification Authority
1821
-========================================
1822
-MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
1823
-EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
1824
-ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
1825
-CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
1826
-cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
1827
-CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
1828
-b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
1829
-nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
1830
-RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
1831
-tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
1832
-AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
1833
-hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
1834
-Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
1835
-NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
1836
-Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
1837
-1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
1838
-
1839
-thawte Primary Root CA
1840
-======================
1841
-MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
1842
-BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
1843
-aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
1844
-cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
1845
-MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
1846
-SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
1847
-KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
1848
-FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
1849
-oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
1850
-1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
1851
-q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
1852
-aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
1853
-afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
1854
-VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
1855
-AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
1856
-uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
1857
-xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
1858
-jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
1859
-z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
1860
-
1861
-VeriSign Class 3 Public Primary Certification Authority - G5
1862
-============================================================
1863
-MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
1864
-BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
1865
-ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
1866
-IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
1867
-ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
1868
-yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
1869
-biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
1870
-dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
1871
-YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
1872
-ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
1873
-j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
1874
-Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
1875
-Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
1876
-fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
1877
-BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
1878
-Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
1879
-aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
1880
-SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
1881
-X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
1882
-KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
1883
-Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
1884
-ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
1885
-
1886
-SecureTrust CA
1887
-==============
1888
-MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
1889
-EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
1890
-dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
1891
-BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
1892
-ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
1893
-OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
1894
-DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
1895
-GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
1896
-01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
1897
-ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
1898
-BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
1899
-aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
1900
-KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
1901
-SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
1902
-mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
1903
-nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
1904
-3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
1905
-
1906
-Secure Global CA
1907
-================
1908
-MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
1909
-EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
1910
-bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
1911
-MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
1912
-Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
1913
-YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
1914
-bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
1915
-8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
1916
-HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
1917
-0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
1918
-EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
1919
-oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
1920
-MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
1921
-OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
1922
-CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
1923
-3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
1924
-f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
1925
-
1926
-COMODO Certification Authority
1927
-==============================
1928
-MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
1929
-BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
1930
-A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
1931
-dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
1932
-MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
1933
-T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
1934
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
1935
-+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
1936
-xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
1937
-4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
1938
-1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
1939
-rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
1940
-BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
1941
-b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
1942
-AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
1943
-OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
1944
-RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
1945
-IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
1946
-+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
1947
-
1948
-Network Solutions Certificate Authority
1949
-=======================================
1950
-MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
1951
-EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
1952
-IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
1953
-MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
1954
-MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
1955
-CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
1956
-jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
1957
-aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
1958
-crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
1959
-/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
1960
-AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
1961
-BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
1962
-bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
1963
-A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
1964
-4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
1965
-GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
1966
-wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
1967
-ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
1968
-
1969
-WellsSecure Public Root Certificate Authority
1970
-=============================================
1971
-MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
1972
-F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
1973
-NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
1974
-MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
1975
-bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
1976
-VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
1977
-CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
1978
-iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
1979
-i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
1980
-bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
1981
-K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
1982
-AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
1983
-cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
1984
-lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
1985
-i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
1986
-GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
1987
-Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
1988
-K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
1989
-bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
1990
-qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
1991
-E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
1992
-tylv2G0xffX8oRAHh84vWdw+WNs=
1993
-
1994
-COMODO ECC Certification Authority
1995
-==================================
1996
-MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
1997
-R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
1998
-ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
1999
-dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
2000
-GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
2001
-Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
2002
-b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
2003
-4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
2004
-wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
2005
-BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
2006
-FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
2007
-U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
2008
-
2009
-IGC/A
2010
-=====
2011
-MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD
2012
-VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE
2013
-Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy
2014
-MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI
2015
-EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT
2016
-STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB
2017
-IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2
2018
-TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW
2019
-So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy
2020
-HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd
2021
-frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ
2022
-tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB
2023
-egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC
2024
-iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK
2025
-q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q
2026
-MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
2027
-Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI
2028
-lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF
2029
-0mBWWg==
2030
-
2031
-Security Communication EV RootCA1
2032
-=================================
2033
-MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
2034
-U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh
2035
-dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE
2036
-BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl
2037
-Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
2038
-AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO
2039
-/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX
2040
-WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z
2041
-ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4
2042
-bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK
2043
-9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
2044
-SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm
2045
-iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG
2046
-Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW
2047
-mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW
2048
-T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490
2049
-
2050
-OISTE WISeKey Global Root GA CA
2051
-===============================
2052
-MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
2053
-BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
2054
-A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
2055
-bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
2056
-VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
2057
-IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
2058
-IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
2059
-Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
2060
-Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
2061
-d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
2062
-/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
2063
-LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
2064
-AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
2065
-KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
2066
-MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
2067
-+vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
2068
-hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
2069
-okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
2070
-
2071
-S-TRUST Authentication and Encryption Root CA 2005 PN
2072
-=====================================================
2073
-MIIEezCCA2OgAwIBAgIQNxkY5lNUfBq1uMtZWts1tzANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE
2074
-BhMCREUxIDAeBgNVBAgTF0JhZGVuLVd1ZXJ0dGVtYmVyZyAoQlcpMRIwEAYDVQQHEwlTdHV0dGdh
2075
-cnQxKTAnBgNVBAoTIERldXRzY2hlciBTcGFya2Fzc2VuIFZlcmxhZyBHbWJIMT4wPAYDVQQDEzVT
2076
-LVRSVVNUIEF1dGhlbnRpY2F0aW9uIGFuZCBFbmNyeXB0aW9uIFJvb3QgQ0EgMjAwNTpQTjAeFw0w
2077
-NTA2MjIwMDAwMDBaFw0zMDA2MjEyMzU5NTlaMIGuMQswCQYDVQQGEwJERTEgMB4GA1UECBMXQmFk
2078
-ZW4tV3VlcnR0ZW1iZXJnIChCVykxEjAQBgNVBAcTCVN0dXR0Z2FydDEpMCcGA1UEChMgRGV1dHNj
2079
-aGVyIFNwYXJrYXNzZW4gVmVybGFnIEdtYkgxPjA8BgNVBAMTNVMtVFJVU1QgQXV0aGVudGljYXRp
2080
-b24gYW5kIEVuY3J5cHRpb24gUm9vdCBDQSAyMDA1OlBOMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
2081
-MIIBCgKCAQEA2bVKwdMz6tNGs9HiTNL1toPQb9UY6ZOvJ44TzbUlNlA0EmQpoVXhOmCTnijJ4/Ob
2082
-4QSwI7+Vio5bG0F/WsPoTUzVJBY+h0jUJ67m91MduwwA7z5hca2/OnpYH5Q9XIHV1W/fuJvS9eXL
2083
-g3KSwlOyggLrra1fFi2SU3bxibYs9cEv4KdKb6AwajLrmnQDaHgTncovmwsdvs91DSaXm8f1Xgqf
2084
-eN+zvOyauu9VjxuapgdjKRdZYgkqeQd3peDRF2npW932kKvimAoA0SVtnteFhy+S8dF2g08LOlk3
2085
-KC8zpxdQ1iALCvQm+Z845y2kuJuJja2tyWp9iRe79n+Ag3rm7QIDAQABo4GSMIGPMBIGA1UdEwEB
2086
-/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFTVFJv
2087
-bmxpbmUxLTIwNDgtNTAdBgNVHQ4EFgQUD8oeXHngovMpttKFswtKtWXsa1IwHwYDVR0jBBgwFoAU
2088
-D8oeXHngovMpttKFswtKtWXsa1IwDQYJKoZIhvcNAQEFBQADggEBAK8B8O0ZPCjoTVy7pWMciDMD
2089
-pwCHpB8gq9Yc4wYfl35UvbfRssnV2oDsF9eK9XvCAPbpEW+EoFolMeKJ+aQAPzFoLtU96G7m1R08
2090
-P7K9n3frndOMusDXtk3sU5wPBG7qNWdX4wple5A64U8+wwCSersFiXOMy6ZNwPv2AtawB6MDwidA
2091
-nwzkhYItr5pCHdDHjfhA7p0GVxzZotiAFP7hYy0yh9WUUpY6RsZxlj33mA6ykaqP2vROJAA5Veit
2092
-F7nTNCtKqUDMFypVZUF0Qn71wK/Ik63yGFs9iQzbRzkk+OBM8h+wPQrKBU6JIRrjKpms/H+h8Q8b
2093
-Hz2eBIPdltkdOpQ=
2094
-
2095
-Microsec e-Szigno Root CA
2096
-=========================
2097
-MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE
2098
-BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL
2099
-EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0
2100
-MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz
2101
-dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT
2102
-GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
2103
-AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG
2104
-d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N
2105
-oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc
2106
-QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ
2107
-PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb
2108
-MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG
2109
-IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD
2110
-VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3
2111
-LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A
2112
-dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
2113
-AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA
2114
-4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg
2115
-AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA
2116
-egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6
2117
-Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO
2118
-PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv
2119
-c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h
2120
-cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw
2121
-IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT
2122
-WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV
2123
-MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER
2124
-MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp
2125
-Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal
2126
-HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT
2127
-nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE
2128
-aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
2129
-86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK
2130
-yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB
2131
-S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
2132
-
2133
-Certigna
2134
-========
2135
-MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
2136
-EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
2137
-MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
2138
-Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
2139
-XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
2140
-GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
2141
-ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
2142
-DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
2143
-Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
2144
-tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
2145
-BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
2146
-SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
2147
-hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
2148
-ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
2149
-PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
2150
-1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
2151
-WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
2152
-
2153
-AC Ra\xC3\xADz Certic\xC3\xA1mara S.A.
2154
-======================================
2155
-MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT
2156
-AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg
2157
-LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w
2158
-HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+
2159
-U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh
2160
-IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B
2161
-AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN
2162
-yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU
2163
-2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3
2164
-4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP
2165
-2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm
2166
-8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf
2167
-HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa
2168
-Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK
2169
-5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b
2170
-czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
2171
-AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g
2172
-ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF
2173
-BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug
2174
-cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf
2175
-AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX
2176
-EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v
2177
-/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3
2178
-MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4
2179
-3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk
2180
-eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f
2181
-/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h
2182
-RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU
2183
-Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ==
2184
-
2185
-TC TrustCenter Class 2 CA II
2186
-============================
2187
-MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
2188
-REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
2189
-IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw
2190
-MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
2191
-c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE
2192
-AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
2193
-AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw
2194
-IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2
2195
-xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ
2196
-Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u
2197
-SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB
2198
-/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB
2199
-7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
2200
-Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
2201
-cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
2202
-SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
2203
-TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G
2204
-dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ
2205
-KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj
2206
-TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP
2207
-JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
2208
-vQ==
2209
-
2210
-TC TrustCenter Class 3 CA II
2211
-============================
2212
-MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
2213
-REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
2214
-IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw
2215
-MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
2216
-c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE
2217
-AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
2218
-AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W
2219
-yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo
2220
-6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ
2221
-uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk
2222
-2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB
2223
-/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB
2224
-7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
2225
-Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
2226
-cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
2227
-SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
2228
-TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE
2229
-O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8
2230
-yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9
2231
-IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
2232
-092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc
2233
-5A==
2234
-
2235
-TC TrustCenter Universal CA I
2236
-=============================
2237
-MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC
2238
-REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
2239
-IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN
2240
-MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg
2241
-VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw
2242
-JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD
2243
-ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC
2244
-qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv
2245
-xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw
2246
-ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O
2247
-gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j
2248
-BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
2249
-AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG
2250
-1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy
2251
-vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3
2252
-ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT
2253
-ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a
2254
-7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY
2255
-
2256
-Deutsche Telekom Root CA 2
2257
-==========================
2258
-MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
2259
-RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
2260
-A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
2261
-MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
2262
-A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
2263
-b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
2264
-bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
2265
-KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
2266
-AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
2267
-Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
2268
-jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
2269
-HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
2270
-E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
2271
-zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
2272
-rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
2273
-dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
2274
-Cm26OWMohpLzGITY+9HPBVZkVw==
2275
-
2276
-ComSign CA
2277
-==========
2278
-MIIDkzCCAnugAwIBAgIQFBOWgxRVjOp7Y+X8NId3RDANBgkqhkiG9w0BAQUFADA0MRMwEQYDVQQD
2279
-EwpDb21TaWduIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0wNDAzMjQxMTMy
2280
-MThaFw0yOTAzMTkxNTAyMThaMDQxEzARBgNVBAMTCkNvbVNpZ24gQ0ExEDAOBgNVBAoTB0NvbVNp
2281
-Z24xCzAJBgNVBAYTAklMMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8ORUaSvTx49q
2282
-ROR+WCf4C9DklBKK8Rs4OC8fMZwG1Cyn3gsqrhqg455qv588x26i+YtkbDqthVVRVKU4VbirgwTy
2283
-P2Q298CNQ0NqZtH3FyrV7zb6MBBC11PN+fozc0yz6YQgitZBJzXkOPqUm7h65HkfM/sb2CEJKHxN
2284
-GGleZIp6GZPKfuzzcuc3B1hZKKxC+cX/zT/npfo4sdAMx9lSGlPWgcxCejVb7Us6eva1jsz/D3zk
2285
-YDaHL63woSV9/9JLEYhwVKZBqGdTUkJe5DSe5L6j7KpiXd3DTKaCQeQzC6zJMw9kglcq/QytNuEM
2286
-rkvF7zuZ2SOzW120V+x0cAwqTwIDAQABo4GgMIGdMAwGA1UdEwQFMAMBAf8wPQYDVR0fBDYwNDAy
2287
-oDCgLoYsaHR0cDovL2ZlZGlyLmNvbXNpZ24uY28uaWwvY3JsL0NvbVNpZ25DQS5jcmwwDgYDVR0P
2288
-AQH/BAQDAgGGMB8GA1UdIwQYMBaAFEsBmz5WGmU2dst7l6qSBe4y5ygxMB0GA1UdDgQWBBRLAZs+
2289
-VhplNnbLe5eqkgXuMucoMTANBgkqhkiG9w0BAQUFAAOCAQEA0Nmlfv4pYEWdfoPPbrxHbvUanlR2
2290
-QnG0PFg/LUAlQvaBnPGJEMgOqnhPOAlXsDzACPw1jvFIUY0McXS6hMTXcpuEfDhOZAYnKuGntewI
2291
-mbQKDdSFc8gS4TXt8QUxHXOZDOuWyt3T5oWq8Ir7dcHyCTxlZWTzTNity4hp8+SDtwy9F1qWF8pb
2292
-/627HOkthIDYIb6FUtnUdLlphbpN7Sgy6/lhSuTENh4Z3G+EER+V9YMoGKgzkkMn3V0TBEVPh9VG
2293
-zT2ouvDzuFYkRes3x+F2T3I5GN9+dHLHcy056mDmrRGiVod7w2ia/viMcKjfZTL0pECMocJEAw6U
2294
-AGegcQCCSA==
2295
-
2296
-ComSign Secured CA
2297
-==================
2298
-MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE
2299
-AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w
2300
-NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD
2301
-QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
2302
-ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs
2303
-49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH
2304
-7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB
2305
-kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1
2306
-9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw
2307
-AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t
2308
-U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA
2309
-j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC
2310
-AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a
2311
-BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp
2312
-FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP
2313
-51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz
2314
-OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw==
2315
-
2316
-Cybertrust Global Root
2317
-======================
2318
-MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
2319
-ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
2320
-MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
2321
-ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
2322
-+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
2323
-0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
2324
-AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
2325
-89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
2326
-8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
2327
-BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
2328
-MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
2329
-A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
2330
-lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
2331
-5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
2332
-hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
2333
-X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
2334
-WL1WMRJOEcgh4LMRkWXbtKaIOM5V
2335
-
2336
-ePKI Root Certification Authority
2337
-=================================
2338
-MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG
2339
-EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg
2340
-Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx
2341
-MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq
2342
-MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B
2343
-AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs
2344
-IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi
2345
-lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv
2346
-qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX
2347
-12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O
2348
-WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+
2349
-ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao
2350
-lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/
2351
-vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi
2352
-Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi
2353
-MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH
2354
-ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0
2355
-1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq
2356
-KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV
2357
-xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP
2358
-NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r
2359
-GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE
2360
-xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx
2361
-gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy
2362
-sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD
2363
-BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw=
2364
-
2365
-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
2366
-=============================================================================================================================
2367
-MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH
2368
-DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q
2369
-aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry
2370
-b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV
2371
-BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg
2372
-S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4
2373
-MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl
2374
-IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF
2375
-n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl
2376
-IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft
2377
-dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl
2378
-cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B
2379
-AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO
2380
-Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1
2381
-xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR
2382
-6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL
2383
-hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd
2384
-BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
2385
-MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4
2386
-N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT
2387
-y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh
2388
-LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M
2389
-dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
2390
-
2391
-Buypass Class 2 CA 1
2392
-====================
2393
-MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
2394
-QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2
2395
-MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
2396
-c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI
2397
-hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M
2398
-cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83
2399
-0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4
2400
-0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R
2401
-uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC
2402
-MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P
2403
-AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV
2404
-1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt
2405
-7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2
2406
-fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w
2407
-wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho
2408
-
2409
-Buypass Class 3 CA 1
2410
-====================
2411
-MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
2412
-QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1
2413
-MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
2414
-c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI
2415
-hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx
2416
-ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0
2417
-n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia
2418
-AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c
2419
-1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC
2420
-MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P
2421
-AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7
2422
-pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA
2423
-EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5
2424
-htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj
2425
-el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915
2426
-
2427
-EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1
2428
-==========================================================================
2429
-MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF
2430
-bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg
2431
-QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe
2432
-Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p
2433
-ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt
2434
-IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG
2435
-SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by
2436
-X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b
2437
-gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr
2438
-eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ
2439
-TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy
2440
-Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn
2441
-uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI
2442
-qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm
2443
-ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0
2444
-Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB
2445
-/wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW
2446
-Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t
2447
-FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm
2448
-zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k
2449
-XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT
2450
-bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU
2451
-RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK
2452
-1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt
2453
-2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ
2454
-Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9
2455
-AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT
2456
-
2457
-certSIGN ROOT CA
2458
-================
2459
-MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD
2460
-VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa
2461
-Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE
2462
-CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I
2463
-JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH
2464
-rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2
2465
-ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD
2466
-0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943
2467
-AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
2468
-Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB
2469
-AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8
2470
-SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0
2471
-x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt
2472
-vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
2473
-TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
2474
-
2475
-CNNIC ROOT
2476
-==========
2477
-MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE
2478
-ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw
2479
-OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw
2480
-ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD
2481
-o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz
2482
-VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT
2483
-VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or
2484
-czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK
2485
-y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC
2486
-wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S
2487
-lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5
2488
-Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM
2489
-O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8
2490
-BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2
2491
-G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m
2492
-mxE=
2493
-
2494
-ApplicationCA - Japanese Government
2495
-===================================
2496
-MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT
2497
-SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw
2498
-MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl
2499
-cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
2500
-CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4
2501
-fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN
2502
-wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE
2503
-jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu
2504
-nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU
2505
-WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV
2506
-BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD
2507
-vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs
2508
-o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g
2509
-/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD
2510
-io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW
2511
-dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL
2512
-rosot4LKGAfmt1t06SAZf7IbiVQ=
2513
-
2514
-GeoTrust Primary Certification Authority - G3
2515
-=============================================
2516
-MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE
2517
-BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0
2518
-IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy
2519
-eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz
2520
-NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo
2521
-YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT
2522
-LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
2523
-hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j
2524
-K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE
2525
-c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C
2526
-IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu
2527
-dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC
2528
-MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr
2529
-2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9
2530
-cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE
2531
-Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
2532
-AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s
2533
-t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt
2534
-
2535
-thawte Primary Root CA - G2
2536
-===========================
2537
-MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC
2538
-VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu
2539
-IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg
2540
-Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV
2541
-MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG
2542
-b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt
2543
-IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS
2544
-LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5
2545
-8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
2546
-mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN
2547
-G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K
2548
-rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
2549
-
2550
-thawte Primary Root CA - G3
2551
-===========================
2552
-MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE
2553
-BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
2554
-aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
2555
-cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w
2556
-ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
2557
-d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD
2558
-VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG
2559
-A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
2560
-MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At
2561
-P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC
2562
-+BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY
2563
-7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW
2564
-vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E
2565
-BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ
2566
-KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK
2567
-A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
2568
-t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC
2569
-8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm
2570
-er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A=
2571
-
2572
-GeoTrust Primary Certification Authority - G2
2573
-=============================================
2574
-MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC
2575
-VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu
2576
-Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD
2577
-ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1
2578
-OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
2579
-MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl
2580
-b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG
2581
-BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc
2582
-KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD
2583
-VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+
2584
-EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m
2585
-ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2
2586
-npaqBA+K
2587
-
2588
-VeriSign Universal Root Certification Authority
2589
-===============================================
2590
-MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE
2591
-BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
2592
-ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
2593
-IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u
2594
-IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV
2595
-UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
2596
-cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
2597
-IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0
2598
-aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj
2599
-1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP
2600
-MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72
2601
-9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I
2602
-AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR
2603
-tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G
2604
-CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O
2605
-a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
2606
-DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3
2607
-Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx
2608
-Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx
2609
-P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P
2610
-wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4
2611
-mJO37M2CYfE45k+XmCpajQ==
2612
-
2613
-VeriSign Class 3 Public Primary Certification Authority - G4
2614
-============================================================
2615
-MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC
2616
-VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
2617
-b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz
2618
-ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj
2619
-YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL
2620
-MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
2621
-cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo
2622
-b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5
2623
-IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8
2624
-Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz
2625
-rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB
2626
-/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw
2627
-HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u
2628
-Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD
2629
-A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx
2630
-AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
2631
-
2632
-NetLock Arany (Class Gold) Főtanúsítvány
2633
-============================================
2634
-MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
2635
-A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
2636
-dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB
2637
-cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx
2638
-MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO
2639
-ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv
2640
-biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6
2641
-c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu
2642
-0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw
2643
-/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk
2644
-H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw
2645
-fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1
2646
-neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB
2647
-BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW
2648
-qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta
2649
-YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
2650
-bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna
2651
-NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
2652
-dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
2653
-
2654
-Staat der Nederlanden Root CA - G2
2655
-==================================
2656
-MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE
2657
-CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g
2658
-Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC
2659
-TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l
2660
-ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ
2661
-5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn
2662
-vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj
2663
-CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil
2664
-e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR
2665
-OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI
2666
-CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65
2667
-48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi
2668
-trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737
2669
-qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB
2670
-AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC
2671
-ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV
2672
-HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA
2673
-A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz
2674
-+51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj
2675
-f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN
2676
-kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk
2677
-CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF
2678
-URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb
2679
-CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h
2680
-oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV
2681
-IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm
2682
-66+KAQ==
2683
-
2684
-CA Disig
2685
-========
2686
-MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK
2687
-QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw
2688
-MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz
2689
-bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3
2690
-DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm
2691
-GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD
2692
-Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo
2693
-hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt
2694
-ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w
2695
-gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P
2696
-AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz
2697
-aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff
2698
-ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa
2699
-BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t
2700
-WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3
2701
-mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/
2702
-CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K
2703
-ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA
2704
-4Z7CRneC9VkGjCFMhwnN5ag=
2705
-
2706
-Juur-SK
2707
-=======
2708
-MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA
2709
-c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw
2710
-DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG
2711
-SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy
2712
-aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
2713
-ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf
2714
-TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC
2715
-+Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw
2716
-UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa
2717
-Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF
2718
-MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD
2719
-HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh
2720
-AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA
2721
-cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr
2722
-AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw
2723
-cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE
2724
-FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G
2725
-A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo
2726
-ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL
2727
-abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678
2728
-IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh
2729
-Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2
2730
-yyqcjg==
2731
-
2732
-Hongkong Post Root CA 1
2733
-=======================
2734
-MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT
2735
-DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx
2736
-NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n
2737
-IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF
2738
-AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1
2739
-ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr
2740
-auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh
2741
-qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY
2742
-V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV
2743
-HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i
2744
-h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio
2745
-l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei
2746
-IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps
2747
-T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT
2748
-c4afU9hDDl3WY4JxHYB0yvbiAmvZWg==
2749
-
2750
-SecureSign RootCA11
2751
-===================
2752
-MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
2753
-SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
2754
-b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
2755
-KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
2756
-cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
2757
-TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
2758
-wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
2759
-g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
2760
-O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
2761
-bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
2762
-t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
2763
-OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
2764
-bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
2765
-Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
2766
-y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
2767
-lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
2768
-
2769
-ACEDICOM Root
2770
-=============
2771
-MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UEAwwNQUNFRElD
2772
-T00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMB4XDTA4
2773
-MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEWMBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoG
2774
-A1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEF
2775
-AAOCAg8AMIICCgKCAgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHk
2776
-WLn709gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7XBZXehuD
2777
-YAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5PGrjm6gSSrj0RuVFCPYew
2778
-MYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAKt0SdE3QrwqXrIhWYENiLxQSfHY9g5QYb
2779
-m8+5eaA9oiM/Qj9r+hwDezCNzmzAv+YbX79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbk
2780
-HQl/Sog4P75n/TSW9R28MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTT
2781
-xKJxqvQUfecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI2Sf2
2782
-3EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyHK9caUPgn6C9D4zq9
2783
-2Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEaeZAwUswdbxcJzbPEHXEUkFDWug/Fq
2784
-TYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz
2785
-4SsrSbbXc6GqlPUB53NlTKxQMA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU
2786
-9QHnc2VMrFAwRAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv
2787
-bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWImfQwng4/F9tqg
2788
-aHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3gvoFNTPhNahXwOf9jU8/kzJP
2789
-eGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKeI6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1Pwk
2790
-zQSulgUV1qzOMPPKC8W64iLgpq0i5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1
2791
-ThCojz2GuHURwCRiipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oI
2792
-KiMnMCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZo5NjEFIq
2793
-nxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6zqylfDJKZ0DcMDQj3dcE
2794
-I2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacNGHk0vFQYXlPKNFHtRQrmjseCNj6nOGOp
2795
-MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o
2796
-tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA==
2797
-
2798
-Verisign Class 1 Public Primary Certification Authority
2799
-=======================================================
2800
-MIICPDCCAaUCED9pHoGc8JpK83P/uUii5N0wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
2801
-FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5
2802
-IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
2803
-XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAx
2804
-IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
2805
-A4GNADCBiQKBgQDlGb9to1ZhLZlIcfZn3rmN67eehoAKkQ76OCWvRoiC5XOooJskXQ0fzGVuDLDQ
2806
-VoQYh5oGmxChc9+0WDlrbsH2FdWoqD+qEgaNMax/sDTXjzRniAnNFBHiTkVWaR94AoDa3EeRKbs2
2807
-yWNcxeDXLYd7obcysHswuiovMaruo2fa2wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFgVKTk8d6Pa
2808
-XCUDfGD67gmZPCcQcMgMCeazh88K4hiWNWLMv5sneYlfycQJ9M61Hd8qveXbhpxoJeUwfLaJFf5n
2809
-0a3hUKw8fGJLj7qE1xIVGx/KXQ/BUpQqEZnae88MNhPVNdwQGVnqlMEAv3WP2fr9dgTbYruQagPZ
2810
-RjXZ+Hxb
2811
-
2812
-Verisign Class 3 Public Primary Certification Authority
2813
-=======================================================
2814
-MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
2815
-FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
2816
-IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
2817
-XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
2818
-IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
2819
-A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
2820
-f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
2821
-hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky
2822
-CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX
2823
-bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/
2824
-D/xwzoiQ
2825
-
2826
-Microsec e-Szigno Root CA 2009
2827
-==============================
2828
-MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER
2829
-MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv
2830
-c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
2831
-dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE
2832
-BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt
2833
-U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw
2834
-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA
2835
-fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG
2836
-0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA
2837
-pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm
2838
-1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC
2839
-AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf
2840
-QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE
2841
-FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o
2842
-lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX
2843
-I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
2844
-tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02
2845
-yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
2846
-LXpUq3DDfSJlgnCW
2847
-
2848
-E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi
2849
-===================================================
2850
-MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
2851
-EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz
2852
-ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3
2853
-MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0
2854
-cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u
2855
-aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
2856
-AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY
2857
-8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y
2858
-jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI
2859
-JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk
2860
-9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD
2861
-AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG
2862
-SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d
2863
-F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq
2864
-D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4
2865
-Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq
2866
-fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX
2867
-
2868
-GlobalSign Root CA - R3
2869
-=======================
2870
-MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv
2871
-YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
2872
-bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
2873
-aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
2874
-bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt
2875
-iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ
2876
-0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3
2877
-rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl
2878
-OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2
2879
-xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
2880
-FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7
2881
-lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8
2882
-EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E
2883
-bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18
2884
-YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r
2885
-kpeDMdmztcpHWD9f
2886
-
2887
-TC TrustCenter Universal CA III
2888
-===============================
2889
-MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezELMAkGA1UEBhMC
2890
-REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
2891
-IFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAe
2892
-Fw0wOTA5MDkwODE1MjdaFw0yOTEyMzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNU
2893
-QyBUcnVzdENlbnRlciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0Ex
2894
-KDAmBgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqGSIb3DQEB
2895
-AQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF5+cvAqBNLaT6hdqbJYUt
2896
-QCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYvDIRlzg9uwliT6CwLOunBjvvya8o84pxO
2897
-juT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8vzArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+Eut
2898
-CHnNaYlAJ/Uqwa1D7KRTyGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1
2899
-M4BDj5yjdipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBhMB8G
2900
-A1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/
2901
-BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI4jANBgkqhkiG9w0BAQUFAAOCAQEA
2902
-g8ev6n9NCjw5sWi+e22JLumzCecYV42FmhfzdkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+
2903
-KGwWaODIl0YgoGhnYIg5IFHYaAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhK
2904
-BgePxLcHsU0GDeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV
2905
-CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPHLQNjO9Po5KIq
2906
-woIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg==
2907
-
2908
-Autoridad de Certificacion Firmaprofesional CIF A62634068
2909
-=========================================================
2910
-MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA
2911
-BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
2912
-MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw
2913
-QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
2914
-NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
2915
-Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
2916
-B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
2917
-7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
2918
-ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
2919
-plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
2920
-MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
2921
-LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
2922
-bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
2923
-vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud
2924
-EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH
2925
-DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
2926
-cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA
2927
-bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx
2928
-ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx
2929
-51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk
2930
-R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP
2931
-T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f
2932
-Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl
2933
-osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR
2934
-crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR
2935
-saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD
2936
-KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi
2937
-6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
2938
-
2939
-Izenpe.com
2940
-==========
2941
-MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG
2942
-EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz
2943
-MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu
2944
-QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ
2945
-03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK
2946
-ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU
2947
-+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC
2948
-PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT
2949
-OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK
2950
-F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK
2951
-0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+
2952
-0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB
2953
-leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID
2954
-AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+
2955
-SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG
2956
-NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx
2957
-MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
2958
-BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l
2959
-Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga
2960
-kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q
2961
-hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs
2962
-g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5
2963
-aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5
2964
-nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC
2965
-ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo
2966
-Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z
2967
-WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
2968
-
2969
-Chambers of Commerce Root - 2008
2970
-================================
2971
-MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD
2972
-MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
2973
-bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
2974
-QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy
2975
-Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl
2976
-ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF
2977
-EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl
2978
-cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
2979
-AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA
2980
-XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj
2981
-h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/
2982
-ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk
2983
-NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g
2984
-D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331
2985
-lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ
2986
-0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
2987
-ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2
2988
-EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI
2989
-G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ
2990
-BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh
2991
-bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh
2992
-bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC
2993
-CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH
2994
-AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1
2995
-wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH
2996
-3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU
2997
-RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6
2998
-M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1
2999
-YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF
3000
-9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK
3001
-zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG
3002
-nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
3003
-OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ
3004
-
3005
-Global Chambersign Root - 2008
3006
-==============================
3007
-MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD
3008
-MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
3009
-bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
3010
-QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx
3011
-NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg
3012
-Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ
3013
-QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
3014
-aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf
3015
-VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf
3016
-XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0
3017
-ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB
3018
-/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA
3019
-TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M
3020
-H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe
3021
-Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF
3022
-HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
3023
-wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB
3024
-AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT
3025
-BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE
3026
-BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm
3027
-aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm
3028
-aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp
3029
-1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0
3030
-dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG
3031
-/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6
3032
-ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s
3033
-dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg
3034
-9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH
3035
-foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du
3036
-qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr
3037
-P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq
3038
-c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
3039
-09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
3040
-
3041
-Go Daddy Root Certificate Authority - G2
3042
-========================================
3043
-MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
3044
-B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
3045
-MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
3046
-MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
3047
-b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G
3048
-A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
3049
-hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq
3050
-9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD
3051
-+qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd
3052
-fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl
3053
-NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC
3054
-MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9
3055
-BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac
3056
-vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r
3057
-5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV
3058
-N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
3059
-LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1
3060
-
3061
-Starfield Root Certificate Authority - G2
3062
-=========================================
3063
-MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
3064
-B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
3065
-b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
3066
-eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw
3067
-DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg
3068
-VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB
3069
-dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv
3070
-W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs
3071
-bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk
3072
-N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf
3073
-ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU
3074
-JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
3075
-AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol
3076
-TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx
3077
-4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw
3078
-F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
3079
-pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ
3080
-c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
3081
-
3082
-Starfield Services Root Certificate Authority - G2
3083
-==================================================
3084
-MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
3085
-B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
3086
-b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl
3087
-IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV
3088
-BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT
3089
-dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg
3090
-Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
3091
-AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2
3092
-h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa
3093
-hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP
3094
-LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB
3095
-rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
3096
-AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG
3097
-SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP
3098
-E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy
3099
-xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
3100
-iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza
3101
-YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6
3102
-
3103
-AffirmTrust Commercial
3104
-======================
3105
-MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS
3106
-BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw
3107
-MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
3108
-bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF
3109
-AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb
3110
-DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV
3111
-C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6
3112
-BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww
3113
-MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV
3114
-HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
3115
-AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG
3116
-hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi
3117
-qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv
3118
-0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh
3119
-sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
3120
-
3121
-AffirmTrust Networking
3122
-======================
3123
-MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS
3124
-BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw
3125
-MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
3126
-bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF
3127
-AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE
3128
-Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI
3129
-dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24
3130
-/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb
3131
-h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV
3132
-HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
3133
-AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu
3134
-UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6
3135
-12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23
3136
-WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9
3137
-/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
3138
-
3139
-AffirmTrust Premium
3140
-===================
3141
-MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS
3142
-BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy
3143
-OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy
3144
-dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
3145
-MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn
3146
-BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV
3147
-5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs
3148
-+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd
3149
-GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R
3150
-p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI
3151
-S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04
3152
-6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5
3153
-/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo
3154
-+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB
3155
-/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv
3156
-MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg
3157
-Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC
3158
-6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S
3159
-L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK
3160
-+4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV
3161
-BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg
3162
-IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60
3163
-g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb
3164
-zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw==
3165
-
3166
-AffirmTrust Premium ECC
3167
-=======================
3168
-MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV
3169
-BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx
3170
-MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U
3171
-cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA
3172
-IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ
3173
-N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW
3174
-BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK
3175
-BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X
3176
-57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM
3177
-eQ==
3178
-
3179
-Certum Trusted Network CA
3180
-=========================
3181
-MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK
3182
-ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv
3183
-biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy
3184
-MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU
3185
-ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
3186
-MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
3187
-AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC
3188
-l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J
3189
-J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4
3190
-fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0
3191
-cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB
3192
-Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw
3193
-DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj
3194
-jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1
3195
-mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj
3196
-Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
3197
-03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
3198
-
3199
-Certinomis - Autorité Racine
3200
-=============================
3201
-MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK
3202
-Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg
3203
-LSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkG
3204
-A1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYw
3205
-JAYDVQQDDB1DZXJ0aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQAD
3206
-ggIPADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jYF1AMnmHa
3207
-wE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N8y4oH3DfVS9O7cdxbwly
3208
-Lu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWerP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw
3209
-2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92N
3210
-jMD2AR5vpTESOH2VwnHu7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9q
3211
-c1pkIuVC28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6lSTC
3212
-lrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1Enn1So2+WLhl+HPNb
3213
-xxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB0iSVL1N6aaLwD4ZFjliCK0wi1F6g
3214
-530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql095gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna
3215
-4NH4+ej9Uji29YnfAgMBAAGjWzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G
3216
-A1UdDgQWBBQNjLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ
3217
-KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9sov3/4gbIOZ/x
3218
-WqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZMOH8oMDX/nyNTt7buFHAAQCva
3219
-R6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40
3220
-nJ+U8/aGH88bc62UeYdocMMzpXDn2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1B
3221
-CxMjidPJC+iKunqjo3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjv
3222
-JL1vnxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG5ERQL1TE
3223
-qkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWqpdEdnV1j6CTmNhTih60b
3224
-WfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZbdsLLO7XSAPCjDuGtbkD326C00EauFddE
3225
-wk01+dIL8hf2rGbVJLJP0RyZwG71fet0BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/
3226
-vgt2Fl43N+bYdJeimUV5
3227
-
3228
-Root CA Generalitat Valenciana
3229
-==============================
3230
-MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE
3231
-ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290
3232
-IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3
3233
-WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE
3234
-CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G
3235
-CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2
3236
-F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B
3237
-ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ
3238
-D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte
3239
-JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB
3240
-AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n
3241
-dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB
3242
-ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl
3243
-AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA
3244
-YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy
3245
-AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA
3246
-aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt
3247
-AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA
3248
-YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu
3249
-AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA
3250
-OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0
3251
-dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV
3252
-BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G
3253
-A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S
3254
-b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh
3255
-TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz
3256
-Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63
3257
-NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH
3258
-iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt
3259
-+GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM=
3260
-
3261
-A-Trust-nQual-03
3262
-================
3263
-MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE
3264
-Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy
3265
-a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R
3266
-dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw
3267
-RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0
3268
-ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1
3269
-c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA
3270
-zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n
3271
-yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE
3272
-SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4
3273
-iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V
3274
-cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV
3275
-eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40
3276
-ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr
3277
-sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd
3278
-JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS
3279
-mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6
3280
-ahq97BvIxYSazQ==
3281
-
3282
-TWCA Root Certification Authority
3283
-=================================
3284
-MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ
3285
-VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh
3286
-dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG
3287
-EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB
3288
-IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
3289
-AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx
3290
-QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC
3291
-oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP
3292
-4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r
3293
-y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
3294
-BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG
3295
-9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC
3296
-mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW
3297
-QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY
3298
-T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny
3299
-Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
3300
-
3301
-Security Communication RootCA2
3302
-==============================
3303
-MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
3304
-U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh
3305
-dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC
3306
-SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy
3307
-aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
3308
-ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++
3309
-+T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R
3310
-3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV
3311
-spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K
3312
-EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8
3313
-QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB
3314
-CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj
3315
-u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk
3316
-3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q
3317
-tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
3318
-mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
3319
-
3320
-EC-ACC
3321
-======
3322
-MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE
3323
-BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w
3324
-ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD
3325
-VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE
3326
-CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT
3327
-BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7
3328
-MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt
3329
-SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl
3330
-Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh
3331
-cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND
3332
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK
3333
-w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT
3334
-ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4
3335
-HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a
3336
-E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw
3337
-0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
3338
-BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD
3339
-VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0
3340
-Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l
3341
-dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ
3342
-lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa
3343
-Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe
3344
-l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2
3345
-E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D
3346
-5EI=
3347
-
3348
-Hellenic Academic and Research Institutions RootCA 2011
3349
-=======================================================
3350
-MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT
3351
-O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y
3352
-aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
3353
-IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT
3354
-AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
3355
-IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo
3356
-IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
3357
-AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI
3358
-1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa
3359
-71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u
3360
-8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH
3361
-3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/
3362
-MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8
3363
-MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu
3364
-b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt
3365
-XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8
3366
-TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD
3367
-/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N
3368
-7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4
3369
-
3370
-Actalis Authentication Root CA
3371
-==============================
3372
-MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM
3373
-BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE
3374
-AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky
3375
-MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz
3376
-IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
3377
-IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ
3378
-wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa
3379
-by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6
3380
-zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f
3381
-YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2
3382
-oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l
3383
-EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7
3384
-hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8
3385
-EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5
3386
-jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY
3387
-iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
3388
-ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI
3389
-WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0
3390
-JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx
3391
-K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+
3392
-Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC
3393
-4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo
3394
-2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz
3395
-lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem
3396
-OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9
3397
-vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
3398
-
3399
-Trustis FPS Root CA
3400
-===================
3401
-MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG
3402
-EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290
3403
-IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV
3404
-BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ
3405
-KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ
3406
-RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk
3407
-H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa
3408
-cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt
3409
-o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA
3410
-AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd
3411
-BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c
3412
-GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC
3413
-yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P
3414
-8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV
3415
-l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl
3416
-iB6XzCGcKQENZetX2fNXlrtIzYE=
3417
-
3418
-StartCom Certification Authority
3419
-================================
3420
-MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
3421
-U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
3422
-ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
3423
-NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
3424
-LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
3425
-U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
3426
-ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
3427
-o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
3428
-Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
3429
-eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
3430
-2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
3431
-6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
3432
-osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
3433
-untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
3434
-UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
3435
-37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
3436
-VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ
3437
-Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0
3438
-dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu
3439
-c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv
3440
-bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0
3441
-aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0
3442
-aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t
3443
-L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG
3444
-cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5
3445
-fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm
3446
-N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN
3447
-Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T
3448
-tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX
3449
-e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA
3450
-2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs
3451
-HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE
3452
-JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib
3453
-D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8=
3454
-
3455
-StartCom Certification Authority G2
3456
-===================================
3457
-MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
3458
-U3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg
3459
-RzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UE
3460
-ChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3Jp
3461
-dHkgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8O
3462
-o1XJJZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsDvfOpL9HG
3463
-4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnooD/Uefyf3lLE3PbfHkffi
3464
-Aez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/Q0kGi4xDuFby2X8hQxfqp0iVAXV16iul
3465
-Q5XqFYSdCI0mblWbq9zSOdIxHWDirMxWRST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbs
3466
-O+wmETRIjfaAKxojAuuKHDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8H
3467
-vKTlXcxNnw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM0D4L
3468
-nMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/iUUjXuG+v+E5+M5iS
3469
-FGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9Ha90OrInwMEePnWjFqmveiJdnxMa
3470
-z6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHgTuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8E
3471
-BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJ
3472
-KoZIhvcNAQELBQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K
3473
-2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfXUfEpY9Z1zRbk
3474
-J4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl6/2o1PXWT6RbdejF0mCy2wl+
3475
-JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG
3476
-/+gyRr61M3Z3qAFdlsHB1b6uJcDJHgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTc
3477
-nIhT76IxW1hPkWLIwpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/Xld
3478
-blhYXzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5lIxKVCCIc
3479
-l85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoohdVddLHRDiBYmxOlsGOm
3480
-7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulrso8uBtjRkcfGEvRM/TAXw8HaOFvjqerm
3481
-obp573PYtlNXLfbQ4ddI
3482
-
3483
-Buypass Class 2 Root CA
3484
-=======================
3485
-MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
3486
-QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X
3487
-DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1
3488
-eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw
3489
-DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1
3490
-g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn
3491
-9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b
3492
-/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU
3493
-CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff
3494
-awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI
3495
-zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn
3496
-Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX
3497
-Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs
3498
-M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD
3499
-VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF
3500
-AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s
3501
-A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI
3502
-osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S
3503
-aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd
3504
-DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD
3505
-LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0
3506
-oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC
3507
-wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS
3508
-CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN
3509
-rJgWVqA=
3510
-
3511
-Buypass Class 3 Root CA
3512
-=======================
3513
-MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
3514
-QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X
3515
-DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1
3516
-eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw
3517
-DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH
3518
-sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR
3519
-5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh
3520
-7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ
3521
-ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH
3522
-2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV
3523
-/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ
3524
-RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA
3525
-Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq
3526
-j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD
3527
-VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF
3528
-AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV
3529
-cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G
3530
-uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG
3531
-Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8
3532
-ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2
3533
-KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz
3534
-6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug
3535
-UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe
3536
-eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi
3537
-Cp/HuZc=
3538
-
3539
-T-TeleSec GlobalRoot Class 3
3540
-============================
3541
-MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
3542
-IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
3543
-cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx
3544
-MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
3545
-dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
3546
-ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3
3547
-DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK
3548
-9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU
3549
-NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF
3550
-iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W
3551
-0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA
3552
-MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr
3553
-AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb
3554
-fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT
3555
-ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h
3556
-P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
3557
-e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw==
3558
-
3559
-EE Certification Centre Root CA
3560
-===============================
3561
-MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
3562
-EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy
3563
-dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw
3564
-MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB
3565
-UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy
3566
-ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
3567
-DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM
3568
-TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2
3569
-rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw
3570
-93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN
3571
-P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T
3572
-AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ
3573
-MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF
3574
-BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj
3575
-xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM
3576
-lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u
3577
-uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU
3578
-3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM
3579
-dcGWxZ0=
3580 0
deleted file mode 100644
... ...
@@ -1,80 +0,0 @@
1
-"""shared options and groups"""
2
-from optparse import make_option, OptionGroup
3
-
4
-
5
-def make_option_group(group, parser):
6
-    """
7
-    Return an OptionGroup object
8
-    group  -- assumed to be dict with 'name' and 'options' keys
9
-    parser -- an optparse Parser
10
-    """
11
-    option_group = OptionGroup(parser, group['name'])
12
-    for option in group['options']:
13
-        option_group.add_option(option)
14
-    return option_group
15
-
16
-###########
17
-# options #
18
-###########
19
-
20
-index_url = make_option(
21
-    '-i', '--index-url', '--pypi-url',
22
-    dest='index_url',
23
-    metavar='URL',
24
-    default='https://pypi.python.org/simple/',
25
-    help='Base URL of Python Package Index (default %default).')
26
-
27
-extra_index_url = make_option(
28
-    '--extra-index-url',
29
-    dest='extra_index_urls',
30
-    metavar='URL',
31
-    action='append',
32
-    default=[],
33
-    help='Extra URLs of package indexes to use in addition to --index-url.')
34
-
35
-no_index = make_option(
36
-    '--no-index',
37
-    dest='no_index',
38
-    action='store_true',
39
-    default=False,
40
-    help='Ignore package index (only looking at --find-links URLs instead).')
41
-
42
-find_links =  make_option(
43
-    '-f', '--find-links',
44
-    dest='find_links',
45
-    action='append',
46
-    default=[],
47
-    metavar='url',
48
-    help="If a url or path to an html file, then parse for links to archives. If a local path or file:// url that's a directory, then look for archives in the directory listing.")
49
-
50
-use_mirrors = make_option(
51
-    '-M', '--use-mirrors',
52
-    dest='use_mirrors',
53
-    action='store_true',
54
-    default=False,
55
-    help='Use the PyPI mirrors as a fallback in case the main index is down.')
56
-
57
-mirrors = make_option(
58
-    '--mirrors',
59
-    dest='mirrors',
60
-    metavar='URL',
61
-    action='append',
62
-    default=[],
63
-    help='Specific mirror URLs to query when --use-mirrors is used.')
64
-
65
-
66
-##########
67
-# groups #
68
-##########
69
-
70
-index_group = {
71
-    'name': 'Package Index Options',
72
-    'options': [
73
-        index_url,
74
-        extra_index_url,
75
-        no_index,
76
-        find_links,
77
-        use_mirrors,
78
-        mirrors
79
-        ]
80
-    }
81 0
deleted file mode 100644
82 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/cmdoptions.pyc and /dev/null differ
83 2
deleted file mode 100644
... ...
@@ -1,85 +0,0 @@
1
-"""
2
-Package containing all pip commands
3
-"""
4
-
5
-
6
-from pip.commands.bundle import BundleCommand
7
-from pip.commands.completion import CompletionCommand
8
-from pip.commands.freeze import FreezeCommand
9
-from pip.commands.help import HelpCommand
10
-from pip.commands.list import ListCommand
11
-from pip.commands.search import SearchCommand
12
-from pip.commands.show import ShowCommand
13
-from pip.commands.install import InstallCommand
14
-from pip.commands.uninstall import UninstallCommand
15
-from pip.commands.unzip import UnzipCommand
16
-from pip.commands.zip import ZipCommand
17
-
18
-
19
-commands = {
20
-    BundleCommand.name: BundleCommand,
21
-    CompletionCommand.name: CompletionCommand,
22
-    FreezeCommand.name: FreezeCommand,
23
-    HelpCommand.name: HelpCommand,
24
-    SearchCommand.name: SearchCommand,
25
-    ShowCommand.name: ShowCommand,
26
-    InstallCommand.name: InstallCommand,
27
-    UninstallCommand.name: UninstallCommand,
28
-    UnzipCommand.name: UnzipCommand,
29
-    ZipCommand.name: ZipCommand,
30
-    ListCommand.name: ListCommand,
31
-}
32
-
33
-
34
-commands_order = [
35
-    InstallCommand,
36
-    UninstallCommand,
37
-    FreezeCommand,
38
-    ListCommand,
39
-    ShowCommand,
40
-    SearchCommand,
41
-    ZipCommand,
42
-    UnzipCommand,
43
-    BundleCommand,
44
-    HelpCommand,
45
-]
46
-
47
-
48
-def get_summaries(ignore_hidden=True, ordered=True):
49
-    """Yields sorted (command name, command summary) tuples."""
50
-
51
-    if ordered:
52
-        cmditems = _sort_commands(commands, commands_order)
53
-    else:
54
-        cmditems = commands.items()
55
-
56
-    for name, command_class in cmditems:
57
-        if ignore_hidden and command_class.hidden:
58
-            continue
59
-
60
-        yield (name, command_class.summary)
61
-
62
-
63
-def get_similar_commands(name):
64
-    """Command name auto-correct."""
65
-    from difflib import get_close_matches
66
-
67
-    close_commands = get_close_matches(name, commands.keys())
68
-
69
-    if close_commands:
70
-        guess = close_commands[0]
71
-    else:
72
-        guess = False
73
-
74
-    return guess
75
-
76
-
77
-def _sort_commands(cmddict, order):
78
-    def keyfn(key):
79
-        try:
80
-            return order.index(key[1])
81
-        except ValueError:
82
-            # unordered items should come last
83
-            return 0xff
84
-
85
-    return sorted(cmddict.items(), key=keyfn)
86 0
deleted file mode 100644
87 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/commands/__init__.pyc and /dev/null differ
88 2
deleted file mode 100644
... ...
@@ -1,37 +0,0 @@
1
-from pip.locations import build_prefix, src_prefix
2
-from pip.util import display_path, backup_dir
3
-from pip.log import logger
4
-from pip.exceptions import InstallationError
5
-from pip.commands.install import InstallCommand
6
-
7
-
8
-class BundleCommand(InstallCommand):
9
-    """Create pybundles (archives containing multiple packages)."""
10
-    name = 'bundle'
11
-    usage = """
12
-      %prog [options] <bundle name>.pybundle <package>..."""
13
-    summary = 'Create pybundles.'
14
-    bundle = True
15
-
16
-    def __init__(self, *args, **kw):
17
-        super(BundleCommand, self).__init__(*args, **kw)
18
-        # bundle uses different default source and build dirs
19
-        build_opt = self.parser.get_option("--build")
20
-        build_opt.default = backup_dir(build_prefix, '-bundle')
21
-        src_opt = self.parser.get_option("--src")
22
-        src_opt.default = backup_dir(src_prefix, '-bundle')
23
-        self.parser.set_defaults(**{
24
-                src_opt.dest: src_opt.default,
25
-                build_opt.dest: build_opt.default,
26
-                })
27
-
28
-    def run(self, options, args):
29
-        if not args:
30
-            raise InstallationError('You must give a bundle filename')
31
-        # We have to get everything when creating a bundle:
32
-        options.ignore_installed = True
33
-        logger.notify('Putting temporary build files in %s and source/develop files in %s'
34
-                      % (display_path(options.build_dir), display_path(options.src_dir)))
35
-        self.bundle_filename = args.pop(0)
36
-        requirement_set = super(BundleCommand, self).run(options, args)
37
-        return requirement_set
38 0
deleted file mode 100644
39 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/commands/bundle.pyc and /dev/null differ
40 2
deleted file mode 100644
... ...
@@ -1,59 +0,0 @@
1
-import sys
2
-from pip.basecommand import Command
3
-
4
-BASE_COMPLETION = """
5
-# pip %(shell)s completion start%(script)s# pip %(shell)s completion end
6
-"""
7
-
8
-COMPLETION_SCRIPTS = {
9
-    'bash': """
10
-_pip_completion()
11
-{
12
-    COMPREPLY=( $( COMP_WORDS="${COMP_WORDS[*]}" \\
13
-                   COMP_CWORD=$COMP_CWORD \\
14
-                   PIP_AUTO_COMPLETE=1 $1 ) )
15
-}
16
-complete -o default -F _pip_completion pip
17
-""", 'zsh': """
18
-function _pip_completion {
19
-  local words cword
20
-  read -Ac words
21
-  read -cn cword
22
-  reply=( $( COMP_WORDS="$words[*]" \\
23
-             COMP_CWORD=$(( cword-1 )) \\
24
-             PIP_AUTO_COMPLETE=1 $words[1] ) )
25
-}
26
-compctl -K _pip_completion pip
27
-"""}
28
-
29
-
30
-class CompletionCommand(Command):
31
-    """A helper command to be used for command completion."""
32
-    name = 'completion'
33
-    summary = 'A helper command to be used for command completion'
34
-    hidden = True
35
-
36
-    def __init__(self, *args, **kw):
37
-        super(CompletionCommand, self).__init__(*args, **kw)
38
-        self.parser.add_option(
39
-            '--bash', '-b',
40
-            action='store_const',
41
-            const='bash',
42
-            dest='shell',
43
-            help='Emit completion code for bash')
44
-        self.parser.add_option(
45
-            '--zsh', '-z',
46
-            action='store_const',
47
-            const='zsh',
48
-            dest='shell',
49
-            help='Emit completion code for zsh')
50
-
51
-    def run(self, options, args):
52
-        """Prints the completion code of the given shell"""
53
-        shells = COMPLETION_SCRIPTS.keys()
54
-        shell_options = ['--' + shell for shell in sorted(shells)]
55
-        if options.shell in shells:
56
-            script = COMPLETION_SCRIPTS.get(options.shell, '')
57
-            print(BASE_COMPLETION % {'script': script, 'shell': options.shell})
58
-        else:
59
-            sys.stderr.write('ERROR: You must pass %s\n' % ' or '.join(shell_options))
60 0
deleted file mode 100644
61 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/commands/completion.pyc and /dev/null differ
62 2
deleted file mode 100644
... ...
@@ -1,113 +0,0 @@
1
-import re
2
-import sys
3
-import pkg_resources
4
-import pip
5
-from pip.req import InstallRequirement
6
-from pip.log import logger
7
-from pip.basecommand import Command
8
-from pip.util import get_installed_distributions
9
-
10
-
11
-class FreezeCommand(Command):
12
-    """Output installed packages in requirements format."""
13
-    name = 'freeze'
14
-    usage = """
15
-      %prog [options]"""
16
-    summary = 'Output installed packages in requirements format.'
17
-
18
-    def __init__(self, *args, **kw):
19
-        super(FreezeCommand, self).__init__(*args, **kw)
20
-
21
-        self.cmd_opts.add_option(
22
-            '-r', '--requirement',
23
-            dest='requirement',
24
-            action='store',
25
-            default=None,
26
-            metavar='file',
27
-            help="Use the order in the given requirements file and it's comments when generating output.")
28
-        self.cmd_opts.add_option(
29
-            '-f', '--find-links',
30
-            dest='find_links',
31
-            action='append',
32
-            default=[],
33
-            metavar='URL',
34
-            help='URL for finding packages, which will be added to the output.')
35
-        self.cmd_opts.add_option(
36
-            '-l', '--local',
37
-            dest='local',
38
-            action='store_true',
39
-            default=False,
40
-            help='If in a virtualenv that has global access, do not output globally-installed packages.')
41
-
42
-        self.parser.insert_option_group(0, self.cmd_opts)
43
-
44
-    def setup_logging(self):
45
-        logger.move_stdout_to_stderr()
46
-
47
-    def run(self, options, args):
48
-        requirement = options.requirement
49
-        find_links = options.find_links or []
50
-        local_only = options.local
51
-        ## FIXME: Obviously this should be settable:
52
-        find_tags = False
53
-        skip_match = None
54
-
55
-        skip_regex = options.skip_requirements_regex
56
-        if skip_regex:
57
-            skip_match = re.compile(skip_regex)
58
-
59
-        dependency_links = []
60
-
61
-        f = sys.stdout
62
-
63
-        for dist in pkg_resources.working_set:
64
-            if dist.has_metadata('dependency_links.txt'):
65
-                dependency_links.extend(dist.get_metadata_lines('dependency_links.txt'))
66
-        for link in find_links:
67
-            if '#egg=' in link:
68
-                dependency_links.append(link)
69
-        for link in find_links:
70
-            f.write('-f %s\n' % link)
71
-        installations = {}
72
-        for dist in get_installed_distributions(local_only=local_only):
73
-            req = pip.FrozenRequirement.from_dist(dist, dependency_links, find_tags=find_tags)
74
-            installations[req.name] = req
75
-        if requirement:
76
-            req_f = open(requirement)
77
-            for line in req_f:
78
-                if not line.strip() or line.strip().startswith('#'):
79
-                    f.write(line)
80
-                    continue
81
-                if skip_match and skip_match.search(line):
82
-                    f.write(line)
83
-                    continue
84
-                elif line.startswith('-e') or line.startswith('--editable'):
85
-                    if line.startswith('-e'):
86
-                        line = line[2:].strip()
87
-                    else:
88
-                        line = line[len('--editable'):].strip().lstrip('=')
89
-                    line_req = InstallRequirement.from_editable(line, default_vcs=options.default_vcs)
90
-                elif (line.startswith('-r') or line.startswith('--requirement')
91
-                      or line.startswith('-Z') or line.startswith('--always-unzip')
92
-                      or line.startswith('-f') or line.startswith('-i')
93
-                      or line.startswith('--extra-index-url')
94
-                      or line.startswith('--find-links')
95
-                      or line.startswith('--index-url')):
96
-                    f.write(line)
97
-                    continue
98
-                else:
99
-                    line_req = InstallRequirement.from_line(line)
100
-                if not line_req.name:
101
-                    logger.notify("Skipping line because it's not clear what it would install: %s"
102
-                                  % line.strip())
103
-                    logger.notify("  (add #egg=PackageName to the URL to avoid this warning)")
104
-                    continue
105
-                if line_req.name not in installations:
106
-                    logger.warn("Requirement file contains %s, but that package is not installed"
107
-                                % line.strip())
108
-                    continue
109
-                f.write(str(installations[line_req.name]))
110
-                del installations[line_req.name]
111
-            f.write('## The following requirements were added by pip --freeze:\n')
112
-        for installation in sorted(installations.values(), key=lambda x: x.name):
113
-            f.write(str(installation))
114 0
deleted file mode 100644
115 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/commands/freeze.pyc and /dev/null differ
116 2
deleted file mode 100644
... ...
@@ -1,33 +0,0 @@
1
-from pip.basecommand import Command, SUCCESS
2
-from pip.exceptions import CommandError
3
-
4
-
5
-class HelpCommand(Command):
6
-    """Show help for commands"""
7
-    name = 'help'
8
-    usage = """
9
-      %prog <command>"""
10
-    summary = 'Show help for commands.'
11
-
12
-    def run(self, options, args):
13
-        from pip.commands import commands, get_similar_commands
14
-
15
-        try:
16
-            # 'pip help' with no args is handled by pip.__init__.parseopt()
17
-            cmd_name = args[0]  # the command we need help for
18
-        except IndexError:
19
-            return SUCCESS
20
-
21
-        if cmd_name not in commands:
22
-            guess = get_similar_commands(cmd_name)
23
-
24
-            msg = ['unknown command "%s"' % cmd_name]
25
-            if guess:
26
-                msg.append('maybe you meant "%s"' % guess)
27
-
28
-            raise CommandError(' - '.join(msg))
29
-
30
-        command = commands[cmd_name](self.main_parser)  # instantiate
31
-        command.parser.print_help()
32
-
33
-        return SUCCESS
34 0
deleted file mode 100644
35 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/commands/help.pyc and /dev/null differ
36 2
deleted file mode 100644
... ...
@@ -1,297 +0,0 @@
1
-import os
2
-import sys
3
-import tempfile
4
-import shutil
5
-from pip.req import InstallRequirement, RequirementSet, parse_requirements
6
-from pip.log import logger
7
-from pip.locations import build_prefix, src_prefix, virtualenv_no_global
8
-from pip.basecommand import Command
9
-from pip.index import PackageFinder
10
-from pip.exceptions import InstallationError, CommandError
11
-from pip.backwardcompat import home_lib
12
-from pip.cmdoptions import make_option_group, index_group
13
-
14
-
15
-class InstallCommand(Command):
16
-    """
17
-    Install packages from:
18
-
19
-    - PyPI (and other indexes) using requirement specifiers.
20
-    - VCS project urls.
21
-    - Local project directories.
22
-    - Local or remote source archives.
23
-
24
-    pip also supports installing from "requirements files", which provide
25
-    an easy way to specify a whole environment to be installed.
26
-
27
-    See http://www.pip-installer.org for details on VCS url formats and
28
-    requirements files.
29
-    """
30
-    name = 'install'
31
-
32
-    usage = """
33
-      %prog [options] <requirement specifier> ...
34
-      %prog [options] -r <requirements file> ...
35
-      %prog [options] [-e] <vcs project url> ...
36
-      %prog [options] [-e] <local project path> ...
37
-      %prog [options] <archive url/path> ..."""
38
-
39
-    summary = 'Install packages.'
40
-    bundle = False
41
-
42
-    def __init__(self, *args, **kw):
43
-        super(InstallCommand, self).__init__(*args, **kw)
44
-
45
-        cmd_opts = self.cmd_opts
46
-
47
-        cmd_opts.add_option(
48
-            '-e', '--editable',
49
-            dest='editables',
50
-            action='append',
51
-            default=[],
52
-            metavar='path/url',
53
-            help='Install a project in editable mode (i.e. setuptools "develop mode") from a local project path or a VCS url.')
54
-
55
-        cmd_opts.add_option(
56
-            '-r', '--requirement',
57
-            dest='requirements',
58
-            action='append',
59
-            default=[],
60
-            metavar='file',
61
-            help='Install from the given requirements file. '
62
-            'This option can be used multiple times.')
63
-
64
-        cmd_opts.add_option(
65
-            '-b', '--build', '--build-dir', '--build-directory',
66
-            dest='build_dir',
67
-            metavar='dir',
68
-            default=build_prefix,
69
-            help='Directory to unpack packages into and build in. '
70
-            'The default in a virtualenv is "<venv path>/build". '
71
-            'The default for global installs is "<OS temp dir>/pip-build-<username>".')
72
-
73
-        cmd_opts.add_option(
74
-            '-t', '--target',
75
-            dest='target_dir',
76
-            metavar='dir',
77
-            default=None,
78
-            help='Install packages into <dir>.')
79
-
80
-        cmd_opts.add_option(
81
-            '-d', '--download', '--download-dir', '--download-directory',
82
-            dest='download_dir',
83
-            metavar='dir',
84
-            default=None,
85
-            help="Download packages into <dir> instead of installing them, irregardless of what's already installed.")
86
-
87
-        cmd_opts.add_option(
88
-            '--download-cache',
89
-            dest='download_cache',
90
-            metavar='dir',
91
-            default=None,
92
-            help='Cache downloaded packages in <dir>.')
93
-
94
-        cmd_opts.add_option(
95
-            '--src', '--source', '--source-dir', '--source-directory',
96
-            dest='src_dir',
97
-            metavar='dir',
98
-            default=src_prefix,
99
-            help='Directory to check out editable projects into. '
100
-            'The default in a virtualenv is "<venv path>/src". '
101
-            'The default for global installs is "<current dir>/src".')
102
-
103
-        cmd_opts.add_option(
104
-            '-U', '--upgrade',
105
-            dest='upgrade',
106
-            action='store_true',
107
-            help='Upgrade all packages to the newest available version. '
108
-            'This process is recursive irregardless of whether a dependency is already satisfied.')
109
-
110
-        cmd_opts.add_option(
111
-            '--force-reinstall',
112
-            dest='force_reinstall',
113
-            action='store_true',
114
-            help='When upgrading, reinstall all packages even if they are '
115
-                 'already up-to-date.')
116
-
117
-        cmd_opts.add_option(
118
-            '-I', '--ignore-installed',
119
-            dest='ignore_installed',
120
-            action='store_true',
121
-            help='Ignore the installed packages (reinstalling instead).')
122
-
123
-        cmd_opts.add_option(
124
-            '--no-deps', '--no-dependencies',
125
-            dest='ignore_dependencies',
126
-            action='store_true',
127
-            default=False,
128
-            help="Don't install package dependencies.")
129
-
130
-        cmd_opts.add_option(
131
-            '--no-install',
132
-            dest='no_install',
133
-            action='store_true',
134
-            help="Download and unpack all packages, but don't actually install them.")
135
-
136
-        cmd_opts.add_option(
137
-            '--no-download',
138
-            dest='no_download',
139
-            action="store_true",
140
-            help="Don't download any packages, just install the ones already downloaded "
141
-            "(completes an install run with --no-install).")
142
-
143
-        cmd_opts.add_option(
144
-            '--install-option',
145
-            dest='install_options',
146
-            action='append',
147
-            metavar='options',
148
-            help="Extra arguments to be supplied to the setup.py install "
149
-            "command (use like --install-option=\"--install-scripts=/usr/local/bin\"). "
150
-            "Use multiple --install-option options to pass multiple options to setup.py install. "
151
-            "If you are using an option with a directory path, be sure to use absolute path.")
152
-
153
-        cmd_opts.add_option(
154
-            '--global-option',
155
-            dest='global_options',
156
-            action='append',
157
-            metavar='options',
158
-            help="Extra global options to be supplied to the setup.py "
159
-            "call before the install command.")
160
-
161
-        cmd_opts.add_option(
162
-            '--user',
163
-            dest='use_user_site',
164
-            action='store_true',
165
-            help='Install using the user scheme.')
166
-
167
-        cmd_opts.add_option(
168
-            '--egg',
169
-            dest='as_egg',
170
-            action='store_true',
171
-            help="Install as self contained egg file, like easy_install does.")
172
-
173
-        cmd_opts.add_option(
174
-            '--root',
175
-            dest='root_path',
176
-            metavar='dir',
177
-            default=None,
178
-            help="Install everything relative to this alternate root directory.")
179
-
180
-        index_opts = make_option_group(index_group, self.parser)
181
-
182
-        self.parser.insert_option_group(0, index_opts)
183
-        self.parser.insert_option_group(0, cmd_opts)
184
-
185
-    def _build_package_finder(self, options, index_urls):
186
-        """
187
-        Create a package finder appropriate to this install command.
188
-        This method is meant to be overridden by subclasses, not
189
-        called directly.
190
-        """
191
-        return PackageFinder(find_links=options.find_links,
192
-                             index_urls=index_urls,
193
-                             use_mirrors=options.use_mirrors,
194
-                             mirrors=options.mirrors)
195
-
196
-    def run(self, options, args):
197
-        if options.download_dir:
198
-            options.no_install = True
199
-            options.ignore_installed = True
200
-        options.build_dir = os.path.abspath(options.build_dir)
201
-        options.src_dir = os.path.abspath(options.src_dir)
202
-        install_options = options.install_options or []
203
-        if options.use_user_site:
204
-            if virtualenv_no_global():
205
-                raise InstallationError("Can not perform a '--user' install. User site-packages are not visible in this virtualenv.")
206
-            install_options.append('--user')
207
-        if options.target_dir:
208
-            options.ignore_installed = True
209
-            temp_target_dir = tempfile.mkdtemp()
210
-            options.target_dir = os.path.abspath(options.target_dir)
211
-            if os.path.exists(options.target_dir) and not os.path.isdir(options.target_dir):
212
-                raise CommandError("Target path exists but is not a directory, will not continue.")
213
-            install_options.append('--home=' + temp_target_dir)
214
-        global_options = options.global_options or []
215
-        index_urls = [options.index_url] + options.extra_index_urls
216
-        if options.no_index:
217
-            logger.notify('Ignoring indexes: %s' % ','.join(index_urls))
218
-            index_urls = []
219
-
220
-        finder = self._build_package_finder(options, index_urls)
221
-
222
-        requirement_set = RequirementSet(
223
-            build_dir=options.build_dir,
224
-            src_dir=options.src_dir,
225
-            download_dir=options.download_dir,
226
-            download_cache=options.download_cache,
227
-            upgrade=options.upgrade,
228
-            as_egg=options.as_egg,
229
-            ignore_installed=options.ignore_installed,
230
-            ignore_dependencies=options.ignore_dependencies,
231
-            force_reinstall=options.force_reinstall,
232
-            use_user_site=options.use_user_site)
233
-        for name in args:
234
-            requirement_set.add_requirement(
235
-                InstallRequirement.from_line(name, None))
236
-        for name in options.editables:
237
-            requirement_set.add_requirement(
238
-                InstallRequirement.from_editable(name, default_vcs=options.default_vcs))
239
-        for filename in options.requirements:
240
-            for req in parse_requirements(filename, finder=finder, options=options):
241
-                requirement_set.add_requirement(req)
242
-        if not requirement_set.has_requirements:
243
-            opts = {'name': self.name}
244
-            if options.find_links:
245
-                msg = ('You must give at least one requirement to %(name)s '
246
-                       '(maybe you meant "pip %(name)s %(links)s"?)' %
247
-                       dict(opts, links=' '.join(options.find_links)))
248
-            else:
249
-                msg = ('You must give at least one requirement '
250
-                       'to %(name)s (see "pip help %(name)s")' % opts)
251
-            logger.warn(msg)
252
-            return
253
-
254
-        if (options.use_user_site and
255
-            sys.version_info < (2, 6)):
256
-            raise InstallationError('--user is only supported in Python version 2.6 and newer')
257
-
258
-        import setuptools
259
-        if (options.use_user_site and
260
-            requirement_set.has_editables and
261
-            not getattr(setuptools, '_distribute', False)):
262
-
263
-            raise InstallationError('--user --editable not supported with setuptools, use distribute')
264
-
265
-        if not options.no_download:
266
-            requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
267
-        else:
268
-            requirement_set.locate_files()
269
-
270
-        if not options.no_install and not self.bundle:
271
-            requirement_set.install(install_options, global_options, root=options.root_path)
272
-            installed = ' '.join([req.name for req in
273
-                                  requirement_set.successfully_installed])
274
-            if installed:
275
-                logger.notify('Successfully installed %s' % installed)
276
-        elif not self.bundle:
277
-            downloaded = ' '.join([req.name for req in
278
-                                   requirement_set.successfully_downloaded])
279
-            if downloaded:
280
-                logger.notify('Successfully downloaded %s' % downloaded)
281
-        elif self.bundle:
282
-            requirement_set.create_bundle(self.bundle_filename)
283
-            logger.notify('Created bundle in %s' % self.bundle_filename)
284
-        # Clean up
285
-        if not options.no_install or options.download_dir:
286
-            requirement_set.cleanup_files(bundle=self.bundle)
287
-        if options.target_dir:
288
-            if not os.path.exists(options.target_dir):
289
-                os.makedirs(options.target_dir)
290
-            lib_dir = home_lib(temp_target_dir)
291
-            for item in os.listdir(lib_dir):
292
-                shutil.move(
293
-                    os.path.join(lib_dir, item),
294
-                    os.path.join(options.target_dir, item)
295
-                    )
296
-            shutil.rmtree(temp_target_dir)
297
-        return requirement_set
298 0
deleted file mode 100644
299 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/commands/install.pyc and /dev/null differ
300 2
deleted file mode 100644
... ...
@@ -1,132 +0,0 @@
1
-from pip.basecommand import Command
2
-from pip.exceptions import DistributionNotFound, BestVersionAlreadyInstalled
3
-from pip.index import PackageFinder
4
-from pip.log import logger
5
-from pip.req import InstallRequirement
6
-from pip.util import get_installed_distributions, dist_is_editable
7
-from pip.cmdoptions import make_option_group, index_group
8
-
9
-
10
-class ListCommand(Command):
11
-    """List installed packages, including editables."""
12
-    name = 'list'
13
-    usage = """
14
-      %prog [options]"""
15
-    summary = 'List installed packages.'
16
-
17
-    def __init__(self, *args, **kw):
18
-        super(ListCommand, self).__init__(*args, **kw)
19
-
20
-        cmd_opts = self.cmd_opts
21
-
22
-        cmd_opts.add_option(
23
-            '-o', '--outdated',
24
-            action='store_true',
25
-            default=False,
26
-            help='List outdated packages (excluding editables)')
27
-        cmd_opts.add_option(
28
-            '-u', '--uptodate',
29
-            action='store_true',
30
-            default=False,
31
-            help='List uptodate packages (excluding editables)')
32
-        cmd_opts.add_option(
33
-            '-e', '--editable',
34
-            action='store_true',
35
-            default=False,
36
-            help='List editable projects.')
37
-        cmd_opts.add_option(
38
-            '-l', '--local',
39
-            action='store_true',
40
-            default=False,
41
-            help='If in a virtualenv that has global access, do not list globally-installed packages.')
42
-
43
-        index_opts = make_option_group(index_group, self.parser)
44
-
45
-        self.parser.insert_option_group(0, index_opts)
46
-        self.parser.insert_option_group(0, cmd_opts)
47
-
48
-    def _build_package_finder(self, options, index_urls):
49
-        """
50
-        Create a package finder appropriate to this list command.
51
-        """
52
-        return PackageFinder(find_links=options.find_links,
53
-                             index_urls=index_urls,
54
-                             use_mirrors=options.use_mirrors,
55
-                             mirrors=options.mirrors)
56
-
57
-    def run(self, options, args):
58
-        if options.outdated:
59
-            self.run_outdated(options)
60
-        elif options.uptodate:
61
-            self.run_uptodate(options)
62
-        elif options.editable:
63
-            self.run_editables(options)
64
-        else:
65
-            self.run_listing(options)
66
-
67
-    def run_outdated(self, options):
68
-        for dist, remote_version_raw, remote_version_parsed in self.find_packages_latests_versions(options):
69
-            if remote_version_parsed > dist.parsed_version:
70
-                logger.notify('%s (Current: %s Latest: %s)' % (dist.project_name,
71
-                    dist.version, remote_version_raw))
72
-
73
-    def find_packages_latests_versions(self, options):
74
-        index_urls = [options.index_url] + options.extra_index_urls
75
-        if options.no_index:
76
-            logger.notify('Ignoring indexes: %s' % ','.join(index_urls))
77
-            index_urls = []
78
-
79
-        dependency_links = []
80
-        for dist in get_installed_distributions(local_only=options.local):
81
-            if dist.has_metadata('dependency_links.txt'):
82
-                dependency_links.extend(
83
-                    dist.get_metadata_lines('dependency_links.txt'),
84
-                )
85
-
86
-        finder = self._build_package_finder(options, index_urls)
87
-        finder.add_dependency_links(dependency_links)
88
-
89
-        installed_packages = get_installed_distributions(local_only=options.local, include_editables=False)
90
-        for dist in installed_packages:
91
-            req = InstallRequirement.from_line(dist.key, None)
92
-            try:
93
-                link = finder.find_requirement(req, True)
94
-
95
-                # If link is None, means installed version is most up-to-date
96
-                if link is None:
97
-                    continue
98
-            except DistributionNotFound:
99
-                continue
100
-            except BestVersionAlreadyInstalled:
101
-                remote_version = req.installed_version
102
-            else:
103
-                # It might be a good idea that link or finder had a public method
104
-                # that returned version
105
-                remote_version = finder._link_package_versions(link, req.name)[0]
106
-                remote_version_raw = remote_version[2]
107
-                remote_version_parsed = remote_version[0]
108
-            yield dist, remote_version_raw, remote_version_parsed
109
-
110
-    def run_listing(self, options):
111
-        installed_packages = get_installed_distributions(local_only=options.local)
112
-        self.output_package_listing(installed_packages)
113
-
114
-    def run_editables(self, options):
115
-        installed_packages = get_installed_distributions(local_only=options.local, editables_only=True)
116
-        self.output_package_listing(installed_packages)
117
-
118
-    def output_package_listing(self, installed_packages):
119
-        installed_packages = sorted(installed_packages, key=lambda dist: dist.project_name.lower())
120
-        for dist in installed_packages:
121
-            if dist_is_editable(dist):
122
-                line = '%s (%s, %s)' % (dist.project_name, dist.version, dist.location)
123
-            else:
124
-                line = '%s (%s)' % (dist.project_name, dist.version)
125
-            logger.notify(line)
126
-
127
-    def run_uptodate(self, options):
128
-        uptodate = []
129
-        for dist, remote_version_raw, remote_version_parsed in self.find_packages_latests_versions(options):
130
-            if dist.parsed_version == remote_version_parsed:
131
-                uptodate.append(dist)
132
-        self.output_package_listing(uptodate)
133 0
deleted file mode 100644
134 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/commands/list.pyc and /dev/null differ
135 2
deleted file mode 100644
... ...
@@ -1,130 +0,0 @@
1
-import sys
2
-import textwrap
3
-import pkg_resources
4
-import pip.download
5
-from pip.basecommand import Command, SUCCESS
6
-from pip.util import get_terminal_size
7
-from pip.log import logger
8
-from pip.backwardcompat import xmlrpclib, reduce, cmp
9
-from pip.exceptions import CommandError
10
-from pip.status_codes import NO_MATCHES_FOUND
11
-from distutils.version import StrictVersion, LooseVersion
12
-
13
-
14
-class SearchCommand(Command):
15
-    """Search for PyPI packages whose name or summary contains <query>."""
16
-    name = 'search'
17
-    usage = """
18
-      %prog [options] <query>"""
19
-    summary = 'Search PyPI for packages.'
20
-
21
-    def __init__(self, *args, **kw):
22
-        super(SearchCommand, self).__init__(*args, **kw)
23
-        self.cmd_opts.add_option(
24
-            '--index',
25
-            dest='index',
26
-            metavar='URL',
27
-            default='https://pypi.python.org/pypi',
28
-            help='Base URL of Python Package Index (default %default)')
29
-
30
-        self.parser.insert_option_group(0, self.cmd_opts)
31
-
32
-    def run(self, options, args):
33
-        if not args:
34
-            raise CommandError('Missing required argument (search query).')
35
-        query = args
36
-        index_url = options.index
37
-
38
-        pypi_hits = self.search(query, index_url)
39
-        hits = transform_hits(pypi_hits)
40
-
41
-        terminal_width = None
42
-        if sys.stdout.isatty():
43
-            terminal_width = get_terminal_size()[0]
44
-
45
-        print_results(hits, terminal_width=terminal_width)
46
-        if pypi_hits:
47
-            return SUCCESS
48
-        return NO_MATCHES_FOUND
49
-
50
-    def search(self, query, index_url):
51
-        pypi = xmlrpclib.ServerProxy(index_url, pip.download.xmlrpclib_transport)
52
-        hits = pypi.search({'name': query, 'summary': query}, 'or')
53
-        return hits
54
-
55
-
56
-def transform_hits(hits):
57
-    """
58
-    The list from pypi is really a list of versions. We want a list of
59
-    packages with the list of versions stored inline. This converts the
60
-    list from pypi into one we can use.
61
-    """
62
-    packages = {}
63
-    for hit in hits:
64
-        name = hit['name']
65
-        summary = hit['summary']
66
-        version = hit['version']
67
-        score = hit['_pypi_ordering']
68
-        if score is None:
69
-            score = 0
70
-
71
-        if name not in packages.keys():
72
-            packages[name] = {'name': name, 'summary': summary, 'versions': [version], 'score': score}
73
-        else:
74
-            packages[name]['versions'].append(version)
75
-
76
-            # if this is the highest version, replace summary and score
77
-            if version == highest_version(packages[name]['versions']):
78
-                packages[name]['summary'] = summary
79
-                packages[name]['score'] = score
80
-
81
-    # each record has a unique name now, so we will convert the dict into a list sorted by score
82
-    package_list = sorted(packages.values(), key=lambda x: x['score'], reverse=True)
83
-    return package_list
84
-
85
-
86
-def print_results(hits, name_column_width=25, terminal_width=None):
87
-    installed_packages = [p.project_name for p in pkg_resources.working_set]
88
-    for hit in hits:
89
-        name = hit['name']
90
-        summary = hit['summary'] or ''
91
-        if terminal_width is not None:
92
-            # wrap and indent summary to fit terminal
93
-            summary = textwrap.wrap(summary, terminal_width - name_column_width - 5)
94
-            summary = ('\n' + ' ' * (name_column_width + 3)).join(summary)
95
-        line = '%s - %s' % (name.ljust(name_column_width), summary)
96
-        try:
97
-            logger.notify(line)
98
-            if name in installed_packages:
99
-                dist = pkg_resources.get_distribution(name)
100
-                logger.indent += 2
101
-                try:
102
-                    latest = highest_version(hit['versions'])
103
-                    if dist.version == latest:
104
-                        logger.notify('INSTALLED: %s (latest)' % dist.version)
105
-                    else:
106
-                        logger.notify('INSTALLED: %s' % dist.version)
107
-                        logger.notify('LATEST:    %s' % latest)
108
-                finally:
109
-                    logger.indent -= 2
110
-        except UnicodeEncodeError:
111
-            pass
112
-
113
-
114
-def compare_versions(version1, version2):
115
-    try:
116
-        return cmp(StrictVersion(version1), StrictVersion(version2))
117
-    # in case of abnormal version number, fall back to LooseVersion
118
-    except ValueError:
119
-        pass
120
-    try:
121
-        return cmp(LooseVersion(version1), LooseVersion(version2))
122
-    except TypeError:
123
-    # certain LooseVersion comparions raise due to unorderable types,
124
-    # fallback to string comparison
125
-        return cmp([str(v) for v in LooseVersion(version1).version],
126
-                   [str(v) for v in LooseVersion(version2).version])
127
-
128
-
129
-def highest_version(versions):
130
-    return reduce((lambda v1, v2: compare_versions(v1, v2) == 1 and v1 or v2), versions)
131 0
deleted file mode 100644
132 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/commands/search.pyc and /dev/null differ
133 2
deleted file mode 100644
... ...
@@ -1,79 +0,0 @@
1
-import os
2
-import pkg_resources
3
-from pip.basecommand import Command
4
-from pip.log import logger
5
-
6
-
7
-class ShowCommand(Command):
8
-    """Show information about one or more installed packages."""
9
-    name = 'show'
10
-    usage = """
11
-      %prog [options] <package> ..."""
12
-    summary = 'Show information about installed packages.'
13
-
14
-    def __init__(self, *args, **kw):
15
-        super(ShowCommand, self).__init__(*args, **kw)
16
-        self.cmd_opts.add_option(
17
-            '-f', '--files',
18
-            dest='files',
19
-            action='store_true',
20
-            default=False,
21
-            help='Show the full list of installed files for each package.')
22
-
23
-        self.parser.insert_option_group(0, self.cmd_opts)
24
-
25
-    def run(self, options, args):
26
-        if not args:
27
-            logger.warn('ERROR: Please provide a package name or names.')
28
-            return
29
-        query = args
30
-
31
-        results = search_packages_info(query)
32
-        print_results(results, options.files)
33
-
34
-
35
-def search_packages_info(query):
36
-    """
37
-    Gather details from installed distributions. Print distribution name,
38
-    version, location, and installed files. Installed files requires a
39
-    pip generated 'installed-files.txt' in the distributions '.egg-info'
40
-    directory.
41
-    """
42
-    installed_packages = dict(
43
-        [(p.project_name.lower(), p) for p in pkg_resources.working_set])
44
-    for name in query:
45
-        normalized_name = name.lower()
46
-        if normalized_name in installed_packages:
47
-            dist = installed_packages[normalized_name]
48
-            package = {
49
-                'name': dist.project_name,
50
-                'version': dist.version,
51
-                'location': dist.location,
52
-                'requires': [dep.project_name for dep in dist.requires()],
53
-            }
54
-            filelist = os.path.join(
55
-                       dist.location,
56
-                       dist.egg_name() + '.egg-info',
57
-                       'installed-files.txt')
58
-            if os.path.isfile(filelist):
59
-                package['files'] = filelist
60
-            yield package
61
-
62
-
63
-def print_results(distributions, list_all_files):
64
-    """
65
-    Print the informations from installed distributions found.
66
-    """
67
-    for dist in distributions:
68
-        logger.notify("---")
69
-        logger.notify("Name: %s" % dist['name'])
70
-        logger.notify("Version: %s" % dist['version'])
71
-        logger.notify("Location: %s" % dist['location'])
72
-        logger.notify("Requires: %s" % ', '.join(dist['requires']))
73
-        if list_all_files:
74
-            logger.notify("Files:")
75
-            if 'files' in dist:
76
-                for line in open(dist['files']):
77
-                    logger.notify("  %s" % line.strip())
78
-            else:
79
-                logger.notify("Cannot locate installed-files.txt")
80 0
deleted file mode 100644
81 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/commands/show.pyc and /dev/null differ
82 2
deleted file mode 100644
... ...
@@ -1,54 +0,0 @@
1
-from pip.req import InstallRequirement, RequirementSet, parse_requirements
2
-from pip.basecommand import Command
3
-from pip.exceptions import InstallationError
4
-
5
-
6
-class UninstallCommand(Command):
7
-    """
8
-    Uninstall packages.
9
-
10
-    pip is able to uninstall most installed packages. Known exceptions are:
11
-
12
-    - Pure distutils packages installed with ``python setup.py install``, which
13
-      leave behind no metadata to determine what files were installed.
14
-    - Script wrappers installed by ``python setup.py develop``.
15
-    """
16
-    name = 'uninstall'
17
-    usage = """
18
-      %prog [options] <package> ...
19
-      %prog [options] -r <requirements file> ..."""
20
-    summary = 'Uninstall packages.'
21
-
22
-    def __init__(self, *args, **kw):
23
-        super(UninstallCommand, self).__init__(*args, **kw)
24
-        self.cmd_opts.add_option(
25
-            '-r', '--requirement',
26
-            dest='requirements',
27
-            action='append',
28
-            default=[],
29
-            metavar='file',
30
-            help='Uninstall all the packages listed in the given requirements file.  '
31
-            'This option can be used multiple times.')
32
-        self.cmd_opts.add_option(
33
-            '-y', '--yes',
34
-            dest='yes',
35
-            action='store_true',
36
-            help="Don't ask for confirmation of uninstall deletions.")
37
-
38
-        self.parser.insert_option_group(0, self.cmd_opts)
39
-
40
-    def run(self, options, args):
41
-        requirement_set = RequirementSet(
42
-            build_dir=None,
43
-            src_dir=None,
44
-            download_dir=None)
45
-        for name in args:
46
-            requirement_set.add_requirement(
47
-                InstallRequirement.from_line(name))
48
-        for filename in options.requirements:
49
-            for req in parse_requirements(filename, options=options):
50
-                requirement_set.add_requirement(req)
51
-        if not requirement_set.has_requirements:
52
-            raise InstallationError('You must give at least one requirement '
53
-                'to %(name)s (see "pip help %(name)s")' % dict(name=self.name))
54
-        requirement_set.uninstall(auto_confirm=options.yes)
55 0
deleted file mode 100644
56 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/commands/uninstall.pyc and /dev/null differ
57 2
deleted file mode 100644
... ...
@@ -1,7 +0,0 @@
1
-from pip.commands.zip import ZipCommand
2
-
3
-
4
-class UnzipCommand(ZipCommand):
5
-    """Unzip individual packages."""
6
-    name = 'unzip'
7
-    summary = 'Unzip individual packages.'
8 0
deleted file mode 100644
9 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/commands/unzip.pyc and /dev/null differ
10 2
deleted file mode 100644
... ...
@@ -1,347 +0,0 @@
1
-import sys
2
-import re
3
-import fnmatch
4
-import os
5
-import shutil
6
-import zipfile
7
-from pip.util import display_path, backup_dir, rmtree
8
-from pip.log import logger
9
-from pip.exceptions import InstallationError
10
-from pip.basecommand import Command
11
-
12
-
13
-class ZipCommand(Command):
14
-    """Zip individual packages."""
15
-    name = 'zip'
16
-    usage = """
17
-     %prog [options] <package> ..."""
18
-    summary = 'Zip individual packages.'
19
-
20
-    def __init__(self, *args, **kw):
21
-        super(ZipCommand, self).__init__(*args, **kw)
22
-        if self.name == 'zip':
23
-            self.cmd_opts.add_option(
24
-                '--unzip',
25
-                action='store_true',
26
-                dest='unzip',
27
-                help='Unzip (rather than zip) a package.')
28
-        else:
29
-            self.cmd_opts.add_option(
30
-                '--zip',
31
-                action='store_false',
32
-                dest='unzip',
33
-                default=True,
34
-                help='Zip (rather than unzip) a package.')
35
-        self.cmd_opts.add_option(
36
-            '--no-pyc',
37
-            action='store_true',
38
-            dest='no_pyc',
39
-            help='Do not include .pyc files in zip files (useful on Google App Engine).')
40
-        self.cmd_opts.add_option(
41
-            '-l', '--list',
42
-            action='store_true',
43
-            dest='list',
44
-            help='List the packages available, and their zip status.')
45
-        self.cmd_opts.add_option(
46
-            '--sort-files',
47
-            action='store_true',
48
-            dest='sort_files',
49
-            help='With --list, sort packages according to how many files they contain.')
50
-        self.cmd_opts.add_option(
51
-            '--path',
52
-            action='append',
53
-            dest='paths',
54
-            help='Restrict operations to the given paths (may include wildcards).')
55
-        self.cmd_opts.add_option(
56
-            '-n', '--simulate',
57
-            action='store_true',
58
-            help='Do not actually perform the zip/unzip operation.')
59
-
60
-        self.parser.insert_option_group(0, self.cmd_opts)
61
-
62
-    def paths(self):
63
-        """All the entries of sys.path, possibly restricted by --path"""
64
-        if not self.select_paths:
65
-            return sys.path
66
-        result = []
67
-        match_any = set()
68
-        for path in sys.path:
69
-            path = os.path.normcase(os.path.abspath(path))
70
-            for match in self.select_paths:
71
-                match = os.path.normcase(os.path.abspath(match))
72
-                if '*' in match:
73
-                    if re.search(fnmatch.translate(match + '*'), path):
74
-                        result.append(path)
75
-                        match_any.add(match)
76
-                        break
77
-                else:
78
-                    if path.startswith(match):
79
-                        result.append(path)
80
-                        match_any.add(match)
81
-                        break
82
-            else:
83
-                logger.debug("Skipping path %s because it doesn't match %s"
84
-                             % (path, ', '.join(self.select_paths)))
85
-        for match in self.select_paths:
86
-            if match not in match_any and '*' not in match:
87
-                result.append(match)
88
-                logger.debug("Adding path %s because it doesn't match "
89
-                             "anything already on sys.path" % match)
90
-        return result
91
-
92
-    def run(self, options, args):
93
-        self.select_paths = options.paths
94
-        self.simulate = options.simulate
95
-        if options.list:
96
-            return self.list(options, args)
97
-        if not args:
98
-            raise InstallationError(
99
-                'You must give at least one package to zip or unzip')
100
-        packages = []
101
-        for arg in args:
102
-            module_name, filename = self.find_package(arg)
103
-            if options.unzip and os.path.isdir(filename):
104
-                raise InstallationError(
105
-                    'The module %s (in %s) is not a zip file; cannot be unzipped'
106
-                    % (module_name, filename))
107
-            elif not options.unzip and not os.path.isdir(filename):
108
-                raise InstallationError(
109
-                    'The module %s (in %s) is not a directory; cannot be zipped'
110
-                    % (module_name, filename))
111
-            packages.append((module_name, filename))
112
-        last_status = None
113
-        for module_name, filename in packages:
114
-            if options.unzip:
115
-                last_status = self.unzip_package(module_name, filename)
116
-            else:
117
-                last_status = self.zip_package(module_name, filename, options.no_pyc)
118
-        return last_status
119
-
120
-    def unzip_package(self, module_name, filename):
121
-        zip_filename = os.path.dirname(filename)
122
-        if not os.path.isfile(zip_filename) and zipfile.is_zipfile(zip_filename):
123
-            raise InstallationError(
124
-                'Module %s (in %s) isn\'t located in a zip file in %s'
125
-                % (module_name, filename, zip_filename))
126
-        package_path = os.path.dirname(zip_filename)
127
-        if not package_path in self.paths():
128
-            logger.warn(
129
-                'Unpacking %s into %s, but %s is not on sys.path'
130
-                % (display_path(zip_filename), display_path(package_path),
131
-                   display_path(package_path)))
132
-        logger.notify('Unzipping %s (in %s)' % (module_name, display_path(zip_filename)))
133
-        if self.simulate:
134
-            logger.notify('Skipping remaining operations because of --simulate')
135
-            return
136
-        logger.indent += 2
137
-        try:
138
-            ## FIXME: this should be undoable:
139
-            zip = zipfile.ZipFile(zip_filename)
140
-            to_save = []
141
-            for name in zip.namelist():
142
-                if name.startswith(module_name + os.path.sep):
143
-                    content = zip.read(name)
144
-                    dest = os.path.join(package_path, name)
145
-                    if not os.path.exists(os.path.dirname(dest)):
146
-                        os.makedirs(os.path.dirname(dest))
147
-                    if not content and dest.endswith(os.path.sep):
148
-                        if not os.path.exists(dest):
149
-                            os.makedirs(dest)
150
-                    else:
151
-                        f = open(dest, 'wb')
152
-                        f.write(content)
153
-                        f.close()
154
-                else:
155
-                    to_save.append((name, zip.read(name)))
156
-            zip.close()
157
-            if not to_save:
158
-                logger.info('Removing now-empty zip file %s' % display_path(zip_filename))
159
-                os.unlink(zip_filename)
160
-                self.remove_filename_from_pth(zip_filename)
161
-            else:
162
-                logger.info('Removing entries in %s/ from zip file %s' % (module_name, display_path(zip_filename)))
163
-                zip = zipfile.ZipFile(zip_filename, 'w')
164
-                for name, content in to_save:
165
-                    zip.writestr(name, content)
166
-                zip.close()
167
-        finally:
168
-            logger.indent -= 2
169
-
170
-    def zip_package(self, module_name, filename, no_pyc):
171
-        orig_filename = filename
172
-        logger.notify('Zip %s (in %s)' % (module_name, display_path(filename)))
173
-        logger.indent += 2
174
-        if filename.endswith('.egg'):
175
-            dest_filename = filename
176
-        else:
177
-            dest_filename = filename + '.zip'
178
-        try:
179
-            ## FIXME: I think this needs to be undoable:
180
-            if filename == dest_filename:
181
-                filename = backup_dir(orig_filename)
182
-                logger.notify('Moving %s aside to %s' % (orig_filename, filename))
183
-                if not self.simulate:
184
-                    shutil.move(orig_filename, filename)
185
-            try:
186
-                logger.info('Creating zip file in %s' % display_path(dest_filename))
187
-                if not self.simulate:
188
-                    zip = zipfile.ZipFile(dest_filename, 'w')
189
-                    zip.writestr(module_name + '/', '')
190
-                    for dirpath, dirnames, filenames in os.walk(filename):
191
-                        if no_pyc:
192
-                            filenames = [f for f in filenames
193
-                                         if not f.lower().endswith('.pyc')]
194
-                        for fns, is_dir in [(dirnames, True), (filenames, False)]:
195
-                            for fn in fns:
196
-                                full = os.path.join(dirpath, fn)
197
-                                dest = os.path.join(module_name, dirpath[len(filename):].lstrip(os.path.sep), fn)
198
-                                if is_dir:
199
-                                    zip.writestr(dest + '/', '')
200
-                                else:
201
-                                    zip.write(full, dest)
202
-                    zip.close()
203
-                logger.info('Removing old directory %s' % display_path(filename))
204
-                if not self.simulate:
205
-                    rmtree(filename)
206
-            except:
207
-                ## FIXME: need to do an undo here
208
-                raise
209
-            ## FIXME: should also be undone:
210
-            self.add_filename_to_pth(dest_filename)
211
-        finally:
212
-            logger.indent -= 2
213
-
214
-    def remove_filename_from_pth(self, filename):
215
-        for pth in self.pth_files():
216
-            f = open(pth, 'r')
217
-            lines = f.readlines()
218
-            f.close()
219
-            new_lines = [
220
-                l for l in lines if l.strip() != filename]
221
-            if lines != new_lines:
222
-                logger.info('Removing reference to %s from .pth file %s'
223
-                            % (display_path(filename), display_path(pth)))
224
-                if not [line for line in new_lines if line]:
225
-                    logger.info('%s file would be empty: deleting' % display_path(pth))
226
-                    if not self.simulate:
227
-                        os.unlink(pth)
228
-                else:
229
-                    if not self.simulate:
230
-                        f = open(pth, 'wb')
231
-                        f.writelines(new_lines)
232
-                        f.close()
233
-                return
234
-        logger.warn('Cannot find a reference to %s in any .pth file' % display_path(filename))
235
-
236
-    def add_filename_to_pth(self, filename):
237
-        path = os.path.dirname(filename)
238
-        dest = filename + '.pth'
239
-        if path not in self.paths():
240
-            logger.warn('Adding .pth file %s, but it is not on sys.path' % display_path(dest))
241
-        if not self.simulate:
242
-            if os.path.exists(dest):
243
-                f = open(dest)
244
-                lines = f.readlines()
245
-                f.close()
246
-                if lines and not lines[-1].endswith('\n'):
247
-                    lines[-1] += '\n'
248
-                lines.append(filename + '\n')
249
-            else:
250
-                lines = [filename + '\n']
251
-            f = open(dest, 'wb')
252
-            f.writelines(lines)
253
-            f.close()
254
-
255
-    def pth_files(self):
256
-        for path in self.paths():
257
-            if not os.path.exists(path) or not os.path.isdir(path):
258
-                continue
259
-            for filename in os.listdir(path):
260
-                if filename.endswith('.pth'):
261
-                    yield os.path.join(path, filename)
262
-
263
-    def find_package(self, package):
264
-        for path in self.paths():
265
-            full = os.path.join(path, package)
266
-            if os.path.exists(full):
267
-                return package, full
268
-            if not os.path.isdir(path) and zipfile.is_zipfile(path):
269
-                zip = zipfile.ZipFile(path, 'r')
270
-                try:
271
-                    zip.read(os.path.join(package, '__init__.py'))
272
-                except KeyError:
273
-                    pass
274
-                else:
275
-                    zip.close()
276
-                    return package, full
277
-                zip.close()
278
-        ## FIXME: need special error for package.py case:
279
-        raise InstallationError(
280
-            'No package with the name %s found' % package)
281
-
282
-    def list(self, options, args):
283
-        if args:
284
-            raise InstallationError(
285
-                'You cannot give an argument with --list')
286
-        for path in sorted(self.paths()):
287
-            if not os.path.exists(path):
288
-                continue
289
-            basename = os.path.basename(path.rstrip(os.path.sep))
290
-            if os.path.isfile(path) and zipfile.is_zipfile(path):
291
-                if os.path.dirname(path) not in self.paths():
292
-                    logger.notify('Zipped egg: %s' % display_path(path))
293
-                continue
294
-            if (basename != 'site-packages' and basename != 'dist-packages'
295
-                and not path.replace('\\', '/').endswith('lib/python')):
296
-                continue
297
-            logger.notify('In %s:' % display_path(path))
298
-            logger.indent += 2
299
-            zipped = []
300
-            unzipped = []
301
-            try:
302
-                for filename in sorted(os.listdir(path)):
303
-                    ext = os.path.splitext(filename)[1].lower()
304
-                    if ext in ('.pth', '.egg-info', '.egg-link'):
305
-                        continue
306
-                    if ext == '.py':
307
-                        logger.info('Not displaying %s: not a package' % display_path(filename))
308
-                        continue
309
-                    full = os.path.join(path, filename)
310
-                    if os.path.isdir(full):
311
-                        unzipped.append((filename, self.count_package(full)))
312
-                    elif zipfile.is_zipfile(full):
313
-                        zipped.append(filename)
314
-                    else:
315
-                        logger.info('Unknown file: %s' % display_path(filename))
316
-                if zipped:
317
-                    logger.notify('Zipped packages:')
318
-                    logger.indent += 2
319
-                    try:
320
-                        for filename in zipped:
321
-                            logger.notify(filename)
322
-                    finally:
323
-                        logger.indent -= 2
324
-                else:
325
-                    logger.notify('No zipped packages.')
326
-                if unzipped:
327
-                    if options.sort_files:
328
-                        unzipped.sort(key=lambda x: -x[1])
329
-                    logger.notify('Unzipped packages:')
330
-                    logger.indent += 2
331
-                    try:
332
-                        for filename, count in unzipped:
333
-                            logger.notify('%s  (%i files)' % (filename, count))
334
-                    finally:
335
-                        logger.indent -= 2
336
-                else:
337
-                    logger.notify('No unzipped packages.')
338
-            finally:
339
-                logger.indent -= 2
340
-
341
-    def count_package(self, path):
342
-        total = 0
343
-        for dirpath, dirnames, filenames in os.walk(path):
344
-            filenames = [f for f in filenames
345
-                         if not f.lower().endswith('.pyc')]
346
-            total += len(filenames)
347
-        return total
348 0
deleted file mode 100644
349 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/commands/zip.pyc and /dev/null differ
350 2
deleted file mode 100644
... ...
@@ -1,584 +0,0 @@
1
-import cgi
2
-import getpass
3
-import hashlib
4
-import mimetypes
5
-import os
6
-import re
7
-import shutil
8
-import socket
9
-import sys
10
-import tempfile
11
-
12
-from pip.backwardcompat import (xmlrpclib, urllib, urllib2, httplib,
13
-                                urlparse, string_types, ssl)
14
-if ssl:
15
-    from pip.backwardcompat import match_hostname, CertificateError
16
-from pip.exceptions import InstallationError, PipError, NoSSLError
17
-from pip.util import (splitext, rmtree, format_size, display_path,
18
-                      backup_dir, ask_path_exists, unpack_file,
19
-                      create_download_cache_folder, cache_download)
20
-from pip.vcs import vcs
21
-from pip.log import logger
22
-from pip.locations import default_cert_path
23
-
24
-__all__ = ['xmlrpclib_transport', 'get_file_content', 'urlopen',
25
-           'is_url', 'url_to_path', 'path_to_url', 'path_to_url2',
26
-           'geturl', 'is_archive_file', 'unpack_vcs_link',
27
-           'unpack_file_url', 'is_vcs_url', 'is_file_url', 'unpack_http_url']
28
-
29
-
30
-xmlrpclib_transport = xmlrpclib.Transport()
31
-
32
-
33
-def get_file_content(url, comes_from=None):
34
-    """Gets the content of a file; it may be a filename, file: URL, or
35
-    http: URL.  Returns (location, content)"""
36
-    match = _scheme_re.search(url)
37
-    if match:
38
-        scheme = match.group(1).lower()
39
-        if (scheme == 'file' and comes_from
40
-            and comes_from.startswith('http')):
41
-            raise InstallationError(
42
-                'Requirements file %s references URL %s, which is local'
43
-                % (comes_from, url))
44
-        if scheme == 'file':
45
-            path = url.split(':', 1)[1]
46
-            path = path.replace('\\', '/')
47
-            match = _url_slash_drive_re.match(path)
48
-            if match:
49
-                path = match.group(1) + ':' + path.split('|', 1)[1]
50
-            path = urllib.unquote(path)
51
-            if path.startswith('/'):
52
-                path = '/' + path.lstrip('/')
53
-            url = path
54
-        else:
55
-            ## FIXME: catch some errors
56
-            resp = urlopen(url)
57
-            return geturl(resp), resp.read()
58
-    try:
59
-        f = open(url)
60
-        content = f.read()
61
-    except IOError:
62
-        e = sys.exc_info()[1]
63
-        raise InstallationError('Could not open requirements file: %s' % str(e))
64
-    else:
65
-        f.close()
66
-    return url, content
67
-
68
-
69
-_scheme_re = re.compile(r'^(http|https|file):', re.I)
70
-_url_slash_drive_re = re.compile(r'/*([a-z])\|', re.I)
71
-
72
-class VerifiedHTTPSConnection(httplib.HTTPSConnection):
73
-    """
74
-    A connection that wraps connections with ssl certificate verification.
75
-    """
76
-    def connect(self):
77
-
78
-        self.connection_kwargs = {}
79
-
80
-        #TODO: refactor compatibility logic into backwardcompat?
81
-
82
-        # for > py2.5
83
-        if hasattr(self, 'timeout'):
84
-            self.connection_kwargs.update(timeout = self.timeout)
85
-
86
-        # for >= py2.7
87
-        if hasattr(self, 'source_address'):
88
-            self.connection_kwargs.update(source_address = self.source_address)
89
-
90
-        sock = socket.create_connection((self.host, self.port), **self.connection_kwargs)
91
-
92
-        # for >= py2.7
93
-        if getattr(self, '_tunnel_host', None):
94
-            self.sock = sock
95
-            self._tunnel()
96
-
97
-        # get alternate bundle or use our included bundle
98
-        cert_path = os.environ.get('PIP_CERT', '') or default_cert_path
99
-
100
-        self.sock = ssl.wrap_socket(sock,
101
-                                self.key_file,
102
-                                self.cert_file,
103
-                                cert_reqs=ssl.CERT_REQUIRED,
104
-                                ca_certs=cert_path)
105
-
106
-        try:
107
-            match_hostname(self.sock.getpeercert(), self.host)
108
-        except CertificateError:
109
-            self.sock.shutdown(socket.SHUT_RDWR)
110
-            self.sock.close()
111
-            raise
112
-
113
-
114
-
115
-class VerifiedHTTPSHandler(urllib2.HTTPSHandler):
116
-    """
117
-    A HTTPSHandler that uses our own VerifiedHTTPSConnection.
118
-    """
119
-    def __init__(self, connection_class = VerifiedHTTPSConnection):
120
-        self.specialized_conn_class = connection_class
121
-        urllib2.HTTPSHandler.__init__(self)
122
-    def https_open(self, req):
123
-        return self.do_open(self.specialized_conn_class, req)
124
-
125
-
126
-class URLOpener(object):
127
-    """
128
-    pip's own URL helper that adds HTTP auth and proxy support
129
-    """
130
-    def __init__(self):
131
-        self.passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
132
-
133
-    def __call__(self, url):
134
-        """
135
-        If the given url contains auth info or if a normal request gets a 401
136
-        response, an attempt is made to fetch the resource using basic HTTP
137
-        auth.
138
-
139
-        """
140
-        url, username, password, scheme = self.extract_credentials(url)
141
-        if username is None:
142
-            try:
143
-                response = self.get_opener(scheme=scheme).open(url)
144
-            except urllib2.HTTPError:
145
-                e = sys.exc_info()[1]
146
-                if e.code != 401:
147
-                    raise
148
-                response = self.get_response(url)
149
-        else:
150
-            response = self.get_response(url, username, password)
151
-        return response
152
-
153
-    def get_request(self, url):
154
-        """
155
-        Wraps the URL to retrieve to protects against "creative"
156
-        interpretation of the RFC: http://bugs.python.org/issue8732
157
-        """
158
-        if isinstance(url, string_types):
159
-            url = urllib2.Request(url, headers={'Accept-encoding': 'identity'})
160
-        return url
161
-
162
-    def get_response(self, url, username=None, password=None):
163
-        """
164
-        does the dirty work of actually getting the rsponse object using urllib2
165
-        and its HTTP auth builtins.
166
-        """
167
-        scheme, netloc, path, query, frag = urlparse.urlsplit(url)
168
-        req = self.get_request(url)
169
-
170
-        stored_username, stored_password = self.passman.find_user_password(None, netloc)
171
-        # see if we have a password stored
172
-        if stored_username is None:
173
-            if username is None and self.prompting:
174
-                username = urllib.quote(raw_input('User for %s: ' % netloc))
175
-                password = urllib.quote(getpass.getpass('Password: '))
176
-            if username and password:
177
-                self.passman.add_password(None, netloc, username, password)
178
-            stored_username, stored_password = self.passman.find_user_password(None, netloc)
179
-        authhandler = urllib2.HTTPBasicAuthHandler(self.passman)
180
-        opener = self.get_opener(authhandler, scheme=scheme)
181
-        # FIXME: should catch a 401 and offer to let the user reenter credentials
182
-        return opener.open(req)
183
-
184
-    def get_opener(self, *args, **kwargs):
185
-        """
186
-        Build an OpenerDirector instance based on the scheme, whether ssl is
187
-        importable and the --insecure parameter.
188
-        """
189
-        if kwargs.get('scheme') == 'https':
190
-            if ssl:
191
-                https_handler = VerifiedHTTPSHandler()
192
-                director =  urllib2.build_opener(https_handler, *args)
193
-                #strip out HTTPHandler to prevent MITM spoof
194
-                for handler in director.handlers:
195
-                    if isinstance(handler, urllib2.HTTPHandler):
196
-                        director.handlers.remove(handler)
197
-                return director
198
-            elif os.environ.get('PIP_INSECURE', '') == '1':
199
-                return urllib2.build_opener(*args)
200
-            else:
201
-                raise NoSSLError()
202
-        else:
203
-            return urllib2.build_opener(*args)
204
-
205
-    def setup(self, proxystr='', prompting=True):
206
-        """
207
-        Sets the proxy handler given the option passed on the command
208
-        line.  If an empty string is passed it looks at the HTTP_PROXY
209
-        environment variable.
210
-        """
211
-        self.prompting = prompting
212
-        proxy = self.get_proxy(proxystr)
213
-        if proxy:
214
-            proxy_support = urllib2.ProxyHandler({"http": proxy, "ftp": proxy, "https": proxy})
215
-            opener = urllib2.build_opener(proxy_support, urllib2.CacheFTPHandler)
216
-            urllib2.install_opener(opener)
217
-
218
-    def parse_credentials(self, netloc):
219
-        if "@" in netloc:
220
-            userinfo = netloc.rsplit("@", 1)[0]
221
-            if ":" in userinfo:
222
-                return userinfo.split(":", 1)
223
-            return userinfo, None
224
-        return None, None
225
-
226
-    def extract_credentials(self, url):
227
-        """
228
-        Extracts user/password from a url.
229
-
230
-        Returns a tuple:
231
-            (url-without-auth, username, password)
232
-        """
233
-        if isinstance(url, urllib2.Request):
234
-            result = urlparse.urlsplit(url.get_full_url())
235
-        else:
236
-            result = urlparse.urlsplit(url)
237
-        scheme, netloc, path, query, frag = result
238
-
239
-        username, password = self.parse_credentials(netloc)
240
-        if username is None:
241
-            return url, None, None, scheme
242
-        elif password is None and self.prompting:
243
-            # remove the auth credentials from the url part
244
-            netloc = netloc.replace('%s@' % username, '', 1)
245
-            # prompt for the password
246
-            prompt = 'Password for %s@%s: ' % (username, netloc)
247
-            password = urllib.quote(getpass.getpass(prompt))
248
-        else:
249
-            # remove the auth credentials from the url part
250
-            netloc = netloc.replace('%s:%s@' % (username, password), '', 1)
251
-
252
-        target_url = urlparse.urlunsplit((scheme, netloc, path, query, frag))
253
-        return target_url, username, password, scheme
254
-
255
-    def get_proxy(self, proxystr=''):
256
-        """
257
-        Get the proxy given the option passed on the command line.
258
-        If an empty string is passed it looks at the HTTP_PROXY
259
-        environment variable.
260
-        """
261
-        if not proxystr:
262
-            proxystr = os.environ.get('HTTP_PROXY', '')
263
-        if proxystr:
264
-            if '@' in proxystr:
265
-                user_password, server_port = proxystr.split('@', 1)
266
-                if ':' in user_password:
267
-                    user, password = user_password.split(':', 1)
268
-                else:
269
-                    user = user_password
270
-                    prompt = 'Password for %s@%s: ' % (user, server_port)
271
-                    password = urllib.quote(getpass.getpass(prompt))
272
-                return '%s:%s@%s' % (user, password, server_port)
273
-            else:
274
-                return proxystr
275
-        else:
276
-            return None
277
-
278
-urlopen = URLOpener()
279
-
280
-
281
-def is_url(name):
282
-    """Returns true if the name looks like a URL"""
283
-    if ':' not in name:
284
-        return False
285
-    scheme = name.split(':', 1)[0].lower()
286
-    return scheme in ['http', 'https', 'file', 'ftp'] + vcs.all_schemes
287
-
288
-
289
-def url_to_path(url):
290
-    """
291
-    Convert a file: URL to a path.
292
-    """
293
-    assert url.startswith('file:'), (
294
-        "You can only turn file: urls into filenames (not %r)" % url)
295
-    path = url[len('file:'):].lstrip('/')
296
-    path = urllib.unquote(path)
297
-    if _url_drive_re.match(path):
298
-        path = path[0] + ':' + path[2:]
299
-    else:
300
-        path = '/' + path
301
-    return path
302
-
303
-
304
-_drive_re = re.compile('^([a-z]):', re.I)
305
-_url_drive_re = re.compile('^([a-z])[:|]', re.I)
306
-
307
-
308
-def path_to_url(path):
309
-    """
310
-    Convert a path to a file: URL.  The path will be made absolute.
311
-    """
312
-    path = os.path.normcase(os.path.abspath(path))
313
-    if _drive_re.match(path):
314
-        path = path[0] + '|' + path[2:]
315
-    url = urllib.quote(path)
316
-    url = url.replace(os.path.sep, '/')
317
-    url = url.lstrip('/')
318
-    return 'file:///' + url
319
-
320
-
321
-def path_to_url2(path):
322
-    """
323
-    Convert a path to a file: URL.  The path will be made absolute and have
324
-    quoted path parts.
325
-    """
326
-    path = os.path.normpath(os.path.abspath(path))
327
-    drive, path = os.path.splitdrive(path)
328
-    filepath = path.split(os.path.sep)
329
-    url = '/'.join([urllib.quote(part) for part in filepath])
330
-    if not drive:
331
-        url = url.lstrip('/')
332
-    return 'file:///' + drive + url
333
-
334
-
335
-def geturl(urllib2_resp):
336
-    """
337
-    Use instead of urllib.addinfourl.geturl(), which appears to have
338
-    some issues with dropping the double slash for certain schemes
339
-    (e.g. file://).  This implementation is probably over-eager, as it
340
-    always restores '://' if it is missing, and it appears some url
341
-    schemata aren't always followed by '//' after the colon, but as
342
-    far as I know pip doesn't need any of those.
343
-    The URI RFC can be found at: http://tools.ietf.org/html/rfc1630
344
-
345
-    This function assumes that
346
-        scheme:/foo/bar
347
-    is the same as
348
-        scheme:///foo/bar
349
-    """
350
-    url = urllib2_resp.geturl()
351
-    scheme, rest = url.split(':', 1)
352
-    if rest.startswith('//'):
353
-        return url
354
-    else:
355
-        # FIXME: write a good test to cover it
356
-        return '%s://%s' % (scheme, rest)
357
-
358
-
359
-def is_archive_file(name):
360
-    """Return True if `name` is a considered as an archive file."""
361
-    archives = ('.zip', '.tar.gz', '.tar.bz2', '.tgz', '.tar', '.pybundle')
362
-    ext = splitext(name)[1].lower()
363
-    if ext in archives:
364
-        return True
365
-    return False
366
-
367
-
368
-def unpack_vcs_link(link, location, only_download=False):
369
-    vcs_backend = _get_used_vcs_backend(link)
370
-    if only_download:
371
-        vcs_backend.export(location)
372
-    else:
373
-        vcs_backend.unpack(location)
374
-
375
-
376
-def unpack_file_url(link, location):
377
-    source = url_to_path(link.url)
378
-    content_type = mimetypes.guess_type(source)[0]
379
-    if os.path.isdir(source):
380
-        # delete the location since shutil will create it again :(
381
-        if os.path.isdir(location):
382
-            rmtree(location)
383
-        shutil.copytree(source, location)
384
-    else:
385
-        unpack_file(source, location, content_type, link)
386
-
387
-
388
-def _get_used_vcs_backend(link):
389
-    for backend in vcs.backends:
390
-        if link.scheme in backend.schemes:
391
-            vcs_backend = backend(link.url)
392
-            return vcs_backend
393
-
394
-
395
-def is_vcs_url(link):
396
-    return bool(_get_used_vcs_backend(link))
397
-
398
-
399
-def is_file_url(link):
400
-    return link.url.lower().startswith('file:')
401
-
402
-
403
-def _check_hash(download_hash, link):
404
-    if download_hash.digest_size != hashlib.new(link.hash_name).digest_size:
405
-        logger.fatal("Hash digest size of the package %d (%s) doesn't match the expected hash name %s!"
406
-                    % (download_hash.digest_size, link, link.hash_name))
407
-        raise InstallationError('Hash name mismatch for package %s' % link)
408
-    if download_hash.hexdigest() != link.hash:
409
-        logger.fatal("Hash of the package %s (%s) doesn't match the expected hash %s!"
410
-                     % (link, download_hash, link.hash))
411
-        raise InstallationError('Bad %s hash for package %s' % (link.hash_name, link))
412
-
413
-
414
-def _get_hash_from_file(target_file, link):
415
-    try:
416
-        download_hash = hashlib.new(link.hash_name)
417
-    except (ValueError, TypeError):
418
-        logger.warn("Unsupported hash name %s for package %s" % (link.hash_name, link))
419
-        return None
420
-
421
-    fp = open(target_file, 'rb')
422
-    while True:
423
-        chunk = fp.read(4096)
424
-        if not chunk:
425
-            break
426
-        download_hash.update(chunk)
427
-    fp.close()
428
-    return download_hash
429
-
430
-
431
-def _download_url(resp, link, temp_location):
432
-    fp = open(temp_location, 'wb')
433
-    download_hash = None
434
-    if link.hash and link.hash_name:
435
-        try:
436
-            download_hash = hashlib.new(link.hash_name)
437
-        except ValueError:
438
-            logger.warn("Unsupported hash name %s for package %s" % (link.hash_name, link))
439
-    try:
440
-        total_length = int(resp.info()['content-length'])
441
-    except (ValueError, KeyError, TypeError):
442
-        total_length = 0
443
-    downloaded = 0
444
-    show_progress = total_length > 40 * 1000 or not total_length
445
-    show_url = link.show_url
446
-    try:
447
-        if show_progress:
448
-            ## FIXME: the URL can get really long in this message:
449
-            if total_length:
450
-                logger.start_progress('Downloading %s (%s): ' % (show_url, format_size(total_length)))
451
-            else:
452
-                logger.start_progress('Downloading %s (unknown size): ' % show_url)
453
-        else:
454
-            logger.notify('Downloading %s' % show_url)
455
-        logger.info('Downloading from URL %s' % link)
456
-
457
-        while True:
458
-            chunk = resp.read(4096)
459
-            if not chunk:
460
-                break
461
-            downloaded += len(chunk)
462
-            if show_progress:
463
-                if not total_length:
464
-                    logger.show_progress('%s' % format_size(downloaded))
465
-                else:
466
-                    logger.show_progress('%3i%%  %s' % (100 * downloaded / total_length, format_size(downloaded)))
467
-            if download_hash is not None:
468
-                download_hash.update(chunk)
469
-            fp.write(chunk)
470
-        fp.close()
471
-    finally:
472
-        if show_progress:
473
-            logger.end_progress('%s downloaded' % format_size(downloaded))
474
-    return download_hash
475
-
476
-
477
-def _copy_file(filename, location, content_type, link):
478
-    copy = True
479
-    download_location = os.path.join(location, link.filename)
480
-    if os.path.exists(download_location):
481
-        response = ask_path_exists(
482
-            'The file %s exists. (i)gnore, (w)ipe, (b)ackup ' %
483
-            display_path(download_location), ('i', 'w', 'b'))
484
-        if response == 'i':
485
-            copy = False
486
-        elif response == 'w':
487
-            logger.warn('Deleting %s' % display_path(download_location))
488
-            os.remove(download_location)
489
-        elif response == 'b':
490
-            dest_file = backup_dir(download_location)
491
-            logger.warn('Backing up %s to %s'
492
-                        % (display_path(download_location), display_path(dest_file)))
493
-            shutil.move(download_location, dest_file)
494
-    if copy:
495
-        shutil.copy(filename, download_location)
496
-        logger.indent -= 2
497
-        logger.notify('Saved %s' % display_path(download_location))
498
-
499
-
500
-def unpack_http_url(link, location, download_cache, download_dir=None):
501
-    temp_dir = tempfile.mkdtemp('-unpack', 'pip-')
502
-    target_url = link.url.split('#', 1)[0]
503
-    target_file = None
504
-    download_hash = None
505
-    if download_cache:
506
-        target_file = os.path.join(download_cache,
507
-                                   urllib.quote(target_url, ''))
508
-        if not os.path.isdir(download_cache):
509
-            create_download_cache_folder(download_cache)
510
-
511
-    already_downloaded = None
512
-    if download_dir:
513
-        already_downloaded = os.path.join(download_dir, link.filename)
514
-        if not os.path.exists(already_downloaded):
515
-            already_downloaded = None
516
-
517
-    if (target_file
518
-        and os.path.exists(target_file)
519
-        and os.path.exists(target_file + '.content-type')):
520
-        fp = open(target_file+'.content-type')
521
-        content_type = fp.read().strip()
522
-        fp.close()
523
-        if link.hash and link.hash_name:
524
-            download_hash = _get_hash_from_file(target_file, link)
525
-        temp_location = target_file
526
-        logger.notify('Using download cache from %s' % target_file)
527
-    elif already_downloaded:
528
-        temp_location = already_downloaded
529
-        content_type = mimetypes.guess_type(already_downloaded)
530
-        if link.hash:
531
-            download_hash = _get_hash_from_file(temp_location, link)
532
-        logger.notify('File was already downloaded %s' % already_downloaded)
533
-    else:
534
-        resp = _get_response_from_url(target_url, link)
535
-        content_type = resp.info()['content-type']
536
-        filename = link.filename  # fallback
537
-        # Have a look at the Content-Disposition header for a better guess
538
-        content_disposition = resp.info().get('content-disposition')
539
-        if content_disposition:
540
-            type, params = cgi.parse_header(content_disposition)
541
-            # We use ``or`` here because we don't want to use an "empty" value
542
-            # from the filename param.
543
-            filename = params.get('filename') or filename
544
-        ext = splitext(filename)[1]
545
-        if not ext:
546
-            ext = mimetypes.guess_extension(content_type)
547
-            if ext:
548
-                filename += ext
549
-        if not ext and link.url != geturl(resp):
550
-            ext = os.path.splitext(geturl(resp))[1]
551
-            if ext:
552
-                filename += ext
553
-        temp_location = os.path.join(temp_dir, filename)
554
-        download_hash = _download_url(resp, link, temp_location)
555
-    if link.hash and link.hash_name:
556
-        _check_hash(download_hash, link)
557
-    if download_dir and not already_downloaded:
558
-        _copy_file(temp_location, download_dir, content_type, link)
559
-    unpack_file(temp_location, location, content_type, link)
560
-    if target_file and target_file != temp_location:
561
-        cache_download(target_file, temp_location, content_type)
562
-    if target_file is None and not already_downloaded:
563
-        os.unlink(temp_location)
564
-    os.rmdir(temp_dir)
565
-
566
-
567
-def _get_response_from_url(target_url, link):
568
-    try:
569
-        resp = urlopen(target_url)
570
-    except urllib2.HTTPError:
571
-        e = sys.exc_info()[1]
572
-        logger.fatal("HTTP error %s while getting %s" % (e.code, link))
573
-        raise
574
-    except IOError:
575
-        e = sys.exc_info()[1]
576
-        # Typically an FTP error
577
-        logger.fatal("Error %s while getting %s" % (e, link))
578
-        raise
579
-    return resp
580
-
581
-
582
-class Urllib2HeadRequest(urllib2.Request):
583
-    def get_method(self):
584
-        return "HEAD"
585 0
deleted file mode 100644
586 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/download.pyc and /dev/null differ
587 2
deleted file mode 100644
... ...
@@ -1,56 +0,0 @@
1
-"""Exceptions used throughout package"""
2
-
3
-import textwrap
4
-
5
-class PipError(Exception):
6
-    """Base pip exception"""
7
-
8
-
9
-class InstallationError(PipError):
10
-    """General exception during installation"""
11
-
12
-
13
-class UninstallationError(PipError):
14
-    """General exception during uninstallation"""
15
-
16
-
17
-class DistributionNotFound(InstallationError):
18
-    """Raised when a distribution cannot be found to satisfy a requirement"""
19
-
20
-
21
-class BestVersionAlreadyInstalled(PipError):
22
-    """Raised when the most up-to-date version of a package is already
23
-    installed.  """
24
-
25
-
26
-class BadCommand(PipError):
27
-    """Raised when virtualenv or a command is not found"""
28
-
29
-
30
-class CommandError(PipError):
31
-    """Raised when there is an error in command-line arguments"""
32
-
33
-
34
-class NoSSLError(PipError):
35
-    """Raised when there's no ssl and not using '--insecure'"""
36
-
37
-    def __str__(self):
38
-        return textwrap.dedent("""
39
-            ###################################################################
40
-            ##  You don't have an importable ssl module. You are most        ##
41
-            ##  likely using Python 2.5, which did not include ssl           ##
42
-            ##  support by default. In this state, we can not provide        ##
43
-            ##  ssl certified downloads from PyPI.                           ##
44
-            ##                                                               ##
45
-            ##  You can do one of 2 things:                                  ##
46
-            ##   1) Install this: https://pypi.python.org/pypi/ssl/          ##
47
-            ##      (It provides ssl support for older Pythons )             ##
48
-            ##   2) Use the --insecure option to allow this insecurity       ##
49
-            ##                                                               ##
50
-            ##  For more details, go to the  "SSL Certificate Verification"  ##
51
-            ##  section located here:                                        ##
52
-            ##     http://www.pip-installer.org/en/latest/logic.html         ##
53
-            ##                                                               ##
54
-            ###################################################################
55
-            """)
56
-
57 0
deleted file mode 100644
58 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/exceptions.pyc and /dev/null differ
59 2
deleted file mode 100644
... ...
@@ -1,757 +0,0 @@
1
-"""Routines related to PyPI, indexes"""
2
-
3
-import sys
4
-import os
5
-import re
6
-import gzip
7
-import mimetypes
8
-import posixpath
9
-import pkg_resources
10
-import random
11
-import socket
12
-import string
13
-import zlib
14
-
15
-try:
16
-    import threading
17
-except ImportError:
18
-    import dummy_threading as threading
19
-
20
-from pip.log import logger
21
-from pip.util import Inf, normalize_name, splitext
22
-from pip.exceptions import DistributionNotFound, BestVersionAlreadyInstalled
23
-from pip.backwardcompat import (WindowsError, BytesIO,
24
-                                Queue, urlparse,
25
-                                URLError, HTTPError, u,
26
-                                product, url2pathname, ssl,
27
-                                Empty as QueueEmpty)
28
-if ssl:
29
-    from pip.backwardcompat import CertificateError
30
-from pip.download import urlopen, path_to_url2, url_to_path, geturl, Urllib2HeadRequest
31
-
32
-__all__ = ['PackageFinder']
33
-
34
-
35
-DEFAULT_MIRROR_HOSTNAME = "last.pypi.python.org"
36
-
37
-
38
-class PackageFinder(object):
39
-    """This finds packages.
40
-
41
-    This is meant to match easy_install's technique for looking for
42
-    packages, by reading pages and looking for appropriate links
43
-    """
44
-
45
-    def __init__(self, find_links, index_urls,
46
-            use_mirrors=False, mirrors=None, main_mirror_url=None):
47
-        self.find_links = find_links
48
-        self.index_urls = index_urls
49
-        self.dependency_links = []
50
-        self.cache = PageCache()
51
-        # These are boring links that have already been logged somehow:
52
-        self.logged_links = set()
53
-        if use_mirrors:
54
-            self.mirror_urls = self._get_mirror_urls(mirrors, main_mirror_url)
55
-            logger.info('Using PyPI mirrors: %s' % ', '.join(self.mirror_urls))
56
-        else:
57
-            self.mirror_urls = []
58
-
59
-    def add_dependency_links(self, links):
60
-        ## FIXME: this shouldn't be global list this, it should only
61
-        ## apply to requirements of the package that specifies the
62
-        ## dependency_links value
63
-        ## FIXME: also, we should track comes_from (i.e., use Link)
64
-        self.dependency_links.extend(links)
65
-
66
-    def _sort_locations(self, locations):
67
-        """
68
-        Sort locations into "files" (archives) and "urls", and return
69
-        a pair of lists (files,urls)
70
-        """
71
-        files = []
72
-        urls = []
73
-
74
-        # puts the url for the given file path into the appropriate list
75
-        def sort_path(path):
76
-            url = path_to_url2(path)
77
-            if mimetypes.guess_type(url, strict=False)[0] == 'text/html':
78
-                urls.append(url)
79
-            else:
80
-                files.append(url)
81
-
82
-        for url in locations:
83
-
84
-            is_local_path = os.path.exists(url)
85
-            is_file_url = url.startswith('file:')
86
-            is_find_link = url in self.find_links
87
-
88
-            if is_local_path or is_file_url:
89
-                if is_local_path:
90
-                    path = url
91
-                else:
92
-                    path = url_to_path(url)
93
-                if is_find_link and os.path.isdir(path):
94
-                    path = os.path.realpath(path)
95
-                    for item in os.listdir(path):
96
-                        sort_path(os.path.join(path, item))
97
-                elif is_file_url and os.path.isdir(path):
98
-                    urls.append(url)
99
-                elif os.path.isfile(path):
100
-                    sort_path(path)
101
-            else:
102
-                urls.append(url)
103
-
104
-        return files, urls
105
-
106
-    def find_requirement(self, req, upgrade):
107
-
108
-        def mkurl_pypi_url(url):
109
-            loc = posixpath.join(url, url_name)
110
-            # For maximum compatibility with easy_install, ensure the path
111
-            # ends in a trailing slash.  Although this isn't in the spec
112
-            # (and PyPI can handle it without the slash) some other index
113
-            # implementations might break if they relied on easy_install's behavior.
114
-            if not loc.endswith('/'):
115
-                loc = loc + '/'
116
-            return loc
117
-
118
-        url_name = req.url_name
119
-        # Only check main index if index URL is given:
120
-        main_index_url = None
121
-        if self.index_urls:
122
-            # Check that we have the url_name correctly spelled:
123
-            main_index_url = Link(mkurl_pypi_url(self.index_urls[0]))
124
-            # This will also cache the page, so it's okay that we get it again later:
125
-            page = self._get_page(main_index_url, req)
126
-            if page is None:
127
-                url_name = self._find_url_name(Link(self.index_urls[0]), url_name, req) or req.url_name
128
-
129
-        # Combine index URLs with mirror URLs here to allow
130
-        # adding more index URLs from requirements files
131
-        all_index_urls = self.index_urls + self.mirror_urls
132
-
133
-        if url_name is not None:
134
-            locations = [
135
-                mkurl_pypi_url(url)
136
-                for url in all_index_urls] + self.find_links
137
-        else:
138
-            locations = list(self.find_links)
139
-        locations.extend(self.dependency_links)
140
-        for version in req.absolute_versions:
141
-            if url_name is not None and main_index_url is not None:
142
-                locations = [
143
-                    posixpath.join(main_index_url.url, version)] + locations
144
-
145
-        file_locations, url_locations = self._sort_locations(locations)
146
-
147
-        locations = [Link(url) for url in url_locations]
148
-        logger.debug('URLs to search for versions for %s:' % req)
149
-        for location in locations:
150
-            logger.debug('* %s' % location)
151
-        found_versions = []
152
-        found_versions.extend(
153
-            self._package_versions(
154
-                [Link(url, '-f') for url in self.find_links], req.name.lower()))
155
-        page_versions = []
156
-        for page in self._get_pages(locations, req):
157
-            logger.debug('Analyzing links from page %s' % page.url)
158
-            logger.indent += 2
159
-            try:
160
-                page_versions.extend(self._package_versions(page.links, req.name.lower()))
161
-            finally:
162
-                logger.indent -= 2
163
-        dependency_versions = list(self._package_versions(
164
-            [Link(url) for url in self.dependency_links], req.name.lower()))
165
-        if dependency_versions:
166
-            logger.info('dependency_links found: %s' % ', '.join([link.url for parsed, link, version in dependency_versions]))
167
-        file_versions = list(self._package_versions(
168
-                [Link(url) for url in file_locations], req.name.lower()))
169
-        if not found_versions and not page_versions and not dependency_versions and not file_versions:
170
-            logger.fatal('Could not find any downloads that satisfy the requirement %s' % req)
171
-            raise DistributionNotFound('No distributions at all found for %s' % req)
172
-        installed_version = []
173
-        if req.satisfied_by is not None:
174
-            installed_version = [(req.satisfied_by.parsed_version, InfLink, req.satisfied_by.version)]
175
-        if file_versions:
176
-            file_versions.sort(reverse=True)
177
-            logger.info('Local files found: %s' % ', '.join([url_to_path(link.url) for parsed, link, version in file_versions]))
178
-        #this is an intentional priority ordering
179
-        all_versions = installed_version + file_versions + found_versions + page_versions + dependency_versions
180
-        applicable_versions = []
181
-        for (parsed_version, link, version) in all_versions:
182
-            if version not in req.req:
183
-                logger.info("Ignoring link %s, version %s doesn't match %s"
184
-                            % (link, version, ','.join([''.join(s) for s in req.req.specs])))
185
-                continue
186
-            applicable_versions.append((parsed_version, link, version))
187
-        #bring the latest version to the front, but maintains the priority ordering as secondary
188
-        applicable_versions = sorted(applicable_versions, key=lambda v: v[0], reverse=True)
189
-        existing_applicable = bool([link for parsed_version, link, version in applicable_versions if link is InfLink])
190
-        if not upgrade and existing_applicable:
191
-            if applicable_versions[0][1] is InfLink:
192
-                logger.info('Existing installed version (%s) is most up-to-date and satisfies requirement'
193
-                            % req.satisfied_by.version)
194
-            else:
195
-                logger.info('Existing installed version (%s) satisfies requirement (most up-to-date version is %s)'
196
-                            % (req.satisfied_by.version, applicable_versions[0][2]))
197
-            return None
198
-        if not applicable_versions:
199
-            logger.fatal('Could not find a version that satisfies the requirement %s (from versions: %s)'
200
-                         % (req, ', '.join([version for parsed_version, link, version in all_versions])))
201
-            raise DistributionNotFound('No distributions matching the version for %s' % req)
202
-        if applicable_versions[0][1] is InfLink:
203
-            # We have an existing version, and its the best version
204
-            logger.info('Installed version (%s) is most up-to-date (past versions: %s)'
205
-                        % (req.satisfied_by.version, ', '.join([version for parsed_version, link, version in applicable_versions[1:]]) or 'none'))
206
-            raise BestVersionAlreadyInstalled
207
-        if len(applicable_versions) > 1:
208
-            logger.info('Using version %s (newest of versions: %s)' %
209
-                        (applicable_versions[0][2], ', '.join([version for parsed_version, link, version in applicable_versions])))
210
-        return applicable_versions[0][1]
211
-
212
-
213
-    def _find_url_name(self, index_url, url_name, req):
214
-        """Finds the true URL name of a package, when the given name isn't quite correct.
215
-        This is usually used to implement case-insensitivity."""
216
-        if not index_url.url.endswith('/'):
217
-            # Vaguely part of the PyPI API... weird but true.
218
-            ## FIXME: bad to modify this?
219
-            index_url.url += '/'
220
-        page = self._get_page(index_url, req)
221
-        if page is None:
222
-            logger.fatal('Cannot fetch index base URL %s' % index_url)
223
-            return
224
-        norm_name = normalize_name(req.url_name)
225
-        for link in page.links:
226
-            base = posixpath.basename(link.path.rstrip('/'))
227
-            if norm_name == normalize_name(base):
228
-                logger.notify('Real name of requirement %s is %s' % (url_name, base))
229
-                return base
230
-        return None
231
-
232
-    def _get_pages(self, locations, req):
233
-        """Yields (page, page_url) from the given locations, skipping
234
-        locations that have errors, and adding download/homepage links"""
235
-        pending_queue = Queue()
236
-        for location in locations:
237
-            pending_queue.put(location)
238
-        done = []
239
-        seen = set()
240
-        threads = []
241
-        for i in range(min(10, len(locations))):
242
-            t = threading.Thread(target=self._get_queued_page, args=(req, pending_queue, done, seen))
243
-            t.setDaemon(True)
244
-            threads.append(t)
245
-            t.start()
246
-        for t in threads:
247
-            t.join()
248
-        return done
249
-
250
-    _log_lock = threading.Lock()
251
-
252
-    def _get_queued_page(self, req, pending_queue, done, seen):
253
-        while 1:
254
-            try:
255
-                location = pending_queue.get(False)
256
-            except QueueEmpty:
257
-                return
258
-            if location in seen:
259
-                continue
260
-            seen.add(location)
261
-            page = self._get_page(location, req)
262
-            if page is None:
263
-                continue
264
-            done.append(page)
265
-            for link in page.rel_links():
266
-                pending_queue.put(link)
267
-
268
-    _egg_fragment_re = re.compile(r'#egg=([^&]*)')
269
-    _egg_info_re = re.compile(r'([a-z0-9_.]+)-([a-z0-9_.-]+)', re.I)
270
-    _py_version_re = re.compile(r'-py([123]\.?[0-9]?)$')
271
-
272
-    def _sort_links(self, links):
273
-        "Returns elements of links in order, non-egg links first, egg links second, while eliminating duplicates"
274
-        eggs, no_eggs = [], []
275
-        seen = set()
276
-        for link in links:
277
-            if link not in seen:
278
-                seen.add(link)
279
-                if link.egg_fragment:
280
-                    eggs.append(link)
281
-                else:
282
-                    no_eggs.append(link)
283
-        return no_eggs + eggs
284
-
285
-    def _package_versions(self, links, search_name):
286
-        for link in self._sort_links(links):
287
-            for v in self._link_package_versions(link, search_name):
288
-                yield v
289
-
290
-    def _link_package_versions(self, link, search_name):
291
-        """
292
-        Return an iterable of triples (pkg_resources_version_key,
293
-        link, python_version) that can be extracted from the given
294
-        link.
295
-
296
-        Meant to be overridden by subclasses, not called by clients.
297
-        """
298
-        if link.egg_fragment:
299
-            egg_info = link.egg_fragment
300
-        else:
301
-            egg_info, ext = link.splitext()
302
-            if not ext:
303
-                if link not in self.logged_links:
304
-                    logger.debug('Skipping link %s; not a file' % link)
305
-                    self.logged_links.add(link)
306
-                return []
307
-            if egg_info.endswith('.tar'):
308
-                # Special double-extension case:
309
-                egg_info = egg_info[:-4]
310
-                ext = '.tar' + ext
311
-            if ext not in ('.tar.gz', '.tar.bz2', '.tar', '.tgz', '.zip'):
312
-                if link not in self.logged_links:
313
-                    logger.debug('Skipping link %s; unknown archive format: %s' % (link, ext))
314
-                    self.logged_links.add(link)
315
-                return []
316
-            if "macosx10" in link.path and ext == '.zip':
317
-                if link not in self.logged_links:
318
-                    logger.debug('Skipping link %s; macosx10 one' % (link))
319
-                    self.logged_links.add(link)
320
-                return []
321
-        version = self._egg_info_matches(egg_info, search_name, link)
322
-        if version is None:
323
-            logger.debug('Skipping link %s; wrong project name (not %s)' % (link, search_name))
324
-            return []
325
-        match = self._py_version_re.search(version)
326
-        if match:
327
-            version = version[:match.start()]
328
-            py_version = match.group(1)
329
-            if py_version != sys.version[:3]:
330
-                logger.debug('Skipping %s because Python version is incorrect' % link)
331
-                return []
332
-        logger.debug('Found link %s, version: %s' % (link, version))
333
-        return [(pkg_resources.parse_version(version),
334
-               link,
335
-               version)]
336
-
337
-    def _egg_info_matches(self, egg_info, search_name, link):
338
-        match = self._egg_info_re.search(egg_info)
339
-        if not match:
340
-            logger.debug('Could not parse version from link: %s' % link)
341
-            return None
342
-        name = match.group(0).lower()
343
-        # To match the "safe" name that pkg_resources creates:
344
-        name = name.replace('_', '-')
345
-        # project name and version must be separated by a dash
346
-        look_for = search_name.lower() + "-"
347
-        if name.startswith(look_for):
348
-            return match.group(0)[len(look_for):]
349
-        else:
350
-            return None
351
-
352
-    def _get_page(self, link, req):
353
-        return HTMLPage.get_page(link, req, cache=self.cache)
354
-
355
-    def _get_mirror_urls(self, mirrors=None, main_mirror_url=None):
356
-        """Retrieves a list of URLs from the main mirror DNS entry
357
-        unless a list of mirror URLs are passed.
358
-        """
359
-        if not mirrors:
360
-            mirrors = get_mirrors(main_mirror_url)
361
-            # Should this be made "less random"? E.g. netselect like?
362
-            random.shuffle(mirrors)
363
-
364
-        mirror_urls = set()
365
-        for mirror_url in mirrors:
366
-            mirror_url = mirror_url.rstrip('/')
367
-            # Make sure we have a valid URL
368
-            if not any([mirror_url.startswith(scheme) for scheme in ["http://", "https://", "file://"]]):
369
-                mirror_url = "http://%s" % mirror_url
370
-            if not mirror_url.endswith("/simple"):
371
-                mirror_url = "%s/simple" % mirror_url
372
-            mirror_urls.add(mirror_url + '/')
373
-
374
-        return list(mirror_urls)
375
-
376
-
377
-class PageCache(object):
378
-    """Cache of HTML pages"""
379
-
380
-    failure_limit = 3
381
-
382
-    def __init__(self):
383
-        self._failures = {}
384
-        self._pages = {}
385
-        self._archives = {}
386
-
387
-    def too_many_failures(self, url):
388
-        return self._failures.get(url, 0) >= self.failure_limit
389
-
390
-    def get_page(self, url):
391
-        return self._pages.get(url)
392
-
393
-    def is_archive(self, url):
394
-        return self._archives.get(url, False)
395
-
396
-    def set_is_archive(self, url, value=True):
397
-        self._archives[url] = value
398
-
399
-    def add_page_failure(self, url, level):
400
-        self._failures[url] = self._failures.get(url, 0)+level
401
-
402
-    def add_page(self, urls, page):
403
-        for url in urls:
404
-            self._pages[url] = page
405
-
406
-
407
-class HTMLPage(object):
408
-    """Represents one page, along with its URL"""
409
-
410
-    ## FIXME: these regexes are horrible hacks:
411
-    _homepage_re = re.compile(r'<th>\s*home\s*page', re.I)
412
-    _download_re = re.compile(r'<th>\s*download\s+url', re.I)
413
-    ## These aren't so aweful:
414
-    _rel_re = re.compile("""<[^>]*\srel\s*=\s*['"]?([^'">]+)[^>]*>""", re.I)
415
-    _href_re = re.compile('href=(?:"([^"]*)"|\'([^\']*)\'|([^>\\s\\n]*))', re.I|re.S)
416
-    _base_re = re.compile(r"""<base\s+href\s*=\s*['"]?([^'">]+)""", re.I)
417
-
418
-    def __init__(self, content, url, headers=None):
419
-        self.content = content
420
-        self.url = url
421
-        self.headers = headers
422
-
423
-    def __str__(self):
424
-        return self.url
425
-
426
-    @classmethod
427
-    def get_page(cls, link, req, cache=None, skip_archives=True):
428
-        url = link.url
429
-        url = url.split('#', 1)[0]
430
-        if cache.too_many_failures(url):
431
-            return None
432
-
433
-        # Check for VCS schemes that do not support lookup as web pages.
434
-        from pip.vcs import VcsSupport
435
-        for scheme in VcsSupport.schemes:
436
-            if url.lower().startswith(scheme) and url[len(scheme)] in '+:':
437
-                logger.debug('Cannot look at %(scheme)s URL %(link)s' % locals())
438
-                return None
439
-
440
-        if cache is not None:
441
-            inst = cache.get_page(url)
442
-            if inst is not None:
443
-                return inst
444
-        try:
445
-            if skip_archives:
446
-                if cache is not None:
447
-                    if cache.is_archive(url):
448
-                        return None
449
-                filename = link.filename
450
-                for bad_ext in ['.tar', '.tar.gz', '.tar.bz2', '.tgz', '.zip']:
451
-                    if filename.endswith(bad_ext):
452
-                        content_type = cls._get_content_type(url)
453
-                        if content_type.lower().startswith('text/html'):
454
-                            break
455
-                        else:
456
-                            logger.debug('Skipping page %s because of Content-Type: %s' % (link, content_type))
457
-                            if cache is not None:
458
-                                cache.set_is_archive(url)
459
-                            return None
460
-            logger.debug('Getting page %s' % url)
461
-
462
-            # Tack index.html onto file:// URLs that point to directories
463
-            (scheme, netloc, path, params, query, fragment) = urlparse.urlparse(url)
464
-            if scheme == 'file' and os.path.isdir(url2pathname(path)):
465
-                # add trailing slash if not present so urljoin doesn't trim final segment
466
-                if not url.endswith('/'):
467
-                    url += '/'
468
-                url = urlparse.urljoin(url, 'index.html')
469
-                logger.debug(' file: URL is directory, getting %s' % url)
470
-
471
-            resp = urlopen(url)
472
-
473
-            real_url = geturl(resp)
474
-            headers = resp.info()
475
-            contents = resp.read()
476
-            encoding = headers.get('Content-Encoding', None)
477
-            #XXX need to handle exceptions and add testing for this
478
-            if encoding is not None:
479
-                if encoding == 'gzip':
480
-                    contents = gzip.GzipFile(fileobj=BytesIO(contents)).read()
481
-                if encoding == 'deflate':
482
-                    contents = zlib.decompress(contents)
483
-            inst = cls(u(contents), real_url, headers)
484
-        except (HTTPError, URLError, socket.timeout, socket.error, OSError, WindowsError):
485
-            e = sys.exc_info()[1]
486
-            desc = str(e)
487
-            if isinstance(e, socket.timeout):
488
-                log_meth = logger.info
489
-                level =1
490
-                desc = 'timed out'
491
-            elif isinstance(e, URLError):
492
-                #ssl/certificate error
493
-                if ssl and hasattr(e, 'reason') and (isinstance(e.reason, ssl.SSLError) or isinstance(e.reason, CertificateError)):
494
-                    desc = 'There was a problem confirming the ssl certificate: %s' % e
495
-                    log_meth = logger.notify
496
-                else:
497
-                    log_meth = logger.info
498
-                if hasattr(e, 'reason') and isinstance(e.reason, socket.timeout):
499
-                    desc = 'timed out'
500
-                    level = 1
501
-                else:
502
-                    level = 2
503
-            elif isinstance(e, HTTPError) and e.code == 404:
504
-                ## FIXME: notify?
505
-                log_meth = logger.info
506
-                level = 2
507
-            else:
508
-                log_meth = logger.info
509
-                level = 1
510
-            log_meth('Could not fetch URL %s: %s' % (link, desc))
511
-            log_meth('Will skip URL %s when looking for download links for %s' % (link.url, req))
512
-            if cache is not None:
513
-                cache.add_page_failure(url, level)
514
-            return None
515
-        if cache is not None:
516
-            cache.add_page([url, real_url], inst)
517
-        return inst
518
-
519
-    @staticmethod
520
-    def _get_content_type(url):
521
-        """Get the Content-Type of the given url, using a HEAD request"""
522
-        scheme, netloc, path, query, fragment = urlparse.urlsplit(url)
523
-        if not scheme in ('http', 'https', 'ftp', 'ftps'):
524
-            ## FIXME: some warning or something?
525
-            ## assertion error?
526
-            return ''
527
-        req = Urllib2HeadRequest(url, headers={'Host': netloc})
528
-        resp = urlopen(req)
529
-        try:
530
-            if hasattr(resp, 'code') and resp.code != 200 and scheme not in ('ftp', 'ftps'):
531
-                ## FIXME: doesn't handle redirects
532
-                return ''
533
-            return resp.info().get('content-type', '')
534
-        finally:
535
-            resp.close()
536
-
537
-    @property
538
-    def base_url(self):
539
-        if not hasattr(self, "_base_url"):
540
-            match = self._base_re.search(self.content)
541
-            if match:
542
-                self._base_url = match.group(1)
543
-            else:
544
-                self._base_url = self.url
545
-        return self._base_url
546
-
547
-    @property
548
-    def links(self):
549
-        """Yields all links in the page"""
550
-        for match in self._href_re.finditer(self.content):
551
-            url = match.group(1) or match.group(2) or match.group(3)
552
-            url = self.clean_link(urlparse.urljoin(self.base_url, url))
553
-            yield Link(url, self)
554
-
555
-    def rel_links(self):
556
-        for url in self.explicit_rel_links():
557
-            yield url
558
-        for url in self.scraped_rel_links():
559
-            yield url
560
-
561
-    def explicit_rel_links(self, rels=('homepage', 'download')):
562
-        """Yields all links with the given relations"""
563
-        for match in self._rel_re.finditer(self.content):
564
-            found_rels = match.group(1).lower().split()
565
-            for rel in rels:
566
-                if rel in found_rels:
567
-                    break
568
-            else:
569
-                continue
570
-            match = self._href_re.search(match.group(0))
571
-            if not match:
572
-                continue
573
-            url = match.group(1) or match.group(2) or match.group(3)
574
-            url = self.clean_link(urlparse.urljoin(self.base_url, url))
575
-            yield Link(url, self)
576
-
577
-    def scraped_rel_links(self):
578
-        for regex in (self._homepage_re, self._download_re):
579
-            match = regex.search(self.content)
580
-            if not match:
581
-                continue
582
-            href_match = self._href_re.search(self.content, pos=match.end())
583
-            if not href_match:
584
-                continue
585
-            url = href_match.group(1) or href_match.group(2) or href_match.group(3)
586
-            if not url:
587
-                continue
588
-            url = self.clean_link(urlparse.urljoin(self.base_url, url))
589
-            yield Link(url, self)
590
-
591
-    _clean_re = re.compile(r'[^a-z0-9$&+,/:;=?@.#%_\\|-]', re.I)
592
-
593
-    def clean_link(self, url):
594
-        """Makes sure a link is fully encoded.  That is, if a ' ' shows up in
595
-        the link, it will be rewritten to %20 (while not over-quoting
596
-        % or other characters)."""
597
-        return self._clean_re.sub(
598
-            lambda match: '%%%2x' % ord(match.group(0)), url)
599
-
600
-
601
-class Link(object):
602
-
603
-    def __init__(self, url, comes_from=None):
604
-        self.url = url
605
-        self.comes_from = comes_from
606
-
607
-    def __str__(self):
608
-        if self.comes_from:
609
-            return '%s (from %s)' % (self.url, self.comes_from)
610
-        else:
611
-            return str(self.url)
612
-
613
-    def __repr__(self):
614
-        return '<Link %s>' % self
615
-
616
-    def __eq__(self, other):
617
-        return self.url == other.url
618
-
619
-    def __ne__(self, other):
620
-        return self.url != other.url
621
-
622
-    def __lt__(self, other):
623
-        return self.url < other.url
624
-
625
-    def __le__(self, other):
626
-        return self.url <= other.url
627
-
628
-    def __gt__(self, other):
629
-        return self.url > other.url
630
-
631
-    def __ge__(self, other):
632
-        return self.url >= other.url
633
-
634
-    def __hash__(self):
635
-        return hash(self.url)
636
-
637
-    @property
638
-    def filename(self):
639
-        _, netloc, path, _, _ = urlparse.urlsplit(self.url)
640
-        name = posixpath.basename(path.rstrip('/')) or netloc
641
-        assert name, ('URL %r produced no filename' % self.url)
642
-        return name
643
-
644
-    @property
645
-    def scheme(self):
646
-        return urlparse.urlsplit(self.url)[0]
647
-
648
-    @property
649
-    def path(self):
650
-        return urlparse.urlsplit(self.url)[2]
651
-
652
-    def splitext(self):
653
-        return splitext(posixpath.basename(self.path.rstrip('/')))
654
-
655
-    @property
656
-    def url_without_fragment(self):
657
-        scheme, netloc, path, query, fragment = urlparse.urlsplit(self.url)
658
-        return urlparse.urlunsplit((scheme, netloc, path, query, None))
659
-
660
-    _egg_fragment_re = re.compile(r'#egg=([^&]*)')
661
-
662
-    @property
663
-    def egg_fragment(self):
664
-        match = self._egg_fragment_re.search(self.url)
665
-        if not match:
666
-            return None
667
-        return match.group(1)
668
-
669
-    _hash_re = re.compile(r'(sha1|sha224|sha384|sha256|sha512|md5)=([a-f0-9]+)')
670
-
671
-    @property
672
-    def hash(self):
673
-        match = self._hash_re.search(self.url)
674
-        if match:
675
-            return match.group(2)
676
-        return None
677
-
678
-    @property
679
-    def hash_name(self):
680
-        match = self._hash_re.search(self.url)
681
-        if match:
682
-            return match.group(1)
683
-        return None
684
-
685
-    @property
686
-    def show_url(self):
687
-        return posixpath.basename(self.url.split('#', 1)[0].split('?', 1)[0])
688
-
689
-#An "Infinite Link" that compares greater than other links
690
-InfLink = Link(Inf) #this object is not currently used as a sortable
691
-
692
-
693
-def get_requirement_from_url(url):
694
-    """Get a requirement from the URL, if possible.  This looks for #egg
695
-    in the URL"""
696
-    link = Link(url)
697
-    egg_info = link.egg_fragment
698
-    if not egg_info:
699
-        egg_info = splitext(link.filename)[0]
700
-    return package_to_requirement(egg_info)
701
-
702
-
703
-def package_to_requirement(package_name):
704
-    """Translate a name like Foo-1.2 to Foo==1.3"""
705
-    match = re.search(r'^(.*?)-(dev|\d.*)', package_name)
706
-    if match:
707
-        name = match.group(1)
708
-        version = match.group(2)
709
-    else:
710
-        name = package_name
711
-        version = ''
712
-    if version:
713
-        return '%s==%s' % (name, version)
714
-    else:
715
-        return name
716
-
717
-
718
-def get_mirrors(hostname=None):
719
-    """Return the list of mirrors from the last record found on the DNS
720
-    entry::
721
-
722
-    >>> from pip.index import get_mirrors
723
-    >>> get_mirrors()
724
-    ['a.pypi.python.org', 'b.pypi.python.org', 'c.pypi.python.org',
725
-    'd.pypi.python.org']
726
-
727
-    Originally written for the distutils2 project by Alexis Metaireau.
728
-    """
729
-    if hostname is None:
730
-        hostname = DEFAULT_MIRROR_HOSTNAME
731
-
732
-    # return the last mirror registered on PyPI.
733
-    last_mirror_hostname = None
734
-    try:
735
-        last_mirror_hostname = socket.gethostbyname_ex(hostname)[0]
736
-    except socket.gaierror:
737
-        return []
738
-    if not last_mirror_hostname or last_mirror_hostname == DEFAULT_MIRROR_HOSTNAME:
739
-        last_mirror_hostname = "z.pypi.python.org"
740
-    end_letter = last_mirror_hostname.split(".", 1)
741
-
742
-    # determine the list from the last one.
743
-    return ["%s.%s" % (s, end_letter[1]) for s in string_range(end_letter[0])]
744
-
745
-
746
-def string_range(last):
747
-    """Compute the range of string between "a" and last.
748
-
749
-    This works for simple "a to z" lists, but also for "a to zz" lists.
750
-    """
751
-    for k in range(len(last)):
752
-        for x in product(string.ascii_lowercase, repeat=k+1):
753
-            result = ''.join(x)
754
-            yield result
755
-            if result == last:
756
-                return
757
-
758 0
deleted file mode 100644
759 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/index.pyc and /dev/null differ
760 2
deleted file mode 100644
... ...
@@ -1,100 +0,0 @@
1
-"""Locations where we look for configs, install stuff, etc"""
2
-
3
-import sys
4
-import site
5
-import os
6
-import tempfile
7
-import getpass
8
-from pip.backwardcompat import get_python_lib
9
-import pip.exceptions
10
-
11
-default_cert_path = os.path.join(os.path.dirname(__file__), 'cacert.pem')
12
-
13
-def running_under_virtualenv():
14
-    """
15
-    Return True if we're running inside a virtualenv, False otherwise.
16
-
17
-    """
18
-    return hasattr(sys, 'real_prefix')
19
-
20
-
21
-def virtualenv_no_global():
22
-    """
23
-    Return True if in a venv and no system site packages.
24
-    """
25
-    #this mirrors the logic in virtualenv.py for locating the no-global-site-packages.txt file
26
-    site_mod_dir = os.path.dirname(os.path.abspath(site.__file__))
27
-    no_global_file = os.path.join(site_mod_dir, 'no-global-site-packages.txt')
28
-    if running_under_virtualenv() and os.path.isfile(no_global_file):
29
-        return True
30
-
31
-def _get_build_prefix():
32
-    """ Returns a safe build_prefix """
33
-    path = os.path.join(tempfile.gettempdir(), 'pip-build-%s' % \
34
-        getpass.getuser())
35
-    if sys.platform == 'win32':
36
-        """ on windows(tested on 7) temp dirs are isolated """
37
-        return path
38
-    try:
39
-        os.mkdir(path)
40
-    except OSError:
41
-        file_uid = None
42
-        try:
43
-            fd = os.open(path, os.O_RDONLY | os.O_NOFOLLOW)
44
-            file_uid = os.fstat(fd).st_uid
45
-            os.close(fd)
46
-        except OSError:
47
-            file_uid = None
48
-        if file_uid != os.getuid():
49
-            msg = "The temporary folder for building (%s) is not owned by your user!" \
50
-                % path
51
-            print (msg)
52
-            print("pip will not work until the temporary folder is " + \
53
-                 "either deleted or owned by your user account.")
54
-            raise pip.exceptions.InstallationError(msg)
55
-    return path
56
-
57
-if running_under_virtualenv():
58
-    build_prefix = os.path.join(sys.prefix, 'build')
59
-    src_prefix = os.path.join(sys.prefix, 'src')
60
-else:
61
-    # Use tempfile to create a temporary folder for build
62
-    # Note: we are NOT using mkdtemp so we can have a consistent build dir
63
-    # Note: using realpath due to tmp dirs on OSX being symlinks
64
-    build_prefix = _get_build_prefix()
65
-
66
-    ## FIXME: keep src in cwd for now (it is not a temporary folder)
67
-    try:
68
-        src_prefix = os.path.join(os.getcwd(), 'src')
69
-    except OSError:
70
-        # In case the current working directory has been renamed or deleted
71
-        sys.exit("The folder you are executing pip from can no longer be found.")
72
-
73
-# under Mac OS X + virtualenv sys.prefix is not properly resolved
74
-# it is something like /path/to/python/bin/..
75
-build_prefix = os.path.abspath(os.path.realpath(build_prefix))
76
-src_prefix = os.path.abspath(src_prefix)
77
-
78
-# FIXME doesn't account for venv linked to global site-packages
79
-
80
-site_packages = get_python_lib()
81
-user_dir = os.path.expanduser('~')
82
-if sys.platform == 'win32':
83
-    bin_py = os.path.join(sys.prefix, 'Scripts')
84
-    # buildout uses 'bin' on Windows too?
85
-    if not os.path.exists(bin_py):
86
-        bin_py = os.path.join(sys.prefix, 'bin')
87
-    default_storage_dir = os.path.join(user_dir, 'pip')
88
-    default_config_file = os.path.join(default_storage_dir, 'pip.ini')
89
-    default_log_file = os.path.join(default_storage_dir, 'pip.log')
90
-else:
91
-    bin_py = os.path.join(sys.prefix, 'bin')
92
-    default_storage_dir = os.path.join(user_dir, '.pip')
93
-    default_config_file = os.path.join(default_storage_dir, 'pip.conf')
94
-    default_log_file = os.path.join(default_storage_dir, 'pip.log')
95
-
96
-    # Forcing to use /usr/local/bin for standard Mac OS X framework installs
97
-    # Also log to ~/Library/Logs/ for use with the Console.app log viewer
98
-    if sys.platform[:6] == 'darwin' and sys.prefix[:16] == '/System/Library/':
99
-        bin_py = '/usr/local/bin'
100
-        default_log_file = os.path.join(user_dir, 'Library/Logs/pip.log')
101 0
deleted file mode 100644
102 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/locations.pyc and /dev/null differ
103 2
deleted file mode 100644
... ...
@@ -1,187 +0,0 @@
1
-"""Logging
2
-"""
3
-
4
-import sys
5
-import logging
6
-
7
-from pip import backwardcompat
8
-
9
-
10
-class Logger(object):
11
-    """
12
-    Logging object for use in command-line script.  Allows ranges of
13
-    levels, to avoid some redundancy of displayed information.
14
-    """
15
-    VERBOSE_DEBUG = logging.DEBUG - 1
16
-    DEBUG = logging.DEBUG
17
-    INFO = logging.INFO
18
-    NOTIFY = (logging.INFO + logging.WARN) / 2
19
-    WARN = WARNING = logging.WARN
20
-    ERROR = logging.ERROR
21
-    FATAL = logging.FATAL
22
-
23
-    LEVELS = [VERBOSE_DEBUG, DEBUG, INFO, NOTIFY, WARN, ERROR, FATAL]
24
-
25
-    def __init__(self):
26
-        self.consumers = []
27
-        self.indent = 0
28
-        self.explicit_levels = False
29
-        self.in_progress = None
30
-        self.in_progress_hanging = False
31
-
32
-    def debug(self, msg, *args, **kw):
33
-        self.log(self.DEBUG, msg, *args, **kw)
34
-
35
-    def info(self, msg, *args, **kw):
36
-        self.log(self.INFO, msg, *args, **kw)
37
-
38
-    def notify(self, msg, *args, **kw):
39
-        self.log(self.NOTIFY, msg, *args, **kw)
40
-
41
-    def warn(self, msg, *args, **kw):
42
-        self.log(self.WARN, msg, *args, **kw)
43
-
44
-    def error(self, msg, *args, **kw):
45
-        self.log(self.WARN, msg, *args, **kw)
46
-
47
-    def fatal(self, msg, *args, **kw):
48
-        self.log(self.FATAL, msg, *args, **kw)
49
-
50
-    def log(self, level, msg, *args, **kw):
51
-        if args:
52
-            if kw:
53
-                raise TypeError(
54
-                    "You may give positional or keyword arguments, not both")
55
-        args = args or kw
56
-        rendered = None
57
-        for consumer_level, consumer in self.consumers:
58
-            if self.level_matches(level, consumer_level):
59
-                if (self.in_progress_hanging
60
-                    and consumer in (sys.stdout, sys.stderr)):
61
-                    self.in_progress_hanging = False
62
-                    sys.stdout.write('\n')
63
-                    sys.stdout.flush()
64
-                if rendered is None:
65
-                    if args:
66
-                        rendered = msg % args
67
-                    else:
68
-                        rendered = msg
69
-                    rendered = ' ' * self.indent + rendered
70
-                    if self.explicit_levels:
71
-                        ## FIXME: should this be a name, not a level number?
72
-                        rendered = '%02i %s' % (level, rendered)
73
-                if hasattr(consumer, 'write'):
74
-                    rendered += '\n'
75
-                    backwardcompat.fwrite(consumer, rendered)
76
-                else:
77
-                    consumer(rendered)
78
-
79
-    def _show_progress(self):
80
-        """Should we display download progress?"""
81
-        return (self.stdout_level_matches(self.NOTIFY) and sys.stdout.isatty())
82
-
83
-    def start_progress(self, msg):
84
-        assert not self.in_progress, (
85
-            "Tried to start_progress(%r) while in_progress %r"
86
-            % (msg, self.in_progress))
87
-        if self._show_progress():
88
-            sys.stdout.write(' ' * self.indent + msg)
89
-            sys.stdout.flush()
90
-            self.in_progress_hanging = True
91
-        else:
92
-            self.in_progress_hanging = False
93
-        self.in_progress = msg
94
-        self.last_message = None
95
-
96
-    def end_progress(self, msg='done.'):
97
-        assert self.in_progress, (
98
-            "Tried to end_progress without start_progress")
99
-        if self._show_progress():
100
-            if not self.in_progress_hanging:
101
-                # Some message has been printed out since start_progress
102
-                sys.stdout.write('...' + self.in_progress + msg + '\n')
103
-                sys.stdout.flush()
104
-            else:
105
-                # These erase any messages shown with show_progress (besides .'s)
106
-                logger.show_progress('')
107
-                logger.show_progress('')
108
-                sys.stdout.write(msg + '\n')
109
-                sys.stdout.flush()
110
-        self.in_progress = None
111
-        self.in_progress_hanging = False
112
-
113
-    def show_progress(self, message=None):
114
-        """If we are in a progress scope, and no log messages have been
115
-        shown, write out another '.'"""
116
-        if self.in_progress_hanging:
117
-            if message is None:
118
-                sys.stdout.write('.')
119
-                sys.stdout.flush()
120
-            else:
121
-                if self.last_message:
122
-                    padding = ' ' * max(0, len(self.last_message) - len(message))
123
-                else:
124
-                    padding = ''
125
-                sys.stdout.write('\r%s%s%s%s' %
126
-                                (' ' * self.indent, self.in_progress, message, padding))
127
-                sys.stdout.flush()
128
-                self.last_message = message
129
-
130
-    def stdout_level_matches(self, level):
131
-        """Returns true if a message at this level will go to stdout"""
132
-        return self.level_matches(level, self._stdout_level())
133
-
134
-    def _stdout_level(self):
135
-        """Returns the level that stdout runs at"""
136
-        for level, consumer in self.consumers:
137
-            if consumer is sys.stdout:
138
-                return level
139
-        return self.FATAL
140
-
141
-    def level_matches(self, level, consumer_level):
142
-        """
143
-        >>> l = Logger()
144
-        >>> l.level_matches(3, 4)
145
-        False
146
-        >>> l.level_matches(3, 2)
147
-        True
148
-        >>> l.level_matches(slice(None, 3), 3)
149
-        False
150
-        >>> l.level_matches(slice(None, 3), 2)
151
-        True
152
-        >>> l.level_matches(slice(1, 3), 1)
153
-        True
154
-        >>> l.level_matches(slice(2, 3), 1)
155
-        False
156
-        """
157
-        if isinstance(level, slice):
158
-            start, stop = level.start, level.stop
159
-            if start is not None and start > consumer_level:
160
-                return False
161
-            if stop is not None or stop <= consumer_level:
162
-                return False
163
-            return True
164
-        else:
165
-            return level >= consumer_level
166
-
167
-    @classmethod
168
-    def level_for_integer(cls, level):
169
-        levels = cls.LEVELS
170
-        if level < 0:
171
-            return levels[0]
172
-        if level >= len(levels):
173
-            return levels[-1]
174
-        return levels[level]
175
-
176
-    def move_stdout_to_stderr(self):
177
-        to_remove = []
178
-        to_add = []
179
-        for consumer_level, consumer in self.consumers:
180
-            if consumer == sys.stdout:
181
-                to_remove.append((consumer_level, consumer))
182
-                to_add.append((consumer_level, sys.stderr))
183
-        for item in to_remove:
184
-            self.consumers.remove(item)
185
-        self.consumers.extend(to_add)
186
-
187
-logger = Logger()
188 0
deleted file mode 100644
189 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/log.pyc and /dev/null differ
190 2
deleted file mode 100644
... ...
@@ -1,1613 +0,0 @@
1
-from email.parser import FeedParser
2
-import os
3
-import imp
4
-import pkg_resources
5
-import re
6
-import sys
7
-import shutil
8
-import tempfile
9
-import zipfile
10
-
11
-from distutils.util import change_root
12
-from pip.locations import bin_py, running_under_virtualenv
13
-from pip.exceptions import (InstallationError, UninstallationError,
14
-                            BestVersionAlreadyInstalled,
15
-                            DistributionNotFound)
16
-from pip.vcs import vcs
17
-from pip.log import logger
18
-from pip.util import (display_path, rmtree, ask, ask_path_exists, backup_dir,
19
-                      is_installable_dir, is_local, dist_is_local,
20
-                      dist_in_usersite, dist_in_site_packages, renames,
21
-                      normalize_path, egg_link_path, make_path_relative,
22
-                      call_subprocess)
23
-from pip.backwardcompat import (urlparse, urllib, uses_pycache,
24
-                                ConfigParser, string_types, HTTPError,
25
-                                get_python_version, b)
26
-from pip.index import Link
27
-from pip.locations import build_prefix
28
-from pip.download import (get_file_content, is_url, url_to_path,
29
-                          path_to_url, is_archive_file,
30
-                          unpack_vcs_link, is_vcs_url, is_file_url,
31
-                          unpack_file_url, unpack_http_url)
32
-
33
-
34
-PIP_DELETE_MARKER_FILENAME = 'pip-delete-this-directory.txt'
35
-
36
-
37
-class InstallRequirement(object):
38
-
39
-    def __init__(self, req, comes_from, source_dir=None, editable=False,
40
-                 url=None, as_egg=False, update=True):
41
-        self.extras = ()
42
-        if isinstance(req, string_types):
43
-            req = pkg_resources.Requirement.parse(req)
44
-            self.extras = req.extras
45
-        self.req = req
46
-        self.comes_from = comes_from
47
-        self.source_dir = source_dir
48
-        self.editable = editable
49
-        self.url = url
50
-        self.as_egg = as_egg
51
-        self._egg_info_path = None
52
-        # This holds the pkg_resources.Distribution object if this requirement
53
-        # is already available:
54
-        self.satisfied_by = None
55
-        # This hold the pkg_resources.Distribution object if this requirement
56
-        # conflicts with another installed distribution:
57
-        self.conflicts_with = None
58
-        self._temp_build_dir = None
59
-        self._is_bundle = None
60
-        # True if the editable should be updated:
61
-        self.update = update
62
-        # Set to True after successful installation
63
-        self.install_succeeded = None
64
-        # UninstallPathSet of uninstalled distribution (for possible rollback)
65
-        self.uninstalled = None
66
-        self.use_user_site = False
67
-
68
-    @classmethod
69
-    def from_editable(cls, editable_req, comes_from=None, default_vcs=None):
70
-        name, url, extras_override = parse_editable(editable_req, default_vcs)
71
-        if url.startswith('file:'):
72
-            source_dir = url_to_path(url)
73
-        else:
74
-            source_dir = None
75
-
76
-        res = cls(name, comes_from, source_dir=source_dir, editable=True, url=url)
77
-
78
-        if extras_override is not None:
79
-            res.extras = extras_override
80
-
81
-        return res
82
-
83
-    @classmethod
84
-    def from_line(cls, name, comes_from=None):
85
-        """Creates an InstallRequirement from a name, which might be a
86
-        requirement, directory containing 'setup.py', filename, or URL.
87
-        """
88
-        url = None
89
-        name = name.strip()
90
-        req = None
91
-        path = os.path.normpath(os.path.abspath(name))
92
-        link = None
93
-
94
-        if is_url(name):
95
-            link = Link(name)
96
-        elif os.path.isdir(path) and (os.path.sep in name or name.startswith('.')):
97
-            if not is_installable_dir(path):
98
-                raise InstallationError("Directory %r is not installable. File 'setup.py' not found." % name)
99
-            link = Link(path_to_url(name))
100
-        elif is_archive_file(path):
101
-            if not os.path.isfile(path):
102
-                logger.warn('Requirement %r looks like a filename, but the file does not exist', name)
103
-            link = Link(path_to_url(name))
104
-
105
-        # If the line has an egg= definition, but isn't editable, pull the requirement out.
106
-        # Otherwise, assume the name is the req for the non URL/path/archive case.
107
-        if link and req is None:
108
-            url = link.url_without_fragment
109
-            req = link.egg_fragment  #when fragment is None, this will become an 'unnamed' requirement
110
-
111
-            # Handle relative file URLs
112
-            if link.scheme == 'file' and re.search(r'\.\./', url):
113
-                url = path_to_url(os.path.normpath(os.path.abspath(link.path)))
114
-
115
-        else:
116
-            req = name
117
-
118
-        return cls(req, comes_from, url=url)
119
-
120
-    def __str__(self):
121
-        if self.req:
122
-            s = str(self.req)
123
-            if self.url:
124
-                s += ' from %s' % self.url
125
-        else:
126
-            s = self.url
127
-        if self.satisfied_by is not None:
128
-            s += ' in %s' % display_path(self.satisfied_by.location)
129
-        if self.comes_from:
130
-            if isinstance(self.comes_from, string_types):
131
-                comes_from = self.comes_from
132
-            else:
133
-                comes_from = self.comes_from.from_path()
134
-            if comes_from:
135
-                s += ' (from %s)' % comes_from
136
-        return s
137
-
138
-    def from_path(self):
139
-        if self.req is None:
140
-            return None
141
-        s = str(self.req)
142
-        if self.comes_from:
143
-            if isinstance(self.comes_from, string_types):
144
-                comes_from = self.comes_from
145
-            else:
146
-                comes_from = self.comes_from.from_path()
147
-            if comes_from:
148
-                s += '->' + comes_from
149
-        return s
150
-
151
-    def build_location(self, build_dir, unpack=True):
152
-        if self._temp_build_dir is not None:
153
-            return self._temp_build_dir
154
-        if self.req is None:
155
-            self._temp_build_dir = tempfile.mkdtemp('-build', 'pip-')
156
-            self._ideal_build_dir = build_dir
157
-            return self._temp_build_dir
158
-        if self.editable:
159
-            name = self.name.lower()
160
-        else:
161
-            name = self.name
162
-        # FIXME: Is there a better place to create the build_dir? (hg and bzr need this)
163
-        if not os.path.exists(build_dir):
164
-            _make_build_dir(build_dir)
165
-        return os.path.join(build_dir, name)
166
-
167
-    def correct_build_location(self):
168
-        """If the build location was a temporary directory, this will move it
169
-        to a new more permanent location"""
170
-        if self.source_dir is not None:
171
-            return
172
-        assert self.req is not None
173
-        assert self._temp_build_dir
174
-        old_location = self._temp_build_dir
175
-        new_build_dir = self._ideal_build_dir
176
-        del self._ideal_build_dir
177
-        if self.editable:
178
-            name = self.name.lower()
179
-        else:
180
-            name = self.name
181
-        new_location = os.path.join(new_build_dir, name)
182
-        if not os.path.exists(new_build_dir):
183
-            logger.debug('Creating directory %s' % new_build_dir)
184
-            _make_build_dir(new_build_dir)
185
-        if os.path.exists(new_location):
186
-            raise InstallationError(
187
-                'A package already exists in %s; please remove it to continue'
188
-                % display_path(new_location))
189
-        logger.debug('Moving package %s from %s to new location %s'
190
-                     % (self, display_path(old_location), display_path(new_location)))
191
-        shutil.move(old_location, new_location)
192
-        self._temp_build_dir = new_location
193
-        self.source_dir = new_location
194
-        self._egg_info_path = None
195
-
196
-    @property
197
-    def name(self):
198
-        if self.req is None:
199
-            return None
200
-        return self.req.project_name
201
-
202
-    @property
203
-    def url_name(self):
204
-        if self.req is None:
205
-            return None
206
-        return urllib.quote(self.req.unsafe_name)
207
-
208
-    @property
209
-    def setup_py(self):
210
-        return os.path.join(self.source_dir, 'setup.py')
211
-
212
-    def run_egg_info(self, force_root_egg_info=False):
213
-        assert self.source_dir
214
-        if self.name:
215
-            logger.notify('Running setup.py egg_info for package %s' % self.name)
216
-        else:
217
-            logger.notify('Running setup.py egg_info for package from %s' % self.url)
218
-        logger.indent += 2
219
-        try:
220
-            script = self._run_setup_py
221
-            script = script.replace('__SETUP_PY__', repr(self.setup_py))
222
-            script = script.replace('__PKG_NAME__', repr(self.name))
223
-            # We can't put the .egg-info files at the root, because then the source code will be mistaken
224
-            # for an installed egg, causing problems
225
-            if self.editable or force_root_egg_info:
226
-                egg_base_option = []
227
-            else:
228
-                egg_info_dir = os.path.join(self.source_dir, 'pip-egg-info')
229
-                if not os.path.exists(egg_info_dir):
230
-                    os.makedirs(egg_info_dir)
231
-                egg_base_option = ['--egg-base', 'pip-egg-info']
232
-            call_subprocess(
233
-                [sys.executable, '-c', script, 'egg_info'] + egg_base_option,
234
-                cwd=self.source_dir, filter_stdout=self._filter_install, show_stdout=False,
235
-                command_level=logger.VERBOSE_DEBUG,
236
-                command_desc='python setup.py egg_info')
237
-        finally:
238
-            logger.indent -= 2
239
-        if not self.req:
240
-            self.req = pkg_resources.Requirement.parse(
241
-                "%(Name)s==%(Version)s" % self.pkg_info())
242
-            self.correct_build_location()
243
-
244
-    ## FIXME: This is a lame hack, entirely for PasteScript which has
245
-    ## a self-provided entry point that causes this awkwardness
246
-    _run_setup_py = """
247
-__file__ = __SETUP_PY__
248
-from setuptools.command import egg_info
249
-import pkg_resources
250
-import os
251
-def replacement_run(self):
252
-    self.mkpath(self.egg_info)
253
-    installer = self.distribution.fetch_build_egg
254
-    for ep in pkg_resources.iter_entry_points('egg_info.writers'):
255
-        # require=False is the change we're making:
256
-        writer = ep.load(require=False)
257
-        if writer:
258
-            writer(self, ep.name, os.path.join(self.egg_info,ep.name))
259
-    self.find_sources()
260
-egg_info.egg_info.run = replacement_run
261
-exec(compile(open(__file__).read().replace('\\r\\n', '\\n'), __file__, 'exec'))
262
-"""
263
-
264
-    def egg_info_data(self, filename):
265
-        if self.satisfied_by is not None:
266
-            if not self.satisfied_by.has_metadata(filename):
267
-                return None
268
-            return self.satisfied_by.get_metadata(filename)
269
-        assert self.source_dir
270
-        filename = self.egg_info_path(filename)
271
-        if not os.path.exists(filename):
272
-            return None
273
-        fp = open(filename, 'r')
274
-        data = fp.read()
275
-        fp.close()
276
-        return data
277
-
278
-    def egg_info_path(self, filename):
279
-        if self._egg_info_path is None:
280
-            if self.editable:
281
-                base = self.source_dir
282
-            else:
283
-                base = os.path.join(self.source_dir, 'pip-egg-info')
284
-            filenames = os.listdir(base)
285
-            if self.editable:
286
-                filenames = []
287
-                for root, dirs, files in os.walk(base):
288
-                    for dir in vcs.dirnames:
289
-                        if dir in dirs:
290
-                            dirs.remove(dir)
291
-                    # Iterate over a copy of ``dirs``, since mutating
292
-                    # a list while iterating over it can cause trouble.
293
-                    # (See https://github.com/pypa/pip/pull/462.)
294
-                    for dir in list(dirs):
295
-                        # Don't search in anything that looks like a virtualenv environment
296
-                        if (os.path.exists(os.path.join(root, dir, 'bin', 'python'))
297
-                            or os.path.exists(os.path.join(root, dir, 'Scripts', 'Python.exe'))):
298
-                            dirs.remove(dir)
299
-                        # Also don't search through tests
300
-                        if dir == 'test' or dir == 'tests':
301
-                            dirs.remove(dir)
302
-                    filenames.extend([os.path.join(root, dir)
303
-                                     for dir in dirs])
304
-                filenames = [f for f in filenames if f.endswith('.egg-info')]
305
-
306
-            if not filenames:
307
-                raise InstallationError('No files/directories in %s (from %s)' % (base, filename))
308
-            assert filenames, "No files/directories in %s (from %s)" % (base, filename)
309
-
310
-            # if we have more than one match, we pick the toplevel one.  This can
311
-            # easily be the case if there is a dist folder which contains an
312
-            # extracted tarball for testing purposes.
313
-            if len(filenames) > 1:
314
-                filenames.sort(key=lambda x: x.count(os.path.sep) +
315
-                                             (os.path.altsep and
316
-                                              x.count(os.path.altsep) or 0))
317
-            self._egg_info_path = os.path.join(base, filenames[0])
318
-        return os.path.join(self._egg_info_path, filename)
319
-
320
-    def egg_info_lines(self, filename):
321
-        data = self.egg_info_data(filename)
322
-        if not data:
323
-            return []
324
-        result = []
325
-        for line in data.splitlines():
326
-            line = line.strip()
327
-            if not line or line.startswith('#'):
328
-                continue
329
-            result.append(line)
330
-        return result
331
-
332
-    def pkg_info(self):
333
-        p = FeedParser()
334
-        data = self.egg_info_data('PKG-INFO')
335
-        if not data:
336
-            logger.warn('No PKG-INFO file found in %s' % display_path(self.egg_info_path('PKG-INFO')))
337
-        p.feed(data or '')
338
-        return p.close()
339
-
340
-    @property
341
-    def dependency_links(self):
342
-        return self.egg_info_lines('dependency_links.txt')
343
-
344
-    _requirements_section_re = re.compile(r'\[(.*?)\]')
345
-
346
-    def requirements(self, extras=()):
347
-        in_extra = None
348
-        for line in self.egg_info_lines('requires.txt'):
349
-            match = self._requirements_section_re.match(line.lower())
350
-            if match:
351
-                in_extra = match.group(1)
352
-                continue
353
-            if in_extra and in_extra not in extras:
354
-                logger.debug('skipping extra %s' % in_extra)
355
-                # Skip requirement for an extra we aren't requiring
356
-                continue
357
-            yield line
358
-
359
-    @property
360
-    def absolute_versions(self):
361
-        for qualifier, version in self.req.specs:
362
-            if qualifier == '==':
363
-                yield version
364
-
365
-    @property
366
-    def installed_version(self):
367
-        return self.pkg_info()['version']
368
-
369
-    def assert_source_matches_version(self):
370
-        assert self.source_dir
371
-        version = self.installed_version
372
-        if version not in self.req:
373
-            logger.warn('Requested %s, but installing version %s' % (self, self.installed_version))
374
-        else:
375
-            logger.debug('Source in %s has version %s, which satisfies requirement %s'
376
-                         % (display_path(self.source_dir), version, self))
377
-
378
-    def update_editable(self, obtain=True):
379
-        if not self.url:
380
-            logger.info("Cannot update repository at %s; repository location is unknown" % self.source_dir)
381
-            return
382
-        assert self.editable
383
-        assert self.source_dir
384
-        if self.url.startswith('file:'):
385
-            # Static paths don't get updated
386
-            return
387
-        assert '+' in self.url, "bad url: %r" % self.url
388
-        if not self.update:
389
-            return
390
-        vc_type, url = self.url.split('+', 1)
391
-        backend = vcs.get_backend(vc_type)
392
-        if backend:
393
-            vcs_backend = backend(self.url)
394
-            if obtain:
395
-                vcs_backend.obtain(self.source_dir)
396
-            else:
397
-                vcs_backend.export(self.source_dir)
398
-        else:
399
-            assert 0, (
400
-                'Unexpected version control type (in %s): %s'
401
-                % (self.url, vc_type))
402
-
403
-    def uninstall(self, auto_confirm=False):
404
-        """
405
-        Uninstall the distribution currently satisfying this requirement.
406
-
407
-        Prompts before removing or modifying files unless
408
-        ``auto_confirm`` is True.
409
-
410
-        Refuses to delete or modify files outside of ``sys.prefix`` -
411
-        thus uninstallation within a virtual environment can only
412
-        modify that virtual environment, even if the virtualenv is
413
-        linked to global site-packages.
414
-
415
-        """
416
-        if not self.check_if_exists():
417
-            raise UninstallationError("Cannot uninstall requirement %s, not installed" % (self.name,))
418
-        dist = self.satisfied_by or self.conflicts_with
419
-
420
-        paths_to_remove = UninstallPathSet(dist)
421
-
422
-        pip_egg_info_path = os.path.join(dist.location,
423
-                                         dist.egg_name()) + '.egg-info'
424
-        # workaround for http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=618367
425
-        debian_egg_info_path = pip_egg_info_path.replace(
426
-            '-py%s' % pkg_resources.PY_MAJOR, '')
427
-        easy_install_egg = dist.egg_name() + '.egg'
428
-        develop_egg_link = egg_link_path(dist)
429
-
430
-        pip_egg_info_exists = os.path.exists(pip_egg_info_path)
431
-        debian_egg_info_exists = os.path.exists(debian_egg_info_path)
432
-        if pip_egg_info_exists or debian_egg_info_exists:
433
-            # package installed by pip
434
-            if pip_egg_info_exists:
435
-                egg_info_path = pip_egg_info_path
436
-            else:
437
-                egg_info_path = debian_egg_info_path
438
-            paths_to_remove.add(egg_info_path)
439
-            if dist.has_metadata('installed-files.txt'):
440
-                for installed_file in dist.get_metadata('installed-files.txt').splitlines():
441
-                    path = os.path.normpath(os.path.join(egg_info_path, installed_file))
442
-                    paths_to_remove.add(path)
443
-            #FIXME: need a test for this elif block
444
-            #occurs with --single-version-externally-managed/--record outside of pip
445
-            elif dist.has_metadata('top_level.txt'):
446
-                if dist.has_metadata('namespace_packages.txt'):
447
-                    namespaces = dist.get_metadata('namespace_packages.txt')
448
-                else:
449
-                    namespaces = []
450
-                for top_level_pkg in [p for p
451
-                                      in dist.get_metadata('top_level.txt').splitlines()
452
-                                      if p and p not in namespaces]:
453
-                    path = os.path.join(dist.location, top_level_pkg)
454
-                    paths_to_remove.add(path)
455
-                    paths_to_remove.add(path + '.py')
456
-                    paths_to_remove.add(path + '.pyc')
457
-
458
-        elif dist.location.endswith(easy_install_egg):
459
-            # package installed by easy_install
460
-            paths_to_remove.add(dist.location)
461
-            easy_install_pth = os.path.join(os.path.dirname(dist.location),
462
-                                            'easy-install.pth')
463
-            paths_to_remove.add_pth(easy_install_pth, './' + easy_install_egg)
464
-
465
-        elif develop_egg_link:
466
-            # develop egg
467
-            fh = open(develop_egg_link, 'r')
468
-            link_pointer = os.path.normcase(fh.readline().strip())
469
-            fh.close()
470
-            assert (link_pointer == dist.location), 'Egg-link %s does not match installed location of %s (at %s)' % (link_pointer, self.name, dist.location)
471
-            paths_to_remove.add(develop_egg_link)
472
-            easy_install_pth = os.path.join(os.path.dirname(develop_egg_link),
473
-                                            'easy-install.pth')
474
-            paths_to_remove.add_pth(easy_install_pth, dist.location)
475
-
476
-        # find distutils scripts= scripts
477
-        if dist.has_metadata('scripts') and dist.metadata_isdir('scripts'):
478
-            for script in dist.metadata_listdir('scripts'):
479
-                paths_to_remove.add(os.path.join(bin_py, script))
480
-                if sys.platform == 'win32':
481
-                    paths_to_remove.add(os.path.join(bin_py, script) + '.bat')
482
-
483
-        # find console_scripts
484
-        if dist.has_metadata('entry_points.txt'):
485
-            config = ConfigParser.SafeConfigParser()
486
-            config.readfp(FakeFile(dist.get_metadata_lines('entry_points.txt')))
487
-            if config.has_section('console_scripts'):
488
-                for name, value in config.items('console_scripts'):
489
-                    paths_to_remove.add(os.path.join(bin_py, name))
490
-                    if sys.platform == 'win32':
491
-                        paths_to_remove.add(os.path.join(bin_py, name) + '.exe')
492
-                        paths_to_remove.add(os.path.join(bin_py, name) + '.exe.manifest')
493
-                        paths_to_remove.add(os.path.join(bin_py, name) + '-script.py')
494
-
495
-        paths_to_remove.remove(auto_confirm)
496
-        self.uninstalled = paths_to_remove
497
-
498
-    def rollback_uninstall(self):
499
-        if self.uninstalled:
500
-            self.uninstalled.rollback()
501
-        else:
502
-            logger.error("Can't rollback %s, nothing uninstalled."
503
-                         % (self.project_name,))
504
-
505
-    def commit_uninstall(self):
506
-        if self.uninstalled:
507
-            self.uninstalled.commit()
508
-        else:
509
-            logger.error("Can't commit %s, nothing uninstalled."
510
-                         % (self.project_name,))
511
-
512
-    def archive(self, build_dir):
513
-        assert self.source_dir
514
-        create_archive = True
515
-        archive_name = '%s-%s.zip' % (self.name, self.installed_version)
516
-        archive_path = os.path.join(build_dir, archive_name)
517
-        if os.path.exists(archive_path):
518
-            response = ask_path_exists(
519
-                'The file %s exists. (i)gnore, (w)ipe, (b)ackup ' %
520
-                display_path(archive_path), ('i', 'w', 'b'))
521
-            if response == 'i':
522
-                create_archive = False
523
-            elif response == 'w':
524
-                logger.warn('Deleting %s' % display_path(archive_path))
525
-                os.remove(archive_path)
526
-            elif response == 'b':
527
-                dest_file = backup_dir(archive_path)
528
-                logger.warn('Backing up %s to %s'
529
-                            % (display_path(archive_path), display_path(dest_file)))
530
-                shutil.move(archive_path, dest_file)
531
-        if create_archive:
532
-            zip = zipfile.ZipFile(archive_path, 'w', zipfile.ZIP_DEFLATED)
533
-            dir = os.path.normcase(os.path.abspath(self.source_dir))
534
-            for dirpath, dirnames, filenames in os.walk(dir):
535
-                if 'pip-egg-info' in dirnames:
536
-                    dirnames.remove('pip-egg-info')
537
-                for dirname in dirnames:
538
-                    dirname = os.path.join(dirpath, dirname)
539
-                    name = self._clean_zip_name(dirname, dir)
540
-                    zipdir = zipfile.ZipInfo(self.name + '/' + name + '/')
541
-                    zipdir.external_attr = 0x1ED << 16 # 0o755
542
-                    zip.writestr(zipdir, '')
543
-                for filename in filenames:
544
-                    if filename == PIP_DELETE_MARKER_FILENAME:
545
-                        continue
546
-                    filename = os.path.join(dirpath, filename)
547
-                    name = self._clean_zip_name(filename, dir)
548
-                    zip.write(filename, self.name + '/' + name)
549
-            zip.close()
550
-            logger.indent -= 2
551
-            logger.notify('Saved %s' % display_path(archive_path))
552
-
553
-    def _clean_zip_name(self, name, prefix):
554
-        assert name.startswith(prefix+os.path.sep), (
555
-            "name %r doesn't start with prefix %r" % (name, prefix))
556
-        name = name[len(prefix)+1:]
557
-        name = name.replace(os.path.sep, '/')
558
-        return name
559
-
560
-    def install(self, install_options, global_options=(), root=None):
561
-        if self.editable:
562
-            self.install_editable(install_options, global_options)
563
-            return
564
-
565
-        temp_location = tempfile.mkdtemp('-record', 'pip-')
566
-        record_filename = os.path.join(temp_location, 'install-record.txt')
567
-        try:
568
-            install_args = [
569
-                sys.executable, '-c',
570
-                "import setuptools;__file__=%r;"\
571
-                "exec(compile(open(__file__).read().replace('\\r\\n', '\\n'), __file__, 'exec'))" % self.setup_py] +\
572
-                list(global_options) + [
573
-                'install',
574
-                '--record', record_filename]
575
-
576
-            if not self.as_egg:
577
-                install_args += ['--single-version-externally-managed']
578
-
579
-            if root is not None:
580
-                install_args += ['--root', root]
581
-
582
-            if running_under_virtualenv():
583
-                ## FIXME: I'm not sure if this is a reasonable location; probably not
584
-                ## but we can't put it in the default location, as that is a virtualenv symlink that isn't writable
585
-                install_args += ['--install-headers',
586
-                                 os.path.join(sys.prefix, 'include', 'site',
587
-                                              'python' + get_python_version())]
588
-            logger.notify('Running setup.py install for %s' % self.name)
589
-            logger.indent += 2
590
-            try:
591
-                call_subprocess(install_args + install_options,
592
-                    cwd=self.source_dir, filter_stdout=self._filter_install, show_stdout=False)
593
-            finally:
594
-                logger.indent -= 2
595
-            if not os.path.exists(record_filename):
596
-                logger.notify('Record file %s not found' % record_filename)
597
-                return
598
-            self.install_succeeded = True
599
-            if self.as_egg:
600
-                # there's no --always-unzip option we can pass to install command
601
-                # so we unable to save the installed-files.txt
602
-                return
603
-
604
-            def prepend_root(path):
605
-                if root is None or not os.path.isabs(path):
606
-                    return path
607
-                else:
608
-                    return change_root(root, path)
609
-
610
-            f = open(record_filename)
611
-            for line in f:
612
-                line = line.strip()
613
-                if line.endswith('.egg-info'):
614
-                    egg_info_dir = prepend_root(line)
615
-                    break
616
-            else:
617
-                logger.warn('Could not find .egg-info directory in install record for %s' % self)
618
-                ## FIXME: put the record somewhere
619
-                ## FIXME: should this be an error?
620
-                return
621
-            f.close()
622
-            new_lines = []
623
-            f = open(record_filename)
624
-            for line in f:
625
-                filename = line.strip()
626
-                if os.path.isdir(filename):
627
-                    filename += os.path.sep
628
-                new_lines.append(make_path_relative(prepend_root(filename), egg_info_dir))
629
-            f.close()
630
-            f = open(os.path.join(egg_info_dir, 'installed-files.txt'), 'w')
631
-            f.write('\n'.join(new_lines)+'\n')
632
-            f.close()
633
-        finally:
634
-            if os.path.exists(record_filename):
635
-                os.remove(record_filename)
636
-            os.rmdir(temp_location)
637
-
638
-    def remove_temporary_source(self):
639
-        """Remove the source files from this requirement, if they are marked
640
-        for deletion"""
641
-        if self.is_bundle or os.path.exists(self.delete_marker_filename):
642
-            logger.info('Removing source in %s' % self.source_dir)
643
-            if self.source_dir:
644
-                rmtree(self.source_dir)
645
-            self.source_dir = None
646
-        if self._temp_build_dir and os.path.exists(self._temp_build_dir):
647
-            rmtree(self._temp_build_dir)
648
-        self._temp_build_dir = None
649
-
650
-    def install_editable(self, install_options, global_options=()):
651
-        logger.notify('Running setup.py develop for %s' % self.name)
652
-        logger.indent += 2
653
-        try:
654
-            ## FIXME: should we do --install-headers here too?
655
-            call_subprocess(
656
-                [sys.executable, '-c',
657
-                 "import setuptools; __file__=%r; exec(compile(open(__file__).read().replace('\\r\\n', '\\n'), __file__, 'exec'))" % self.setup_py]
658
-                + list(global_options) + ['develop', '--no-deps'] + list(install_options),
659
-
660
-                cwd=self.source_dir, filter_stdout=self._filter_install,
661
-                show_stdout=False)
662
-        finally:
663
-            logger.indent -= 2
664
-        self.install_succeeded = True
665
-
666
-    def _filter_install(self, line):
667
-        level = logger.NOTIFY
668
-        for regex in [r'^running .*', r'^writing .*', '^creating .*', '^[Cc]opying .*',
669
-                      r'^reading .*', r"^removing .*\.egg-info' \(and everything under it\)$",
670
-                      r'^byte-compiling ',
671
-                      # Not sure what this warning is, but it seems harmless:
672
-                      r"^warning: manifest_maker: standard file '-c' not found$"]:
673
-            if re.search(regex, line.strip()):
674
-                level = logger.INFO
675
-                break
676
-        return (level, line)
677
-
678
-    def check_if_exists(self):
679
-        """Find an installed distribution that satisfies or conflicts
680
-        with this requirement, and set self.satisfied_by or
681
-        self.conflicts_with appropriately."""
682
-
683
-        if self.req is None:
684
-            return False
685
-        try:
686
-            self.satisfied_by = pkg_resources.get_distribution(self.req)
687
-        except pkg_resources.DistributionNotFound:
688
-            return False
689
-        except pkg_resources.VersionConflict:
690
-            existing_dist = pkg_resources.get_distribution(self.req.project_name)
691
-            if self.use_user_site:
692
-                if dist_in_usersite(existing_dist):
693
-                    self.conflicts_with = existing_dist
694
-                elif running_under_virtualenv() and dist_in_site_packages(existing_dist):
695
-                    raise InstallationError("Will not install to the user site because it will lack sys.path precedence to %s in %s"
696
-                                            %(existing_dist.project_name, existing_dist.location))
697
-            else:
698
-                self.conflicts_with = existing_dist
699
-        return True
700
-
701
-    @property
702
-    def is_bundle(self):
703
-        if self._is_bundle is not None:
704
-            return self._is_bundle
705
-        base = self._temp_build_dir
706
-        if not base:
707
-            ## FIXME: this doesn't seem right:
708
-            return False
709
-        self._is_bundle = (os.path.exists(os.path.join(base, 'pip-manifest.txt'))
710
-                           or os.path.exists(os.path.join(base, 'pyinstall-manifest.txt')))
711
-        return self._is_bundle
712
-
713
-    def bundle_requirements(self):
714
-        for dest_dir in self._bundle_editable_dirs:
715
-            package = os.path.basename(dest_dir)
716
-            ## FIXME: svnism:
717
-            for vcs_backend in vcs.backends:
718
-                url = rev = None
719
-                vcs_bundle_file = os.path.join(
720
-                    dest_dir, vcs_backend.bundle_file)
721
-                if os.path.exists(vcs_bundle_file):
722
-                    vc_type = vcs_backend.name
723
-                    fp = open(vcs_bundle_file)
724
-                    content = fp.read()
725
-                    fp.close()
726
-                    url, rev = vcs_backend().parse_vcs_bundle_file(content)
727
-                    break
728
-            if url:
729
-                url = '%s+%s@%s' % (vc_type, url, rev)
730
-            else:
731
-                url = None
732
-            yield InstallRequirement(
733
-                package, self, editable=True, url=url,
734
-                update=False, source_dir=dest_dir)
735
-        for dest_dir in self._bundle_build_dirs:
736
-            package = os.path.basename(dest_dir)
737
-            yield InstallRequirement(
738
-                package, self,
739
-                source_dir=dest_dir)
740
-
741
-    def move_bundle_files(self, dest_build_dir, dest_src_dir):
742
-        base = self._temp_build_dir
743
-        assert base
744
-        src_dir = os.path.join(base, 'src')
745
-        build_dir = os.path.join(base, 'build')
746
-        bundle_build_dirs = []
747
-        bundle_editable_dirs = []
748
-        for source_dir, dest_dir, dir_collection in [
749
-            (src_dir, dest_src_dir, bundle_editable_dirs),
750
-            (build_dir, dest_build_dir, bundle_build_dirs)]:
751
-            if os.path.exists(source_dir):
752
-                for dirname in os.listdir(source_dir):
753
-                    dest = os.path.join(dest_dir, dirname)
754
-                    dir_collection.append(dest)
755
-                    if os.path.exists(dest):
756
-                        logger.warn('The directory %s (containing package %s) already exists; cannot move source from bundle %s'
757
-                                    % (dest, dirname, self))
758
-                        continue
759
-                    if not os.path.exists(dest_dir):
760
-                        logger.info('Creating directory %s' % dest_dir)
761
-                        os.makedirs(dest_dir)
762
-                    shutil.move(os.path.join(source_dir, dirname), dest)
763
-                if not os.listdir(source_dir):
764
-                    os.rmdir(source_dir)
765
-        self._temp_build_dir = None
766
-        self._bundle_build_dirs = bundle_build_dirs
767
-        self._bundle_editable_dirs = bundle_editable_dirs
768
-
769
-    @property
770
-    def delete_marker_filename(self):
771
-        assert self.source_dir
772
-        return os.path.join(self.source_dir, PIP_DELETE_MARKER_FILENAME)
773
-
774
-
775
-DELETE_MARKER_MESSAGE = '''\
776
-This file is placed here by pip to indicate the source was put
777
-here by pip.
778
-
779
-Once this package is successfully installed this source code will be
780
-deleted (unless you remove this file).
781
-'''
782
-
783
-
784
-class Requirements(object):
785
-
786
-    def __init__(self):
787
-        self._keys = []
788
-        self._dict = {}
789
-
790
-    def keys(self):
791
-        return self._keys
792
-
793
-    def values(self):
794
-        return [self._dict[key] for key in self._keys]
795
-
796
-    def __contains__(self, item):
797
-        return item in self._keys
798
-
799
-    def __setitem__(self, key, value):
800
-        if key not in self._keys:
801
-            self._keys.append(key)
802
-        self._dict[key] = value
803
-
804
-    def __getitem__(self, key):
805
-        return self._dict[key]
806
-
807
-    def __repr__(self):
808
-        values = ['%s: %s' % (repr(k), repr(self[k])) for k in self.keys()]
809
-        return 'Requirements({%s})' % ', '.join(values)
810
-
811
-
812
-class RequirementSet(object):
813
-
814
-    def __init__(self, build_dir, src_dir, download_dir, download_cache=None,
815
-                 upgrade=False, ignore_installed=False, as_egg=False,
816
-                 ignore_dependencies=False, force_reinstall=False, use_user_site=False):
817
-        self.build_dir = build_dir
818
-        self.src_dir = src_dir
819
-        self.download_dir = download_dir
820
-        self.download_cache = download_cache
821
-        self.upgrade = upgrade
822
-        self.ignore_installed = ignore_installed
823
-        self.force_reinstall = force_reinstall
824
-        self.requirements = Requirements()
825
-        # Mapping of alias: real_name
826
-        self.requirement_aliases = {}
827
-        self.unnamed_requirements = []
828
-        self.ignore_dependencies = ignore_dependencies
829
-        self.successfully_downloaded = []
830
-        self.successfully_installed = []
831
-        self.reqs_to_cleanup = []
832
-        self.as_egg = as_egg
833
-        self.use_user_site = use_user_site
834
-
835
-    def __str__(self):
836
-        reqs = [req for req in self.requirements.values()
837
-                if not req.comes_from]
838
-        reqs.sort(key=lambda req: req.name.lower())
839
-        return ' '.join([str(req.req) for req in reqs])
840
-
841
-    def add_requirement(self, install_req):
842
-        name = install_req.name
843
-        install_req.as_egg = self.as_egg
844
-        install_req.use_user_site = self.use_user_site
845
-        if not name:
846
-            #url or path requirement w/o an egg fragment
847
-            self.unnamed_requirements.append(install_req)
848
-        else:
849
-            if self.has_requirement(name):
850
-                raise InstallationError(
851
-                    'Double requirement given: %s (already in %s, name=%r)'
852
-                    % (install_req, self.get_requirement(name), name))
853
-            self.requirements[name] = install_req
854
-            ## FIXME: what about other normalizations?  E.g., _ vs. -?
855
-            if name.lower() != name:
856
-                self.requirement_aliases[name.lower()] = name
857
-
858
-    def has_requirement(self, project_name):
859
-        for name in project_name, project_name.lower():
860
-            if name in self.requirements or name in self.requirement_aliases:
861
-                return True
862
-        return False
863
-
864
-    @property
865
-    def has_requirements(self):
866
-        return list(self.requirements.values()) or self.unnamed_requirements
867
-
868
-    @property
869
-    def has_editables(self):
870
-        if any(req.editable for req in self.requirements.values()):
871
-            return True
872
-        if any(req.editable for req in self.unnamed_requirements):
873
-            return True
874
-        return False
875
-
876
-    @property
877
-    def is_download(self):
878
-        if self.download_dir:
879
-            self.download_dir = os.path.expanduser(self.download_dir)
880
-            if os.path.exists(self.download_dir):
881
-                return True
882
-            else:
883
-                logger.fatal('Could not find download directory')
884
-                raise InstallationError(
885
-                    "Could not find or access download directory '%s'"
886
-                    % display_path(self.download_dir))
887
-        return False
888
-
889
-    def get_requirement(self, project_name):
890
-        for name in project_name, project_name.lower():
891
-            if name in self.requirements:
892
-                return self.requirements[name]
893
-            if name in self.requirement_aliases:
894
-                return self.requirements[self.requirement_aliases[name]]
895
-        raise KeyError("No project with the name %r" % project_name)
896
-
897
-    def uninstall(self, auto_confirm=False):
898
-        for req in self.requirements.values():
899
-            req.uninstall(auto_confirm=auto_confirm)
900
-            req.commit_uninstall()
901
-
902
-    def locate_files(self):
903
-        ## FIXME: duplicates code from prepare_files; relevant code should
904
-        ##        probably be factored out into a separate method
905
-        unnamed = list(self.unnamed_requirements)
906
-        reqs = list(self.requirements.values())
907
-        while reqs or unnamed:
908
-            if unnamed:
909
-                req_to_install = unnamed.pop(0)
910
-            else:
911
-                req_to_install = reqs.pop(0)
912
-            install_needed = True
913
-            if not self.ignore_installed and not req_to_install.editable:
914
-                req_to_install.check_if_exists()
915
-                if req_to_install.satisfied_by:
916
-                    if self.upgrade:
917
-                        #don't uninstall conflict if user install and and conflict is not user install
918
-                        if not (self.use_user_site and not dist_in_usersite(req_to_install.satisfied_by)):
919
-                            req_to_install.conflicts_with = req_to_install.satisfied_by
920
-                        req_to_install.satisfied_by = None
921
-                    else:
922
-                        install_needed = False
923
-                if req_to_install.satisfied_by:
924
-                    logger.notify('Requirement already satisfied '
925
-                                  '(use --upgrade to upgrade): %s'
926
-                                  % req_to_install)
927
-
928
-            if req_to_install.editable:
929
-                if req_to_install.source_dir is None:
930
-                    req_to_install.source_dir = req_to_install.build_location(self.src_dir)
931
-            elif install_needed:
932
-                req_to_install.source_dir = req_to_install.build_location(self.build_dir, not self.is_download)
933
-
934
-            if req_to_install.source_dir is not None and not os.path.isdir(req_to_install.source_dir):
935
-                raise InstallationError('Could not install requirement %s '
936
-                                       'because source folder %s does not exist '
937
-                                       '(perhaps --no-download was used without first running '
938
-                                       'an equivalent install with --no-install?)'
939
-                                       % (req_to_install, req_to_install.source_dir))
940
-
941
-    def prepare_files(self, finder, force_root_egg_info=False, bundle=False):
942
-        """Prepare process. Create temp directories, download and/or unpack files."""
943
-        unnamed = list(self.unnamed_requirements)
944
-        reqs = list(self.requirements.values())
945
-        while reqs or unnamed:
946
-            if unnamed:
947
-                req_to_install = unnamed.pop(0)
948
-            else:
949
-                req_to_install = reqs.pop(0)
950
-            install = True
951
-            best_installed = False
952
-            not_found = None
953
-            if not self.ignore_installed and not req_to_install.editable:
954
-                req_to_install.check_if_exists()
955
-                if req_to_install.satisfied_by:
956
-                    if self.upgrade:
957
-                        if not self.force_reinstall and not req_to_install.url:
958
-                            try:
959
-                                url = finder.find_requirement(
960
-                                    req_to_install, self.upgrade)
961
-                            except BestVersionAlreadyInstalled:
962
-                                best_installed = True
963
-                                install = False
964
-                            except DistributionNotFound:
965
-                                not_found = sys.exc_info()[1]
966
-                            else:
967
-                                # Avoid the need to call find_requirement again
968
-                                req_to_install.url = url.url
969
-
970
-                        if not best_installed:
971
-                            #don't uninstall conflict if user install and conflict is not user install
972
-                            if not (self.use_user_site and not dist_in_usersite(req_to_install.satisfied_by)):
973
-                                req_to_install.conflicts_with = req_to_install.satisfied_by
974
-                            req_to_install.satisfied_by = None
975
-                    else:
976
-                        install = False
977
-                if req_to_install.satisfied_by:
978
-                    if best_installed:
979
-                        logger.notify('Requirement already up-to-date: %s'
980
-                                      % req_to_install)
981
-                    else:
982
-                        logger.notify('Requirement already satisfied '
983
-                                      '(use --upgrade to upgrade): %s'
984
-                                      % req_to_install)
985
-            if req_to_install.editable:
986
-                logger.notify('Obtaining %s' % req_to_install)
987
-            elif install:
988
-                if req_to_install.url and req_to_install.url.lower().startswith('file:'):
989
-                    logger.notify('Unpacking %s' % display_path(url_to_path(req_to_install.url)))
990
-                else:
991
-                    logger.notify('Downloading/unpacking %s' % req_to_install)
992
-            logger.indent += 2
993
-            try:
994
-                is_bundle = False
995
-                if req_to_install.editable:
996
-                    if req_to_install.source_dir is None:
997
-                        location = req_to_install.build_location(self.src_dir)
998
-                        req_to_install.source_dir = location
999
-                    else:
1000
-                        location = req_to_install.source_dir
1001
-                    if not os.path.exists(self.build_dir):
1002
-                        _make_build_dir(self.build_dir)
1003
-                    req_to_install.update_editable(not self.is_download)
1004
-                    if self.is_download:
1005
-                        req_to_install.run_egg_info()
1006
-                        req_to_install.archive(self.download_dir)
1007
-                    else:
1008
-                        req_to_install.run_egg_info()
1009
-                elif install:
1010
-                    ##@@ if filesystem packages are not marked
1011
-                    ##editable in a req, a non deterministic error
1012
-                    ##occurs when the script attempts to unpack the
1013
-                    ##build directory
1014
-
1015
-                    # NB: This call can result in the creation of a temporary build directory
1016
-                    location = req_to_install.build_location(self.build_dir, not self.is_download)
1017
-
1018
-                    ## FIXME: is the existance of the checkout good enough to use it?  I don't think so.
1019
-                    unpack = True
1020
-                    url = None
1021
-                    if not os.path.exists(os.path.join(location, 'setup.py')):
1022
-                        ## FIXME: this won't upgrade when there's an existing package unpacked in `location`
1023
-                        if req_to_install.url is None:
1024
-                            if not_found:
1025
-                                raise not_found
1026
-                            url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
1027
-                        else:
1028
-                            ## FIXME: should req_to_install.url already be a link?
1029
-                            url = Link(req_to_install.url)
1030
-                            assert url
1031
-                        if url:
1032
-                            try:
1033
-                                self.unpack_url(url, location, self.is_download)
1034
-                            except HTTPError:
1035
-                                e = sys.exc_info()[1]
1036
-                                logger.fatal('Could not install requirement %s because of error %s'
1037
-                                             % (req_to_install, e))
1038
-                                raise InstallationError(
1039
-                                    'Could not install requirement %s because of HTTP error %s for URL %s'
1040
-                                    % (req_to_install, e, url))
1041
-                        else:
1042
-                            unpack = False
1043
-                    if unpack:
1044
-                        is_bundle = req_to_install.is_bundle
1045
-                        if is_bundle:
1046
-                            req_to_install.move_bundle_files(self.build_dir, self.src_dir)
1047
-                            for subreq in req_to_install.bundle_requirements():
1048
-                                reqs.append(subreq)
1049
-                                self.add_requirement(subreq)
1050
-                        elif self.is_download:
1051
-                            req_to_install.source_dir = location
1052
-                            req_to_install.run_egg_info()
1053
-                            if url and url.scheme in vcs.all_schemes:
1054
-                                req_to_install.archive(self.download_dir)
1055
-                        else:
1056
-                            req_to_install.source_dir = location
1057
-                            req_to_install.run_egg_info()
1058
-                            if force_root_egg_info:
1059
-                                # We need to run this to make sure that the .egg-info/
1060
-                                # directory is created for packing in the bundle
1061
-                                req_to_install.run_egg_info(force_root_egg_info=True)
1062
-                            req_to_install.assert_source_matches_version()
1063
-                            #@@ sketchy way of identifying packages not grabbed from an index
1064
-                            if bundle and req_to_install.url:
1065
-                                self.copy_to_build_dir(req_to_install)
1066
-                                install = False
1067
-                        # req_to_install.req is only avail after unpack for URL pkgs
1068
-                        # repeat check_if_exists to uninstall-on-upgrade (#14)
1069
-                        req_to_install.check_if_exists()
1070
-                        if req_to_install.satisfied_by:
1071
-                            if self.upgrade or self.ignore_installed:
1072
-                                #don't uninstall conflict if user install and and conflict is not user install
1073
-                                if not (self.use_user_site and not dist_in_usersite(req_to_install.satisfied_by)):
1074
-                                    req_to_install.conflicts_with = req_to_install.satisfied_by
1075
-                                req_to_install.satisfied_by = None
1076
-                            else:
1077
-                                install = False
1078
-                if not is_bundle:
1079
-                    ## FIXME: shouldn't be globally added:
1080
-                    finder.add_dependency_links(req_to_install.dependency_links)
1081
-                    if (req_to_install.extras):
1082
-                        logger.notify("Installing extra requirements: %r" % ','.join(req_to_install.extras))
1083
-                    if not self.ignore_dependencies:
1084
-                        for req in req_to_install.requirements(req_to_install.extras):
1085
-                            try:
1086
-                                name = pkg_resources.Requirement.parse(req).project_name
1087
-                            except ValueError:
1088
-                                e = sys.exc_info()[1]
1089
-                                ## FIXME: proper warning
1090
-                                logger.error('Invalid requirement: %r (%s) in requirement %s' % (req, e, req_to_install))
1091
-                                continue
1092
-                            if self.has_requirement(name):
1093
-                                ## FIXME: check for conflict
1094
-                                continue
1095
-                            subreq = InstallRequirement(req, req_to_install)
1096
-                            reqs.append(subreq)
1097
-                            self.add_requirement(subreq)
1098
-                    if not self.has_requirement(req_to_install.name):
1099
-                        #'unnamed' requirements will get added here
1100
-                        self.add_requirement(req_to_install)
1101
-                    if self.is_download or req_to_install._temp_build_dir is not None:
1102
-                        self.reqs_to_cleanup.append(req_to_install)
1103
-                else:
1104
-                    self.reqs_to_cleanup.append(req_to_install)
1105
-
1106
-                if install:
1107
-                    self.successfully_downloaded.append(req_to_install)
1108
-                    if bundle and (req_to_install.url and req_to_install.url.startswith('file:///')):
1109
-                        self.copy_to_build_dir(req_to_install)
1110
-            finally:
1111
-                logger.indent -= 2
1112
-
1113
-    def cleanup_files(self, bundle=False):
1114
-        """Clean up files, remove builds."""
1115
-        logger.notify('Cleaning up...')
1116
-        logger.indent += 2
1117
-        for req in self.reqs_to_cleanup:
1118
-            req.remove_temporary_source()
1119
-
1120
-        remove_dir = []
1121
-        if self._pip_has_created_build_dir():
1122
-            remove_dir.append(self.build_dir)
1123
-
1124
-        # The source dir of a bundle can always be removed.
1125
-        # FIXME: not if it pre-existed the bundle!
1126
-        if bundle:
1127
-            remove_dir.append(self.src_dir)
1128
-
1129
-        for dir in remove_dir:
1130
-            if os.path.exists(dir):
1131
-                logger.info('Removing temporary dir %s...' % dir)
1132
-                rmtree(dir)
1133
-
1134
-        logger.indent -= 2
1135
-
1136
-    def _pip_has_created_build_dir(self):
1137
-        return (self.build_dir == build_prefix and
1138
-                os.path.exists(os.path.join(self.build_dir, PIP_DELETE_MARKER_FILENAME)))
1139
-
1140
-    def copy_to_build_dir(self, req_to_install):
1141
-        target_dir = req_to_install.editable and self.src_dir or self.build_dir
1142
-        logger.info("Copying %s to %s" % (req_to_install.name, target_dir))
1143
-        dest = os.path.join(target_dir, req_to_install.name)
1144
-        shutil.copytree(req_to_install.source_dir, dest)
1145
-        call_subprocess(["python", "%s/setup.py" % dest, "clean"], cwd=dest,
1146
-                        command_desc='python setup.py clean')
1147
-
1148
-    def unpack_url(self, link, location, only_download=False):
1149
-        if only_download:
1150
-            loc = self.download_dir
1151
-        else:
1152
-            loc = location
1153
-        if is_vcs_url(link):
1154
-            return unpack_vcs_link(link, loc, only_download)
1155
-        # a local file:// index could have links with hashes
1156
-        elif not link.hash and is_file_url(link):
1157
-            return unpack_file_url(link, loc)
1158
-        else:
1159
-            if self.download_cache:
1160
-                self.download_cache = os.path.expanduser(self.download_cache)
1161
-            retval = unpack_http_url(link, location, self.download_cache, self.download_dir)
1162
-            if only_download:
1163
-                _write_delete_marker_message(os.path.join(location, PIP_DELETE_MARKER_FILENAME))
1164
-            return retval
1165
-
1166
-    def install(self, install_options, global_options=(), *args, **kwargs):
1167
-        """Install everything in this set (after having downloaded and unpacked the packages)"""
1168
-        to_install = [r for r in self.requirements.values()
1169
-                      if not r.satisfied_by]
1170
-
1171
-        if to_install:
1172
-            logger.notify('Installing collected packages: %s' % ', '.join([req.name for req in to_install]))
1173
-        logger.indent += 2
1174
-        try:
1175
-            for requirement in to_install:
1176
-                if requirement.conflicts_with:
1177
-                    logger.notify('Found existing installation: %s'
1178
-                                  % requirement.conflicts_with)
1179
-                    logger.indent += 2
1180
-                    try:
1181
-                        requirement.uninstall(auto_confirm=True)
1182
-                    finally:
1183
-                        logger.indent -= 2
1184
-                try:
1185
-                    requirement.install(install_options, global_options, *args, **kwargs)
1186
-                except:
1187
-                    # if install did not succeed, rollback previous uninstall
1188
-                    if requirement.conflicts_with and not requirement.install_succeeded:
1189
-                        requirement.rollback_uninstall()
1190
-                    raise
1191
-                else:
1192
-                    if requirement.conflicts_with and requirement.install_succeeded:
1193
-                        requirement.commit_uninstall()
1194
-                requirement.remove_temporary_source()
1195
-        finally:
1196
-            logger.indent -= 2
1197
-        self.successfully_installed = to_install
1198
-
1199
-    def create_bundle(self, bundle_filename):
1200
-        ## FIXME: can't decide which is better; zip is easier to read
1201
-        ## random files from, but tar.bz2 is smaller and not as lame a
1202
-        ## format.
1203
-
1204
-        ## FIXME: this file should really include a manifest of the
1205
-        ## packages, maybe some other metadata files.  It would make
1206
-        ## it easier to detect as well.
1207
-        zip = zipfile.ZipFile(bundle_filename, 'w', zipfile.ZIP_DEFLATED)
1208
-        vcs_dirs = []
1209
-        for dir, basename in (self.build_dir, 'build'), (self.src_dir, 'src'):
1210
-            dir = os.path.normcase(os.path.abspath(dir))
1211
-            for dirpath, dirnames, filenames in os.walk(dir):
1212
-                for backend in vcs.backends:
1213
-                    vcs_backend = backend()
1214
-                    vcs_url = vcs_rev = None
1215
-                    if vcs_backend.dirname in dirnames:
1216
-                        for vcs_dir in vcs_dirs:
1217
-                            if dirpath.startswith(vcs_dir):
1218
-                                # vcs bundle file already in parent directory
1219
-                                break
1220
-                        else:
1221
-                            vcs_url, vcs_rev = vcs_backend.get_info(
1222
-                                os.path.join(dir, dirpath))
1223
-                            vcs_dirs.append(dirpath)
1224
-                        vcs_bundle_file = vcs_backend.bundle_file
1225
-                        vcs_guide = vcs_backend.guide % {'url': vcs_url,
1226
-                                                         'rev': vcs_rev}
1227
-                        dirnames.remove(vcs_backend.dirname)
1228
-                        break
1229
-                if 'pip-egg-info' in dirnames:
1230
-                    dirnames.remove('pip-egg-info')
1231
-                for dirname in dirnames:
1232
-                    dirname = os.path.join(dirpath, dirname)
1233
-                    name = self._clean_zip_name(dirname, dir)
1234
-                    zip.writestr(basename + '/' + name + '/', '')
1235
-                for filename in filenames:
1236
-                    if filename == PIP_DELETE_MARKER_FILENAME:
1237
-                        continue
1238
-                    filename = os.path.join(dirpath, filename)
1239
-                    name = self._clean_zip_name(filename, dir)
1240
-                    zip.write(filename, basename + '/' + name)
1241
-                if vcs_url:
1242
-                    name = os.path.join(dirpath, vcs_bundle_file)
1243
-                    name = self._clean_zip_name(name, dir)
1244
-                    zip.writestr(basename + '/' + name, vcs_guide)
1245
-
1246
-        zip.writestr('pip-manifest.txt', self.bundle_requirements())
1247
-        zip.close()
1248
-
1249
-    BUNDLE_HEADER = '''\
1250
-# This is a pip bundle file, that contains many source packages
1251
-# that can be installed as a group.  You can install this like:
1252
-#     pip this_file.zip
1253
-# The rest of the file contains a list of all the packages included:
1254
-'''
1255
-
1256
-    def bundle_requirements(self):
1257
-        parts = [self.BUNDLE_HEADER]
1258
-        for req in [req for req in self.requirements.values()
1259
-                    if not req.comes_from]:
1260
-            parts.append('%s==%s\n' % (req.name, req.installed_version))
1261
-        parts.append('# These packages were installed to satisfy the above requirements:\n')
1262
-        for req in [req for req in self.requirements.values()
1263
-                    if req.comes_from]:
1264
-            parts.append('%s==%s\n' % (req.name, req.installed_version))
1265
-        ## FIXME: should we do something with self.unnamed_requirements?
1266
-        return ''.join(parts)
1267
-
1268
-    def _clean_zip_name(self, name, prefix):
1269
-        assert name.startswith(prefix+os.path.sep), (
1270
-            "name %r doesn't start with prefix %r" % (name, prefix))
1271
-        name = name[len(prefix)+1:]
1272
-        name = name.replace(os.path.sep, '/')
1273
-        return name
1274
-
1275
-
1276
-def _make_build_dir(build_dir):
1277
-    os.makedirs(build_dir)
1278
-    _write_delete_marker_message(os.path.join(build_dir, PIP_DELETE_MARKER_FILENAME))
1279
-
1280
-
1281
-def _write_delete_marker_message(filepath):
1282
-    marker_fp = open(filepath, 'w')
1283
-    marker_fp.write(DELETE_MARKER_MESSAGE)
1284
-    marker_fp.close()
1285
-
1286
-
1287
-_scheme_re = re.compile(r'^(http|https|file):', re.I)
1288
-
1289
-
1290
-def parse_requirements(filename, finder=None, comes_from=None, options=None):
1291
-    skip_match = None
1292
-    skip_regex = options.skip_requirements_regex if options else None
1293
-    if skip_regex:
1294
-        skip_match = re.compile(skip_regex)
1295
-    reqs_file_dir = os.path.dirname(os.path.abspath(filename))
1296
-    filename, content = get_file_content(filename, comes_from=comes_from)
1297
-    for line_number, line in enumerate(content.splitlines()):
1298
-        line_number += 1
1299
-        line = line.strip()
1300
-        if not line or line.startswith('#'):
1301
-            continue
1302
-        if skip_match and skip_match.search(line):
1303
-            continue
1304
-        if line.startswith('-r') or line.startswith('--requirement'):
1305
-            if line.startswith('-r'):
1306
-                req_url = line[2:].strip()
1307
-            else:
1308
-                req_url = line[len('--requirement'):].strip().strip('=')
1309
-            if _scheme_re.search(filename):
1310
-                # Relative to a URL
1311
-                req_url = urlparse.urljoin(filename, req_url)
1312
-            elif not _scheme_re.search(req_url):
1313
-                req_url = os.path.join(os.path.dirname(filename), req_url)
1314
-            for item in parse_requirements(req_url, finder, comes_from=filename, options=options):
1315
-                yield item
1316
-        elif line.startswith('-Z') or line.startswith('--always-unzip'):
1317
-            # No longer used, but previously these were used in
1318
-            # requirement files, so we'll ignore.
1319
-            pass
1320
-        elif line.startswith('-f') or line.startswith('--find-links'):
1321
-            if line.startswith('-f'):
1322
-                line = line[2:].strip()
1323
-            else:
1324
-                line = line[len('--find-links'):].strip().lstrip('=')
1325
-            ## FIXME: it would be nice to keep track of the source of
1326
-            ## the find_links:
1327
-            # support a find-links local path relative to a requirements file
1328
-            relative_to_reqs_file = os.path.join(reqs_file_dir, line)
1329
-            if os.path.exists(relative_to_reqs_file):
1330
-                line = relative_to_reqs_file
1331
-            if finder:
1332
-                finder.find_links.append(line)
1333
-        elif line.startswith('-i') or line.startswith('--index-url'):
1334
-            if line.startswith('-i'):
1335
-                line = line[2:].strip()
1336
-            else:
1337
-                line = line[len('--index-url'):].strip().lstrip('=')
1338
-            if finder:
1339
-                finder.index_urls = [line]
1340
-        elif line.startswith('--extra-index-url'):
1341
-            line = line[len('--extra-index-url'):].strip().lstrip('=')
1342
-            if finder:
1343
-                finder.index_urls.append(line)
1344
-        elif line.startswith('--no-index'):
1345
-            finder.index_urls = []
1346
-        else:
1347
-            comes_from = '-r %s (line %s)' % (filename, line_number)
1348
-            if line.startswith('-e') or line.startswith('--editable'):
1349
-                if line.startswith('-e'):
1350
-                    line = line[2:].strip()
1351
-                else:
1352
-                    line = line[len('--editable'):].strip().lstrip('=')
1353
-                req = InstallRequirement.from_editable(
1354
-                    line, comes_from=comes_from, default_vcs=options.default_vcs)
1355
-            else:
1356
-                req = InstallRequirement.from_line(line, comes_from)
1357
-            yield req
1358
-
1359
-
1360
-def parse_editable(editable_req, default_vcs=None):
1361
-    """Parses svn+http://blahblah@rev#egg=Foobar into a requirement
1362
-    (Foobar) and a URL"""
1363
-
1364
-    url = editable_req
1365
-    extras = None
1366
-
1367
-    # If a file path is specified with extras, strip off the extras.
1368
-    m = re.match(r'^(.+)(\[[^\]]+\])$', url)
1369
-    if m:
1370
-        url_no_extras = m.group(1)
1371
-        extras = m.group(2)
1372
-    else:
1373
-        url_no_extras = url
1374
-
1375
-    if os.path.isdir(url_no_extras):
1376
-        if not os.path.exists(os.path.join(url_no_extras, 'setup.py')):
1377
-            raise InstallationError("Directory %r is not installable. File 'setup.py' not found." % url_no_extras)
1378
-        # Treating it as code that has already been checked out
1379
-        url_no_extras = path_to_url(url_no_extras)
1380
-
1381
-    if url_no_extras.lower().startswith('file:'):
1382
-        if extras:
1383
-            return None, url_no_extras, pkg_resources.Requirement.parse('__placeholder__' + extras).extras
1384
-        else:
1385
-            return None, url_no_extras, None
1386
-
1387
-    for version_control in vcs:
1388
-        if url.lower().startswith('%s:' % version_control):
1389
-            url = '%s+%s' % (version_control, url)
1390
-    if '+' not in url:
1391
-        if default_vcs:
1392
-            url = default_vcs + '+' + url
1393
-        else:
1394
-            raise InstallationError(
1395
-                '%s should either by a path to a local project or a VCS url beginning with svn+, git+, hg+, or bzr+' % editable_req)
1396
-    vc_type = url.split('+', 1)[0].lower()
1397
-    if not vcs.get_backend(vc_type):
1398
-        error_message = 'For --editable=%s only ' % editable_req + \
1399
-            ', '.join([backend.name + '+URL' for backend in vcs.backends]) + \
1400
-            ' is currently supported'
1401
-        raise InstallationError(error_message)
1402
-    match = re.search(r'(?:#|#.*?&)egg=([^&]*)', editable_req)
1403
-    if (not match or not match.group(1)) and vcs.get_backend(vc_type):
1404
-        parts = [p for p in editable_req.split('#', 1)[0].split('/') if p]
1405
-        if parts[-2] in ('tags', 'branches', 'tag', 'branch'):
1406
-            req = parts[-3]
1407
-        elif parts[-1] == 'trunk':
1408
-            req = parts[-2]
1409
-        else:
1410
-            raise InstallationError(
1411
-                '--editable=%s is not the right format; it must have #egg=Package'
1412
-                % editable_req)
1413
-    else:
1414
-        req = match.group(1)
1415
-    ## FIXME: use package_to_requirement?
1416
-    match = re.search(r'^(.*?)(?:-dev|-\d.*)$', req)
1417
-    if match:
1418
-        # Strip off -dev, -0.2, etc.
1419
-        req = match.group(1)
1420
-    return req, url, None
1421
-
1422
-
1423
-class UninstallPathSet(object):
1424
-    """A set of file paths to be removed in the uninstallation of a
1425
-    requirement."""
1426
-    def __init__(self, dist):
1427
-        self.paths = set()
1428
-        self._refuse = set()
1429
-        self.pth = {}
1430
-        self.dist = dist
1431
-        self.save_dir = None
1432
-        self._moved_paths = []
1433
-
1434
-    def _permitted(self, path):
1435
-        """
1436
-        Return True if the given path is one we are permitted to
1437
-        remove/modify, False otherwise.
1438
-
1439
-        """
1440
-        return is_local(path)
1441
-
1442
-    def _can_uninstall(self):
1443
-        if not dist_is_local(self.dist):
1444
-            logger.notify("Not uninstalling %s at %s, outside environment %s"
1445
-                          % (self.dist.project_name, normalize_path(self.dist.location), sys.prefix))
1446
-            return False
1447
-        return True
1448
-
1449
-    def add(self, path):
1450
-        path = normalize_path(path)
1451
-        if not os.path.exists(path):
1452
-            return
1453
-        if self._permitted(path):
1454
-            self.paths.add(path)
1455
-        else:
1456
-            self._refuse.add(path)
1457
-
1458
-        # __pycache__ files can show up after 'installed-files.txt' is created, due to imports
1459
-        if os.path.splitext(path)[1] == '.py' and uses_pycache:
1460
-            self.add(imp.cache_from_source(path))
1461
-
1462
-
1463
-    def add_pth(self, pth_file, entry):
1464
-        pth_file = normalize_path(pth_file)
1465
-        if self._permitted(pth_file):
1466
-            if pth_file not in self.pth:
1467
-                self.pth[pth_file] = UninstallPthEntries(pth_file)
1468
-            self.pth[pth_file].add(entry)
1469
-        else:
1470
-            self._refuse.add(pth_file)
1471
-
1472
-    def compact(self, paths):
1473
-        """Compact a path set to contain the minimal number of paths
1474
-        necessary to contain all paths in the set. If /a/path/ and
1475
-        /a/path/to/a/file.txt are both in the set, leave only the
1476
-        shorter path."""
1477
-        short_paths = set()
1478
-        for path in sorted(paths, key=len):
1479
-            if not any([(path.startswith(shortpath) and
1480
-                         path[len(shortpath.rstrip(os.path.sep))] == os.path.sep)
1481
-                        for shortpath in short_paths]):
1482
-                short_paths.add(path)
1483
-        return short_paths
1484
-
1485
-    def _stash(self, path):
1486
-        return os.path.join(
1487
-            self.save_dir, os.path.splitdrive(path)[1].lstrip(os.path.sep))
1488
-
1489
-    def remove(self, auto_confirm=False):
1490
-        """Remove paths in ``self.paths`` with confirmation (unless
1491
-        ``auto_confirm`` is True)."""
1492
-        if not self._can_uninstall():
1493
-            return
1494
-        if not self.paths:
1495
-            logger.notify("Can't uninstall '%s'. No files were found to uninstall." % self.dist.project_name)
1496
-            return
1497
-        logger.notify('Uninstalling %s:' % self.dist.project_name)
1498
-        logger.indent += 2
1499
-        paths = sorted(self.compact(self.paths))
1500
-        try:
1501
-            if auto_confirm:
1502
-                response = 'y'
1503
-            else:
1504
-                for path in paths:
1505
-                    logger.notify(path)
1506
-                response = ask('Proceed (y/n)? ', ('y', 'n'))
1507
-            if self._refuse:
1508
-                logger.notify('Not removing or modifying (outside of prefix):')
1509
-                for path in self.compact(self._refuse):
1510
-                    logger.notify(path)
1511
-            if response == 'y':
1512
-                self.save_dir = tempfile.mkdtemp(suffix='-uninstall',
1513
-                                                 prefix='pip-')
1514
-                for path in paths:
1515
-                    new_path = self._stash(path)
1516
-                    logger.info('Removing file or directory %s' % path)
1517
-                    self._moved_paths.append(path)
1518
-                    renames(path, new_path)
1519
-                for pth in self.pth.values():
1520
-                    pth.remove()
1521
-                logger.notify('Successfully uninstalled %s' % self.dist.project_name)
1522
-
1523
-        finally:
1524
-            logger.indent -= 2
1525
-
1526
-    def rollback(self):
1527
-        """Rollback the changes previously made by remove()."""
1528
-        if self.save_dir is None:
1529
-            logger.error("Can't roll back %s; was not uninstalled" % self.dist.project_name)
1530
-            return False
1531
-        logger.notify('Rolling back uninstall of %s' % self.dist.project_name)
1532
-        for path in self._moved_paths:
1533
-            tmp_path = self._stash(path)
1534
-            logger.info('Replacing %s' % path)
1535
-            renames(tmp_path, path)
1536
-        for pth in self.pth:
1537
-            pth.rollback()
1538
-
1539
-    def commit(self):
1540
-        """Remove temporary save dir: rollback will no longer be possible."""
1541
-        if self.save_dir is not None:
1542
-            rmtree(self.save_dir)
1543
-            self.save_dir = None
1544
-            self._moved_paths = []
1545
-
1546
-
1547
-class UninstallPthEntries(object):
1548
-    def __init__(self, pth_file):
1549
-        if not os.path.isfile(pth_file):
1550
-            raise UninstallationError("Cannot remove entries from nonexistent file %s" % pth_file)
1551
-        self.file = pth_file
1552
-        self.entries = set()
1553
-        self._saved_lines = None
1554
-
1555
-    def add(self, entry):
1556
-        entry = os.path.normcase(entry)
1557
-        # On Windows, os.path.normcase converts the entry to use
1558
-        # backslashes.  This is correct for entries that describe absolute
1559
-        # paths outside of site-packages, but all the others use forward
1560
-        # slashes.
1561
-        if sys.platform == 'win32' and not os.path.splitdrive(entry)[0]:
1562
-            entry = entry.replace('\\', '/')
1563
-        self.entries.add(entry)
1564
-
1565
-    def remove(self):
1566
-        logger.info('Removing pth entries from %s:' % self.file)
1567
-        fh = open(self.file, 'rb')
1568
-        # windows uses '\r\n' with py3k, but uses '\n' with py2.x
1569
-        lines = fh.readlines()
1570
-        self._saved_lines = lines
1571
-        fh.close()
1572
-        if any(b('\r\n') in line for line in lines):
1573
-            endline = '\r\n'
1574
-        else:
1575
-            endline = '\n'
1576
-        for entry in self.entries:
1577
-            try:
1578
-                logger.info('Removing entry: %s' % entry)
1579
-                lines.remove(b(entry + endline))
1580
-            except ValueError:
1581
-                pass
1582
-        fh = open(self.file, 'wb')
1583
-        fh.writelines(lines)
1584
-        fh.close()
1585
-
1586
-    def rollback(self):
1587
-        if self._saved_lines is None:
1588
-            logger.error('Cannot roll back changes to %s, none were made' % self.file)
1589
-            return False
1590
-        logger.info('Rolling %s back to previous state' % self.file)
1591
-        fh = open(self.file, 'wb')
1592
-        fh.writelines(self._saved_lines)
1593
-        fh.close()
1594
-        return True
1595
-
1596
-
1597
-class FakeFile(object):
1598
-    """Wrap a list of lines in an object with readline() to make
1599
-    ConfigParser happy."""
1600
-    def __init__(self, lines):
1601
-        self._gen = (l for l in lines)
1602
-
1603
-    def readline(self):
1604
-        try:
1605
-            try:
1606
-                return next(self._gen)
1607
-            except NameError:
1608
-                return self._gen.next()
1609
-        except StopIteration:
1610
-            return ''
1611
-
1612
-    def __iter__(self):
1613
-        return self._gen
1614 0
deleted file mode 100644
1615 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/req.pyc and /dev/null differ
1616 2
deleted file mode 100644
... ...
@@ -1,18 +0,0 @@
1
-import sys
2
-import os
3
-
4
-
5
-def run():
6
-    base = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
7
-    ## FIXME: this is kind of crude; if we could create a fake pip
8
-    ## module, then exec into it and update pip.__path__ properly, we
9
-    ## wouldn't have to update sys.path:
10
-    sys.path.insert(0, base)
11
-    import pip
12
-    return pip.main()
13
-
14
-
15
-if __name__ == '__main__':
16
-    exit = run()
17
-    if exit:
18
-        sys.exit(exit)
19 0
deleted file mode 100644
20 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/runner.pyc and /dev/null differ
21 2
deleted file mode 100644
... ...
@@ -1,5 +0,0 @@
1
-SUCCESS = 0
2
-ERROR = 1
3
-UNKNOWN_ERROR = 2
4
-VIRTUALENV_NOT_FOUND = 3
5
-NO_MATCHES_FOUND = 23
6 0
deleted file mode 100644
7 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/status_codes.pyc and /dev/null differ
8 2
deleted file mode 100644
... ...
@@ -1,668 +0,0 @@
1
-import sys
2
-import shutil
3
-import os
4
-import stat
5
-import re
6
-import posixpath
7
-import pkg_resources
8
-import zipfile
9
-import tarfile
10
-import subprocess
11
-import textwrap
12
-from pip.exceptions import InstallationError, BadCommand, PipError
13
-from pip.backwardcompat import(WindowsError, string_types, raw_input,
14
-                                console_to_str, user_site, ssl)
15
-from pip.locations import site_packages, running_under_virtualenv, virtualenv_no_global
16
-from pip.log import logger
17
-
18
-__all__ = ['rmtree', 'display_path', 'backup_dir',
19
-           'find_command', 'ask', 'Inf',
20
-           'normalize_name', 'splitext',
21
-           'format_size', 'is_installable_dir',
22
-           'is_svn_page', 'file_contents',
23
-           'split_leading_dir', 'has_leading_dir',
24
-           'make_path_relative', 'normalize_path',
25
-           'renames', 'get_terminal_size', 'get_prog',
26
-           'unzip_file', 'untar_file', 'create_download_cache_folder',
27
-           'cache_download', 'unpack_file', 'call_subprocess']
28
-
29
-
30
-def get_prog():
31
-    try:
32
-        if os.path.basename(sys.argv[0]) in ('__main__.py', '-c'):
33
-            return "%s -m pip" % sys.executable
34
-    except (AttributeError, TypeError, IndexError):
35
-        pass
36
-    return 'pip'
37
-
38
-
39
-def rmtree(dir, ignore_errors=False):
40
-    shutil.rmtree(dir, ignore_errors=ignore_errors,
41
-                  onerror=rmtree_errorhandler)
42
-
43
-
44
-def rmtree_errorhandler(func, path, exc_info):
45
-    """On Windows, the files in .svn are read-only, so when rmtree() tries to
46
-    remove them, an exception is thrown.  We catch that here, remove the
47
-    read-only attribute, and hopefully continue without problems."""
48
-    exctype, value = exc_info[:2]
49
-    if not ((exctype is WindowsError and value.args[0] == 5) or #others
50
-            (exctype is OSError and value.args[0] == 13) or #python2.4
51
-            (exctype is PermissionError and value.args[3] == 5) #python3.3
52
-            ):
53
-        raise
54
-    # file type should currently be read only
55
-    if ((os.stat(path).st_mode & stat.S_IREAD) != stat.S_IREAD):
56
-        raise
57
-    # convert to read/write
58
-    os.chmod(path, stat.S_IWRITE)
59
-    # use the original function to repeat the operation
60
-    func(path)
61
-
62
-
63
-def display_path(path):
64
-    """Gives the display value for a given path, making it relative to cwd
65
-    if possible."""
66
-    path = os.path.normcase(os.path.abspath(path))
67
-    if path.startswith(os.getcwd() + os.path.sep):
68
-        path = '.' + path[len(os.getcwd()):]
69
-    return path
70
-
71
-
72
-def backup_dir(dir, ext='.bak'):
73
-    """Figure out the name of a directory to back up the given dir to
74
-    (adding .bak, .bak2, etc)"""
75
-    n = 1
76
-    extension = ext
77
-    while os.path.exists(dir + extension):
78
-        n += 1
79
-        extension = ext + str(n)
80
-    return dir + extension
81
-
82
-
83
-def find_command(cmd, paths=None, pathext=None):
84
-    """Searches the PATH for the given command and returns its path"""
85
-    if paths is None:
86
-        paths = os.environ.get('PATH', '').split(os.pathsep)
87
-    if isinstance(paths, string_types):
88
-        paths = [paths]
89
-    # check if there are funny path extensions for executables, e.g. Windows
90
-    if pathext is None:
91
-        pathext = get_pathext()
92
-    pathext = [ext for ext in pathext.lower().split(os.pathsep) if len(ext)]
93
-    # don't use extensions if the command ends with one of them
94
-    if os.path.splitext(cmd)[1].lower() in pathext:
95
-        pathext = ['']
96
-    # check if we find the command on PATH
97
-    for path in paths:
98
-        # try without extension first
99
-        cmd_path = os.path.join(path, cmd)
100
-        for ext in pathext:
101
-            # then including the extension
102
-            cmd_path_ext = cmd_path + ext
103
-            if os.path.isfile(cmd_path_ext):
104
-                return cmd_path_ext
105
-        if os.path.isfile(cmd_path):
106
-            return cmd_path
107
-    raise BadCommand('Cannot find command %r' % cmd)
108
-
109
-
110
-def get_pathext(default_pathext=None):
111
-    """Returns the path extensions from environment or a default"""
112
-    if default_pathext is None:
113
-        default_pathext = os.pathsep.join(['.COM', '.EXE', '.BAT', '.CMD'])
114
-    pathext = os.environ.get('PATHEXT', default_pathext)
115
-    return pathext
116
-
117
-
118
-def ask_path_exists(message, options):
119
-    for action in os.environ.get('PIP_EXISTS_ACTION', ''):
120
-        if action in options:
121
-            return action
122
-    return ask(message, options)
123
-
124
-
125
-def ask(message, options):
126
-    """Ask the message interactively, with the given possible responses"""
127
-    while 1:
128
-        if os.environ.get('PIP_NO_INPUT'):
129
-            raise Exception('No input was expected ($PIP_NO_INPUT set); question: %s' % message)
130
-        response = raw_input(message)
131
-        response = response.strip().lower()
132
-        if response not in options:
133
-            print('Your response (%r) was not one of the expected responses: %s' % (
134
-                response, ', '.join(options)))
135
-        else:
136
-            return response
137
-
138
-
139
-class _Inf(object):
140
-    """I am bigger than everything!"""
141
-
142
-    def __eq__(self, other):
143
-        if self is other:
144
-            return True
145
-        else:
146
-            return False
147
-
148
-    def __ne__(self, other):
149
-        return not self.__eq__(other)
150
-
151
-    def __lt__(self, other):
152
-        return False
153
-
154
-    def __le__(self, other):
155
-        return False
156
-
157
-    def __gt__(self, other):
158
-        return True
159
-
160
-    def __ge__(self, other):
161
-        return True
162
-
163
-    def __repr__(self):
164
-        return 'Inf'
165
-
166
-
167
-Inf = _Inf() #this object is not currently used as a sortable in our code
168
-del _Inf
169
-
170
-
171
-_normalize_re = re.compile(r'[^a-z]', re.I)
172
-
173
-
174
-def normalize_name(name):
175
-    return _normalize_re.sub('-', name.lower())
176
-
177
-
178
-def format_size(bytes):
179
-    if bytes > 1000*1000:
180
-        return '%.1fMB' % (bytes/1000.0/1000)
181
-    elif bytes > 10*1000:
182
-        return '%ikB' % (bytes/1000)
183
-    elif bytes > 1000:
184
-        return '%.1fkB' % (bytes/1000.0)
185
-    else:
186
-        return '%ibytes' % bytes
187
-
188
-
189
-def is_installable_dir(path):
190
-    """Return True if `path` is a directory containing a setup.py file."""
191
-    if not os.path.isdir(path):
192
-        return False
193
-    setup_py = os.path.join(path, 'setup.py')
194
-    if os.path.isfile(setup_py):
195
-        return True
196
-    return False
197
-
198
-
199
-def is_svn_page(html):
200
-    """Returns true if the page appears to be the index page of an svn repository"""
201
-    return (re.search(r'<title>[^<]*Revision \d+:', html)
202
-            and re.search(r'Powered by (?:<a[^>]*?>)?Subversion', html, re.I))
203
-
204
-
205
-def file_contents(filename):
206
-    fp = open(filename, 'rb')
207
-    try:
208
-        return fp.read().decode('utf-8')
209
-    finally:
210
-        fp.close()
211
-
212
-
213
-def split_leading_dir(path):
214
-    path = str(path)
215
-    path = path.lstrip('/').lstrip('\\')
216
-    if '/' in path and (('\\' in path and path.find('/') < path.find('\\'))
217
-                        or '\\' not in path):
218
-        return path.split('/', 1)
219
-    elif '\\' in path:
220
-        return path.split('\\', 1)
221
-    else:
222
-        return path, ''
223
-
224
-
225
-def has_leading_dir(paths):
226
-    """Returns true if all the paths have the same leading path name
227
-    (i.e., everything is in one subdirectory in an archive)"""
228
-    common_prefix = None
229
-    for path in paths:
230
-        prefix, rest = split_leading_dir(path)
231
-        if not prefix:
232
-            return False
233
-        elif common_prefix is None:
234
-            common_prefix = prefix
235
-        elif prefix != common_prefix:
236
-            return False
237
-    return True
238
-
239
-
240
-def make_path_relative(path, rel_to):
241
-    """
242
-    Make a filename relative, where the filename path, and it is
243
-    relative to rel_to
244
-
245
-        >>> make_relative_path('/usr/share/something/a-file.pth',
246
-        ...                    '/usr/share/another-place/src/Directory')
247
-        '../../../something/a-file.pth'
248
-        >>> make_relative_path('/usr/share/something/a-file.pth',
249
-        ...                    '/home/user/src/Directory')
250
-        '../../../usr/share/something/a-file.pth'
251
-        >>> make_relative_path('/usr/share/a-file.pth', '/usr/share/')
252
-        'a-file.pth'
253
-    """
254
-    path_filename = os.path.basename(path)
255
-    path = os.path.dirname(path)
256
-    path = os.path.normpath(os.path.abspath(path))
257
-    rel_to = os.path.normpath(os.path.abspath(rel_to))
258
-    path_parts = path.strip(os.path.sep).split(os.path.sep)
259
-    rel_to_parts = rel_to.strip(os.path.sep).split(os.path.sep)
260
-    while path_parts and rel_to_parts and path_parts[0] == rel_to_parts[0]:
261
-        path_parts.pop(0)
262
-        rel_to_parts.pop(0)
263
-    full_parts = ['..']*len(rel_to_parts) + path_parts + [path_filename]
264
-    if full_parts == ['']:
265
-        return '.' + os.path.sep
266
-    return os.path.sep.join(full_parts)
267
-
268
-
269
-def normalize_path(path):
270
-    """
271
-    Convert a path to its canonical, case-normalized, absolute version.
272
-
273
-    """
274
-    return os.path.normcase(os.path.realpath(path))
275
-
276
-
277
-def splitext(path):
278
-    """Like os.path.splitext, but take off .tar too"""
279
-    base, ext = posixpath.splitext(path)
280
-    if base.lower().endswith('.tar'):
281
-        ext = base[-4:] + ext
282
-        base = base[:-4]
283
-    return base, ext
284
-
285
-
286
-def renames(old, new):
287
-    """Like os.renames(), but handles renaming across devices."""
288
-    # Implementation borrowed from os.renames().
289
-    head, tail = os.path.split(new)
290
-    if head and tail and not os.path.exists(head):
291
-        os.makedirs(head)
292
-
293
-    shutil.move(old, new)
294
-
295
-    head, tail = os.path.split(old)
296
-    if head and tail:
297
-        try:
298
-            os.removedirs(head)
299
-        except OSError:
300
-            pass
301
-
302
-
303
-def is_local(path):
304
-    """
305
-    Return True if path is within sys.prefix, if we're running in a virtualenv.
306
-
307
-    If we're not in a virtualenv, all paths are considered "local."
308
-
309
-    """
310
-    if not running_under_virtualenv():
311
-        return True
312
-    return normalize_path(path).startswith(normalize_path(sys.prefix))
313
-
314
-
315
-def dist_is_local(dist):
316
-    """
317
-    Return True if given Distribution object is installed locally
318
-    (i.e. within current virtualenv).
319
-
320
-    Always True if we're not in a virtualenv.
321
-
322
-    """
323
-    return is_local(dist_location(dist))
324
-
325
-
326
-def dist_in_usersite(dist):
327
-    """
328
-    Return True if given Distribution is installed in user site.
329
-    """
330
-    if user_site:
331
-        return normalize_path(dist_location(dist)).startswith(normalize_path(user_site))
332
-    else:
333
-        return False
334
-
335
-def dist_in_site_packages(dist):
336
-    """
337
-    Return True if given Distribution is installed in distutils.sysconfig.get_python_lib().
338
-    """
339
-    return normalize_path(dist_location(dist)).startswith(normalize_path(site_packages))
340
-
341
-
342
-def dist_is_editable(dist):
343
-    """Is distribution an editable install?"""
344
-    #TODO: factor out determining editableness out of FrozenRequirement
345
-    from pip import FrozenRequirement
346
-    req = FrozenRequirement.from_dist(dist, [])
347
-    return req.editable
348
-
349
-def get_installed_distributions(local_only=True,
350
-                                skip=('setuptools', 'pip', 'python'),
351
-                                include_editables=True,
352
-                                editables_only=False):
353
-    """
354
-    Return a list of installed Distribution objects.
355
-
356
-    If ``local_only`` is True (default), only return installations
357
-    local to the current virtualenv, if in a virtualenv.
358
-
359
-    ``skip`` argument is an iterable of lower-case project names to
360
-    ignore; defaults to ('setuptools', 'pip', 'python'). [FIXME also
361
-    skip virtualenv?]
362
-
363
-    If ``editables`` is False, don't report editables.
364
-
365
-    If ``editables_only`` is True , only report editables.
366
-
367
-    """
368
-    if local_only:
369
-        local_test = dist_is_local
370
-    else:
371
-        local_test = lambda d: True
372
-
373
-    if include_editables:
374
-        editable_test = lambda d: True
375
-    else:
376
-        editable_test = lambda d: not dist_is_editable(d)
377
-
378
-    if editables_only:
379
-        editables_only_test = lambda d: dist_is_editable(d)
380
-    else:
381
-        editables_only_test = lambda d: True
382
-
383
-    return [d for d in pkg_resources.working_set
384
-            if local_test(d)
385
-            and d.key not in skip
386
-            and editable_test(d)
387
-            and editables_only_test(d)
388
-            ]
389
-
390
-
391
-def egg_link_path(dist):
392
-    """
393
-    Return the path for the .egg-link file if it exists, otherwise, None.
394
-
395
-    There's 3 scenarios:
396
-    1) not in a virtualenv
397
-       try to find in site.USER_SITE, then site_packages
398
-    2) in a no-global virtualenv
399
-       try to find in site_packages
400
-    3) in a yes-global virtualenv
401
-       try to find in site_packages, then site.USER_SITE  (don't look in global location)
402
-
403
-    For #1 and #3, there could be odd cases, where there's an egg-link in 2 locations.
404
-    This method will just return the first one found.
405
-    """
406
-    sites = []
407
-    if running_under_virtualenv():
408
-        if virtualenv_no_global():
409
-            sites.append(site_packages)
410
-        else:
411
-            sites.append(site_packages)
412
-            if user_site:
413
-                sites.append(user_site)
414
-    else:
415
-        if user_site:
416
-            sites.append(user_site)
417
-        sites.append(site_packages)
418
-
419
-    for site in sites:
420
-        egglink = os.path.join(site, dist.project_name) + '.egg-link'
421
-        if os.path.isfile(egglink):
422
-            return egglink
423
-
424
-
425
-def dist_location(dist):
426
-    """
427
-    Get the site-packages location of this distribution. Generally
428
-    this is dist.location, except in the case of develop-installed
429
-    packages, where dist.location is the source code location, and we
430
-    want to know where the egg-link file is.
431
-
432
-    """
433
-    egg_link = egg_link_path(dist)
434
-    if egg_link:
435
-        return egg_link
436
-    return dist.location
437
-
438
-
439
-def get_terminal_size():
440
-    """Returns a tuple (x, y) representing the width(x) and the height(x)
441
-    in characters of the terminal window."""
442
-    def ioctl_GWINSZ(fd):
443
-        try:
444
-            import fcntl
445
-            import termios
446
-            import struct
447
-            cr = struct.unpack('hh', fcntl.ioctl(fd, termios.TIOCGWINSZ,
448
-        '1234'))
449
-        except:
450
-            return None
451
-        if cr == (0, 0):
452
-            return None
453
-        if cr == (0, 0):
454
-            return None
455
-        return cr
456
-    cr = ioctl_GWINSZ(0) or ioctl_GWINSZ(1) or ioctl_GWINSZ(2)
457
-    if not cr:
458
-        try:
459
-            fd = os.open(os.ctermid(), os.O_RDONLY)
460
-            cr = ioctl_GWINSZ(fd)
461
-            os.close(fd)
462
-        except:
463
-            pass
464
-    if not cr:
465
-        cr = (os.environ.get('LINES', 25), os.environ.get('COLUMNS', 80))
466
-    return int(cr[1]), int(cr[0])
467
-
468
-
469
-def unzip_file(filename, location, flatten=True):
470
-    """Unzip the file (zip file located at filename) to the destination
471
-    location"""
472
-    if not os.path.exists(location):
473
-        os.makedirs(location)
474
-    zipfp = open(filename, 'rb')
475
-    try:
476
-        zip = zipfile.ZipFile(zipfp)
477
-        leading = has_leading_dir(zip.namelist()) and flatten
478
-        for name in zip.namelist():
479
-            data = zip.read(name)
480
-            fn = name
481
-            if leading:
482
-                fn = split_leading_dir(name)[1]
483
-            fn = os.path.join(location, fn)
484
-            dir = os.path.dirname(fn)
485
-            if not os.path.exists(dir):
486
-                os.makedirs(dir)
487
-            if fn.endswith('/') or fn.endswith('\\'):
488
-                # A directory
489
-                if not os.path.exists(fn):
490
-                    os.makedirs(fn)
491
-            else:
492
-                fp = open(fn, 'wb')
493
-                try:
494
-                    fp.write(data)
495
-                finally:
496
-                    fp.close()
497
-    finally:
498
-        zipfp.close()
499
-
500
-
501
-def untar_file(filename, location):
502
-    """Untar the file (tar file located at filename) to the destination location"""
503
-    if not os.path.exists(location):
504
-        os.makedirs(location)
505
-    if filename.lower().endswith('.gz') or filename.lower().endswith('.tgz'):
506
-        mode = 'r:gz'
507
-    elif filename.lower().endswith('.bz2') or filename.lower().endswith('.tbz'):
508
-        mode = 'r:bz2'
509
-    elif filename.lower().endswith('.tar'):
510
-        mode = 'r'
511
-    else:
512
-        logger.warn('Cannot determine compression type for file %s' % filename)
513
-        mode = 'r:*'
514
-    tar = tarfile.open(filename, mode)
515
-    try:
516
-        # note: python<=2.5 doesnt seem to know about pax headers, filter them
517
-        leading = has_leading_dir([
518
-            member.name for member in tar.getmembers()
519
-            if member.name != 'pax_global_header'
520
-        ])
521
-        for member in tar.getmembers():
522
-            fn = member.name
523
-            if fn == 'pax_global_header':
524
-                continue
525
-            if leading:
526
-                fn = split_leading_dir(fn)[1]
527
-            path = os.path.join(location, fn)
528
-            if member.isdir():
529
-                if not os.path.exists(path):
530
-                    os.makedirs(path)
531
-            elif member.issym():
532
-                try:
533
-                    tar._extract_member(member, path)
534
-                except:
535
-                    e = sys.exc_info()[1]
536
-                    # Some corrupt tar files seem to produce this
537
-                    # (specifically bad symlinks)
538
-                    logger.warn(
539
-                        'In the tar file %s the member %s is invalid: %s'
540
-                        % (filename, member.name, e))
541
-                    continue
542
-            else:
543
-                try:
544
-                    fp = tar.extractfile(member)
545
-                except (KeyError, AttributeError):
546
-                    e = sys.exc_info()[1]
547
-                    # Some corrupt tar files seem to produce this
548
-                    # (specifically bad symlinks)
549
-                    logger.warn(
550
-                        'In the tar file %s the member %s is invalid: %s'
551
-                        % (filename, member.name, e))
552
-                    continue
553
-                if not os.path.exists(os.path.dirname(path)):
554
-                    os.makedirs(os.path.dirname(path))
555
-                destfp = open(path, 'wb')
556
-                try:
557
-                    shutil.copyfileobj(fp, destfp)
558
-                finally:
559
-                    destfp.close()
560
-                fp.close()
561
-    finally:
562
-        tar.close()
563
-
564
-
565
-def create_download_cache_folder(folder):
566
-    logger.indent -= 2
567
-    logger.notify('Creating supposed download cache at %s' % folder)
568
-    logger.indent += 2
569
-    os.makedirs(folder)
570
-
571
-
572
-def cache_download(target_file, temp_location, content_type):
573
-    logger.notify('Storing download in cache at %s' % display_path(target_file))
574
-    shutil.copyfile(temp_location, target_file)
575
-    fp = open(target_file+'.content-type', 'w')
576
-    fp.write(content_type)
577
-    fp.close()
578
-    os.unlink(temp_location)
579
-
580
-
581
-def unpack_file(filename, location, content_type, link):
582
-    if (content_type == 'application/zip'
583
-        or filename.endswith('.zip')
584
-        or filename.endswith('.pybundle')
585
-        or zipfile.is_zipfile(filename)):
586
-        unzip_file(filename, location, flatten=not filename.endswith('.pybundle'))
587
-    elif (content_type == 'application/x-gzip'
588
-          or tarfile.is_tarfile(filename)
589
-          or splitext(filename)[1].lower() in ('.tar', '.tar.gz', '.tar.bz2', '.tgz', '.tbz')):
590
-        untar_file(filename, location)
591
-    elif (content_type and content_type.startswith('text/html')
592
-          and is_svn_page(file_contents(filename))):
593
-        # We don't really care about this
594
-        from pip.vcs.subversion import Subversion
595
-        Subversion('svn+' + link.url).unpack(location)
596
-    else:
597
-        ## FIXME: handle?
598
-        ## FIXME: magic signatures?
599
-        logger.fatal('Cannot unpack file %s (downloaded from %s, content-type: %s); cannot detect archive format'
600
-                     % (filename, location, content_type))
601
-        raise InstallationError('Cannot determine archive format of %s' % location)
602
-
603
-
604
-def call_subprocess(cmd, show_stdout=True,
605
-                    filter_stdout=None, cwd=None,
606
-                    raise_on_returncode=True,
607
-                    command_level=logger.DEBUG, command_desc=None,
608
-                    extra_environ=None):
609
-    if command_desc is None:
610
-        cmd_parts = []
611
-        for part in cmd:
612
-            if ' ' in part or '\n' in part or '"' in part or "'" in part:
613
-                part = '"%s"' % part.replace('"', '\\"')
614
-            cmd_parts.append(part)
615
-        command_desc = ' '.join(cmd_parts)
616
-    if show_stdout:
617
-        stdout = None
618
-    else:
619
-        stdout = subprocess.PIPE
620
-    logger.log(command_level, "Running command %s" % command_desc)
621
-    env = os.environ.copy()
622
-    if extra_environ:
623
-        env.update(extra_environ)
624
-    try:
625
-        proc = subprocess.Popen(
626
-            cmd, stderr=subprocess.STDOUT, stdin=None, stdout=stdout,
627
-            cwd=cwd, env=env)
628
-    except Exception:
629
-        e = sys.exc_info()[1]
630
-        logger.fatal(
631
-            "Error %s while executing command %s" % (e, command_desc))
632
-        raise
633
-    all_output = []
634
-    if stdout is not None:
635
-        stdout = proc.stdout
636
-        while 1:
637
-            line = console_to_str(stdout.readline())
638
-            if not line:
639
-                break
640
-            line = line.rstrip()
641
-            all_output.append(line + '\n')
642
-            if filter_stdout:
643
-                level = filter_stdout(line)
644
-                if isinstance(level, tuple):
645
-                    level, line = level
646
-                logger.log(level, line)
647
-                if not logger.stdout_level_matches(level):
648
-                    logger.show_progress()
649
-            else:
650
-                logger.info(line)
651
-    else:
652
-        returned_stdout, returned_stderr = proc.communicate()
653
-        all_output = [returned_stdout or '']
654
-    proc.wait()
655
-    if proc.returncode:
656
-        if raise_on_returncode:
657
-            if all_output:
658
-                logger.notify('Complete output from command %s:' % command_desc)
659
-                logger.notify('\n'.join(all_output) + '\n----------------------------------------')
660
-            raise InstallationError(
661
-                "Command %s failed with error code %s in %s"
662
-                % (command_desc, proc.returncode, cwd))
663
-        else:
664
-            logger.warn(
665
-                "Command %s had error code %s in %s"
666
-                % (command_desc, proc.returncode, cwd))
667
-    if stdout is not None:
668
-        return ''.join(all_output)
669 0
deleted file mode 100644
670 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/util.pyc and /dev/null differ
671 2
deleted file mode 100644
... ...
@@ -1,251 +0,0 @@
1
-"""Handles all VCS (version control) support"""
2
-
3
-import os
4
-import shutil
5
-
6
-from pip.backwardcompat import urlparse, urllib
7
-from pip.log import logger
8
-from pip.util import (display_path, backup_dir, find_command,
9
-                      rmtree, ask_path_exists)
10
-
11
-
12
-__all__ = ['vcs', 'get_src_requirement']
13
-
14
-
15
-class VcsSupport(object):
16
-    _registry = {}
17
-    schemes = ['ssh', 'git', 'hg', 'bzr', 'sftp', 'svn']
18
-
19
-    def __init__(self):
20
-        # Register more schemes with urlparse for various version control systems
21
-        urlparse.uses_netloc.extend(self.schemes)
22
-        # Python >= 2.7.4, 3.3 doesn't have uses_fragment
23
-        if getattr(urlparse, 'uses_fragment', None):
24
-            urlparse.uses_fragment.extend(self.schemes)
25
-        super(VcsSupport, self).__init__()
26
-
27
-    def __iter__(self):
28
-        return self._registry.__iter__()
29
-
30
-    @property
31
-    def backends(self):
32
-        return list(self._registry.values())
33
-
34
-    @property
35
-    def dirnames(self):
36
-        return [backend.dirname for backend in self.backends]
37
-
38
-    @property
39
-    def all_schemes(self):
40
-        schemes = []
41
-        for backend in self.backends:
42
-            schemes.extend(backend.schemes)
43
-        return schemes
44
-
45
-    def register(self, cls):
46
-        if not hasattr(cls, 'name'):
47
-            logger.warn('Cannot register VCS %s' % cls.__name__)
48
-            return
49
-        if cls.name not in self._registry:
50
-            self._registry[cls.name] = cls
51
-
52
-    def unregister(self, cls=None, name=None):
53
-        if name in self._registry:
54
-            del self._registry[name]
55
-        elif cls in self._registry.values():
56
-            del self._registry[cls.name]
57
-        else:
58
-            logger.warn('Cannot unregister because no class or name given')
59
-
60
-    def get_backend_name(self, location):
61
-        """
62
-        Return the name of the version control backend if found at given
63
-        location, e.g. vcs.get_backend_name('/path/to/vcs/checkout')
64
-        """
65
-        for vc_type in self._registry.values():
66
-            path = os.path.join(location, vc_type.dirname)
67
-            if os.path.exists(path):
68
-                return vc_type.name
69
-        return None
70
-
71
-    def get_backend(self, name):
72
-        name = name.lower()
73
-        if name in self._registry:
74
-            return self._registry[name]
75
-
76
-    def get_backend_from_location(self, location):
77
-        vc_type = self.get_backend_name(location)
78
-        if vc_type:
79
-            return self.get_backend(vc_type)
80
-        return None
81
-
82
-
83
-vcs = VcsSupport()
84
-
85
-
86
-class VersionControl(object):
87
-    name = ''
88
-    dirname = ''
89
-
90
-    def __init__(self, url=None, *args, **kwargs):
91
-        self.url = url
92
-        self._cmd = None
93
-        super(VersionControl, self).__init__(*args, **kwargs)
94
-
95
-    def _filter(self, line):
96
-        return (logger.INFO, line)
97
-
98
-    def _is_local_repository(self, repo):
99
-        """
100
-           posix absolute paths start with os.path.sep,
101
-           win32 ones ones start with drive (like c:\\folder)
102
-        """
103
-        drive, tail = os.path.splitdrive(repo)
104
-        return repo.startswith(os.path.sep) or drive
105
-
106
-    @property
107
-    def cmd(self):
108
-        if self._cmd is not None:
109
-            return self._cmd
110
-        command = find_command(self.name)
111
-        logger.info('Found command %r at %r' % (self.name, command))
112
-        self._cmd = command
113
-        return command
114
-
115
-    def get_url_rev(self):
116
-        """
117
-        Returns the correct repository URL and revision by parsing the given
118
-        repository URL
119
-        """
120
-        error_message = (
121
-           "Sorry, '%s' is a malformed VCS url. "
122
-           "The format is <vcs>+<protocol>://<url>, "
123
-           "e.g. svn+http://myrepo/svn/MyApp#egg=MyApp")
124
-        assert '+' in self.url, error_message % self.url
125
-        url = self.url.split('+', 1)[1]
126
-        scheme, netloc, path, query, frag = urlparse.urlsplit(url)
127
-        rev = None
128
-        if '@' in path:
129
-            path, rev = path.rsplit('@', 1)
130
-        url = urlparse.urlunsplit((scheme, netloc, path, query, ''))
131
-        return url, rev
132
-
133
-    def get_info(self, location):
134
-        """
135
-        Returns (url, revision), where both are strings
136
-        """
137
-        assert not location.rstrip('/').endswith(self.dirname), 'Bad directory: %s' % location
138
-        return self.get_url(location), self.get_revision(location)
139
-
140
-    def normalize_url(self, url):
141
-        """
142
-        Normalize a URL for comparison by unquoting it and removing any trailing slash.
143
-        """
144
-        return urllib.unquote(url).rstrip('/')
145
-
146
-    def compare_urls(self, url1, url2):
147
-        """
148
-        Compare two repo URLs for identity, ignoring incidental differences.
149
-        """
150
-        return (self.normalize_url(url1) == self.normalize_url(url2))
151
-
152
-    def parse_vcs_bundle_file(self, content):
153
-        """
154
-        Takes the contents of the bundled text file that explains how to revert
155
-        the stripped off version control data of the given package and returns
156
-        the URL and revision of it.
157
-        """
158
-        raise NotImplementedError
159
-
160
-    def obtain(self, dest):
161
-        """
162
-        Called when installing or updating an editable package, takes the
163
-        source path of the checkout.
164
-        """
165
-        raise NotImplementedError
166
-
167
-    def switch(self, dest, url, rev_options):
168
-        """
169
-        Switch the repo at ``dest`` to point to ``URL``.
170
-        """
171
-        raise NotImplemented
172
-
173
-    def update(self, dest, rev_options):
174
-        """
175
-        Update an already-existing repo to the given ``rev_options``.
176
-        """
177
-        raise NotImplementedError
178
-
179
-    def check_destination(self, dest, url, rev_options, rev_display):
180
-        """
181
-        Prepare a location to receive a checkout/clone.
182
-
183
-        Return True if the location is ready for (and requires) a
184
-        checkout/clone, False otherwise.
185
-        """
186
-        checkout = True
187
-        prompt = False
188
-        if os.path.exists(dest):
189
-            checkout = False
190
-            if os.path.exists(os.path.join(dest, self.dirname)):
191
-                existing_url = self.get_url(dest)
192
-                if self.compare_urls(existing_url, url):
193
-                    logger.info('%s in %s exists, and has correct URL (%s)' %
194
-                                (self.repo_name.title(), display_path(dest),
195
-                                 url))
196
-                    logger.notify('Updating %s %s%s' %
197
-                                  (display_path(dest), self.repo_name,
198
-                                   rev_display))
199
-                    self.update(dest, rev_options)
200
-                else:
201
-                    logger.warn('%s %s in %s exists with URL %s' %
202
-                                (self.name, self.repo_name,
203
-                                 display_path(dest), existing_url))
204
-                    prompt = ('(s)witch, (i)gnore, (w)ipe, (b)ackup ',
205
-                              ('s', 'i', 'w', 'b'))
206
-            else:
207
-                logger.warn('Directory %s already exists, '
208
-                            'and is not a %s %s.' %
209
-                            (dest, self.name, self.repo_name))
210
-                prompt = ('(i)gnore, (w)ipe, (b)ackup ', ('i', 'w', 'b'))
211
-        if prompt:
212
-            logger.warn('The plan is to install the %s repository %s' %
213
-                        (self.name, url))
214
-            response = ask_path_exists('What to do?  %s' % prompt[0],
215
-                                       prompt[1])
216
-
217
-            if response == 's':
218
-                logger.notify('Switching %s %s to %s%s' %
219
-                              (self.repo_name, display_path(dest), url,
220
-                               rev_display))
221
-                self.switch(dest, url, rev_options)
222
-            elif response == 'i':
223
-                # do nothing
224
-                pass
225
-            elif response == 'w':
226
-                logger.warn('Deleting %s' % display_path(dest))
227
-                rmtree(dest)
228
-                checkout = True
229
-            elif response == 'b':
230
-                dest_dir = backup_dir(dest)
231
-                logger.warn('Backing up %s to %s'
232
-                            % (display_path(dest), dest_dir))
233
-                shutil.move(dest, dest_dir)
234
-                checkout = True
235
-        return checkout
236
-
237
-    def unpack(self, location):
238
-        if os.path.exists(location):
239
-            rmtree(location)
240
-        self.obtain(location)
241
-
242
-    def get_src_requirement(self, dist, location, find_tags=False):
243
-        raise NotImplementedError
244
-
245
-
246
-def get_src_requirement(dist, location, find_tags):
247
-    version_control = vcs.get_backend_from_location(location)
248
-    if version_control:
249
-        return version_control().get_src_requirement(dist, location, find_tags)
250
-    logger.warn('cannot determine version of editable source in %s (is not SVN checkout, Git clone, Mercurial clone or Bazaar branch)' % location)
251
-    return dist.as_requirement()
252 0
deleted file mode 100644
253 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/vcs/__init__.pyc and /dev/null differ
254 2
deleted file mode 100644
... ...
@@ -1,131 +0,0 @@
1
-import os
2
-import tempfile
3
-import re
4
-from pip.backwardcompat import urlparse
5
-from pip.log import logger
6
-from pip.util import rmtree, display_path, call_subprocess
7
-from pip.vcs import vcs, VersionControl
8
-from pip.download import path_to_url2
9
-
10
-
11
-class Bazaar(VersionControl):
12
-    name = 'bzr'
13
-    dirname = '.bzr'
14
-    repo_name = 'branch'
15
-    bundle_file = 'bzr-branch.txt'
16
-    schemes = ('bzr', 'bzr+http', 'bzr+https', 'bzr+ssh', 'bzr+sftp', 'bzr+ftp', 'bzr+lp')
17
-    guide = ('# This was a Bazaar branch; to make it a branch again run:\n'
18
-             'bzr branch -r %(rev)s %(url)s .\n')
19
-
20
-    def __init__(self, url=None, *args, **kwargs):
21
-        super(Bazaar, self).__init__(url, *args, **kwargs)
22
-        # Python >= 2.7.4, 3.3 doesn't have uses_fragment or non_hierarchical
23
-        # Register lp but do not expose as a scheme to support bzr+lp.
24
-        if getattr(urlparse, 'uses_fragment', None):
25
-            urlparse.uses_fragment.extend(['lp'])
26
-            urlparse.non_hierarchical.extend(['lp'])
27
-
28
-    def parse_vcs_bundle_file(self, content):
29
-        url = rev = None
30
-        for line in content.splitlines():
31
-            if not line.strip() or line.strip().startswith('#'):
32
-                continue
33
-            match = re.search(r'^bzr\s*branch\s*-r\s*(\d*)', line)
34
-            if match:
35
-                rev = match.group(1).strip()
36
-            url = line[match.end():].strip().split(None, 1)[0]
37
-            if url and rev:
38
-                return url, rev
39
-        return None, None
40
-
41
-    def export(self, location):
42
-        """Export the Bazaar repository at the url to the destination location"""
43
-        temp_dir = tempfile.mkdtemp('-export', 'pip-')
44
-        self.unpack(temp_dir)
45
-        if os.path.exists(location):
46
-            # Remove the location to make sure Bazaar can export it correctly
47
-            rmtree(location)
48
-        try:
49
-            call_subprocess([self.cmd, 'export', location], cwd=temp_dir,
50
-                            filter_stdout=self._filter, show_stdout=False)
51
-        finally:
52
-            rmtree(temp_dir)
53
-
54
-    def switch(self, dest, url, rev_options):
55
-        call_subprocess([self.cmd, 'switch', url], cwd=dest)
56
-
57
-    def update(self, dest, rev_options):
58
-        call_subprocess(
59
-            [self.cmd, 'pull', '-q'] + rev_options, cwd=dest)
60
-
61
-    def obtain(self, dest):
62
-        url, rev = self.get_url_rev()
63
-        if rev:
64
-            rev_options = ['-r', rev]
65
-            rev_display = ' (to revision %s)' % rev
66
-        else:
67
-            rev_options = []
68
-            rev_display = ''
69
-        if self.check_destination(dest, url, rev_options, rev_display):
70
-            logger.notify('Checking out %s%s to %s'
71
-                          % (url, rev_display, display_path(dest)))
72
-            call_subprocess(
73
-                [self.cmd, 'branch', '-q'] + rev_options + [url, dest])
74
-
75
-    def get_url_rev(self):
76
-        # hotfix the URL scheme after removing bzr+ from bzr+ssh:// readd it
77
-        url, rev = super(Bazaar, self).get_url_rev()
78
-        if url.startswith('ssh://'):
79
-            url = 'bzr+' + url
80
-        return url, rev
81
-
82
-    def get_url(self, location):
83
-        urls = call_subprocess(
84
-            [self.cmd, 'info'], show_stdout=False, cwd=location)
85
-        for line in urls.splitlines():
86
-            line = line.strip()
87
-            for x in ('checkout of branch: ',
88
-                      'parent branch: '):
89
-                if line.startswith(x):
90
-                    repo = line.split(x)[1]
91
-                    if self._is_local_repository(repo):
92
-                        return path_to_url2(repo)
93
-                    return repo
94
-        return None
95
-
96
-    def get_revision(self, location):
97
-        revision = call_subprocess(
98
-            [self.cmd, 'revno'], show_stdout=False, cwd=location)
99
-        return revision.splitlines()[-1]
100
-
101
-    def get_tag_revs(self, location):
102
-        tags = call_subprocess(
103
-            [self.cmd, 'tags'], show_stdout=False, cwd=location)
104
-        tag_revs = []
105
-        for line in tags.splitlines():
106
-            tags_match = re.search(r'([.\w-]+)\s*(.*)$', line)
107
-            if tags_match:
108
-                tag = tags_match.group(1)
109
-                rev = tags_match.group(2)
110
-                tag_revs.append((rev.strip(), tag.strip()))
111
-        return dict(tag_revs)
112
-
113
-    def get_src_requirement(self, dist, location, find_tags):
114
-        repo = self.get_url(location)
115
-        if not repo.lower().startswith('bzr:'):
116
-            repo = 'bzr+' + repo
117
-        egg_project_name = dist.egg_name().split('-', 1)[0]
118
-        if not repo:
119
-            return None
120
-        current_rev = self.get_revision(location)
121
-        tag_revs = self.get_tag_revs(location)
122
-
123
-        if current_rev in tag_revs:
124
-            # It's a tag
125
-            full_egg_name = '%s-%s' % (egg_project_name, tag_revs[current_rev])
126
-        else:
127
-            full_egg_name = '%s-dev_r%s' % (dist.egg_name(), current_rev)
128
-        return '%s@%s#egg=%s' % (repo, current_rev, full_egg_name)
129
-
130
-
131
-vcs.register(Bazaar)
132 0
deleted file mode 100644
133 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/vcs/bazaar.pyc and /dev/null differ
134 2
deleted file mode 100644
... ...
@@ -1,220 +0,0 @@
1
-import tempfile
2
-import re
3
-import os.path
4
-from pip.util import call_subprocess
5
-from pip.util import display_path, rmtree
6
-from pip.vcs import vcs, VersionControl
7
-from pip.log import logger
8
-from pip.backwardcompat import url2pathname, urlparse
9
-urlsplit = urlparse.urlsplit
10
-urlunsplit = urlparse.urlunsplit
11
-
12
-
13
-class Git(VersionControl):
14
-    name = 'git'
15
-    dirname = '.git'
16
-    repo_name = 'clone'
17
-    schemes = ('git', 'git+http', 'git+https', 'git+ssh', 'git+git', 'git+file')
18
-    bundle_file = 'git-clone.txt'
19
-    guide = ('# This was a Git repo; to make it a repo again run:\n'
20
-        'git init\ngit remote add origin %(url)s -f\ngit checkout %(rev)s\n')
21
-
22
-    def __init__(self, url=None, *args, **kwargs):
23
-
24
-        # Works around an apparent Git bug
25
-        # (see http://article.gmane.org/gmane.comp.version-control.git/146500)
26
-        if url:
27
-            scheme, netloc, path, query, fragment = urlsplit(url)
28
-            if scheme.endswith('file'):
29
-                initial_slashes = path[:-len(path.lstrip('/'))]
30
-                newpath = initial_slashes + url2pathname(path).replace('\\', '/').lstrip('/')
31
-                url = urlunsplit((scheme, netloc, newpath, query, fragment))
32
-                after_plus = scheme.find('+') + 1
33
-                url = scheme[:after_plus] + urlunsplit((scheme[after_plus:], netloc, newpath, query, fragment))
34
-
35
-        super(Git, self).__init__(url, *args, **kwargs)
36
-
37
-    def parse_vcs_bundle_file(self, content):
38
-        url = rev = None
39
-        for line in content.splitlines():
40
-            if not line.strip() or line.strip().startswith('#'):
41
-                continue
42
-            url_match = re.search(r'git\s*remote\s*add\s*origin(.*)\s*-f', line)
43
-            if url_match:
44
-                url = url_match.group(1).strip()
45
-            rev_match = re.search(r'^git\s*checkout\s*-q\s*(.*)\s*', line)
46
-            if rev_match:
47
-                rev = rev_match.group(1).strip()
48
-            if url and rev:
49
-                return url, rev
50
-        return None, None
51
-
52
-    def export(self, location):
53
-        """Export the Git repository at the url to the destination location"""
54
-        temp_dir = tempfile.mkdtemp('-export', 'pip-')
55
-        self.unpack(temp_dir)
56
-        try:
57
-            if not location.endswith('/'):
58
-                location = location + '/'
59
-            call_subprocess(
60
-                [self.cmd, 'checkout-index', '-a', '-f', '--prefix', location],
61
-                filter_stdout=self._filter, show_stdout=False, cwd=temp_dir)
62
-        finally:
63
-            rmtree(temp_dir)
64
-
65
-    def check_rev_options(self, rev, dest, rev_options):
66
-        """Check the revision options before checkout to compensate that tags
67
-        and branches may need origin/ as a prefix.
68
-        Returns the SHA1 of the branch or tag if found.
69
-        """
70
-        revisions = self.get_tag_revs(dest)
71
-        revisions.update(self.get_branch_revs(dest))
72
-
73
-        origin_rev = 'origin/%s' % rev
74
-        if origin_rev in revisions:
75
-            # remote branch
76
-            return [revisions[origin_rev]]
77
-        elif rev in revisions:
78
-            # a local tag or branch name
79
-            return [revisions[rev]]
80
-        else:
81
-            logger.warn("Could not find a tag or branch '%s', assuming commit." % rev)
82
-            return rev_options
83
-
84
-    def switch(self, dest, url, rev_options):
85
-        call_subprocess(
86
-            [self.cmd, 'config', 'remote.origin.url', url], cwd=dest)
87
-        call_subprocess(
88
-            [self.cmd, 'checkout', '-q'] + rev_options, cwd=dest)
89
-
90
-        self.update_submodules(dest)
91
-
92
-    def update(self, dest, rev_options):
93
-        # First fetch changes from the default remote
94
-        call_subprocess([self.cmd, 'fetch', '-q'], cwd=dest)
95
-        # Then reset to wanted revision (maby even origin/master)
96
-        if rev_options:
97
-            rev_options = self.check_rev_options(rev_options[0], dest, rev_options)
98
-        call_subprocess([self.cmd, 'reset', '--hard', '-q'] + rev_options, cwd=dest)
99
-        #: update submodules
100
-        self.update_submodules(dest)
101
-
102
-    def obtain(self, dest):
103
-        url, rev = self.get_url_rev()
104
-        if rev:
105
-            rev_options = [rev]
106
-            rev_display = ' (to %s)' % rev
107
-        else:
108
-            rev_options = ['origin/master']
109
-            rev_display = ''
110
-        if self.check_destination(dest, url, rev_options, rev_display):
111
-            logger.notify('Cloning %s%s to %s' % (url, rev_display, display_path(dest)))
112
-            call_subprocess([self.cmd, 'clone', '-q', url, dest])
113
-            #: repo may contain submodules
114
-            self.update_submodules(dest)
115
-            if rev:
116
-                rev_options = self.check_rev_options(rev, dest, rev_options)
117
-                # Only do a checkout if rev_options differs from HEAD
118
-                if not self.get_revision(dest).startswith(rev_options[0]):
119
-                    call_subprocess([self.cmd, 'checkout', '-q'] + rev_options, cwd=dest)
120
-
121
-    def get_url(self, location):
122
-        url = call_subprocess(
123
-            [self.cmd, 'config', 'remote.origin.url'],
124
-            show_stdout=False, cwd=location)
125
-        return url.strip()
126
-
127
-    def get_revision(self, location):
128
-        current_rev = call_subprocess(
129
-            [self.cmd, 'rev-parse', 'HEAD'], show_stdout=False, cwd=location)
130
-        return current_rev.strip()
131
-
132
-    def get_tag_revs(self, location):
133
-        tags = self._get_all_tag_names(location)
134
-        tag_revs = {}
135
-        for line in tags.splitlines():
136
-            tag = line.strip()
137
-            rev = self._get_revision_from_rev_parse(tag, location)
138
-            tag_revs[tag] = rev.strip()
139
-        return tag_revs
140
-
141
-    def get_branch_revs(self, location):
142
-        branches = self._get_all_branch_names(location)
143
-        branch_revs = {}
144
-        for line in branches.splitlines():
145
-            if '(no branch)' in line:
146
-                continue
147
-            line = line.split('->')[0].strip()
148
-            # actual branch case
149
-            branch = "".join(b for b in line.split() if b != '*')
150
-            rev = self._get_revision_from_rev_parse(branch, location)
151
-            branch_revs[branch] = rev.strip()
152
-        return branch_revs
153
-
154
-    def get_src_requirement(self, dist, location, find_tags):
155
-        repo = self.get_url(location)
156
-        if not repo.lower().startswith('git:'):
157
-            repo = 'git+' + repo
158
-        egg_project_name = dist.egg_name().split('-', 1)[0]
159
-        if not repo:
160
-            return None
161
-        current_rev = self.get_revision(location)
162
-        tag_revs = self.get_tag_revs(location)
163
-        branch_revs = self.get_branch_revs(location)
164
-
165
-        if current_rev in tag_revs:
166
-            # It's a tag
167
-            full_egg_name = '%s-%s' % (egg_project_name, tag_revs[current_rev])
168
-        elif (current_rev in branch_revs and
169
-              branch_revs[current_rev] != 'origin/master'):
170
-            # It's the head of a branch
171
-            full_egg_name = '%s-%s' % (
172
-                egg_project_name,
173
-                branch_revs[current_rev].replace('origin/', '')
174
-            )
175
-        else:
176
-            full_egg_name = '%s-dev' % egg_project_name
177
-
178
-        return '%s@%s#egg=%s' % (repo, current_rev, full_egg_name)
179
-
180
-    def get_url_rev(self):
181
-        """
182
-        Prefixes stub URLs like 'user@hostname:user/repo.git' with 'ssh://'.
183
-        That's required because although they use SSH they sometimes doesn't
184
-        work with a ssh:// scheme (e.g. Github). But we need a scheme for
185
-        parsing. Hence we remove it again afterwards and return it as a stub.
186
-        """
187
-        if not '://' in self.url:
188
-            assert not 'file:' in self.url
189
-            self.url = self.url.replace('git+', 'git+ssh://')
190
-            url, rev = super(Git, self).get_url_rev()
191
-            url = url.replace('ssh://', '')
192
-        else:
193
-            url, rev = super(Git, self).get_url_rev()
194
-
195
-        return url, rev
196
-
197
-    def _get_all_tag_names(self, location):
198
-        return call_subprocess([self.cmd, 'tag', '-l'],
199
-                               show_stdout=False,
200
-                               raise_on_returncode=False,
201
-                               cwd=location)
202
-
203
-    def _get_all_branch_names(self, location):
204
-        remote_branches = call_subprocess([self.cmd, 'branch', '-r'],
205
-                                          show_stdout=False, cwd=location)
206
-        local_branches = call_subprocess([self.cmd, 'branch', '-l'],
207
-                                         show_stdout=False, cwd=location)
208
-        return remote_branches + local_branches
209
-
210
-    def _get_revision_from_rev_parse(self, name, location):
211
-        return call_subprocess([self.cmd, 'rev-parse', name],
212
-                               show_stdout=False, cwd=location)
213
-
214
-    def update_submodules(self, location):
215
-        if not os.path.exists(os.path.join(location, '.gitmodules')):
216
-            return
217
-        call_subprocess([self.cmd, 'submodule', 'update', '--init', '--recursive', '-q'],
218
-                        cwd=location)
219
-
220
-vcs.register(Git)
221 0
deleted file mode 100644
222 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/vcs/git.pyc and /dev/null differ
223 2
deleted file mode 100644
... ...
@@ -1,151 +0,0 @@
1
-import os
2
-import tempfile
3
-import re
4
-import sys
5
-from pip.util import call_subprocess
6
-from pip.util import display_path, rmtree
7
-from pip.log import logger
8
-from pip.vcs import vcs, VersionControl
9
-from pip.download import path_to_url2
10
-from pip.backwardcompat import ConfigParser
11
-
12
-
13
-class Mercurial(VersionControl):
14
-    name = 'hg'
15
-    dirname = '.hg'
16
-    repo_name = 'clone'
17
-    schemes = ('hg', 'hg+http', 'hg+https', 'hg+ssh', 'hg+static-http')
18
-    bundle_file = 'hg-clone.txt'
19
-    guide = ('# This was a Mercurial repo; to make it a repo again run:\n'
20
-            'hg init\nhg pull %(url)s\nhg update -r %(rev)s\n')
21
-
22
-    def parse_vcs_bundle_file(self, content):
23
-        url = rev = None
24
-        for line in content.splitlines():
25
-            if not line.strip() or line.strip().startswith('#'):
26
-                continue
27
-            url_match = re.search(r'hg\s*pull\s*(.*)\s*', line)
28
-            if url_match:
29
-                url = url_match.group(1).strip()
30
-            rev_match = re.search(r'^hg\s*update\s*-r\s*(.*)\s*', line)
31
-            if rev_match:
32
-                rev = rev_match.group(1).strip()
33
-            if url and rev:
34
-                return url, rev
35
-        return None, None
36
-
37
-    def export(self, location):
38
-        """Export the Hg repository at the url to the destination location"""
39
-        temp_dir = tempfile.mkdtemp('-export', 'pip-')
40
-        self.unpack(temp_dir)
41
-        try:
42
-            call_subprocess(
43
-                [self.cmd, 'archive', location],
44
-                filter_stdout=self._filter, show_stdout=False, cwd=temp_dir)
45
-        finally:
46
-            rmtree(temp_dir)
47
-
48
-    def switch(self, dest, url, rev_options):
49
-        repo_config = os.path.join(dest, self.dirname, 'hgrc')
50
-        config = ConfigParser.SafeConfigParser()
51
-        try:
52
-            config.read(repo_config)
53
-            config.set('paths', 'default', url)
54
-            config_file = open(repo_config, 'w')
55
-            config.write(config_file)
56
-            config_file.close()
57
-        except (OSError, ConfigParser.NoSectionError):
58
-            e = sys.exc_info()[1]
59
-            logger.warn(
60
-                'Could not switch Mercurial repository to %s: %s'
61
-                % (url, e))
62
-        else:
63
-            call_subprocess([self.cmd, 'update', '-q'] + rev_options, cwd=dest)
64
-
65
-    def update(self, dest, rev_options):
66
-        call_subprocess([self.cmd, 'pull', '-q'], cwd=dest)
67
-        call_subprocess(
68
-            [self.cmd, 'update', '-q'] + rev_options, cwd=dest)
69
-
70
-    def obtain(self, dest):
71
-        url, rev = self.get_url_rev()
72
-        if rev:
73
-            rev_options = [rev]
74
-            rev_display = ' (to revision %s)' % rev
75
-        else:
76
-            rev_options = []
77
-            rev_display = ''
78
-        if self.check_destination(dest, url, rev_options, rev_display):
79
-            logger.notify('Cloning hg %s%s to %s'
80
-                          % (url, rev_display, display_path(dest)))
81
-            call_subprocess([self.cmd, 'clone', '--noupdate', '-q', url, dest])
82
-            call_subprocess([self.cmd, 'update', '-q'] + rev_options, cwd=dest)
83
-
84
-    def get_url(self, location):
85
-        url = call_subprocess(
86
-            [self.cmd, 'showconfig', 'paths.default'],
87
-            show_stdout=False, cwd=location).strip()
88
-        if self._is_local_repository(url):
89
-            url = path_to_url2(url)
90
-        return url.strip()
91
-
92
-    def get_tag_revs(self, location):
93
-        tags = call_subprocess(
94
-            [self.cmd, 'tags'], show_stdout=False, cwd=location)
95
-        tag_revs = []
96
-        for line in tags.splitlines():
97
-            tags_match = re.search(r'([\w\d\.-]+)\s*([\d]+):.*$', line)
98
-            if tags_match:
99
-                tag = tags_match.group(1)
100
-                rev = tags_match.group(2)
101
-                if "tip" != tag:
102
-                    tag_revs.append((rev.strip(), tag.strip()))
103
-        return dict(tag_revs)
104
-
105
-    def get_branch_revs(self, location):
106
-        branches = call_subprocess(
107
-            [self.cmd, 'branches'], show_stdout=False, cwd=location)
108
-        branch_revs = []
109
-        for line in branches.splitlines():
110
-            branches_match = re.search(r'([\w\d\.-]+)\s*([\d]+):.*$', line)
111
-            if branches_match:
112
-                branch = branches_match.group(1)
113
-                rev = branches_match.group(2)
114
-                if "default" != branch:
115
-                    branch_revs.append((rev.strip(), branch.strip()))
116
-        return dict(branch_revs)
117
-
118
-    def get_revision(self, location):
119
-        current_revision = call_subprocess(
120
-            [self.cmd, 'parents', '--template={rev}'],
121
-            show_stdout=False, cwd=location).strip()
122
-        return current_revision
123
-
124
-    def get_revision_hash(self, location):
125
-        current_rev_hash = call_subprocess(
126
-            [self.cmd, 'parents', '--template={node}'],
127
-            show_stdout=False, cwd=location).strip()
128
-        return current_rev_hash
129
-
130
-    def get_src_requirement(self, dist, location, find_tags):
131
-        repo = self.get_url(location)
132
-        if not repo.lower().startswith('hg:'):
133
-            repo = 'hg+' + repo
134
-        egg_project_name = dist.egg_name().split('-', 1)[0]
135
-        if not repo:
136
-            return None
137
-        current_rev = self.get_revision(location)
138
-        current_rev_hash = self.get_revision_hash(location)
139
-        tag_revs = self.get_tag_revs(location)
140
-        branch_revs = self.get_branch_revs(location)
141
-        if current_rev in tag_revs:
142
-            # It's a tag
143
-            full_egg_name = '%s-%s' % (egg_project_name, tag_revs[current_rev])
144
-        elif current_rev in branch_revs:
145
-            # It's the tip of a branch
146
-            full_egg_name = '%s-%s' % (egg_project_name, branch_revs[current_rev])
147
-        else:
148
-            full_egg_name = '%s-dev' % egg_project_name
149
-        return '%s@%s#egg=%s' % (repo, current_rev_hash, full_egg_name)
150
-
151
-vcs.register(Mercurial)
152 0
deleted file mode 100644
153 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/vcs/mercurial.pyc and /dev/null differ
154 2
deleted file mode 100644
... ...
@@ -1,272 +0,0 @@
1
-import os
2
-import re
3
-from pip.backwardcompat import urlparse
4
-from pip import InstallationError
5
-from pip.index import Link
6
-from pip.util import rmtree, display_path, call_subprocess
7
-from pip.log import logger
8
-from pip.vcs import vcs, VersionControl
9
-
10
-_svn_xml_url_re = re.compile('url="([^"]+)"')
11
-_svn_rev_re = re.compile('committed-rev="(\d+)"')
12
-_svn_url_re = re.compile(r'URL: (.+)')
13
-_svn_revision_re = re.compile(r'Revision: (.+)')
14
-_svn_info_xml_rev_re = re.compile(r'\s*revision="(\d+)"')
15
-_svn_info_xml_url_re = re.compile(r'<url>(.*)</url>')
16
-
17
-
18
-class Subversion(VersionControl):
19
-    name = 'svn'
20
-    dirname = '.svn'
21
-    repo_name = 'checkout'
22
-    schemes = ('svn', 'svn+ssh', 'svn+http', 'svn+https', 'svn+svn')
23
-    bundle_file = 'svn-checkout.txt'
24
-    guide = ('# This was an svn checkout; to make it a checkout again run:\n'
25
-            'svn checkout --force -r %(rev)s %(url)s .\n')
26
-
27
-    def get_info(self, location):
28
-        """Returns (url, revision), where both are strings"""
29
-        assert not location.rstrip('/').endswith(self.dirname), 'Bad directory: %s' % location
30
-        output = call_subprocess(
31
-            [self.cmd, 'info', location], show_stdout=False, extra_environ={'LANG': 'C'})
32
-        match = _svn_url_re.search(output)
33
-        if not match:
34
-            logger.warn('Cannot determine URL of svn checkout %s' % display_path(location))
35
-            logger.info('Output that cannot be parsed: \n%s' % output)
36
-            return None, None
37
-        url = match.group(1).strip()
38
-        match = _svn_revision_re.search(output)
39
-        if not match:
40
-            logger.warn('Cannot determine revision of svn checkout %s' % display_path(location))
41
-            logger.info('Output that cannot be parsed: \n%s' % output)
42
-            return url, None
43
-        return url, match.group(1)
44
-
45
-    def parse_vcs_bundle_file(self, content):
46
-        for line in content.splitlines():
47
-            if not line.strip() or line.strip().startswith('#'):
48
-                continue
49
-            match = re.search(r'^-r\s*([^ ])?', line)
50
-            if not match:
51
-                return None, None
52
-            rev = match.group(1)
53
-            rest = line[match.end():].strip().split(None, 1)[0]
54
-            return rest, rev
55
-        return None, None
56
-
57
-    def export(self, location):
58
-        """Export the svn repository at the url to the destination location"""
59
-        url, rev = self.get_url_rev()
60
-        rev_options = get_rev_options(url, rev)
61
-        logger.notify('Exporting svn repository %s to %s' % (url, location))
62
-        logger.indent += 2
63
-        try:
64
-            if os.path.exists(location):
65
-                # Subversion doesn't like to check out over an existing directory
66
-                # --force fixes this, but was only added in svn 1.5
67
-                rmtree(location)
68
-            call_subprocess(
69
-                [self.cmd, 'export'] + rev_options + [url, location],
70
-                filter_stdout=self._filter, show_stdout=False)
71
-        finally:
72
-            logger.indent -= 2
73
-
74
-    def switch(self, dest, url, rev_options):
75
-        call_subprocess(
76
-            [self.cmd, 'switch'] + rev_options + [url, dest])
77
-
78
-    def update(self, dest, rev_options):
79
-        call_subprocess(
80
-            [self.cmd, 'update'] + rev_options + [dest])
81
-
82
-    def obtain(self, dest):
83
-        url, rev = self.get_url_rev()
84
-        rev_options = get_rev_options(url, rev)
85
-        if rev:
86
-            rev_display = ' (to revision %s)' % rev
87
-        else:
88
-            rev_display = ''
89
-        if self.check_destination(dest, url, rev_options, rev_display):
90
-            logger.notify('Checking out %s%s to %s'
91
-                          % (url, rev_display, display_path(dest)))
92
-            call_subprocess(
93
-                [self.cmd, 'checkout', '-q'] + rev_options + [url, dest])
94
-
95
-    def get_location(self, dist, dependency_links):
96
-        for url in dependency_links:
97
-            egg_fragment = Link(url).egg_fragment
98
-            if not egg_fragment:
99
-                continue
100
-            if '-' in egg_fragment:
101
-                ## FIXME: will this work when a package has - in the name?
102
-                key = '-'.join(egg_fragment.split('-')[:-1]).lower()
103
-            else:
104
-                key = egg_fragment
105
-            if key == dist.key:
106
-                return url.split('#', 1)[0]
107
-        return None
108
-
109
-    def get_revision(self, location):
110
-        """
111
-        Return the maximum revision for all files under a given location
112
-        """
113
-        # Note: taken from setuptools.command.egg_info
114
-        revision = 0
115
-
116
-        for base, dirs, files in os.walk(location):
117
-            if self.dirname not in dirs:
118
-                dirs[:] = []
119
-                continue    # no sense walking uncontrolled subdirs
120
-            dirs.remove(self.dirname)
121
-            entries_fn = os.path.join(base, self.dirname, 'entries')
122
-            if not os.path.exists(entries_fn):
123
-                ## FIXME: should we warn?
124
-                continue
125
-
126
-            dirurl, localrev = self._get_svn_url_rev(base)
127
-
128
-            if base == location:
129
-                base_url = dirurl + '/'   # save the root url
130
-            elif not dirurl or not dirurl.startswith(base_url):
131
-                dirs[:] = []
132
-                continue    # not part of the same svn tree, skip it
133
-            revision = max(revision, localrev)
134
-        return revision
135
-
136
-    def get_url_rev(self):
137
-        # hotfix the URL scheme after removing svn+ from svn+ssh:// readd it
138
-        url, rev = super(Subversion, self).get_url_rev()
139
-        if url.startswith('ssh://'):
140
-            url = 'svn+' + url
141
-        return url, rev
142
-
143
-    def get_url(self, location):
144
-        # In cases where the source is in a subdirectory, not alongside setup.py
145
-        # we have to look up in the location until we find a real setup.py
146
-        orig_location = location
147
-        while not os.path.exists(os.path.join(location, 'setup.py')):
148
-            last_location = location
149
-            location = os.path.dirname(location)
150
-            if location == last_location:
151
-                # We've traversed up to the root of the filesystem without finding setup.py
152
-                logger.warn("Could not find setup.py for directory %s (tried all parent directories)"
153
-                            % orig_location)
154
-                return None
155
-
156
-        return self._get_svn_url_rev(location)[0]
157
-
158
-    def _get_svn_url_rev(self, location):
159
-        f = open(os.path.join(location, self.dirname, 'entries'))
160
-        data = f.read()
161
-        f.close()
162
-        if data.startswith('8') or data.startswith('9') or data.startswith('10'):
163
-            data = list(map(str.splitlines, data.split('\n\x0c\n')))
164
-            del data[0][0]  # get rid of the '8'
165
-            url = data[0][3]
166
-            revs = [int(d[9]) for d in data if len(d) > 9 and d[9]] + [0]
167
-        elif data.startswith('<?xml'):
168
-            match = _svn_xml_url_re.search(data)
169
-            if not match:
170
-                raise ValueError('Badly formatted data: %r' % data)
171
-            url = match.group(1)    # get repository URL
172
-            revs = [int(m.group(1)) for m in _svn_rev_re.finditer(data)] + [0]
173
-        else:
174
-            try:
175
-                # subversion >= 1.7
176
-                xml = call_subprocess([self.cmd, 'info', '--xml', location], show_stdout=False)
177
-                url = _svn_info_xml_url_re.search(xml).group(1)
178
-                revs = [int(m.group(1)) for m in _svn_info_xml_rev_re.finditer(xml)]
179
-            except InstallationError:
180
-                url, revs = None, []
181
-
182
-        if revs:
183
-            rev = max(revs)
184
-        else:
185
-            rev = 0
186
-
187
-        return url, rev
188
-
189
-    def get_tag_revs(self, svn_tag_url):
190
-        stdout = call_subprocess(
191
-            [self.cmd, 'ls', '-v', svn_tag_url], show_stdout=False)
192
-        results = []
193
-        for line in stdout.splitlines():
194
-            parts = line.split()
195
-            rev = int(parts[0])
196
-            tag = parts[-1].strip('/')
197
-            results.append((tag, rev))
198
-        return results
199
-
200
-    def find_tag_match(self, rev, tag_revs):
201
-        best_match_rev = None
202
-        best_tag = None
203
-        for tag, tag_rev in tag_revs:
204
-            if (tag_rev > rev and
205
-                (best_match_rev is None or best_match_rev > tag_rev)):
206
-                # FIXME: Is best_match > tag_rev really possible?
207
-                # or is it a sign something is wacky?
208
-                best_match_rev = tag_rev
209
-                best_tag = tag
210
-        return best_tag
211
-
212
-    def get_src_requirement(self, dist, location, find_tags=False):
213
-        repo = self.get_url(location)
214
-        if repo is None:
215
-            return None
216
-        parts = repo.split('/')
217
-        ## FIXME: why not project name?
218
-        egg_project_name = dist.egg_name().split('-', 1)[0]
219
-        rev = self.get_revision(location)
220
-        if parts[-2] in ('tags', 'tag'):
221
-            # It's a tag, perfect!
222
-            full_egg_name = '%s-%s' % (egg_project_name, parts[-1])
223
-        elif parts[-2] in ('branches', 'branch'):
224
-            # It's a branch :(
225
-            full_egg_name = '%s-%s-r%s' % (dist.egg_name(), parts[-1], rev)
226
-        elif parts[-1] == 'trunk':
227
-            # Trunk :-/
228
-            full_egg_name = '%s-dev_r%s' % (dist.egg_name(), rev)
229
-            if find_tags:
230
-                tag_url = '/'.join(parts[:-1]) + '/tags'
231
-                tag_revs = self.get_tag_revs(tag_url)
232
-                match = self.find_tag_match(rev, tag_revs)
233
-                if match:
234
-                    logger.notify('trunk checkout %s seems to be equivalent to tag %s' % match)
235
-                    repo = '%s/%s' % (tag_url, match)
236
-                    full_egg_name = '%s-%s' % (egg_project_name, match)
237
-        else:
238
-            # Don't know what it is
239
-            logger.warn('svn URL does not fit normal structure (tags/branches/trunk): %s' % repo)
240
-            full_egg_name = '%s-dev_r%s' % (egg_project_name, rev)
241
-        return 'svn+%s@%s#egg=%s' % (repo, rev, full_egg_name)
242
-
243
-
244
-def get_rev_options(url, rev):
245
-    if rev:
246
-        rev_options = ['-r', rev]
247
-    else:
248
-        rev_options = []
249
-
250
-    r = urlparse.urlsplit(url)
251
-    if hasattr(r, 'username'):
252
-        # >= Python-2.5
253
-        username, password = r.username, r.password
254
-    else:
255
-        netloc = r[1]
256
-        if '@' in netloc:
257
-            auth = netloc.split('@')[0]
258
-            if ':' in auth:
259
-                username, password = auth.split(':', 1)
260
-            else:
261
-                username, password = auth, None
262
-        else:
263
-            username, password = None, None
264
-
265
-    if username:
266
-        rev_options += ['--username', username]
267
-    if password:
268
-        rev_options += ['--password', password]
269
-    return rev_options
270
-
271
-
272
-vcs.register(Subversion)
273 0
deleted file mode 100644
274 1
Binary files a/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/vcs/subversion.pyc and /dev/null differ
275 2
deleted file mode 100644
276 3
Binary files a/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg and /dev/null differ
277 4
deleted file mode 100644
... ...
@@ -1 +0,0 @@
1
-./setuptools-0.6c11-py2.7.egg
2 0
deleted file mode 100644
... ...
@@ -1,754 +0,0 @@
1
-"""Append module search paths for third-party packages to sys.path.
2
-
3
-****************************************************************
4
-* This module is automatically imported during initialization. *
5
-****************************************************************
6
-
7
-In earlier versions of Python (up to 1.5a3), scripts or modules that
8
-needed to use site-specific modules would place ``import site''
9
-somewhere near the top of their code.  Because of the automatic
10
-import, this is no longer necessary (but code that does it still
11
-works).
12
-
13
-This will append site-specific paths to the module search path.  On
14
-Unix, it starts with sys.prefix and sys.exec_prefix (if different) and
15
-appends lib/python<version>/site-packages as well as lib/site-python.
16
-It also supports the Debian convention of
17
-lib/python<version>/dist-packages.  On other platforms (mainly Mac and
18
-Windows), it uses just sys.prefix (and sys.exec_prefix, if different,
19
-but this is unlikely).  The resulting directories, if they exist, are
20
-appended to sys.path, and also inspected for path configuration files.
21
-
22
-FOR DEBIAN, this sys.path is augmented with directories in /usr/local.
23
-Local addons go into /usr/local/lib/python<version>/site-packages
24
-(resp. /usr/local/lib/site-python), Debian addons install into
25
-/usr/{lib,share}/python<version>/dist-packages.
26
-
27
-A path configuration file is a file whose name has the form
28
-<package>.pth; its contents are additional directories (one per line)
29
-to be added to sys.path.  Non-existing directories (or
30
-non-directories) are never added to sys.path; no directory is added to
31
-sys.path more than once.  Blank lines and lines beginning with
32
-'#' are skipped. Lines starting with 'import' are executed.
33
-
34
-For example, suppose sys.prefix and sys.exec_prefix are set to
35
-/usr/local and there is a directory /usr/local/lib/python2.X/site-packages
36
-with three subdirectories, foo, bar and spam, and two path
37
-configuration files, foo.pth and bar.pth.  Assume foo.pth contains the
38
-following:
39
-
40
-  # foo package configuration
41
-  foo
42
-  bar
43
-  bletch
44
-
45
-and bar.pth contains:
46
-
47
-  # bar package configuration
48
-  bar
49
-
50
-Then the following directories are added to sys.path, in this order:
51
-
52
-  /usr/local/lib/python2.X/site-packages/bar
53
-  /usr/local/lib/python2.X/site-packages/foo
54
-
55
-Note that bletch is omitted because it doesn't exist; bar precedes foo
56
-because bar.pth comes alphabetically before foo.pth; and spam is
57
-omitted because it is not mentioned in either path configuration file.
58
-
59
-After these path manipulations, an attempt is made to import a module
60
-named sitecustomize, which can perform arbitrary additional
61
-site-specific customizations.  If this import fails with an
62
-ImportError exception, it is silently ignored.
63
-
64
-"""
65
-
66
-import sys
67
-import os
68
-try:
69
-    import __builtin__ as builtins
70
-except ImportError:
71
-    import builtins
72
-try:
73
-    set
74
-except NameError:
75
-    from sets import Set as set
76
-
77
-# Prefixes for site-packages; add additional prefixes like /usr/local here
78
-PREFIXES = [sys.prefix, sys.exec_prefix]
79
-# Enable per user site-packages directory
80
-# set it to False to disable the feature or True to force the feature
81
-ENABLE_USER_SITE = None
82
-# for distutils.commands.install
83
-USER_SITE = None
84
-USER_BASE = None
85
-
86
-_is_64bit = (getattr(sys, 'maxsize', None) or getattr(sys, 'maxint')) > 2**32
87
-_is_pypy = hasattr(sys, 'pypy_version_info')
88
-_is_jython = sys.platform[:4] == 'java'
89
-if _is_jython:
90
-    ModuleType = type(os)
91
-
92
-def makepath(*paths):
93
-    dir = os.path.join(*paths)
94
-    if _is_jython and (dir == '__classpath__' or
95
-                       dir.startswith('__pyclasspath__')):
96
-        return dir, dir
97
-    dir = os.path.abspath(dir)
98
-    return dir, os.path.normcase(dir)
99
-
100
-def abs__file__():
101
-    """Set all module' __file__ attribute to an absolute path"""
102
-    for m in sys.modules.values():
103
-        if ((_is_jython and not isinstance(m, ModuleType)) or
104
-            hasattr(m, '__loader__')):
105
-            # only modules need the abspath in Jython. and don't mess
106
-            # with a PEP 302-supplied __file__
107
-            continue
108
-        f = getattr(m, '__file__', None)
109
-        if f is None:
110
-            continue
111
-        m.__file__ = os.path.abspath(f)
112
-
113
-def removeduppaths():
114
-    """ Remove duplicate entries from sys.path along with making them
115
-    absolute"""
116
-    # This ensures that the initial path provided by the interpreter contains
117
-    # only absolute pathnames, even if we're running from the build directory.
118
-    L = []
119
-    known_paths = set()
120
-    for dir in sys.path:
121
-        # Filter out duplicate paths (on case-insensitive file systems also
122
-        # if they only differ in case); turn relative paths into absolute
123
-        # paths.
124
-        dir, dircase = makepath(dir)
125
-        if not dircase in known_paths:
126
-            L.append(dir)
127
-            known_paths.add(dircase)
128
-    sys.path[:] = L
129
-    return known_paths
130
-
131
-# XXX This should not be part of site.py, since it is needed even when
132
-# using the -S option for Python.  See http://www.python.org/sf/586680
133
-def addbuilddir():
134
-    """Append ./build/lib.<platform> in case we're running in the build dir
135
-    (especially for Guido :-)"""
136
-    from distutils.util import get_platform
137
-    s = "build/lib.%s-%.3s" % (get_platform(), sys.version)
138
-    if hasattr(sys, 'gettotalrefcount'):
139
-        s += '-pydebug'
140
-    s = os.path.join(os.path.dirname(sys.path[-1]), s)
141
-    sys.path.append(s)
142
-
143
-def _init_pathinfo():
144
-    """Return a set containing all existing directory entries from sys.path"""
145
-    d = set()
146
-    for dir in sys.path:
147
-        try:
148
-            if os.path.isdir(dir):
149
-                dir, dircase = makepath(dir)
150
-                d.add(dircase)
151
-        except TypeError:
152
-            continue
153
-    return d
154
-
155
-def addpackage(sitedir, name, known_paths):
156
-    """Add a new path to known_paths by combining sitedir and 'name' or execute
157
-    sitedir if it starts with 'import'"""
158
-    if known_paths is None:
159
-        _init_pathinfo()
160
-        reset = 1
161
-    else:
162
-        reset = 0
163
-    fullname = os.path.join(sitedir, name)
164
-    try:
165
-        f = open(fullname, "rU")
166
-    except IOError:
167
-        return
168
-    try:
169
-        for line in f:
170
-            if line.startswith("#"):
171
-                continue
172
-            if line.startswith("import"):
173
-                exec(line)
174
-                continue
175
-            line = line.rstrip()
176
-            dir, dircase = makepath(sitedir, line)
177
-            if not dircase in known_paths and os.path.exists(dir):
178
-                sys.path.append(dir)
179
-                known_paths.add(dircase)
180
-    finally:
181
-        f.close()
182
-    if reset:
183
-        known_paths = None
184
-    return known_paths
185
-
186
-def addsitedir(sitedir, known_paths=None):
187
-    """Add 'sitedir' argument to sys.path if missing and handle .pth files in
188
-    'sitedir'"""
189
-    if known_paths is None:
190
-        known_paths = _init_pathinfo()
191
-        reset = 1
192
-    else:
193
-        reset = 0
194
-    sitedir, sitedircase = makepath(sitedir)
195
-    if not sitedircase in known_paths:
196
-        sys.path.append(sitedir)        # Add path component
197
-    try:
198
-        names = os.listdir(sitedir)
199
-    except os.error:
200
-        return
201
-    names.sort()
202
-    for name in names:
203
-        if name.endswith(os.extsep + "pth"):
204
-            addpackage(sitedir, name, known_paths)
205
-    if reset:
206
-        known_paths = None
207
-    return known_paths
208
-
209
-def addsitepackages(known_paths, sys_prefix=sys.prefix, exec_prefix=sys.exec_prefix):
210
-    """Add site-packages (and possibly site-python) to sys.path"""
211
-    prefixes = [os.path.join(sys_prefix, "local"), sys_prefix]
212
-    if exec_prefix != sys_prefix:
213
-        prefixes.append(os.path.join(exec_prefix, "local"))
214
-
215
-    for prefix in prefixes:
216
-        if prefix:
217
-            if sys.platform in ('os2emx', 'riscos') or _is_jython:
218
-                sitedirs = [os.path.join(prefix, "Lib", "site-packages")]
219
-            elif _is_pypy:
220
-                sitedirs = [os.path.join(prefix, 'site-packages')]
221
-            elif sys.platform == 'darwin' and prefix == sys_prefix:
222
-
223
-                if prefix.startswith("/System/Library/Frameworks/"): # Apple's Python
224
-
225
-                    sitedirs = [os.path.join("/Library/Python", sys.version[:3], "site-packages"),
226
-                                os.path.join(prefix, "Extras", "lib", "python")]
227
-
228
-                else: # any other Python distros on OSX work this way
229
-                    sitedirs = [os.path.join(prefix, "lib",
230
-                                             "python" + sys.version[:3], "site-packages")]
231
-
232
-            elif os.sep == '/':
233
-                sitedirs = [os.path.join(prefix,
234
-                                         "lib",
235
-                                         "python" + sys.version[:3],
236
-                                         "site-packages"),
237
-                            os.path.join(prefix, "lib", "site-python"),
238
-                            os.path.join(prefix, "python" + sys.version[:3], "lib-dynload")]
239
-                lib64_dir = os.path.join(prefix, "lib64", "python" + sys.version[:3], "site-packages")
240
-                if (os.path.exists(lib64_dir) and
241
-                    os.path.realpath(lib64_dir) not in [os.path.realpath(p) for p in sitedirs]):
242
-                    if _is_64bit:
243
-                        sitedirs.insert(0, lib64_dir)
244
-                    else:
245
-                        sitedirs.append(lib64_dir)
246
-                try:
247
-                    # sys.getobjects only available in --with-pydebug build
248
-                    sys.getobjects
249
-                    sitedirs.insert(0, os.path.join(sitedirs[0], 'debug'))
250
-                except AttributeError:
251
-                    pass
252
-                # Debian-specific dist-packages directories:
253
-                if sys.version[0] == '2':
254
-                    sitedirs.append(os.path.join(prefix, "lib",
255
-                                                 "python" + sys.version[:3],
256
-                                                 "dist-packages"))
257
-                else:
258
-                    sitedirs.append(os.path.join(prefix, "lib",
259
-                                                 "python" + sys.version[0],
260
-                                                 "dist-packages"))
261
-                sitedirs.append(os.path.join(prefix, "local/lib",
262
-                                             "python" + sys.version[:3],
263
-                                             "dist-packages"))
264
-                sitedirs.append(os.path.join(prefix, "lib", "dist-python"))
265
-            else:
266
-                sitedirs = [prefix, os.path.join(prefix, "lib", "site-packages")]
267
-            if sys.platform == 'darwin':
268
-                # for framework builds *only* we add the standard Apple
269
-                # locations. Currently only per-user, but /Library and
270
-                # /Network/Library could be added too
271
-                if 'Python.framework' in prefix:
272
-                    home = os.environ.get('HOME')
273
-                    if home:
274
-                        sitedirs.append(
275
-                            os.path.join(home,
276
-                                         'Library',
277
-                                         'Python',
278
-                                         sys.version[:3],
279
-                                         'site-packages'))
280
-            for sitedir in sitedirs:
281
-                if os.path.isdir(sitedir):
282
-                    addsitedir(sitedir, known_paths)
283
-    return None
284
-
285
-def check_enableusersite():
286
-    """Check if user site directory is safe for inclusion
287
-
288
-    The function tests for the command line flag (including environment var),
289
-    process uid/gid equal to effective uid/gid.
290
-
291
-    None: Disabled for security reasons
292
-    False: Disabled by user (command line option)
293
-    True: Safe and enabled
294
-    """
295
-    if hasattr(sys, 'flags') and getattr(sys.flags, 'no_user_site', False):
296
-        return False
297
-
298
-    if hasattr(os, "getuid") and hasattr(os, "geteuid"):
299
-        # check process uid == effective uid
300
-        if os.geteuid() != os.getuid():
301
-            return None
302
-    if hasattr(os, "getgid") and hasattr(os, "getegid"):
303
-        # check process gid == effective gid
304
-        if os.getegid() != os.getgid():
305
-            return None
306
-
307
-    return True
308
-
309
-def addusersitepackages(known_paths):
310
-    """Add a per user site-package to sys.path
311
-
312
-    Each user has its own python directory with site-packages in the
313
-    home directory.
314
-
315
-    USER_BASE is the root directory for all Python versions
316
-
317
-    USER_SITE is the user specific site-packages directory
318
-
319
-    USER_SITE/.. can be used for data.
320
-    """
321
-    global USER_BASE, USER_SITE, ENABLE_USER_SITE
322
-    env_base = os.environ.get("PYTHONUSERBASE", None)
323
-
324
-    def joinuser(*args):
325
-        return os.path.expanduser(os.path.join(*args))
326
-
327
-    #if sys.platform in ('os2emx', 'riscos'):
328
-    #    # Don't know what to put here
329
-    #    USER_BASE = ''
330
-    #    USER_SITE = ''
331
-    if os.name == "nt":
332
-        base = os.environ.get("APPDATA") or "~"
333
-        if env_base:
334
-            USER_BASE = env_base
335
-        else:
336
-            USER_BASE = joinuser(base, "Python")
337
-        USER_SITE = os.path.join(USER_BASE,
338
-                                 "Python" + sys.version[0] + sys.version[2],
339
-                                 "site-packages")
340
-    else:
341
-        if env_base:
342
-            USER_BASE = env_base
343
-        else:
344
-            USER_BASE = joinuser("~", ".local")
345
-        USER_SITE = os.path.join(USER_BASE, "lib",
346
-                                 "python" + sys.version[:3],
347
-                                 "site-packages")
348
-
349
-    if ENABLE_USER_SITE and os.path.isdir(USER_SITE):
350
-        addsitedir(USER_SITE, known_paths)
351
-    if ENABLE_USER_SITE:
352
-        for dist_libdir in ("lib", "local/lib"):
353
-            user_site = os.path.join(USER_BASE, dist_libdir,
354
-                                     "python" + sys.version[:3],
355
-                                     "dist-packages")
356
-            if os.path.isdir(user_site):
357
-                addsitedir(user_site, known_paths)
358
-    return known_paths
359
-
360
-
361
-
362
-def setBEGINLIBPATH():
363
-    """The OS/2 EMX port has optional extension modules that do double duty
364
-    as DLLs (and must use the .DLL file extension) for other extensions.
365
-    The library search path needs to be amended so these will be found
366
-    during module import.  Use BEGINLIBPATH so that these are at the start
367
-    of the library search path.
368
-
369
-    """
370
-    dllpath = os.path.join(sys.prefix, "Lib", "lib-dynload")
371
-    libpath = os.environ['BEGINLIBPATH'].split(';')
372
-    if libpath[-1]:
373
-        libpath.append(dllpath)
374
-    else:
375
-        libpath[-1] = dllpath
376
-    os.environ['BEGINLIBPATH'] = ';'.join(libpath)
377
-
378
-
379
-def setquit():
380
-    """Define new built-ins 'quit' and 'exit'.
381
-    These are simply strings that display a hint on how to exit.
382
-
383
-    """
384
-    if os.sep == ':':
385
-        eof = 'Cmd-Q'
386
-    elif os.sep == '\\':
387
-        eof = 'Ctrl-Z plus Return'
388
-    else:
389
-        eof = 'Ctrl-D (i.e. EOF)'
390
-
391
-    class Quitter(object):
392
-        def __init__(self, name):
393
-            self.name = name
394
-        def __repr__(self):
395
-            return 'Use %s() or %s to exit' % (self.name, eof)
396
-        def __call__(self, code=None):
397
-            # Shells like IDLE catch the SystemExit, but listen when their
398
-            # stdin wrapper is closed.
399
-            try:
400
-                sys.stdin.close()
401
-            except:
402
-                pass
403
-            raise SystemExit(code)
404
-    builtins.quit = Quitter('quit')
405
-    builtins.exit = Quitter('exit')
406
-
407
-
408
-class _Printer(object):
409
-    """interactive prompt objects for printing the license text, a list of
410
-    contributors and the copyright notice."""
411
-
412
-    MAXLINES = 23
413
-
414
-    def __init__(self, name, data, files=(), dirs=()):
415
-        self.__name = name
416
-        self.__data = data
417
-        self.__files = files
418
-        self.__dirs = dirs
419
-        self.__lines = None
420
-
421
-    def __setup(self):
422
-        if self.__lines:
423
-            return
424
-        data = None
425
-        for dir in self.__dirs:
426
-            for filename in self.__files:
427
-                filename = os.path.join(dir, filename)
428
-                try:
429
-                    fp = open(filename, "rU")
430
-                    data = fp.read()
431
-                    fp.close()
432
-                    break
433
-                except IOError:
434
-                    pass
435
-            if data:
436
-                break
437
-        if not data:
438
-            data = self.__data
439
-        self.__lines = data.split('\n')
440
-        self.__linecnt = len(self.__lines)
441
-
442
-    def __repr__(self):
443
-        self.__setup()
444
-        if len(self.__lines) <= self.MAXLINES:
445
-            return "\n".join(self.__lines)
446
-        else:
447
-            return "Type %s() to see the full %s text" % ((self.__name,)*2)
448
-
449
-    def __call__(self):
450
-        self.__setup()
451
-        prompt = 'Hit Return for more, or q (and Return) to quit: '
452
-        lineno = 0
453
-        while 1:
454
-            try:
455
-                for i in range(lineno, lineno + self.MAXLINES):
456
-                    print(self.__lines[i])
457
-            except IndexError:
458
-                break
459
-            else:
460
-                lineno += self.MAXLINES
461
-                key = None
462
-                while key is None:
463
-                    try:
464
-                        key = raw_input(prompt)
465
-                    except NameError:
466
-                        key = input(prompt)
467
-                    if key not in ('', 'q'):
468
-                        key = None
469
-                if key == 'q':
470
-                    break
471
-
472
-def setcopyright():
473
-    """Set 'copyright' and 'credits' in __builtin__"""
474
-    builtins.copyright = _Printer("copyright", sys.copyright)
475
-    if _is_jython:
476
-        builtins.credits = _Printer(
477
-            "credits",
478
-            "Jython is maintained by the Jython developers (www.jython.org).")
479
-    elif _is_pypy:
480
-        builtins.credits = _Printer(
481
-            "credits",
482
-            "PyPy is maintained by the PyPy developers: http://codespeak.net/pypy")
483
-    else:
484
-        builtins.credits = _Printer("credits", """\
485
-    Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
486
-    for supporting Python development.  See www.python.org for more information.""")
487
-    here = os.path.dirname(os.__file__)
488
-    builtins.license = _Printer(
489
-        "license", "See http://www.python.org/%.3s/license.html" % sys.version,
490
-        ["LICENSE.txt", "LICENSE"],
491
-        [os.path.join(here, os.pardir), here, os.curdir])
492
-
493
-
494
-class _Helper(object):
495
-    """Define the built-in 'help'.
496
-    This is a wrapper around pydoc.help (with a twist).
497
-
498
-    """
499
-
500
-    def __repr__(self):
501
-        return "Type help() for interactive help, " \
502
-               "or help(object) for help about object."
503
-    def __call__(self, *args, **kwds):
504
-        import pydoc
505
-        return pydoc.help(*args, **kwds)
506
-
507
-def sethelper():
508
-    builtins.help = _Helper()
509
-
510
-def aliasmbcs():
511
-    """On Windows, some default encodings are not provided by Python,
512
-    while they are always available as "mbcs" in each locale. Make
513
-    them usable by aliasing to "mbcs" in such a case."""
514
-    if sys.platform == 'win32':
515
-        import locale, codecs
516
-        enc = locale.getdefaultlocale()[1]
517
-        if enc.startswith('cp'):            # "cp***" ?
518
-            try:
519
-                codecs.lookup(enc)
520
-            except LookupError:
521
-                import encodings
522
-                encodings._cache[enc] = encodings._unknown
523
-                encodings.aliases.aliases[enc] = 'mbcs'
524
-
525
-def setencoding():
526
-    """Set the string encoding used by the Unicode implementation.  The
527
-    default is 'ascii', but if you're willing to experiment, you can
528
-    change this."""
529
-    encoding = "ascii" # Default value set by _PyUnicode_Init()
530
-    if 0:
531
-        # Enable to support locale aware default string encodings.
532
-        import locale
533
-        loc = locale.getdefaultlocale()
534
-        if loc[1]:
535
-            encoding = loc[1]
536
-    if 0:
537
-        # Enable to switch off string to Unicode coercion and implicit
538
-        # Unicode to string conversion.
539
-        encoding = "undefined"
540
-    if encoding != "ascii":
541
-        # On Non-Unicode builds this will raise an AttributeError...
542
-        sys.setdefaultencoding(encoding) # Needs Python Unicode build !
543
-
544
-
545
-def execsitecustomize():
546
-    """Run custom site specific code, if available."""
547
-    try:
548
-        import sitecustomize
549
-    except ImportError:
550
-        pass
551
-
552
-def virtual_install_main_packages():
553
-    f = open(os.path.join(os.path.dirname(__file__), 'orig-prefix.txt'))
554
-    sys.real_prefix = f.read().strip()
555
-    f.close()
556
-    pos = 2
557
-    hardcoded_relative_dirs = []
558
-    if sys.path[0] == '':
559
-        pos += 1
560
-    if _is_jython:
561
-        paths = [os.path.join(sys.real_prefix, 'Lib')]
562
-    elif _is_pypy:
563
-        if sys.pypy_version_info >= (1, 5):
564
-            cpyver = '%d.%d' % sys.version_info[:2]
565
-        else:
566
-            cpyver = '%d.%d.%d' % sys.version_info[:3]
567
-        paths = [os.path.join(sys.real_prefix, 'lib_pypy'),
568
-                 os.path.join(sys.real_prefix, 'lib-python', 'modified-%s' % cpyver),
569
-                 os.path.join(sys.real_prefix, 'lib-python', cpyver)]
570
-        hardcoded_relative_dirs = paths[:] # for the special 'darwin' case below
571
-        #
572
-        # This is hardcoded in the Python executable, but relative to sys.prefix:
573
-        for path in paths[:]:
574
-            plat_path = os.path.join(path, 'plat-%s' % sys.platform)
575
-            if os.path.exists(plat_path):
576
-                paths.append(plat_path)
577
-    elif sys.platform == 'win32':
578
-        paths = [os.path.join(sys.real_prefix, 'Lib'), os.path.join(sys.real_prefix, 'DLLs')]
579
-    else:
580
-        paths = [os.path.join(sys.real_prefix, 'lib', 'python'+sys.version[:3])]
581
-        hardcoded_relative_dirs = paths[:] # for the special 'darwin' case below
582
-        lib64_path = os.path.join(sys.real_prefix, 'lib64', 'python'+sys.version[:3])
583
-        if os.path.exists(lib64_path):
584
-            if _is_64bit:
585
-                paths.insert(0, lib64_path)
586
-            else:
587
-                paths.append(lib64_path)
588
-        # This is hardcoded in the Python executable, but relative to
589
-        # sys.prefix.  Debian change: we need to add the multiarch triplet
590
-        # here, which is where the real stuff lives.  As per PEP 421, in
591
-        # Python 3.3+, this lives in sys.implementation, while in Python 2.7
592
-        # it lives in sys.
593
-        try:
594
-            arch = getattr(sys, 'implementation', sys)._multiarch
595
-        except AttributeError:
596
-            # This is a non-multiarch aware Python.  Fallback to the old way.
597
-            arch = sys.platform
598
-        plat_path = os.path.join(sys.real_prefix, 'lib',
599
-                                 'python'+sys.version[:3],
600
-                                 'plat-%s' % arch)
601
-        if os.path.exists(plat_path):
602
-            paths.append(plat_path)
603
-    # This is hardcoded in the Python executable, but
604
-    # relative to sys.prefix, so we have to fix up:
605
-    for path in list(paths):
606
-        tk_dir = os.path.join(path, 'lib-tk')
607
-        if os.path.exists(tk_dir):
608
-            paths.append(tk_dir)
609
-
610
-    # These are hardcoded in the Apple's Python executable,
611
-    # but relative to sys.prefix, so we have to fix them up:
612
-    if sys.platform == 'darwin':
613
-        hardcoded_paths = [os.path.join(relative_dir, module)
614
-                           for relative_dir in hardcoded_relative_dirs
615
-                           for module in ('plat-darwin', 'plat-mac', 'plat-mac/lib-scriptpackages')]
616
-
617
-        for path in hardcoded_paths:
618
-            if os.path.exists(path):
619
-                paths.append(path)
620
-
621
-    sys.path.extend(paths)
622
-
623
-def force_global_eggs_after_local_site_packages():
624
-    """
625
-    Force easy_installed eggs in the global environment to get placed
626
-    in sys.path after all packages inside the virtualenv.  This
627
-    maintains the "least surprise" result that packages in the
628
-    virtualenv always mask global packages, never the other way
629
-    around.
630
-
631
-    """
632
-    egginsert = getattr(sys, '__egginsert', 0)
633
-    for i, path in enumerate(sys.path):
634
-        if i > egginsert and path.startswith(sys.prefix):
635
-            egginsert = i
636
-    sys.__egginsert = egginsert + 1
637
-
638
-def virtual_addsitepackages(known_paths):
639
-    force_global_eggs_after_local_site_packages()
640
-    return addsitepackages(known_paths, sys_prefix=sys.real_prefix)
641
-
642
-def fixclasspath():
643
-    """Adjust the special classpath sys.path entries for Jython. These
644
-    entries should follow the base virtualenv lib directories.
645
-    """
646
-    paths = []
647
-    classpaths = []
648
-    for path in sys.path:
649
-        if path == '__classpath__' or path.startswith('__pyclasspath__'):
650
-            classpaths.append(path)
651
-        else:
652
-            paths.append(path)
653
-    sys.path = paths
654
-    sys.path.extend(classpaths)
655
-
656
-def execusercustomize():
657
-    """Run custom user specific code, if available."""
658
-    try:
659
-        import usercustomize
660
-    except ImportError:
661
-        pass
662
-
663
-
664
-def main():
665
-    global ENABLE_USER_SITE
666
-    virtual_install_main_packages()
667
-    abs__file__()
668
-    paths_in_sys = removeduppaths()
669
-    if (os.name == "posix" and sys.path and
670
-        os.path.basename(sys.path[-1]) == "Modules"):
671
-        addbuilddir()
672
-    if _is_jython:
673
-        fixclasspath()
674
-    GLOBAL_SITE_PACKAGES = not os.path.exists(os.path.join(os.path.dirname(__file__), 'no-global-site-packages.txt'))
675
-    if not GLOBAL_SITE_PACKAGES:
676
-        ENABLE_USER_SITE = False
677
-    if ENABLE_USER_SITE is None:
678
-        ENABLE_USER_SITE = check_enableusersite()
679
-    paths_in_sys = addsitepackages(paths_in_sys)
680
-    paths_in_sys = addusersitepackages(paths_in_sys)
681
-    if GLOBAL_SITE_PACKAGES:
682
-        paths_in_sys = virtual_addsitepackages(paths_in_sys)
683
-    if sys.platform == 'os2emx':
684
-        setBEGINLIBPATH()
685
-    setquit()
686
-    setcopyright()
687
-    sethelper()
688
-    aliasmbcs()
689
-    setencoding()
690
-    execsitecustomize()
691
-    if ENABLE_USER_SITE:
692
-        execusercustomize()
693
-    # Remove sys.setdefaultencoding() so that users cannot change the
694
-    # encoding after initialization.  The test for presence is needed when
695
-    # this module is run as a script, because this code is executed twice.
696
-    if hasattr(sys, "setdefaultencoding"):
697
-        del sys.setdefaultencoding
698
-
699
-main()
700
-
701
-def _script():
702
-    help = """\
703
-    %s [--user-base] [--user-site]
704
-
705
-    Without arguments print some useful information
706
-    With arguments print the value of USER_BASE and/or USER_SITE separated
707
-    by '%s'.
708
-
709
-    Exit codes with --user-base or --user-site:
710
-      0 - user site directory is enabled
711
-      1 - user site directory is disabled by user
712
-      2 - uses site directory is disabled by super user
713
-          or for security reasons
714
-     >2 - unknown error
715
-    """
716
-    args = sys.argv[1:]
717
-    if not args:
718
-        print("sys.path = [")
719
-        for dir in sys.path:
720
-            print("    %r," % (dir,))
721
-        print("]")
722
-        def exists(path):
723
-            if os.path.isdir(path):
724
-                return "exists"
725
-            else:
726
-                return "doesn't exist"
727
-        print("USER_BASE: %r (%s)" % (USER_BASE, exists(USER_BASE)))
728
-        print("USER_SITE: %r (%s)" % (USER_SITE, exists(USER_BASE)))
729
-        print("ENABLE_USER_SITE: %r" %  ENABLE_USER_SITE)
730
-        sys.exit(0)
731
-
732
-    buffer = []
733
-    if '--user-base' in args:
734
-        buffer.append(USER_BASE)
735
-    if '--user-site' in args:
736
-        buffer.append(USER_SITE)
737
-
738
-    if buffer:
739
-        print(os.pathsep.join(buffer))
740
-        if ENABLE_USER_SITE:
741
-            sys.exit(0)
742
-        elif ENABLE_USER_SITE is False:
743
-            sys.exit(1)
744
-        elif ENABLE_USER_SITE is None:
745
-            sys.exit(2)
746
-        else:
747
-            sys.exit(3)
748
-    else:
749
-        import textwrap
750
-        print(textwrap.dedent(help % (sys.argv[0], os.pathsep)))
751
-        sys.exit(10)
752
-
753
-if __name__ == '__main__':
754
-    _script()
755 0
deleted file mode 100644
756 1
Binary files a/lib/python2.7/site.pyc and /dev/null differ
757 2
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/sre.py
2 0
\ No newline at end of file
3 1
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/sre_compile.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
4 2
Binary files a/lib/python2.7/sre_compile.pyc and /dev/null differ
5 3
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/sre_constants.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
4 2
Binary files a/lib/python2.7/sre_constants.pyc and /dev/null differ
5 3
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/sre_parse.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
4 2
Binary files a/lib/python2.7/sre_parse.pyc and /dev/null differ
5 3
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/stat.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
4 2
Binary files a/lib/python2.7/stat.pyc and /dev/null differ
5 3
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/types.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
4 2
Binary files a/lib/python2.7/types.pyc and /dev/null differ
5 3
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/usr/lib/python2.7/warnings.py
2 0
\ No newline at end of file
3 1
deleted file mode 100644
4 2
Binary files a/lib/python2.7/warnings.pyc and /dev/null differ
5 3
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/home/edwlan/github_repos/pybrowse/COPYING
2 0
\ No newline at end of file
3 1
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/home/edwlan/github_repos/pybrowse/README.md
2 0
\ No newline at end of file
3 1
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/home/edwlan/github_repos/pybrowse/TODO.md
2 0
\ No newline at end of file
3 1
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/home/edwlan/github_repos/pybrowse/bin
2 0
\ No newline at end of file
3 1
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/home/edwlan/github_repos/pybrowse/include
2 0
\ No newline at end of file
3 1
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-/home/edwlan/github_repos/pybrowse/lib
2 0
\ No newline at end of file