diff --git a/plugin/pod/README.md b/plugin/pod/README.md new file mode 100755 index 0000000000000000000000000000000000000000..dbec921f4d02f30dbf506f51cafe1052d94645b4 --- /dev/null +++ b/plugin/pod/README.md @@ -0,0 +1,66 @@ +# repository pod : moodle repository for POD +repository pod is a moodle repository plugin that enable to create file resource linked by reference to an external POD server +* See https://github.com/EsupPortail/pod/wiki for POD server informations +* We use University of Strasbourg version https://github.com/unistra/pod of POD server +* The moodle plugin requires use of POD webservices devlopped by University of Strasbourg https://github.com/unistra/pod-ws + +## Features +* Enable to create video or audio file reference with a POD server +* search enabled +* paging enabled for listing and searching in filepicker +* overrride of rendrer to check resource existence on POD server +* use of SPORE specification (see https://spore.github.io/) +## Download +from moodle plugin repository + +## Pod Moodle requirements installation +* You'll need to install POD-WS according to given installation on https://github.com/unistra/pod-ws +* When installed, connect yourself to django pod-ws admin interface +* Go to the administration page ("/admin") +* Create a user "moodle" with all "views" permissions +* Create an authorization token for this user +* Load fields permissions for the moodle user with the following command : +``` +python manage.py fine_permissions_load -u moodle moodle.json +``` + +you'll find moodle.json file into the pod-ws directory of the pod repository plugin directory + +## Moodle Installation +### local spore plugin +* since repository pod use spore you'll need it's client implementation as a moodle local plugin +* install local/spore on your own local directory + +### Repository installation +Install repository/pod in your own repository directory + +#### Repository setting +fill plugin setting field : +* pod/spore_description_file_url : spore description file +* pod/spore_base_url : POD webservice base url +* pod/spore_token : POD webservice token +* pod/media_server_url : POD media url +* pod/page_size : page size :used for pod webservice and then enabling paging on filepicker + +## filepicker paging patch for search +* apply patch included +``` +patch -p1 /moodle_dirroot/repository/filepicker.js < patch/repository_filepicker_js.patch +``` + +## Contributions +Contributions of any form are welcome. Github pull requests are preferred. +Fill any bugs, improvements, or feature requiests in our [issue tracker][issues]. + +## Authors +* Pascal Mathelin +* Celine Perves +* Claude Yahou + +Special Thanks to Morgan Bohn for POD-ws development and help + + +## License +* http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later +[]: +[issues]: \ No newline at end of file diff --git a/plugin/pod/classes/pod.php b/plugin/pod/classes/pod.php new file mode 100755 index 0000000000000000000000000000000000000000..fce6c20ad2ec3903830e4937138acc377f5c73a6 --- /dev/null +++ b/plugin/pod/classes/pod.php @@ -0,0 +1,86 @@ +<?php +// This file is part of Moodle - http://moodle.org/ +// +// Moodle is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Moodle is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Moodle. If not, see <http://www.gnu.org/licenses/>. + +/** + * Folder plugin version information + * + * @package Pod API + * @subpackage + * @copyright 2017 unistra {@link http://unistra.fr} + * @author Pascal Mathelin <pascal.mathelin@unistra.fr> + * @author Celine Perves <cperves@unistra.fr> + * @author Claude Yahou <claude.yahou@unistra.fr> + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace repository_pod; + +defined('MOODLE_INTERNAL') || die(); +global $CFG; +require_once($CFG->dirroot . '/repository/pod/lib.php'); + +class pod { + protected $username = null; + + public function __construct() { + global $USER; + if (isset($USER)) { + $this->username = $USER->username; + } else { + require_login(); + } + } + + public function get_listing($path, $page, $request='') { + global $CFG; + + $params = array( + "owner__username" => $this->username, + "format" => "json", + "to_encode" => "False", + "encoding_in_progress" => "False", + "page_size" => get_config('pod', 'page_size') + ); + if ($request) { + $params["title__icontains"] = $request; + } + if (isset($page) && !empty($page)) { + $params["page"] = $page; + } + $repositorypodtools = new \repository_pod_tools(); + try { + $client = $repositorypodtools->get_client(); + } catch (Exception $e) { + throw new \moodle_exception(get_string("poderrorphpsporeclient", "repository_pod")); + } + $result = $repositorypodtools->execute_request($client, "get_pods", $params); + if (!$result) { + throw new \moodle_exception(get_string("servererror", "repository_pod")); + } + if (is_array($result) && (count($result) == 4) && array_key_exists('results', $result) && count($result['results']) > 0) { + $list = $repositorypodtools->get_all_encoded_files($result); + if (!empty($request)) { + $list['searchtext'] = $request; + } + } else { + // No video found for current request. + $list = array( + 'list' => array() + ); + } + return $list; + } +} \ No newline at end of file diff --git a/plugin/pod/classes/privacy/provider.php b/plugin/pod/classes/privacy/provider.php new file mode 100755 index 0000000000000000000000000000000000000000..ffcf1abe8762ba562eb54f2c01b3085a3de7e635 --- /dev/null +++ b/plugin/pod/classes/privacy/provider.php @@ -0,0 +1,143 @@ +<?php +// This file is part of Moodle - http://moodle.org/ +// +// Moodle is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Moodle is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Moodle. If not, see <http://www.gnu.org/licenses/>. + +/** + * Privacy Subsystem implementation for repository_flickr. + * + * @package repository_flickr + * @copyright 2018 Zig Tan <zig@moodle.com> + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace repository_pod\privacy; + +use core_privacy\local\metadata\collection; +use core_privacy\local\request\approved_contextlist; +use core_privacy\local\request\approved_userlist; +use core_privacy\local\request\context; +use core_privacy\local\request\contextlist; +use core_privacy\local\request\userlist; +use core_privacy\local\request\writer; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Privacy Subsystem for repository_pod implementing metadata, plugin, and user_preference providers. + * + * @copyright 2019 University of Strasbourg + * @author Céline Pervès <cperves@unistra.fr> + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class provider implements + \core_privacy\local\metadata\provider, + \core_privacy\local\request\core_userlist_provider, + \core_privacy\local\request\plugin\provider +{ + + /** + * Returns meta data about this system. + * + * @param collection $collection The initialised collection to add items to. + * @return collection A listing of user data stored through this system. + */ + public static function get_metadata(collection $collection) : collection { + $collection->add_external_location_link( + 'pod.server', + [ + 'id' => 'privacy:metadata:repository_pod:pod_server:id', + 'username'=> 'privacy:metadata:repository_pod:pod_server:owner_username', + 'owner'=> 'privacy:metadata:repository_pod:pod_server:ownerlist', + 'video'=> 'privacy:metadata:repository_pod:pod_server:video', + 'mediatype' => 'privacy:metadata:repository_pod:pod_server:encodingtype', + 'title' => 'privacy:metadata:repository_pod:pod_server:title', + ], + 'privacy:metadata:repository_pod:pod_server' + ); + $collection->add_subsystem_link('core_files', [], 'privacy:metadata:core_files'); + + + return $collection; + } + + /** + * Get the list of contexts that contain user information for the specified user. + * + * @param int $userid The user to search. + * @return contextlist $contextlist The contextlist containing the list of contexts used in this plugin. + */ + public static function get_contexts_for_userid(int $userid) : contextlist { + //module context but also user context because of draft et private + $contextlist = new contextlist(); + $sql = 'select f.contextid from {files} f inner join {files_reference} fr on fr.id=f.referencefileid inner join {repository_instances} ri on ri.id=fr.repositoryid inner join {repository} r on r.id=ri.typeid inner join {context} ctx on ctx.id=f.contextid where r.type=\'pod\' and f.userid=:userid'; + $params = [ + 'userid' => $userid, + ]; + $contextlist->add_from_sql($sql,$params); + return $contextlist; + } + + /** + * Get the list of users who have data within a context. + * + * @param userlist $userlist The userlist containing the list of users who have data in this context/plugin combination. + */ + public static function get_users_in_context(userlist $userlist) { + $context = $userlist->get_context(); + if($context instanceof \context_module || $context instanceof \context_user){ + $sql = 'select f.userid from {files} f inner join {files_reference} fr on fr.id=f.referencefileid inner join {repository_instances} ri on ri.id=fr.repositoryid inner join {repository} r on r.id=ri.typeid where r.type=\'pod\' and f.contextid=:contextid'; + $params = [ + 'contextid' => $context->id + ]; + $userlist->add_from_sql('userid', $sql, $params); + } + } + + /** + * Export all user data for the specified user, in the specified contexts. + * + * @param approved_contextlist $contextlist The approved contexts to export information for. + */ + public static function export_user_data(approved_contextlist $contextlist) { + //file entry with pod referenceid? + + } + + /** + * Delete all data for all users in the specified context. + * + * @param context $context The specific context to delete data for. + */ + public static function delete_data_for_all_users_in_context(\context $context) { + //it is linked to a resource in a course + //no seems to be necessary + } + + /** + * Delete all user data for the specified user, in the specified contexts. + * + * @param approved_contextlist $contextlist The approved contexts and user information to delete information for. + */ + public static function delete_data_for_user(approved_contextlist $contextlist) { + } + + /** + * Delete multiple users within a single context. + * + * @param approved_userlist $userlist The approved context and user information to delete information for. + */ + public static function delete_data_for_users(approved_userlist $userlist) { + } +} diff --git a/plugin/pod/db/access.php b/plugin/pod/db/access.php new file mode 100755 index 0000000000000000000000000000000000000000..287518a80b2271f74ad10ab36c173de323721eae --- /dev/null +++ b/plugin/pod/db/access.php @@ -0,0 +1,37 @@ +<?php +// This file is part of Moodle - http://moodle.org/ +// +// Moodle is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Moodle is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Moodle. If not, see <http://www.gnu.org/licenses/>. + +/** + * Plugin capabilities. + * + * @package repository_pod + * @copyright 2017 unistra + * @author Celine Peves <cperves@unistra.fr> + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +$capabilities = array( + + 'repository/pod:view' => array( + 'captype' => 'read', + 'contextlevel' => CONTEXT_MODULE, + 'archetypes' => array( + 'user' => CAP_ALLOW + ) + ) +); diff --git a/plugin/pod/lang/en/repository_pod.php b/plugin/pod/lang/en/repository_pod.php new file mode 100755 index 0000000000000000000000000000000000000000..a795aad2bd86c50a8477a406d0690c250e0feaeb --- /dev/null +++ b/plugin/pod/lang/en/repository_pod.php @@ -0,0 +1,55 @@ +<?php +// This file is part of Moodle - http://moodle.org/ +// +// Moodle is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Moodle is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Moodle. If not, see <http://www.gnu.org/licenses/>. + +/** + * Folder plugin version information + * + * @package + * @subpackage + * @copyright 2017 unistra {@link http://unistra.fr} + * @author Pascal Mathelin <pascal.mathelin@unistra.fr> + * @author Celine Perves <cperves@unistra.fr> + * @author Claude Yahou <claude.yahou@unistra.fr> + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +$string['pluginname'] = 'Pod'; +$string['configplugin'] = 'Pod'; +$string['spore_description_file_url'] = 'Pod description file URL'; +$string['spore_description_file_url_help'] = 'e.g. https://pod-ws-test.u-strasbg.fr/site_media/description.json'; +$string['spore_base_url'] = 'Pod base URL'; +$string['spore_base_url_help'] = 'e.g : https://pod-ws-test.u-strasbg.fr'; +$string['spore_token'] = 'Pod Token'; +$string['spore_token_help'] = 'Pod web service token'; +$string['media_server_url'] = 'pod media server Url'; +$string['media_server_url_help'] = 'e.g https://podcast-test.u-strasbg.fr/media/'; +$string['page_size'] = 'Pod page size'; +$string['page_size_help'] = 'Number of items per page in file picker'; +$string['pod:view'] = 'View Pod repository'; +$string['errorphpsporeclient'] = 'Can\'t get PHP spore client for pod'; +$string['missingpodid'] = 'Not existing resource found in pod. Maybe your pod resource has been deleted'; +$string['servernotreponding'] = 'Pod server is not responding, please try later.'; +$string['poderrorphpsporeclient'] = 'pod error : spore client error'; +$string['servererror']='Pod server is not responding, please try later'; +$string['podlicenceinformationunavailable']='-'; +$string['privacy:metadata:repository_pod:pod_server:id']='pod resource id'; +$string['privacy:metadata:repository_pod:pod_server:owner_username']='owner username coresponding to current username'; +$string['privacy:metadata:repository_pod:pod_server:ownerlist']='pod owner list for a given resource'; +$string['privacy:metadata:repository_pod:pod_server:video']='pod video relative path'; +$string['privacy:metadata:repository_pod:pod_server:encodingtype']='pod internal encoding type code'; +$string['privacy:metadata:repository_pod:pod_server:title']='pod resource title'; +$string['privacy:metadata:repository_pod:pod_server']='The repository pod retrieve pod datas to store resources and show them.'; +$string['privacy:metadata:core_files']='The repository pod moodle store pod files informations as moodle file.'; \ No newline at end of file diff --git a/plugin/pod/lang/fr/repository_pod.php b/plugin/pod/lang/fr/repository_pod.php new file mode 100755 index 0000000000000000000000000000000000000000..1b95dfa631ce45528390b3a1f117f5bcdc7b3bb7 --- /dev/null +++ b/plugin/pod/lang/fr/repository_pod.php @@ -0,0 +1,47 @@ +<?php +// This file is part of Moodle - http://moodle.org/ +// +// Moodle is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Moodle is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Moodle. If not, see <http://www.gnu.org/licenses/>. + +/** + * Folder plugin version information + * + * @package + * @subpackage + * @copyright 2017 unistra {@link http://unistra.fr} + * @author Pascal Mathelin <pascal.mathelin@unistra.fr> + * @author Celine Perves <cperves@unistra.fr> + * @author Claude Yahou <claude.yahou@unistra.fr> + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +$string['pluginname'] = 'Pod'; +$string['configplugin'] = 'Pod'; +$string['spore_description_file_url'] = 'Fichier de description spore pour Pod'; +$string['spore_description_file_url_help'] = 'e.g. https://pod-ws-test.u-strasbg.fr/site_media/description.json'; +$string['spore_base_url'] = 'Url de base Pod'; +$string['spore_base_url_help'] = 'e.g : https://pod-ws-test.u-strasbg.fr'; +$string['spore_token'] = 'Token Pod'; +$string['spore_token_help'] = 'Token pour le service web Pod'; +$string['media_server_url'] = 'Url du média serveur Pod'; +$string['media_server_url_help'] = 'e.g https://podcast-test.u-strasbg.fr/media/'; +$string['page_size'] = 'Nombre de résultats par page pour le file picker Moodle'; +$string['page_size_help'] = 'Paramètre page size pour le retour web service Pod et donc pour le file picker'; +$string['pod:view'] = 'Voir le dépot Pod'; +$string['errorphpsporeclient'] = 'Impossible d\'obtenir le client spore PHP pour Pod'; +$string['missingpodid'] = 'Aucune ressource trouvé sur Pod. Votre ressource a peut être été effacée'; +$string['servernotreponding'] = 'Le serveur Pod ne répond pas. Veuillez rééssayer plus tard.'; +$string['poderrorphpsporeclient'] = 'Erreur client spore Pod'; +$string['servererror']='Le serveur Pod ne répond pas. Veuillez rééssayer plus tard.'; +$string['podlicenceinformationunavailable']='-'; \ No newline at end of file diff --git a/plugin/pod/lib.php b/plugin/pod/lib.php new file mode 100755 index 0000000000000000000000000000000000000000..2ca89f9400cf7e1716e06e63d1122e9d58738145 --- /dev/null +++ b/plugin/pod/lib.php @@ -0,0 +1,472 @@ +<?php +// This file is part of Moodle - http://moodle.org/ +// +// Moodle is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Moodle is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Moodle. If not, see <http://www.gnu.org/licenses/>. +/** + * Folder plugin version information + * + * @package + * @subpackage + * @copyright 2017 unistra {@link http://unistra.fr} + * @author Pascal Mathelin <pascal.mathelin@unistra.fr> + * @author Celine Perves <cperves@unistra.fr> + * @author Claude Yahou <claude.yahou@unistra.fr> + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); +require_once($CFG->dirroot . '/repository/lib.php'); + + +class repository_pod extends repository { + + public $cachelimit = 1; + /** + * @var pod The instance of pod client. + */ + protected $pod; + + public function __construct($repositoryid, $context = SYSCONTEXTID, $options = array()) { + global $SESSION, $CFG; + $this->pod = new repository_pod\pod(); + parent::__construct($repositoryid, $context, $options); + } + + public function get_listing($path = '', $page = 0) { + return $this->pod->get_listing($path, $page); + } + + public function search($query, $page = 0) { + return $this->pod->get_listing('', $page, $query); + } + + public function supported_filetypes() { + return '*'; + } + + public function max_cache_bytes() { + return $this->cachelimit; + } + + public function supported_returntypes() { + return FILE_REFERENCE; + } + + public function send_file($storedfile, $lifetime=86400 , $filter=0, $forcedownload=true, array $options = null) { + global $PAGE, $DB, $CFG; + require_once($CFG->dirroot.'/mod/resource/locallib.php'); + + /* + * Get spore results + */ + $repositorypodtools = new repository_pod_tools(); + + $podresourceid = $storedfile->get_reference(); + $params = array( + "id" => $podresourceid, + "format" => "json", + "to_encode" => "False", + "encoding_in_progress" => "False" + ); + try { + $client = $repositorypodtools->get_client(); + } catch (Exception $e) { + throw new \moodle_exception(get_string("poderrorphpsporeclient", "repository_pod")); + } + $result = $repositorypodtools->execute_request($client, "get_pods", $params); + $list = $repositorypodtools->get_all_encoded_files($result); + if (count($list['list']) == 0) { + print_error('missingpodid', 'repository_pod'); + } + /* + * Display results + */ + $encodingfile = $list['list'][0]['encodingfile']; + $url = get_config('pod', 'media_server_url').$encodingfile; + $moodleurl = new moodle_url($url); + $modname = $PAGE->cm->modname; + header('Location: '.$url); + } + /** + * + * @param array $options + * @return mixed + */ + public function set_option($options = array()) { + if (!empty($options['spore_description_file_url'])) { + set_config('spore_description_file_url', trim($options['spore_description_file_url']), 'pod'); + } + if (!empty($options['spore_base_url'])) { + set_config('spore_base_url', trim($options['spore_base_url']), 'pod'); + } + if (!empty($options['spore_token'])) { + set_config('spore_token', trim($options['spore_token']), 'pod'); + } + if (!empty($options['media_server_url'])) { + set_config('media_server_url', trim($options['media_server_url']), 'pod'); + } + if (!empty($options['page_size'])) { + set_config('page_size', trim($options['page_size']), 'pod'); + } + unset($options['spore_description_file_url']); + unset($options['spore_base_url']); + unset($options['spore_token']); + unset($options['media_server_url']); + unset($options['page_size']); + $ret = parent::set_option($options); + return $ret; + } + + /** + * + * @param string $config + * @return mixed + */ + public function get_option($config = '') { + if ($config === 'spore_description_file_url') { + return trim(get_config('pod', 'spore_description_file_url')); + } else if ($config === 'spore_base_url') { + return trim(get_config('pod', 'spore_base_url')); + } else if ($config === 'spore_token') { + return trim(get_config('pod', 'spore_token')); + } else if ($config === 'media_server_url') { + return trim(get_config('pod', 'media_server_url')); + } else if ($config === 'page_size') { + return trim(get_config('pod', 'page_size')); + } else { + $options['spore_description_file_url'] = trim(get_config('pod', 'spore_description_file_url')); + $options['spore_base_url'] = trim(get_config('pod', 'spore_base_url')); + $options['spore_token'] = trim(get_config('pod', 'spore_token')); + $options['media_server_url'] = trim(get_config('pod', 'media_server_url')); + $options['page_size'] = trim(get_config('pod', 'page_size')); + } + $options = parent::get_option($config); + return $options; + } + /** + * Add Plugin settings input to Moodle form + * @param object $mform + */ + public static function type_config_form($mform, $classname = 'repository') { + $sporedescriptionfileurl = get_config('pod', 'spore_description_file_url'); + $sporebaseurl = get_config('pod', 'spore_base_url'); + $sporetoken = get_config('pod', 'spore_token'); + $mediaserverurl = get_config('pod', 'media_server_url'); + $pagesize = get_config('pod', 'page_size'); + + if (empty($sporedescriptionfileurl)) { + $sporedescriptionfileurl = ''; + } + if (empty($sporebaseurl)) { + $sporebaseurl = ''; + } + if (empty($sporetoken)) { + $sporetoken = ''; + } + if (empty($mediaserverurl)) { + $mediaserverurl = ''; + } + if (empty($pagesize)) { + $pagesize = ''; + } + + parent::type_config_form($mform); + + $strrequired = get_string('required'); + + $mform->addElement('text', 'spore_description_file_url', get_string('spore_description_file_url', 'repository_pod'), + array('value' => $sporedescriptionfileurl, 'size' => '100')); + $mform->addElement('static', null, '', get_string('spore_description_file_url_help', 'repository_pod')); + + $mform->setType('spore_description_file_url', PARAM_RAW_TRIMMED); + $mform->addElement('text', 'spore_base_url', get_string('spore_base_url', 'repository_pod'), + array('value' => $sporebaseurl, 'size' => '100')); + $mform->addElement('static', null, '', get_string('spore_base_url_help', 'repository_pod')); + $mform->setType('spore_base_url', PARAM_RAW_TRIMMED); + + $mform->addElement('text', 'spore_token', get_string('spore_token', 'repository_pod'), + array('value' => $sporetoken, 'size' => '100')); + $mform->setType('spore_token', PARAM_RAW_TRIMMED); + $mform->addElement('static', null, '', get_string('spore_token_help', 'repository_pod')); + + $mform->addElement('text', 'media_server_url', get_string('media_server_url', 'repository_pod'), + array('value' => $mediaserverurl, 'size' => '200')); + $mform->setType('media_server_url', PARAM_RAW_TRIMMED); + $mform->addElement('static', null, '', get_string('media_server_url_help', 'repository_pod')); + + $mform->addElement('text', 'page_size', get_string('page_size', 'repository_pod'), + array('value' => $pagesize, 'size' => '200')); + $mform->setType('page_size', PARAM_INT); + $mform->addElement('static', null, '', get_string('page_size_help', 'repository_pod')); + + $mform->addRule('spore_description_file_url', $strrequired, 'required', null, 'client'); + $mform->addRule('spore_base_url', $strrequired, 'required', null, 'client'); + $mform->addRule('spore_token', $strrequired, 'required', null, 'client'); + $mform->addRule('media_server_url', $strrequired, 'required', null, 'client'); + $mform->addRule('page_size', $strrequired, 'required', null, 'client'); + } + /** + * Names of the plugin settings + * @return array + */ + public static function get_type_option_names() { + return array('spore_description_file_url', 'spore_base_url', 'spore_token', 'media_server_url', 'page_size'); + } +} + + + + +class repository_pod_tools { + const POD_NOTPOD = -2; + const POD_EXISTS = 1; + const POD_NOTEXISTS = 0; + const POD_SERVERKO = -1; + + const MEDIATYPE_AUDIO = "audio"; + const MEDIATYPE_VIDEO = "video"; + + static public function get_client() { + global $CFG; + require_once($CFG->dirroot.'/local/spore/src/MyMiddleware.php'); + require_once($CFG->dirroot.'/local/spore/src/Spore.php'); + + $sporedescriptionfileurl = get_config('pod', 'spore_description_file_url'); + $sporebaseurl = get_config('pod', 'spore_base_url'); + $sporetoken = get_config('pod', 'spore_token'); + try { + + $client = new \Spore($sporedescriptionfileurl); + } catch (Exception $e) { + return false; + } + + $client->setBaseUrl($sporebaseurl); + $client->enable("Spore_Middleware_Authentication", array("authorization" => "Token $sporetoken")); + return $client; + } + static public function execute_request($client, $func, $params) { + /* + * Needed for Php spore Http query string construction, because Moodle has modified default value in setup.php + */ + try { + $oldqueryseparator = ini_get('arg_separator.output'); + ini_set('arg_separator.output', '&'); + $result = self::execute_raw_request($client, $func, $params); + ini_set('arg_separator.output', $oldqueryseparator); + } catch (Exception $e) { + ini_set('arg_separator.output', $oldqueryseparator); + throw $e; + } + return $result; + } + static public function execute_raw_request($client, $func, $params) { + global $CFG; + require_once($CFG->dirroot.'/local/spore/src/MyMiddleware.php'); + require_once($CFG->dirroot.'/local/spore/src/Spore.php'); + if (!is_array($params)) { + return false; + } + $res = array(); + + $result = $client->$func($params); + + if (!isset($result->status) || $result->status == "404") { + return false; + } + + if (isset($result->body->results)) { + foreach ($result->body->results as $data) { + array_push($res, $data); + } + $page = isset($params['page']) ? $params['page'] : 1; + return array('page' => $page, 'results' => $res, 'pages' => $result->body->num_pages, 'total' => $result->body->count); + } else { + return false; + } + } + static public function get_all_encoded_files($resultarray) { + global $OUTPUT; + // Get all encoded files for one username. + $mediaserverurl = get_config('pod', 'media_server_url'); + $list = array(); + $list['total'] = $resultarray['total']; + $list['pages'] = $resultarray['pages']; + $list['perpage'] = get_config('pod', 'page_size'); + $list['page'] = $resultarray['page']; + $list['norefresh'] = true; + $result = $resultarray['results']; + if (count($result) > 0) { + $list['list'] = array(); + for ($i = 0; $i < count($result); $i++) { + $podsencodingpodsset = $result[$i]->podsencodingpods_set; + if (count($podsencodingpodsset) == 0) { + // Video with missing encoding. + continue; + } else if (count($podsencodingpodsset) == 1) { + // Videos with only one encoding. + $encodingfile = $podsencodingpodsset[0]->encodingfile; + $mediatype = $podsencodingpodsset[0]->encodingtype->mediatype; + if (! in_array($mediatype, array(self::MEDIATYPE_AUDIO, self::MEDIATYPE_VIDEO))) { + continue; + } + } else { + // Videos with many encoding (select only highest resolution). + $outputheightmax = null; + $outputheightmaxindex = null; + $mediatypevideofound = false; + for ($j = 0; $j < count($podsencodingpodsset); $j++) { + $mediatype = $podsencodingpodsset[$j]->encodingtype->mediatype; + $outputheight = $podsencodingpodsset[$j]->encodingtype->output_height; + if ($mediatype == self::MEDIATYPE_VIDEO) { + // Video encoding. + if (($outputheight == null) || ($outputheight > $outputheightmax)) { + $outputheightmax = $outputheight; + $outputheightmaxindex = $j; + } + $mediatypevideofound = true; + } else if ($mediatype == self::MEDIATYPE_AUDIO) { + // Audio encoding. + if (!$mediatypevideofound) { + $outputheightmaxindex = $j; + } + } else { + continue; + } + } + $encodingfile = $podsencodingpodsset[$outputheightmaxindex]->encodingfile; + $mediatype = $podsencodingpodsset[$outputheightmaxindex]->encodingtype->mediatype; + } + $podcourseid = $result[$i]->id; + $title = $result[$i]->title; + $url = $mediaserverurl.$encodingfile; + $source = $podcourseid; + $author = $result[$i]->owner->username; + $datemodified = strtotime($result[$i]->date_added); + $datecreated = $result[$i]->date_evt; + if ($datecreated === null) { + $datecreated = $datemodified; + } else { + $datecreated = strtotime($datecreated); + } + $duration = $result[$i]->duration; + if ($mediatype == self::MEDIATYPE_VIDEO) { + $extension = '.mp4'; + } else if ($mediatype == self::MEDIATYPE_AUDIO) { + $extension = '.mp3'; + } + $license = get_string("podlicenceinformationunavailable", "repository_pod"); + $list['list'][$i] = array( + 'title' => $title.$extension, + 'url' => $url, + 'source' => $source, + 'encodingfile' => $encodingfile, + 'datecreated' => $datecreated, + 'datemodified' => $datemodified, + 'size' => null, + 'author' => $author, + 'license' => $license + ); + try { + if (property_exists($result[$i],"thumbnail")) { + $thumbnailfile = $result[$i]->thumbnail->file_ptr->file; + $list["list"][$i]["thumbnail"] = $mediaserverurl.$thumbnailfile; + } else { + $list["list"][$i]["thumbnail"] = $OUTPUT->image_url(file_extension_icon($url, 24))->out(false); + } + } catch (Exception $e) { + $list["list"][$i]["thumbnail"] = $OUTPUT->image_url(file_extension_icon($url, 24))->out(false); + } + } + + } else { + $list['list'] = array(); + } + return $list; + } + /** + * check if the current resource is pod type and exists on pod + * @param $ctxid module contextid + * @throws \moodle_exception + * @return boolean 2 if not a pod resource,if pod and exist on pod return 1, 0 if pod and not exist on pod ,-1 pod not respond + */ + public static function check_resource_exists_from_contextid($ctxid) { + global $DB, $CFG; + $sql = "SELECT r.type,f.source + FROM mdl_files f INNER JOIN {files_reference} fr ON fr.id=f.referencefileid + INNER JOIN {repository_instances} ri on fr.repositoryid=ri.id INNER JOIN {repository} r on r.id=ri.typeid + WHERE f.contextid=:ctxid AND r.type=:type AND f.component=:component AND f.filearea=:filearea"; + $record = $DB->get_record_sql($sql, + array('ctxid' => $ctxid, 'type' => 'pod', 'component' => 'mod_resource', 'filearea' => 'content')); + if ($record && $record->type == 'pod') { + // Check pod resource exists. + $repositorypodtools = new repository_pod_tools(); + $podresourceid = $record->source; + $params = array( + "id" => $podresourceid, + "format" => "json", + "to_encode" => "False", + "encoding_in_progress" => "False" + ); + try { + $client = $repositorypodtools->get_client(); + } catch (Exception $e) { + // Pod communication cut return false. + return self::POD_SERVERKO; + } + $result = $repositorypodtools->execute_request($client, "get_pods", $params); + if (! $result) { + return self::POD_SERVERKO; + } + $list = $repositorypodtools->get_all_encoded_files($result); + if (count($list['list']) > 0) { + return self::POD_EXISTS; + } else { + return self::POD_NOTEXISTS; + } + } + return self::POD_NOTPOD; + } +} + + +function repository_pod_pluginfile($course, $cm, $context, $filearea, $args, $forcedownload, array $options=array()) { + global $OUTPUT, $CFG; + // Allowed filearea is either thumb or icon - size of the thumbnail. + if ($filearea !== 'thumb' && $filearea !== 'icon') { + return false; + } + + // As itemid we pass repository instance id. + $itemid = array_shift($args); + // Filename is some token that we can ignore (used only to make sure browser does not serve cached copy when file is changed). + array_pop($args); + // As filepath we use full filepath (dir+name) of the file in this instance of filesystem repository. + $filepath = implode('/', $args); + + // Make sure file exists in the repository and is accessible. + $repo = repository::get_repository_by_id($itemid, $context); + $repo->check_capability(); + // Find stored or generated thumbnail. + if (!($file = $repo->get_thumbnail($filepath, $filearea))) { + // Generation failed, redirect to default icon for file extension. + redirect($OUTPUT->pix_icon(file_extension_icon($file, 90))); + } + // The thumbnails should not be changing much, but maybe the default lifetime is too long. + $lifetime = $CFG->filelifetime; + if ($lifetime > 60 * 10) { + $lifetime = 60 * 10; + } + send_stored_file($file, $lifetime, 0, $forcedownload, $options); +} diff --git a/plugin/pod/patch/repository_filepicker_js.patch b/plugin/pod/patch/repository_filepicker_js.patch new file mode 100755 index 0000000000000000000000000000000000000000..41d0960ff44eb5ecc1ca403d74837f7a2baf9cb4 --- /dev/null +++ b/plugin/pod/patch/repository_filepicker_js.patch @@ -0,0 +1,50 @@ +--- /datas2/moodles/moodle3.0.10/moodle/repository/filepicker.js 2017-05-07 21:32:44.000000000 +0200 ++++ /datas2/gitworkspace/moodle27/moodle2_version/repository/filepicker.js 2017-06-15 09:33:28.673857147 +0200 +@@ -1032,10 +1032,13 @@ + return; + } + this.active_repo.nextpagerequested = true; +- var nextpage = this.active_repo.page+1; ++ var nextpage = this.active_repo.page+1; + var args = { + page: nextpage, +- repo_id: this.active_repo.id ++ repo_id: this.active_repo.id, ++ //Unistra Dev ++ s: ((this.active_repo.searchtext!= undefined && this.active_repo.searchtext !=null && this.active_repo.searchtext!='') ?this.active_repo.searchtext:'') ++ //End Unistra Dev + }; + var action = this.active_repo.issearchresult ? 'search' : 'list'; + this.request({ +@@ -1438,6 +1441,9 @@ + this.active_repo.message = (data.message || ''); + this.active_repo.help = data.help?data.help:null; + this.active_repo.manage = data.manage?data.manage:null; ++ //UNISTRA Dev ++ this.active_repo.searchtext = data.searchtext?data.searchtext:null; ++ //End UNISTRA Dev + this.print_header(); + }, + print_login: function(data) { +@@ -1841,6 +1847,9 @@ + scope: this, + action:'searchform', + repository_id: this.active_repo.id, ++ //Unistra dev ++ search_text: this.active_repo.searchtext, ++ //end Unistra dev + callback: function(id, obj, args) { + if (obj.repo_id == scope.active_repo.id && obj.form) { + // if we did not jump to another repository meanwhile +@@ -1848,6 +1857,11 @@ + // Highlight search text when user click for search. + var searchnode = searchform.one('input[name="s"]'); + if (searchnode) { ++ //Unistra dev ++ if(this.search_text){ ++ searchnode.set('value',this.search_text); ++ } ++ //End Unistra dev + searchnode.once('click', function(e) { + e.preventDefault(); + this.select(); diff --git a/plugin/pod/pix/icon.png b/plugin/pod/pix/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..edc62c5c160e12e6350841b29ecdc306a41d4d7f Binary files /dev/null and b/plugin/pod/pix/icon.png differ diff --git a/plugin/pod/pod-ws/moodle.json b/plugin/pod/pod-ws/moodle.json new file mode 100755 index 0000000000000000000000000000000000000000..e5ae3cb168f0e723d2b4a9aa4586c6ec8b92a5fd --- /dev/null +++ b/plugin/pod/pod-ws/moodle.json @@ -0,0 +1 @@ +{"username": "moodle", "fields_permissions": [{"model": "authuser", "name": "id", "app_label": "webservice"}, {"model": "authuser", "name": "username", "app_label": "webservice"}, {"model": "coreencodingtype", "name": "mediatype", "app_label": "webservice"}, {"model": "coreencodingtype", "name": "name", "app_label": "webservice"}, {"model": "coreencodingtype", "name": "output_height", "app_label": "webservice"}, {"model": "corefilebrowse", "name": "document", "app_label": "webservice"}, {"model": "filerfile", "name": "file", "app_label": "webservice"}, {"model": "filerimage", "name": "file_ptr", "app_label": "webservice"}, {"model": "podscontributorpods", "name": "name", "app_label": "webservice"}, {"model": "podscontributorpods", "name": "role", "app_label": "webservice"}, {"model": "podscontributorpods", "name": "role", "app_label": "webservice"}, {"model": "podsencodingpods", "name": "encodingfile", "app_label": "webservice"}, {"model": "podsencodingpods", "name": "encodingformat", "app_label": "webservice"}, {"model": "podsencodingpods", "name": "encodingtype", "app_label": "webservice"}, {"model": "podsencodingpods", "name": "video", "app_label": "webservice"}, {"model": "podsenrichpods", "name": "type", "app_label": "webservice"}, {"model": "podspod", "name": "date_added", "app_label": "webservice"}, {"model": "podspod", "name": "date_evt", "app_label": "webservice"}, {"model": "podspod", "duration": "encoding_in_progress", "app_label": "webservice"}, {"model": "podspod", "name": "encoding_in_progress", "app_label": "webservice"}, {"model": "podspod", "name": "encoding_status", "app_label": "webservice"}, {"model": "podspod", "name": "id", "app_label": "webservice"}, {"model": "podspod", "name": "owner", "app_label": "webservice"}, {"model": "podspod", "name": "pod_media_url", "app_label": "webservice"}, {"model": "podspod", "name": "podscontributorpods_set", "app_label": "webservice"}, {"model": "podspod", "name": "podsencodingpods_set", "app_label": "webservice"}, {"model": "podspod", "name": "slug", "app_label": "webservice"}, {"model": "podspod", "name": "thumbnail", "app_label": "webservice"}, {"model": "podspod", "name": "title", "app_label": "webservice"}, {"model": "podspod", "name": "to_encode", "app_label": "webservice"}, {"model": "podspod", "name": "type", "app_label": "webservice"}, {"model": "podspod", "name": "video", "app_label": "webservice"}, {"model": "podstype", "name": "slug", "app_label": "webservice"}, {"model": "podstype", "name": "title", "app_label": "webservice"}]} diff --git a/plugin/pod/tests/generator/lib.php b/plugin/pod/tests/generator/lib.php new file mode 100755 index 0000000000000000000000000000000000000000..273fb5fd96cfcd0b83381a1b139182dd330fee3e --- /dev/null +++ b/plugin/pod/tests/generator/lib.php @@ -0,0 +1,33 @@ +<?php + + +/** + * repository_pod data generator + * + * @package repository_pod + * @subpackage + * @copyright 2017 Unistra {@link http://nistra.fr} + * @author Pascal Mathelin <pascal.mathelin@unistra.fr> + * @author Celine Perves <cperves@unistra.fr> + * @author Claude Yahou <claude.yahou@unistra.fr> + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * + */ + + +defined('MOODLE_INTERNAL') || die(); + +/** + * repository_pod data generator class. + * + * @package repository_pod + * @category test + */ +class repository_pod_generator extends testing_data_generator { + + public function create_pod_instance($pod, $fields,$course){ + //retrieve plugin to add instance + $plugin = repository_get_plugin($pod); + return $plugin->add_instance($course, $fields); + } + +} diff --git a/plugin/pod/tests/lib_test.php b/plugin/pod/tests/lib_test.php new file mode 100755 index 0000000000000000000000000000000000000000..e5ab267411e4c952bf42d68d49fcd3423af1646b --- /dev/null +++ b/plugin/pod/tests/lib_test.php @@ -0,0 +1,376 @@ +<?php +// This file is part of Moodle - http://moodle.org/ +// +// Moodle is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Moodle is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Moodle. If not, see <http://www.gnu.org/licenses/>. +/** + * Pod tests. + * + * @package repository_pod + * @category phpunit + * @copyright 2017 Unistra {@link http://nistra.fr} + * @author Pascal Mathelin <pascal.mathelin@unistra.fr> + * @author Celine Perves <cperves@unistra.fr> + * @author Claude Yahou <claude.yahou@unistra.fr> + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + + +class repository_pod_lib_testcase extends advanced_testcase +{ + public function setUp() + { + set_config('page_size', '20', 'pod'); + // First video with only one encoding size + $encodingtype1 = new stdClass(); + $encodingtype1->mediatype = "video"; + $encodingtype1->name = "480"; + $encodingtype1->output_height = 480; + + $podsencodingpod1 = new StdClass(); + $podsencodingpod1->encodingfile = "videos/test_user/2274baeed68844b520f46a40d1b2e621d71e7e4cbe173ede4efe6b9d8149f1a0/18936/video_18936_480.mp4"; + $podsencodingpod1->encodingformat = "video/mp4"; + $podsencodingpod1->encodingtype = $encodingtype1; + $podsencodingpod1->video = 18936; + + $owner1 = new StdClass(); + $owner1->id = 570; + $owner1->username = "test_user"; + + $type1 = new StdClass(); + $type1->slug = "avc-video"; + $type1->title = "AVC video"; + + $result1 = new StdClass(); + $result1->encoding_in_progress = false; + $result1->encoding_status = "DONE at Mon Jun 12 11:50:13 2017"; + $result1->id = 18936; + $result1->owner = $owner1; + $result1->slug = "18936-test-video1"; + $result1->title = "Test pod Video1"; + $result1->to_encode = false; + $result1->type = $type1; + $result1->video = "videos/test_user/65d43d6cd56d90802bf5a688a5563cf0abc9fdf0a4251061ed539e9855586705/Video1.mp4"; + $result1->pod_media_url = "https://podcast-test.u-strasbg.fr/media/"; + $result1->podscontributorpods_set = array(); + $result1->podsencodingpods_set = array($podsencodingpod1); + $result1->date_added = "2017-01-23"; + $result1->date_evt = "2017-01-23"; + $result1->duration = 10; + + // Second video with two encoding sizes + $encodingtype21 = new stdClass(); + $encodingtype21->mediatype = "video"; + $encodingtype21->name = "720"; + $encodingtype21->output_height = 720; + + $podsencodingpod21 = new StdClass(); + $podsencodingpod21->encodingfile = "videos/test_user/a28bab64c520b0b8043030d6bf797b1b3d5d87609c67c8154840ceb5734b3246/18957/video_18957_720.mp4"; + $podsencodingpod21->encodingformat = "video/mp4"; + $podsencodingpod21->encodingtype = $encodingtype21; + $podsencodingpod21->video = 18957; + + $encodingtype22 = new stdClass(); + $encodingtype22->mediatype = "video"; + $encodingtype22->name = "480"; + $encodingtype22->output_height = 480; + + $podsencodingpod22 = new StdClass(); + $podsencodingpod22->encodingfile = "videos/test_user/a28bab64c520b0b8043030d6bf797b1b3d5d87609c67c8154840ceb5734b3246/18957/video_18957_480.mp4"; + $podsencodingpod22->encodingformat = "video/mp4"; + $podsencodingpod22->encodingtype = $encodingtype22; + $podsencodingpod22->video = 18957; + + $owner2 = new StdClass(); + $owner2->id = 570; + $owner2->username = "test_user"; + + $type2 = new StdClass(); + $type2->slug = "avc-video"; + $type2->title = "AVC video"; + + $result2 = new StdClass(); + $result2->encoding_in_progress = false; + $result2->encoding_status = "DONE at Mon Jun 19 15:03:50 2017"; + $result2->id = 18957; + $result2->owner = $owner2; + $result2->slug = "18957-test-video2"; + $result2->title = "Test pod Video2"; + $result2->to_encode = false; + $result2->type = $type2; + $result2->video = "videos/test_user/65d43d6cd56d90802bf5a688a5563cf0abc9fdf0a4251061ed539e9855586705/Video2.mp4"; + $result2->pod_media_url = "https://podcast-test.u-strasbg.fr/media/"; + $result2->podscontributorpods_set = array(); + $result2->podsencodingpods_set = array($podsencodingpod21, $podsencodingpod22); + $result2->date_added = "2017-01-23"; + $result2->date_evt = "2017-01-23"; + $result2->duration = 20; + + // Third video for further test of pagination + $encodingtype3 = new stdClass(); + $encodingtype3->mediatype = "video"; + $encodingtype3->name = "240"; + $encodingtype3->output_height = 240; + + $podsencodingpod3 = new StdClass(); + $podsencodingpod3->encodingfile = "videos/test_user/5b4b22f0bf0753a360b8b56f71b494bc08aa968abe2978ccf1854cb80a2c3dec/18937/video_18937_240.mp4"; + $podsencodingpod3->encodingformat = "video/mp4"; + $podsencodingpod3->encodingtype = $encodingtype3; + $podsencodingpod3->video = 18937; + + $owner3 = new StdClass(); + $owner3->id = 570; + $owner3->username = "test_user"; + + $type3 = new StdClass(); + $type3->slug = "avc-video"; + $type3->title = "AVC video"; + + $result3 = new StdClass(); + $result3->encoding_in_progress = false; + $result3->encoding_status = "DONE at Mon Jul 3 16:22:37 2017"; + $result3->id = 18937; + $result3->owner = $owner3; + $result3->slug = "18937-test-video3"; + $result3->title = "Test pod Video3"; + $result3->to_encode = false; + $result3->type = $type3; + $result3->video = "videos/test_user/65d43d6cd56d90802bf5a688a5563cf0abc9fdf0a4251061ed539e9855586705/Video3.mp4"; + $result3->pod_media_url = "https://podcast-test.u-strasbg.fr/media/"; + $result3->podscontributorpods_set = array(); + $result3->podsencodingpods_set = array($podsencodingpod3); + $result3->date_added = "2017-01-23"; + $result3->date_evt = "2017-01-23"; + $result3->duration = 30; + + $this->resultarray = array( + "page" => 1, + "results" => array($result1, $result2, $result3), + "pages" => 1, + "total" => 3 + ); + + + $this->emptyresultarray = array( + "page" => 1, + "results" => array(), + "pages" => 1, + "total" => 0 + ); + + /* + * Exemple of data returned by get_listing + $resultdatafrompod = <<<'EOT' +{"page":1, + "results":[ {"encoding_in_progress":false, + "encoding_status": "DONE at Mon Jun 12 11:50:13 2017", + "id":18936, + "owner":{"id":570,"username":"yahou"}, + "slug":"18936-test-video1", + "title":"Test pod Video1", + "to_encode":false, + "type":{"slug":"avc-video","title":"AVC video"}, + "video":"videos\/yahou\/65d43d6cd56d90802bf5a688a5563cf0abc9fdf0a4251061ed539e9855586705\/Video1.mp4", + "pod_media_url":"https:\/\/podcast-test.u-strasbg.fr\/media\/", + "podscontributorpods_set":[], + "podsencodingpods_set":[{"encodingfile":"videos\/yahou\/2274baeed68844b520f46a40d1b2e621d71e7e4cbe173ede4efe6b9d8149f1a0\/18936\/video_18936_480.mp4", + "encodingformat":"video\/mp4", + "encodingtype":{"mediatype":"video", + "name":"480", + "output_height":480}, + "video":18936 + } + ] + }, + {"encoding_in_progress":false, + "encoding_status":"DONE at Mon Jun 19 15:03:50 2017", + "id":18957,"owner":{"id":570,"username":"yahou"}, + "slug":"18957-test-video2", + "title":"Test pod Video2", + "to_encode":false, + "type":{"slug":"avc-video","title":"AVC video"}, + "video":"videos\/yahou\/65d43d6cd56d90802bf5a688a5563cf0abc9fdf0a4251061ed539e9855586705\/Video2.mp4", + "pod_media_url":"https:\/\/podcast-test.u-strasbg.fr\/media\/", + "podscontributorpods_set":[], + "podsencodingpods_set":[{"encodingfile":"videos\/yahou\/a28bab64c520b0b8043030d6bf797b1b3d5d87609c67c8154840ceb5734b3246\/18957\/video_18957_720.mp4", + "encodingformat":"video\/mp4", + "encodingtype":{"mediatype":"video","name":"720","output_height":720}, + "video":18957 + }, + {"encodingfile":"videos\/yahou\/a28bab64c520b0b8043030d6bf797b1b3d5d87609c67c8154840ceb5734b3246\/18957\/video_18957_480.mp4", + "encodingformat":"video\/mp4", + "encodingtype":{"mediatype":"video","name":"480","output_height":480}, + "video":18957 + } + ] + }, + {"encoding_in_progress":false, + "encoding_status":"DONE at Mon Jul 3 16:22:37 2017", + "id":18937,"owner":{"id":570,"username":"yahou"}, + "slug":"18937-test-video3", + "title":"Test pod Video3", + "to_encode":false, + "type":{"slug":"avc-video","title":"AVC video"}, + "video":"videos\/yahou\/65d43d6cd56d90802bf5a688a5563cf0abc9fdf0a4251061ed539e9855586705\/Video3.mp4", + "pod_media_url":"https:\/\/podcast-test.u-strasbg.fr\/media\/", + "podscontributorpods_set":[], + "podsencodingpods_set":[{"encodingfile":"videos\/yahou\/5b4b22f0bf0753a360b8b56f71b494bc08aa968abe2978ccf1854cb80a2c3dec\/18937\/video_18937_240.mp4", + "encodingformat":"video\/mp4", + "encodingtype":{"mediatype":"video","name":"240","output_height":240}, + "video":18937 + } + ] + } + ], + "pages":1, + "total":3 +} +EOT; + */ + } + + public function tearDown() + { + } + + //TODO à finir bonne idée + public function test_pod_parameters_filled() + { + $this->resetAfterTest(); + /* + print(" >>>> test_pod_parameters_filled() -- start\n"); + $this->resetAfterTest(false); + $this->assertNotNull(get_config("pod", 'spore_description_file_url'), 'spore description file url setting null'); + $this->assertNotEmpty(get_config("pod", 'spore_description_file_url'), 'spore description file url setting empty'); + $this->assertNotNull(get_config("pod", 'spore_base_url'), 'spore description file url setting null'); + $this->assertNotEmpty(get_config("pod", 'spore_base_url'), 'spore description file url setting empty'); + $this->assertNotNull(get_config("pod", 'spore_token'), 'spore description file url setting null'); + $this->assertNotEmpty(get_config("pod", 'spore_token'), 'spore description file url setting empty'); + $this->assertNotNull(get_config("pod", 'media_server_url'), 'spore description file url setting null'); + $this->assertNotEmpty(get_config("pod", 'media_server_url'), 'spore description file url setting empty'); + $this->assertNotNull(get_config("pod", 'page_size'), 'spore description file url setting null'); + $this->assertNotEmpty(get_config("pod", 'page_size'), 'spore description file url setting empty'); + print(" <<<< test_pod_parameters_end() -- start\n"); + */ + } + + /** + * TODO doc + */ + public function test_function_get_all_encoded_files_with_normal_result() + { + global $CFG, $OUTPUT; + + $this->resetAfterTest(); + require_once($CFG->dirroot . '/repository/pod/lib.php'); + + $encodedfiles = repository_pod_tools::get_all_encoded_files($this->resultarray); + $this->assertEquals($encodedfiles, + array( + 'total' => 3, + 'pages' => 1, + 'perpage' => "20", + 'page' => 1, + 'norefresh' => true, + 'list' => array( + array( + 'title' => "Test pod Video1.mp4", + 'url' => "videos/test_user/2274baeed68844b520f46a40d1b2e621d71e7e4cbe173ede4efe6b9d8149f1a0/18936/video_18936_480.mp4", + 'source' => 18936, + 'encodingfile' => "videos/test_user/2274baeed68844b520f46a40d1b2e621d71e7e4cbe173ede4efe6b9d8149f1a0/18936/video_18936_480.mp4", + 'datecreated' => strtotime("2017-01-23"), + 'datemodified' => strtotime("2017-01-23"), + 'size' => null, + 'author' => 'test_user', + 'license' => '-', + 'thumbnail' => $OUTPUT->image_url(file_extension_icon("videos/test_user/2274baeed68844b520f46a40d1b2e621d71e7e4cbe173ede4efe6b9d8149f1a0/18936/video_18936_480.mp4", 24),'')->out(false) + ), + array( + 'title' => "Test pod Video2.mp4", + 'url' => "videos/test_user/a28bab64c520b0b8043030d6bf797b1b3d5d87609c67c8154840ceb5734b3246/18957/video_18957_720.mp4", + 'source' => 18957, + 'encodingfile' => "videos/test_user/a28bab64c520b0b8043030d6bf797b1b3d5d87609c67c8154840ceb5734b3246/18957/video_18957_720.mp4", + 'datecreated' => strtotime("2017-01-23"), + 'datemodified' => strtotime("2017-01-23"), + 'size' => null, + 'author' => 'test_user', + 'license' => '-', + 'thumbnail' => $OUTPUT->image_url(file_extension_icon("videos/test_user/a28bab64c520b0b8043030d6bf797b1b3d5d87609c67c8154840ceb5734b3246/18957/video_18957_720.mp4", 24),'')->out(false) + ), + array( + 'title' => "Test pod Video3.mp4", + 'url' => "videos/test_user/5b4b22f0bf0753a360b8b56f71b494bc08aa968abe2978ccf1854cb80a2c3dec/18937/video_18937_240.mp4", + 'source' => 18937, + 'encodingfile' => "videos/test_user/5b4b22f0bf0753a360b8b56f71b494bc08aa968abe2978ccf1854cb80a2c3dec/18937/video_18937_240.mp4", + 'datecreated' => strtotime("2017-01-23"), + 'datemodified' => strtotime("2017-01-23"), + 'size' => null, + 'author' => 'test_user', + 'license' => '-', + 'thumbnail' => $OUTPUT->image_url(file_extension_icon("videos/test_user/5b4b22f0bf0753a360b8b56f71b494bc08aa968abe2978ccf1854cb80a2c3dec/18937/video_18937_240.mp4", 24),'')->out(false) + ), + ) + ) + ); + } + + /** + * + */ + public function test_function_get_all_encoded_files_with_no_result_params() + { + global $CFG; + + $this->resetAfterTest(); + + $encodedfiles = repository_pod_tools::get_all_encoded_files($this->emptyresultarray); + $this->assertEquals($encodedfiles, + array( + 'total' => 0, + 'pages' => 1, + 'perpage' => "20", + 'page' => 1, + 'norefresh' => true, + 'list' => array() + ) + ); + } + /** + * result with no encodingset is evinced + */ + public function test_function_get_all_encoded_files_with_missing_encodingpodset() + { + global $CFG; + + $this->resetAfterTest(); + $this->resultarray["results"][1]->podsencodingpods_set = array(); + $results = repository_pod_tools::get_all_encoded_files($this->resultarray); + $this->assertArrayNotHasKey(1, $results); + } + + /** + * result with no mediatype recognize is evinced + */ + public function test_function_get_all_encoded_files_with_unknown_mediatype() + { + global $CFG; + + $this->resetAfterTest(); + $this->resultarray["results"][1]->podsencodingpods_set[1]->encodingtype->mediatype = "other"; + $results = repository_pod_tools::get_all_encoded_files($this->resultarray); + $this->assertArrayNotHasKey(1, $results); + } +} + diff --git a/plugin/pod/version.php b/plugin/pod/version.php new file mode 100755 index 0000000000000000000000000000000000000000..685e30857ef93fef16f1760f884cd2bcf7f252ae --- /dev/null +++ b/plugin/pod/version.php @@ -0,0 +1,37 @@ +<?php +// This file is part of Moodle - http://moodle.org/ +// +// Moodle is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Moodle is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Moodle. If not, see <http://www.gnu.org/licenses/>. + +/** + * Folder plugin version information + * + * @package + * @subpackage + * @copyright 2019 unistra {@link http://unistra.fr} + * @author Pascal Mathelin <pascal.mathelin@unistra.fr> + * @author Celine Perves <cperves@unistra.fr> + * @author Claude Yahou <claude.yahou@unistra.fr> + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * + */ + +defined('MOODLE_INTERNAL') || die(); + +$plugin->version = 2019100400; +$plugin->requires = 2018051708; +$plugin->component = 'repository_pod'; +$plugin->dependencies = array( + 'local_spore' => ANY_VERSION, +); \ No newline at end of file diff --git a/plugin/spore/Changes b/plugin/spore/Changes new file mode 100755 index 0000000000000000000000000000000000000000..3a5b57fc127cd3ac534f0087a2bdc2e8365d7d1b --- /dev/null +++ b/plugin/spore/Changes @@ -0,0 +1,5 @@ +0.03 + Add composer.json + +0.01 + first version of the PHP spore client diff --git a/plugin/spore/README.md b/plugin/spore/README.md new file mode 100755 index 0000000000000000000000000000000000000000..e32f8f966eaf141bedb8dba28e1439d27608f779 --- /dev/null +++ b/plugin/spore/README.md @@ -0,0 +1,2 @@ +# local/spore +* spore yml definition and classes \ No newline at end of file diff --git a/plugin/spore/VERSION b/plugin/spore/VERSION new file mode 100755 index 0000000000000000000000000000000000000000..ff1e90107f723cd0a9b82d754fb3b4baf602e074 --- /dev/null +++ b/plugin/spore/VERSION @@ -0,0 +1 @@ +0.03 diff --git a/plugin/spore/classes/privacy/provider.php b/plugin/spore/classes/privacy/provider.php new file mode 100755 index 0000000000000000000000000000000000000000..cdb6164c87a51bc7d9a480ceae49cd3d838fe992 --- /dev/null +++ b/plugin/spore/classes/privacy/provider.php @@ -0,0 +1,41 @@ +<?php +// This file is part of Moodle - http://moodle.org/ +// +// Moodle is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Moodle is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Moodle. If not, see <http://www.gnu.org/licenses/>. +/** + * Privacy Subsystem implementation for enrol_manual. + * + * @package local_zz_last_actions + * @copyright 2019 Céline Pervès <cperves@unistra.fr> + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +namespace local_spore\privacy; +defined('MOODLE_INTERNAL') || die(); +/** + * Privacy Subsystem for local_spore implementing null_provider. + * + * @copyright 2019 Céline Pervès <cperves@unistra.fr> + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class provider implements \core_privacy\local\metadata\null_provider { + /** + * Get the language string identifier with the component's language + * file to explain why this plugin stores no data. + * + * @return string + */ + public static function get_reason() : string { + return 'privacy:metadata'; + } +} \ No newline at end of file diff --git a/plugin/spore/config/route_config.desktop.yaml b/plugin/spore/config/route_config.desktop.yaml new file mode 100755 index 0000000000000000000000000000000000000000..255bc033e74b52c97ba72f791aaa8fccecb8cfda --- /dev/null +++ b/plugin/spore/config/route_config.desktop.yaml @@ -0,0 +1,11957 @@ +--- +base_url: http://localhost:5021 +version: 0.640000 +format: + - json + - xml + - yml +methods: +################################################################### +# general functions +################################################################### + get_default: + path: / + method: GET +################################################################### +# access_right functions +################################################################### + get_access_right: + path: /advertiser/access_rights/:id.:format + method: GET + required_params: + - id + access_right_list: + path: /advertiser/access_rights.:format + method: GET + optional_params: + - id + - list_limit + - list_offset + - order_direction + - order_fields + - label + - access + update_access_right: + path: /advertiser/access_rights/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - access + create_access_right: + path: /advertiser/access_rights.:format + method: POST + required_params: + - label + - access + get_access_privileges_from_access_right: + path: /advertiser/access_rights/:id/access_privileges.:format + method: GET + required_params: + - id +################################################################### +# account functions +################################################################### + get_account: + path: /advertiser/accounts/:id.:format + method: GET + required_params: + - id + account_list: + path: /advertiser/accounts.:format + method: GET + optional_params: + - id + - list_limit + - list_offset + - order_direction + - order_fields + - country_id + - activity_sector_id + - host + - status + - timezone_id + search_account: + path: /advertiser/accounts.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + get_activity_sector_from_account: + path: /advertiser/accounts/:id/activity_sector.:format + method: GET + required_params: + - id + get_country_from_account: + path: /advertiser/accounts/:id/country.:format + method: GET + required_params: + - id + get_projects_from_account: + path: /advertiser/accounts/:id/projects.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_conversion_pages_from_account: + path: /advertiser/accounts/:id/conversion_pages.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_tracers_from_account: + path: /advertiser/accounts/:id/tracers.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_agencies_from_account: + path: /advertiser/accounts/:id/agencies.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_service_jobs_from_account: + path: /advertiser/accounts/:id/service_jobs.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + associate_agency_to_account: + path: /advertiser/accounts/:id/associate_agency.:format + method: PUT + required_params: + - id + - agency_id + unassociate_agency_to_account: + path: /advertiser/accounts/:id/unassociate_agency.:format + method: PUT + required_params: + - id + - agency_id + get_partnerships_from_account: + path: /advertiser/accounts/:id/partnerships.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_partnerships_related_to_channel_from_account: + path: /advertiser/accounts/:id/partnerships_related_to_channel/.:format + method: GET + required_params: + - id + optional_params: + - channel_label + - channel_id + - list_limit + - list_offset + - order_direction + - order_fields + get_market_countries_from_account: + path: /advertiser/accounts/:id/market_countries.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + associate_market_country_to_account: + path: /advertiser/accounts/:id/associate_market_country.:format + method: PUT + required_params: + - id + - country_id + unassociate_market_country_to_account: + path: /advertiser/accounts/:id/unassociate_market_country.:format + method: PUT + required_params: + - id + - country_id +################################################################### +# accounts_partnership functions +################################################################### + get_accounts_partnership: + path: /advertiser/accounts_partnerships/:id.:format + method: GET + required_params: + - id + accounts_partnership_list: + path: /advertiser/accounts_partnerships.:format + method: GET + optional_params: + - account_id + - id + - order_fields + - order_direction + - list_limit + - list_offset + - is_activated + search_accounts_partnership: + path: /advertiser/accounts_partnerships.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_accounts_partnership: + path: /advertiser/accounts_partnerships/:id.:format + method: PUT + required_params: + - id + optional_params: + - account_id + - is_activated + create_accounts_partnership: + path: /advertiser/accounts_partnerships.:format + method: POST + required_params: + - account_id + - partnership_external_id + - partnership_id + optional_params: + - is_activated + get_partnership_from_accounts_partnership: + path: /advertiser/accounts_partnerships/:id/partnership.:format + method: GET + required_params: + - id + get_account_from_accounts_partnership: + path: /advertiser/accounts_partnerships/:id/account.:format + method: GET + required_params: + - id +################################################################### +# activity_sector functions +################################################################### + get_advertiser_activity_sector: + path: /advertiser/activity_sectors/:id.:format + method: GET + required_params: + - id + advertiser_activity_sector_list: + path: /advertiser/activity_sectors.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - country_id + search_advertiser_activity_sector: + path: /advertiser/activity_sectors.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + get_country_from_advertiser_activity_sector: + path: /advertiser/activity_sectors/:id/country.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_accounts_from_activity_sector: + path: /advertiser/activity_sectors/:id/accounts.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# ad_element functions +################################################################### + get_ad_element: + path: /advertiser/ad_elements/:id.:format + method: GET + required_params: + - account_id + - id + ad_element_list: + path: /advertiser/ad_elements.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - file_version_id + - ad_position_id + - identifier + - size_id + - ad_element_order + - status + search_ad_element: + path: /advertiser/ad_elements.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_ad_element: + path: /advertiser/ad_elements/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - ad_element_order + - identifier + - settings + update_all_ad_element_role_and_order: + path: /advertiser/ad_elements/role_and_order/:format + method: PUT + required_params: + - account_id + - ad_element_role_id + - ad_element_ids + create_ad_element: + path: /advertiser/ad_elements.:format + method: POST + required_params: + - account_id + - file_version_id + - size_id + - ad_element_order + - ad_position_id + - ad_element_role_id + optional_params: + - identifier + - settings + get_file_version_from_ad_element: + path: /advertiser/ad_elements/:id/file_version.:format + method: GET + required_params: + - account_id + - id + get_size_from_ad_element: + path: /advertiser/ad_elements/:id/size.:format + method: GET + required_params: + - account_id + - id + get_ad_position_from_ad_element: + path: /advertiser/ad_elements/:id/ad_position.:format + method: GET + required_params: + - account_id + - id + get_ad_element_role_from_ad_element: + path: /advertiser/ad_elements/:id/ad_element_role.:format + method: GET + required_params: + - account_id + - id + create_ad_element_with_file: + path: /advertiser/ad_elements/with_file/:format + method: POST + required_params: + - account_id + - ad_element_role_id + - ad_position_id + - file_path + optional_params: + - size_id + - weight + - identifier + - ad_element_order + create_multi_ad_element_with_file: + path: /advertiser/ad_elements/multi_with_file/:format + method: POST + required_params: + - account_id + - ad_elements_detail + update_ad_element_settings: + path: /advertiser/ad_elements/:id/settings.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - settings + delete_ad_element: + path: /advertiser/ad_elements/:id.:format + method: DELETE + required_params: + - account_id + - id + activate_ad_element: + path: /advertiser/ad_elements/:id/activate.:format + method: PUT + required_params: + - account_id + - id +################################################################### +# ad_element_role functions +################################################################### + get_ad_element_role: + path: /advertiser/ad_element_roles/:id.:format + method: GET + required_params: + - id + ad_element_role_list: + path: /advertiser/ad_element_roles.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + search_ad_element_role: + path: /advertiser/ad_element_roles.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_ad_element_role: + path: /advertiser/ad_element_roles/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - key_label + create_ad_element_role: + path: /advertiser/ad_element_roles.:format + method: POST + required_params: + - label + - key_label + get_ad_elements_from_ad_element_role: + path: /advertiser/ad_element_roles/:id/ad_elements.:format + method: GET + required_params: + - id + - account_id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_ad_element_templates_from_ad_element_role: + path: /advertiser/ad_element_roles/:id/ad_element_templates.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_file_templates_from_ad_element_role: + path: /advertiser/ad_element_roles/:id/file_templates.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# ad_element_template functions +################################################################### + get_ad_element_template: + path: /advertiser/ad_element_templates/:id.:format + method: GET + required_params: + - id + ad_element_template_list: + path: /advertiser/ad_element_templates.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - javascript_version_id + - ad_element_role_id + search_ad_element_template: + path: /advertiser/ad_element_templates.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_ad_element_template: + path: /advertiser/ad_element_templates/:id.:format + method: PUT + required_params: + - id + optional_params: + - settings + - template_data + create_ad_element_template: + path: /advertiser/ad_element_templates.:format + method: POST + required_params: + - javascript_version_id + - ad_element_role_id + optional_params: + - settings + - template_data + delete_ad_element_template: + path: /advertiser/ad_element_templates/:id.:format + method: DELETE + required_params: + - id + get_javascript_version_from_ad_element_template: + path: /advertiser/ad_element_templates/:id/javascript_version.:format + method: GET + required_params: + - id + get_ad_element_role_from_ad_element_template: + path: /advertiser/ad_element_templates/:id/ad_element_role.:format + method: GET + required_params: + - id +################################################################### +# ad_network functions +################################################################### + get_ad_network: + path: /advertiser/ad_networks/:id.:format + method: GET + required_params: + - account_id + - id + ad_network_list: + path: /advertiser/ad_networks.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - status + search_ad_network: + path: /advertiser/ad_networks.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_ad_network: + path: /advertiser/ad_networks/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - ad_network_type + - common_ad_network_id + - label + - third_party_platform + create_ad_network: + path: /advertiser/ad_networks.:format + method: POST + required_params: + - account_id + - label + optional_params: + - ad_network_type + - common_ad_network_id + - third_party_platform + get_or_create_ad_network: + path: /advertiser/ad_networks.:format?as_singleton=1 + method: POST + required_params: + - account_id + - label + optional_params: + - ad_network_type + - common_ad_network_id + - third_party_platform + get_country_from_ad_network: + path: /advertiser/ad_networks/:id/country.:format + method: GET + required_params: + - account_id + - id + get_common_ad_network_from_ad_network: + path: /advertiser/ad_networks/:id/common_ad_network.:format + method: GET + required_params: + - account_id + - id + get_ad_spaces_from_ad_network: + path: /advertiser/ad_networks/:id/ad_spaces.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_insertions_from_ad_network: + path: /advertiser/ad_networks/:id/insertions.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# ad_position functions +################################################################### + get_ad_position: + path: /advertiser/ad_positions/:id.:format + method: GET + required_params: + - account_id + - id + ad_position_list: + path: /advertiser/ad_positions.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - cross_version_identifier + - creative_version_id + - size_id + - ad_element_id + - type + - staging_position + - lock_script + search_ad_position: + path: /advertiser/ad_positions.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_ad_position: + path: /advertiser/ad_positions/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - settings + - type + - setup_script + - before_ad_element_script + - before_render_script + - after_render_script + - staging_position + - lock_script + - scene_settings + create_ad_position: + path: /advertiser/ad_positions.:format + method: POST + required_params: + - account_id + - creative_version_id + - size_id + - setup_script + optional_params: + - settings + - type + - before_ad_element_script + - before_render_script + - after_render_script + - staging_position + - lock_script + - scene_settings + get_ad_elements_from_ad_position: + path: /advertiser/ad_positions/:id/ad_elements.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_size_from_ad_position: + path: /advertiser/ad_positions/:id/size.:format + method: GET + required_params: + - account_id + - id + get_creative_version_from_ad_position: + path: /advertiser/ad_positions/:id/creative_version.:format + method: GET + required_params: + - account_id + - id + get_partnership_elements_from_ad_position: + path: /advertiser/ad_positions/:id/partnership_elements.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_assigned_ad_positions_from_ad_position: + path: /advertiser/ad_positions/:id/assigned_ad_positions.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_setup_script_from_ad_position: + path: /advertiser/ad_positions/:id/setup_script.:format + method: PUT + required_params : + - id + - account_id + get_preview_setup_script_from_ad_position: + path: /advertiser/ad_positions/:id/preview_setup_script.:format + method: GET + required_params : + - id + - account_id + optional_params: + - assigned_ad_position_id +################################################################### +# ad_server functions +################################################################### + get_ad_server: + path: /advertiser/ad_servers/:id.:format + method: GET + required_params: + - id + ad_server_list: + path: /advertiser/ad_servers.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - status + search_ad_server: + path: /advertiser/ad_servers.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_ad_server: + path: /advertiser/ad_servers/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - weak_encoding + - click_macro + - random_macro + create_ad_server: + path: /advertiser/ad_servers.:format + method: POST + required_params: + - label + - click_macro + - random_macro + optional_params: + - weak_encoding + get_ad_spaces_from_ad_server: + path: /advertiser/ad_servers/:id/ad_spaces.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_common_ad_spaces_from_ad_server: + path: /advertiser/ad_servers/:id/common_ad_spaces.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# ad_space functions +################################################################### + get_ad_space: + path: /advertiser/ad_spaces/:id.:format + method: GET + required_params: + - account_id + - id + get_ad_space_with_third_party_account: + path: /advertiser/ad_spaces/with_third_party_account/:id.:format + method: GET + required_params: + - account_id + - id + ad_space_list: + path: /advertiser/ad_spaces.:format + method: GET + required_params: + - account_id + optional_params: + - id + - ad_server_id + - burstpath + - bursttype + - channel_id + - emails + - external_id + - external_name + - ad_space_type + - list_limit + - list_offset + - order_direction + - order_fields + - site_url + - stage + - status + - zindex + search_ad_space: + path: /advertiser/ad_spaces.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields + search_ad_space_detail: + path: /advertiser/ad_spaces/detail/:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields + update_ad_space: + path: /advertiser/ad_spaces/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - ad_network_id + - ad_server_id + - burstpath + - bursttype + - channel_id + - comments + - common_ad_space_id + - emails + - external_id + - external_name + - label + - site_url + - stage + - zindex + - ad_space_type + update_emails_by_ad_spaces: + path: /advertiser/ad_spaces/emails/:format + method: PUT + required_params: + - account_id + - emails_by_ad_spaces + create_ad_space: + path: /advertiser/ad_spaces.:format + method: POST + required_params: + - account_id + - ad_network_id + - label + optional_params: + - channel_id + - ad_server_id + - burstpath + - bursttype + - comments + - common_ad_space_id + - external_id + - external_name + - emails + - ad_space_type + - site_url + - stage + - zindex + create_ad_space_with_third_party_account: + path: /advertiser/ad_spaces/third_party_account/.:format + method: POST + required_params: + - account_id + - ad_network_id + - third_party_identifier + - third_party_key + - label + optional_params: + - external_id + - external_name + - comments + - emails + - ad_space_type + get_common_ad_space_from_ad_space: + path: /advertiser/ad_spaces/:id/common_ad_space.:format + method: GET + required_params: + - account_id + - id + get_ad_network_from_ad_space: + path: /advertiser/ad_spaces/:id/ad_network.:format + method: GET + required_params: + - account_id + - id + get_ad_server_from_ad_space: + path: /advertiser/ad_spaces/:id/ad_server.:format + method: GET + required_params: + - account_id + - id + get_country_from_ad_space: + path: /advertiser/ad_spaces/:id/country.:format + method: GET + required_params: + - account_id + - id + get_channel_from_ad_space: + path: /advertiser/ad_spaces/:id/channel.:format + method: GET + required_params: + - account_id + - id + get_campaigns_ad_spaces_from_ad_space: + path: /advertiser/ad_spaces/:id/campaigns_ad_spaces.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_placements_from_ad_space: + path: /advertiser/ad_spaces/:id/placements.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_campaigns_from_ad_space: + path: /advertiser/ad_spaces/:id/campaigns.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_insertions_from_ad_space: + path: /advertiser/ad_spaces/:id/insertions.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_thirdparty_tags_from_ad_space: + path: /advertiser/ad_spaces/:id/thirdparty_tags.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + - status +################################################################### +# advertiser user functions +################################################################### + get_advertiser_user: + path: /advertiser/advertiser_users/:id.:format + method: GET + required_params: + - account_id + - id + advertiser_user_list: + path: /advertiser/advertiser_users.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - email + - role_id + search_advertiser_user: + path: /advertiser/advertiser_users.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_advertiser_user: + path: /advertiser/advertiser_users/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - role_id + - email + create_advertiser_user: + path: /advertiser/advertiser_users.:format + method: POST + required_params: + - account_id + - email + optional_params: + - role_id + delete_advertiser_user: + path: /advertiser/advertiser_users/:id.:format + method: DELETE + required_params: + - account_id + - id + get_access_privileges_from_advertiser_user: + path: /advertiser/advertiser_users/:id/access_privileges.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_access_rights_from_advertiser_user: + path: /advertiser/advertiser_users/:id/access_rights.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_user_privileges_from_cookie: + path: /advertiser/advertiser_users/privileges/:format + method: GET + required_params: + - account_id + - cookie +################################################################### +# agency functions +################################################################### + get_agency: + path: /advertiser/agencies/:id.:format + method: GET + required_params: + - id + agency_list: + path: /advertiser/agencies.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - status + search_agency: + path: /advertiser/agencies.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_agency: + path: /advertiser/agencies/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + create_agency: + path: /advertiser/agencies.:format + method: POST + required_params: + - label + delete_agency: + path: /advertiser/agencies/:id.:format + method: DELETE + required_params: + - id + get_accounts_from_agency: + path: /advertiser/agencies/:id/accounts.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# assigned_ad_position functions +################################################################### + get_assigned_ad_position: + path: /advertiser/assigned_ad_positions/:id.:format + method: GET + required_params: + - account_id + - id + get_assigned_ad_position_detail: + path: /advertiser/assigned_ad_positions/:id/detail/:format + method: GET + required_params: + - account_id + - id + assigned_ad_position_list: + path: /advertiser/assigned_ad_positions.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - landing_url + - label + - code + - status + - display_status + - is_default + search_assigned_ad_position: + path: /advertiser/assigned_ad_positions.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + search_assigned_ad_position_detail: + path: /advertiser/assigned_ad_positions/detail/:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + get_assigned_ad_positions_with_targeting: + path: /advertiser/assigned_ad_positions/with_targeting/:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_assigned_ad_position: + path: /advertiser/assigned_ad_positions/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - label + - landing_url + - targeting_id + - code + - zindex + - expand_zindex + - display_status + - status + - weight + - automatic_weight + - is_default + update_assigned_ad_position_detail: + path: /advertiser/assigned_ad_positions/:id/detail/:format + method: PUT + required_params: + - account_id + - id + optional_params: + - creative_label + - is_default + - display_status + - landing_url + create_assigned_ad_position: + path: /advertiser/assigned_ad_positions.:format + method: POST + required_params: + - account_id + - label + - tracking_element_id + - ad_position_id + optional_params: + - landing_url + - targeting_id + - code + - zindex + - expand_zindex + - display_status + - weight + - automatic_weight + - is_default + delete_assigned_ad_position: + path: /advertiser/assigned_ad_positions/:id.:format + method: DELETE + required_params: + - account_id + - id + get_tracking_element_from_assigned_ad_position: + path: /advertiser/assigned_ad_positions/:id/tracking_element.:format + method: GET + required_params: + - account_id + - id + get_ad_position_from_assigned_ad_position: + path: /advertiser/assigned_ad_positions/:id/ad_position.:format + method: GET + required_params: + - account_id + - id + get_targeting_from_assigned_ad_position: + path: /advertiser/assigned_ad_positions/:id/targeting.:format + method: GET + required_params: + - account_id + - id + get_thirdparty_tags_from_assigned_ad_position: + path: /advertiser/assigned_ad_positions/:id/thirdparty_tags.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + - status + get_partnership_elements_from_assigned_ad_position: + path: /advertiser/assigned_ad_positions/:id/partnership_elements.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + update_weight_and_sequence_to_assigned_ad_postion: + path: /advertiser/assigned_ad_positions/:id/weight_and_sequence.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - pap_from + - pap_to + - weight + get_weight_and_sequence_from_assigned_ad_postion: + path: /advertiser/assigned_ad_positions/:id/weight_and_sequence.:format + method: GET + required_params: + - account_id + - id +################################################################### +# brand_and_product functions +################################################################### + get_brand_and_product: + path: /advertiser/brand_and_products/:id.:format + method: GET + required_params: + - account_id + - id + brand_and_product_list: + path: /advertiser/brand_and_products.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - label + - status + search_brand_and_product: + path: /advertiser/brand_and_products.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_brand_and_product: + path: /advertiser/brand_and_products/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - label + create_brand_and_product: + path: /advertiser/brand_and_products.:format + method: POST + required_params: + - account_id + - label + get_or_create_brand_and_product: + path: /advertiser/brand_and_products.:format?as_singleton=1 + method: POST + required_params: + - account_id + - label + delete_brand_and_product: + path: /advertiser/brand_and_products/:id.:format + method: DELETE + required_params: + - account_id + - id + get_campaign_from_brand_and_product: + path: /advertiser/brand_and_products/:id/campaigns.:format + method: GET + required_params: + - account_id + - id +################################################################### +# campaign functions +################################################################### + get_campaign: + path: /advertiser/campaigns/:id.:format + method: GET + required_params: + - account_id + - id + campaign_list: + path: /advertiser/campaigns.:format + method: GET + required_params: + - account_id + optional_params: + - id + - agency_id + - channel_id + - end_date + - effective_end_date + - effective_start_date + - external_id + - external_name + - has_statistics + - is_auto_start_date + - is_auto_end_date + - is_autopromo + - is_visibility_activated + - label + - list_limit + - list_offset + - order_direction + - order_fields + - project_id + - stage + - start_date + - status + - stop_display_after_end_date + - timezone_name + search_campaign: + path: /advertiser/campaigns.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - list_limit + - list_offset + - order_fields + - order_direction + update_campaign: + path: /advertiser/campaigns/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - brand_and_product_id + - comments + - effective_end_date + - effective_start_date + - external_id + - external_name + - end_date + - is_auto_start_date + - is_auto_end_date + - is_visibility_activated + - label + - landing_url + - postclick_tracking_days + - postevent_tracking_days + - postimpression_tracking_days + - postview_tracking_days + - stage + - start_date + - stop_display_after_end_date + update_all_campaign: + path: /advertiser/campaigns.:format + method: PUT + required_params: + - account_id + optional_params: + - brand_and_product_id + - comments + - conditions + - effective_end_date + - effective_start_date + - external_id + - external_name + - end_date + - is_auto_start_date + - is_auto_end_date + - is_visibility_activated + - landing_url + - postclick_tracking_days + - postevent_tracking_days + - postimpression_tracking_days + - postview_tracking_days + - stage + - start_date + - stop_display_after_end_date + update_all_landing_url_on_campaign: + path: /advertiser/campaigns/:id/landing_url.:format + method: PUT + required_params: + - account_id + - id + - landing_url + create_campaign: + path: /advertiser/campaigns.:format + method: POST + required_params: + - account_id + - agency_id + - label + - project_id + optional_params: + - channel_id + - brand_and_product_id + - comments + - end_date + - external_id + - external_name + - effective_start_date + - effective_end_date + - is_autopromo + - is_auto_end_date + - is_auto_start_date + - is_visibility_activated + - landing_url + - postclick_tracking_days + - postevent_tracking_days + - postimpression_tracking_days + - postview_tracking_days + - stage + - start_date + - stop_display_after_end_date + duplicate_campaign: + path: /advertiser/campaigns/:id.:format + method: POST + required_params: + - account_id + - id + - label + - project_id + optional_params: + - duplicate_creatives + - is_visibility_activated + delete_campaign: + path: /advertiser/campaigns/:id.:format + method: DELETE + required_params: + - account_id + - id + get_project_from_campaign: + path: /advertiser/campaigns/:id/project.:format + method: GET + required_params: + - account_id + - id + get_channel_from_campaign: + path: /advertiser/campaigns/:id/channel.:format + method: GET + required_params: + - account_id + - id + get_brand_and_product_from_campaign: + path: /advertiser/campaigns/:id/brand_and_product.:format + method: GET + required_params: + - account_id + - id + get_folder_from_campaign: + path: /advertiser/campaigns/:id/folder.:format + method: GET + required_params: + - account_id + - id + get_insertions_from_campaign: + path: /advertiser/campaigns/:id/insertions.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_campaigns_ad_spaces_from_campaign: + path: /advertiser/campaigns/:id/campaigns_ad_spaces.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_campaigns_ad_space_details_from_campaign: + path: /advertiser/campaigns/:id/campaigns_ad_space_details.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_ad_spaces_from_campaign: + path: /advertiser/campaigns/:id/ad_spaces.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_conversion_pages_from_campaign: + path: /advertiser/campaigns/:id/conversion_pages.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_extended_ad_spaces_from_campaign: + path: /advertiser/campaigns/:id/extended_ad_spaces.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_campaign_labels_from_campaign: + path: /advertiser/campaigns/:id/campaign_labels.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + associate_campaign_label_to_campaign: + path: /advertiser/campaigns/:id/associate_campaign_label.:format + method: PUT + required_params: + - id + - account_id + - campaign_label_id + associate_set_of_campaign_label_to_campaign: + path: /advertiser/campaigns/:id/associate_campaign_label.:format + method: PUT + required_params: + - id + - account_id + - campaign_label_ids + unassociate_campaign_label_to_campaign: + path: /advertiser/campaigns/:id/unassociate_campaign_label.:format + method: PUT + required_params: + - id + - account_id + - campaign_label_id + number_of_insertions_from_campaign: + path: /advertiser/campaigns/number_of_insertions/:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_partnerships_from_campaign: + path: /advertiser/campaigns/:id/partnerships.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + associate_partnership_to_campaign: + path: /advertiser/campaigns/:id/associate_partnership.:format + method: PUT + required_params: + - id + - account_id + - partnership_id + unassociate_partnership_to_campaign: + path: /advertiser/campaigns/:id/unassociate_partnership.:format + method: PUT + required_params: + - id + - account_id + - partnership_id + get_sizes_from_campaign: + path: /advertiser/campaigns/:id/sizes.:format + method: GET + required_params: + - account_id + - id + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields + get_creative_labels_from_campaign: + path: /advertiser/campaigns/:id/creative_labels.:format + method: GET + required_params: + - account_id + - id + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields + get_delivery_formats_from_campaign: + path: /advertiser/campaigns/:id/delivery_formats.:format + method: GET + required_params: + - account_id + - id + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields + get_thirdparty_tags_from_campaign: + path: /advertiser/campaigns/:id/thirdparty_tags.:format + method: GET + required_params: + - account_id + - id + optional_params: + - status + - list_limit + - list_offset + - order_direction + - order_fields + search_campaign_detail: + path: /advertiser/campaigns/detail/:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields + get_synchro_types_from_campaign: + path: /advertiser/campaigns/:id/synchro_types.:format + method: GET + required_params: + - account_id + - id + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# campaign_label functions +################################################################### + get_campaign_label: + path: /advertiser/campaign_labels/:id.:format + method: GET + required_params: + - account_id + - id + campaign_label_list: + path: /advertiser/campaign_labels.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - label + - status + search_campaign_label: + path: /advertiser/campaign_labels.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_campaign_label: + path: /advertiser/campaign_labels/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - label + create_campaign_label: + path: /advertiser/campaign_labels.:format + method: POST + required_params: + - account_id + - label + delete_campaign_label: + path: /advertiser/campaign_labels/:id.:format + method: DELETE + required_params: + - account_id + - id + get_campaigns_from_campaign_label: + path: /advertiser/campaign_labels/:id/campaigns.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + associate_campaign_to_campaign_label: + path: /advertiser/campaign_labels/:id/associate_campaign.:format + method: PUT + required_params: + - id + - account_id + - campaign_id + unassociate_campaign_to_campaign_label: + path: /advertiser/campaign_labels/:id/unassociate_campaign.:format + method: PUT + required_params: + - id + - account_id + - campaign_id +################################################################### +# campaign_structure functions +################################################################### + get_campaign_tree: + path: /advertiser/campaign_structures/tree.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + get_campaign_tree_by_creative: + path: /advertiser/campaign_structures/creative_tree.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - get_cost_and_volume + get_campaign_tree_by_insertion: + path: /advertiser/campaign_structures/insertion_tree.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - get_cost_and_volume + - with_third_party_objects + get_project_tree: + path: /advertiser/campaign_structures/project_tree.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + get_campaign_structure_smart_search: + path: /advertiser/campaign_structures/smart_search.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - category +################################################################### +# channel functions +################################################################### + get_channel: + path: /advertiser/channels/:id.:format + method: GET + required_params: + - id + channel_list: + path: /advertiser/channels.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - label + - abbreviation + search_channel: + path: /advertiser/channels.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + search_channel_detail: + path: /advertiser/channels/detail/:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_channel: + path: /advertiser/channels/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - abbreviation + create_channel: + path: /advertiser/channels.:format + method: POST + required_params: + - label + - abbreviation + get_campaigns_from_channel: + path: /advertiser/channels/:id/campaigns.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + - project_id + get_ad_spaces_from_channel: + path: /advertiser/channels/:id/ad_spaces.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + - project_id + get_common_ad_spaces_from_channel: + path: /advertiser/channels/:id/common_ad_spaces.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + - project_id + get_partnerships_from_channel: + path: /advertiser/channels/:id/partnerships.:format + method: GET + required_params: + - id + associate_partnership_to_channel: + path: /advertiser/channels/:id/associate_partnership.:format + method: PUT + required_params: + - id + - partnership_id + associate_set_of_partnership_to_channel: + path: /advertiser/channels/:id/associate_partnership.:format + method: PUT + required_params: + - id + - partnership_ids + unassociate_partnership_to_channel: + path: /advertiser/channels/:id/unassociate_partnership.:format + method: PUT + required_params: + - id + - partnership_id +################################################################### +# campaigns_ad_space functions +################################################################### + get_campaigns_ad_space: + path: /advertiser/campaigns_ad_spaces/:id.:format + method: GET + required_params: + - id + - account_id + campaigns_ad_space_list: + path: /advertiser/campaigns_ad_spaces.:format + method: GET + required_params: + - account_id + optional_params: + - ad_space_id + - campaign_id + - comments + - emails + - id + - landing_url + - list_limit + - list_offset + - order_direction + - order_fields + - postclick_tracking_days + - postevent_tracking_days + - postimpression_tracking_days + - postview_tracking_days + - has_statistics + - stage + search_campaigns_ad_space: + path: /advertiser/campaigns_ad_spaces.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields + update_campaigns_ad_space: + path: /advertiser/campaigns_ad_spaces/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - comments + - emails + - landing_url + - postclick_tracking_days + - postevent_tracking_days + - postimpression_tracking_days + - postview_tracking_days + - has_statistics + - stage + update_all_landing_url_on_campaigns_ad_space: + path: /advertiser/campaigns_ad_spaces/:id/landing_url.:format + method: PUT + required_params: + - account_id + - id + - landing_url + create_campaigns_ad_space: + path: /advertiser/campaigns_ad_spaces.:format + method: POST + required_params: + - account_id + - campaign_id + - ad_space_id + optional_params: + - comments + - emails + - landing_url + - postclick_tracking_days + - postevent_tracking_days + - postimpression_tracking_days + - postview_tracking_days + - has_statistics + - stage + get_campaign_from_campaigns_ad_space: + path: /advertiser/campaigns_ad_spaces/:id/campaign.:format + method: GET + required_params: + - id + - account_id + get_ad_space_from_campaigns_ad_space: + path: /advertiser/campaigns_ad_spaces/:id/ad_space.:format + method: GET + required_params: + - id + - account_id + get_thirdparty_tags_from_campaigns_ad_space: + path: /advertiser/campaigns_ad_spaces/:id/thirdparty_tags.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + - status + duplicate_campaigns_ad_space: + path: /advertiser/campaigns_ad_spaces/:id.:format + method: POST + required_params: + - account_id + - id + - campaign_id + - ad_space_id + optional_params: + - duplicate_creatives + delete_campaigns_ad_space: + path: /advertiser/campaigns_ad_spaces/:id.:format + method: DELETE + required_params: + - account_id + - id + generate_tags_from_campaigns_ad_space: + path: /advertiser/campaigns_ad_spaces/:id/tags.:format + method: GET + required_params: + - id + - account_id +################################################################### +# clicktag_spelling functions +################################################################### + get_clicktag_spelling: + path: /advertiser/clicktag_spellings/:id.:format + method: GET + required_params: + - account_id + - id + clicktag_spelling_list: + path: /advertiser/clicktag_spellings.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + search_clicktag_spelling: + path: /advertiser/clicktag_spellings.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_clicktag_spelling: + path: /advertiser/clicktag_spellings/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - label + - is_generic + create_clicktag_spelling: + path: /advertiser/clicktag_spellings.:format + method: POST + required_params: + - account_id + - label + delete_clicktag_spelling: + path: /advertiser/clicktag_spellings/:id.:format + method: DELETE + required_params: + - account_id + - id +################################################################### +# common_ad_network functions +################################################################### + get_common_ad_network: + path: /advertiser/common_ad_networks/:id.:format + method: GET + required_params: + - id + common_ad_network_list: + path: /advertiser/common_ad_networks.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - country_id + - status + - ad_network_type + - third_party_platform + search_common_ad_network: + path: /advertiser/common_ad_networks.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_common_ad_network: + path: /advertiser/common_ad_networks/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - country_id + - ad_network_type + - third_party_platform + create_common_ad_network: + path: /advertiser/common_ad_networks.:format + method: POST + required_params: + - label + - country_id + optional_params: + - ad_network_type + - third_party_platform + delete_common_ad_network: + path: /advertiser/common_ad_networks/:id.:format + method: DELETE + required_params: + - id + get_country_from_common_ad_network: + path: /advertiser/common_ad_networks/:id/country.:format + method: GET + required_params: + - id + get_ad_networks_from_common_ad_network: + path: /advertiser/common_ad_networks/:id/ad_networks.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_common_ad_spaces_from_common_ad_network: + path: /advertiser/common_ad_networks/:id/common_ad_spaces.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# common_ad_space functions +################################################################### + get_common_ad_space: + path: /advertiser/common_ad_spaces/:id.:format + method: GET + required_params: + - id + common_ad_space_list: + path: /advertiser/common_ad_spaces.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - channel_id + - country_id + - site_url + - status + - burstpath + - bursttype + - ad_server_id + - zindex + - ad_space_type + search_common_ad_space: + path: /advertiser/common_ad_spaces.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_common_ad_space: + path: /advertiser/common_ad_spaces/:id.:format + method: PUT + required_params: + - id + optional_params: + - ad_server_id + - burstpath + - bursttype + - channel_id + - country_id + - common_ad_network_id + - label + - site_url + - zindex + - ad_space_type + create_common_ad_space: + path: /advertiser/common_ad_spaces.:format + method: POST + required_params: + - label + - country_id + - common_ad_network_id + optional_params: + - channel_id + - burstpath + - bursttype + - ad_server_id + - site_url + - zindex + - ad_space_type + delete_common_ad_space: + path: /advertiser/common_ad_spaces/:id.:format + method: DELETE + required_params: + - id + get_country_from_common_ad_space: + path: /advertiser/common_ad_spaces/:id/country.:format + method: GET + required_params: + - id + get_channel_from_common_ad_space: + path: /advertiser/common_ad_spaces/:id/channel.:format + method: GET + required_params: + - id + get_ad_spaces_from_common_ad_space: + path: /advertiser/common_ad_spaces/:id/ad_spaces.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_common_placements_from_common_ad_space: + path: /advertiser/common_ad_spaces/:id/common_placements.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_common_placement_groups_from_common_ad_space: + path: /advertiser/common_ad_spaces/:id/common_placement_groups.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_common_ad_network_from_common_ad_space: + path: /advertiser/common_ad_spaces/:id/common_ad_network.:format + method: GET + required_params: + - id + get_ad_server_from_common_ad_space: + path: /advertiser/common_ad_spaces/:id/ad_server.:format + method: GET + required_params: + - id +################################################################### +# common_placement functions +################################################################### + get_common_placement: + path: /advertiser/common_placements/:id.:format + method: GET + required_params: + - id + common_placement_list: + path: /advertiser/common_placements.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - size_id + - common_ad_space_id + search_common_placement: + path: /advertiser/common_placements.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_common_placement: + path: /advertiser/common_placements/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - size_id + - common_ad_space_id + create_common_placement: + path: /advertiser/common_placements.:format + method: POST + required_params: + - label + - size_id + - common_ad_space_id + delete_common_placement: + path: /advertiser/common_placements/:id.:format + method: DELETE + required_params: + - id + get_size_from_common_placement: + path: /advertiser/common_placements/:id/size.:format + method: GET + required_params: + - id + get_common_ad_space_from_common_placement: + path: /advertiser/common_placements/:id/common_ad_space.:format + method: GET + required_params: + - id + get_placements_from_common_placement: + path: /advertiser/common_placements/:id/placements.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_common_placement_groups_from_common_placement: + path: /advertiser/common_placements/:id/common_placement_groups.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# common_placement_group functions +################################################################### + get_common_placement_group: + path: /advertiser/common_placement_groups/:id.:format + method: GET + required_params: + - id + common_placement_group_list: + path: /advertiser/common_placement_groups.:format + method: GET + optional_params: + - id + - common_ad_space_id + - order_fields + - order_direction + - list_limit + - list_offset + search_common_placement_group: + path: /advertiser/common_placement_groups.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_common_placement_group: + path: /advertiser/common_placement_groups/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + create_common_placement_group: + path: /advertiser/common_placement_groups.:format + method: POST + required_params: + - label + - common_ad_space_id + delete_common_placement_group: + path: /advertiser/common_placement_groups/:id.:format + method: DELETE + required_params: + - id + get_placement_groups_from_common_placement_group: + path: /advertiser/common_placement_groups/:id/placement_groups.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_common_placements_from_common_placement_group: + path: /advertiser/common_placement_groups/:id/common_placements.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_common_ad_space_from_common_placement_group: + path: /advertiser/common_placement_groups/:id/common_ad_space.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# conversion_page functions +################################################################### + get_conversion_page: + path: /advertiser/conversion_pages/:id.:format + method: GET + required_params: + - id + - account_id + conversion_page_list: + path: /advertiser/conversion_pages.:format + method: GET + required_params: + - account_id + optional_params: + - id + - enable_conversion_tracking + - is_exclusive + - list_limit + - list_offset + - order_direction + - order_fields + - status + search_conversion_page: + path: /advertiser/conversion_pages.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_conversion_page: + path: /advertiser/conversion_pages/:id.:format + method: PUT + required_params: + - id + - account_id + optional_params: + - enable_conversion_tracking + - is_exclusive + - label + create_conversion_page: + path: /advertiser/conversion_pages.:format + method: POST + required_params: + - label + - account_id + optional_params: + - enable_conversion_tracking + - is_exclusive + duplicate_conversion_page: + path: /advertiser/conversion_pages/:id.:format + method: POST + required_params: + - account_id + - id + - label + optional_params: + - duplicate_thirdparty_tags + - enable_conversion_tracking + - is_exclusive + archive_conversion_page: + path: /advertiser/conversion_pages/:id.:format?archive=1 + method: PUT + required_params: + - id + - account_id + unarchive_conversion_page: + path: /advertiser/conversion_pages/:id.:format?archive=0 + method: PUT + required_params: + - id + - account_id + delete_conversion_page: + path: /advertiser/conversion_pages/:id.:format + method: DELETE + required_params: + - id + - account_id + get_thirdparty_tags_from_conversion_page: + path: /advertiser/conversion_pages/:id/thirdparty_tags.:format + method: GET + required_params: + - id + - account_id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + - status + get_funnels_from_conversion_page: + path: /advertiser/conversion_pages/:id/funnels.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_costs_from_conversion_page: + path: /advertiser/conversion_pages/:id/costs.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_conversion_page_tags: + path: /advertiser/conversion_pages/tags/:id.:format + method: GET + required_params: + - account_id + - id + get_campaigns_from_conversion_page: + path: /advertiser/conversion_pages/:id/campaigns.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_thirdparty_tag_details_from_conversion_page: + path: /advertiser/conversion_pages/:id/thirdparty_tag_details/.:format + method: GET + required_params: + - account_id + - id + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields + create_conversion_page_with_rule: + path: /advertiser/conversion_pages/with_rule/:format + method: POST + required_params: + - account_id + - campaign_ids + - label + - rule + optional_params: + - enable_conversion_tracking + - is_exclusive + update_conversion_page_with_rule: + path: /advertiser/conversion_pages/with_rule/:id.:format + method: PUT + required_params: + - account_id + - campaign_ids + - id + - rule + optional_params: + - label + - enable_conversion_tracking + - is_exclusive + get_conversion_page_rule: + path: /advertiser/conversion_pages/rule/:id.:format + method: GET + required_params: + - id + - account_id + get_conversion_page_with_rule: + path: /advertiser/conversion_pages/with_rule/:id.:format + method: GET + required_params: + - id + - account_id + delete_conversion_page_rule: + path: /advertiser/conversion_pages/rule/:id.:format + method: DELETE + required_params: + - id + - account_id + get_insertions_from_conversion_page: + path: /advertiser/conversion_pages/:id/insertions.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_number_of_campaign_by_conversion_page: + path: /advertiser/conversion_pages/campaigns/number.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + get_number_of_funnel_by_conversion_page: + path: /advertiser/conversion_pages/funnels/number.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + get_number_of_thirdparty_tag_by_conversion_page: + path: /advertiser/conversion_pages/thirdparty_tags/number.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset +################################################################### +# cost functions +################################################################### + get_cost: + path: /advertiser/costs/:id.:format + method: GET + required_params: + - id + - account_id + cost_list: + path: /advertiser/costs.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - status + search_cost: + path: /advertiser/costs.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_cost: + path: /advertiser/costs/:id.:format + method: PUT + required_params: + - id + - account_id + optional_params: + - campaign_id + - ad_space_id + - insertion_id + - start_date + - end_date + - volume + - cost + - cost_model + - bonus + - budget + create_cost: + path: /advertiser/costs.:format + method: POST + required_params: + - account_id + optional_params: + - campaign_id + - ad_space_id + - insertion_id + - start_date + - end_date + - volume + - cost + - cost_model + - bonus + - budget + delete_cost: + path: /advertiser/costs/:id.:format + method: DELETE + required_params: + - id + - account_id + get_campaign_from_cost: + path: /advertiser/costs/:id/campaign.:format + method: GET + required_params: + - id + - account_id + get_insertion_from_cost: + path: /advertiser/costs/:id/insertion.:format + method: GET + required_params: + - id + - account_id + get_ad_space_from_cost: + path: /advertiser/costs/:id/ad_space.:format + method: GET + required_params: + - id + - account_id + get_conversion_pages_from_cost: + path: /advertiser/costs/:id/conversion_pages.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# country functions +################################################################### + get_advertiser_country: + path: /advertiser/countries/:id.:format + method: GET + required_params: + - id + advertiser_country_list: + path: /advertiser/countries.:format + method: GET + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + search_advertiser_country: + path: /advertiser/countries.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + get_accounts_from_country: + path: /advertiser/countries/:id/accounts.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_common_ad_networks_from_country: + path: /advertiser/countries/:id/common_ad_networks.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_common_ad_spaces_from_country: + path: /advertiser/countries/:id/common_ad_spaces.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_ad_networks_from_country: + path: /advertiser/countries/:id/ad_networks.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_ad_spaces_from_country: + path: /advertiser/countries/:id/ad_spaces.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_market_accounts_from_country: + path: /advertiser/countries/:id/market_accounts.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_advertiser_activity_sectors_from_country: + path: /advertiser/countries/:id/activity_sectors.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset +################################################################### +# creative functions +################################################################### + get_creative: + path: /advertiser/creatives/:id.:format + method: GET + required_params: + - account_id + - id + creative_list: + path: /advertiser/creatives.:format + method: GET + required_params: + - account_id + optional_params: + - creative_format_id + - distinct_account_id + - distinct_creative_id + - latest_creative_version_id + - live_autoupdate + - live_creative_version_id + - folder_id + - id + - list_limit + - list_offset + - order_direction + - order_fields + - status + search_creative: + path: /advertiser/creatives.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + get_creative_smart_search: + path: /advertiser/creatives/smart_search/:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + search_creative_detail: + path: /advertiser/creatives/detail/:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_creative: + path: /advertiser/creatives/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - label + - latest_creative_version_id + - live_creative_version_id + - ad_position_ids + - previewer_label + - live_autoupdate + - status + update_creative_properties: + path: /advertiser/creatives/properties/:format + method: PUT + required_params: + - account_id + - creative__folder_id + - creative__label + - creative__creative_format_id + optional_params: + - ad_positions + - ad_space__id + - creative__id + - creative_label__labels + - insertion__publisher_paid + - latest_creative_version__javascript_version_id + - latest_creative_version__label + create_creative: + path: /advertiser/creatives.:format + method: POST + required_params: + - account_id + - creative_format_id + - folder_id + - label + optional_params: + - ad_position_ids + - distinct_account_id + - distinct_creative_id + - latest_creative_version_id + - live_autoupdate + - live_creative_version_id + - previewer_label + - status + delete_creative: + path: /advertiser/creatives/:id.:format + method: DELETE + required_params: + - account_id + - id + get_creative_format_from_creative: + path: /advertiser/creatives/:id/creative_format.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_insertions_from_creative: + path: /advertiser/creatives/:id/insertions.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_service_jobs_from_creative: + path: /advertiser/creatives/:id/service_jobs.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + associate_insertion_to_creative: + path: /advertiser/creatives/:id/associate_insertion.:format + method: PUT + required_params: + - account_id + - id + - insertion_id + unassociate_insertion_to_creative: + path: /advertiser/creatives/:id/unassociate_insertion.:format + method: PUT + required_params: + - account_id + - id + - insertion_id + get_creative_labels_from_creative: + path: /advertiser/creatives/:id/creative_labels.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_folder_from_creative: + path: /advertiser/creatives/:id/folder.:format + method: GET + required_params: + - account_id + - id + get_staging_page_assignments_from_creative: + path: /advertiser/creatives/:id/staging_page_assignments.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_storage_path_from_creative: + path: /advertiser/creatives/:id/storage_path.:format + method: GET + required_params: + - id + - account_id + set_creative_to_live: + path : /advertiser/creatives/:id/live.:format + method: PUT + required_params: + - id + - account_id + duplicate_creative: + path : /advertiser/creatives/:id.:format + method: POST + required_params: + - account_id + - id + - label + optional_params: + - folder_id + - distinct_account_id + - distinct_creative_id + - live_autoupdate + - previewer_label + - status + get_campaigns_from_creative: + path: /advertiser/creatives/:id/campaigns.:format + method: GET + required_params: + - account_id + - id + upload_files_to_cdn: + path: /advertiser/creatives/:id/upload_files_to_cdn.:format + method: PUT + required_params: + - account_id + - id + - files_to_upload + update_creative_settings: + path: /advertiser/creatives/:id/settings.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - settings + get_preview_setup_script_from_creative: + path: /advertiser/creatives/:id/preview_setup_script.:format + method: GET + required_params : + - id + - account_id + optional_params: + - preview_on_live_version + - assigned_ad_position_id +################################################################### +# creative_label functions +################################################################### + get_creative_label: + path: /advertiser/creative_labels/:id.:format + method: GET + required_params: + - account_id + - id + creative_label_list: + path: /advertiser/creative_labels.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + search_creative_label: + path: /advertiser/creative_labels.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_creative_label: + path: /advertiser/creative_labels/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - label + create_creative_label: + path: /advertiser/creative_labels.:format + method: POST + required_params: + - account_id + - label + delete_creative_label: + path: /advertiser/creative_labels/:id.:format + method: DELETE + required_params: + - account_id + - id + get_creatives_from_creative_label: + path: /advertiser/creative_labels/:id/creatives.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# creative_format functions +################################################################### + get_creative_format: + path: /advertiser/creative_formats/:id.:format + method: GET + required_params: + - id + creative_format_list: + path: /advertiser/creative_formats.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - disabled + - creative_type_id + - creative_format_group_id + search_creative_format: + path: /advertiser/creative_formats.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_creative_format: + path: /advertiser/creative_formats/:id.:format + method: PUT + required_params: + - id + optional_params: + - abbreviation + - creative_format_group_id + - creative_type_id + - disabled + - label + create_creative_format: + path: /advertiser/creative_formats.:format + method: POST + required_params: + - label + - abbreviation + optional_params: + - creative_type_id + - creative_format_group_id + get_creatives_from_creative_format: + path: /advertiser/creative_formats/:id/creatives.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_creative_type_from_creative_format: + path: /advertiser/creative_formats/:id/creative_type.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_creative_format_group_from_creative_format: + path: /advertiser/creative_formats/:id/creative_format_group.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# creative_format_group functions +################################################################### + get_creative_format_group: + path: /advertiser/creative_format_groups/:id.:format + method: GET + required_params: + - id + creative_format_group_list: + path: /advertiser/creative_format_groups.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - name + search_creative_format_group: + path: /advertiser/creative_format_groups.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_creative_format_group: + path: /advertiser/creative_format_groups/:id.:format + method: PUT + required_params: + - id + optional_params: + - name + create_creative_format_group: + path: /advertiser/creative_format_groups.:format + method: POST + required_params: + - name + get_creative_formats_from_creative_format_group: + path: /advertiser/creative_format_groups/:id/creative_formats.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# creative_type functions +################################################################### + get_creative_type: + path: /advertiser/creative_types/:id.:format + method: GET + required_params: + - id + creative_type_list: + path: /advertiser/creative_types.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - default_creative_format_identifier + - disabled + search_creative_type: + path: /advertiser/creative_types.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_creative_type: + path: /advertiser/creative_types/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - settings + - disabled + - default_creative_format_identifier + create_creative_type: + path: /advertiser/creative_types.:format + method: POST + required_params: + - label + optional_params: + - settings + - disabled + - default_creative_format_identifier + get_creative_formats_from_creative_type: + path: /advertiser/creative_types/:id/creative_formats.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_creative_type_configuration: + path: /advertiser/creative_types/:id/configuration.:format + method: GET + required_params: + - account_id + - id + optional_params: + - tab + get_creative_configuration: + path: /advertiser/creative_types/creative_configuration/:format + method: PUT + required_params: + - account_id + - creative_id + optional_params: + - tab +################################################################### +# creative_version functions +################################################################### + get_creative_version: + path: /advertiser/creative_versions/:id.:format + method: GET + required_params: + - account_id + - id + creative_version_list: + path: /advertiser/creative_versions.:format + method: GET + required_params: + - account_id + optional_params: + - check_status + - creative_id + - creative_version_number + - editorial_status + - id + - javascript_version_id + - list_limit + - list_offset + - order_direction + - order_fields + search_creative_version: + path: /advertiser/creative_versions.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_creative_version: + path: /advertiser/creative_versions/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - check_status + - comments + - editorial_status + - javascript_version_id + - label + - postclick_tracking_days + - updated_at + create_creative_version: + path: /advertiser/creative_versions.:format + method: POST + required_params: + - account_id + - creative_id + - creative_version_number + - javascript_version_id + optional_params: + - check_status + - comments + - editorial_status + - label + get_creative_from_creative_version: + path: /advertiser/creative_versions/:id/creative.:format + method: GET + required_params: + - account_id + - id + get_javascript_version_from_creative_version: + path: /advertiser/creative_versions/:id/javascript_version.:format + method: GET + required_params: + - account_id + - id + get_ad_positions_from_creative_version: + path: /advertiser/creative_versions/:id/ad_positions.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_file_versions_from_creative_version: + path: /advertiser/creative_versions/:id/file_versions.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_assets_from_creative_version: + path: /advertiser/creative_versions/:id/assets.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_staging_clicks_from_creative_version: + path: /advertiser/creative_versions/:id/staging_clicks.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_staging_trackers_from_creative_version: + path: /advertiser/creative_versions/:id/staging_trackers.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + set_creative_version_to_live: + path : /advertiser/creative_versions/:id/live.:format + method: PUT + required_params: + - id + - account_id +################################################################### +# delivery_format functions +################################################################### + get_delivery_format: + path: /advertiser/delivery_formats/:id.:format + method: GET + required_params: + - id + delivery_format_list: + path: /advertiser/delivery_formats.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - insertion_type + - abbreviation + search_delivery_format: + path: /advertiser/delivery_formats.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_delivery_format: + path: /advertiser/delivery_formats/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - insertion_type + - abbreviation + create_delivery_format: + path: /advertiser/delivery_formats.:format + method: POST + required_params: + - label + optional_params: + - insertion_type + - abbreviation + delete_delivery_format: + path: /advertiser/delivery_formats/:id.:format + method: DELETE + required_params: + - id + get_insertions_from_delivery_format: + path: /advertiser/delivery_formats/:id/insertions.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# file_template functions +################################################################### + get_file_template: + path: /advertiser/file_templates/:id.:format + method: GET + required_params: + - id + file_template_list: + path: /advertiser/file_templates.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + search_file_template: + path: /advertiser/file_templates.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_file_template: + path: /advertiser/file_templates/:id.:format + method: PUT + required_params: + - id + optional_params: + - file_type_id + - javascript_version_id + - ad_element_role_id + - settings + - template_data + create_file_template: + path: /advertiser/file_templates.:format + method: POST + required_params: + - file_type_id + - javascript_version_id + optional_params: + - ad_element_role_id + - settings + - template_data + get_javascript_version_from_file_template: + path: /advertiser/file_templates/:id/javascript_version.:format + method: GET + required_params: + - id + get_ad_element_role_from_file_template: + path: /advertiser/file_templates/:id/ad_element_role.:format + method: GET + required_params: + - id + get_file_type_from_file_template: + path: /advertiser/file_templates/:id/file_type.:format + method: GET + required_params: + - id +################################################################### +# file_type functions +################################################################### + get_file_type: + path: /advertiser/file_types/:id.:format + method: GET + required_params: + - id + file_type_list: + path: /advertiser/file_types.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + search_file_type: + path: /advertiser/file_types.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_file_type: + path: /advertiser/file_types/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - file_extensions + create_file_type: + path: /advertiser/file_types.:format + method: POST + required_params: + - label + optional_params: + - file_extensions + get_file_templates_from_file_type: + path: /advertiser/file_types/:id/file_templates.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_files_from_file_type: + path: /advertiser/file_types/:id/files.:format + method: GET + required_params: + - id + - account_id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# folder functions +################################################################### + get_folder: + path: /advertiser/folders/:id.:format + method: GET + required_params: + - id + - account_id + folder_list: + path: /advertiser/folders.:format + method: GET + required_params: + - account_id + optional_params: + - campaign_id + - id + - list_limit + - list_offset + - order_direction + - order_fields + - status + - user_id + search_folder: + path: /advertiser/folders.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_folder: + path: /advertiser/folders/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - campaign_id + - comments + - label + - previewer_label + - comments + create_folder: + path: /advertiser/folders.:format + method: POST + required_params: + - account_id + - label + optional_params: + - user_id + - campaign_id + - comments + - previewer_label + - comments + delete_folder: + path: /advertiser/folders/:id.:format + method: DELETE + required_params: + - id + - account_id + get_campaign_from_folder: + path: /advertiser/folders/:id/campaign.:format + method: GET + required_params: + - account_id + - id + get_creatives_from_folder: + path: /advertiser/folders/:id/creatives.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + - status + get_creative_filters_from_folder: + path: /advertiser/folders/:id/creative_filters/.:format + method: GET + required_params: + - account_id + - id + get_number_of_creative_by_folder: + path: /advertiser/folders/creatives/number.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + set_creatives_to_live_from_folder: + path : /advertiser/folders/:id/live.:format + method: PUT + required_params: + - id + - account_id + get_creatives_informations_from_folder: + path: /advertiser/folders/:id/creatives/info.:format + method: GET + required_params: + - account_id + - id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset +################################################################### +# file functions +################################################################### + get_file: + path: /advertiser/files/:id.:format + method: GET + required_params: + - id + - account_id + file_list: + path: /advertiser/files.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - file_version_id + - size_id + - file_version_number + - filename + - md5 + - safe_filename + - settings + - status + search_file: + path: /advertiser/files.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_file: + path: /advertiser/files/:id.:format + method: PUT + required_params: + - id + - account_id + optional_params: + - filename + - file_version_id + - file_version_number + - height + - safe_filename + - settings + - size_id + - weight + - width + create_file: + path: /advertiser/files.:format + method: POST + required_params: + - filename + - account_id + optional_params: + - file_version_id + - file_version_number + - height + - safe_filename + - settings + - size_id + - weight + - width + get_size_from_file: + path: /advertiser/files/:id/size.:format + method: GET + required_params: + - id + - account_id + get_file_version_from_file: + path: /advertiser/files/:id/file_version.:format + method: GET + required_params: + - id + - account_id + upload_file: + path: /advertiser/files/upload/:format + method: POST + required_params: + - account_id + - my_file + form-data: + my_file: "@:my_file" + account_id: ":account_id" + get_file_type_from_file: + path: /advertiser/files/:id/file_type.:format + method: GET + required_params: + - id + - account_id + get_available_ad_element_roles_by_files: + path: /advertiser/files/available_ad_element_roles/:format + method: GET + required_params: + - account_id + - creative_type_id + - file_list +################################################################### +# file_versions functions +################################################################### + get_file_version: + path: /advertiser/file_versions/:id.:format + method: GET + required_params: + - id + - account_id + file_version_list: + path: /advertiser/file_versions.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - file_version_number + search_file_version: + path: /advertiser/file_versions.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_file_version: + path: /advertiser/file_versions.:format + method: POST + required_params: + - account_id + - file_version_number + get_ad_elements_from_file_version: + path: /advertiser/file_versions/:id/ad_elements.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_assets_from_file_version: + path: /advertiser/file_versions/:id/assets.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_creative_versions_from_file_version: + path: /advertiser/file_versions/:id/creative_versions.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_files_from_file_version: + path: /advertiser/file_versions/:id/files.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# funnel functions +################################################################### + get_funnel: + path: /advertiser/funnels/:id.:format + method: GET + required_params: + - id + - account_id + funnel_list: + path: /advertiser/funnels.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - conversion_page_id + - mandatory + - status + search_funnel: + path: /advertiser/funnels.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_funnel: + path: /advertiser/funnels/:id.:format + method: PUT + required_params: + - id + - account_id + optional_params: + - label + - conversion_page_id + - sequence_number + - mandatory + create_funnel: + path: /advertiser/funnels.:format + method: POST + required_params: + - label + - conversion_page_id + - sequence_number + - account_id + optional_params: + - mandatory + delete_funnel: + path: /advertiser/funnels/:id.:format + method: DELETE + required_params: + - id + - account_id + get_conversion_page_from_funnel: + path: /advertiser/funnels/:id/conversion_page.:format + method: GET + required_params: + - id + - account_id + get_funnel_tags: + path: /advertiser/funnels/tags/:format + method: GET + required_params: + - account_id + - conversion_page_id + - sequence_number +################################################################### +# free_parameter_numeric fuctions +################################################################### + get_free_parameter_numeric: + path: /advertiser/free_parameter_numerics/:id.:format + method: GET + required_params: + - id + - account_id + free_parameter_numeric_list: + path: /advertiser/free_parameter_numerics.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + search_free_parameter_numeric: + path: /advertiser/free_parameter_numerics.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_free_parameter_numeric: + path: /advertiser/free_parameter_numerics/:id.:format + method: PUT + required_params: + - id + - account_id + optional_params: + - label + - parameter_key +################################################################### +# hash_and_sentence functions +################################################################### + get_hash_and_sentence_by_sentence: + path: /advertiser/hash_and_sentences.:format + method: POST + required_params: + - sentence + get_hash_and_sentence_by_hash: + path: /advertiser/hash_and_sentences.:format + method: POST + required_params: + - hash +################################################################### +# insertion functions +################################################################### + get_insertion: + path: /advertiser/insertions/:id.:format + method: GET + required_params: + - id + - account_id + insertion_list: + path: /advertiser/insertions.:format + method: GET + required_params: + - account_id + optional_params: + - ad_network_id + - ad_space_id + - campaign_id + - clicktag + - comments + - effective_end_date + - effective_start_date + - enable_optimization + - end_date + - has_many_placements + - has_statistics + - id + - is_auto_end_date + - is_auto_start_date + - list_limit + - list_offset + - placements_group_id + - optimization_level + - optimization_on + - order_direction + - order_fields + - stage + - start_date + - status + - stop_display_after_end_date + search_insertion: + path: /advertiser/insertions.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_insertion: + path: /advertiser/insertions/:id.:format + method: PUT + required_params: + - id + - account_id + optional_params: + - comments + - delivery_format_id + - clicktag + - effective_end_date + - effective_start_date + - enable_optimization + - end_date + - has_many_placements + - is_auto_end_date + - is_auto_start_date + - label + - landing_url + - optimization_level + - optimization_on + - placement_group_id + - priority + - stage + - start_date + - stop_display_after_end_date + - publisher_paid + update_all_insertion: + path: /advertiser/insertions.:format + method: PUT + required_params: + - account_id + optional_params: + - clicktag + - comments + - conditions + - delivery_format_id + - effective_end_date + - effective_start_date + - enable_optimization + - end_date + - has_many_placements + - is_auto_end_date + - is_auto_start_date + - landing_url + - optimization_level + - optimization_on + - placement_group_id + - priority + - stage + - start_date + - stop_display_after_end_date + - publisher_paid + update_all_landing_url_on_insertion: + path: /advertiser/insertions/:id/landing_url.:format + method: PUT + required_params: + - account_id + - id + - landing_url + create_insertion: + path: /advertiser/insertions.:format + method: POST + required_params: + - label + - campaign_id + - account_id + - ad_network_id + - ad_space_id + optional_params: + - clicktag + - comments + - delivery_format_id + - effective_end_date + - effective_start_date + - enable_optimization + - end_date + - has_many_placements + - is_auto_end_date + - is_auto_start_date + - landing_url + - placement_group_id + - priority + - optimization_level + - optimization_on + - stage + - start_date + - stop_display_after_end_date + - publisher_paid + assign_insertion_to_creative: + path: /advertiser/insertions/:id/assign_creative.:format + method: POST + required_params: + - id + - account_id + - creative_id + optional_params: + - label + - targeting_id + - landing_url + - code + - display_status + - must_match_sizes + remove_assign_insertion_to_creative: + path: /advertiser/insertions/:id/remove_assign_creative.:format + method: PUT + required_params: + - id + - account_id + - creative_id + create_insertion_with_placements: + path: /advertiser/insertions/placements/:format + method: POST + required_params: + - label + - campaign_id + - account_id + - ad_network_id + - ad_space_id + optional_params: + - clicktag + - comments + - section + - placement_list + - delivery_format_id + - effective_end_date + - effective_start_date + - end_date + - is_auto_end_date + - is_auto_start_date + - landing_url + - priority + - stage + - start_date + - stop_display_after_end_date + - publisher_paid + update_insertion_with_placements: + path: /advertiser/insertions/placements/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - clicktag + - comments + - placement_list + - label + - section + - delivery_format_id + - effective_end_date + - effective_start_date + - end_date + - is_auto_end_date + - is_auto_start_date + - landing_url + - priority + - stage + - start_date + - stop_display_after_end_date + - enable_optimization + - optimization_on + - optimization_level + - publisher_paid + duplicate_insertion: + path: /advertiser/insertions/:id.:format + method: POST + required_params: + - account_id + - ad_space_id + - campaign_id + - id + optional_params: + - clicktag + - comments + - ad_network_id + - delivery_format_id + - duplicate_creatives + - effective_end_date + - effective_start_date + - end_date + - has_many_placements + - is_auto_end_date + - is_auto_start_date + - label + - landing_url + - placement_group_id + - priority + - stage + - start_date + - stop_display_after_end_date + - enable_optimization + - optimization_on + - optimization_level + - publisher_paid + delete_insertion: + path: /advertiser/insertions/:id.:format + method: DELETE + required_params: + - id + - account_id + get_insertion_with_size: + path: /advertiser/insertions/with_size/:id.:format + method: GET + required_params: + - id + - account_id + get_campaign_from_insertion: + path: /advertiser/insertions/:id/campaign.:format + method: GET + required_params: + - id + - account_id + get_ad_network_from_insertion: + path: /advertiser/insertions/:id/ad_network.:format + method: GET + required_params: + - id + - account_id + get_ad_space_from_insertion: + path: /advertiser/insertions/:id/ad_space.:format + method: GET + required_params: + - id + - account_id + get_placement_group_from_insertion: + path: /advertiser/insertions/:id/placement_group.:format + method: GET + required_params: + - id + - account_id + get_delivery_format_from_insertion: + path: /advertiser/insertions/:id/delivery_format.:format + method: GET + required_params: + - id + - account_id + get_tracking_elements_from_insertion: + path: /advertiser/insertions/:id/tracking_elements.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_thirdparty_tags_from_insertion: + path: /advertiser/insertions/:id/thirdparty_tags.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + - status + get_costs_from_insertion: + path: /advertiser/insertions/:id/costs.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_creatives_from_insertion: + path: /advertiser/insertions/:id/creatives.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_assigned_ad_positions_from_insertion: + path: /advertiser/insertions/:id/assigned_ad_positions.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + number_of_assigned_ad_positions_from_insertions: + path: /advertiser/insertions/number_of_assigned_ad_positions/:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + associate_creative_to_insertion: + path: /advertiser/insertions/:id/associate_creative.:format + method: PUT + required_params: + - account_id + - id + - creative_id + unassociate_creative_to_insertion: + path: /advertiser/insertions/:id/unassociate_creative.:format + method: PUT + required_params: + - account_id + - id + - creative_id + get_conversion_pages_from_insertion: + path: /advertiser/insertions/:id/conversion_pages.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + associate_conversion_page_to_insertion: + path: /advertiser/insertions/:id/associate_conversion_page.:format + method: PUT + required_params: + - account_id + - conversion_page_id + - id + unassociate_conversion_page_to_insertion: + path: /advertiser/insertions/:id/unassociate_conversion_page.:format + method: PUT + required_params: + - account_id + - conversion_page_id + - id + associate_set_of_conversion_page_to_insertion: + path: /advertiser/insertions/:id/associate_conversion_page.:format + method: PUT + required_params: + - account_id + - conversion_page_ids + - id + update_targeting_of_insertion: + path: /advertiser/insertions/:id/targeting/:format + method: PUT + required_params: + - account_id + - id + optional_params: + - conversion_page_ids + - enable_optimization + - optimization_on + - optimization_level + update_all_targeting_of_insertion: + path: /advertiser/insertions/targeting/:format + method: PUT + required_params: + - account_id + optional_params: + - conversion_page_ids + - enable_optimization + - insertion_ids + - optimization_on + - optimization_level + get_flight_costs_from_insertion: + path: /advertiser/insertions/:id/flight_costs.:format + method: GET + required_params: + - account_id + - id + update_flight_costs_from_insertion: + path: /advertiser/insertions/:id/flight_costs.:format + method: PUT + required_params: + - account_id + - id + - flight_costs + set_as_default_creative:: + path: /advertiser/insertions/:id/default_creative.:format + method: PUT + required_params: + - account_id + - id + - creative_id + create_linked_insertion: + path: /advertiser/insertions/createlinkedinsertion/:format + method: POST + required_params: + - account_id + - campaign_id + - ad_space_id + - creative_id + generate_tags: + path: /advertiser/insertions/:id/tags.:format + method: GET + required_params: + - id + - account_id +################################################################### +# javascript_version functions +################################################################### + get_javascript_version: + path: /advertiser/javascript_versions/:id.:format + method: GET + required_params: + - id + javascript_version_list: + path: /advertiser/javascript_versions.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - javascript_version + - is_default + search_javascript_version: + path: /advertiser/javascript_versions.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_javascript_version: + path: /advertiser/javascript_versions/:id.:format + method: PUT + required_params: + - id + optional_params: + - javascript_version + - is_default + - template_data + create_javascript_version: + path: /advertiser/javascript_versions.:format + method: POST + required_params: + - javascript_version + optional_params: + - is_default + - template_data + delete_javascript_version: + path: /advertiser/javascript_versions/:id.:format + method: DELETE + required_params: + - id + get_creative_versions_from_javascript_version: + path: /advertiser/javascript_versions/:id/creative_versions.:format + method: GET + required_params: + - id + - account_id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_ad_element_templates_from_javascript_version: + path: /advertiser/javascript_versions/:id/ad_element_templates.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_file_templates_from_javascript_version: + path: /advertiser/javascript_versions/:id/file_templates.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# positions functions +################################################################### + get_position: + path: /advertiser/positions/:id.:format + method: GET + required_params: + - id + position_list: + path: /advertiser/positions.:format + method: GET + optional_params: + - id + - label + - order_fields + - order_direction + - list_limit + - list_offset + search_position: + path: /advertiser/positions.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_position: + path: /advertiser/positions/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + create_position: + path: /advertiser/positions.:format + method: POST + required_params: + - label +################################################################### +# project functions +################################################################### + get_project: + path: /advertiser/projects/:id.:format + method: GET + required_params: + - account_id + - id + project_list: + path: /advertiser/projects.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - status + search_project: + path: /advertiser/projects.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_project: + path: /advertiser/projects/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - label + create_project: + path: /advertiser/projects.:format + method: POST + required_params: + - account_id + - label + get_or_create_project: + path: /advertiser/projects.:format?as_singleton=1 + method: POST + required_params: + - account_id + - label + delete_project: + path: /advertiser/projects/:id.:format + method: DELETE + required_params: + - account_id + - id + get_campaigns_from_project: + path: /advertiser/projects/:id/campaigns.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# named_conversion_parameter functions +################################################################### + named_conversion_parameter_list: + path: /advertiser/named_conversion_parameters.:format + method: GET + required_params: + - account_id + create_or_update_named_conversion_parameter_list: + path: /advertiser/named_conversion_parameters/list/:format + method: POST + required_params: + - account_id + - named_conversion_parameters +################################################################### +# partnership functions +################################################################### + get_partnership: + path: /advertiser/partnerships/:id.:format + method: GET + required_params: + - id + partnership_list: + path: /advertiser/partnerships.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - has_access_to_api + - has_access_to_interface + search_partnership: + path: /advertiser/partnerships.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_partnership: + path: /advertiser/partnerships/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - has_access_to_api + - has_access_to_interface + create_partnership: + path: /advertiser/partnerships.:format + method: POST + required_params: + - label + optional_params: + - has_access_to_api + - has_access_to_interface + get_active_campaigns_from_partnership: + path: /advertiser/partnerships/:id/active_campaigns.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_campaigns_from_partnership: + path: /advertiser/partnerships/:id/campaigns.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_ad_positions_from_partnership: + path: /advertiser/partnerships/:id/ad_positions.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_assigned_ad_positions_from_partnership: + path: /advertiser/partnerships/:id/assigned_ad_positions.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_partnership_users_from_partnership: + path: /advertiser/partnerships/:id/partnership_users.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_accounts_partnerships_from_partnership: + path: /advertiser/partnerships/:id/accounts_partnerships.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_partnership_elements_from_partnership: + path: /advertiser/partnerships/:id/partnership_elements.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_accounts_from_partnership: + path: /advertiser/partnerships/:id/accounts.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_channels_from_partnership: + path: /advertiser/partnerships/:id/channels.:format + method: GET + required_params: + - id + associate_channel_to_partnership: + path: /advertiser/partnerships/:id/associate_channel.:format + method: PUT + required_params: + - id + - channel_id + associate_set_of_channel_to_partnership: + path: /advertiser/partnerships/:id/associate_channel.:format + method: PUT + required_params: + - id + - channel_ids + unassociate_channel_to_partnership: + path: /advertiser/partnerships/:id/unassociate_channel.:format + method: PUT + required_params: + - id + - channel_id +################################################################### +# partnership_element functions +################################################################### + get_partnership_element: + path: /advertiser/partnership_elements/:id.:format + method: GET + required_params: + - account_id + - id + partnership_element_list: + path: /advertiser/partnership_elements.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - partnership_id + - partnership_external_id + - campaign_id + - ad_position_id + - assigned_ad_position_id + search_partnership_element: + path: /advertiser/partnership_elements.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_partnership_element: + path: /advertiser/partnership_elements/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - partnership_external_id + create_partnership_element: + path: /advertiser/partnership_elements.:format + method: POST + required_params: + - account_id + - partnership_id + - partnership_external_id + - campaign_id + - ad_position_id + - assigned_ad_position_id + get_partnership_from_partnership_element: + path: /advertiser/partnership_elements/:id/partnership.:format + method: GET + required_params: + - account_id + - id + get_campaign_from_partnership_element: + path: /advertiser/partnership_elements/:id/campaign.:format + method: GET + required_params: + - account_id + - id + get_assigned_ad_position_from_partnership_element: + path: /advertiser/partnership_elements/:id/assigned_ad_position.:format + method: GET + required_params: + - account_id + - id + get_ad_position_from_parnership_element: + path: /advertiser/partnership_elements/:id/ad_position.:format + method: GET + required_params: + - account_id + - id +################################################################### +# partnership_user functions +################################################################### + get_partnership_user: + path: /advertiser/partnership_users/:id.:format + method: GET + required_params: + - id + partnership_user_list: + path: /advertiser/partnership_users.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - partnership_id + - is_activated + search_partnership_user: + path: /advertiser/partnership_users.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_partnership_user: + path: /advertiser/partnership_users/:id.:format + method: PUT + required_params: + - id + optional_params: + - login + - password + - is_activated + create_partnership_user: + path: /advertiser/partnership_users.:format + method: POST + required_params: + - partnership_id + - login + - password + optional_params: + - is_activated + get_partnership_from_partnership_user: + path: /advertiser/partnership_users/:id/partnership.:format + method: GET + required_params: + - id +################################################################### +# placement functions +################################################################### + get_placement: + path: /advertiser/placements/:id.:format + method: GET + required_params: + - id + - account_id + placement_list: + path: /advertiser/placements.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - status + search_placement: + path: /advertiser/placements.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_placement: + path: /advertiser/placements/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - label + - common_placement_id + - size_id + create_placement: + path: /advertiser/placements.:format + method: POST + required_params: + - account_id + - label + - size_id + - common_placement_id + - ad_space_id + get_or_create_placement: + path: /advertiser/placements.:format?as_singleton=1 + method: POST + required_params: + - account_id + - size_id + - label + - ad_space_id + optional_params: + - common_placement_id + delete_placement: + path: /advertiser/placements/:id.:format + method: DELETE + required_params: + - account_id + - id + get_size_from_placement: + path: /advertiser/placements/:id/size.:format + method: GET + required_params: + - id + - account_id + get_ad_space_from_placement: + path: /advertiser/placements/:id/ad_space.:format + method: GET + required_params: + - id + - account_id + get_common_placement_from_placement: + path: /advertiser/placements/:id/common_placement.:format + method: GET + required_params: + - id + - account_id + get_placement_groups_from_placement: + path: /advertiser/placements/:id/placement_groups.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_tracking_elements_from_placement: + path: /advertiser/placements/:id/tracking_elements.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# placement_group functions +################################################################### + get_placement_group: + path: /advertiser/placement_groups/:id.:format + method: GET + required_params: + - id + - account_id + placement_group_list: + path: /advertiser/placement_groups.:format + method: GET + required_params: + - account_id + optional_params: + - ad_space_id + - id + - list_limit + - list_offset + - order_direction + - order_fields + - status + search_placement_group: + path: /advertiser/placement_groups.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields + update_placement_group: + path: /advertiser/placement_groups/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - label + - common_placement_group_id + create_placement_group: + path: /advertiser/placement_groups.:format + method: POST + required_params: + - account_id + - ad_space_id + - label + - common_placement_group_id + get_or_create_placement_group: + path: /advertiser/placement_groups.:format?as_singleton=1 + method: POST + required_params: + - account_id + - label + - ad_space_id + optional_params: + - common_placement_group_id + delete_placement_group: + path: /advertiser/placement_groups/:id.:format + method: DELETE + required_params: + - account_id + - id + get_common_placement_group_from_placement_group: + path: /advertiser/placement_groups/:id/common_placement_group.:format + method: GET + required_params: + - id + - account_id + get_placements_from_placement_group: + path: /advertiser/placement_groups/:id/placements.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_insertions_from_placement_group: + path: /advertiser/placement_groups/:id/insertions.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# sections functions +################################################################### + get_section: + path: /advertiser/sections/:id.:format + method: GET + required_params: + - id + section_list: + path: /advertiser/sections.:format + method: GET + optional_params: + - id + - label + - order_fields + - order_direction + - list_limit + - list_offset + search_section: + path: /advertiser/sections.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_section: + path: /advertiser/sections/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + create_section: + path: /advertiser/sections.:format + method: POST + required_params: + - label +################################################################### +# service jobs functions +################################################################### + get_service_job: + path: /advertiser/service_jobs/:id.:format + method: GET + required_params: + - id + service_job_list: + path: /advertiser/service_jobs.:format + method: GET + optional_params: + - id + - service_job_account_id + - creative_id + - order_fields + - order_direction + - list_limit + - list_offset + - is_generic + search_service_job: + path: /advertiser/service_jobs.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + get_or_create_service_job: + path: /advertiser/service_jobs.:format?as_singleton=1 + method: POST + required_params: + - service_type + - service_job_account_id + - creative_id + optional_params: + - filename + - settings + - status + - creative_status + - job_status + - last_successful_update + create_service_job: + path: /advertiser/service_jobs.:format + method: POST + required_params: + - service_type + - service_job_account_id + - creative_id + optional_params: + - filename + - settings + - status + - creative_status + - job_status + - last_successful_update + create_service_job_from_confirmed_conversion_list: + path: /advertiser/service_jobs/confirmed_conversions/.:format + method: POST + required_params: + - confirmed_conversion_ids + - account_id + - action + optional_params: + - year + update_service_job: + path: /advertiser/service_jobs/:id.:format + method: PUT + required_params: + - id + optional_params: + - service_type + - filename + - settings + - status + - creative_status + - job_status + - last_successful_update + delete_service_job: + path: /advertiser/service_jobs/:id.:format + method: DELETE + required_params: + - id + get_creative_from_service_job: + path: /advertiser/service_jobs/:id/creative.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_screenshot_service_to_process: + path: /advertiser/service_jobs/screenshot_jobs_to_process/:format + method: GET + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_proxy_service_to_process: + path: /advertiser/service_jobs/proxy_jobs_to_process/:format + method: GET + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# size functions +################################################################### + get_size: + path: /advertiser/sizes/:id.:format + method: GET + required_params: + - id + size_list: + path: /advertiser/sizes.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - is_generic + search_size: + path: /advertiser/sizes.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + get_or_create_size: + path: /advertiser/sizes.:format?as_singleton=1 + method: POST + required_params: + - width + - height + optional_params: + - label + - is_generic + create_size: + path: /advertiser/sizes.:format + method: POST + required_params: + - width + - height + optional_params: + - label + - is_generic + set_generic_size: + path: /advertiser/sizes/generic/:id.:format + method: PUT + required_params: + - id + set_not_generic_size: + path: /advertiser/sizes/not_generic/:id.:format + method: PUT + required_params: + - id + get_ad_elements_from_size: + path: /advertiser/sizes/:id/ad_elements.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_ad_positions_from_size: + path: /advertiser/sizes/:id/ad_positions.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_files_from_size: + path: /advertiser/sizes/:id/files.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_placements_from_size: + path: /advertiser/sizes/:id/placements.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_common_placements_from_size: + path: /advertiser/sizes/:id/common_placements.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# staging_area functions +################################################################### + get_staging_area: + path: /advertiser/staging_areas/:id.:format + method: GET + required_params: + - id + - account_id + staging_area_list: + path: /advertiser/staging_areas.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - auto_update + - type + search_staging_area: + path: /advertiser/staging_areas.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_staging_area: + path: /advertiser/staging_areas/:id.:format + method: PUT + required_params: + - id + - account_id + optional_params: + - access_hash + - password + - auto_update + - type + create_staging_area: + path: /advertiser/staging_areas.:format + method: POST + required_params: + - account_id + - access_hash + optional_params: + - password + - expiration_date + - auto_update + - type + get_staging_page_assignments_from_staging_area: + path: /advertiser/staging_areas/:id/staging_page_assignments.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# staging_click functions +################################################################### + get_staging_click: + path: /advertiser/staging_clicks/:id.:format + method: GET + required_params: + - id + - account_id + staging_click_list: + path: /advertiser/staging_clicks.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - creative_version_id + - click_order + search_staging_click: + path: /advertiser/staging_clicks.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_staging_click: + path: /advertiser/staging_clicks/:id.:format + method: PUT + required_params: + - id + - account_id + optional_params: + - url + - creative_version_id + - click_order + create_staging_click: + path: /advertiser/staging_clicks.:format + method: POST + required_params: + - account_id + - url + - creative_version_id + optional_params: + - click_order + get_creative_version_from_staging_click: + path: /advertiser/staging_clicks/:id/creative_version.:format + method: GET + required_params: + - id + - account_id +################################################################### +# staging_page functions +################################################################### + get_staging_page: + path: /advertiser/staging_pages/:id.:format + method: GET + required_params: + - id + staging_page_list: + path: /advertiser/staging_pages.:format + method: GET + optional_params: + - ad_slots + - cross_version_identifier + - internal_comments + - is_default + - label + - list_limit + - list_offset + - local + - order_direction + - order_fields + - page_labels + - page_status + - public_comments + - safe_name + search_staging_page: + path: /advertiser/staging_pages.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_staging_page: + path: /advertiser/staging_pages/:id.:format + method: PUT + required_params: + - id + optional_params: + - ad_slots + - label + - local + - internal_comments + - is_default + - page_labels + - page_status + - public_comments + - safe_name + create_staging_page: + path: /advertiser/staging_pages.:format + method: POST + required_params: + - label + optional_params: + - ad_slots + - local + - internal_comments + - is_default + - page_labels + - page_status + - public_comments + - safe_name + get_staging_page_assignments_from_staging_page: + path: /advertiser/staging_pages/:id/staging_page_assignments.:format + method: GET + required_params: + - id + - account_id +################################################################### +# staging_page_assignment functions +################################################################### + get_staging_page_assignment: + path: /advertiser/staging_page_assignments/:id.:format + method: GET + required_params: + - id + - account_id + staging_page_assignment_list: + path: /advertiser/staging_page_assignments.:format + method: GET + required_params: + - account_id + optional_params: + - creative_id + - list_limit + - list_offset + - order_direction + - order_fields + - page_views + - staging_area_id + - status + search_staging_page_assignment: + path: /advertiser/staging_page_assignments.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_staging_page_assignment: + path: /advertiser/staging_page_assignments/:id.:format + method: PUT + required_params: + - id + - account_id + optional_params: + - staging_area_id + - page_views + create_staging_page_assignment: + path: /advertiser/staging_page_assignments.:format + method: POST + required_params: + - account_id + - staging_page_id + - creative_id + optional_params: + - staging_area_id + - page_views + get_creative_from_staging_page_assignment: + path: /advertiser/staging_page_assignments/:id/creative.:format + method: GET + required_params: + - id + - account_id + get_staging_area_from_staging_page_assignment: + path: /advertiser/staging_page_assignments/:id/staging_area.:format + method: GET + required_params: + - id + - account_id + get_staging_page_from_staging_page_assignment: + path: /advertiser/staging_page_assignments/:id/staging_page.:format + method: GET + required_params: + - id + - account_id + get_staging_page_assignment_detailed: + path: /advertiser/staging_page_assignments/staging_page_detailed/:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields + delete_staging_page_assignment: + path: /advertiser/staging_page_assignments/:id.:format + method: DELETE + required_params: + - id + - account_id +################################################################### +# staging_tracker functions +################################################################### + get_staging_tracker: + path: /advertiser/staging_trackers/:id.:format + method: GET + required_params: + - id + - account_id + staging_tracker_list: + path: /advertiser/staging_trackers.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - tracker_type + search_staging_tracker: + path: /advertiser/staging_trackers.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_staging_tracker: + path: /advertiser/staging_trackers/:id.:format + method: PUT + required_params: + - id + - account_id + optional_params: + - url + - creative_version_id + - tracker_type + create_staging_tracker: + path: /advertiser/staging_trackers.:format + method: POST + required_params: + - account_id + - creative_version_id + - url + optional_params: + - tracker_type + get_creative_version_from_staging_tracker: + path: /advertiser/staging_trackers/:id/creative_version.:format + method: GET + required_params: + - id + - account_id +################################################################### +# targeting functions +################################################################### + get_targeting: + path: /advertiser/targetings/:id.:format + method: GET + required_params: + - id + - account_id + targeting_list: + path: /advertiser/targetings.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + search_targeting: + path: /advertiser/targetings.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_targeting: + path: /advertiser/targetings/:id.:format + method: PUT + required_params: + - id + - account_id + optional_params: + - label + - targeting_code + - is_generic + - start_at + - stop_at + - pap_from + - pap_to + create_targeting: + path: /advertiser/targetings.:format + method: POST + required_params: + - account_id + - label + - targeting_code + optional_params: + - is_generic + - start_at + - stop_at + - pap_from + - pap_to + delete_targeting: + path: /advertiser/targetings/:id.:format + method: DELETE + required_params: + - id + - account_id + get_assigned_ad_position_from_targeting: + path: /advertiser/targetings/:id/assigned_ad_position.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_targeting_blocks_from_targeting: + path: /advertiser/targetings/:id/targeting_blocks.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# targeting_block functions +################################################################### + get_targeting_block: + path: /advertiser/targeting_blocks/:id.:format + method: GET + required_params: + - id + - account_id + targeting_block_list: + path: /advertiser/targeting_blocks.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + search_targeting_block: + path: /advertiser/targeting_blocks.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_targeting_block: + path: /advertiser/targeting_blocks/:id.:format + method: PUT + required_params: + - id + - account_id + optional_params: + - targeting_id + - targeting_group_id + create_targeting_block: + path: /advertiser/targeting_blocks.:format + method: POST + required_params: + - account_id + - targeting_id + - targeting_group_id + get_targeting_from_targeting_block: + path: /advertiser/targeting_blocks/:id/targeting.:format + method: GET + required_params: + - account_id + - id + get_targeting_group_from_targeting_block: + path: /advertiser/targeting_blocks/:id/targeting_group.:format + method: GET + required_params: + - account_id + - id + get_targeting_bricks_from_targeting_block: + path: /advertiser/targeting_blocks/:id/targeting_bricks.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# targeting_brick functions +################################################################### + get_targeting_brick: + path: /advertiser/targeting_bricks/:id.:format + method: GET + required_params: + - id + - account_id + targeting_brick_list: + path: /advertiser/targeting_bricks.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + search_targeting_brick: + path: /advertiser/targeting_bricks.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_targeting_brick: + path: /advertiser/targeting_bricks/:id.:format + method: PUT + required_params: + - id + - account_id + optional_params: + - targeting_block_id + - targeting_family_id + - targeting_rule_id + create_targeting_brick: + path: /advertiser/targeting_bricks.:format + method: POST + required_params: + - account_id + - targeting_block_id + - targeting_family_id + - targeting_rule_id + get_targeting_block_from_targeting_brick: + path: /advertiser/targeting_bricks/:id/targeting_block.:format + method: GET + required_params: + - account_id + - id + get_targeting_family_from_targeting_brick: + path: /advertiser/targeting_bricks/:id/targeting_family.:format + method: GET + required_params: + - account_id + - id + get_targeting_rule_from_targeting_brick: + path: /advertiser/targeting_bricks/:id/targeting_rule.:format + method: GET + required_params: + - account_id + - id + get_targeting_values_from_targeting_brick: + path: /advertiser/targeting_bricks/:id/targeting_values.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + associate_targeting_value_to_targeting_brick: + path: /advertiser/targeting_bricks/:id/associate_targeting_value.:format + method: PUT + required_params: + - id + - targeting_value_id + unassociate_targeting_value_to_targeting_brick: + path: /advertiser/targeting_bricks/:id/unassociate_targeting_value.:format + method: PUT + required_params: + - id + - targeting_value_id +################################################################### +# targeting_value functions +################################################################### + get_targeting_value: + path: /advertiser/targeting_values/:id.:format + method: GET + required_params: + - id + - account_id + targeting_value_list: + path: /advertiser/targeting_values.:format + method: GET + required_params: + - account_id + optional_params: + - id + - common_targeting_value_id + - targeting_family_id + - order_fields + - order_direction + - list_limit + - list_offset + search_targeting_value: + path: /advertiser/targeting_values.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_targeting_value: + path: /advertiser/targeting_values/:id.:format + method: PUT + required_params: + - id + - account_id + optional_params: + - label + - targeting_family_id + - common_targeting_value_id + - val_num_1 + - val_num_2 + - val_num_3 + - val_text_1 + - val_text_2 + create_targeting_value: + path: /advertiser/targeting_values.:format + method: POST + required_params: + - account_id + - label + - targeting_family_id + optional_params: + - common_targeting_value_id + - val_num_1 + - val_num_2 + - val_num_3 + - val_text_1 + - val_text_2 + get_targeting_family_from_targeting_value: + path: /advertiser/targeting_values/:id/targeting_family.:format + method: GET + required_params: + - account_id + - id + get_targeting_bricks_from_targeting_value: + path: /advertiser/targeting_values/:id/targeting_bricks.:format + method: GET + required_params: + - account_id + - id + associate_targeting_brick_to_targeting_value: + path: /advertiser/targeting_values/:id/associate_targeting_brick.:format + method: PUT + required_params: + - id + - targeting_brick_id + unassociate_targeting_brick_to_targeting_value: + path: /advertiser/targeting_values/:id/unassociate_targeting_brick.:format + method: PUT + required_params: + - id + - targeting_brick_id +################################################################### +# targeting_family functions +################################################################### + get_targeting_family: + path: /advertiser/targeting_families/:id.:format + method: GET + required_params: + - id + targeting_families_list: + path: /advertiser/targeting_families.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + search_targeting_families: + path: /advertiser/targeting_families.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_targeting_family: + path: /advertiser/targeting_families/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - targeting_group_id + - key_label + - is_dynamic + create_targeting_family: + path: /advertiser/targeting_families.:format + method: POST + required_params: + - label + - targeting_group_id + - key_label + - is_dynamic + get_targeting_group_from_targeting_families: + path: /advertiser/targeting_families/:id/targeting_group.:format + method: GET + required_params: + - id + get_targeting_bricks_from_targeting_families: + path: /advertiser/targeting_families/:id/targeting_bricks.:format + method: GET + required_params: + - id + - account_id + get_targeting_values_from_targeting_families: + path: /advertiser/targeting_families/:id/targeting_values.:format + method: GET + required_params: + - id + - account_id + get_targeting_rules_from_targeting_family: + path: /advertiser/targeting_families/:id/targeting_rules.:format + method: GET + required_params: + - id + associate_targeting_rule_to_targeting_family: + path: /advertiser/targeting_families/:id/associate_targeting_rule.:format + method: PUT + required_params: + - id + - targeting_rule_id + unassociate_targeting_rule_to_targeting_family: + path: /advertiser/targeting_families/:id/unassociate_targeting_rule.:format + method: PUT + required_params: + - id + - targeting_rule_id + get_targeting_rules_values_from_targeting_family: + path: /advertiser/targeting_families/targeting_rules/:format + method: GET + required_params: + - key_label + - assigned_ad_position_id + - account_id + update_targeting_rules_values_from_targeting_family: + path: /advertiser/targeting_families/targeting_rules/:format + method: PUT + required_params: + - account_id + - assigned_ad_position_id + - key_label + - targeting_rule_id + - targeting_value_ids + optional_params: + - start_at + - stop_at + update_country_targeting_rules_values_from_targeting_family: + path: /advertiser/targeting_families/country_targeting_rules/:format + method: PUT + required_params: + - account_id + - assigned_ad_position_id + - targeting_arguments + update_cookie_targeting_rules_values_from_targeting_family: + + path: /advertiser/targeting_families/cookie_targeting_rules/:format + method: PUT + required_params: + - account_id + - assigned_ad_position_id + - targeting_arguments + update_audience_targeting_rules_values_from_targeting_family: + + path: /advertiser/targeting_families/audience_targeting_rules/:format + method: PUT + required_params: + - account_id + - assigned_ad_position_id + - targeting_arguments + update_conversion_targeting_rules_values_from_targeting_family: + + path: /advertiser/targeting_families/conversion_targeting_rules/:format + method: PUT + required_params: + - account_id + - assigned_ad_position_id + - targeting_arguments + update_funnel_targeting_rules_values_from_targeting_family: + + path: /advertiser/targeting_families/funnel_targeting_rules/:format + method: PUT + required_params: + - account_id + - assigned_ad_position_id + - targeting_arguments +################################################################### +# targeting_rule functions +################################################################### + get_targeting_rule: + path: /advertiser/targeting_rules/:id.:format + method: GET + required_params: + - id + targeting_rules_list: + path: /advertiser/targeting_rules.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + search_targeting_rules: + path: /advertiser/targeting_rules.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_targeting_rule: + path: /advertiser/targeting_rules/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - value + create_targeting_rules: + path: /advertiser/targeting_rules.:format + method: POST + required_params: + - label + - value + get_targeting_bricks_from_targeting_rule: + path: /advertiser/targeting_rules/:id/targeting_bricks.:format + method: GET + required_params: + - id + - account_id + get_targeting_families_from_targeting_rule: + path: /advertiser/targeting_rules/:id/targeting_families.:format + method: GET + required_params: + - id + associate_targeting_family_to_targeting_rule: + path: /advertiser/targeting_rules/:id/associate_targeting_family.:format + method: PUT + required_params: + - id + - targeting_family_id + unassociate_targeting_family_to_targeting_rule: + path: /advertiser/targeting_rules/:id/unassociate_targeting_family.:format + method: PUT + required_params: + - id + - targeting_family_id +################################################################### +# targeting_group functions +################################################################### + get_targeting_group: + path: /advertiser/targeting_groups/:id.:format + method: GET + required_params: + - id + targeting_groups_list: + path: /advertiser/targeting_groups.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + search_targeting_groups: + path: /advertiser/targeting_groups.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_targeting_group: + path: /advertiser/targeting_groups/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - multi + - rule + create_targeting_groups: + path: /advertiser/targeting_groups.:format + method: POST + required_params: + - label + - multi + - rule + get_targeting_blocks_from_targeting_group: + path: /advertiser/targeting_groups/:id/targeting_blocks.:format + method: GET + required_params: + - id + - account_id + get_targeting_families_from_targeting_group: + path: /advertiser/targeting_groups/:id/targeting_families.:format + method: GET + required_params: + - id +################################################################### +# thirdparty_tag functions +################################################################### + get_thirdparty_tag: + path: /advertiser/thirdparty_tags/:id.:format + method: GET + required_params: + - id + - account_id + thirdparty_tag_list: + path: /advertiser/thirdparty_tags.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - is_active + - rule + - status + search_thirdparty_tag: + path: /advertiser/thirdparty_tags.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_thirdparty_tag: + path: /advertiser/thirdparty_tags/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - ad_space_id + - label + - code + - is_active + - rule + - trigger_key + - trigger_value + - trigger_after + create_thirdparty_tag: + path: /advertiser/thirdparty_tags.:format + method: POST + required_params: + - label + - code + - account_id + optional_params: + - assigned_ad_position_id + - campaign_id + - campaigns_ad_space_id + - insertion_id + - ad_space_id + - conversion_page_id + - rule + - is_active + - trigger_key + - trigger_value + - trigger_after + delete_thirdparty_tag: + path: /advertiser/thirdparty_tags/:id.:format + method: DELETE + required_params: + - account_id + - id + get_campaigns_ad_space_from_thirdparty_tag: + path: /advertiser/thirdparty_tags/:id/campaigns_ad_space.:format + method: GET + required_params: + - id + - account_id + get_insertion_from_thirdparty_tag: + path: /advertiser/thirdparty_tags/:id/insertion.:format + method: GET + required_params: + - id + - account_id + get_conversion_page_from_thirdparty_tag: + path: /advertiser/thirdparty_tags/:id/conversion_page.:format + method: GET + required_params: + - id + - account_id + get_assigned_ad_position_from_thirdparty_tag: + path: /advertiser/thirdparty_tags/:id/assigned_ad_position.:format + method: GET + required_params: + - id + - account_id + get_ad_space_from_thirdparty_tag: + path: /advertiser/thirdparty_tags/:id/ad_space.:format + method: GET + required_params: + - id + - account_id + get_campaign_from_thirdparty_tag: + path: /advertiser/thirdparty_tags/:id/campaign.:format + method: GET + required_params: + - id + - account_id +################################################################### +# thirdparty_campaign functions +################################################################### + get_linked_campaign_information: + path: /advertiser/thirdparty_campaigns/campaign_information/:format + method: GET + required_params: + - account_id + - third_party_key + - ad_space_id + - campaign_id + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields + get_unlinked_campaign_list_from_third_party: + path: /advertiser/thirdparty_campaigns/unlinked_campaigns/:format + method: GET + required_params: + - account_id + - third_party_key + - third_party_identifier + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields + link_campaign_with_third_party: + path: /advertiser/thirdparty_campaigns/campaign/:format + method: POST + required_params: + - account_id + - adword_id + - campaign_id + - third_party_key + - third_party_identifier + - campaigns_ad_space_id + synchronize_campaign: + path: /advertiser/thirdparty_campaigns/synchronize/:format + method: POST + required_params: + - account_id + - adword_id + - campaign_id + - third_party_key + - third_party_identifier +################################################################### +# third_party_account functions +################################################################### + get_third_party_account: + path: /advertiser/third_party_accounts/:id.:format + method: GET + required_params: + - account_id + - id + third_party_account_list: + path: /advertiser/third_party_accounts.:format + method: GET + required_params: + - account_id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - status + - third_party_key + - third_party_identifier + - third_party_attribute + - ad_space_id + - created_at + - updated_at + - label + search_third_party_account: + path: /advertiser/third_party_accounts.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset +################################################################### +# third_party_network functions +################################################################### + get_third_party_network: + path: /advertiser/third_party_networks/:id.:format + method: GET + required_params: + - id + third_party_network_list: + path: /advertiser/third_party_networks.:format + method: GET + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - label + - thirdparty_identifier + - third_party_key + search_third_party_network: + path: /advertiser/third_party_networks.:format + method: GET + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_third_party_network: + path: /advertiser/third_party_networks/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - third_party_key + - thirdparty_identifier + create_third_party_network: + path: /advertiser/third_party_networks.:format + method: POST + required_params: + - label + optional_params: + - third_party_key + - thirdparty_identifier +################################################################### +# tracer functions +################################################################### + get_tracer: + path: /advertiser/tracers/:id.:format + method: GET + required_params: + - id + - account_id + tracer_list: + path: /advertiser/tracers.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - status + search_tracer: + path: /advertiser/tracers.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_tracer: + path: /advertiser/tracers/:id.:format + method: PUT + required_params: + - id + - account_id + optional_params: + - label + create_tracer: + path: /advertiser/tracers.:format + method: POST + required_params: + - label + - account_id + delete_tracer: + path: /advertiser/tracers/:id.:format + method: DELETE + required_params: + - id + - account_id +################################################################### +# tracking_element functions +################################################################### + get_tracking_element: + path: /advertiser/tracking_elements/:id.:format + method: GET + required_params: + - id + - account_id + tracking_element_list: + path: /advertiser/tracking_elements.:format + method: GET + required_params: + - account_id + optional_params: + - id + - order_fields + - order_direction + - list_limit + - list_offset + - is_active + - status + search_tracking_element: + path: /advertiser/tracking_elements.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_tracking_element: + path: /advertiser/tracking_elements/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - is_active + create_tracking_element: + path: /advertiser/tracking_elements.:format + method: POST + required_params: + - account_id + - insertion_id + - placement_id + optional_params: + - is_active + delete_tracking_element: + path: /advertiser/tracking_elements/:id.:format + method: DELETE + required_params: + - account_id + - id + get_insertion_from_tracking_element: + path: /advertiser/tracking_elements/:id/insertion.:format + method: GET + required_params: + - id + - account_id + get_placement_from_tracking_element: + path: /advertiser/tracking_elements/:id/placement.:format + method: GET + required_params: + - id + - account_id + get_assigned_ad_positions_from_tracking_element: + path: /advertiser/tracking_elements/:id/assigned_ad_positions.:format + method: GET + required_params: + - account_id + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# dimension function +################################################################### + get_available_metrics_from_dimensions: + path: /advertiser/dimensions/available_metrics.:format + method: GET + required_params: + - account_id + - dimensions + get_complex_dimensions_from_dimensions: + path: /advertiser/dimensions/complex_dimensions.:format + method: GET + required_params: + - dimensions +################################################################### +# flat conversion function +################################################################### + flat_conversion_list: + path: /advertiser/flat_conversions.:format + method: GET + required_params: + - account_id + optional_params: + - ad_network_id + - ad_space_id + - assigned_ad_position_id + - campaign_id + - conversion_page_id + - converted_at + - id + - insertion_id + - list_limit + - list_offset + - location + - order_direction + - order_fields + - project_id + - tag_type + - tracking_element_id + search_flat_conversion: + path: /advertiser/flat_conversions.:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields + search_flat_conversion_detail: + path: /advertiser/flat_conversions/detail/:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields + get_distinct_locations_of_flat_conversion: + path: /advertiser/flat_conversions/distinct_locations/:format + method: GET + required_params: + - account_id + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# metrics function +################################################################### + get_metric: + path: /advertiser/metrics/:id.:format + method: GET + required_params: + - id + metric_list: + path: /advertiser/metrics.:format + method: GET + optional_params: + - id + - list_limit + - list_offset + - order_direction + - order_fields + search_metric: + path: /advertiser/metrics.:format + method: GET + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields + get_metric_groups_from_metric: + path: /advertiser/metrics/:id/metric_groups.:format + method: GET + required_params: + - id + get_default_metrics: + path: /advertiser/default_metrics.:format + method: GET +################################################################### +# metric groups function +################################################################### + get_metric_group: + path: /advertiser/metric_groups/:id.:format + method: GET + required_params: + - id + metric_group_list: + path: /advertiser/metric_groups.:format + method: GET + optional_params: + - id + - list_limit + - list_offset + - order_direction + - order_fields + search_metric_group: + path: /advertiser/metric_groups.:format + method: GET + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields + get_metrics_from_metric_group: + path: /advertiser/metric_groups/:id/metrics.:format + method: GET + required_params: + - id +################################################################### +# statistics function +################################################################### + get_statistics: + path: /advertiser/statistics.:format + method: GET + required_params: + - dimensions + - account_id + optional_params: + - dimension_filters + - conversion_types + - conversion_filters + - end_date + - extra_info + - metrics + - metrics_groups + - start_date + get_meta_data_statistics: + path: /advertiser/meta_data_statistics.:format + method: GET + required_params: + - dimensions + - account_id + optional_params: + - dimension_filters + - extra_info +################################################################### +# advertiser functions +################################################################### + get_advertiser: + path: /wousdat/advertisers/:id.:format + method: GET + required_params: + - id + advertiser_list: + path: /wousdat/advertisers.:format + method: GET + required_params: [] + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - label + - sales + - cluster_id + search_advertiser: + path: /wousdat/advertisers.:format + method: GET + required_params: [] + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_advertiser: + path: /wousdat/advertisers/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - sales + - cluster_id + create_advertiser: + path: /wousdat/advertisers.:format + method: POST + required_params: + - label + optional_params: + - sales + - cluster_id + delete_advertiser: + path: /wousdat/advertisers/:id.:format + method: DELETE + required_params: + - id + get_data_brands_products_from_advertiser: + path: /wousdat/advertisers/:id/data_brands_products.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_cluster_from_advertiser: + path: /wousdat/advertisers/:id/cluster.:format + method: GET + required_params: + - id +################################################################### +# audience_plus functions +################################################################### + audience_plus_database_exists_for_target: + path: /wousdat/audience_plus/audience_plus_database_exists.:format + method: GET + required_params: + - target_id +################################################################### +# analyzed_trafic_stats functions +################################################################### + analyzed_trafic_stats_list: + path: /wousdat/analyzed_trafic_stats.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - list_column + - jour + - langue + - source_id + - conditions +################################################################### +# audience_plus_client functions +################################################################### + get_audience_plus_client: + path: /wousdat/audience_plus_clients/:id.:format + method: GET + required_params: + - id + audience_plus_client_list: + path: /wousdat/audience_plus_clients.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - user_id + - label + - target_id + - country + - is_activated + - inserted_at + search_audience_plus_client: + path: /wousdat/audience_plus_clients.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_audience_plus_client: + path: /wousdat/audience_plus_clients/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - country + - is_activated + create_audience_plus_client: + path: /wousdat/audience_plus_clients.:format + method: POST + required_params: + - label + - user_id + - target_id + optional_params: + - country + - is_activated + - inserted_at + delete_audience_plus_client: + path: /wousdat/audience_plus_clients/:id.:format + method: DELETE + required_params: + - id + get_user_from_audience_plus_client: + path: /wousdat/audience_plus_clients/:id/user.:format + method: GET + required_params: + - id + get_audience_plus_clients_dates_from_audience_plus_client: + path: /wousdat/audience_plus_clients/:id/audience_plus_clients_dates.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_audience_plus_advertiser_clients: + path: /wousdat/audience_plus_clients/:id/advertisers/.:format + method: GET + required_params: + - id + get_audience_plus_analytics_clients: + path: /wousdat/audience_plus_clients/:id/analytics/.:format + method: GET + required_params: + - id +################################################################### +# audience_plus_clients_date functions +################################################################### + get_audience_plus_clients_date: + path: /wousdat/audience_plus_clients_dates/:id.:format + method: GET + required_params: + - id + audience_plus_clients_date_list: + path: /wousdat/audience_plus_clients_dates.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - audience_plus_client_id + - start_date + - end_date + - to_do + search_audience_plus_clients_date: + path: /wousdat/audience_plus_clients_dates.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_audience_plus_clients_date: + path: /wousdat/audience_plus_clients_dates/:id.:format + method: PUT + required_params: + - id + optional_params: + - start_date + - end_date + - to_do + create_audience_plus_clients_date: + path: /wousdat/audience_plus_clients_dates.:format + method: POST + required_params: + - audience_plus_client_id + - start_date + - end_date + optional_params: + - to_do + delete_audience_plus_clients_date: + path: /wousdat/audience_plus_clients_dates/:id.:format + method: DELETE + required_params: + - id + get_audience_plus_client_from_audience_plus_clients_date: + path: /wousdat/audience_plus_clients_dates/:id/audience_plus_client.:format + method: GET + required_params: + - id +################################################################### +# blank_domains functions +################################################################### + get_blank_domains: + path: /wousdat/blank_domains/:id.:format + method: GET + required_params: + - id + blank_domains_list: + path: /wousdat/blank_domains.:format + method: GET + required_params: [] + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + search_blank_domains: + path: /wousdat/blank_domains.:format + method: GET + required_params: [] + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_blank_domains: + path: /wousdat/blank_domains.:format + method: POST + required_params: + - MD5_DOMAIN + - DOMAIN + - nb_blank_url + - nb_url + - ratio_blank_url + optional_params: + - is_forbidden + - has_been_checked + update_blank_domains: + path: /wousdat/blank_domains/:id.:format + method: PUT + required_params: + - id + optional_params: + - MD5_DOMAIN + - DOMAIN + - nb_blank_url + - nb_url + - ratio_blank_url + - is_forbidden + - has_been_checked + delete_blank_domains: + path: /wousdat/blank_domains/:id.:format + method: DELETE + required_params: + - id +################################################################### +# brand functions +################################################################### + get_brand: + path: /wousdat/brands/:id.:format + method: GET + required_params: + - id + brand_list: + path: /wousdat/brands.:format + method: GET + required_params: [] + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - label + - cluster_id + search_brand: + path: /wousdat/brands.:format + method: GET + required_params: [] + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_brand: + path: /wousdat/brands/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - cluster_id + create_brand: + path: /wousdat/brands.:format + method: POST + required_params: + - label + optional_params: + - cluster_id + delete_brand: + path: /wousdat/brands/:id.:format + method: DELETE + required_params: + - id + get_data_brands_products_from_brand: + path: /wousdat/brands/:id/data_brands_products.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_cluster_from_brand: + path: /wousdat/brands/:id/cluster.:format + method: GET + required_params: + - id + get_brands_regexp_from_brand: + path: /wousdat/brands/:id/brands_regexps.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# brands_regexp functions +################################################################### + get_brands_regexp: + path: /wousdat/brands_regexps/:id.:format + method: GET + required_params: + - id + brands_regexp_list: + path: /wousdat/brands_regexps.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - brand_id + - brand_regexp + search_brands_regexp: + path: /wousdat/brands_regexps.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_brands_regexp: + path: /wousdat/brands_regexps/:id.:format + method: PUT + required_params: + - id + optional_params: + - brand_id + - brand_regexp + create_brands_regexp: + path: /wousdat/brands_regexps.:format + method: POST + required_params: + - brand_id + - brand_regexp + delete_brands_regexp: + path: /wousdat/brands_regexps/:id.:format + method: DELETE + required_params: + - id + optional_params: + - brand_id + get_brand_from_brands_regexp: + path: /wousdat/brands_regexps/:id/brand.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset +################################################################### +# cluster functions +################################################################### + get_cluster: + path: /wousdat/clusters/:id.:format + method: GET + required_params: + - id + cluster_list: + path: /wousdat/clusters.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - label + - languages + - is_extra + - is_activated + - is_forbidden + search_cluster: + path: /wousdat/clusters.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_cluster: + path: /wousdat/clusters/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - languages + - is_extra + - is_activated + - is_forbidden + create_cluster: + path: /wousdat/clusters.:format + method: POST + required_params: + - label + optional_params: + - languages + - is_extra + - is_activated + - is_forbidden + delete_cluster: + path: /wousdat/clusters/:id.:format + method: DELETE + required_params: + - id + get_segments_from_cluster: + path: /wousdat/clusters/:id/segments.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_criteria_labels_from_cluster: + path: /wousdat/clusters/:id/criteria_labels.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_clusters_words_from_cluster: + path: /wousdat/clusters/:id/clusters_words.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_quantiles_from_cluster: + path: /wousdat/clusters/:id/quantiles.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_temp_clusters_words_from_cluster: + path: /wousdat/clusters/:id/temp_clusters_words.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_words_from_cluster: + path: /wousdat/clusters/:id/words.:format + method: GET + required_params: + - placeholder_lang + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_temp_words_from_cluster: + path: /wousdat/clusters/:id/temp_words.:format + method: GET + required_params: + - placeholder_lang + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_words_from_full_cluster: + path: /wousdat/clusters/words/.:format + method: GET + required_params: + - placeholder_lang + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_words_from_full_temp_cluster: + path: /wousdat/clusters/temp/words/.:format + method: GET + required_params: + - placeholder_lang + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_stats_from_cluster: + path: /wousdat/clusters/:id/stats.:format + method: GET + required_params: + - placeholder_target_id + - placeholder_yyyymm + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_clusters_by_language: + path: /wousdat/clusters/:lang/langs.:format + method: GET + required_params: + - lang +################################################################### +# clusters_language_dependent_cluster functions +################################################################### + get_clusters_language_dependent_cluster: + path: /wousdat/clusters_language_dependent_clusters/:id.:format + method: GET + required_params: + - id + clusters_language_dependent_cluster_list: + path: /wousdat/clusters_language_dependent_clusters.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - cluster_id + - lang + - language_dependent_cluster_id + search_clusters_language_dependent_cluster: + path: /wousdat/clusters_language_dependent_clusters.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_clusters_language_dependent_cluster: + path: /wousdat/clusters_language_dependent_clusters.:format + method: POST + required_params: + - cluster_id + - lang + - language_dependent_cluster_id + delete_clusters_clusters_language_dependent_cluster: + path: /wousdat/clusters_language_dependent_clusters/:id.:format + method: DELETE + required_params: + - id + get_cluster_from_clusters_language_dependent_cluster: + path: /wousdat/clusters_language_dependent_clusters/:id/cluster.:format + method: GET + required_params: + - id +################################################################### +# clusters_word functions +################################################################### + get_clusters_word: + path: /wousdat/clusters_words/:id.:format + method: GET + required_params: + - id + clusters_word_list: + path: /wousdat/clusters_words.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - cluster_id + - lang + - mot_id + search_clusters_word: + path: /wousdat/clusters_words.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_clusters_word: + path: /wousdat/clusters_words.:format + method: POST + required_params: + - cluster_id + - lang + - mot_id + delete_clusters_word: + path: /wousdat/clusters_words/:id.:format + method: DELETE + required_params: + - id + get_cluster_from_clusters_word: + path: /wousdat/clusters_words/:id/cluster.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_word_from_clusters_word: + path: /wousdat/clusters_words/:id/word.:format + method: GET + required_params: + - placeholder_lang + - id + get_specific_clusters_with_word: + path: /wousdat/clusters_words/:lang/specific_clusters.:format + method: GET + required_params: + - lang + - mot_ids +################################################################### +# clusters_segment functions +################################################################### + get_clusters_segment: + path: /wousdat/clusters_segments/:id.:format + method: GET + required_params: + - id + clusters_segment_list: + path: /wousdat/clusters_segments.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - label + search_clusters_segment: + path: /wousdat/clusters_segments.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_clusters_segment: + path: /wousdat/clusters_segments.:format + method: POST + required_params: + - cluster_id + - segment_id + delete_clusters_segment: + path: /wousdat/clusters_segments/:id.:format + method: DELETE + required_params: + - id +################################################################### +# content functions +################################################################### + content_list: + path: /wousdat/content.:format + method: GET + required_params: + - format + - MD5_URL + - placeholder_letter + - placeholder_slice + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + create_content: + path: /wousdat/content.:format + method: POST + required_params: + - MD5_URL + - mot_id + - placeholder_letter + - placeholder_slice + update_content: + path: /wousdat/content/:MD5_URL.:format + method: PUT + required_params: + - MD5_URL + - placeholder_letter + - placeholder_slice + optional_params: + - mot_id + - jour + - poids +################################################################### +# cookies_consolides_stats functions +################################################################### + cookies_consolides_stats_list: + path: /wousdat/cookies_consolides_stats.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - list_column + - type_calcul + - type_profil + - country + - conditions +################################################################### +# cookies_quantiles_stats_for_queries_bdd functions +################################################################### + cookies_quantiles_stats_for_queries_bdd_list: + path: /wousdat/cookies_quantiles_stats_for_queries_bdd.:format + method: GET + required_params: + - format + - placeholder_date + - placeholder_lang + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - list_column + - cluster_1 + - cluster_2 + - cluster_3 + - cluster_4 + - cluster_5 + - cluster_6 + - cluster_7 + - cluster_8 + - cluster_9 + - cluster_10 + - cluster_11 + - cluster_12 + - cluster_13 + - cluster_14 + - cluster_15 + - cluster_16 + - cluster_17 + - cluster_18 + - cluster_19 + - cluster_20 + - cluster_23 + - cluster_25 + - cluster_27 + - cluster_29 + - cluster_30 + - cluster_31 + - cluster_32 + - cluster_33 + - cluster_35 + - cluster_37 + - cluster_39 + - cluster_40 + - cluster_41 + - cluster_43 + - cluster_45 + - cluster_47 + - cluster_49 + - cluster_50 + - cluster_51 + - cluster_52 + - cluster_53 + - cluster_54 + - cluster_55 + - cluster_56 + - cluster_59 + - cluster_60 + - cluster_61 + - cluster_63 + - cluster_65 + - cluster_67 + - cluster_69 + - cluster_71 + - cluster_73 + - cluster_75 + - cluster_77 + - cluster_79 + - cluster_81 + - cluster_83 + - cluster_84 + - cluster_85 + - cluster_86 + - cluster_87 + - cluster_89 + - cluster_90 + - cluster_91 + - cluster_92 + - cluster_93 + - cluster_95 + - cluster_97 + - cluster_99 + - cluster_101 + - cluster_102 + - cluster_103 + - cluster_105 + - cluster_107 + - cluster_108 + - cluster_109 + - cluster_110 + - cluster_111 + - cluster_112 + - cluster_113 + - cluster_115 + - cluster_116 + - cluster_117 + - cluster_119 + - cluster_120 + - cluster_124 + - cluster_125 + - cluster_129 + - cluster_131 + - cluster_133 + - cluster_134 + - cluster_135 + - cluster_137 + - cluster_138 + - cluster_139 + - cluster_140 + - cluster_143 + - cluster_145 + - cluster_147 + - cluster_149 + - cluster_151 + - cluster_153 + - cluster_154 + - cluster_155 + - cluster_157 + - cluster_158 + - cluster_159 + - cluster_161 + - cluster_162 + - cluster_163 + - cluster_164 + - cluster_165 + - cluster_167 + - cluster_168 + - cluster_169 + - cluster_170 + - cluster_171 + - cluster_173 + - cluster_174 + - cluster_175 + - cluster_177 + - cluster_179 + - cluster_180 + - cluster_181 + - cluster_183 + - cluster_185 + - cluster_187 + - cluster_188 + - cluster_189 + - cluster_190 + - cluster_191 + - cluster_193 + - cluster_195 + - cluster_197 + - cluster_199 + - cluster_200 + - cluster_201 + - cluster_202 + - cluster_203 + - cluster_204 + - cluster_205 + - cluster_207 + - cluster_208 + - cluster_209 + - cluster_210 + - cluster_211 + - cluster_212 + - cluster_213 + - cluster_215 + - cluster_216 + - cluster_217 + - cluster_219 + - cluster_220 + - cluster_222 + - cluster_223 + - cluster_225 + - cluster_227 + - cluster_229 + - cluster_231 + - cluster_233 + - cluster_235 + - cluster_237 + - cluster_239 + - cluster_241 + - cluster_243 + - cluster_247 + - segment_1 + - segment_2 + - segment_3 + - segment_4 + - segment_5 + - segment_6 + - segment_7 + - segment_8 + - segment_9 + - segment_10 + - segment_11 + - segment_12 + - segment_13 + - segment_14 + - segment_15 + - segment_16 + - segment_17 + - criterion_1 + - criterion_2 + - criterion_3 + - criterion_4 + - criterion_5 + - criterion_6 + - criterion_7 + - criterion_8 + - criterion_9 + - criterion_11 + - criterion_12 + - criterion_13 + - criterion_14 + - criterion_15 + - criterion_16 + - criterion_17 + - criterion_18 + - criterion_19 + - criterion_20 + - criterion_21 + - criterion_22 + - criterion_23 + - criterion_24 + search_cookies_quantiles_stats_for_queries_bdd: + path: /wousdat/cookies_quantiles_stats_for_queries_bdd.:format + method: GET + required_params: + - format + - placeholder_date + - placeholder_lang + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + - list_column + cookies_quantiles_stats_for_queries_bdd_last_date: + path: /wousdat/cookies_quantiles_stats_for_queries_bdd/last_date.:format + method: GET + required_params: + - format + - lang + get_segments_by_cluster_list: + path: /wousdat/clusters_segments/cluster_list/.:format + method: GET + required_params: + - cluster_ids +################################################################### +# cookies_quantiles_stats_for_queries_publisher functions +################################################################### + cookies_quantiles_stats_for_queries_publisher_list: + path: /wousdat/cookies_quantiles_stats_for_queries_publisher.:format + method: GET + required_params: + - format + - placeholder_date + - placeholder_lang + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - list_column + - cluster_1 + - cluster_2 + - cluster_3 + - cluster_4 + - cluster_5 + - cluster_6 + - cluster_7 + - cluster_8 + - cluster_9 + - cluster_10 + - cluster_11 + - cluster_12 + - cluster_13 + - cluster_14 + - cluster_15 + - cluster_16 + - cluster_17 + - cluster_18 + - cluster_19 + - cluster_20 + - cluster_23 + - cluster_25 + - cluster_27 + - cluster_29 + - cluster_30 + - cluster_31 + - cluster_32 + - cluster_33 + - cluster_35 + - cluster_37 + - cluster_39 + - cluster_40 + - cluster_41 + - cluster_43 + - cluster_45 + - cluster_47 + - cluster_49 + - cluster_50 + - cluster_51 + - cluster_52 + - cluster_53 + - cluster_54 + - cluster_55 + - cluster_56 + - cluster_59 + - cluster_60 + - cluster_61 + - cluster_63 + - cluster_65 + - cluster_67 + - cluster_69 + - cluster_71 + - cluster_73 + - cluster_75 + - cluster_77 + - cluster_79 + - cluster_81 + - cluster_83 + - cluster_84 + - cluster_85 + - cluster_86 + - cluster_87 + - cluster_89 + - cluster_90 + - cluster_91 + - cluster_92 + - cluster_93 + - cluster_95 + - cluster_97 + - cluster_99 + - cluster_101 + - cluster_102 + - cluster_103 + - cluster_105 + - cluster_107 + - cluster_108 + - cluster_109 + - cluster_110 + - cluster_111 + - cluster_112 + - cluster_113 + - cluster_115 + - cluster_116 + - cluster_117 + - cluster_119 + - cluster_120 + - cluster_124 + - cluster_125 + - cluster_129 + - cluster_131 + - cluster_133 + - cluster_134 + - cluster_135 + - cluster_137 + - cluster_138 + - cluster_139 + - cluster_140 + - cluster_143 + - cluster_145 + - cluster_147 + - cluster_149 + - cluster_151 + - cluster_153 + - cluster_154 + - cluster_155 + - cluster_157 + - cluster_158 + - cluster_159 + - cluster_161 + - cluster_162 + - cluster_163 + - cluster_164 + - cluster_165 + - cluster_167 + - cluster_168 + - cluster_169 + - cluster_170 + - cluster_171 + - cluster_173 + - cluster_174 + - cluster_175 + - cluster_177 + - cluster_179 + - cluster_180 + - cluster_181 + - cluster_183 + - cluster_185 + - cluster_187 + - cluster_188 + - cluster_189 + - cluster_190 + - cluster_191 + - cluster_193 + - cluster_195 + - cluster_197 + - cluster_199 + - cluster_200 + - cluster_201 + - cluster_202 + - cluster_203 + - cluster_204 + - cluster_205 + - cluster_207 + - cluster_208 + - cluster_209 + - cluster_210 + - cluster_211 + - cluster_212 + - cluster_213 + - cluster_215 + - cluster_216 + - cluster_217 + - cluster_219 + - cluster_220 + - cluster_222 + - cluster_223 + - cluster_225 + - cluster_227 + - cluster_229 + - cluster_231 + - cluster_233 + - cluster_235 + - cluster_237 + - cluster_239 + - cluster_241 + - cluster_243 + - cluster_247 + - segment_1 + - segment_2 + - segment_3 + - segment_4 + - segment_5 + - segment_6 + - segment_7 + - segment_8 + - segment_9 + - segment_10 + - segment_11 + - segment_12 + - segment_13 + - segment_14 + - segment_15 + - segment_16 + - segment_17 + - criterion_1 + - criterion_2 + - criterion_3 + - criterion_4 + - criterion_5 + - criterion_6 + - criterion_7 + - criterion_8 + - criterion_9 + - criterion_11 + - criterion_12 + - criterion_13 + - criterion_14 + - criterion_15 + - criterion_16 + - criterion_17 + - criterion_18 + - criterion_19 + - criterion_20 + - criterion_21 + - criterion_22 + - criterion_23 + - criterion_24 + search_cookies_quantiles_stats_for_queries_publisher: + path: /wousdat/cookies_quantiles_stats_for_queries_publisher.:format + method: GET + required_params: + - format + - placeholder_date + - placeholder_lang + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + - list_column + sum_element_cookies_quantiles_stats_for_queries_bdd: + path: /wousdat/cookies_quantiles_stats_for_queries_bdd/sum.:format + method: GET + required_params: + - format + - placeholder_date + - placeholder_lang + - element_to_sum + optional_params: + - conditions + cookies_quantiles_stats_for_queries_publisher_last_date: + path: /wousdat/cookies_quantiles_stats_for_queries_publisher/last_date.:format + method: GET + required_params: + - format + - lang +################################################################### +# countries functions +################################################################### + get_countries: + path: /wousdat/countries/:id.:format + method: GET + required_params: + - id + countries_list: + path: /wousdat/countries.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - label + search_countries: + path: /wousdat/countries.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_countries: + path: /wousdat/countries.:format + method: POST + required_params: + - label + update_countries: + path: /wousdat/countries/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + delete_countries: + path: /wousdat/countries/:id.:format + method: DELETE + required_params: + - id +################################################################### +# criteria_label functions +################################################################### + get_criteria_label: + path: /wousdat/criteria_labels/:id.:format + method: GET + required_params: + - id + criteria_label_list: + path: /wousdat/criteria_labels.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - cluster_id + - segment_id + - criterion_id + - lang + search_criteria_label: + path: /wousdat/criteria_labels.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_criteria_label: + path: /wousdat/criteria_labels.:format + method: POST + required_params: + - lang + - criterion_label + optional_params: + - cluster_id + - segment_id + - criterion_id + - sociodemo_category_label + update_criteria_label: + path: /wousdat/criteria_labels/:id.:format + method: PUT + required_params: + - id + optional_params: + - cluster_id + - segment_id + - criterion_id + - criterion_label + - lang + - sociodemo_category_label + delete_criteria_label: + path: /wousdat/criteria_labels/:id.:format + method: DELETE + required_params: + - id + get_cluster_from_criteria_label: + path: /wousdat/criteria_labels/:id/cluster.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_segment_from_criteria_label: + path: /wousdat/criteria_labels/:id/segment.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_sociodemo_criteria_from_criteria_label: + path: /wousdat/criteria_labels/:id/sociodemo_criteria.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset +################################################################### +# data functions +################################################################### + data_list: + path: /wousdat/datas.:format + method: GET + required_params: + - format + - placeholder_date + - placeholder_target_id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - cluster_1 + - cluster_2 + - cluster_3 + - cluster_4 + - cluster_5 + - cluster_6 + - cluster_7 + - cluster_8 + - cluster_9 + - cluster_10 + - cluster_11 + - cluster_12 + - cluster_13 + - cluster_14 + - cluster_15 + - cluster_16 + - cluster_17 + - cluster_18 + - cluster_19 + - cluster_20 + - cluster_23 + - cluster_25 + - cluster_27 + - cluster_29 + - cluster_30 + - cluster_31 + - cluster_32 + - cluster_33 + - cluster_35 + - cluster_37 + - cluster_39 + - cluster_40 + - cluster_41 + - cluster_43 + - cluster_45 + - cluster_47 + - cluster_49 + - cluster_50 + - cluster_51 + - cluster_52 + - cluster_53 + - cluster_54 + - cluster_55 + - cluster_56 + - cluster_59 + - cluster_60 + - cluster_61 + - cluster_63 + - cluster_65 + - cluster_67 + - cluster_69 + - cluster_71 + - cluster_73 + - cluster_75 + - cluster_77 + - cluster_79 + - cluster_81 + - cluster_83 + - cluster_84 + - cluster_85 + - cluster_86 + - cluster_87 + - cluster_89 + - cluster_90 + - cluster_91 + - cluster_92 + - cluster_93 + - cluster_95 + - cluster_97 + - cluster_99 + - cluster_101 + - cluster_102 + - cluster_103 + - cluster_105 + - cluster_107 + - cluster_108 + - cluster_109 + - cluster_110 + - cluster_111 + - cluster_112 + - cluster_113 + - cluster_115 + - cluster_116 + - cluster_117 + - cluster_119 + - cluster_120 + - cluster_124 + - cluster_125 + - cluster_129 + - cluster_131 + - cluster_133 + - cluster_134 + - cluster_135 + - cluster_137 + - cluster_138 + - cluster_139 + - cluster_140 + - cluster_143 + - cluster_145 + - cluster_147 + - cluster_149 + - cluster_151 + - cluster_153 + - cluster_154 + - cluster_155 + - cluster_157 + - cluster_158 + - cluster_159 + - cluster_161 + - cluster_162 + - cluster_163 + - cluster_164 + - cluster_165 + - cluster_167 + - cluster_168 + - cluster_169 + - cluster_170 + - cluster_171 + - cluster_173 + - cluster_174 + - cluster_175 + - cluster_177 + - cluster_179 + - cluster_180 + - cluster_181 + - cluster_183 + - cluster_185 + - cluster_187 + - cluster_188 + - cluster_189 + - cluster_190 + - cluster_191 + - cluster_193 + - cluster_195 + - cluster_197 + - cluster_199 + - cluster_200 + - cluster_201 + - cluster_202 + - cluster_203 + - cluster_204 + - cluster_205 + - cluster_207 + - cluster_208 + - cluster_209 + - cluster_210 + - cluster_211 + - cluster_212 + - cluster_213 + - cluster_215 + - cluster_216 + - cluster_217 + - cluster_219 + - cluster_220 + - cluster_222 + - cluster_223 + - cluster_225 + - cluster_227 + - cluster_229 + - cluster_231 + - cluster_233 + - cluster_235 + - cluster_237 + - cluster_239 + - cluster_241 + - cluster_243 + - cluster_247 + - segment_1 + - segment_2 + - segment_3 + - segment_4 + - segment_5 + - segment_6 + - segment_7 + - segment_8 + - segment_9 + - segment_10 + - segment_11 + - segment_12 + - segment_13 + - segment_14 + - segment_15 + - segment_16 + - segment_17 + - criterion_1 + - criterion_2 + - criterion_3 + - criterion_4 + - criterion_5 + - criterion_6 + - criterion_7 + - criterion_8 + - criterion_9 + - criterion_11 + - criterion_12 + - criterion_13 + - criterion_14 + - criterion_15 + - criterion_16 + - criterion_17 + - criterion_18 + - criterion_19 + - criterion_20 + - criterion_21 + - criterion_22 + - criterion_23 + - criterion_24 + search_data: + path: /wousdat/datas.:format + method: GET + required_params: + - format + - placeholder_date + - placeholder_target_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + sum_element_cookies_quantiles_stats_for_queries_publisher: + path: /wousdat/cookies_quantiles_stats_for_queries_publisher/sum.:format + method: GET + required_params: + - format + - placeholder_date + - placeholder_lang + - element_to_sum + optional_params: + - conditions +################################################################### +# domains functions +################################################################### + get_domain: + path: /wousdat/domains/:id.:format + method: GET + required_params: + - id + domain_list: + path: /wousdat/domains.:format + method: GET + required_params: [] + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - MD5_DOMAIN + - SOURCE_ID + - DOMAIN + - MD1_DOMAIN + search_domain: + path: /wousdat/domains.:format + method: GET + required_params: [] + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_domain: + path: /wousdat/domains/:id.:format + method: PUT + required_params: + - id + optional_params: + - MD5_DOMAIN + - SOURCE_ID + - DOMAIN + - MD1_DOMAIN + create_domain: + path: /wousdat/domains.:format + method: POST + required_params: + - MD5_DOMAIN + - SOURCE_ID + - DOMAIN + - MD1_DOMAIN + delete_domain: + path: /wousdat/domains/:id.:format + method: DELETE + required_params: + - id + get_forbidden_domain_from_domain: + path: /wousdat/domains/:MD5_DOMAIN/forbidden_domain.:format + method: GET + required_params: + - MD5_DOMAIN + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_url_from_domain: + path: /wousdat/domains/:MD5_DOMAIN/url.:format + method: GET + required_params: + - MD5_DOMAIN + - placeholder_slice + - placeholder_letter + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# family functions +################################################################### + get_family: + path: /wousdat/families/:id.:format + method: GET + required_params: + - id + family_list: + path: /wousdat/families.:format + method: GET + required_params: [] + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - label + - cluster_id + search_family: + path: /wousdat/families.:format + method: GET + required_params: [] + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_family: + path: /wousdat/families/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - cluster_id + create_family: + path: /wousdat/families.:format + method: POST + required_params: + - label + optional params: + - cluster_id + delete_family: + path: /wousdat/families/:id.:format + method: DELETE + required_params: + - id + get_data_brands_products_from_family: + path: /wousdat/families/:id/data_brands_products.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_cluster_from_family: + path: /wousdat/families/:id/cluster.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# forbidden_domains functions +################################################################### + get_forbidden_domain: + path: /wousdat/forbidden_domains/:md5_domain.:format + method: GET + required_params: + - md5_domain + forbidden_domain_list: + path: /wousdat/forbidden_domains.:format + method: GET + required_params: [] + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + search_forbidden_domain: + path: /wousdat/forbidden_domains.:format + method: GET + required_params: [] + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_forbidden_domain: + path: /wousdat/forbidden_domains/:md5_domain.:format + method: PUT + required_params: + - md5_domain + - is_sexy + - regex_id + optional_params: + - day + - is_warez + create_forbidden_domains: + path: /wousdat/forbidden_domains.:format + method: POST + required_params: + - md5_domain + - is_sexy + - regex_id + optional_params: + - day + delete_forbidden_domain: + path: /wousdat/forbidden_domains/:md5_domain.:format + method: DELETE + required_params: + - md5_domain + get_domain_from_forbidden_domain: + path: /wousdat/forbidden_domains/:md5_domain/domain.:format + method: GET + required_params: + - md5_domain + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# langs functions +################################################################### + get_lang: + path: /wousdat/langs/:id.:format + method: GET + required_params: + - id + lang_list: + path: /wousdat/langs.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - label + - is_crawling_ok + - has_clusters + - show_sociodemo + - default_country + search_lang: + path: /wousdat/langs.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_lang: + path: /wousdat/langs.:format + method: POST + required_params: + - label + optional_params: + - is_crawling_ok + - has_clusters + - string + - show_sociodemo + - default_country + update_lang: + path: /wousdat/langs/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - is_crawling_ok + - has_clusters + - string + - show_sociodemo + - default_country + delete_lang: + path: /wousdat/langs/:id.:format + method: DELETE + required_params: + - id +################################################################### +# lexical_entries functions +################################################################### + get_lexical_entrie: + path: /wousdat/lexical_entries/:id.:format + method: GET + required_params: + - placeholder_lang + - id + lexicon_list: + path: /wousdat/lexical_entries.:format + method: GET + required_params: + - placeholder_lang + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - maj + - ortho + - phon + - lemme + - lm + - cgram + - JOUR + - genre + - nombre + - freqlemfilms + - freqlemLivres + - freqfilms + - freqLivres + - ajout + - lemme_extrait + - mot_id + search_lexical_entrie: + path: /wousdat/lexical_entries.:format + method: GET + required_params: + - placeholder_lang + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_lexical_entrie: + path: /wousdat/lexical_entries/:id.:format + method: PUT + required_params: + - placeholder_lang + - id + optional_params: + - maj + - ortho + - phon + - lemme + - lm + - cgram + - JOUR + - cg + - genre + - nombre + - freqlemfilms + - freqlemLivres + - freqfilms + - freqLivres + - ajout + - lemme_extrait + create_lexical_entrie: + path: /wousdat/lexical_entries.:format + method: POST + required_params: + - placeholder_lang + optional_params: + - maj + - ortho + - phon + - lemme + - lm + - cgram + - JOUR + - cg + - genre + - nombre + - freqlemfilms + - freqlemLivres + - freqfilms + - freqLivres + - ajout + - lemme_extrait + - mot_id + delete_lexical_entrie: + path: /wousdat/lexical_entries/:id.:format + method: DELETE + required_params: + - placeholder_lang + - id + get_word_from_lexical_entrie: + path: /wousdat/lexical_entries/:id/word.:format + method: GET + required_params: + - id + - placeholder_lang +################################################################### +# population_stats functions +################################################################### + population_stat_list: + path: /wousdat/population_stats.:format + method: GET + required_params: + - format + - placeholder_target_id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - day + - start_date + - end_date + - days_loaded + - days_cookies_count + search_population_stat: + path: /wousdat/population_stats.:format + method: GET + required_params: + - format + - placeholder_target_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset +################################################################### +# mediaplanning_targets functions +################################################################### + get_mediaplanning_target: + path: /wousdat/mediaplanning_targets/:id.:format + method: GET + required_params: + - id + mediaplanning_target_list: + path: /wousdat/mediaplanning_targets.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - user_id + - label + - target + - query + search_mediaplanning_target: + path: /wousdat/mediaplanning_targets.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_mediaplanning_target: + path: /wousdat/mediaplanning_targets.:format + method: POST + required_params: + - user_id + - label + optional_params: + - target + - query + update_mediaplanning_target: + path: /wousdat/mediaplanning_targets/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - target + - query + delete_mediaplanning_target: + path: /wousdat/mediaplanning_targets/:id.:format + method: DELETE + required_params: + - id + get_user_from_mediaplanning_target: + path: /wousdat/mediaplanning_targets/:id/user.:format + method: GET + required_params: + - id + get_mediaplanning_volumes_from_mediaplanning_target: + path: /wousdat/mediaplanning_targets/:id/mediaplanning_targets_volumes.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset +################################################################### +# mediaplanning_targets_volumes functions +################################################################### + get_mediaplanning_targets_volume: + path: /wousdat/mediaplanning_targets_volumes/:id.:format + method: GET + required_params: + - id + mediaplanning_targets_volume_list: + path: /wousdat/mediaplanning_targets_volumes.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - mediaplanning_target_id + - day + - country + - recency + - base + search_mediaplanning_targets_volume: + path: /wousdat/mediaplanning_targets_volumes.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_mediaplanning_targets_volume: + path: /wousdat/mediaplanning_targets_volumes.:format + method: POST + required_params: + - mediaplanning_target_id + - day + - country + - recency + - base + optional_params: + - volume + - sociodemo_ratios + update_mediaplanning_targets_volume: + path: /wousdat/mediaplanning_targets_volumes/:id.:format + method: PUT + required_params: + - id + optional_params: + - day + - volume + - sociodemo_ratios + - country + - recency + - base + delete_mediaplanning_targets_volume: + path: /wousdat/mediaplanning_targets_volumes/:id.:format + method: DELETE + required_params: + - id + get_mediaplanning_target_from_mediaplanning_targets_volume: + path: /wousdat/mediaplanning_targets_volumes/:id/mediaplanning_target.:format + method: GET + required_params: + - id +################################################################### +# data_brands_product functions +################################################################### + get_data_brands_product: + path: /wousdat/data_brands_products/:id.:format + method: GET + required_params: + - id + data_brands_product_list: + path: /wousdat/data_brands_products.:format + method: GET + required_params: [] + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - label + - advertiser_id + - family_id + - brand_id + - source + - discard + - has_been_checked + - cluster_id + search_data_brands_product: + path: /wousdat/data_brands_products.:format + method: GET + required_params: [] + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + search_data_brands_product_details: + path: /wousdat/data_brands_products/detail/.:format + method: GET + required_params: [] + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_data_brands_product: + path: /wousdat/data_brands_products/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - advertiser_id + - family_id + - brand_id + - lemma + - source + - investment + - discard + - has_been_checked + - cluster_id + create_wousdat_product: + path: /wousdat/data_brands_products.:format + method: POST + required_params: + - label + - advertiser_id + - family_id + - lemma + - source + optional_params: + - discard + - has_been_checked + - investment + - cluster_id + - brand_id + delete_wousdat_product: + path: /wousdat/data_brands_products/:id.:format + method: DELETE + required_params: + - id + get_advertiser_from_data_brands_product: + path: /wousdat/data_brands_products/:id/advertiser.:format + method: GET + required_params: + - id + get_family_from_data_brands_product: + path: /wousdat/data_brands_products/:id/family.:format + method: GET + required_params: + - id + get_brand_from_data_brands_product: + path: /wousdat/data_brands_products/:id/brand.:format + method: GET + required_params: + - id + get_cluster_from_data_brands_product: + path: /wousdat/data_brands_products/:id/cluster.:format + method: GET + required_params: + - id + get_products_words_from_wousdat_product: + path: /wousdat/data_brands_products/:id/products_words.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_product_list_by_language: + path: /wousdat/data_brands_products/get_product_list_by_language/:format + method: GET + required_params: + - language + optional_params: + - conditions + - list_limit + - list_offset + - order_direction + - order_fields + update_all_data_brands_products: + path: /wousdat/data_brands_products.:format + method: PUT + required_params: [] + optional_params: + - conditions + - has_been_checked + - discard + - label + - advertiser_id + - family_id + - lemma + - source + - brand_id + - investment + - cluster_id +################################################################### +# products_word functions +################################################################### + get_products_word: + path: /wousdat/products_words/:id.:format + method: GET + required_params: + - id + products_word_list: + path: /wousdat/products_words.:format + method: GET + required_params: [] + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - product_id + - word_id + - lang + search_products_word: + path: /wousdat/products_words.:format + method: GET + required_params: [] + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + - product_id + - word_id + - lang + update_products_word: + path: /wousdat/products_words/:id.:format + method: PUT + required_params: + - id + optional_params: + - product_id + - word_id + - lang + create_products_word: + path: /wousdat/products_words.:format + method: POST + required_params: + - product_id + - word_id + - lang + delete_products_word: + path: /wousdat/products_words/:id.:format + method: DELETE + required_params: + - id + optional_params: + - product_id + - word_id + - lang + get_data_brands_product_from_products_word: + path: /wousdat/products_words/:id/data_brands_product.:format + method: GET + required_params: + - id + get_word_from_product_word: + path: /wousdat/products_words/:id/word.:format + method: GET + required_params: + - id + - placeholder_lang + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset +################################################################### +# quantiles functions +################################################################### + get_quantiles: + path: /wousdat/quantiles/:q_id.:format + method: GET + required_params: + - q_id + quantiles_list: + path: /wousdat/quantiles.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + search_quantiles: + path: /wousdat/quantiles.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_quantiles: + path: /wousdat/quantiles/:q_id.:format + method: PUT + required_params: + - q_id + - day + - sociodemo_id + - quantile_id + - cluster_id + - country + create_quantiles: + path: /wousdat/quantiles.:format + method: POST + required_params: + - day + - sociodemo_id + - quantile_id + - cluster_id + - country + delete_quantiles: + path: /wousdat/quantiles/:q_id.:format + method: DELETE + required_params: + - q_id + get_clusters_from_quantiles: + path: /wousdat/quantiles/:q_id/clusters.:format + method: GET + required_params: + - q_id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_sociodemo_criteria_from_quantiles: + path: /wousdat/quantiles/:q_id/sociodemo_criteria.:format + method: GET + required_params: + - q_id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + search_quantiles_stats_sociodemo: + path: /wousdat/quantiles/search_quantiles_stats_sociodemo/:format + method: GET + required_params: + - start_date + - end_date + - country + - sociodemo_ids + search_quantiles_stats_cluster: + path: /wousdat/quantiles/search_quantiles_stats_cluster/:format + method: GET + required_params: + - start_date + - end_date + - country + - cluster_ids +################################################################### +# segment functions +################################################################### + get_segment: + path: /wousdat/segments/:id.:format + method: GET + required_params: + - id + segment_list: + path: /wousdat/segments.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + search_segment: + path: /wousdat/segments.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_segment: + path: /wousdat/segments/:id.:format + method: PUT + required_params: + - id + - label + create_segment: + path: /wousdat/segments.:format + method: POST + required_params: + - label + delete_segment: + path: /wousdat/segments/:id.:format + method: DELETE + required_params: + - id + get_clusters_from_segment: + path: /wousdat/segments/:id/clusters.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_criteria_labels_from_segment: + path: /wousdat/segments/:id/criteria_labels.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_stats_from_segment: + path: /wousdat/segments/:id/stats.:format + method: GET + required_params: + - placeholder_target_id + - placeholder_yyyymm + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_clusters_by_segment: + path: /wousdat/segments/cluster_list/:format + method: GET + required_params: + - format + optional_params: + - lang +################################################################### +# sociodemo_criteria functions +################################################################### + get_sociodemo_criterion: + path: /wousdat/sociodemo_criteria/:id.:format + method: GET + required_params: + - id + sociodemo_criterion_list: + path: /wousdat/sociodemo_criteria.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - category + search_sociodemo_criterion: + path: /wousdat/sociodemo_criteria.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_sociodemo_criterion: + path: /wousdat/sociodemo_criteria/:id.:format + method: PUT + required_params: + - id + - label + optional_params: + - category + create_sociodemo_criterion: + path: /wousdat/sociodemo_criteria.:format + method: POST + required_params: + - category + - label + delete_sociodemo_criterion: + path: /wousdat/sociodemo_criteria/:id.:format + method: DELETE + required_params: + - id + get_sociodemo_criteria_by_category: + path: /wousdat/sociodemo_criteria/category/:format + method: GET + required_params: + - format + get_criteria_labels_from_sociodemo_criteria: + path: /wousdat/sociodemo_criteria/:id/criteria_labels.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_quantiles_from_sociodemo_criteria: + path: /wousdat/sociodemo_criteria/:id/quantiles.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_stats_from_sociodemo_criteria: + path: /wousdat/sociodemo_criteria/:id/stats.:format + method: GET + required_params: + - placeholder_target_id + - placeholder_yyyymm + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_words_sociodemo_daily_scores_from_sociodemo_criteria: + path: /wousdat/sociodemo_criteria/:id/words_sociodemo_daily_scores.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset +################################################################### +# stats functions +################################################################### + get_stat: + path: /wousdat/stats/:id.:format + method: GET + required_params: + - id + - placeholder_yyyymm + - placeholder_target_id + stat_list: + path: /wousdat/stats.:format + method: GET + required_params: + - format + - placeholder_yyyymm + - placeholder_target_id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - count + - ratio + - rank + - database_ratio + - ratio_difference + - rank_difference + - global_index + search_stat: + path: /wousdat/stats.:format + method: GET + required_params: + - format + - placeholder_yyyymm + - placeholder_target_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + get_cluster_from_stats: + path: /wousdat/stats/:id/cluster.:format + method: GET + required_params: + - id + - placeholder_yyyymm + - placeholder_target_id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_sociodemo_criteria_from_stats: + path: /wousdat/stats/:id/sociodemo_criteria.:format + method: GET + required_params: + - id + - placeholder_yyyymm + - placeholder_target_id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_segment_from_stats: + path: /wousdat/stats/:id/segment.:format + method: GET + required_params: + - id + - placeholder_yyyymm + - placeholder_target_id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset +################################################################### +# temp_clusters_word functions +################################################################### + get_temp_clusters_word: + path: /wousdat/temp_clusters_words/:id.:format + method: GET + required_params: + - id + temp_clusters_word_list: + path: /wousdat/temp_clusters_words.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - cluster_id + - lang + - word_id + search_temp_clusters_word: + path: /wousdat/temp_clusters_words.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_temp_clusters_word: + path: /wousdat/temp_clusters_words.:format + method: POST + required_params: + - cluster_id + - lang + - word_id + delete_temp_clusters_word: + path: /wousdat/temp_clusters_words/:id.:format + method: DELETE + required_params: + - id + get_cluster_from_temp_clusters_word: + path: /wousdat/temp_clusters_words/:id/cluster.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_word_from_temp_clusters_word: + path: /wousdat/temp_clusters_words/:id/word.:format + method: GET + required_params: + - placeholder_lang + - id + init_temp_clusters_words_from_clusters_word: + path: /wousdat/temp_clusters_words/:lang/init.:format + method: POST + required_params: + - lang + push_temp_clusters_to_production: + path: /wousdat/temp_clusters_words/:lang/clusters_word.:format + method: POST + required_params: + - lang +################################################################### +# strong_classifiers_families functions +################################################################### + get_strong_classifiers_families: + path: /wousdat/strong_classifiers_families/:id.:format + method: GET + required_params: + - id + strong_classifiers_families_list: + path: /wousdat/strong_classifiers_families.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - created_at + search_strong_classifiers_families: + path: /wousdat/strong_classifiers_families.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_strong_classifiers_families: + path: /wousdat/strong_classifiers_families.:format + method: POST + required_params: + - label + - user + - positive_examples_target_id + - negative_examples_type + - algorithm_params + update_strong_classifiers_families: + path: /wousdat/strong_classifiers_families/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - user + - positive_examples_target_id + - negative_examples_type + - algorithm_params + delete_strong_classifiers_families: + path: /wousdat/strong_classifiers_families/:id.:format + method: DELETE + required_params: + - id +################################################################### +# strong_classifiers_families_results functions +################################################################### + get_strong_classifiers_families_results: + path: /wousdat/strong_classifiers_families_results/:id.:format + method: GET + required_params: + - id + strong_classifiers_families_results_list: + path: /wousdat/strong_classifiers_families_results.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - start_day + search_strong_classifiers_families_results: + path: /wousdat/strong_classifiers_families_results.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_strong_classifiers_families_results: + path: /wousdat/strong_classifiers_families_results.:format + method: POST + required_params: + - start_day + - end_day + - run_type + - strong_classifiers_family_id + - results +################################################################### +# user functions +################################################################### + get_user: + path: /wousdat/users/:id.:format + method: GET + required_params: + - id + user_list: + path: /wousdat/users.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - state + - login + - name + - email + search_user: + path: /wousdat/users.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_user: + path: /wousdat/users/:id.:format + method: PUT + required_params: + - id + optional_params: + - login + - name + - email + - crypted_password + - salt + - remember_token + - remember_token_expires_at + - activation_code + - activated_at + - state + create_user: + path: /wousdat/users.:format + method: POST + required_params: + - login + - name + - email + - crypted_password + - salt + optional_params: + - remember_token + - activation_code + - state + delete_user: + path: /wousdat/users/:id.:format + method: DELETE + required_params: + - id + get_mediaplanning_targets_from_user: + path: /wousdat/users/:id/mediaplanning_targets.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_audience_plus_clients_from_user: + path: /wousdat/users/:id/audience_plus_clients.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# word functions +################################################################### + get_word: + path: /wousdat/words/:id.:format + method: GET + required_params: + - placeholder_lang + - id + word_list: + path: /wousdat/words.:format + method: GET + required_params: + - placeholder_lang + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - value + - poids_trafic + - poids_search + - ponderation + - fixe + - is_node + search_word: + path: /wousdat/words.:format + method: GET + required_params: + - placeholder_lang + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_word: + path: /wousdat/words/:id.:format + method: PUT + required_params: + - placeholder_lang + - id + optional_params: + - value + - poids_trafic + - poids_search + - ponderation + - fixe + - clusters + - is_node + create_word: + path: /wousdat/words.:format + method: POST + required_params: + - placeholder_lang + - value + optional_params: + - poids_trafic + - poids_search + - ponderation + - fixe + - clusters + - is_node + delete_word: + path: /wousdat/words/:id.:format + method: DELETE + required_params: + - placeholder_lang + - id + get_clusters_words_from_word: + path: /wousdat/words/:id/clusters_words.:format + method: GET + required_params: + - id + - placeholder_lang + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_temp_clusters_words_from_word: + path: /wousdat/words/:id/temp_clusters_words.:format + method: GET + required_params: + - id + - placeholder_lang + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_lexical_entries_from_word: + path: /wousdat/words/:id/lexical_entries.:format + method: GET + required_params: + - id + - placeholder_lang + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_clusters_from_word: + path: /wousdat/words/:id/clusters.:format + method: GET + required_params: + - id + - placeholder_lang + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_temp_clusters_from_word: + path: /wousdat/words/:id/temp_clusters.:format + method: GET + required_params: + - id + - placeholder_lang + get_clusters_from_words: + path: /wousdat/words/clusters_temp_clusters/:format + method: GET + required_params: + - ids + - placeholder_lang + get_words_sociodemo_daily_scores_from_word: + path: /wousdat/words/:id/words_sociodemo_daily_scores.:format + method: GET + required_params: + - id + - placeholder_lang +################################################################### +# words_sociodemo_daily_scores functions +################################################################### + get_words_sociodemo_daily_score: + path: /wousdat/words_sociodemo_daily_scores/:wsds_id.:format + method: GET + required_params: + - wsds_id + words_sociodemo_daily_score_list: + path: /wousdat/words_sociodemo_daily_scores.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - word_id + - sociodemo_criterion_id + - lang + - score + - ratio + - day + search_words_sociodemo_daily_score: + path: /wousdat/words_sociodemo_daily_scores.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_words_sociodemo_daily_score: + path: /wousdat/words_sociodemo_daily_scores/:wsds_id.:format + method: PUT + required_params: + - wsds_id + optional_params: + - day + - word_id + - sociodemo_criterion_id + - lang + - score + - ratio + create_words_sociodemo_daily_score: + path: /wousdat/words_sociodemo_daily_scores.:format + method: POST + required_params: + - day + - word_id + - sociodemo_criterion_id + - lang + - score + - ratio + delete_words_sociodemo_daily_scores: + path: /wousdat/words_sociodemo_daily_scores/:wsds_id.:format + method: DELETE + required_params: + - wsds_id + get_words_from_words_sociodemo_daily_scores: + path: /wousdat/words_sociodemo_daily_scores/:wsds_id/word.:format + method: GET + required_params: + - wsds_id + - placeholder_lang + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_sociodemo_criteria_from_words_sociodemo_daily_scores: + path: /wousdat/words_sociodemo_daily_scores/:wsds_id/sociodemo_criteria.:format + method: GET + required_params: + - wsds_id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_range_from_word_and_sociodemo: + path: /wousdat/words_sociodemo_daily_scores/range_from_word_and_sociodemo/:format + method: GET + required_params: + - start_date + - end_date + - lang + - word_id + - sociodemo_criterion_id + returned : L</words_sociodemo_daily_score_for_range_of_date> + get_range_from_multi_words_and_sociodemo: + path: /wousdat/words_sociodemo_daily_scores/range_from_multi_words_and_sociodemo/:format + method: GET + required_params: + - start_date + - end_date + - lang + - word_ids + - sociodemo_criterion_id + returned : L</words_sociodemo_daily_score_for_range_of_date_by_words> + get_range_from_word_and_sociodemo_category: + path: /wousdat/words_sociodemo_daily_scores/range_from_word_and_sociodemo_category/:format + method: GET + required_params: + - start_date + - end_date + - lang + - word_id + - sociodemo_criterion_category + returned : L</words_sociodemo_daily_score_for_range_of_date_by_sociodemo> + get_range_from_multi_words_and_sociodemo_category: + path: /wousdat/words_sociodemo_daily_scores/range_from_multi_words_and_sociodemo_category/:format + method: GET + required_params: + - start_date + - end_date + - lang + - word_ids + - sociodemo_criterion_category + returned : L</words_sociodemo_daily_score_for_range_of_date_by_words_and_sociodemo> +################################################################### +# action functions +################################################################### + get_action: + path: /users_actions_targeting/actions/:id.:format + method: GET + required_params: + - id + action_list: + path: /users_actions_targeting/actions.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - las_hit_inserted + search_action: + path: /users_actions_targeting/actions.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_action: + path: /users_actions_targeting/actions/:id.:format + method: PUT + required_params: + - id + optional_params: + - last_hit_inserted + delete_action: + path: /users_actions_targeting/actions/:id.:format + method: DELETE + required_params: + - id + get_advertiser_actions_from_action: + path: /users_actions_targeting/actions/:id/advertiser_actions.:format + method: GET + required_params: + - id + get_targets_from_action: + path: /users_actions_targeting/actions/:id/targets.:format + method: GET + required_params: + - id + get_actions_targets_from_action: + path: /users_actions_targeting/actions/:id/actions_targets.:format + method: GET + required_params: + - id + get_analytics_actions_from_action: + path: /users_actions_targeting/actions/:id/analytics_actions.:format + method: GET + required_params: + - id +################################################################### +# actions_target functions +################################################################### + get_actions_target: + path: /users_actions_targeting/actions_targets/:id.:format + method: GET + required_params: + - id + actions_target_list: + path: /users_actions_targeting/actions_targets.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - action_id + - target_id + - prio + search_actions_target: + path: /users_actions_targeting/actions_targets.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_actions_target: + path: /users_actions_targeting/actions_targets/:id.:format + method: PUT + required_params: + - id + optional_params: + - prio + create_actions_target: + path: /users_actions_targeting/actions_targets.:format + method: POST + required_params: + - action_id + - target_id + optional_params: + - prio + delete_actions_target: + path: /users_actions_targeting/actions_targets/:id.:format + method: DELETE + required_params: + - id + get_target_from_actions_target: + path: /users_actions_targeting/actions_targets/:id/target.:format + method: GET + required_params: + - id + get_action_from_actions_target: + path: /users_actions_targeting/actions_targets/:id/action.:format + method: GET + required_params: + - id +################################################################### +# advertiser_action functions +################################################################### + get_advertiser_action: + path: /users_actions_targeting/advertiser_actions/:id.:format + method: GET + required_params: + - id + advertiser_action_list: + path: /users_actions_targeting/advertiser_actions.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - action_id + - item_type + - item_id + - site_id + search_advertiser_action: + path: /users_actions_targeting/advertiser_actions.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_advertiser_action: + path: /users_actions_targeting/advertiser_actions/:id.:format + method: PUT + required_params: + - id + optional_params: + - item_type + create_advertiser_action: + path: /users_actions_targeting/advertiser_actions.:format + method: POST + required_params: + - item_type + - item_id + - site_id + get_action_from_advertiser_action: + path: /users_actions_targeting/advertiser_actions/:id/action.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + delete_advertiser_action: + path: /users_actions_targeting/advertiser_actions/:id.:format + method: DELETE + required_params: + - id + delete_advertiser_action_special: + path: /users_actions_targeting/advertiser_actions/by_action/:action_id.:format + method: DELETE + required_params: + - action_id +################################################################### +# analytics_action functions +################################################################### + get_analytics_action: + path: /users_actions_targeting/analytics_actions/:id.:format + method: GET + required_params: + - id + analytics_action_list: + path: /users_actions_targeting/analytics_actions.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - action_id + - site_id + - zone + - page + search_analytics_action: + path: /users_actions_targeting/analytics_actions.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_analytics_action: + path: /users_actions_targeting/analytics_actions.:format + method: POST + required_params: + - site_id + - zone + - page + get_action_from_analytics_action: + path: /users_actions_targeting/analytics_actions/:id/action.:format + method: GET + required_params: + - id + delete_analytics_action: + path: /users_actions_targeting/analytics_actions/:id.:format + method: DELETE + required_params: + - id + delete_analytics_action_special: + path: /users_actions_targeting/analytics_actions/by_action/:action_id.:format + method: DELETE + required_params: + - action_id +################################################################### +# target functions +################################################################### + get_target: + path: /users_actions_targeting/targets/:id.:format + method: GET + required_params: + - id + target_list: + path: /users_actions_targeting/targets.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - product + - label + - last_hit_inserted + search_target: + path: /users_actions_targeting/targets.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_target: + path: /users_actions_targeting/targets.:format + method: POST + required_params: + - product + - label + - action_ids + optional_params: + - last_hit_inserted + delete_target: + path: /users_actions_targeting/targets/:id.:format + method: DELETE + required_params: + - id + get_actions_targets_from_target: + path: /users_actions_targeting/targets/:id/actions_targets.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_actions_from_target: + path: /users_actions_targeting/targets/:id/actions.:format + method: GET + required_params: + - id +################################################################### +# site functions +################################################################### + get_site: + path: /common_project/sites/:FID_SITE.:format + method: GET + required_params: + - FID_SITE + update_site: + path: /common_project/sites/:FID_SITE.:format + method: PUT + required_params: + - FID_SITE + - use_optimization +################################################################### +# account_group functions +################################################################### + get_account_group: + path: /authentication/account_groups/:id.:format + method: GET + required_params: + - id + account_group_list: + path: /authentication/account_groups.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - label + - customer_id + - activity_sector_id + - mother_account_id + - consolidation_type + - is_active + search_account_group: + path: /authentication/account_groups.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_account_group: + path: /authentication/account_groups.:format + method: POST + required_params: + - label + - customer_id + - activity_sector_id + - mother_account_id + - consolidation_type + optional_params: + - is_active + create_account_group_with_mother_account: + path: /authentication/account_groups/with_mother_account/.:format + method: POST + required_params: + - label + - customer_id + - activity_sector_id + - timezone_id + - consolidation_type + - product_label + - country_id + update_account_group: + path: /authentication/account_groups/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - customer_id + - activity_sector_id + - mother_account_id + - consolidation_type + - is_active + delete_account_group: + path: /authentication/account_groups/:id.:format + method: DELETE + required_params: + - id + get_product_accounts_from_account_group: + path: /authentication/account_groups/:id/product_accounts.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_activity_sector_from_account_group: + path: /authentication/account_groups/:id/activity_sector.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_customer_from_account_group: + path: /authentication/account_groups/:id/customer.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_account_groups_smart_search: + path: /authentication/account_groups/smart_search/.:format + method: GET + required_params: + - user_id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset +################################################################### +# activity_sectors functions +################################################################### + get_activity_sector: + path: /authentication/activity_sectors/:id.:format + method: GET + required_params: + - id + activity_sector_list: + path: /authentication/activity_sectors.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - label + - country_id + search_activity_sector: + path: /authentication/activity_sectors.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_activity_sector: + path: /authentication/activity_sectors.:format + method: POST + required_params: + - label + - country_id + update_activity_sector: + path: /authentication/activity_sectors/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - country_id + delete_activity_sector: + path: /authentication/activity_sectors/:id.:format + method: DELETE + required_params: + - id + get_country_from_activity_sector: + path: /authentication/activity_sectors/:id/country.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_account_groups_from_activity_sector: + path: /authentication/activity_sectors/:id/account_groups.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset +################################################################### +# applications functions +################################################################### + get_application: + path: /authentication/applications/:id.:format + method: GET + required_params: + - id + application_list: + path: /authentication/applications.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - label + - application_key + - private_key + search_application: + path: /authentication/applications.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_application: + path: /authentication/applications.:format + method: POST + required_params: + - label + optional_params: + - access_rights + update_application: + path: /authentication/applications/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - access_rights + delete_application: + path: /authentication/applications/:id.:format + method: DELETE + required_params: + - id +################################################################### +# contact functions +################################################################### + get_contact: + path: /authentication/contacts/:id.:format + method: GET + required_params: + - id + contact_list: + path: /authentication/contacts.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - address + - country_id + - customer_id + - phone_number + - contact_type + search_contact: + path: /authentication/contacts.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_contact: + path: /authentication/contacts/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - email + - address + - country_id + - customer_id + - phone_number + - contact_type + create_contact: + path: /authentication/contacts.:format + method: POST + required_params: + - label + - email + - address + - country_id + - customer_id + - phone_number + - contact_type + delete_contact: + path: /authentication/contacts/:id.:format + method: DELETE + required_params: + - id + get_customer_from_contact: + path: /authentication/contacts/:id/customer.:format + method: GET + required_params: + - id + get_country_from_contact: + path: /authentication/contacts/:id/country.:format + method: GET + required_params: + - id +################################################################### +# country functions +################################################################### + get_country: + path: /authentication/countries/:id.:format + method: GET + required_params: + - id + country_list: + path: /authentication/countries.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - label + search_country: + path: /authentication/countries.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_country: + path: /authentication/countries/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + create_country: + path: /authentication/countries.:format + method: POST + required_params: + - label + delete_country: + path: /authentication/countries/:id.:format + method: DELETE + required_params: + - id + get_contacts_from_country: + path: /authentication/countries/:id/contacts.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_authentication_users_from_country: + path: /authentication/countries/:id/authentication_users.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_product_accounts_from_country: + path: /authentication/countries/:id/product_accounts.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_customers_from_country: + path: /authentication/countries/:id/customers.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_activity_sectors_from_country: + path: /authentication/countries/:id/activity_sectors.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + get_market_product_accounts_from_country: + path: /authentication/countries/:id/market_product_accounts.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# customer functions +################################################################### + get_customer: + path: /authentication/customers/:id.:format + method: GET + required_params: + - id + customer_list: + path: /authentication/customers.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - label + - customer_type + - language + - is_active + - country_id + search_customer: + path: /authentication/customers.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_customer: + path: /authentication/customers/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - country_id + - customer_type + - language + - is_active + - salesman_id + create_customer: + path: /authentication/customers.:format + method: POST + required_params: + - label + - customer_type + - language + - country_id + optional_params: + - salesman_id + - is_active + delete_customer: + path: /authentication/customers/:id.:format + method: DELETE + required_params: + - id + get_contacts_from_customer: + path: /authentication/customers/:id/contacts.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_account_groups_from_customer: + path: /authentication/customers/:id/account_groups.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_customers_users_roles_from_customer: + path: /authentication/customers/:id/customers_users_roles.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_accounts_from_customer_ids: + path: /authentication/customers/accounts/.:format + method: GET + required_params: + - customer_ids + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + - product_id + - product_account_is_active + get_authentication_users_from_customer_ids: + path: /authentication/customers/authentication_users/.:format + method: GET + required_params: + - customer_ids + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_country_from_customer: + path: /authentication/customers/:id/country.:format + method: GET + required_params: + - id + get_user_from_customer: + path: /authentication/customers/:id/authentication_user.:format + method: GET + required_params: + - id + get_customers_with_counts: + path: /authentication/customers/customers_with_counts/.:format + method: GET + required_params: [] + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - conditions +################################################################### +# customers_users_role functions +################################################################### + get_customers_users_role: + path: /authentication/customers_users_roles/:id.:format + method: GET + required_params: + - id + customers_users_role_list: + path: /authentication/customers_users_roles.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - user_id + - customer_id + - role + search_customers_users_role: + path: /authentication/customers_users_roles.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_customers_users_role: + path: /authentication/customers_users_roles/:id.:format + method: PUT + required_params: + - id + optional_params: + - user_id + - customer_id + - role + create_customers_users_role: + path: /authentication/customers_users_roles.:format + method: POST + required_params: + - user_id + - customer_id + - role + delete_customers_users_role: + path: /authentication/customers_users_roles/:id.:format + method: DELETE + required_params: + - id + get_user_from_customers_users_role: + path: /authentication/customers_users_roles/:id/authentication_user.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + get_customer_from_customers_users_role: + path: /authentication/customers_users_roles/:id/customer.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields +################################################################### +# product functions +################################################################### + get_product: + path: /authentication/products/:id.:format + method: GET + required_params: + - id + product_list: + path: /authentication/products.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + search_product: + path: /authentication/products.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_product: + path: /authentication/products.:format + method: POST + required_params: + - label + update_product: + path: /authentication/products/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + delete_product: + path: /authentication/products/:id.:format + method: DELETE + required_params: + - id + get_product_accounts_from_product: + path: /authentication/products/:id/product_accounts.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset +################################################################### +# product_account functions +################################################################### + get_product_account: + path: /authentication/product_accounts/:id.:format + method: GET + required_params: + - id + product_account_list: + path: /authentication/product_accounts.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - account_group_id + - product_id + - timezone_id + - linked_account_id + - country_id + - url + - is_active + search_product_account: + path: /authentication/product_accounts.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_product_account: + path: /authentication/product_accounts.:format + method: POST + required_params: + - account_group_id + - country_id + - label + - product_id + - timezone_id + optional_params: + - is_active + - linked_account_id + - url + update_product_account: + path: /authentication/product_accounts/:id.:format + method: PUT + required_params: + - id + optional_params: + - account_group_id + - country_id + - is_active + - label + - linked_account_id + - timezone_id + - product_id + - url + delete_product_account: + path: /authentication/product_accounts/:id.:format + method: DELETE + required_params: + - id + delete_authentication_user_from_product_account: + path: /authentication/product_accounts/authentication_user_delete/.:format + method: PUT + required_params: + - user_id + - product_account_id + get_product_from_product_account: + path: /authentication/product_accounts/:id/product.:format + method: GET + required_params: + - id + get_country_from_product_account: + path: /authentication/product_accounts/:id/country.:format + method: GET + required_params: + - id + get_timezone_from_product_account: + path: /authentication/product_accounts/:id/timezone.:format + method: GET + required_params: + - id + get_account_group_from_product_account: + path: /authentication/product_accounts/:id/account_group.:format + method: GET + required_params: + - id + get_authentication_users_from_product_account: + path: /authentication/product_accounts/:id/authentication_users.:format + method: GET + required_params: + - id + get_market_countries_from_product_account: + path: /authentication/product_accounts/:id/market_countries.:format + method: GET + required_params: + - id + optional_params: + - list_limit + - list_offset + - order_direction + - order_fields + associate_market_country_to_product_account: + path: /authentication/product_accounts/:id/associate_market_country.:format + method: PUT + required_params: + - id + - country_id + unassociate_market_country_to_product_account: + path: /authentication/product_accounts/:id/unassociate_market_country.:format + method: PUT + required_params: + - id + - country_id +################################################################### +# session functions +################################################################### + get_session: + path: /authentication/sessions/:id.:format + method: GET + required_params: + - id + authenticate: + path: /authentication/sessions/authenticate/.:format + method: PUT + required_params: + - session_key + logout: + path: /authentication/sessions/logout/.:format + method: DELETE + required_params: + - session_key + session_list: + path: /authentication/sessions.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - user_id + - session_key + - value + - expiry + search_session: + path: /authentication/sessions.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_session: + path: /authentication/sessions.:format + method: POST + required_params: + - user_id + - session_key + - value + - expiry + update_session: + path: /authentication/sessions/:id.:format + method: PUT + required_params: + - id + optional_params: + - user_id + - session_key + - value + - expiry + delete_session: + path: /authentication/sessions/:id.:format + method: DELETE + required_params: + - id + get_authentication_user_from_session: + path: /authentication/sessions/:id/authentication_user.:format + method: GET + required_params: + - id +################################################################### +# token functions +################################################################### + get_token: + path: /authentication/tokens/:id.:format + method: GET + required_params: + - id + check_token: + path: /authentication/tokens/check/.:format + method: GET + required_params: + - value + - type + - email + token_list: + path: /authentication/tokens.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - user_id + - value + - type + search_token: + path: /authentication/tokens.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_token: + path: /authentication/tokens.:format + method: POST + required_params: + - user_id + - value + - type + update_token: + path: /authentication/tokens/:id.:format + method: PUT + required_params: + - id + optional_params: + - user_id + - value + - type + delete_token: + path: /authentication/tokens/:id.:format + method: DELETE + required_params: + - id + get_authentication_user_from_token: + path: /authentication/tokens/:id/authentication_user.:format + method: GET + required_params: + - id +################################################################### +# authentication_user functions +################################################################### + get_authentication_user: + path: /authentication/authentication_users/:id.:format + method: GET + required_params: + - id + authentication_user_list: + path: /authentication/authentication_users.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - email + - password + - is_webo_admin + - firstname + - lastname + - company + - job_title + - phone_number + - language + - role + - country_id + search_authentication_user: + path: /authentication/authentication_users.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + create_authentication_user: + path: /authentication/authentication_users.:format + method: POST + required_params: + - firstname + - lastname + - email + - company + - job_title + - phone_number + - language + - role + optional_params: + - password + - is_webo_admin + - country_id + create_authentication_employee: + path: /authentication/authentication_users/weboemployee/.:format + method: POST + required_params: + - firstname + - lastname + - email + - job_title + - country_id + create_or_update_authentication_user_with_access: + path: /authentication/authentication_users/create_or_update_with_access/.:format + method: PUT + required_params: + - email + - product_account_ids + optional_params: + - access_type + - access_to_campaigns_administration + - add_update_and_delete_elements + - manage_synchronized_campaigns + - access_to_creative_library + - access_to_conversions + - add_update_and_delete_conversions + create_administrators: + path: /authentication/authentication_users/administrators/.:format + method: POST + required_params: + - customer_id + - users + forget_password: + path: /authentication/authentication_users/forget_password/.:format + method: PUT + required_params: + - email + update_password: + path: /authentication/authentication_users/update_password/.:format + method: PUT + required_params: + - id + - password + optional_params: + - check_pass + - pass_to_check + check_password: + path: /authentication/authentication_users/check_password/.:format + method: GET + required_params: + - id + - password + update_authentication_user: + path: /authentication/authentication_users/:id.:format + method: PUT + required_params: + - id + optional_params: + - firstname + - lastname + - company + - job_title + - phone_number + - language + - role + - email + - password + - is_webo_admin + - country_id + delete_authentication_user: + path: /authentication/authentication_users/:id.:format + method: DELETE + required_params: + - id + get_sessions_from_authentication_user: + path: /authentication/authentication_users/:id/sessions.:format + method: GET + required_params: + - id + get_adperf_user_access_form: + path: /authentication/authentication_users/adperf_user_access_form/.:format + method: GET + required_params: [] + optional_params: + - account_id + - email + - access_type + get_tokens_from_authentication_user: + path: /authentication/authentication_users/:id/tokens.:format + method: GET + required_params: + - id + get_product_accounts_from_authentication_user: + path: /authentication/authentication_users/:id/product_accounts.:format + method: GET + required_params: + - id + get_accounts_from_authentication_user: + path: /authentication/authentication_users/:id/accounts/.:format + method: GET + required_params: + - id + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + get_customers_from_authentication_user: + path: /authentication/authentication_users/:id/customers/.:format + method: GET + required_params: + - id + - role + get_customers_users_roles_from_authentication_user: + path: /authentication/authentication_users/:id/customers_users_roles.:format + method: GET + required_params: + - id + get_country_from_authentication_user: + path: /authentication/authentication_users/:id/country.:format + method: GET + required_params: + - id + get_authentication_token: + path: /authentication/authentication_users/token/:format + method: POST + required_params: + - email + - password +################################################################### +# timezone functions +################################################################### + get_timezone: + path: /authentication/timezones/:id.:format + method: GET + required_params: + - id + timezone_list: + path: /authentication/timezones.:format + method: GET + required_params: + - format + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset + - label + - name + search_timezone: + path: /authentication/timezones.:format + method: GET + required_params: + - format + optional_params: + - conditions + - order_fields + - order_direction + - list_limit + - list_offset + update_timezone: + path: /authentication/timezones/:id.:format + method: PUT + required_params: + - id + optional_params: + - label + - name + create_timezone: + path: /authentication/timezones.:format + method: POST + required_params: + - label + - name + delete_timezone: + path: /authentication/timezones/:id.:format + method: DELETE + required_params: + - id + get_product_accounts_from_timezone: + path: /authentication/timezones/:id/product_accounts.:format + method: GET + required_params: + - id + optional_params: + - order_fields + - order_direction + - list_limit + - list_offset diff --git a/plugin/spore/config/spore.0.10.yaml b/plugin/spore/config/spore.0.10.yaml new file mode 100755 index 0000000000000000000000000000000000000000..2ef1f51a4350e7bb0b13ac616dfa2355adadce55 --- /dev/null +++ b/plugin/spore/config/spore.0.10.yaml @@ -0,0 +1,57 @@ +--- +base_url: https://api.projets.weborama.com +version: 0.10 +format: + - json + - xml + - yml +methods: +################################################################### +# media_plan functions +################################################################### + get_media_plan: + path: /media_plan/:id.:format + method: GET + required_params: + - account_id + - id + media_plan_list: + path: /media_plan/list/:format + method: GET + required_params: + - account_id + optional_params: + - status + update_media_plan: + path: /media_plan/:id.:format + method: PUT + required_params: + - account_id + - id + optional_params: + - label + create_media_plan: + path: /media_plan/:format + method: POST + required_params: + - account_id + - label + optional_params: + archive_media_plan: + path: /media_plan/archive/:id.:format + method: PUT + required_params: + - account_id + - id + unarchive_media_plan: + path: /media_plan/unarchive/:id.:format + method: PUT + required_params: + - account_id + - id + delete_media_plan: + path: /media_plan/:id.:format + method: DELETE + required_params: + - account_id + - id diff --git a/plugin/spore/lang/en/local_spore.php b/plugin/spore/lang/en/local_spore.php new file mode 100755 index 0000000000000000000000000000000000000000..d64e5bf58c27953e20ee4727539202de2297894c --- /dev/null +++ b/plugin/spore/lang/en/local_spore.php @@ -0,0 +1,4 @@ +<?php + +$string['pluginname']=' spore libraries'; +$string['privacy:metadata'] = 'The local spore plugin does not store any personal data.'; \ No newline at end of file diff --git a/plugin/spore/src/Dump.php b/plugin/spore/src/Dump.php new file mode 100755 index 0000000000000000000000000000000000000000..a790f9663bd5575ec07a4cf35045b990d69b81dd --- /dev/null +++ b/plugin/spore/src/Dump.php @@ -0,0 +1,224 @@ +<?php + +/** + * This file contains everything related to the Dump Tool. + */ + + +/** + * Dump was designed for the following purpose : having a dump handler that can be useful and forgotten. If your + * dump is accidentally pushed to prod, users won't see it as it won't be displayed. You can use this class to dump any + * variable either in the usual format or in json. The default context used by this tool is 'production', for safety + * reasons. This class wasn't designed to support inheritance : don't make classes inheriting from Dump. + * + * @copyright Weborama + * @author tseillan + * @version 1.0.0 + */ +class Dump +{ + + /* @property array $backtrace The backtrace of the dump. */ + protected $backtrace; + + /* @property string $callLocation A string concatenating the file and the line where the dump occurs. */ + private $callLocation = ''; + + /* @property string $context The environment in which the dump occurs. Production, dev, preprod... */ + private $context = 'production'; + + /* @property Dump $instance Singleton pattern : the instance for the Singleton. */ + private static $instance; + + /** + * Singleton pattern : the constructor has to be private. + * @version 1.0.0 + * @since 1.0.0 + */ + private function __construct() + { + + } + + /** + * Reset Dump properties on each call. Makes sure to keep object eventhough a static context syntax is used for + * calls. + * @version 1.0.0 + * @since 1.0.0 + */ + private function init() + { + + $this -> context = @APPLICATION_ENV ? : $this -> context; + $this -> callLocation = ''; + $this -> backtrace = debug_backtrace (); + + } + + /** + * Singleton pattern : return the instance of the Singleton, creates it if it doesn't exist. + * @version 1.0.0 + * @since 1.0.0 + */ + public function getInstance() + { + + if ( !isset ( self::$instance ) ) { + self::$instance = new Dump (); + } + # Call init method in place of a __construct because the construct is called only once and we might need several Dump Objects. + self::$instance -> init (); + + return self::$instance; + + } + + /* + * Displays the backtrace of the dump... in an ugly, unformatted fashion. + */ + public function getBacktrace() + { + echo "<xmp>"; + print_r( $this -> backtrace ); + echo "</xmp>"; + } + + /** + * Allows commenting on HTML. + * @todo This method isn't finished yet. See if it's really useful. + * @version 1.0.0 + * @since 1.0.0 + */ + static public function comment() + { + + foreach ( func_get_args () as $k => $v ) { + echo '<!--' . $v . '-->'; + } + + } + + /** + * Allows the call of a dump while keeping Object context and Singleton Pattern consistency. You can put as many + * arguments you want to dump. <code><?php Dump::dump( $a_string, $a_boolean, $this );</code> + * @version 1.0.0 + * @since 1.0.0 + */ + static public function dump() + { + + // Exclude a backtrace pattern and perform a dump. + self::getInstance () -> excludeBacktraceEntries ( 'vendor' ) + -> _dump ( func_get_args () ); + return self::getInstance(); + + } + + /** + * Filters backtrace to remove any line that contain an $exlude pattern. + * @param string $exclude + * @return Dump + */ + private function excludeBacktraceEntries( $exclude ) + { + + $this -> backtrace = array_filter( $this -> backtrace, function ( $a ) use ( $exclude ) { + return ( strpos ( $a['file'], $exclude ) == false ); + }); + sort ( $this -> backtrace ); + + return $this; + + } + + + /** + * Get the Location of the call made for the dump. That way you will find the file and the line where a dump is + * called. Ignores naturally everything related to Dump. + * @version 1.0.0 + * @since 1.0.0 + */ + private function getCallLocation() + { + + /* @var \stdClass $directLocation The first location in the backtrace array, usually exactly where your dump was called. */ + $directLocation = (object) array_shift ( $this -> backtrace ); + + $this -> callLocation = $directLocation -> file . ':' . $directLocation -> line; + + return $this -> callLocation; + + } + + + /** + * Allows the call of a json dump while keeping Object context and Singleton Pattern consistency. A json bump on an + * object will only display public properties and methods. <code> <?php Dump::json($aVar); ?> </code> + * @version 1.0.0 + * @since 1.0.0 + */ + static public function json() + { + + self::getInstance () -> excludeBacktraceEntries ( 'Dump' ) + -> _json ( func_get_args () ); + + } + + + /** + * Handles the normal dump. If the detected context is production, the dump won't be displayed. + * @param array $args + * @version 1.0.0 + * @since 1.0.0 + */ + private function _dump( $args ) + { + + if ( $this -> context != 'production' ) { + echo '<p>[' . $this -> context . ']Dump : ' . $this -> getCallLocation () . '</p>'; + foreach ( $args as $k => $v ) { + echo '<p>Argument ' . $k, '</p><xmp>'; + var_dump ( $v ); + echo '</xmp>'; + } + $this -> getBacktrace(); + } + + } + + + /** + * Handle a specific json dump. Won't work if some content has already been sent. Kills any following code. + * @param array $args + * @version 1.0.0 + * @since 1.0.0 + */ + private function _json( $args ) + { + + if ( $this -> context != 'production' ) { + + // Set proper header for application/json. + header ( 'Content-type:application/json' ); + + /* @var \stdClass $rtn Provides an object in which the dump will be stored. */ + $rtn = (object) array( + 'location' => $this -> getCallLocation () + ); + + // Append the variables to dump into the return object. + foreach ( $args as $k => $v ) { + $rtn -> {'argument_' . $k} = (object) array( + 'type' => gettype ( $v ) == 'object' ? get_class ( $v ) : gettype ( $v ), + 'content' => $v + ); + } + + // Return the json encoded object with the variables to dump and kills further execution. + die ( json_encode ( $rtn, JSON_HEX_QUOT ) ); + } + + } + +} \ No newline at end of file diff --git a/plugin/spore/src/Header.php b/plugin/spore/src/Header.php new file mode 100755 index 0000000000000000000000000000000000000000..cfb20501b18c82fec32f4cb79b0ecd4f9decfb6f --- /dev/null +++ b/plugin/spore/src/Header.php @@ -0,0 +1,64 @@ +<?php + +require_once 'RESTHttpClient.php'; +class AddHeader { + protected $_headerName; + protected $_headerValue; + + /** + * Construct the authentication object + * + * @param array $args + */ + public function __construct($args) { + if (isset($args['header_name'])) + $this->setHeaderName($args['header_name']); + else + $this->setHeaderName(''); + + if (isset($args['header_value'])) + $this->setHeaderValue($args['header_value']); + else + $this->setHeaderValue(''); + } + + + /* + * Set header name + */ + + /** + * + * + * @param unknown $headerName + */ + public function setHeaderName($headerName) { + $this->_headerName = $headerName; + } + + + /* + * set header value + */ + + /** + * + * + * @param unknown $headerValue + */ + public function setHeaderValue($headerValue) { + $this->_headerValue = $headerValue; + } + + + /** + * Set the header + * + * @param unknown $spore (reference) + */ + public function execute(&$spore) { + // modify the request headers + $client = RESTHttpClient :: getHttpClient(); + $client->createOrUpdateHeader($this->_headerName, $this->_headerValue); + } +} diff --git a/plugin/spore/src/HttpException.php b/plugin/spore/src/HttpException.php new file mode 100755 index 0000000000000000000000000000000000000000..7ee12d89a1a2dbb240edd6fb9583ea1780c87eda --- /dev/null +++ b/plugin/spore/src/HttpException.php @@ -0,0 +1,11 @@ +<?php + +class HttpException extends Exception{ + const NOT_MODIFIED = 304; + const BAD_REQUEST = 400; + const NOT_FOUND = 404; + const NOT_ALOWED = 405; + const CONFLICT = 409; + const PRECONDITION_FAILED = 412; + const INTERNAL_ERROR = 500; +} \ No newline at end of file diff --git a/plugin/spore/src/HttpMultipleError.php b/plugin/spore/src/HttpMultipleError.php new file mode 100755 index 0000000000000000000000000000000000000000..180e43ebb3058f241ad499fe4867bb90e77e5b53 --- /dev/null +++ b/plugin/spore/src/HttpMultipleError.php @@ -0,0 +1,37 @@ +<?php + +class HttpMultipleError +{ + private $_status = null; + private $_type = null; + private $_url = null; + private $_params = null; + + function __construct($status, $type, $url, $params) + { + $this->_status = $status; + $this->_type = $type; + $this->_url = $url; + $this->_params = $params; + } + + function getStatus() + { + return $this->_status; + } + + function getType() + { + return $this->_type; + } + + function getUrl() + { + return $this->_url; + } + + function getParams() + { + return $this->_params; + } +} \ No newline at end of file diff --git a/plugin/spore/src/MyMiddleware.php b/plugin/spore/src/MyMiddleware.php new file mode 100755 index 0000000000000000000000000000000000000000..e18424f697d5716da4af7158e10bf62a026437ae --- /dev/null +++ b/plugin/spore/src/MyMiddleware.php @@ -0,0 +1,103 @@ +<?php + +class Spore_Middleware_Authentication { + + protected $_authorization; + protected $_signatureString; + protected $_signatureSha1; + + /** + * Construct the authentication object + * + * @param array $args + */ + public function __construct($args) { + if (isset($args['authorization'])) + $this->setAuthorizationKey($args['authorization']); + else + $this->setAuthorizationKey(''); + } + + + /* + * Set authorization key + */ + + /** + * + * + * @param unknown $applicationKey + */ + public function setAuthorizationKey($authorization) { + $this->_authorization = $authorization; + } + + + /** + * Add the authorization into the client's headers + * + * @param unknown $spore (reference) + */ + public function execute(&$spore) { + // set signature string + #$this->setSignatureString($spore); + #$this->_signatureSha1 = sha1($this->_signatureString); + + // modify the request headers + $client = RESTHttpClient :: getHttpClient(); + $client->createOrUpdateHeader('Authorization', $this->_authorization); + $client->createOrUpdateHeader('Signature', $this->_signatureSha1); + } + + + /* + * Generate signature string + */ + + /** + * + * + * @param unknown $spore + */ + public function setSignatureString($spore) { + // add request method and path + $this->_signatureString = strtolower($spore->getRequestMethod()) . $spore->getRequestUrlPath() ; + + // add request params + $string_params = ''; + $params = $spore->getRequestParams(); + if (isset($params) && !empty($params)) { + ksort($params); + foreach ($params as $key => $val) { + $string_params .= "$key=$val"; + } + } + $this->_signatureString .= $string_params; + + // add private key + $this->_signatureString .= $this->_privateKey; + } + + + + /** + * + * + * @return unknown + */ + public function getSignatureString() { + return $this->_signatureString; + } + + /** + * Get the _Http_Client object used for communication + * + * @return _Http_Client + */ + public function getHttpClient() + { + return $this->_httpClient; + } + + +} diff --git a/plugin/spore/src/RESTHttpClient.php b/plugin/spore/src/RESTHttpClient.php new file mode 100755 index 0000000000000000000000000000000000000000..710ac7019d48d40a50fd9f4f196aea80e89d010f --- /dev/null +++ b/plugin/spore/src/RESTHttpClient.php @@ -0,0 +1,432 @@ +<?php + +class RESTHttpClient +{ + private $_host = null; + private $_port = null; + private $_user = null; + private $_baseurl = null; + private $_cookies = array(); + private $_pass = null; + private $_protocol = null; + private $_status = null; + private $_content = null; + + const HTTP = 'http'; + const HTTPS = 'https'; + + private $_connMultiple = false; + + private static $_httpClient = null; + + public static function getHttpClient() { + if(is_null(self::$_httpClient)) { + self::$_httpClient = new RESTHttpClient(); + } + return self::$_httpClient; + } + + public function getStatus() + { + return $this->_status; + } + + public function getContent() + { + return $this->_content; + } + + public function addCookie($cookie) + { + array_push($this->_cookies, $cookie); + return $this->_cookies; + } + /** + * Factory of the class. Lazy connect + * + * @param string $host + * @param integer $port + * @param string $user + * @param string $pass + * @return Http + */ + + + static public function connect($baseurl) + { + self::$_httpClient = new RESTHttpClient($baseurl, false); + return self::$_httpClient; + } + + /** + * + * @return Http + */ + static public function multiConnect() + { + return new self(null, null, null, true); + } + + private $_append = array(); + public function add($http) + { + $this->_append[] = $http; + return $this; + } + + private $_silentMode = false; + /** + * + * @param bool $mode + * @return Http + */ + public function silentMode($mode=true) + { + $this->_silentMode = $mode; + return $this; + } + + + protected function __construct($baseurl, $connMultiple) + { + $this->_connMultiple = $connMultiple; + + $this->_baseurl = $baseurl; + } + + public function setCredentials($user, $pass) + { + $this->_user = $user; + $this->_pass = $pass; + return $this; + } + + const POST = 'POST'; + const GET = 'GET'; + const DELETE = 'DELETE'; + const PUT = 'PUT'; + + private $_requests = array(); + + /** + * @param string $url + * @param array $params + * @return Http + */ + public function put($url, $params=array()) + { + $this->_requests[] = array(self::PUT, $this->_url($url), $params); + return $this; + } + + /** + * @param string $url + * @param array $params + * @return Http + */ + public function post($url, $params=array()) + { + $this->_requests[] = array(self::POST, $this->_url($url), $params); + return $this; + } + + /** + * @param string $url + * @param array $params + * @return Http + */ + public function get($url, $params=array()) + { + $this->_requests[] = array(self::GET, $this->_url($url), $params); + return $this; + } + + /** + * @param string $url + * @param array $params + * @return Http + */ + public function delete($url, $params=array()) + { + $this->_requests[] = array(self::DELETE, $this->_url($url), $params); + return $this; + } + + public function _getRequests() + { + return $this->_requests; + } + + /** + * PUT request + * + * @param string $url + * @param array $params + * @return string + */ + public function doPut($url, $params=array()) + { + return $this->_exec(self::PUT, $this->_url($url), $params); + } + + /** + * POST request + * + * @param string $url + * @param array $params + * @return string + */ + public function doPost($url, $params=array()) + { + return $this->_exec(self::POST, $this->_url($url), $params); + } + + /** + * GET Request + * + * @param string $url + * @param array $params + * @return string + */ + public function doGet($url, $params=array()) + { + return $this->_exec(self::GET, $this->_url($url), $params); + } + + /** + * DELETE Request + * + * @param string $url + * @param array $params + * @return string + */ + public function doDelete($url, $params=array()) + { + return $this->_exec(self::DELETE, $this->_url($url), $params); + } + + private $_headers = array(); + /** + * setHeaders + * + * @param array $headers + * @return Http + */ + public function setHeaders($headers) + { + $this->_headers = $headers; + return $this; + } + + public function addHeader($header, $value) + { + $header_string = "{$header}:{$value}"; + array_push($this->_headers, $header_string); + + return $this->_headers; + } + + public function createOrUpdateHeader($header, $value) + { + $old_headers = $this->_headers; + $headers = array(); + $header_string = "{$header}:{$value}"; + $pattern = '/^'.$header.'/'; + $is_defined_header = 0; + foreach ($old_headers as $old_header_value){ + if (preg_match ($pattern, $old_header_value)){ + array_push($headers, $header_string); + $is_defined_header = 1; + } + else{ + array_push($headers, $old_header_value); + } + } + if ($is_defined_header == 0){ + array_push($headers, $header_string); + } + $this->_headers = $headers; + return $this->_headers; + } + + + public function getHeaders() + { + return $this->_headers; + } + + + /** + * Builds absolute url + * + * @param unknown_type $url + * @return unknown + */ + private function _url($url=null) + { + return $url; + } + + const HTTP_OK = 200; + const HTTP_CREATED = 201; + const HTTP_ACEPTED = 202; + + /** + * Performing the real request + * + * @param string $type + * @param string $url + * @param array $params + * @return string + */ + private function _exec($type, $url, $params = array()) + { + $headers = $this->_headers; + $s = curl_init(); + curl_setopt($s, CURLOPT_CAINFO, dirname(__FILE__)."/cacert.pem"); + + if(!is_null($this->_user)){ + curl_setopt($s, CURLOPT_USERPWD, $this->_user.':'.$this->_pass); + } + switch ($type) { + case self::DELETE: + curl_setopt($s, CURLOPT_URL, $url . '?' . http_build_query($params)); + curl_setopt($s, CURLOPT_CUSTOMREQUEST, self::DELETE); + break; + case self::PUT: + curl_setopt($s, CURLOPT_URL, $url); + curl_setopt($s, CURLOPT_CUSTOMREQUEST, self::PUT); + curl_setopt($s, CURLOPT_POSTFIELDS, $params); + break; + case self::POST: + curl_setopt($s, CURLOPT_URL, $url); + curl_setopt($s, CURLOPT_POST, true); + curl_setopt($s, CURLOPT_POSTFIELDS, $params); + break; + case self::GET: + $query = $params; + if (isset($params) && !empty($params)) { + $query = http_build_query($params); + } + curl_setopt($s, CURLOPT_URL, $url . '?' . $query); + break; + } + + $cookies = join('', $this->_cookies); + + curl_setopt($s, CURLOPT_COOKIE, $cookies); + curl_setopt($s, CURLOPT_RETURNTRANSFER, true); + curl_setopt($s, CURLOPT_HTTPHEADER, $headers); + $_out = curl_exec($s); + $this->_status = curl_getinfo($s, CURLINFO_HTTP_CODE); + curl_close($s); + switch ($this->_status) { + case self::HTTP_OK: + case self::HTTP_CREATED: + case self::HTTP_ACEPTED: + $out = $_out; + break; + default: + $out = $_out; + break; + if (!$this->_silentMode) { + throw new HttpException("http error: {$this->_status}", $this->_status); + } + } + $this->_content = $out; + return $out; + } + + public function run() + { + if ($this->_connMultiple) { + return $this->_runMultiple(); + } else { + return $this->_run(); + } + } + + private function _runMultiple() + { + $out= null; + if (count($this->_append) > 0) { + $arr = array(); + foreach ($this->_append as $_append) { + $arr = array_merge($arr, $_append->_getRequests()); + } + + $this->_requests = $arr; + $out = $this->_run(); + } + return $out; + } + + private function _run() + { + $headers = $this->_headers; + $curly = $result = array(); + + $mh = curl_multi_init(); + foreach ($this->_requests as $id => $reg) { + $curly[$id] = curl_init(); + + $type = $reg[0]; + $url = $reg[1]; + $params = $reg[2]; + + if(!is_null($this->_user)){ + curl_setopt($curly[$id], CURLOPT_USERPWD, $this->_user.':'.$this->_pass); + } + + switch ($type) { + case self::DELETE: + curl_setopt($curly[$id], CURLOPT_URL, $url . '?' . http_build_query($params)); + curl_setopt($curly[$id], CURLOPT_CUSTOMREQUEST, self::DELETE); + break; + case self::PUT: + curl_setopt($curly[$id], CURLOPT_URL, $url); + curl_setopt($curly[$id], CURLOPT_CUSTOMREQUEST, self::PUT); + curl_setopt($curly[$id], CURLOPT_POSTFIELDS, $params); + break; + case self::POST: + curl_setopt($curly[$id], CURLOPT_URL, $url); + curl_setopt($curly[$id], CURLOPT_POST, true); + curl_setopt($curly[$id], CURLOPT_POSTFIELDS, $params); + break; + case self::GET: + curl_setopt($curly[$id], CURLOPT_URL, $url . '?' . http_build_query($params)); + break; + } + curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, true); + curl_setopt($curly[$id], CURLOPT_HTTPHEADER, $headers); + + curl_multi_add_handle($mh, $curly[$id]); + } + + $running = null; + do { + curl_multi_exec($mh, $running); + sleep(0.2); + } while($running > 0); + + foreach($curly as $id => $c) { + $this->_status = curl_getinfo($c, CURLINFO_HTTP_CODE); + switch ($this->_status) { + case self::HTTP_OK: + case self::HTTP_CREATED: + case self::HTTP_ACEPTED: + $result[$id] = curl_multi_getcontent($c); + break; + default: + if (!$this->_silentMode) { + $result[$id] = new HttpMultipleError($this->_status, $type, $url, $params); + } + } + curl_multi_remove_handle($mh, $c); + } + + curl_multi_close($mh); + return $result; + } +} + diff --git a/plugin/spore/src/Spore.php b/plugin/spore/src/Spore.php new file mode 100755 index 0000000000000000000000000000000000000000..5706de9b27f244f29b9061c92b91a2dc42e3d03d --- /dev/null +++ b/plugin/spore/src/Spore.php @@ -0,0 +1,476 @@ +<?php + +require_once 'Spyc.php'; +require_once 'RESTHttpClient.php'; +class Spore_Exception extends Exception { + +} + +class Spore { + + protected $_specs; + protected $_client; + protected $_methods; + protected $_method_spec; + protected $_format; + protected $_host; + protected $_base_url; + protected $_request_path; + protected $_request_url_path; + protected $_request_params; + protected $_request_cookies; + protected $_request_raw_params; + protected $_request_method; + protected $_middlewares; + protected $_httpClient = null; + + protected $_response; + + /** + * Constructor + * + * @param string $username + * @param string $password + * @return void + */ + public function __construct($spec_file = '') { + $this->init($spec_file); + $this->_request_params = array (); + $this->_request_cookies = array(); + $this->_middlewares = array (); + } + + /** + * Initialize Spore with spec file + * + * @return void + */ + public function init( $spec_file = '' ) { + if (empty ($spec_file)) + throw new Spore_Exception('Initialization failed: spec file is not defined.'); + + + if ( ! is_string( $spec_file ) and is_array( $spec_file ) and array_key_exists( 'spore_route_file', $spec_file ) ) + $spec_file = $spec_file['spore_route_file']; + elseif ( ! is_string( $spec_file ) and is_object( $spec_file ) and isset( $spec_file -> spore_route_file ) and strlen( $spec_file -> spore_route_file ) ) + $spec_file = $spec_file -> spore_route_file; + elseif ( is_string ( $spec_file ) and (is_file ( $spec_file ) or FALSE !== parse_url( $spec_file ) ) ) + ; + else + throw new Spore_Exception( "Initialization failed : the configuration file couldn't be found."); + + if ( !is_string ( $spec_file ) ) + throw new Spore_Exception('Initialization failed: Spore needs a file path to initialize.'); + + // load the spec file + $this->_load_spec($spec_file); + + if(substr($this->_specs['base_url'], -1) == "/") { + $this->_specs['base_url']=substr($this->_specs['base_url'], 0, -1); + } + + $this->_init_client($this->_specs['base_url']); + + } + + public function setBaseUrl($base_url) { + $this->_base_url = $base_url; + } + + /** + * Enable middleware + * + * @param unknown_type $middleware + * @param unknown_type $args + */ + public function enable($middleware, $args) { + // create middleware obj + $m = new $middleware ($args); + + // add to middleware array + array_push($this->_middlewares, $m); + } + + /** + * Load spec file + * + * @param string $spec_file + * @return array $specs + */ + protected function _load_spec( $spec_file ) { + // load file and parse/decode + if (preg_match("/\.(json|yaml)$/i", $spec_file, $matches)) { + $spec_format = $matches[1]; + $specs_array = $this->_parse_spec_file($spec_file, $spec_format); + + if (!isset ($specs_array['methods'])) + throw new Spore_Exception('No method has been defined in the spec file: ' . $spec_file); + + // save the specs + $this->_specs = $specs_array; + + } else { + throw new Spore_Exception('Unsupported spec file: ' . $spec_file); + } + + } + + protected function _parse_spec_file($spec_file, $spec_format) { + /* if (file_exists($spec_file)) { */ + switch ($spec_format) { + case 'json' : + // read the spec file + $fp = @fopen($spec_file, 'r'); + + if (!$fp) + throw new Spore_Exception('Unable to open file: ' . $spec_file); + + $specs_text = ''; + while (!feof($fp)) { + $specs_text .= fgets($fp, 1024); + } + fclose($fp); + + // decode the json text + $specs_obj = json_decode($specs_text); + $specs_array = self::object_to_array($specs_obj); + return $specs_array; + break; + + case 'yaml' : + //$specs_array = yaml_parse_file($spec_file); + $specs_array = Spyc::YAMLLoad($spec_file); + return $specs_array; + break; + + default : + throw new Spore_Exception('Unsupported spec file: ' . $spec_file); + } + /* + } else { + throw new Spore_Exception('File not found: ' . $spec_file); + } + */ + } + + /** + * initialize REST Http Client + * + * @param string $spec_file + * @return array $specs + */ + protected function _init_client() { + $base_url = $this->_specs['base_url']; + $this->_base_url = $base_url; + $client = RESTHttpClient :: connect($base_url); + $client->addHeader('Accept-Charset', 'ISO-8859-1,utf-8'); + #TODO: manage exception + $this->_client = $client; + } + + /** + * Method overloading + * + * @param string $method + * @param array $params + * @return object + * @throws Zend_Service_Spore_Exception if unable to find method + */ + public function __call($method, $params) { + // check if method exists + if ( !isset ( $this->_specs['methods'][$method] ) ) { + throw new Spore_Exception('Invalid method "' . $method . '"'); + } + + // create the method on request / on the fly + $this->_exec_method($method, $params); + + return $this->_response; + } + + /** + * Execute a client method + * + * @param object $method + * @return void + */ + protected function _exec_method($method, $params) { + // set method spec + $this->_setMethodSpec($this->_specs['methods'][$method]); + + // set request method + $this->_setRequestMethod($this->_specs['methods'][$method]['method']); + + // prepare the params + $this->_prepareParams($method, $params); + + // prepare the params + $this->_prepareCookies(); + + // execute all middlewares + foreach ($this->_middlewares as $middleware) { + $middleware->execute($this); + } + + // send request + $rest_response = null; + switch (strtoupper($this->_request_method)) { + case 'POST' : + $rest_response = $this->_performSporePost($this->_request_path, $this->_request_raw_params); + break; + case 'PUT' : + $rest_response = $this->_performSporePut($this->_request_path, $this->_request_raw_params); + break; + case 'DELETE' : + $rest_response = $this->_performSporeDelete($this->_request_path, $this->_request_params); + break; + case 'GET' : + $rest_response = $this->_performSporeGet($this->_request_path, $this->_request_params); + break; + + default : + $rest_response = $this->restGet($this->_request_path, $this->_request_params); + } + + // set response + $this->setResponse($rest_response); + + $this->_request_params = array(); + } + + protected function _setMethodSpec($spec) { + $this->_method_spec = $spec; + } + + protected function _setRequestMethod($request_method) { + $this->_request_method = $request_method; + } + + protected function _prepareParams($method, $params) { + // get path + $this->_request_path = $this->_base_url . $this->_specs['methods'][$method]['path']; + $this->_request_url_path = $this->_specs['methods'][$method]['path']; + + // add required params into the path + $required_params = array (); + if (isset ($this->_specs['methods'][$method]['required_params'])) { + foreach ($this->_specs['methods'][$method]['required_params'] as $param) { + if (!isset ($params[0][$param])) + throw new Spore_Exception('Expected parameter "' . $param . '" is not found.'); + + $this->_insertParam($param, $params[0][$param]); + array_push($required_params, $param); + } + } + + // add the rest of the params into the path + if (!(empty($params))) + foreach ($params[0] as $param => $value) { + if (!in_array($param, $required_params)) { + $this->_insertParam($param, $value); + } + } + + // format + $this->_format = (isset ($params[0]['format'])) ? $params[0]['format'] : 'json'; + + // also generate raw params from the request params array + $this->_setRawParams($this->_request_params); + } + + protected function _insertParam($param, $value) { + if ($value != 0 && empty ($value)) + return; + + if (strstr($this->_request_path, ":$param")) { + $this->_request_path = str_replace(":$param", $value, $this->_request_path); + $this->_request_url_path = str_replace(":$param", $value, $this->_request_url_path); + } else { + $this->_request_params[$param] = $value; + } + + } + + protected function _setRawParams($params = array ()) { + $raw_params = ''; + if (isset($params) && !empty($params)) { + foreach ($params as $key => $value) { + $raw_params .= empty ($raw_params) ? '' : '&'; + $raw_params .= "$key=$value"; + } + } + $this->_request_raw_params = $raw_params; + } + + protected function _prepareCookies() { + $cookies = $this->_request_cookies; + $client = RESTHttpClient :: getHttpClient(); + foreach ( $cookies as &$cookie_arrays) { + if (!isset ($cookie_arrays["name"])) { + throw new Spore_Exception('Expected cookie is not found.'); + } else { + $cookie = "{$cookie_arrays['name']}={$cookie_arrays['value']};path={$cookie_arrays['path']};"; + if (!(empty($cookie_arrays['domain']))) + $cookie += "domaine={$cookie_arrays['domain']};"; + if ($cookie_arrays['secure']) + $cookie += "secure;"; + } + $client->addCookie($cookie); + } + } + + /* + * Use our own performPost() for PUT/POST method, since Zend_Rest_Client's restPut() always reset the + * content-type header that we have set before. + */ + protected function _performSporePost( $path, $data = null) { + // set content-type + $content_type = 'application/x-www-form-urlencoded; charset=utf-8'; + $this->_setContentType($content_type); + + $client = RESTHttpClient :: getHttpClient(); + return $client->doPost($path, $data); + } + protected function _performSporePut( $path, $data = null) { + // set content-type + $content_type = 'application/x-www-form-urlencoded; charset=utf-8'; + $this->_setContentType($content_type); + + $client = RESTHttpClient :: getHttpClient(); + return $client->doPut($path, $data); + } + protected function _performSporeGet($path, $data = null) { + $content_type = 'application/x-www-form-urlencoded; charset=utf-8'; + $this->_setContentType($content_type); + + $client = RESTHttpClient :: getHttpClient(); + return $client->doGet($path, $data); + } + + /* + * Use our own performDelete() for DELETE method, since restDelete() doesn't have any $data parameter + */ + protected function _performSporeDelete($path, array $data = null) { + // set content-type + $content_type = 'application/x-www-form-urlencoded; charset=utf-8'; + $this->_setContentType($content_type); + + $client = RESTHttpClient :: getHttpClient(); + return $client->doDelete($path, $data); + } + + /** + * Return the result as an object + */ + public function setResponse($rest_response) { + $client = RESTHttpClient :: getHttpClient(); + if (!isset($this->_response)) { + $this->_response = new stdClass(); + } + $this->_response->status = $client->getStatus(); + $this->_response->headers = $client->getHeaders(); + $this->_response->body = $this->_parseBody($client->getContent()); + + } + + private function _parseBody($body) { + switch (strtolower($this->_format)) { + case 'xml' : + return "TODO : parse xml response"; + case 'json' : + return json_decode($body); + case 'yml' : + default : + return $body; + } + } + + /* + * Set the Content-Type header + */ + private function _setContentType($content_type) { + $client = RESTHttpClient :: getHttpClient(); + $client->createOrUpdateHeader('Content-Type', $content_type); + } + + /** + * Return the specification array. + * + * @return array $specs + */ + public function getSpecs() { + return $this->_specs; + } + + /** + * Return available methods in the spec file. + * + * @return array $methods + */ + public function getMethods() { + if (isset ($this->_methods)) + return $this->_methods; + + $methods = array (); + foreach ($this->_specs['methods'] as $method => $param) { + array_push($methods, $method); + } + $this->_methods = $methods; + return $methods; + } + + public function getFormat() { + return $this->_format; + } + + public function getMethodSpec() { + return $this->_method_spec; + } + + public function getRequestPath() { + return $this->_request_path; + } + public function getRequestUrlPath() { + return $this->_request_url_path; + } + + public function getRequestParams() { + return $this->_request_params; + } + + public function getRequestMethod() { + return $this->_request_method; + } + + public function getMiddlewares() { + return $this->_middlewares; + } + + public function setCookie($name, $value, $path = "/", $domain = "", $secure = false) { + $cookie_array = array("name" => $name, + "value" => $value, + "path" => $path, + "domain" => $domain, + "secure" => $secure); + $this->_request_cookies[$name] = $cookie_array; + } + + /* + * recurcive function + * object to array get an object and return an array + * + * input: $object (object, array, string) + * output: $array (string, array) + */ + static private function object_to_array($object) { + if (is_array($object) || is_object($object)) { + $array = array(); + foreach ($object as $key => $value) { + $array[$key] = self::object_to_array($value); + } + return $array; + } + return (string)$object; + } + +} diff --git a/plugin/spore/src/Spore/test/github.json b/plugin/spore/src/Spore/test/github.json new file mode 100755 index 0000000000000000000000000000000000000000..fc84f074b8e39888b3d33be517adfe76683caba1 --- /dev/null +++ b/plugin/spore/src/Spore/test/github.json @@ -0,0 +1,185 @@ +{ + "base_url" : "http://github.com/api/v2/", + "version" : "0.2", + "methods" : { + "follow" : { + "required_params" : [ + "user", + "format" + ], + "path" : "/:format/user/follow/:user", + "method" : "POST", + "authentication" : true + }, + "user_search" : { + "required_params" : [ + "format", + "search" + ], + "path" : "/:format/user/search/:search", + "method" : "GET" + }, + "unfollow" : { + "required_params" : [ + "user", + "format" + ], + "path" : "/:format/user/unfollow/:user", + "method" : "POST", + "authentication" : true + }, + "unwatch_repo" : { + "required_params" : [ + "format", + "user", + "repo" + ], + "path" : "/:format/repos/unwatch/:user/:repo", + "method" : "GET", + "authentication" : true + }, + "user_information" : { + "required_params" : [ + "username", + "format" + ], + "path" : "/:format/user/show/:username", + "method" : "GET" + }, + "list_public_keys" : { + "required_params" : [ + "format" + ], + "path" : "/:format/user/keys", + "method" : "GET", + "authentication" : true + }, + "repos_info" : { + "required_params" : [ + "format", + "user", + "repo" + ], + "path" : "/:format/repos/:user/:repo", + "method" : "GET" + }, + "add_public_key" : { + "required_params" : [ + "format" + ], + "path" : "/:format/user/key/add", + "method" : "POST", + "authentication" : true + }, + "fork_repos" : { + "required_params" : [ + "format", + "user", + "repo" + ], + "path" : "/:format/repos/fork/:user/:repo", + "method" : "GET", + "authentication" : true + }, + "my_information" : { + "required_params" : [ + "username", + "format" + ], + "path" : "/:format/user/show/:username", + "method" : "GET", + "authentication" : true + }, + "list_all_repos" : { + "required_params" : [ + "format", + "user", + "repo" + ], + "path" : "/:format/repos/show/:user", + "method" : "GET" + }, + "repos_search" : { + "required_params" : [ + "format", + "q" + ], + "path" : "/:format/repos/search/:q", + "method" : "GET" + }, + "update_profile" : { + "required_params" : [ + "username", + "format" + ], + "path" : "/:format/user/show/:username", + "method" : "POST", + "authentication" : true + }, + "watch_repo" : { + "required_params" : [ + "format", + "user", + "repo" + ], + "path" : "/:format/repos/watch/:user/:repo", + "method" : "GET", + "authentication" : true + }, + "create_repo" : { + "required_params" : [ + "format" + ], + "path" : "/:format/repos/create", + "method" : "POST", + "authentication" : true + }, + "user_following" : { + "required_params" : [ + "user", + "format" + ], + "path" : "/:format/user/show/:user/following", + "method" : "GET" + }, + "set_repo_info" : { + "required_params" : [ + "format", + "user", + "repo" + ], + "path" : "/:format/repos/show/:user/:repo", + "method" : "POST", + "authentication" : true + }, + "watched_repos" : { + "required_params" : [ + "format", + "user" + ], + "path" : "/:format/user/watched/:user", + "method" : "GET" + }, + "user_followers" : { + "required_params" : [ + "user", + "format" + ], + "path" : "/:format/user/show/:user/followers", + "method" : "GET" + }, + "del_public_key" : { + "required_params" : [ + "format" + ], + "path" : "/:format/user/key/remove", + "method" : "POST", + "authentication" : true + } + }, + "name" : "GitHub", + "authority" : "GITHUB:franckcuny", + "meta" : { + "documentation" : "http://develop.github.com/" + } +} diff --git a/plugin/spore/src/SporeException.php b/plugin/spore/src/SporeException.php new file mode 100755 index 0000000000000000000000000000000000000000..b2cd689775be430cc7227fce13bfab2a179cdba5 --- /dev/null +++ b/plugin/spore/src/SporeException.php @@ -0,0 +1,5 @@ +<?php + +class SporeException extends Exception { + +} \ No newline at end of file diff --git a/plugin/spore/src/SporeMiddleware.php b/plugin/spore/src/SporeMiddleware.php new file mode 100755 index 0000000000000000000000000000000000000000..7d2b332c8a87a83fd3a9748ce2474f603d856172 --- /dev/null +++ b/plugin/spore/src/SporeMiddleware.php @@ -0,0 +1,142 @@ +<?php + +class Spore_Middleware_Weborama_Authentication { + + protected $_applicationKey; + protected $_privateKey; + protected $_signatureString; + protected $_signatureSha1; + protected $_userEmail; + + + + /** + * Construct the authentication object + * + * @param array $args + */ + public function __construct($args) { + if (isset($args['application_key'])) + $this->setApplicationKey($args['application_key']); + else + $this->setApplicationKey(''); + + if (isset($args['private_key'])) + $this->setPrivateKey($args['private_key']); + else + $this->setPrivateKey(''); + + if (isset($args['user_email'])) + $this->setUserEmail($args['user_email']); + else + $this->setUserEmail(''); + } + + + /* + * Set application key + */ + + /** + * + * + * @param unknown $applicationKey + */ + public function setApplicationKey($applicationKey) { + $this->_applicationKey = $applicationKey; + } + + + /* + * set private key + */ + + /** + * + * + * @param unknown $privateKey + */ + public function setPrivateKey($privateKey) { + $this->_privateKey = $privateKey; + } + + /** + * + * + * @param unknown $privateKey + */ + public function setUserEmail($userEmail) { + $this->_userEmail = $userEmail; + } + + + + /** + * Add the application_key and private_key into the client's headers + * + * @param unknown $spore (reference) + */ + public function execute(&$spore) { + // set signature string + $this->setSignatureString($spore); + $this->_signatureSha1 = sha1($this->_signatureString); + + // modify the request headers + $client = RESTHttpClient :: getHttpClient(); + $client->createOrUpdateHeader('X-Weborama-AppKey', $this->_applicationKey); + $client->createOrUpdateHeader('X-Weborama-Signature', $this->_signatureSha1); + $client->createOrUpdateHeader('X-Weborama-User-Email', $this->_userEmail); + } + + + /* + * Generate signature string + */ + + /** + * + * + * @param unknown $spore + */ + public function setSignatureString($spore) { + // add request method and path + $this->_signatureString = strtolower($spore->getRequestMethod()) . $spore->getRequestUrlPath() ; + + // add request params + $string_params = ''; + $params = $spore->getRequestParams(); + if (isset($params) && !empty($params)) { + ksort($params); + foreach ($params as $key => $val) { + $string_params .= "$key=$val"; + } + } + $this->_signatureString .= $string_params; + + // add private key + $this->_signatureString .= $this->_privateKey; + } + + + + /** + * + * + * @return unknown + */ + public function getSignatureString() { + return $this->_signatureString; + } + + /** + * Get the _Http_Client object used for communication + * + * @return _Http_Client + */ + public function getHttpClient() + { + return $this->_httpClient; + } + + +} diff --git a/plugin/spore/src/Spyc.php b/plugin/spore/src/Spyc.php new file mode 100755 index 0000000000000000000000000000000000000000..ad702ffdbb2e547ab19a6a8182034db15b7bfc1a --- /dev/null +++ b/plugin/spore/src/Spyc.php @@ -0,0 +1,1145 @@ +<?php +/** + * Spyc -- A Simple PHP YAML Class + * @version 0.5.1 + * @author Vlad Andersen <vlad.andersen@gmail.com> + * @author Chris Wanstrath <chris@ozmm.org> + * @link http://code.google.com/p/spyc/ + * @copyright Copyright 2005-2006 Chris Wanstrath, 2006-2011 Vlad Andersen + * @license http://www.opensource.org/licenses/mit-license.php MIT License + * @package Spyc + */ + +if (!function_exists('spyc_load')) { + /** + * Parses YAML to array. + * @param string $string YAML string. + * @return array + */ + function spyc_load ($string) { + return Spyc::YAMLLoadString($string); + } +} + +if (!function_exists('spyc_load_file')) { + /** + * Parses YAML to array. + * @param string $file Path to YAML file. + * @return array + */ + function spyc_load_file ($file) { + return Spyc::YAMLLoad($file); + } +} + +if (!function_exists('spyc_dump')) { + /** + * Dumps array to YAML. + * @param array $data Array. + * @return string + */ + function spyc_dump ($data) { + return Spyc::YAMLDump($data, false, false, true); + } +} + +/** + * The Simple PHP YAML Class. + * + * This class can be used to read a YAML file and convert its contents + * into a PHP array. It currently supports a very limited subsection of + * the YAML spec. + * + * Usage: + * <code> + * $Spyc = new Spyc; + * $array = $Spyc->load($file); + * </code> + * or: + * <code> + * $array = Spyc::YAMLLoad($file); + * </code> + * or: + * <code> + * $array = spyc_load_file($file); + * </code> + * @package Spyc + */ +class Spyc { + + // SETTINGS + + const REMPTY = "\0\0\0\0\0"; + + /** + * Setting this to true will force YAMLDump to enclose any string value in + * quotes. False by default. + * + * @var bool + */ + public $setting_dump_force_quotes = false; + + /** + * Setting this to true will forse YAMLLoad to use syck_load function when + * possible. False by default. + * @var bool + */ + public $setting_use_syck_is_possible = false; + + + + /**#@+ + * @access private + * @var mixed + */ + private $_dumpIndent; + private $_dumpWordWrap; + private $_containsGroupAnchor = false; + private $_containsGroupAlias = false; + private $path; + private $result; + private $LiteralPlaceHolder = '___YAML_Literal_Block___'; + private $SavedGroups = array(); + private $indent; + /** + * Path modifier that should be applied after adding current element. + * @var array + */ + private $delayedPath = array(); + + /**#@+ + * @access public + * @var mixed + */ + public $_nodeId; + +/** + * Load a valid YAML string to Spyc. + * @param string $input + * @return array + */ + public function load ($input) { + return $this->__loadString($input); + } + + /** + * Load a valid YAML file to Spyc. + * @param string $file + * @return array + */ + public function loadFile ($file) { + return $this->__load($file); + } + + /** + * Load YAML into a PHP array statically + * + * The load method, when supplied with a YAML stream (string or file), + * will do its best to convert YAML in a file into a PHP array. Pretty + * simple. + * Usage: + * <code> + * $array = Spyc::YAMLLoad('lucky.yaml'); + * print_r($array); + * </code> + * @access public + * @return array + * @param string $input Path of YAML file or string containing YAML + */ + public static function YAMLLoad($input) { + $Spyc = new Spyc; + return $Spyc->__load($input); + } + + /** + * Load a string of YAML into a PHP array statically + * + * The load method, when supplied with a YAML string, will do its best + * to convert YAML in a string into a PHP array. Pretty simple. + * + * Note: use this function if you don't want files from the file system + * loaded and processed as YAML. This is of interest to people concerned + * about security whose input is from a string. + * + * Usage: + * <code> + * $array = Spyc::YAMLLoadString("---\n0: hello world\n"); + * print_r($array); + * </code> + * @access public + * @return array + * @param string $input String containing YAML + */ + public static function YAMLLoadString($input) { + $Spyc = new Spyc; + return $Spyc->__loadString($input); + } + + /** + * Dump YAML from PHP array statically + * + * The dump method, when supplied with an array, will do its best + * to convert the array into friendly YAML. Pretty simple. Feel free to + * save the returned string as nothing.yaml and pass it around. + * + * Oh, and you can decide how big the indent is and what the wordwrap + * for folding is. Pretty cool -- just pass in 'false' for either if + * you want to use the default. + * + * Indent's default is 2 spaces, wordwrap's default is 40 characters. And + * you can turn off wordwrap by passing in 0. + * + * @access public + * @return string + * @param array $array PHP array + * @param int $indent Pass in false to use the default, which is 2 + * @param int $wordwrap Pass in 0 for no wordwrap, false for default (40) + * @param int $no_opening_dashes Do not start YAML file with "---\n" + */ + public static function YAMLDump($array, $indent = false, $wordwrap = false, $no_opening_dashes = false) { + $spyc = new Spyc; + return $spyc->dump($array, $indent, $wordwrap, $no_opening_dashes); + } + + + /** + * Dump PHP array to YAML + * + * The dump method, when supplied with an array, will do its best + * to convert the array into friendly YAML. Pretty simple. Feel free to + * save the returned string as tasteful.yaml and pass it around. + * + * Oh, and you can decide how big the indent is and what the wordwrap + * for folding is. Pretty cool -- just pass in 'false' for either if + * you want to use the default. + * + * Indent's default is 2 spaces, wordwrap's default is 40 characters. And + * you can turn off wordwrap by passing in 0. + * + * @access public + * @return string + * @param array $array PHP array + * @param int $indent Pass in false to use the default, which is 2 + * @param int $wordwrap Pass in 0 for no wordwrap, false for default (40) + */ + public function dump($array,$indent = false,$wordwrap = false, $no_opening_dashes = false) { + // Dumps to some very clean YAML. We'll have to add some more features + // and options soon. And better support for folding. + + // New features and options. + if ($indent === false or !is_numeric($indent)) { + $this->_dumpIndent = 2; + } else { + $this->_dumpIndent = $indent; + } + + if ($wordwrap === false or !is_numeric($wordwrap)) { + $this->_dumpWordWrap = 40; + } else { + $this->_dumpWordWrap = $wordwrap; + } + + // New YAML document + $string = ""; + if (!$no_opening_dashes) $string = "---\n"; + + // Start at the base of the array and move through it. + if ($array) { + $array = (array)$array; + $previous_key = -1; + foreach ($array as $key => $value) { + if (!isset($first_key)) $first_key = $key; + $string .= $this->_yamlize($key,$value,0,$previous_key, $first_key, $array); + $previous_key = $key; + } + } + return $string; + } + + /** + * Attempts to convert a key / value array item to YAML + * @access private + * @return string + * @param $key The name of the key + * @param $value The value of the item + * @param $indent The indent of the current node + */ + private function _yamlize($key,$value,$indent, $previous_key = -1, $first_key = 0, $source_array = null) { + if (is_array($value)) { + if (empty ($value)) + return $this->_dumpNode($key, array(), $indent, $previous_key, $first_key, $source_array); + // It has children. What to do? + // Make it the right kind of item + $string = $this->_dumpNode($key, self::REMPTY, $indent, $previous_key, $first_key, $source_array); + // Add the indent + $indent += $this->_dumpIndent; + // Yamlize the array + $string .= $this->_yamlizeArray($value,$indent); + } elseif (!is_array($value)) { + // It doesn't have children. Yip. + $string = $this->_dumpNode($key, $value, $indent, $previous_key, $first_key, $source_array); + } + return $string; + } + + /** + * Attempts to convert an array to YAML + * @access private + * @return string + * @param $array The array you want to convert + * @param $indent The indent of the current level + */ + private function _yamlizeArray($array,$indent) { + if (is_array($array)) { + $string = ''; + $previous_key = -1; + foreach ($array as $key => $value) { + if (!isset($first_key)) $first_key = $key; + $string .= $this->_yamlize($key, $value, $indent, $previous_key, $first_key, $array); + $previous_key = $key; + } + return $string; + } else { + return false; + } + } + + /** + * Returns YAML from a key and a value + * @access private + * @return string + * @param $key The name of the key + * @param $value The value of the item + * @param $indent The indent of the current node + */ + private function _dumpNode($key, $value, $indent, $previous_key = -1, $first_key = 0, $source_array = null) { + // do some folding here, for blocks + if (is_string ($value) && ((strpos($value,"\n") !== false || strpos($value,": ") !== false || strpos($value,"- ") !== false || + strpos($value,"*") !== false || strpos($value,"#") !== false || strpos($value,"<") !== false || strpos($value,">") !== false || strpos ($value, ' ') !== false || + strpos($value,"[") !== false || strpos($value,"]") !== false || strpos($value,"{") !== false || strpos($value,"}") !== false) || strpos($value,"&") !== false || strpos($value, "'") !== false || strpos($value, "!") === 0 || + substr ($value, -1, 1) == ':') + ) { + $value = $this->_doLiteralBlock($value,$indent); + } else { + $value = $this->_doFolding($value,$indent); + } + + if ($value === array()) $value = '[ ]'; + if ($value === "") $value = '""'; + if (self::isTranslationWord($value)) { + $value = $this->_doLiteralBlock($value, $indent); + } + if (trim ($value) != $value) + $value = $this->_doLiteralBlock($value,$indent); + + if (is_bool($value)) { + $value = $value ? "true" : "false"; + } + + if ($value === null) $value = 'null'; + if ($value === "'" . self::REMPTY . "'") $value = null; + + $spaces = str_repeat(' ',$indent); + + //if (is_int($key) && $key - 1 == $previous_key && $first_key===0) { + if (is_array ($source_array) && array_keys($source_array) === range(0, count($source_array) - 1)) { + // It's a sequence + $string = $spaces.'- '.$value."\n"; + } else { + // if ($first_key===0) throw new Exception('Keys are all screwy. The first one was zero, now it\'s "'. $key .'"'); + // It's mapped + if (strpos($key, ":") !== false || strpos($key, "#") !== false) { $key = '"' . $key . '"'; } + $string = rtrim ($spaces.$key.': '.$value)."\n"; + } + return $string; + } + + /** + * Creates a literal block for dumping + * @access private + * @return string + * @param $value + * @param $indent int The value of the indent + */ + private function _doLiteralBlock($value,$indent) { + if ($value === "\n") return '\n'; + if (strpos($value, "\n") === false && strpos($value, "'") === false) { + return sprintf ("'%s'", $value); + } + if (strpos($value, "\n") === false && strpos($value, '"') === false) { + return sprintf ('"%s"', $value); + } + $exploded = explode("\n",$value); + $newValue = '|'; + $indent += $this->_dumpIndent; + $spaces = str_repeat(' ',$indent); + foreach ($exploded as $line) { + $newValue .= "\n" . $spaces . ($line); + } + return $newValue; + } + + /** + * Folds a string of text, if necessary + * @access private + * @return string + * @param $value The string you wish to fold + */ + private function _doFolding($value,$indent) { + // Don't do anything if wordwrap is set to 0 + + if ($this->_dumpWordWrap !== 0 && is_string ($value) && strlen($value) > $this->_dumpWordWrap) { + $indent += $this->_dumpIndent; + $indent = str_repeat(' ',$indent); + $wrapped = wordwrap($value,$this->_dumpWordWrap,"\n$indent"); + $value = ">\n".$indent.$wrapped; + } else { + if ($this->setting_dump_force_quotes && is_string ($value) && $value !== self::REMPTY) + $value = '"' . $value . '"'; + if (is_numeric($value) && is_string($value)) + $value = '"' . $value . '"'; + } + + + return $value; + } + + private function isTrueWord($value) { + $words = self::getTranslations(array('true', 'on', 'yes', 'y')); + return in_array($value, $words, true); + } + + private function isFalseWord($value) { + $words = self::getTranslations(array('false', 'off', 'no', 'n')); + return in_array($value, $words, true); + } + + private function isNullWord($value) { + $words = self::getTranslations(array('null', '~')); + return in_array($value, $words, true); + } + + private function isTranslationWord($value) { + return ( + self::isTrueWord($value) || + self::isFalseWord($value) || + self::isNullWord($value) + ); + } + + /** + * Coerce a string into a native type + * Reference: http://yaml.org/type/bool.html + * TODO: Use only words from the YAML spec. + * @access private + * @param $value The value to coerce + */ + private function coerceValue(&$value) { + if (self::isTrueWord($value)) { + $value = true; + } else if (self::isFalseWord($value)) { + $value = false; + } else if (self::isNullWord($value)) { + $value = null; + } + } + + /** + * Given a set of words, perform the appropriate translations on them to + * match the YAML 1.1 specification for type coercing. + * @param $words The words to translate + * @access private + */ + private static function getTranslations(array $words) { + $result = array(); + foreach ($words as $i) { + $result = array_merge($result, array(ucfirst($i), strtoupper($i), strtolower($i))); + } + return $result; + } + +// LOADING FUNCTIONS + + private function __load($input) { + $Source = $this->loadFromSource($input); + return $this->loadWithSource($Source); + } + + private function __loadString($input) { + $Source = $this->loadFromString($input); + return $this->loadWithSource($Source); + } + + private function loadWithSource($Source) { + if (empty ($Source)) return array(); + if ($this->setting_use_syck_is_possible && function_exists ('syck_load')) { + $array = syck_load (implode ("\n", $Source)); + return is_array($array) ? $array : array(); + } + + $this->path = array(); + $this->result = array(); + + $cnt = count($Source); + for ($i = 0; $i < $cnt; $i++) { + $line = $Source[$i]; + + $this->indent = strlen($line) - strlen(ltrim($line)); + $tempPath = $this->getParentPathByIndent($this->indent); + $line = self::stripIndent($line, $this->indent); + if (self::isComment($line)) continue; + if (self::isEmpty($line)) continue; + $this->path = $tempPath; + + $literalBlockStyle = self::startsLiteralBlock($line); + if ($literalBlockStyle) { + $line = rtrim ($line, $literalBlockStyle . " \n"); + $literalBlock = ''; + $line .= ' '.$this->LiteralPlaceHolder; + $literal_block_indent = strlen($Source[$i+1]) - strlen(ltrim($Source[$i+1])); + while (++$i < $cnt && $this->literalBlockContinues($Source[$i], $this->indent)) { + $literalBlock = $this->addLiteralLine($literalBlock, $Source[$i], $literalBlockStyle, $literal_block_indent); + } + $i--; + } + + // Strip out comments + if (strpos ($line, '#')) { + $line = preg_replace('/\s*#([^"\']+)$/','',$line); + } + + while (++$i < $cnt && self::greedilyNeedNextLine($line)) { + $line = rtrim ($line, " \n\t\r") . ' ' . ltrim ($Source[$i], " \t"); + } + $i--; + + $lineArray = $this->_parseLine($line); + + if ($literalBlockStyle) + $lineArray = $this->revertLiteralPlaceHolder ($lineArray, $literalBlock); + + $this->addArray($lineArray, $this->indent); + + foreach ($this->delayedPath as $indent => $delayedPath) + $this->path[$indent] = $delayedPath; + + $this->delayedPath = array(); + + } + return $this->result; + } + + private function loadFromSource ($input) { + if (!empty($input) && strpos($input, "\n") === false && file_exists($input)) + $input = file_get_contents($input); + + return $this->loadFromString($input); + } + + private function loadFromString ($input) { + $lines = explode("\n",$input); + foreach ($lines as $k => $_) { + $lines[$k] = rtrim ($_, "\r"); + } + return $lines; + } + + /** + * Parses YAML code and returns an array for a node + * @access private + * @return array + * @param string $line A line from the YAML file + */ + private function _parseLine($line) { + if (!$line) return array(); + $line = trim($line); + if (!$line) return array(); + + $array = array(); + + $group = $this->nodeContainsGroup($line); + if ($group) { + $this->addGroup($line, $group); + $line = $this->stripGroup ($line, $group); + } + + if ($this->startsMappedSequence($line)) + return $this->returnMappedSequence($line); + + if ($this->startsMappedValue($line)) + return $this->returnMappedValue($line); + + if ($this->isArrayElement($line)) + return $this->returnArrayElement($line); + + if ($this->isPlainArray($line)) + return $this->returnPlainArray($line); + + + return $this->returnKeyValuePair($line); + + } + + /** + * Finds the type of the passed value, returns the value as the new type. + * @access private + * @param string $value + * @return mixed + */ + private function _toType($value) { + if ($value === '') return ""; + $first_character = $value[0]; + $last_character = substr($value, -1, 1); + + $is_quoted = false; + do { + if (!$value) break; + if ($first_character != '"' && $first_character != "'") break; + if ($last_character != '"' && $last_character != "'") break; + $is_quoted = true; + } while (0); + + if ($is_quoted) { + $value = str_replace('\n', "\n", $value); + return strtr(substr ($value, 1, -1), array ('\\"' => '"', '\'\'' => '\'', '\\\'' => '\'')); + } + + if (strpos($value, ' #') !== false && !$is_quoted) + $value = preg_replace('/\s+#(.+)$/','',$value); + + if ($first_character == '[' && $last_character == ']') { + // Take out strings sequences and mappings + $innerValue = trim(substr ($value, 1, -1)); + if ($innerValue === '') return array(); + $explode = $this->_inlineEscape($innerValue); + // Propagate value array + $value = array(); + foreach ($explode as $v) { + $value[] = $this->_toType($v); + } + return $value; + } + + if (strpos($value,': ')!==false && $first_character != '{') { + $array = explode(': ',$value); + $key = trim($array[0]); + array_shift($array); + $value = trim(implode(': ',$array)); + $value = $this->_toType($value); + return array($key => $value); + } + + if ($first_character == '{' && $last_character == '}') { + $innerValue = trim(substr ($value, 1, -1)); + if ($innerValue === '') return array(); + // Inline Mapping + // Take out strings sequences and mappings + $explode = $this->_inlineEscape($innerValue); + // Propagate value array + $array = array(); + foreach ($explode as $v) { + $SubArr = $this->_toType($v); + if (empty($SubArr)) continue; + if (is_array ($SubArr)) { + $array[key($SubArr)] = $SubArr[key($SubArr)]; continue; + } + $array[] = $SubArr; + } + return $array; + } + + if ($value == 'null' || $value == 'NULL' || $value == 'Null' || $value == '' || $value == '~') { + return null; + } + + if ( is_numeric($value) && preg_match ('/^(-|)[1-9]+[0-9]*$/', $value) ){ + $intvalue = (int)$value; + if ($intvalue != PHP_INT_MAX) + $value = $intvalue; + return $value; + } + + $this->coerceValue($value); + + if (is_numeric($value)) { + if ($value === '0') return 0; + if (rtrim ($value, 0) === $value) + $value = (float)$value; + return $value; + } + + return $value; + } + + /** + * Used in inlines to check for more inlines or quoted strings + * @access private + * @return array + */ + private function _inlineEscape($inline) { + // There's gotta be a cleaner way to do this... + // While pure sequences seem to be nesting just fine, + // pure mappings and mappings with sequences inside can't go very + // deep. This needs to be fixed. + + $seqs = array(); + $maps = array(); + $saved_strings = array(); + $saved_empties = array(); + + // Check for empty strings + $regex = '/("")|(\'\')/'; + if (preg_match_all($regex,$inline,$strings)) { + $saved_empties = $strings[0]; + $inline = preg_replace($regex,'YAMLEmpty',$inline); + } + unset($regex); + + // Check for strings + $regex = '/(?:(")|(?:\'))((?(1)[^"]+|[^\']+))(?(1)"|\')/'; + if (preg_match_all($regex,$inline,$strings)) { + $saved_strings = $strings[0]; + $inline = preg_replace($regex,'YAMLString',$inline); + } + unset($regex); + + // echo $inline; + + $i = 0; + do { + + // Check for sequences + while (preg_match('/\[([^{}\[\]]+)\]/U',$inline,$matchseqs)) { + $seqs[] = $matchseqs[0]; + $inline = preg_replace('/\[([^{}\[\]]+)\]/U', ('YAMLSeq' . (count($seqs) - 1) . 's'), $inline, 1); + } + + // Check for mappings + while (preg_match('/{([^\[\]{}]+)}/U',$inline,$matchmaps)) { + $maps[] = $matchmaps[0]; + $inline = preg_replace('/{([^\[\]{}]+)}/U', ('YAMLMap' . (count($maps) - 1) . 's'), $inline, 1); + } + + if ($i++ >= 10) break; + + } while (strpos ($inline, '[') !== false || strpos ($inline, '{') !== false); + + $explode = explode(',',$inline); + $explode = array_map('trim', $explode); + $stringi = 0; $i = 0; + + while (1) { + + // Re-add the sequences + if (!empty($seqs)) { + foreach ($explode as $key => $value) { + if (strpos($value,'YAMLSeq') !== false) { + foreach ($seqs as $seqk => $seq) { + $explode[$key] = str_replace(('YAMLSeq'.$seqk.'s'),$seq,$value); + $value = $explode[$key]; + } + } + } + } + + // Re-add the mappings + if (!empty($maps)) { + foreach ($explode as $key => $value) { + if (strpos($value,'YAMLMap') !== false) { + foreach ($maps as $mapk => $map) { + $explode[$key] = str_replace(('YAMLMap'.$mapk.'s'), $map, $value); + $value = $explode[$key]; + } + } + } + } + + + // Re-add the strings + if (!empty($saved_strings)) { + foreach ($explode as $key => $value) { + while (strpos($value,'YAMLString') !== false) { + $explode[$key] = preg_replace('/YAMLString/',$saved_strings[$stringi],$value, 1); + unset($saved_strings[$stringi]); + ++$stringi; + $value = $explode[$key]; + } + } + } + + + // Re-add the empties + if (!empty($saved_empties)) { + foreach ($explode as $key => $value) { + while (strpos($value,'YAMLEmpty') !== false) { + $explode[$key] = preg_replace('/YAMLEmpty/', '', $value, 1); + $value = $explode[$key]; + } + } + } + + $finished = true; + foreach ($explode as $key => $value) { + if (strpos($value,'YAMLSeq') !== false) { + $finished = false; break; + } + if (strpos($value,'YAMLMap') !== false) { + $finished = false; break; + } + if (strpos($value,'YAMLString') !== false) { + $finished = false; break; + } + if (strpos($value,'YAMLEmpty') !== false) { + $finished = false; break; + } + } + if ($finished) break; + + $i++; + if ($i > 10) + break; // Prevent infinite loops. + } + + + return $explode; + } + + private function literalBlockContinues ($line, $lineIndent) { + if (!trim($line)) return true; + if (strlen($line) - strlen(ltrim($line)) > $lineIndent) return true; + return false; + } + + private function referenceContentsByAlias ($alias) { + do { + if (!isset($this->SavedGroups[$alias])) { echo "Bad group name: $alias."; break; } + $groupPath = $this->SavedGroups[$alias]; + $value = $this->result; + foreach ($groupPath as $k) { + $value = $value[$k]; + } + } while (false); + return $value; + } + + private function addArrayInline ($array, $indent) { + $CommonGroupPath = $this->path; + if (empty ($array)) return false; + + foreach ($array as $k => $_) { + $this->addArray(array($k => $_), $indent); + $this->path = $CommonGroupPath; + } + return true; + } + + private function addArray ($incoming_data, $incoming_indent) { + + // print_r ($incoming_data); + + if (count ($incoming_data) > 1) + return $this->addArrayInline ($incoming_data, $incoming_indent); + + $key = key ($incoming_data); + $value = isset($incoming_data[$key]) ? $incoming_data[$key] : null; + if ($key === '__!YAMLZero') $key = '0'; + + if ($incoming_indent == 0 && !$this->_containsGroupAlias && !$this->_containsGroupAnchor) { // Shortcut for root-level values. + if ($key || $key === '' || $key === '0') { + $this->result[$key] = $value; + } else { + $this->result[] = $value; end ($this->result); $key = key ($this->result); + } + $this->path[$incoming_indent] = $key; + return; + } + + + + $history = array(); + // Unfolding inner array tree. + $history[] = $_arr = $this->result; + foreach ($this->path as $k) { + $history[] = $_arr = $_arr[$k]; + } + + if ($this->_containsGroupAlias) { + $value = $this->referenceContentsByAlias($this->_containsGroupAlias); + $this->_containsGroupAlias = false; + } + + + // Adding string or numeric key to the innermost level or $this->arr. + if (is_string($key) && $key == '<<') { + if (!is_array ($_arr)) { $_arr = array (); } + + $_arr = array_merge ($_arr, $value); + } else if ($key || $key === '' || $key === '0') { + if (!is_array ($_arr)) + $_arr = array ($key=>$value); + else + $_arr[$key] = $value; + } else { + if (!is_array ($_arr)) { $_arr = array ($value); $key = 0; } + else { $_arr[] = $value; end ($_arr); $key = key ($_arr); } + } + + $reverse_path = array_reverse($this->path); + $reverse_history = array_reverse ($history); + $reverse_history[0] = $_arr; + $cnt = count($reverse_history) - 1; + for ($i = 0; $i < $cnt; $i++) { + $reverse_history[$i+1][$reverse_path[$i]] = $reverse_history[$i]; + } + $this->result = $reverse_history[$cnt]; + + $this->path[$incoming_indent] = $key; + + if ($this->_containsGroupAnchor) { + $this->SavedGroups[$this->_containsGroupAnchor] = $this->path; + if (is_array ($value)) { + $k = key ($value); + if (!is_int ($k)) { + $this->SavedGroups[$this->_containsGroupAnchor][$incoming_indent + 2] = $k; + } + } + $this->_containsGroupAnchor = false; + } + + } + + private static function startsLiteralBlock ($line) { + $lastChar = substr (trim($line), -1); + if ($lastChar != '>' && $lastChar != '|') return false; + if ($lastChar == '|') return $lastChar; + // HTML tags should not be counted as literal blocks. + if (preg_match ('#<.*?>$#', $line)) return false; + return $lastChar; + } + + private static function greedilyNeedNextLine($line) { + $line = trim ($line); + if (!strlen($line)) return false; + if (substr ($line, -1, 1) == ']') return false; + if ($line[0] == '[') return true; + if (preg_match ('#^[^:]+?:\s*\[#', $line)) return true; + return false; + } + + private function addLiteralLine ($literalBlock, $line, $literalBlockStyle, $indent = -1) { + $line = self::stripIndent($line, $indent); + if ($literalBlockStyle !== '|') { + $line = self::stripIndent($line); + } + $line = rtrim ($line, "\r\n\t ") . "\n"; + if ($literalBlockStyle == '|') { + return $literalBlock . $line; + } + if (strlen($line) == 0) + return rtrim($literalBlock, ' ') . "\n"; + if ($line == "\n" && $literalBlockStyle == '>') { + return rtrim ($literalBlock, " \t") . "\n"; + } + if ($line != "\n") + $line = trim ($line, "\r\n ") . " "; + return $literalBlock . $line; + } + + function revertLiteralPlaceHolder ($lineArray, $literalBlock) { + foreach ($lineArray as $k => $_) { + if (is_array($_)) + $lineArray[$k] = $this->revertLiteralPlaceHolder ($_, $literalBlock); + else if (substr($_, -1 * strlen ($this->LiteralPlaceHolder)) == $this->LiteralPlaceHolder) + $lineArray[$k] = rtrim ($literalBlock, " \r\n"); + } + return $lineArray; + } + + private static function stripIndent ($line, $indent = -1) { + if ($indent == -1) $indent = strlen($line) - strlen(ltrim($line)); + return substr ($line, $indent); + } + + private function getParentPathByIndent ($indent) { + if ($indent == 0) return array(); + $linePath = $this->path; + do { + end($linePath); $lastIndentInParentPath = key($linePath); + if ($indent <= $lastIndentInParentPath) array_pop ($linePath); + } while ($indent <= $lastIndentInParentPath); + return $linePath; + } + + + private function clearBiggerPathValues ($indent) { + + + if ($indent == 0) $this->path = array(); + if (empty ($this->path)) return true; + + foreach ($this->path as $k => $_) { + if ($k > $indent) unset ($this->path[$k]); + } + + return true; + } + + + private static function isComment ($line) { + if (!$line) return false; + if ($line[0] == '#') return true; + if (trim($line, " \r\n\t") == '---') return true; + return false; + } + + private static function isEmpty ($line) { + return (trim ($line) === ''); + } + + + private function isArrayElement ($line) { + if (!$line || !is_scalar($line)) return false; + if (substr($line, 0, 2) != '- ') return false; + if (strlen ($line) > 3) + if (substr($line,0,3) == '---') return false; + + return true; + } + + private function isHashElement ($line) { + return strpos($line, ':'); + } + + private function isLiteral ($line) { + if ($this->isArrayElement($line)) return false; + if ($this->isHashElement($line)) return false; + return true; + } + + + private static function unquote ($value) { + if (!$value) return $value; + if (!is_string($value)) return $value; + if ($value[0] == '\'') return trim ($value, '\''); + if ($value[0] == '"') return trim ($value, '"'); + return $value; + } + + private function startsMappedSequence ($line) { + return (substr($line, 0, 2) == '- ' && substr ($line, -1, 1) == ':'); + } + + private function returnMappedSequence ($line) { + $array = array(); + $key = self::unquote(trim(substr($line,1,-1))); + $array[$key] = array(); + $this->delayedPath = array(strpos ($line, $key) + $this->indent => $key); + return array($array); + } + + private function checkKeysInValue($value) { + if (strchr('[{"\'', $value[0]) === false) { + if (strchr($value, ': ') !== false) { + throw new Exception('Too many keys: '.$value); + } + } + } + + private function returnMappedValue ($line) { + $this->checkKeysInValue($line); + $array = array(); + $key = self::unquote (trim(substr($line,0,-1))); + $array[$key] = ''; + return $array; + } + + private function startsMappedValue ($line) { + return (substr ($line, -1, 1) == ':'); + } + + private function isPlainArray ($line) { + return ($line[0] == '[' && substr ($line, -1, 1) == ']'); + } + + private function returnPlainArray ($line) { + return $this->_toType($line); + } + + private function returnKeyValuePair ($line) { + $array = array(); + $key = ''; + if (strpos ($line, ': ')) { + // It's a key/value pair most likely + // If the key is in double quotes pull it out + if (($line[0] == '"' || $line[0] == "'") && preg_match('/^(["\'](.*)["\'](\s)*:)/',$line,$matches)) { + $value = trim(str_replace($matches[1],'',$line)); + $key = $matches[2]; + } else { + // Do some guesswork as to the key and the value + $explode = explode(': ', $line); + $key = trim(array_shift($explode)); + $value = trim(implode(': ', $explode)); + $this->checkKeysInValue($value); + } + // Set the type of the value. Int, string, etc + $value = $this->_toType($value); + if ($key === '0') $key = '__!YAMLZero'; + $array[$key] = $value; + } else { + $array = array ($line); + } + return $array; + + } + + + private function returnArrayElement ($line) { + if (strlen($line) <= 1) return array(array()); // Weird %) + $array = array(); + $value = trim(substr($line,1)); + $value = $this->_toType($value); + if ($this->isArrayElement($value)) { + $value = $this->returnArrayElement($value); + } + $array[] = $value; + return $array; + } + + + private function nodeContainsGroup ($line) { + $symbolsForReference = 'A-z0-9_\-'; + if (strpos($line, '&') === false && strpos($line, '*') === false) return false; // Please die fast ;-) + if ($line[0] == '&' && preg_match('/^(&['.$symbolsForReference.']+)/', $line, $matches)) return $matches[1]; + if ($line[0] == '*' && preg_match('/^(\*['.$symbolsForReference.']+)/', $line, $matches)) return $matches[1]; + if (preg_match('/(&['.$symbolsForReference.']+)$/', $line, $matches)) return $matches[1]; + if (preg_match('/(\*['.$symbolsForReference.']+$)/', $line, $matches)) return $matches[1]; + if (preg_match ('#^\s*<<\s*:\s*(\*[^\s]+).*$#', $line, $matches)) return $matches[1]; + return false; + + } + + private function addGroup ($line, $group) { + if ($group[0] == '&') $this->_containsGroupAnchor = substr ($group, 1); + if ($group[0] == '*') $this->_containsGroupAlias = substr ($group, 1); + //print_r ($this->path); + } + + private function stripGroup ($line, $group) { + $line = trim(str_replace($group, '', $line)); + return $line; + } +} + +// Enable use of Spyc from command line +// The syntax is the following: php Spyc.php spyc.yaml + +do { + if (PHP_SAPI != 'cli') break; + if (empty ($_SERVER['argc']) || $_SERVER['argc'] < 2) break; + if (empty ($_SERVER['PHP_SELF']) || FALSE === strpos ($_SERVER['PHP_SELF'], 'Spyc.php') ) break; + $file = $argv[1]; + echo json_encode (spyc_load_file ($file)); +} while (0); + + +?> \ No newline at end of file diff --git a/plugin/spore/src/cacert.pem b/plugin/spore/src/cacert.pem new file mode 100755 index 0000000000000000000000000000000000000000..969239ff6768a1f8a650fbcff0ff6cb96d786fce --- /dev/null +++ b/plugin/spore/src/cacert.pem @@ -0,0 +1,3920 @@ +## +## ca-bundle.crt -- Bundle of CA Root Certificates +## +## Certificate data from Mozilla as of: Thu Oct 18 19:05:59 2012 +## +## This is a bundle of X.509 certificates of public Certificate Authorities +## (CA). These were automatically extracted from Mozilla's root certificates +## file (certdata.txt). This file can be found in the mozilla source tree: +## http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1 +## +## It contains the certificates in PEM format and therefore +## can be directly used with curl / libcurl / php_curl, or with +## an Apache+mod_ssl webserver for SSL client authentication. +## Just configure this file as the SSLCACertificateFile. +## + +# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.86 $ $Date: 2012/10/18 16:26:52 $ + +GTE CyberTrust Global Root +========================== +-----BEGIN CERTIFICATE----- +MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg +Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG +A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz +MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL +Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0 +IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u +sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql +HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID +AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW +M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF +NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ +-----END CERTIFICATE----- + +Thawte Server CA +================ +-----BEGIN CERTIFICATE----- +MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs +dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE +AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j +b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV +BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u +c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG +A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0 +ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl +/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7 +1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR +MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J +GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ +GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc= +-----END CERTIFICATE----- + +Thawte Premium Server CA +======================== +-----BEGIN CERTIFICATE----- +MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs +dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE +AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl +ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT +AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU +VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2 +aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ +cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2 +aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh +Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/ +qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm +SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf +8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t +UCemDaYj+bvLpgcUQg== +-----END CERTIFICATE----- + +Equifax Secure CA +================= +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE +ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT +B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB +nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR +fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW +8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG +A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE +CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG +A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS +spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB +Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961 +zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB +BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95 +70+sB3c4 +-----END CERTIFICATE----- + +Digital Signature Trust Co. Global CA 1 +======================================= +-----BEGIN CERTIFICATE----- +MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE +ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMTAeFw05ODEy +MTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs +IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJE +NySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2i +o74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo +BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0 +dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw +IoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQY +MBaAFGp5fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAM +BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB +ACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lNQseSJqBcNJo4cvj9axY+IO6CizEq +kzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4 +RbyhkwS7hp86W0N6w4pl +-----END CERTIFICATE----- + +Digital Signature Trust Co. Global CA 3 +======================================= +-----BEGIN CERTIFICATE----- +MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE +ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMjAeFw05ODEy +MDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs +IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGOD +VvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JS +xhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo +BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0 +dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw +IoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQY +MBaAFB6CTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAM +BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB +AEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHRxdf0CiUPPXiBng+xZ8SQTGPdXqfi +up/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1 +mPnHfxsb1gYgAlihw6ID +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94 +f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol +hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA +TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah +WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf +Tqj/ZA1k +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority - G2 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgd +k4xWArzZbxpvUjZudVYKVdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIq +WpDBucSmFc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQIDAQAB +MA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0Jh9ZrbWB85a7FkCMM +XErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2uluIncrKTdcu1OofdPvAbT6shkdHvC +lUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68DzFc6PLZ +-----END CERTIFICATE----- + +Verisign Class 2 Public Primary Certification Authority - G2 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h +cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp +Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1 +c3QgTmV0d29yazAeFw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h +cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp +Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1 +c3QgTmV0d29yazCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjx +nNuX6Zr8wgQGE75fUsjMHiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRC +wiNPStjwDqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cCAwEA +ATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9jinb3/7aHmZuovCfTK +1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAXrXfMSTWqz9iP0b63GJZHc2pUIjRk +LbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnInjBJ7xUS0rg== +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G2 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO +FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71 +lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB +MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT +1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD +Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9 +-----END CERTIFICATE----- + +GlobalSign Root CA +================== +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx +GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds +b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD +VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa +DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc +THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb +Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP +c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX +gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF +AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj +Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG +j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH +hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC +X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +GlobalSign Root CA - R2 +======================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 +ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp +s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN +S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL +TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C +ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i +YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN +BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp +9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu +01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 +9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +ValiCert Class 1 VA +=================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy +MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi +GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm +DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG +lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX +icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP +Orf1LXLI +-----END CERTIFICATE----- + +ValiCert Class 2 VA +=================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw +MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC +CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf +ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ +SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV +UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8 +W9ViH0Pd +-----END CERTIFICATE----- + +RSA Root Certificate 1 +====================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw +MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td +3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H +BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs +3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF +V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r +on+jjBXu +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAN2E1Lm0+afY8wR4nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/E +bRrsC+MO8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjVojYJ +rKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjbPG7PoBMAGrgnoeS+ +Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP26KbqxzcSXKMpHgLZ2x87tNcPVkeB +FQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vrn5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +q2aN17O6x5q25lXQBfGfMY1aqtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/N +y9Sn2WCVhDr4wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3 +ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrspSCAaWihT37h +a88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4E1Z5T21Q6huwtVexN2ZYI/Pc +D98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g== +-----END CERTIFICATE----- + +Verisign Class 2 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29y +azE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ug +b25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1 +c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y +aXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEArwoNwtUs22e5LeWUJ92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6 +tW8UvxDOJxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUYwZF7 +C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9okoqQHgiBVrKtaaNS +0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjNqWm6o+sdDZykIKbBoMXRRkwXbdKs +Zj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/ESrg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0 +JhU8wI1NQ0kdvekhktdmnLfexbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf +0xwLRtxyID+u7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU +sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RIsH/7NiXaldDx +JBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTPcjnhsUPgKM+351psE2tJs//j +GHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 +EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc +cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw +EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj +055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f +j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 +xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa +t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +Verisign Class 4 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS +tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM +8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW +Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX +Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt +mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm +fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd +RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG +UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== +-----END CERTIFICATE----- + +Entrust.net Secure Server CA +============================ +-----BEGIN CERTIFICATE----- +MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV +BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg +cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl +ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG +A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi +eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p +dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ +aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5 +gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw +ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw +CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l +dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF +bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu +dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw +NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow +HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA +BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN +Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9 +n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +-----END CERTIFICATE----- + +Entrust.net Premium 2048 Secure Server CA +========================================= +-----BEGIN CERTIFICATE----- +MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u +ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp +bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV +BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx +NzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 +d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl +MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u +ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL +Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr +hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW +nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi +VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo3QwcjARBglghkgBhvhC +AQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdER +gL7YibkIozH5oSQJFrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B +AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo +oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQh7A6tcOdBTcS +o8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z +2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjX +OP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ== +-----END CERTIFICATE----- + +Baltimore CyberTrust Root +========================= +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE +ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li +ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC +SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs +dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME +uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB +UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C +G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 +XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr +l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI +VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB +BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh +cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 +hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa +Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H +RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +Equifax Secure Global eBusiness CA +================================== +-----BEGIN CERTIFICATE----- +MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp +bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx +HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds +b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV +PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN +qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn +hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j +BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs +MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN +I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY +NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +-----END CERTIFICATE----- + +Equifax Secure eBusiness CA 1 +============================= +-----BEGIN CERTIFICATE----- +MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB +LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE +ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz +IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ +1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a +IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk +MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW +Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF +AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5 +lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+ +KpYrtWKmpj29f5JZzVoqgrI3eQ== +-----END CERTIFICATE----- + +Equifax Secure eBusiness CA 2 +============================= +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEXMBUGA1UE +ChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y +MB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoT +DkVxdWlmYXggU2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCB +nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn +2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5 +BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAG +A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUx +JjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoG +A1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9e +uSBIplBqy/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMB +Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAAyGgq3oThr1 +jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia +78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUm +V+GRMOrN +-----END CERTIFICATE----- + +AddTrust Low-Value Services Root +================================ +-----BEGIN CERTIFICATE----- +MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU +cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw +CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO +ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6 +54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr +oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1 +Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui +GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w +HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD +AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT +RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw +HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt +ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph +iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY +eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr +mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj +ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= +-----END CERTIFICATE----- + +AddTrust External Root +====================== +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD +VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw +NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU +cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg +Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 ++iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw +Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo +aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy +2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 +7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL +VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk +VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl +j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 +e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u +G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +AddTrust Public Services Root +============================= +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU +cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ +BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l +dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu +nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i +d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG +Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw +HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G +A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G +A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4 +JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL ++YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao +GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9 +Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H +EufOX1362KqxMy3ZdvJOOjMMK7MtkAY= +-----END CERTIFICATE----- + +AddTrust Qualified Certificates Root +==================================== +-----BEGIN CERTIFICATE----- +MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU +cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx +CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ +IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx +64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3 +KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o +L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR +wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU +MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE +BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y +azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG +GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X +dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze +RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB +iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE= +-----END CERTIFICATE----- + +Entrust Root Certification Authority +==================================== +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw +b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG +A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 +MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu +MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu +Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v +dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz +A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww +Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 +j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN +rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 +MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH +hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM +Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa +v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS +W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 +tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +RSA Security 2048 v3 +==================== +-----BEGIN CERTIFICATE----- +MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK +ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy +MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb +BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7 +Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb +WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH +KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP ++Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/ +MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E +FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY +v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj +0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj +VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395 +nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA +pKnXwiJPZ9d37CAFYd4= +-----END CERTIFICATE----- + +GeoTrust Global CA +================== +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw +MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo +BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet +8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc +T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU +vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q +zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 +d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 +mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p +XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm +Mw== +-----END CERTIFICATE----- + +GeoTrust Global CA 2 +==================== +-----BEGIN CERTIFICATE----- +MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw +MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/ +NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k +LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA +Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b +HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH +K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7 +srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh +ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL +OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC +x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF +H4z1Ir+rzoPz4iIprn2DQKi6bA== +-----END CERTIFICATE----- + +GeoTrust Universal CA +===================== +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 +MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu +Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t +JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e +RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs +7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d +8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V +qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga +Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB +Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu +KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 +ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 +XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB +hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 +qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL +oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK +xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF +KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 +DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK +xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU +p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI +P/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +GeoTrust Universal CA 2 +======================= +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 +MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg +SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 +DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 +j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q +JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a +QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 +WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP +20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn +ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC +SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG +8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 ++/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E +BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ +4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ +mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq +A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg +Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP +pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d +FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp +gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm +X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +UTN-USER First-Network Applications +=================================== +-----BEGIN CERTIFICATE----- +MIIEZDCCA0ygAwIBAgIQRL4Mi1AAJLQR0zYwS8AzdzANBgkqhkiG9w0BAQUFADCBozELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzAp +BgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBBcHBsaWNhdGlvbnMwHhcNOTkwNzA5MTg0ODM5 +WhcNMTkwNzA5MTg1NzQ5WjCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5T +YWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzApBgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBB +cHBsaWNhdGlvbnMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz+5Gh5DZVhawGNFug +mliy+LUPBXeDrjKxdpJo7CNKyXY/45y2N3kDuatpjQclthln5LAbGHNhSuh+zdMvZOOmfAz6F4Cj +DUeJT1FxL+78P/m4FoCHiZMlIJpDgmkkdihZNaEdwH+DBmQWICzTSaSFtMBhf1EI+GgVkYDLpdXu +Ozr0hAReYFmnjDRy7rh4xdE7EkpvfmUnuaRVxblvQ6TFHSyZwFKkeEwVs0CYCGtDxgGwenv1axwi +P8vv/6jQOkt2FZ7S0cYu49tXGzKiuG/ohqY/cKvlcJKrRB5AUPuco2LkbG6gyN7igEL66S/ozjIE +j3yNtxyjNTwV3Z7DrpelAgMBAAGjgZEwgY4wCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8w +HQYDVR0OBBYEFPqGydvguul49Uuo1hXf8NPhahQ8ME8GA1UdHwRIMEYwRKBCoECGPmh0dHA6Ly9j +cmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LU5ldHdvcmtBcHBsaWNhdGlvbnMuY3JsMA0G +CSqGSIb3DQEBBQUAA4IBAQCk8yXM0dSRgyLQzDKrm5ZONJFUICU0YV8qAhXhi6r/fWRRzwr/vH3Y +IWp4yy9Rb/hCHTO967V7lMPDqaAt39EpHx3+jz+7qEUqf9FuVSTiuwL7MT++6LzsQCv4AdRWOOTK +RIK1YSAhZ2X28AvnNPilwpyjXEAfhZOVBt5P1CeptqX8Fs1zMT+4ZSfP1FMa8Kxun08FDAOBp4Qp +xFq9ZFdyrTvPNximmMatBrTcCKME1SmklpoSZ0qMYEWd8SOasACcaLWYUNPvji6SZbFIPiG+FTAq +DbUMo2s/rn9X9R+WfN9v3YIwLGUbQErNaLly7HF27FSOH4UMAWr6pjisH8SE +-----END CERTIFICATE----- + +America Online Root Certification Authority 1 +============================================= +-----BEGIN CERTIFICATE----- +MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG +A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg +T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG +v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z +DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh +sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP +8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z +o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf +GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF +VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft +3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g +Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds +sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 +-----END CERTIFICATE----- + +America Online Root Certification Authority 2 +============================================= +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG +A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg +T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en +fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8 +f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO +qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN +RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0 +gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn +6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid +FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6 +Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj +B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op +aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY +T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p ++DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg +JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy +zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO +ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh +1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf +GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff +Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP +cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk= +-----END CERTIFICATE----- + +Visa eCommerce Root +=================== +-----BEGIN CERTIFICATE----- +MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG +EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug +QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2 +WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm +VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv +bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL +F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b +RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0 +TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI +/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs +GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG +MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc +CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW +YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz +zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu +YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt +398znM/jra6O1I7mT1GvFpLgXPYHDw== +-----END CERTIFICATE----- + +Certum Root CA +============== +-----BEGIN CERTIFICATE----- +MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK +ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla +Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u +by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x +wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL +kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ +89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K +Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P +NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+ +GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg +GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/ +0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS +qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw== +-----END CERTIFICATE----- + +Comodo AAA Services root +======================== +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw +MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl +c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG +C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs +i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW +Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH +Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK +Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f +BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl +cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz +LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm +7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z +8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C +12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +Comodo Secure Services root +=========================== +-----BEGIN CERTIFICATE----- +MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw +MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu +Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi +BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP +9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc +rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC +oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V +p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E +FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w +gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj +YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm +aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm +4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj +Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL +DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw +pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H +RR3B7Hzs/Sk= +-----END CERTIFICATE----- + +Comodo Trusted Services root +============================ +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw +MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h +bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw +IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7 +3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y +/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6 +juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS +ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud +DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp +ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl +cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw +uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 +pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA +BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l +R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O +9y5Xt5hwXsjEeLBi +-----END CERTIFICATE----- + +QuoVadis Root CA +================ +-----BEGIN CERTIFICATE----- +MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE +ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz +MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp +cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD +EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk +J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL +F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL +YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen +AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w +PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y +ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 +MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj +YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs +ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh +Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW +Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu +BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw +FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 +tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo +fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul +LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x +gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi +5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi +5nrQNiOKSnQ2+Q== +-----END CERTIFICATE----- + +QuoVadis Root CA 2 +================== +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx +ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6 +XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk +lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB +lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy +lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt +66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn +wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh +D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy +BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie +J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud +DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU +a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv +Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3 +UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm +VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK ++JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW +IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1 +WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X +f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II +4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8 +VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +QuoVadis Root CA 3 +================== +-----BEGIN CERTIFICATE----- +MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx +OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg +DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij +KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K +DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv +BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp +p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8 +nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX +MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM +Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz +uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT +BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj +YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 +aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB +BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD +VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4 +ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE +AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV +qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s +hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z +POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2 +Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp +8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC +bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu +g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p +vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr +qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto= +-----END CERTIFICATE----- + +Security Communication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw +8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM +DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX +5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd +DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 +JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g +0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a +mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ +s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ +6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi +FL39vmwLAw== +-----END CERTIFICATE----- + +Sonera Class 1 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAxMDQwNjEwNDkxM1oXDTIxMDQw +NjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H88 +7dF+2rDNbS82rDTG29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9 +EJUkoVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk3w0LBUXl +0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBLqdReLjVQCfOAl/QMF645 +2F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIINnvmLVz5MxxftLItyM19yejhW1ebZrgUa +HXVFsculJRwSVzb9IjcCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZT +iFIwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE9 +28Jj2VuXZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0HDjxV +yhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VOTzF2nBBhjrZTOqMR +vq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2UvkVrCqIexVmiUefkl98HVrhq4uz2P +qYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4wzMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9Z +IRlXvVWa +-----END CERTIFICATE----- + +Sonera Class 2 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw +NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 +/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT +dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG +f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P +tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH +nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT +XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt +0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI +cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph +Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx +EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH +llpwrN9M +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA +============================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE +ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w +HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh +bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt +vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P +jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca +C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth +vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6 +22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV +HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v +dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN +BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR +EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw +MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y +nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR +iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw== +-----END CERTIFICATE----- + +TDC Internet Root CA +==================== +-----BEGIN CERTIFICATE----- +MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE +ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx +NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu +ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j +xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL +znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc +5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6 +otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI +AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM +VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM +MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC +AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe +UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G +CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m +gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+ +2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb +O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU +Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l +-----END CERTIFICATE----- + +TDC OCES Root CA +================ +-----BEGIN CERTIFICATE----- +MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJESzEMMAoGA1UE +ChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEwODM5MzBaFw0zNzAyMTEwOTA5 +MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuH +nEz9pPPEXyG9VhDr2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0 +zY0s2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItUGBxIYXvV +iGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKjdGqPqcNiKXEx5TukYBde +dObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+rTpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO +3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB +5DCB4TCB3gYIKoFQgSkBAQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5k +ay9yZXBvc2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRlciBm +cmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4xLiBDZXJ0aWZp +Y2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4x +LjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1UdHwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEM +MAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYm +aHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy +MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZJ2cdUBVLc647 ++RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6 +NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACromJkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4 +A9G28kNBKWKnctj7fAXmMXAnVBhOinxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYsc +A+UYyAFMP8uXBV2YcaaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9 +AOoBmbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQYqbsFbS1 +AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9BKNDLdr8C2LqL19iUw== +-----END CERTIFICATE----- + +UTN DATACorp SGC Root CA +======================== +-----BEGIN CERTIFICATE----- +MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ +BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa +MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w +HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy +dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys +raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo +wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA +9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv +33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud +DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9 +BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD +LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3 +DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft +Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0 +I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx +EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP +DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI +-----END CERTIFICATE----- + +UTN USERFirst Email Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0 +BgNVBAMTLVVUTi1VU0VSRmlyc3QtQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05 +OTA3MDkxNzI4NTBaFw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQx +FzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsx +ITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UEAxMtVVROLVVTRVJGaXJz +dC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWlsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3BYHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIx +B8dOtINknS4p1aJkxIW9hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8 +om+rWV6lL8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLmSGHG +TPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM1tZUOt4KpLoDd7Nl +yP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws6wIDAQABo4G5MIG2MAsGA1UdDwQE +AwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNV +HR8EUTBPME2gS6BJhkdodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGll +bnRBdXRoZW50aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH +AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u7mFVbwQ+zzne +xRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0xtcgBEXkzYABurorbs6q15L+ +5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQrfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarV +NZ1yQAOJujEdxRBoUp7fooXFXAimeOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZ +w7JHpsIyYdfHb0gkUSeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ= +-----END CERTIFICATE----- + +UTN USERFirst Hardware Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd +BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx +OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0 +eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz +ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI +wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd +tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8 +i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf +Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw +gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF +lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF +UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF +BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM +//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW +XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2 +lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn +iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67 +nfhmqA== +-----END CERTIFICATE----- + +UTN USERFirst Object Root CA +============================ +-----BEGIN CERTIFICATE----- +MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAb +BgNVBAMTFFVUTi1VU0VSRmlyc3QtT2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAz +NlowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkx +HjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2Vy +dHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicPHxzfOpuCaDDASmEd8S8O+r5596Uj71VR +loTN2+O5bj4x2AogZ8f02b+U60cEPgLOKqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQ +w5ujm9M89RKZd7G3CeBo5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vu +lBe3/IW+pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehbkkj7 +RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUCAwEAAaOBrzCBrDAL +BgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU2u1kdBScFDyr3ZmpvVsoTYs8 +ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmly +c3QtT2JqZWN0LmNybDApBgNVHSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQw +DQYJKoZIhvcNAQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw +NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXBmMiKVl0+7kNO +PmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU4U3GDZlDAQ0Slox4nb9QorFE +qmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK581OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCG +hU3IfdeLA/5u1fedFqySLKAj5ZyRUh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g= +-----END CERTIFICATE----- + +Camerfirma Chambers of Commerce Root +==================================== +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe +QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i +ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx +NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp +cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn +MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC +AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU +xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH +NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW +DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV +d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud +EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v +cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P +AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh +bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD +VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz +aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi +fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD +L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN +UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n +ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1 +erfutGWaIZDgqtCYvDi1czyL+Nw= +-----END CERTIFICATE----- + +Camerfirma Global Chambersign Root +================================== +-----BEGIN CERTIFICATE----- +MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe +QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i +ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx +NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt +YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg +MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw +ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J +1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O +by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl +6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c +8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/ +BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j +aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B +Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj +aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y +ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh +bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA +PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y +gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ +PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4 +IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes +t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== +-----END CERTIFICATE----- + +NetLock Qualified (Class QA) Root +================================= +-----BEGIN CERTIFICATE----- +MIIG0TCCBbmgAwIBAgIBezANBgkqhkiG9w0BAQUFADCByTELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMUIwQAYDVQQDEzlOZXRMb2NrIE1pbm9zaXRldHQgS296amVn +eXpvaSAoQ2xhc3MgUUEpIFRhbnVzaXR2YW55a2lhZG8xHjAcBgkqhkiG9w0BCQEWD2luZm9AbmV0 +bG9jay5odTAeFw0wMzAzMzAwMTQ3MTFaFw0yMjEyMTUwMTQ3MTFaMIHJMQswCQYDVQQGEwJIVTER +MA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNhZ2kgS2Z0 +LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxQjBABgNVBAMTOU5ldExvY2sgTWlub3NpdGV0 +dCBLb3pqZWd5em9pIChDbGFzcyBRQSkgVGFudXNpdHZhbnlraWFkbzEeMBwGCSqGSIb3DQEJARYP +aW5mb0BuZXRsb2NrLmh1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx1Ilstg91IRV +CacbvWy5FPSKAtt2/GoqeKvld/Bu4IwjZ9ulZJm53QE+b+8tmjwi8F3JV6BVQX/yQ15YglMxZc4e +8ia6AFQer7C8HORSjKAyr7c3sVNnaHRnUPYtLmTeriZ539+Zhqurf4XsoPuAzPS4DB6TRWO53Lhb +m+1bOdRfYrCnjnxmOCyqsQhjF2d9zL2z8cM/z1A57dEZgxXbhxInlrfa6uWdvLrqOU+L73Sa58XQ +0uqGURzk/mQIKAR5BevKxXEOC++r6uwSEaEYBTJp0QwsGj0lmT+1fMptsK6ZmfoIYOcZwvK9UdPM +0wKswREMgM6r3JSda6M5UzrWhQIDAMV9o4ICwDCCArwwEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV +HQ8BAf8EBAMCAQYwggJ1BglghkgBhvhCAQ0EggJmFoICYkZJR1lFTEVNISBFemVuIHRhbnVzaXR2 +YW55IGEgTmV0TG9jayBLZnQuIE1pbm9zaXRldHQgU3pvbGdhbHRhdGFzaSBTemFiYWx5emF0YWJh +biBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBBIG1pbm9zaXRldHQgZWxla3Ryb25p +a3VzIGFsYWlyYXMgam9naGF0YXMgZXJ2ZW55ZXN1bGVzZW5laywgdmFsYW1pbnQgZWxmb2dhZGFz +YW5hayBmZWx0ZXRlbGUgYSBNaW5vc2l0ZXR0IFN6b2xnYWx0YXRhc2kgU3phYmFseXphdGJhbiwg +YXogQWx0YWxhbm9zIFN6ZXJ6b2Rlc2kgRmVsdGV0ZWxla2JlbiBlbG9pcnQgZWxsZW5vcnplc2kg +ZWxqYXJhcyBtZWd0ZXRlbGUuIEEgZG9rdW1lbnR1bW9rIG1lZ3RhbGFsaGF0b2sgYSBodHRwczov +L3d3dy5uZXRsb2NrLmh1L2RvY3MvIGNpbWVuIHZhZ3kga2VyaGV0b2sgYXogaW5mb0BuZXRsb2Nr +Lm5ldCBlLW1haWwgY2ltZW4uIFdBUk5JTkchIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0 +aGlzIGNlcnRpZmljYXRlIGFyZSBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIFF1YWxpZmllZCBDUFMg +YXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3Lm5ldGxvY2suaHUvZG9jcy8gb3IgYnkgZS1tYWlsIGF0 +IGluZm9AbmV0bG9jay5uZXQwHQYDVR0OBBYEFAlqYhaSsFq7VQ7LdTI6MuWyIckoMA0GCSqGSIb3 +DQEBBQUAA4IBAQCRalCc23iBmz+LQuM7/KbD7kPgz/PigDVJRXYC4uMvBcXxKufAQTPGtpvQMznN +wNuhrWw3AkxYQTvyl5LGSKjN5Yo5iWH5Upfpvfb5lHTocQ68d4bDBsxafEp+NFAwLvt/MpqNPfMg +W/hqyobzMUwsWYACff44yTB1HLdV47yfuqhthCgFdbOLDcCRVCHnpgu0mfVRQdzNo0ci2ccBgcTc +R08m6h/t280NmPSjnLRzMkqWmf68f8glWPhY83ZmiVSkpj7EUFy6iRiCdUgh0k8T6GB+B3bbELVR +5qq5aKrN9p2QdRLqOBrKROi3macqaJVmlaut74nLYKkGEsaUR+ko +-----END CERTIFICATE----- + +NetLock Notary (Class A) Root +============================= +-----BEGIN CERTIFICATE----- +MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI +EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 +dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j +ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX +DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH +EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD +VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz +cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM +D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ +z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC +/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7 +tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6 +4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG +A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC +Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv +bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu +IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn +LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0 +ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz +IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh +IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu +b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh +bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg +Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp +bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5 +ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP +ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB +CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr +KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM +8CgHrTwXZoi1/baI +-----END CERTIFICATE----- + +NetLock Business (Class B) Root +=============================== +-----BEGIN CERTIFICATE----- +MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg +VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD +VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv +bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg +VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB +iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S +o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr +1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV +HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ +RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh +dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0 +ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv +c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg +YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh +c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz +Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA +bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl +IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2 +YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj +cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM +43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR +stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI +-----END CERTIFICATE----- + +NetLock Express (Class C) Root +============================== +-----BEGIN CERTIFICATE----- +MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD +KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ +BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 +dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j +ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB +jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z +W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63 +euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw +DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN +RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn +YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB +IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i +aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0 +ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs +ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo +dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y +emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k +IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ +UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg +YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2 +xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW +gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A== +-----END CERTIFICATE----- + +XRamp Global CA Root +==================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE +BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj +dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx +HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg +U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu +IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx +foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE +zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs +AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry +xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap +oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC +AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc +/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n +nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz +8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +Go Daddy Class 2 CA +=================== +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY +VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG +A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD +ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 +qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j +YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY +vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O +BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o +atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu +MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim +PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt +I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI +Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b +vZ8= +-----END CERTIFICATE----- + +Starfield Class 2 CA +==================== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc +U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo +MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG +A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG +SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY +bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ +JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm +epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN +F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF +MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f +hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo +bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs +afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM +PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD +KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 +QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +StartCom Certification Authority +================================ +-----BEGIN CERTIFICATE----- +MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu +ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 +NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk +LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg +U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y +o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ +Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d +eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt +2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z +6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ +osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ +untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc +UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT +37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE +FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0 +Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj +YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH +AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw +Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg +U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5 +LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh +cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT +dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC +AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh +3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm +vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk +fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3 +fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ +EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq +yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl +1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/ +lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro +g14= +-----END CERTIFICATE----- + +Taiwan GRCA +=========== +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG +EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X +DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv +dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN +w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 +BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O +1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO +htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov +J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 +Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t +B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB +O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 +lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV +HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 +09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ +TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj +Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 +Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU +D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz +DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk +Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk +7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ +CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy ++fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS +-----END CERTIFICATE----- + +Firmaprofesional Root CA +======================== +-----BEGIN CERTIFICATE----- +MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT +GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp +Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA +ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL +MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT +OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2 +ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V +j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH +lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf +3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8 +NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww +KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG +AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud +DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD +ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq +u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf +wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm +7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG +VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA= +-----END CERTIFICATE----- + +Wells Fargo Root CA +=================== +-----BEGIN CERTIFICATE----- +MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMCVVMxFDASBgNV +BAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN +MDAxMDExMTY0MTI4WhcNMjEwMTE0MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dl +bGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEv +MC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n135zHCLielTWi5MbqNQ1mX +x3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHESxP9cMIlrCL1dQu3U+SlK93OvRw6esP3 +E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4OJgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5 +OEL8pahbSCOz6+MlsoCultQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4j +sNtlAHCEAQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMBAAGj +YTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcBCzAyMDAGCCsGAQUF +BwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRwb2xpY3kwDQYJKoZIhvcNAQEFBQAD +ggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrv +m+0fazbuSCUlFLZWohDo7qd/0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0R +OhPs7fpvcmR7nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx +x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ33ZwmVxwQ023 +tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s= +-----END CERTIFICATE----- + +Swisscom Root CA 1 +================== +-----BEGIN CERTIFICATE----- +MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG +EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy +dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4 +MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln +aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC +IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM +MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF +NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe +AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC +b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn +7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN +cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp +WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5 +haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY +MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw +HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j +BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9 +MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn +jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ +MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H +VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl +vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl +OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3 +1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq +nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy +x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW +NY6E0F/6MBr1mmz0DlP5OlvRHA== +-----END CERTIFICATE----- + +DigiCert Assured ID Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx +MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO +9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy +UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW +/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy +oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf +GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF +66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq +hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc +EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn +SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i +8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +DigiCert Global Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw +MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn +TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 +BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H +4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y +7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB +o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm +8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF +BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr +EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt +tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 +UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +DigiCert High Assurance EV Root CA +================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw +KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw +MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ +MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu +Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t +Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS +OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 +MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ +NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe +h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB +Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY +JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ +V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp +myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK +mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K +-----END CERTIFICATE----- + +Certplus Class 2 Primary CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE +BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN +OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy +dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR +5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ +Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO +YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e +e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME +CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ +YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t +L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD +P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R +TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+ +7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW +//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 +l7+ijrRU +-----END CERTIFICATE----- + +DST Root CA X3 +============== +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK +ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X +DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 +cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT +rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 +UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy +xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d +utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ +MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug +dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE +GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw +RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS +fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- + +DST ACES CA X6 +============== +-----BEGIN CERTIFICATE----- +MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT +MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha +MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE +CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI +DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa +pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow +GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy +MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu +Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy +dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU +CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2 +5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t +Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq +nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs +vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3 +oKfN5XozNmr6mis= +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 1 +============================================== +-----BEGIN CERTIFICATE----- +MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP +MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0 +acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx +MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg +U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB +TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC +aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX +yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i +Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ +8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4 +W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME +BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46 +sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE +q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy +B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY +nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 2 +============================================== +-----BEGIN CERTIFICATE----- +MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP +MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg +QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN +MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr +dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G +A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls +acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe +LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI +x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g +QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr +5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB +AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt +Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4 +Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+ +hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P +9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5 +UrbnBEI= +-----END CERTIFICATE----- + +SwissSign Platinum CA - G2 +========================== +-----BEGIN CERTIFICATE----- +MIIFwTCCA6mgAwIBAgIITrIAZwwDXU8wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UEBhMCQ0gxFTAT +BgNVBAoTDFN3aXNzU2lnbiBBRzEjMCEGA1UEAxMaU3dpc3NTaWduIFBsYXRpbnVtIENBIC0gRzIw +HhcNMDYxMDI1MDgzNjAwWhcNMzYxMDI1MDgzNjAwWjBJMQswCQYDVQQGEwJDSDEVMBMGA1UEChMM +U3dpc3NTaWduIEFHMSMwIQYDVQQDExpTd2lzc1NpZ24gUGxhdGludW0gQ0EgLSBHMjCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMrfogLi2vj8Bxax3mCq3pZcZB/HL37PZ/pEQtZ2Y5Wu +669yIIpFR4ZieIbWIDkm9K6j/SPnpZy1IiEZtzeTIsBQnIJ71NUERFzLtMKfkr4k2HtnIuJpX+UF +eNSH2XFwMyVTtIc7KZAoNppVRDBopIOXfw0enHb/FZ1glwCNioUD7IC+6ixuEFGSzH7VozPY1kne +WCqv9hbrS3uQMpe5up1Y8fhXSQQeol0GcN1x2/ndi5objM89o03Oy3z2u5yg+gnOI2Ky6Q0f4nIo +j5+saCB9bzuohTEJfwvH6GXp43gOCWcwizSC+13gzJ2BbWLuCB4ELE6b7P6pT1/9aXjvCR+htL/6 +8++QHkwFix7qepF6w9fl+zC8bBsQWJj3Gl/QKTIDE0ZNYWqFTFJ0LwYfexHihJfGmfNtf9dng34T +aNhxKFrYzt3oEBSa/m0jh26OWnA81Y0JAKeqvLAxN23IhBQeW71FYyBrS3SMvds6DsHPWhaPpZjy +domyExI7C3d3rLvlPClKknLKYRorXkzig3R3+jVIeoVNjZpTxN94ypeRSCtFKwH3HBqi7Ri6Cr2D ++m+8jVeTO9TUps4e8aCxzqv9KyiaTxvXw3LbpMS/XUz13XuWae5ogObnmLo2t/5u7Su9IPhlGdpV +CX4l3P5hYnL5fhgC72O00Puv5TtjjGePAgMBAAGjgawwgakwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFFCvzAeHFUdvOMW0ZdHelarp35zMMB8GA1UdIwQYMBaAFFCv +zAeHFUdvOMW0ZdHelarp35zMMEYGA1UdIAQ/MD0wOwYJYIV0AVkBAQEBMC4wLAYIKwYBBQUHAgEW +IGh0dHA6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vMA0GCSqGSIb3DQEBBQUAA4ICAQAIhab1 +Fgz8RBrBY+D5VUYI/HAcQiiWjrfFwUF1TglxeeVtlspLpYhg0DB0uMoI3LQwnkAHFmtllXcBrqS3 +NQuB2nEVqXQXOHtYyvkv+8Bldo1bAbl93oI9ZLi+FHSjClTTLJUYFzX1UWs/j6KWYTl4a0vlpqD4 +U99REJNi54Av4tHgvI42Rncz7Lj7jposiU0xEQ8mngS7twSNC/K5/FqdOxa3L8iYq/6KUFkuozv8 +KV2LwUvJ4ooTHbG/u0IdUt1O2BReEMYxB+9xJ/cbOQncguqLs5WGXv312l0xpuAxtpTmREl0xRbl +9x8DYSjFyMsSoEJL+WuICI20MhjzdZ/EfwBPBZWcoxcCw7NTm6ogOSkrZvqdr16zktK1puEa+S1B +aYEUtLS17Yk9zvupnTVCRLEcFHOBzyoBNZox1S2PbYTfgE1X4z/FhHXaicYwu+uPyyIIoK6q8QNs +OktNCaUOcsZWayFCTiMlFGiudgp8DAdwZPmaL/YFOSbGDI8Zf0NebvRbFS/bYV3mZy8/CJT5YLSY +Mdp08YSTcU1f+2BY0fvEwW2JorsgH51xkcsymxM9Pn2SUjWskpSi0xjCfMfqr3YFFt1nJ8J+HAci +IfNAChs0B0QTwoRqjt8ZWr9/6x3iGjjRXK9HkmuAtTClyY3YqzGBH9/CZjfTk6mFhnll0g== +-----END CERTIFICATE----- + +SwissSign Gold CA - G2 +====================== +-----BEGIN CERTIFICATE----- +MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw +EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN +MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp +c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq +t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C +jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg +vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF +ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR +AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend +jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO +peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR +7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi +GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64 +OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov +L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm +5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr +44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf +Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m +Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp +mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk +vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf +KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br +NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj +viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ +-----END CERTIFICATE----- + +SwissSign Silver CA - G2 +======================== +-----BEGIN CERTIFICATE----- +MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT +BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X +DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3 +aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644 +N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm ++/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH +6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu +MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h +qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5 +FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs +ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc +celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X +CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB +tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 +cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P +4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F +kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L +3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx +/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa +DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP +e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu +WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ +DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub +DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority +======================================== +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx +CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ +cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN +b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 +nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge +RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt +tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI +hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K +Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN +NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa +Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG +1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +thawte Primary Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 +MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg +SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv +KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT +FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs +oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ +1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc +q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K +aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p +afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF +AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE +uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 +jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH +z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G5 +============================================================ +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln +biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh +dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz +j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD +Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r +fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ +BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv +Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG +SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ +X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE +KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC +Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE +ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +SecureTrust CA +============== +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy +dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe +BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX +OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t +DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH +GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b +01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH +ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj +aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu +SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf +mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ +nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +Secure Global CA +================ +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH +bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg +MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg +Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx +YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ +bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g +8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV +HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi +0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn +oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA +MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ +OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn +CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 +3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +COMODO Certification Authority +============================== +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb +MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD +T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH ++7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww +xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV +4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA +1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI +rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k +b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC +AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP +OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc +IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN ++8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== +-----END CERTIFICATE----- + +Network Solutions Certificate Authority +======================================= +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG +EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr +IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx +MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx +jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT +aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT +crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc +/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB +AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv +bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA +A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q +4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ +GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD +ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +WellsSecure Public Root Certificate Authority +============================================= +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM +F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw +NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN +MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl +bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD +VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1 +iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13 +i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8 +bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB +K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB +AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu +cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm +lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB +i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww +GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI +K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0 +bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj +qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es +E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ +tylv2G0xffX8oRAHh84vWdw+WNs= +-----END CERTIFICATE----- + +COMODO ECC Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix +GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X +4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni +wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG +FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA +U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +IGC/A +===== +-----BEGIN CERTIFICATE----- +MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD +VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE +Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy +MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI +EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT +STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2 +TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW +So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy +HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd +frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ +tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB +egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC +iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK +q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q +MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg +Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI +lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF +0mBWWg== +-----END CERTIFICATE----- + +Security Communication EV RootCA1 +================================= +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE +BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl +Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO +/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX +WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z +ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4 +bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK +9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG +SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm +iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG +Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW +mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW +T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GA CA +=============================== +-----BEGIN CERTIFICATE----- +MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE +BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG +A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH +bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD +VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw +IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 +IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 +Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg +Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD +d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ +/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R +LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm +MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 ++vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa +hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY +okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= +-----END CERTIFICATE----- + +S-TRUST Authentication and Encryption Root CA 2005 PN +===================================================== +-----BEGIN CERTIFICATE----- +MIIEezCCA2OgAwIBAgIQNxkY5lNUfBq1uMtZWts1tzANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE +BhMCREUxIDAeBgNVBAgTF0JhZGVuLVd1ZXJ0dGVtYmVyZyAoQlcpMRIwEAYDVQQHEwlTdHV0dGdh +cnQxKTAnBgNVBAoTIERldXRzY2hlciBTcGFya2Fzc2VuIFZlcmxhZyBHbWJIMT4wPAYDVQQDEzVT +LVRSVVNUIEF1dGhlbnRpY2F0aW9uIGFuZCBFbmNyeXB0aW9uIFJvb3QgQ0EgMjAwNTpQTjAeFw0w +NTA2MjIwMDAwMDBaFw0zMDA2MjEyMzU5NTlaMIGuMQswCQYDVQQGEwJERTEgMB4GA1UECBMXQmFk +ZW4tV3VlcnR0ZW1iZXJnIChCVykxEjAQBgNVBAcTCVN0dXR0Z2FydDEpMCcGA1UEChMgRGV1dHNj +aGVyIFNwYXJrYXNzZW4gVmVybGFnIEdtYkgxPjA8BgNVBAMTNVMtVFJVU1QgQXV0aGVudGljYXRp +b24gYW5kIEVuY3J5cHRpb24gUm9vdCBDQSAyMDA1OlBOMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEA2bVKwdMz6tNGs9HiTNL1toPQb9UY6ZOvJ44TzbUlNlA0EmQpoVXhOmCTnijJ4/Ob +4QSwI7+Vio5bG0F/WsPoTUzVJBY+h0jUJ67m91MduwwA7z5hca2/OnpYH5Q9XIHV1W/fuJvS9eXL +g3KSwlOyggLrra1fFi2SU3bxibYs9cEv4KdKb6AwajLrmnQDaHgTncovmwsdvs91DSaXm8f1Xgqf +eN+zvOyauu9VjxuapgdjKRdZYgkqeQd3peDRF2npW932kKvimAoA0SVtnteFhy+S8dF2g08LOlk3 +KC8zpxdQ1iALCvQm+Z845y2kuJuJja2tyWp9iRe79n+Ag3rm7QIDAQABo4GSMIGPMBIGA1UdEwEB +/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFTVFJv +bmxpbmUxLTIwNDgtNTAdBgNVHQ4EFgQUD8oeXHngovMpttKFswtKtWXsa1IwHwYDVR0jBBgwFoAU +D8oeXHngovMpttKFswtKtWXsa1IwDQYJKoZIhvcNAQEFBQADggEBAK8B8O0ZPCjoTVy7pWMciDMD +pwCHpB8gq9Yc4wYfl35UvbfRssnV2oDsF9eK9XvCAPbpEW+EoFolMeKJ+aQAPzFoLtU96G7m1R08 +P7K9n3frndOMusDXtk3sU5wPBG7qNWdX4wple5A64U8+wwCSersFiXOMy6ZNwPv2AtawB6MDwidA +nwzkhYItr5pCHdDHjfhA7p0GVxzZotiAFP7hYy0yh9WUUpY6RsZxlj33mA6ykaqP2vROJAA5Veit +F7nTNCtKqUDMFypVZUF0Qn71wK/Ik63yGFs9iQzbRzkk+OBM8h+wPQrKBU6JIRrjKpms/H+h8Q8b +Hz2eBIPdltkdOpQ= +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA +========================= +-----BEGIN CERTIFICATE----- +MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE +BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL +EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0 +MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz +dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT +GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG +d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N +oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc +QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ +PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb +MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG +IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD +VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3 +LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A +dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn +AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA +4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg +AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA +egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6 +Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO +PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv +c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h +cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw +IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT +WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV +MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER +MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp +Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal +HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT +nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE +aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a +86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK +yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB +S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU= +-----END CERTIFICATE----- + +Certigna +======== +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw +EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 +MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI +Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q +XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH +GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p +ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg +DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf +Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ +tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ +BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J +SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA +hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ +ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu +PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY +1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +AC Ra\xC3\xADz Certic\xC3\xA1mara S.A. +====================================== +-----BEGIN CERTIFICATE----- +MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT +AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg +LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w +HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+ +U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh +IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN +yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU +2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3 +4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP +2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm +8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf +HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa +Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK +5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b +czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g +ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF +BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug +cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf +AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX +EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v +/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3 +MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4 +3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk +eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f +/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h +RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU +Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ== +-----END CERTIFICATE----- + +TC TrustCenter Class 2 CA II +============================ +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy +IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw +MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 +c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE +AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw +IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2 +xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ +Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u +SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB +7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 +Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU +cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i +SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G +dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ +KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj +TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP +JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk +vQ== +-----END CERTIFICATE----- + +TC TrustCenter Class 3 CA II +============================ +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy +IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw +MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 +c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE +AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W +yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo +6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ +uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk +2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB +7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 +Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU +cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i +SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE +O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8 +yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9 +IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal +092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc +5A== +-----END CERTIFICATE----- + +TC TrustCenter Universal CA I +============================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy +IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN +MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg +VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw +JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC +qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv +xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw +ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O +gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j +BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG +1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy +vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3 +ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT +ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a +7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY +-----END CERTIFICATE----- + +Deutsche Telekom Root CA 2 +========================== +-----BEGIN CERTIFICATE----- +MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT +RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG +A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5 +MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G +A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS +b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5 +bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI +KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY +AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK +Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV +jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV +HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr +E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy +zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8 +rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G +dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU +Cm26OWMohpLzGITY+9HPBVZkVw== +-----END CERTIFICATE----- + +ComSign CA +========== +-----BEGIN CERTIFICATE----- +MIIDkzCCAnugAwIBAgIQFBOWgxRVjOp7Y+X8NId3RDANBgkqhkiG9w0BAQUFADA0MRMwEQYDVQQD +EwpDb21TaWduIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0wNDAzMjQxMTMy +MThaFw0yOTAzMTkxNTAyMThaMDQxEzARBgNVBAMTCkNvbVNpZ24gQ0ExEDAOBgNVBAoTB0NvbVNp +Z24xCzAJBgNVBAYTAklMMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8ORUaSvTx49q +ROR+WCf4C9DklBKK8Rs4OC8fMZwG1Cyn3gsqrhqg455qv588x26i+YtkbDqthVVRVKU4VbirgwTy +P2Q298CNQ0NqZtH3FyrV7zb6MBBC11PN+fozc0yz6YQgitZBJzXkOPqUm7h65HkfM/sb2CEJKHxN +GGleZIp6GZPKfuzzcuc3B1hZKKxC+cX/zT/npfo4sdAMx9lSGlPWgcxCejVb7Us6eva1jsz/D3zk +YDaHL63woSV9/9JLEYhwVKZBqGdTUkJe5DSe5L6j7KpiXd3DTKaCQeQzC6zJMw9kglcq/QytNuEM +rkvF7zuZ2SOzW120V+x0cAwqTwIDAQABo4GgMIGdMAwGA1UdEwQFMAMBAf8wPQYDVR0fBDYwNDAy +oDCgLoYsaHR0cDovL2ZlZGlyLmNvbXNpZ24uY28uaWwvY3JsL0NvbVNpZ25DQS5jcmwwDgYDVR0P +AQH/BAQDAgGGMB8GA1UdIwQYMBaAFEsBmz5WGmU2dst7l6qSBe4y5ygxMB0GA1UdDgQWBBRLAZs+ +VhplNnbLe5eqkgXuMucoMTANBgkqhkiG9w0BAQUFAAOCAQEA0Nmlfv4pYEWdfoPPbrxHbvUanlR2 +QnG0PFg/LUAlQvaBnPGJEMgOqnhPOAlXsDzACPw1jvFIUY0McXS6hMTXcpuEfDhOZAYnKuGntewI +mbQKDdSFc8gS4TXt8QUxHXOZDOuWyt3T5oWq8Ir7dcHyCTxlZWTzTNity4hp8+SDtwy9F1qWF8pb +/627HOkthIDYIb6FUtnUdLlphbpN7Sgy6/lhSuTENh4Z3G+EER+V9YMoGKgzkkMn3V0TBEVPh9VG +zT2ouvDzuFYkRes3x+F2T3I5GN9+dHLHcy056mDmrRGiVod7w2ia/viMcKjfZTL0pECMocJEAw6U +AGegcQCCSA== +-----END CERTIFICATE----- + +ComSign Secured CA +================== +-----BEGIN CERTIFICATE----- +MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE +AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w +NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD +QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs +49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH +7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB +kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1 +9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw +AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t +U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA +j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC +AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a +BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp +FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP +51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz +OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw== +-----END CERTIFICATE----- + +Cybertrust Global Root +====================== +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li +ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 +MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD +ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA ++Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW +0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL +AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin +89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT +8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 +MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G +A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO +lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi +5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 +hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T +X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +ePKI Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx +MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq +MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs +IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi +lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv +qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX +12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O +WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ +ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao +lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ +vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi +Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi +MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 +1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq +KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV +xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP +NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r +GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE +xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx +gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy +sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD +BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +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 +============================================================================================================================= +-----BEGIN CERTIFICATE----- +MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH +DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q +aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry +b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV +BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg +S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4 +MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl +IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF +n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl +IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft +dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl +cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO +Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1 +xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR +6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL +hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd +BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4 +N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT +y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh +LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M +dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI= +-----END CERTIFICATE----- + +Buypass Class 2 CA 1 +==================== +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2 +MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh +c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M +cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83 +0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4 +0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R +uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P +AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV +1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt +7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2 +fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w +wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho +-----END CERTIFICATE----- + +Buypass Class 3 CA 1 +==================== +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1 +MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh +c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx +ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0 +n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia +AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c +1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P +AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7 +pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA +EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5 +htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj +el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915 +-----END CERTIFICATE----- + +EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 +========================================================================== +-----BEGIN CERTIFICATE----- +MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg +QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe +Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p +ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt +IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by +X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b +gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr +eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ +TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy +Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn +uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI +qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm +ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0 +Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB +/wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW +Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t +FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm +zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k +XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT +bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU +RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK +1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt +2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ +Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9 +AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT +-----END CERTIFICATE----- + +certSIGN ROOT CA +================ +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD +VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa +Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE +CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I +JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH +rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 +ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD +0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 +AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B +Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB +AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 +SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 +x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt +vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz +TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +CNNIC ROOT +========== +-----BEGIN CERTIFICATE----- +MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE +ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw +OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD +o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz +VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT +VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or +czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK +y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC +wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S +lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5 +Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM +O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8 +BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2 +G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m +mxE= +-----END CERTIFICATE----- + +ApplicationCA - Japanese Government +=================================== +-----BEGIN CERTIFICATE----- +MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT +SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw +MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl +cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4 +fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN +wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE +jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu +nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU +WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV +BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD +vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs +o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g +/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD +io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW +dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL +rosot4LKGAfmt1t06SAZf7IbiVQ= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G3 +============================================= +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 +IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz +NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo +YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT +LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j +K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE +c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C +IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu +dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr +2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 +cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE +Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s +t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +thawte Primary Root CA - G2 +=========================== +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC +VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu +IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg +Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV +MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG +b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt +IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS +LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 +8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN +G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K +rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +thawte Primary Root CA - G3 +=========================== +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w +ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD +VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG +A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At +P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC ++BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY +7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW +vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ +KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK +A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC +8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm +er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G2 +============================================= +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu +Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 +OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl +b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG +BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc +KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ +EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m +ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 +npaqBA+K +-----END CERTIFICATE----- + +VeriSign Universal Root Certification Authority +=============================================== +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u +IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj +1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP +MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 +9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I +AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR +tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G +CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O +a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 +Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx +Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx +P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P +wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 +mJO37M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G4 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC +VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 +b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz +ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU +cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo +b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 +Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz +rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw +HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u +Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD +A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx +AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +NetLock Arany (Class Gold) FÅ‘tanúsÃtvány +============================================ +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G +A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 +dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB +cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx +MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO +ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 +c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu +0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw +/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk +H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw +fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 +neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW +qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta +YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna +NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu +dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G2 +================================== +-----BEGIN CERTIFICATE----- +MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC +TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l +ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ +5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn +vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj +CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil +e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR +OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI +CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65 +48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi +trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737 +qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB +AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC +ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA +A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz ++51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj +f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN +kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk +CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF +URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb +CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h +oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV +IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm +66+KAQ== +-----END CERTIFICATE----- + +CA Disig +======== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK +QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw +MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz +bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm +GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD +Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo +hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt +ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w +gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P +AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz +aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff +ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa +BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t +WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3 +mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/ +CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K +ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA +4Z7CRneC9VkGjCFMhwnN5ag= +-----END CERTIFICATE----- + +Juur-SK +======= +-----BEGIN CERTIFICATE----- +MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA +c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw +DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG +SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy +aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf +TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC ++Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw +UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa +Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF +MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD +HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh +AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA +cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr +AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw +cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE +FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G +A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo +ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL +abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678 +IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh +Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2 +yyqcjg== +-----END CERTIFICATE----- + +Hongkong Post Root CA 1 +======================= +-----BEGIN CERTIFICATE----- +MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT +DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx +NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n +IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 +ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr +auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh +qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY +V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV +HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i +h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio +l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei +IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps +T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT +c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== +-----END CERTIFICATE----- + +SecureSign RootCA11 +=================== +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi +SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS +b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw +KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 +cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL +TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO +wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq +g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP +O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA +bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX +t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh +OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r +bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ +Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 +y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 +lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +ACEDICOM Root +============= +-----BEGIN CERTIFICATE----- +MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UEAwwNQUNFRElD +T00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMB4XDTA4 +MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEWMBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoG +A1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHk +WLn709gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7XBZXehuD +YAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5PGrjm6gSSrj0RuVFCPYew +MYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAKt0SdE3QrwqXrIhWYENiLxQSfHY9g5QYb +m8+5eaA9oiM/Qj9r+hwDezCNzmzAv+YbX79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbk +HQl/Sog4P75n/TSW9R28MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTT +xKJxqvQUfecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI2Sf2 +3EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyHK9caUPgn6C9D4zq9 +2Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEaeZAwUswdbxcJzbPEHXEUkFDWug/Fq +TYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz +4SsrSbbXc6GqlPUB53NlTKxQMA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU +9QHnc2VMrFAwRAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv +bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWImfQwng4/F9tqg +aHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3gvoFNTPhNahXwOf9jU8/kzJP +eGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKeI6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1Pwk +zQSulgUV1qzOMPPKC8W64iLgpq0i5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1 +ThCojz2GuHURwCRiipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oI +KiMnMCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZo5NjEFIq +nxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6zqylfDJKZ0DcMDQj3dcE +I2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacNGHk0vFQYXlPKNFHtRQrmjseCNj6nOGOp +MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o +tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA== +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCED9pHoGc8JpK83P/uUii5N0wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAx +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDlGb9to1ZhLZlIcfZn3rmN67eehoAKkQ76OCWvRoiC5XOooJskXQ0fzGVuDLDQ +VoQYh5oGmxChc9+0WDlrbsH2FdWoqD+qEgaNMax/sDTXjzRniAnNFBHiTkVWaR94AoDa3EeRKbs2 +yWNcxeDXLYd7obcysHswuiovMaruo2fa2wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFgVKTk8d6Pa +XCUDfGD67gmZPCcQcMgMCeazh88K4hiWNWLMv5sneYlfycQJ9M61Hd8qveXbhpxoJeUwfLaJFf5n +0a3hUKw8fGJLj7qE1xIVGx/KXQ/BUpQqEZnae88MNhPVNdwQGVnqlMEAv3WP2fr9dgTbYruQagPZ +RjXZ+Hxb +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94 +f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol +hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky +CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX +bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/ +D/xwzoiQ +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER +MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv +c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE +BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt +U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA +fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG +0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA +pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm +1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC +AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf +QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE +FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o +lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX +I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 +yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi +LXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi +=================================================== +-----BEGIN CERTIFICATE----- +MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz +ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3 +MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0 +cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u +aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY +8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y +jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI +JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk +9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD +AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG +SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d +F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq +D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4 +Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq +fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX +-----END CERTIFICATE----- + +GlobalSign Root CA - R3 +======================= +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt +iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ +0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 +rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl +OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 +xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 +lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 +EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E +bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 +YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r +kpeDMdmztcpHWD9f +-----END CERTIFICATE----- + +TC TrustCenter Universal CA III +=============================== +-----BEGIN CERTIFICATE----- +MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy +IFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAe +Fw0wOTA5MDkwODE1MjdaFw0yOTEyMzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNU +QyBUcnVzdENlbnRlciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0Ex +KDAmBgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF5+cvAqBNLaT6hdqbJYUt +QCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYvDIRlzg9uwliT6CwLOunBjvvya8o84pxO +juT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8vzArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+Eut +CHnNaYlAJ/Uqwa1D7KRTyGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1 +M4BDj5yjdipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBhMB8G +A1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI4jANBgkqhkiG9w0BAQUFAAOCAQEA +g8ev6n9NCjw5sWi+e22JLumzCecYV42FmhfzdkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+ +KGwWaODIl0YgoGhnYIg5IFHYaAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhK +BgePxLcHsU0GDeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV +CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPHLQNjO9Po5KIq +woIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg== +-----END CERTIFICATE----- + +Autoridad de Certificacion Firmaprofesional CIF A62634068 +========================================================= +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA +BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 +MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw +QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB +NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD +Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P +B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY +7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH +ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI +plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX +MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX +LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK +bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU +vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud +EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH +DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp +cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA +bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx +ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx +51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk +R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP +T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f +Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl +osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR +crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR +saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD +KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi +6Et8Vcad+qMUu2WFbm5PEn4KPJ2V +-----END CERTIFICATE----- + +Izenpe.com +========== +-----BEGIN CERTIFICATE----- +MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG +EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz +MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu +QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ +03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK +ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU ++zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC +PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT +OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK +F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK +0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+ +0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB +leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID +AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+ +SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG +NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx +MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l +Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga +kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q +hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs +g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5 +aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5 +nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC +ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo +Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z +WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== +-----END CERTIFICATE----- + +Chambers of Commerce Root - 2008 +================================ +-----BEGIN CERTIFICATE----- +MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy +Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl +ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF +EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl +cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA +XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj +h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ +ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk +NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g +D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 +lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ +0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj +ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 +EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI +G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ +BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh +bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh +bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC +CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH +AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 +wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH +3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU +RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 +M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 +YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF +9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK +zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG +nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg +OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ +-----END CERTIFICATE----- + +Global Chambersign Root - 2008 +============================== +-----BEGIN CERTIFICATE----- +MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx +NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg +Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ +QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD +aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf +VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf +XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 +ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB +/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA +TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M +H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe +Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF +HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh +wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB +AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT +BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE +BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm +aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm +aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp +1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 +dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG +/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 +ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s +dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg +9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH +foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du +qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr +P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq +c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z +09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B +-----END CERTIFICATE----- + +Go Daddy Root Certificate Authority - G2 +======================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu +MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G +A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq +9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD ++qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd +fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl +NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 +BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac +vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r +5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV +N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 +-----END CERTIFICATE----- + +Starfield Root Certificate Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 +eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw +DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg +VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB +dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv +W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs +bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk +N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf +ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU +JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol +TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx +4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw +F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ +c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +Starfield Services Root Certificate Authority - G2 +================================================== +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl +IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT +dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 +h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa +hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP +LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB +rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG +SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP +E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy +xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza +YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 +-----END CERTIFICATE----- + +AffirmTrust Commercial +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw +MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb +DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV +C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 +BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww +MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV +HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG +hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi +qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv +0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh +sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +AffirmTrust Networking +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw +MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE +Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI +dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 +/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb +h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV +HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu +UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 +12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 +WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 +/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +AffirmTrust Premium +=================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy +OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy +dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn +BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV +5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs ++7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd +GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R +p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI +S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 +6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 +/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo ++Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv +MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC +6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S +L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK ++4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV +BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg +IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 +g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb +zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== +-----END CERTIFICATE----- + +AffirmTrust Premium ECC +======================= +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV +BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx +MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U +cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ +N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW +BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK +BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X +57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM +eQ== +-----END CERTIFICATE----- + +Certum Trusted Network CA +========================= +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK +ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy +MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU +ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC +l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J +J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 +fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 +cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB +Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw +DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj +jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 +mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj +Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +Certinomis - Autorité Racine +============================= +-----BEGIN CERTIFICATE----- +MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK +Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg +LSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkG +A1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYw +JAYDVQQDDB1DZXJ0aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jYF1AMnmHa +wE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N8y4oH3DfVS9O7cdxbwly +Lu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWerP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw +2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92N +jMD2AR5vpTESOH2VwnHu7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9q +c1pkIuVC28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6lSTC +lrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1Enn1So2+WLhl+HPNb +xxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB0iSVL1N6aaLwD4ZFjliCK0wi1F6g +530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql095gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna +4NH4+ej9Uji29YnfAgMBAAGjWzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBQNjLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ +KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9sov3/4gbIOZ/x +WqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZMOH8oMDX/nyNTt7buFHAAQCva +R6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40 +nJ+U8/aGH88bc62UeYdocMMzpXDn2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1B +CxMjidPJC+iKunqjo3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjv +JL1vnxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG5ERQL1TE +qkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWqpdEdnV1j6CTmNhTih60b +WfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZbdsLLO7XSAPCjDuGtbkD326C00EauFddE +wk01+dIL8hf2rGbVJLJP0RyZwG71fet0BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/ +vgt2Fl43N+bYdJeimUV5 +-----END CERTIFICATE----- + +Root CA Generalitat Valenciana +============================== +-----BEGIN CERTIFICATE----- +MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE +ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290 +IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3 +WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE +CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2 +F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B +ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ +D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte +JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB +AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n +dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB +ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl +AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA +YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy +AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA +aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt +AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA +YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu +AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA +OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0 +dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV +BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G +A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S +b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh +TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz +Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63 +NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH +iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt ++GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM= +-----END CERTIFICATE----- + +A-Trust-nQual-03 +================ +-----BEGIN CERTIFICATE----- +MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE +Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy +a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R +dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw +RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0 +ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1 +c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA +zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n +yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE +SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4 +iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V +cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV +eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40 +ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr +sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd +JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS +mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6 +ahq97BvIxYSazQ== +-----END CERTIFICATE----- + +TWCA Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ +VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG +EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB +IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx +QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC +oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP +4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r +y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG +9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC +mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW +QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY +T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny +Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +Security Communication RootCA2 +============================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC +SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy +aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ ++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R +3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV +spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K +EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 +QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB +CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj +u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk +3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q +tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 +mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +EC-ACC +====== +-----BEGIN CERTIFICATE----- +MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE +BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w +ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD +VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE +CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT +BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7 +MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt +SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl +Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh +cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK +w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT +ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4 +HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a +E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw +0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD +VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0 +Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l +dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ +lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa +Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe +l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2 +E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D +5EI= +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions RootCA 2011 +======================================================= +-----BEGIN CERTIFICATE----- +MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT +O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y +aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT +AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo +IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI +1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa +71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u +8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH +3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/ +MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8 +MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu +b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt +XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 +TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD +/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N +7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4 +-----END CERTIFICATE----- + +Actalis Authentication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM +BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE +AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky +MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz +IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ +wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa +by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6 +zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f +YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2 +oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l +EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7 +hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8 +EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5 +jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY +iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI +WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0 +JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx +K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+ +Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC +4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo +2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz +lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem +OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9 +vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- + +Trustis FPS Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG +EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290 +IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV +BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ +RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk +H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa +cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt +o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA +AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd +BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c +GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC +yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P +8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV +l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl +iB6XzCGcKQENZetX2fNXlrtIzYE= +-----END CERTIFICATE----- + +StartCom Certification Authority +================================ +-----BEGIN CERTIFICATE----- +MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu +ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 +NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk +LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg +U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y +o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ +Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d +eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt +2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z +6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ +osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ +untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc +UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT +37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ +Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0 +dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu +c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv +bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0 +aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t +L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG +cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5 +fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm +N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN +Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T +tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX +e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA +2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs +HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE +JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib +D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8= +-----END CERTIFICATE----- + +StartCom Certification Authority G2 +=================================== +-----BEGIN CERTIFICATE----- +MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +RzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UE +ChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8O +o1XJJZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsDvfOpL9HG +4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnooD/Uefyf3lLE3PbfHkffi +Aez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/Q0kGi4xDuFby2X8hQxfqp0iVAXV16iul +Q5XqFYSdCI0mblWbq9zSOdIxHWDirMxWRST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbs +O+wmETRIjfaAKxojAuuKHDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8H +vKTlXcxNnw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM0D4L +nMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/iUUjXuG+v+E5+M5iS +FGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9Ha90OrInwMEePnWjFqmveiJdnxMa +z6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHgTuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJ +KoZIhvcNAQELBQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K +2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfXUfEpY9Z1zRbk +J4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl6/2o1PXWT6RbdejF0mCy2wl+ +JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG +/+gyRr61M3Z3qAFdlsHB1b6uJcDJHgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTc +nIhT76IxW1hPkWLIwpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/Xld +blhYXzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5lIxKVCCIc +l85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoohdVddLHRDiBYmxOlsGOm +7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulrso8uBtjRkcfGEvRM/TAXw8HaOFvjqerm +obp573PYtlNXLfbQ4ddI +-----END CERTIFICATE----- + +Buypass Class 2 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X +DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 +g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn +9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b +/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU +CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff +awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI +zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn +Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX +Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs +M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI +osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S +aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd +DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD +LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 +oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC +wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS +CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN +rJgWVqA= +-----END CERTIFICATE----- + +Buypass Class 3 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X +DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH +sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR +5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh +7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ +ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH +2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV +/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ +RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA +Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq +j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G +uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG +Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 +ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 +KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz +6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug +UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe +eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi +Cp/HuZc= +-----END CERTIFICATE----- + +TÜRKTRUST Elektronik Sertifika Hizmet SaÄŸlayıcısı +====================================================== +-----BEGIN CERTIFICATE----- +MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP +MA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg +QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4X +DTA3MTIyNTE4MzcxOVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxl +a3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMCVFIxDzAN +BgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp +bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4gKGMpIEFyYWzEsWsgMjAwNzCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9N +YvDdE3ePYakqtdTyuTFYKTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQv +KUmi8wUG+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveGHtya +KhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6PIzdezKKqdfcYbwnT +rqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M733WB2+Y8a+xwXrXgTW4qhe04MsC +AwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHkYb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/s +Px+EnWVUXKgWAkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I +aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5mxRZNTZPz/OO +Xl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsaXRik7r4EW5nVcV9VZWRi1aKb +BFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZqxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAK +poRq0Tl9 +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 3 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx +MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK +9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU +NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF +iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W +0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr +AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb +fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT +ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h +P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== +-----END CERTIFICATE----- + +EE Certification Centre Root CA +=============================== +-----BEGIN CERTIFICATE----- +MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy +dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw +MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB +UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy +ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM +TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2 +rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw +93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN +P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ +MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF +BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj +xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM +lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u +uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU +3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM +dcGWxZ0= +-----END CERTIFICATE----- diff --git a/plugin/spore/version.php b/plugin/spore/version.php new file mode 100755 index 0000000000000000000000000000000000000000..3a08ece7d7556fcc45163be4a642e164c602ae65 --- /dev/null +++ b/plugin/spore/version.php @@ -0,0 +1,11 @@ +<?php +/** spore php client + * + * @package + * @subpackage + * @copyright 2015 unistra {@link http://unistra.fr} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +$plugin->component = 'local_spore'; // Full name of the plugin (used for diagnostics) +$plugin->version = 2020013100; // The current plugin version (Date: YYYYMMDDXX) +$plugin->requires = 2018051708; // Requires this Moodle version