From 43965240c04bde44909db5d1a6c23a918ae7c440 Mon Sep 17 00:00:00 2001 From: Dmitry Fedyuk Date: Mon, 19 Dec 2016 09:28:55 +0300 Subject: [PATCH] 1.2.0 --- gems/2.2.2/bin/airbrake | 23 - gems/2.2.2/cache/airbrake-4.3.0.gem | Bin 204288 -> 0 bytes gems/2.2.2/gems/airbrake-4.3.0/CHANGELOG | 1564 -------- gems/2.2.2/gems/airbrake-4.3.0/Gemfile | 3 - gems/2.2.2/gems/airbrake-4.3.0/Guardfile | 6 - gems/2.2.2/gems/airbrake-4.3.0/INSTALL | 20 - gems/2.2.2/gems/airbrake-4.3.0/LICENSE | 61 - gems/2.2.2/gems/airbrake-4.3.0/README.md | 148 - .../airbrake-4.3.0/README_FOR_HEROKU_ADDON.md | 102 - gems/2.2.2/gems/airbrake-4.3.0/Rakefile | 179 - gems/2.2.2/gems/airbrake-4.3.0/TESTED_AGAINST | 7 - .../gems/airbrake-4.3.0/airbrake.gemspec | 41 - gems/2.2.2/gems/airbrake-4.3.0/bin/airbrake | 12 - .../airbrake-4.3.0/features/metal.feature | 34 - .../gems/airbrake-4.3.0/features/rack.feature | 60 - .../airbrake-4.3.0/features/rails.feature | 324 -- .../gems/airbrake-4.3.0/features/rake.feature | 33 - .../airbrake-4.3.0/features/sinatra.feature | 126 - .../features/step_definitions/file_steps.rb | 14 - .../features/step_definitions/rack_steps.rb | 27 - .../rails_application_steps.rb | 267 -- .../features/step_definitions/rake_steps.rb | 22 - .../support/airbrake_shim.rb.template | 11 - .../airbrake-4.3.0/features/support/aruba.rb | 5 - .../airbrake-4.3.0/features/support/env.rb | 39 - .../features/support/matchers.rb | 35 - .../airbrake-4.3.0/features/support/rails.rb | 156 - .../features/support/rake/Rakefile | 77 - .../features/user_informer.feature | 57 - .../generators/airbrake/airbrake_generator.rb | 94 - .../airbrake/lib/insert_commands.rb | 34 - .../generators/airbrake/lib/rake_commands.rb | 24 - .../airbrake/templates/airbrake_tasks.rake | 25 - .../airbrake/templates/capistrano_hook.rb | 6 - .../airbrake/templates/initializer.rb | 4 - gems/2.2.2/gems/airbrake-4.3.0/install.rb | 1 - .../2.2.2/gems/airbrake-4.3.0/lib/airbrake.rb | 189 - .../airbrake-4.3.0/lib/airbrake/backtrace.rb | 103 - .../airbrake-4.3.0/lib/airbrake/capistrano.rb | 101 - .../lib/airbrake/capistrano3.rb | 3 - .../airbrake-4.3.0/lib/airbrake/cli/client.rb | 76 - .../lib/airbrake/cli/options.rb | 45 - .../lib/airbrake/cli/printer.rb | 33 - .../lib/airbrake/cli/project.rb | 17 - .../lib/airbrake/cli/project_factory.rb | 39 - .../airbrake-4.3.0/lib/airbrake/cli/runner.rb | 49 - .../lib/airbrake/cli/validator.rb | 8 - .../lib/airbrake/configuration.rb | 366 -- .../lib/airbrake/jobs/send_job.rb | 7 - .../airbrake-4.3.0/lib/airbrake/notice.rb | 396 -- .../gems/airbrake-4.3.0/lib/airbrake/rack.rb | 64 - .../gems/airbrake-4.3.0/lib/airbrake/rails.rb | 45 - .../rails/action_controller_catcher.rb | 32 - .../lib/airbrake/rails/controller_methods.rb | 124 - .../lib/airbrake/rails/error_lookup.rb | 35 - .../lib/airbrake/rails/middleware.rb | 63 - .../lib/airbrake/rails3_tasks.rb | 126 - .../airbrake-4.3.0/lib/airbrake/railtie.rb | 47 - .../lib/airbrake/rake_handler.rb | 75 - .../airbrake-4.3.0/lib/airbrake/response.rb | 29 - .../airbrake-4.3.0/lib/airbrake/sender.rb | 206 - .../lib/airbrake/shared_tasks.rb | 60 - .../airbrake-4.3.0/lib/airbrake/sidekiq.rb | 8 - .../airbrake-4.3.0/lib/airbrake/sinatra.rb | 40 - .../gems/airbrake-4.3.0/lib/airbrake/tasks.rb | 81 - .../lib/airbrake/tasks/airbrake.cap | 29 - .../lib/airbrake/user_informer.rb | 36 - .../lib/airbrake/utils/params_cleaner.rb | 142 - .../lib/airbrake/utils/rack_filters.rb | 45 - .../airbrake-4.3.0/lib/airbrake/version.rb | 3 - .../gems/airbrake-4.3.0/lib/airbrake_tasks.rb | 64 - .../generators/airbrake/airbrake_generator.rb | 155 - .../airbrake-4.3.0/lib/templates/rescue.erb | 91 - gems/2.2.2/gems/airbrake-4.3.0/rails/init.rb | 1 - .../gems/airbrake-4.3.0/resources/README.md | 34 - .../resources/airbrake_3_0.json | 52 - .../airbrake-4.3.0/resources/ca-bundle.crt | 3376 ----------------- .../gems/airbrake-4.3.0/resources/notice.xml | 1 - .../airbrake-4.3.0/script/integration_test.rb | 35 - .../test/airbrake_tasks_test.rb | 167 - .../airbrake-4.3.0/test/backtrace_test.rb | 215 -- .../airbrake-4.3.0/test/capistrano_test.rb | 43 - .../airbrake-4.3.0/test/configuration_test.rb | 303 -- .../test/controller_methods_test.rb | 171 - gems/2.2.2/gems/airbrake-4.3.0/test/helper.rb | 233 -- .../gems/airbrake-4.3.0/test/integration.rb | 14 - .../test/integration/catcher_test.rb | 371 -- .../gems/airbrake-4.3.0/test/logger_test.rb | 79 - .../gems/airbrake-4.3.0/test/notice_test.rb | 488 --- .../gems/airbrake-4.3.0/test/notifier_test.rb | 288 -- .../test/params_cleaner_test.rb | 184 - .../gems/airbrake-4.3.0/test/rack_test.rb | 62 - .../test/rails_initializer_test.rb | 36 - .../airbrake-4.3.0/test/recursion_test.rb | 10 - .../gems/airbrake-4.3.0/test/response_test.rb | 18 - .../gems/airbrake-4.3.0/test/sender_test.rb | 319 -- .../test/support/response_shim.xml | 4 - .../airbrake-4.3.0/test/user_informer_test.rb | 29 - .../specifications/airbrake-4.3.0.gemspec | 93 - plugin.rb | 40 +- 100 files changed, 30 insertions(+), 13309 deletions(-) delete mode 100644 gems/2.2.2/bin/airbrake delete mode 100644 gems/2.2.2/cache/airbrake-4.3.0.gem delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/CHANGELOG delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/Gemfile delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/Guardfile delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/INSTALL delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/LICENSE delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/README.md delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/README_FOR_HEROKU_ADDON.md delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/Rakefile delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/TESTED_AGAINST delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/airbrake.gemspec delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/bin/airbrake delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/features/metal.feature delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/features/rack.feature delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/features/rails.feature delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/features/rake.feature delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/features/sinatra.feature delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/features/step_definitions/file_steps.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/features/step_definitions/rack_steps.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/features/step_definitions/rails_application_steps.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/features/step_definitions/rake_steps.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/features/support/airbrake_shim.rb.template delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/features/support/aruba.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/features/support/env.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/features/support/matchers.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/features/support/rails.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/features/support/rake/Rakefile delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/features/user_informer.feature delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/airbrake_generator.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/lib/insert_commands.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/lib/rake_commands.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/templates/airbrake_tasks.rake delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/templates/capistrano_hook.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/templates/initializer.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/install.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/backtrace.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/capistrano.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/capistrano3.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/client.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/options.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/printer.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/project.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/project_factory.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/runner.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/validator.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/configuration.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/jobs/send_job.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/notice.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rack.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails/action_controller_catcher.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails/controller_methods.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails/error_lookup.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails/middleware.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails3_tasks.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/railtie.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rake_handler.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/response.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/sender.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/shared_tasks.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/sidekiq.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/sinatra.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/tasks.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/tasks/airbrake.cap delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/user_informer.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/utils/params_cleaner.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/utils/rack_filters.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/version.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake_tasks.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/rails/generators/airbrake/airbrake_generator.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/lib/templates/rescue.erb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/rails/init.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/resources/README.md delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/resources/airbrake_3_0.json delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/resources/ca-bundle.crt delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/resources/notice.xml delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/script/integration_test.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/airbrake_tasks_test.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/backtrace_test.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/capistrano_test.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/configuration_test.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/controller_methods_test.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/helper.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/integration.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/integration/catcher_test.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/logger_test.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/notice_test.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/notifier_test.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/params_cleaner_test.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/rack_test.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/rails_initializer_test.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/recursion_test.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/response_test.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/sender_test.rb delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/support/response_shim.xml delete mode 100644 gems/2.2.2/gems/airbrake-4.3.0/test/user_informer_test.rb delete mode 100644 gems/2.2.2/specifications/airbrake-4.3.0.gemspec diff --git a/gems/2.2.2/bin/airbrake b/gems/2.2.2/bin/airbrake deleted file mode 100644 index 372bc63..0000000 --- a/gems/2.2.2/bin/airbrake +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/ruby2.2 -# -# This file was generated by RubyGems. -# -# The application 'airbrake' is installed as part of a gem, and -# this file is here to facilitate running it. -# - -require 'rubygems' - -version = ">= 0" - -if ARGV.first - str = ARGV.first - str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding - if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then - version = $1 - ARGV.shift - end -end - -gem 'airbrake', version -load Gem.bin_path('airbrake', 'airbrake', version) diff --git a/gems/2.2.2/cache/airbrake-4.3.0.gem b/gems/2.2.2/cache/airbrake-4.3.0.gem deleted file mode 100644 index 5adf63704c74ab90514a11de253998685ff33704..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204288 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%0AeOZAO9*VZDr=P8bej4)K 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%0DjY&HUS1{-u)MTvPvJc{v@ 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 O1Aj5_7X$yV82B6JYax#S diff --git a/gems/2.2.2/gems/airbrake-4.3.0/CHANGELOG b/gems/2.2.2/gems/airbrake-4.3.0/CHANGELOG deleted file mode 100644 index cfe5761..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/CHANGELOG +++ /dev/null @@ -1,1564 +0,0 @@ -Version 4.3.0 - 2015-06-23 19:36:10 -0500 -=============================================================================== - -Omer Gazit (1): - Add ability to define whitelist filters for parameters - -shifi (7): - use top level namespace and stay compatible with Rails 2.x - fixes #388 - update to match new changes - support whitelist and blacklist approach for params filters and support nested filter arrays - add more tests for params cleaner - Merge branch 'feature/whitelist-params-filters' - add HTTP_AUTHORIZATION to rack filters - make sure we remove all sensitive rack vars - - -Version 4.2.1 - 2015-06-01 22:12:49 -0500 -=============================================================================== - -Marko Šiftar (3): - Merge pull request #384 from biske/improve-notify-documentation - Merge pull request #385 from arrtchiu/patch-2 - Merge pull request #386 from airbrake/fix/check-if-failsafe-middleware-is-defined - -Phuong Nguyen (1): - Insert UserInformer middleware before Rack::Runtime since Rack::Lock may not be available for app with websocket-rails - -arrtchiu (1): - Support Rails 4 without ActiveRecord - -shifi (7): - typo in changelog - add more args in deploy CLI - fixes #296 - update CLI help info - do not require pry - fix typo - check if failsafe middleware is defined - fixes #379 - fix conflicts - Merge branch 'phuongnd08-master' - -Иван Бишевац (1): - Improves documentation for notify method - - -Version 4.2.0 - 2015-05-27 19:05:32 -0500 -=============================================================================== - -Abdelkader Boudih (1): - Update sidekiq.rb - -Adam King (1): - Fix DEFAULT_BACKTRACE_FILTERS bug that caused backtrace to not show up in certain contexts. See https://github.com/airbrake/airbrake/issues/343. - -David (8): - Merge pull request #329 from grosser/grosser/gemspec - Merge pull request #335 from airbrake/fix/cucumber-suite - Merge pull request #327 from airbrake/feature/faster-params-cleaning - Merge pull request #337 from airbrake/fix/rails4-is-here - Merge pull request #326 from airbrake/fix/cast-ENV-to-Hash - Merge pull request #328 from grosser/grosser/dup - Merge pull request #334 from airbrake/fix/user-info-consumes-db-connections - Merge pull request #340 from grosser/grosser/dup - -David Palm (9): - Cast CGI data to hash, as that's what the code really expects - Speed up notice generation by avoiding copying data and putting most common cases on top - Refactor #airbrake_current_user - Typo - Add comment explaining why we release connections - Comment out @wip scenarios to facilitate running parts of the suite - Add 4 to version sniffing code - PR feedback - Clone to ensure we do not mess with the provided data - -Eero Raun (1): - Ignore RACK_ENV if it is empty (capistrano deploy), fixes #341. - -Jonathan Worek (1): - Assumption of existence of :app role may not be valid - -Marko Šiftar (3): - Merge pull request #354 from wojobucco/patch-1 - Merge pull request #342 from oree/341 - Merge pull request #382 from airbrake/fix/use-proper-capistrano-hook - -Martin Tepper (1): - This should fix #369 - -grosser (3): - cleanup gemspec - fix having symbols in the environment blows up filter_parameters with blocks - If we cannot stringify then at least rescue the dup exceptions ... - -halida (1): - fix rails request.fullpath behavior change in 4.1.6 -- no longer has leading / - -shifi (16): - add test for filtering frozen objects - Merge branch 'Promptus-issue_369_frozen_array_issue' - update Appraisals file - Merge branch 'master' of https://github.com/halida/airbrake into halida-master - remove whitespaces - add test for airbrake_request_url - Merge branch 'halida-master' - update year in license and readme - use proper capistrano hook depending on capistrano version - set localhost IP to satisfy web console when testing in development - Merge branch 'patch-1' of https://github.com/seuros/airbrake into seuros-patch-1 - fix syntax error in Sidekiq configuration - Merge branch 'seuros-patch-1' - Merge branch 'master' of https://github.com/developwithvelocity/airbrake into developwithvelocity-master - tests for backtrace default filters - gem paths - Merge branch 'developwithvelocity-master' - - -Version 4.1.0 - 2014-09-04 23:16:08 +0200 -=============================================================================== - -Benjamin Fleischer (1): - Add license to gemspec, is MIT - -Chun-wei Kuo (1): - Add missing RAILS_ENV to the deploy notification task for Capistrano 3 - -David (1): - Merge pull request #306 from kiela/master - -Giovanni Cappellotto (1): - Add support for Sidekiq > 3 - -Kamil Kieliszczyk (2): - Add ability to filter arrays - Add ability to filter arrays - -Kelley Reynolds (1): - Ignore ActionController::UnknownFormat for Rails 4+ which is now handled by middleware - -Marko Šiftar (11): - Revert "Add ability to filter arrays" - Merge pull request #307 from airbrake/revert-306-master - Merge pull request #305 from Domon/fix-capistrano3-task - Merge pull request #302 from gregory/remove_unused_controller - Merge pull request #310 from kiela/master - Merge pull request #271 from rykov/master - Merge pull request #275 from kreynolds/rails-4-unknown-format - Merge pull request #312 from bf4/add_license_to_gemspe - Merge pull request #304 from pitchtarget/sidekiq-support - Merge pull request #273 from meetme2meat/master - Merge pull request #300 from chute/master - -Michael Rykov (1): - Keep passed exception if original_exception is nil - -Petr Bela (1): - Add RACK_ENV to rake task for non-Rails apps - -Sami Haahtinen (1): - Update capistrano v3 support - -Viren Negi (1): - Added a comment to how to add specify environment when use with rack app - -gregory (1): - remove unused controller - -shifi (4): - update capistrano test to make sure we set RAILS_ENV when using rake task - Update ignored exceptions by default in Readme - fix conflicts in airbrake.cap - Merge branch 'ressu-capistrano3' - - -Version 4.0.0 - 2014-05-27 16:32:26 -0700 -=============================================================================== - -Ali Faiz (2): - Remove the Airbrake JS notifier for the major release. - - -Version 3.2.1 - 2014-05-27 15:58:24 -0700 -=============================================================================== - -Ali Faiz (3): - Revert "Merge pull request #297 from airbrake/remove-js-notifier" - Add deprecation warning when using . - - -Version 3.2.0 - 2014-05-23 17:37:35 -0700 -=============================================================================== - -Ali Faiz (4): - Remove JS notifier from templates and libraries - Cleanup references to JS notifier in tests - Merge pull request #297 from airbrake/remove-js-notifier - - -Version 3.1.17 - 2014-05-20 21:00:25 -0700 -=============================================================================== - -Alex Tomlins (1): - Only send notices if configured with api_key - -Ali Faiz (22): - Add tasks specific for using appraisal to test different versions - Ensure that integration tests can use the same helpers as unit tests - Fix errors causing features to fail - Add sqlite3 for Rails 3.2 & 4.0 appraisal gems - Fix integrations with Rails 3.0 by locking sucker_punch to v1.0.2. - Update README.md - Merge pull request #285 from airbrake/adjust-ci-integration - Merge pull request #281 from jhawthorn/fix_actioncontroller_metal - Merge pull request #268 from alphagov/disable_unless_configured - Merge pull request #287 from itolmach/master - Add apikey to certain cucumber tests for changes for configured - Merge pull request #288 from airbrake/fix-apikey-related-tests - Merge pull request #277 from polleverywhere/rails3_filter_parameters - Merge pull request #262 from roqua/mv-regex-filters - Fix filtering checks in cucumber tests by checking for 'key=' instead of blind check - Make separate step for the cucumber test that checks for filtered keys - Merge pull request #289 from airbrake/fix-regex-filtering - Write verbose output when configuration prevents sending notices to Airbrake. - Merge pull request #294 from Nitrodist/ensure-rake-integration - Merge pull request #295 from airbrake/add-context-when-notice-not-sent - Merge pull request #293 from Nitrodist/use-minitest-4 - Use tag date instead of trying to sort on tag name - -Ivan Tolmachev (3): - added airbrakeman notifier ruby illustration - illustration added, take 2 - Added Airbrakeman Notifier Illustration - -John Hawthorn (1): - fix middleware for AC::Metal on rails 3.2 - -Version 3.1.16 - 2014-03-11 13:34:51 -0700 -=============================================================================== - -Joseph Silvashy (5): - Merge pull request #267 from nberger/fix-typo-in-rails3-tasks - Update license for Rackspace - Merge pull request #255 from viperdezigns/capistrano3 - Bump to 3.1.14 - Bump to 3.1.16 - -Mark Campbell (2): - Add minitest 4.x as an explicit dependency - Ensure rake integration is enabled when rescue_rake_exceptions is true - -Marten Veldthuis (3): - Add support for regexp filters - Refactor cgi_data filtering to use `filter_key?` - Add a default rack env filter for variables matching "secret" or "password". - -Mike Foley (2): - Add backwards compatibility for filter_parameters in Rails3 - Add tests, minor refactor for Rails 3 functionality - -Nicolas Berger (1): - Fix typo: Rack -> Rake - -Richard Pernikoff (3): - execute instead of run - get full revision hash and send correct repo url - execute the rake task within the release_path instead of running cd release_path. - -ViperDezigns (1): - Merge pull request #2 from tunespeak/capistrano3 - -spodlecki (7): - adding capistrano 3 - attempting err fixes - release_path - making repo name a env var - adding airbrake escape user method - logger.info doesn't exist, seems Cap uses info() now - execute instead of run - - -Version 3.1.15 - 2014-01-03 14:37:38 +0100 -=============================================================================== - -Ahmad Sherif (1): - Don't serialize nil to an empty string - -Damon Morgan (1): - Support sucker_punch for async processor - -David Palm (1): - Give params_filter a setter so it can be *set* (not only appended to) - -Hrvoje Šimić (14): - add Rails 4 to README.md - use Coveralls for code coverage - use Gemnasium for dependency monitoring - use Code Climate for code analysis - extract ParamsCleaner class - being more careful with javascript_notifier and non-public requests - Bumping to version 3.1.14 - add Circle CI badge - rename :test task to 'test:unit' - use parallel gem installation on CI server - enable pry debugging in tests - add test for #251 - enable filtering of sensitive Rack vars by default - start using MultiJson - -Marko Šiftar (1): - fix deploy uri - -Marten Veldthuis (1): - Airbrake rakefile is not compatible with Capistrano v3 - -Rodrigo Saito (1): - Handle error when variable sinatra.error is present - - -Version 3.1.14 - 2013-08-22 09:03:14 +0200 -=============================================================================== - -Hrvoje Šimić (5): - use Coveralls for code coverage - use Gemnasium for dependency monitoring - use Code Climate for code analysis - extract ParamsCleaner class - being more careful with javascript_notifier and non-public requests - - -Version 3.1.13 - 2013-08-20 09:39:41 +0200 -=============================================================================== - -Anton Minin (1): - Fix notice crash on empty cgi_data - -Cedric Brancourt (2): - fixes #231 When no session in controller , airbrake_session_data returns {:session => "no session found"} - fixes airbrake/airbrake#233 duplicate cgi_data in Notice params - -Chris Gunther (2): - Coerce user attributes to strings before checking that they are valid. - Reject invalid user attributes on assignment - -Hongli Lai (Phusion) (1): - Add support for SSL in the command line tool. - -Hrvoje Šimić (22): - better explanation of ignored environments and classes - add test for warnings about user attributes - remove unnecessary active record requirements - remove platform checks from nil logger initialization - update bourne dependency to fix test-running issues with ruby 2.0.0 - test against ruby 2.0.0 on a CI server - remove mocha deprecation warnings - be more careful when reading sinatra environment name - wrap the js configuration in try-catch - ignore Gemfile.lock - lock json-schema to 1.0.12 - add a scenario for ignoring rake exceptions [#223] - get rid of activesupport once and for all - fully support Rails 4.0 - stop using appraisals for unit tests - fix formatting of airbrake_session_data - fix test for no session controller [#232] - include actionpack and activesupport in gemspec for tests - cleaning up tests - cleaning the codebase from warnings issued in ruby verbose mode - remove private writers and use instance variables to remove warnings - fixing changeling's version sorting - -Jason Petersen (1): - Escape user name in Airbrake notify command - -Konstantin Zub (1): - return environment_info unless environment_name - -Kris Kemper (1): - Allow backtrace to be a String - -Nathan Broadbent (1): - Use a separate (blank) array of ignored exceptions for Rake tasks - -Subhash Chandra (1): - split javascript notifier into loader and configuration - -Tony Spore (1): - use 'bundle exec' in capistrano task - - -Version 3.1.12 - 2013-04-29 18:48:40 +0200 -=============================================================================== - -Arvind Kunday (1): - Removing the .erb template handler - -Hrvoje Šimić (8): - introducing null logger for fallback - add missing logger requirement - being careful with silencing of rake backtrace in the airbrake:test task - support for Rails 4.0 - start using remote XSD file when verifying XML in tests - throw a warning for unsupported user attributes - updating outdated step definition for current user feature - speeding up the test by using 'runner' instead of 'server' - -knapo (1): - Fix Airbrake::Sender#log to log messages when logger is not passed to options. - - -Version 3.1.11 - 2013-04-11 12:44:09 +0200 -=============================================================================== - -Eric Jensen (1): - add --scm-revision option to cli - -Hrvoje Šimić (10): - update tested rails versions - reverting parts of 8768b1 that caused broken XML - update integration test - stop cluttering STDERR from rake airbrake:test - test coverage for Airbrake::Response - introduce configurable test mode - add the test mode option to the generator - update the test suite to use the test mode accordingly - stop using the 'progress' format when running features - fix defaults in integration test - -Kenneth Kalmer (2): - Wrap the JS notifier configuration in a try..catch, since the notifier JS might have failed to load - Set a noop window.onerror in the event Airbrake is not available - -Mark J. Titorenko (1): - Use env rather than @env when constructing fallback request data. - -Marko Šiftar (1): - pretty formatting of notice details - - -Version 3.1.10 - 2013-04-03 15:41:13 +0200 -=============================================================================== - -Mark J. Titorenko (1): - Use env rather than @env when constructing fallback request data. - - -Version 3.1.9 - 2013-03-25 20:06:10 +0100 -=============================================================================== - -Bartosz Knapik (2): - .rbenv-version should be in gitignore - replace current_release with release_path - -Chas Lemley (1): - correctly use config.user_attributes= - -Hrvoje Šimić (6): - Update year in README - thread safety fix - add the secure option to the generator - fix the broken generator method call - be more careful with @template in javascript notifier - update tested rails versions - -Marko Šiftar (2): - just collect id by default - update test suite (user details) - -Robert Glaser (1): - log failed certicate verifications - -Thilo-Alexander Ginkel (1): - Partial thread-safety fix - -Thom Mahoney (1): - Airbake::Backtrace::Line#method => #method_name - -jokerswanted (1): - Update README.md - - -Version 3.1.8 - 2013-02-05 16:29:43 +0100 -=============================================================================== - -Hrvoje Šimić (5): - rename SUPPORTED_RAILS_VERSIONS to TESTED_AGAINST - don't call id on nil - fixes #177 - move our middleware right after exception middleware (#178) - implement tests for #178 - be nice to older rails versions - - -Version 3.1.7 - 2013-01-28 13:35:10 +0100 -=============================================================================== - -Adam Duke (1): - fix an error if not using ActionController::Base - -Ben Arent (2): - Update to Readme.md - 2013! woot. - -Cory Kaufman-Schofield (1): - Use https for rake airbrake:test if force_ssl set to true (fixes #145) - -Dmitry Medvinsky (1): - Fix notifier API URL as per Airbrake docs - -George Ogata (1): - Ignore ActionController::UnknownHttpMethod by default. - -Hrvoje Šimić (59): - move dependencies from Gemfile - CI test only for 3.0.0 for now - use appraisal - use aruba instead of home-grown terminal - fix *ALL* the tests! - remove bundler version - support all major rails versions for now - add bundler dependency - destroy rvmrc - update appraisals - add task for bundling bundler - remove gemfile locks - update appraisals - clean up README - logo is not needed in README - update the integration tests - update testing instructions - use CircleCI for continuous integration - update rake default task - mark heroku tests as wip for now - Clean up the rake task - stop cluttering STDOUT with trace of rake tasks - update supported rails versions - send framework info - use specific version of builder - update appraisals - revert "use specific version of builder" - remove hard dependency on girl_friday - update thoughtbot logo - update test suite to newer Rails versions - unfreezing version - More description about development environments - make sure we don't set env["airbrake.error_id"] for async notices - stop extending Object, use ActiveSupport instead - blank? instead of nil? || empty? - move XSD schema to resources - enable sending to new JSON API (#163) - define headers in Sender - ignore gemfile.locks - make sending to new JSON API disabled by default (#163) - don't use named groups in regexes, they are ruby 1.9 only (#162) - make sure we close the body even if exception occurs (closes #153) - Rails::Application::Configuration.force_ssl is undefined for Rails 3.0.x - update the test suite - update the default rake task - add the ability to pass a single feature to rake test task - tests support Rack::BodyProxy now - use rails 4 compatible routes in tests - remove unnecessary local variables - stop with monkeypatchig of Rails exception middleware - style fixes - require the new middleware in tests - better handler for adding Heroku deploy hooks (#167) - support multiple apps in Heroku deploy hooks task (#166) - read every available parameter for deploy hook from ENV (#168) - fallback to reading API key from ENV for deploy hooks - freshen up Heroku readme - set username and revision from Heroku variables (#168) - automatically get remote origin for deploy hooks (#168) - -Joel Friedlaender (1): - configuring development environments - -Jon Evans (1): - Use "get" instead of "match" for verify route - -Josh Goebel (1): - clean_rack_request_data should also filter out "action_dispatch.secret_token" to prevent passing a Rails applications secret token - -Kyle Wilkinson (1): - Fix broken gemspec with missing file names. MIT-LICENSE is now just called LICENSE and there is no TESTING.md - -Manuel Meurer (1): - Use Airbrake.notify_or_ignore instead of just Airbrake.notify in notify_airbrake controller method - -Marko Šiftar (3): - better Sinatra handling - fix typo - add framework info for Sinatra and Rack - -Morgan Mikel McDaris (3): - fixed the heroku airbrake.rb generation - fixed the heroku airbrake.rb generation - made supported versions into a link - -Pedro Nascimento (1): - Allow virtual attributes to be used in user data instead of just attributes. - -Ryan Souza (1): - Prettier rake exception actions - -cielavenir (1): - airbrake_javascript_notifier_options should be externalized - - -Version 3.1.6 - 2012-10-23 21:15:50 +0200 -=============================================================================== - -Hrvoje Šimić (9): - load api key from file and env if not provided for executable - get a list of your projects from command line - create projects from command line - fix cli client host - creating deploys from command line - don't override extension methods - update heroku plan in readme - another fix for heroku readme - don't pollute global namespace with blank? - -Sam Umbach (1): - Send deploy notification on deploy:cold - - -Version 3.1.5 - 2012-10-05 17:32:23 +0200 -=============================================================================== - -Hrvoje Šimić (3): - make collected user attributes customizable - enable filtering of env vars for rake handler - add a simple executable - -Morgan Mikel McDaris (1): - rake section added - -Zachary Anker (2): - Add the ability to pass XML directly to send_to_airbrake - Remove active_support require since it's no longer necessary - - -Version 3.1.4 - 2012-09-11 04:31:51 +0200 -=============================================================================== - -Ben Arent (1): - Update to MIT license to reflect new ownership. - -Hrvoje Šimić (4): - remove activesupport from runtime dependencies - use different logger for async notices - Merge pull request #118 from exviva/load_initializer_conditionally - symbolize user's keys - -Olek Janiszewski (1): - Fallback to loading whole environment if initializer does not exist - - -Version 3.1.3 - 2012-09-05 18:58:27 +0200 -=============================================================================== - -Ben Arent (1): - Removed old mailing list. - -Dylan Smith (1): - Use debug log level for verbose log messages. - -Hrvoje Šimić (21): - add a note for testing against different frameworks - add a scenario to make sure 404s are ignored by default - failing scenario for #100 - remove unnecessary bundler/setup requirement - move dependencies from Gemfile to gemspec - send info about the current logged in user - add async notifications - use async? instead of asnyc - add info about logger - prefer provided error message over original exception message - don't load entire environment for deploy task - safely handle render exception - remove unnecessary AirbrakeError - update XML schema - test fixes - clean whitespace - print the failed notice details - update supported rails versions - update scenarios - stop converting notice to xml before passing it to sender - remove logger from rack handler - update supported rails versions - -John Pignata (1): - Cherry-pick Object#blank? extension - -Joshua Wood (2): - rbenv support - Fixes outdated rake feature. - -Matt Colyer (1): - Fix Airbrake so it actually reports data. - -Morgan Mikel McDaris (1): - changed notify to notify_or_ignore - -Sergii Boiko (2): - Refactor config.async to provide custom asynchronous delivery way - Simplify config.async to use only notice param - -grosser (2): - fix exceeded available parameter key space breaks notification, fixes #99 - make all tests runnable via ruby test_file.rb by loading the helper absolutely - - -Version 3.1.2 - 2012-06-23 02:27:01 +0200 -=============================================================================== - -Hrvoje Šimić (5): - routing errors ignored by default, for #92 - use simplecov for test coverage - fix features for javascript - ignore user agents in rack, closes #61 - error out if controller is undefined - - -Version 3.1.1 - 2012-06-06 20:35:00 -0700 -=============================================================================== - -Hrvoje Šimić (10): - minor fixes for Rakefile - change color of user informer tests - remove unnecessary shim - use shim instead of server response in tests - add a note about informing the user - fix typo in Rakefile - valid mock responses - add a failing scenario for #92 - 404s reporting fixed, closes #92 - update mocks for rack and sinatra - -Jonathan Siegel (1): - Updated copyright/trademarks - - -Version 3.1.0 - 2012-05-28 02:25:09 +0200 -=============================================================================== - -Andre Arko (1): - stop using deprecated RAILS_ROOT - -Benjamin Oakes (5): - notify_airbrake: filter params on Rails 3.1 (and maybe 3.0 also) - `params` is the (eventual) intent, but `hash` is clearer in context - One-liner, per @shime - Exception safety: worst case scenario, report the unfiltered hash - (m) Summarize the cases for future maintainers - -Blake Watters (1): - Modify Rake handler to use Airbrake.notify_or_ignore rather than Airbrake.notify - -Chris Griego (1): - Fix allowing airbrake_env/TO being different from rails_env/RAILS_ENV in deployment notifications. - -David (10): - Merge pull request #33 from cgriego/patch-1 - Merge pull request #51 from unnu/master - Merge pull request #56 from GateGuru/rake_handler_fix - Merge pull request #60 from DaPulse/master - Merge pull request #71 from sgonyea/patch-1 - Merge pull request #75 from blackhacker/master - Merge pull request #81 from brainopia/patch-1 - Merge pull request #82 from ghurrell/fix-readme-stubbing-example - Merge pull request #80 from yanowitz/patch-1 - Merge pull request #86 from Playhem/master - -David Palm (5): - Set VERIFY_PEER in rake task - More idiomatic inject - Not quite ready yet. Revert "Heroku references now are to Airbrake." - Adds `pry` to the gems available in test env - Works outside Rails - -Eran Kampf (2): - Fix for apps behind a local proxy (EY App Master) - Changed if statement to one liner - -Erik Ostrom (1): - Updated Heroku README to use Airbrake's new name. - -Gary Rafferty (1): - Fix typo in airbrake.gemspec - -Greg Hurrell (1): - Update stubbing example in README to match method signature - -Hrvoje Šimić (47): - Merge pull request #59 from benjaminoakes/master - Merge pull request #62 from sleparc/master - Merge pull request #63 from benjaminoakes/master - improved readability - added new middleware catcher, fixes #73 - Merge pull request #72 from 'jdel/lazyload' - Merge pull request #87 from gary-rafferty/master - Stop using include? to filter parameters - renaming so it's easier to understand - Merge pull request #90 from samoli/patch-1 - Merge pull request #68 from cylence/master - read ENV variables from heroku config, fixes #89 - check for airbrake_api_key on heroku - Merge pull request #91 from mikz/patch-1 - ignore user agents in rails 3.0+ - Merge branch 'master' of github.com:airbrake/airbrake - Merge pull request #79 from morgoth/fix-passing-api-key-as-param-to-rake-task - minor test fix - let's catch errors that happen early in the stack - remove deprecated step definitions - update url in a test - fix required files in gemspec - use top-level namespace - fix requirements - add rvmrc - update server response in scenarios - update heroku mock - remove unnecessary space - prefer the latest stable ruby version - update steps for newer rails versions - support rails 3.2.x with the test suite - update exception catcher - monkeypatch the old rails versions in tests - remove fake exception from env - add sanity to rescue_action_in_public_without_airbrake call - remove note for rails 1.2.x users, we don't support it - support the latest rails versions - add 3.0.11 and 3.0.12 to supported versions - update rack synopsis - log messages for sinatra and rack - make rack and sinatra tests green - update rack example in readme - Update ignored exceptions by default in readme - update explanation how we catch errors in readme - fix formatting - add all supported frameworks to rake test task - make metal tests green - -Jason Yanowitz (2): - remove git dependency from generating gemspec file. causes errors when vendoring this gem in other projects - updated gemspec files specification based on feedback - -Jean-Michel Garnier (1): - Update README.md - -Jonathan Siegel (5): - Heroku references now are to Airbrake. - Merge branch 'master' of github.com:airbrake/airbrake - Added beta support fer cedar. - Added beta support fer cedar. - Migrated to new api.airbrake.io endpoint. - -Jonathan del Strother (1): - Lazily-load actioncontroller - -Leonid Shevtsov (3): - Feature: use a separate API key for Javascript notifications - cleaned up configuration - Merge branch 'master' of git://github.com/airbrake/airbrake - -Michal Cichra (1): - Use id to lookup error instead of error-id. - -Nathan Broadbent (1): - Added Mongoid::Errors::DocumentNotFound to default IGNORED exceptions (same as ActiveRecord::RecordNotFound, for Mongoid.) - -Ravil Bayramgalin (1): - Update lib/airbrake/user_informer.rb - -Ryan L. Cross (1): - Added unix style param for url in the deployhook rake task. - -Sam Oliver (1): - Update hoptoad=>aibrake in rake task example - -Scott Gonyea (1): - Document proxy parameters; namely, that the proxy_host does not require "http://" as a prefix. Ideally, config.proxy= could be given a URI. - -Simon Le Parc (1): - Shouldn't test the native dup method - -Stuart Chaney (1): - Updating README gem instructions for Rails 2.3 with bundler. - -Wojciech Wnętrzak (1): - fixed passing api_key param to Airbrake deploy task - -blackhacker (1): - more detailed error message - -unnu (1): - Fixed TaggedLogging bug in Rails 3 rake test task - -usiegj00 (3): - Merge pull request #46 from eostrom/master - Merge pull request #47 from 21croissants/master - Merge pull request #38 from ndbroadbent/ignore_mongoid_notfound - - -Version 3.0.9 - Thu Dec 15 23:51:38 +0100 2011 -=============================================================================== - -David Palm (2): - Merge pull request #45 from spagalloco/patch-1 - Pulls in ideas from https://github.com/kidsalsa/airbrake/commit/54982ba83bd6c577a0835b9ba5936c690029244c#L0R2 BUT - - moves #ca_bundle_path to Airbrake::Configuration - - moves #local_cert_path to Airbrake::Configuration - - adds #use_system_ssl_cert_chain? alias to Airbrake::Configuration - - makes Airbrake.configure return the created sender (in addition to yielding) - - stops airbrake deploy tasks duplicate code form the configuration class - - cleanup unused expectations from tests - -Version 3.0.8 - Sun Dec 11 22:14:18 +0100 2011 -=============================================================================== - -David Palm (1): - Use OpenSSL::X509::DEFAULT_CERT_FILE to connect only if configured to by setting use_system_ssl_cert_chain to true - -Version 3.0.7 - Sun Dec 11 21:04:08 +0100 2011 -=============================================================================== - -David Palm (1): - Adds a :use_system_ssl_cert_chain configuration option to allow use of the system default SSL chain (as opposed to the CAs bundled with Airbrake) - defaults to false - -Version 3.0.6 - Mon Dec 05 16:41:39 +0100 2011 -=============================================================================== - -Benjamin Quorning (1): - README updated to reflect name change from Hoptoad to Airbrake - -Darcy Laycock (1): - Explicitly scope calls to Rails.env and such to prevent loading issues when manually requiring parts of airbrake. - -David (1): - Merge pull request #42 from Playhem/fix-issue-34-cherrypicked - -David Czarnecki (6): - Using the Capistrano logger for great justice - Using the Capistrano logger for great justice - Re-organized capistrano task to allow for testing - Fixing conflict - Fixed the name of the capistrano task in the test to be correct. Updated the cucumber feature to look for the right task name. - Change airbrake:notify to airbrake:deploy to be more clear that it is a deploy notification - -David Palm (8): - Removes support for Rails v2.3.12 - Documentation glitch - Documenting workaround for issue #39 - Using guard&spork for testing - Adding Guardfile - Moves #assert_logged to test helper - Moves http setup code to own method - Not sporking yet - -Florent Guilleux (1): - Change Hoptoad references to Airbrake. - -Gabe Berke-Williams (1): - Merge pull request #10 from Florent2/patch-1 - -Harold Giménez (10): - Heroku is still using HOPTOAD_API_KEY, so expect that for now - Bumping to version 3.0 - Bumping to version 3.0.1 - Fix bug in defining the Airbrake javascript object - Bumping to version 3.0.2 - Ensure a valid configuration object is always available on Airbrake.configuration - Merge remote-tracking branch 'agoragames/master' - Bumping to version 3.0.3 - Minor fix to Gemfile instructions on README - Bumping to version 3.0.4 - -Jonathan Siegel (16): - Removed class-level caching per jkraemer: Hi, - Integrated pulls and updated tests. - Integrated: https://github.com/thoughtbot/hoptoad_notifier/pull/37 - Corrected test. - Consistent operation. - Consistent callout during test generation. - Fixed typo. - Refreshed supported. - Resolved: http://help.airbrakeapp.com/discussions/questions/587-airbrake_javascript_notifier-is-escaped-rails-31-haml - Now running airbrake deploy notifications on the REMOTE machine. - Added first rev of PEER cert resolution. - Bumped 3.0.5 - Updated README, fixed JS rescue template missed HT reference. - Crosslinked docs... - Fixes for tests. - Bumping to version 3.0.5 - -Leonid Shevtsov (3): - fixed rake handler failing when exception happens before Airbrake has been configured (for example, when running an unknown Rake task) - fix issue #34 'undefined method to_backtrace for Hash' - test case for issue #34 - -Matt Fawcett (1): - Call #close on the old body after building the new body to prevent thread joining errors - -Roman Shterenzon (1): - Use either Airbrake or Hoptoad object. - -Stuart Chaney (1): - point towards airbrake.io - -Thomas Jachmann (1): - handles exceptions with #to_hash properly - -usiegj00 (4): - Merge pull request #21 from mattfawcett/master - Merge pull request #12 from leonid-shevtsov/master - Merge pull request #14 from thomasjachmann/master - Merge pull request #28 from Sutto/patch-1 - - -Version 3.0.5 - 2011-11-08 23:02:07 -0800 -=============================================================================== - -Benjamin Quorning (1): - README updated to reflect name change from Hoptoad to Airbrake - -Darcy Laycock (1): - Explicitly scope calls to Rails.env and such to prevent loading issues when manually requiring parts of airbrake. - -David Czarnecki (6): - Using the Capistrano logger for great justice - Using the Capistrano logger for great justice - Re-organized capistrano task to allow for testing - Fixing conflict - Fixed the name of the capistrano task in the test to be correct. Updated the cucumber feature to look for the right task name. - Change airbrake:notify to airbrake:deploy to be more clear that it is a deploy notification - -Florent Guilleux (1): - Change Hoptoad references to Airbrake. - -Gabe Berke-Williams (1): - Merge pull request #10 from Florent2/patch-1 - -Harold Giménez (10): - Heroku is still using HOPTOAD_API_KEY, so expect that for now - Bumping to version 3.0 - Bumping to version 3.0.1 - Fix bug in defining the Airbrake javascript object - Bumping to version 3.0.2 - Ensure a valid configuration object is always available on Airbrake.configuration - Merge remote-tracking branch 'agoragames/master' - Bumping to version 3.0.3 - Minor fix to Gemfile instructions on README - Bumping to version 3.0.4 - -Jonathan Siegel (15): - Removed class-level caching per jkraemer: Hi, - Integrated pulls and updated tests. - Integrated: https://github.com/thoughtbot/hoptoad_notifier/pull/37 - Corrected test. - Consistent operation. - Consistent callout during test generation. - Fixed typo. - Refreshed supported. - Resolved: http://help.airbrakeapp.com/discussions/questions/587-airbrake_javascript_notifier-is-escaped-rails-31-haml - Now running airbrake deploy notifications on the REMOTE machine. - Added first rev of PEER cert resolution. - Bumped 3.0.5 - Updated README, fixed JS rescue template missed HT reference. - Crosslinked docs... - Fixes for tests. - -Leonid Shevtsov (1): - fixed rake handler failing when exception happens before Airbrake has been configured (for example, when running an unknown Rake task) - -Matt Fawcett (1): - Call #close on the old body after building the new body to prevent thread joining errors - -Roman Shterenzon (1): - Use either Airbrake or Hoptoad object. - -Stuart Chaney (1): - point towards airbrake.io - -Thomas Jachmann (1): - handles exceptions with #to_hash properly - -usiegj00 (4): - Merge pull request #21 from mattfawcett/master - Merge pull request #12 from leonid-shevtsov/master - Merge pull request #14 from thomasjachmann/master - Merge pull request #28 from Sutto/patch-1 - - - -Version 3.0.4 - Mon Sep 12 08:25:04 -0400 2011 -=============================================================================== -David Czarnecki(1): - Change deploy task back to airbrake:deploy -Harold Gimenez(1): - README updates - -Version 3.0.3 - Sat Sep 03 13:18:26 -0400 2011 -=============================================================================== -David Czarnecki(1): - Use capistrano's logger, improve tests around capistrano deploy. -Florent Guilleux(1): - README updates - -Version 3.0.2 - Mon Aug 29 10:32:04 -0400 2011 -=============================================================================== -Harold Gimenez(1) - Fix bug on the Hoptoad to Airbrake fallback code on the javascript notifier. - -Version 3.0.1 - Mon Aug 29 08:37:24 -0400 2011 -=============================================================================== -Roman Shterenzon(1): - Use either Airbrake or Hoptoad object on javascript notifier - -Version 3.0 - Fri Aug 26 08:55:47 -0400 2011 -=============================================================================== -Harold Gimenez: - Continue to use HOPTOAD_API_KEY for heroku users' API key env variable - -Version 3.0.rc2 - Wed Aug 24 15:03:46 -0400 2011 -=============================================================================== - -Harold Gimenez: - Revert broken commit around exceptions that respond to #to_hash - Support latest versions of Rails. - - -Version 3.0.rc1 - Fri Aug 19 08:51:53 -0400 2011 -=============================================================================== - -Jonathan Yurek and Harold Gimenez - Rename to Airbrake - -Version 2.4.9 - Wed Mar 30 09:04:53 -0400 2011 -=============================================================================== - -Jonathan Yurek(1): - The User Informer should adhere to only the Rack spec. - -Version 2.4.8 - Mon Mar 21 11:11:16 -0400 2011 -=============================================================================== - -Jonathan Yurek(1): - Prevent infinite loops from recursive data structures. - -Version 2.4.7 - Thu Mar 10 16:21:31 -0500 2011 -=============================================================================== - -Jonathan Yurek(1): - Rails generator requires './config/boot' for 1.9.2 compatibility. - -Version 2.4.6 - Tue Feb 15 15:51:17 -0500 2011 -=============================================================================== - -Jonathan Yurek(1): - Modify the error page's body in-place. - -Version 2.4.5 - Wed Feb 02 13:24:29 -0500 2011 -=============================================================================== - -Jonathan Yurek (1): - Don't require Rack::Lock's presence in the middleware for UserInformer - - -Version 2.4.4 - Fri Jan 28 13:50:10 -0500 2011 -=============================================================================== - -Matt Jankowski (1): - Change the javascript notifier from a config option to a helper method - -Jonathan Yurek (1): - Show the javascript notifier prevents XSS attempts from request.url - -Version 2.4.3 - Wed Jan 26 11:35:15 -0500 2011 -=============================================================================== - -Jon Yurek (1): - Allow the application to present the Hoptoad error number to the user - - -Version 2.4.2 - Sun Jan 09 09:37:31 -0500 2011 -=============================================================================== - -Matt Jankowski (1): - fix issue where the gsub to replace the html head with javascript was removing the head element entirely - - -Version 2.4.1 - Sat Jan 08 12:17:15 -0500 2011 -=============================================================================== - -Matt Jankowski (1): - restore method which may have been accidentally removed? - - -Version 2.4.0 - Thu Jan 06 15:03:58 -0500 2011 -=============================================================================== - -Jason Morrison (1): - Remove official support for very old Rails version going forward - -Version 2.3.14 - Wed Jan 05 14:06:12 -0500 2011 -=============================================================================== - -Jason Morrison (1): - Fix 'require' path - -Version 2.3.13 - Mon Jan 03 15:56:20 -0500 2011 -=============================================================================== - -Dan Croak (1): - including twiddle wakka in install instructions - -Emma Lindsay (5): - Sends more javascript information back to hoptaod - Merge branch 'js_notifier_default_fields' - Bumping to version 2.3.10 - Updated jferris-mocha to bourne - Update readme to show quotes around error names in ignores - -Jason Morrison (8): - wip: Supply default url, component, action for JS notifier - gracefully fall back to require 'activesupport' if require 'active_support' fails - Add non-capistrano deploy instructions - Add instructions for heroku gem to Heroku addon README - Add AbstractController::ActionNotFound to default ignore list - Bumping to version 2.3.12 - Bugfix: JS Notifier will now insert itself even when tag has attributes - Add Heroku deploy notification - -Jon Yurek (11): - Require bourne, run right cucumber task - Get the API key from Heroku - Bumped version: 2.3.11 - Getting green cucumber stories - Fakes out the heroku command for cucumber. - Mount the metal endpoint in Rails 3 tests. - Metal test mounts at /metal - Supported versions: 2.3.9, 2.3.10, and 3.0.1 - Return non-zero on cucumber failure. - Controller info for older Rails-es is different. - Remove Rails 2.0.2 from official support. Added 3.0.2+3 - -Trevor Turk (1): - Fix default ignores in the README - - -Version 2.3.12 - Wed Nov 03 13:53:18 -0400 2010 -=============================================================================== - -In general: Update gems, improve testing, improve documentation, improve -javascript notifier. - -Emma Lindsay (4): - Sends more javascript information back to hoptaod - Merge branch 'js_notifier_default_fields' - Bumping to version 2.3.10 - Updated jferris-mocha to bourne - -Jason Morrison (5): - wip: Supply default url, component, action for JS notifier - gracefully fall back to require 'activesupport' if require 'active_support' fails - Add non-capistrano deploy instructions - Add instructions for heroku gem to Heroku addon README - Add AbstractController::ActionNotFound to default ignore list - -Jon Yurek (9): - Require bourne, run right cucumber task - Get the API key from Heroku - Bumped version: 2.3.11 - Getting green cucumber stories - Fakes out the heroku command for cucumber. - Mount the metal endpoint in Rails 3 tests. - Metal test mounts at /metal - Supported versions: 2.3.9, 2.3.10, and 3.0.1 - Return non-zero on cucumber failure. - - -Version 2.3.10 - Mon Oct 18 17:07:56 -0400 2010 -=============================================================================== - -Emma Lindsay (2): - Sends more javascript information back to hoptaod - Merge branch 'js_notifier_default_fields' - -Jason Morrison (2): - wip: Supply default url, component, action for JS notifier - gracefully fall back to require 'activesupport' if require 'active_support' fails - - -Version 2.3.9 - 2010-10-18 -=============================================================================== - -This patch release contains a handful of bugfixes, and ensures: - If hoptoadapp.com is completely unreachable by HTTP, your app is not affected. - Controller method #notify_hoptoad is available in Rails 3. Thanks contributor Kyle Crum! - -Chad Pytel (1): - also handle Errno::ECONNREFUSED and other http errors - -Jason Morrison (4): - Add gem versions to test suite - Revert "Revert "attempt to debug mail sending on staging"" - Adding Heroku notifier readme - gracefully fall back to require 'activesupport' if require 'active_support' fails - -Jon Yurek (2): - Bumping version to 2.3.8 - Adds builder to the gemspec - -Kyle Crum (3): - notify_hoptoad now works in rails 3 controllers - more sane way of testing for rails 3 controller methods - added a scenario for using the notify_hoptoad method within a controller - - -Version 2.3.7 - 2010-09-15 -=============================================================================== - -Jason Morrison (5): - Add ./ prefix to require for 1.9.2 - More helpful message for testing without ENV['RAILS_VERSION'] - Support Rails 3.0.0, not 3.0.0.rc - This wasn't actually a fix (it regressed tests): Revert "Fix modifying params_filters" - Correct the #also_use_rack_params_filters method - -Joshua Clayton (1): - Fix modifying params_filters - -Nick Quaranto (2): - s/RSpec/Spec for matchers - use Sinatra::Default instead of Sinatra::Base - - -Version 2.3.6 - 2010-08-30 -=============================================================================== - -Daniel Barron (1): - Initializer configuration overrides Railtie configuration if set - -Joshua Clayton (1): - Remove rack.request.form_vars - -Tristan Dunn (1): - Move Rails JS scenarios into separate feature and correctly support HTTPS when secure is enabled on the notifier. - - -Version 2.3.5 - 2010-08-13 -=============================================================================== - -Alexey Palazhchenko (1): - Actually call #to_hash. - -Joshua Clayton (1): - Trace hoptoad:test task when running generator for anything before Rails3 - - -Version 2.3.4 - 2010-08-10 -=============================================================================== - -Tristan Dunn (1): - Only include the JS notifier in public environments. - - -Version 2.3.3 - 2010-08-04 -=============================================================================== - -Tristan Dunn (1): - Initial injection of JS notifier. - - -Version 2.3.2 - 2010-07-06 -=============================================================================== - -Josh Clayton(1): - Handle instances when Rack's action_dispach.parameter_filter is nil - - -Version 2.3.1 - 2010-07-02 -=============================================================================== - -Jason Morrison (2): - Use the Rails 3 params filters when available - Filter session hash using Hoptoad config.params_filters, in addition to params - - -Version 2.3.0 - 2010-06-24 -=============================================================================== - -Jason Morrison (5): - Add integration test for rails 3.0.0.beta4 - Added feature: Support the Heroku addon in the generator - Add --heroku flag to generator to support ENV['HOPTOAD_API_KEY'] - Reflect a copy change in rails.feature for --heroku generator flag - Support the proxy configuration options when notifying Hoptoad of a deploy (hat tip @gudleik) - - -Version 2.2.6 - 2010-06-02 -=============================================================================== - -Jason Morrison (1): - For Rails 3, just use the Rack middleware instead of specifying a location to insert_after - - -Version 2.2.5 - 2010-06-02 -=============================================================================== - -Jason Morrison (1): - Add documentation for Rails 3.x installation - - -Version 2.2.4 - 2010-06-02 -=============================================================================== - -Jason Morrison (1): - Add a note to README about removing the explicit Catcher #include in ApplicationController - - -Version 2.2.3 - 2010-06-02 -=============================================================================== - -Summary: Fixed a variety of issues for Rails 3.0.0.beta3, - Fixed a bug when using Vlad to deploy instead of Capistrano - Give better error output when gem is not installed - -Chad Pytel (2): - revise gem unpack instructions step - Merge branch 'master' of github.com:thoughtbot/hoptoad_notifier - -Dan Lawless (1): - don't append capistrano details to config.deploy.rb when target app uses Vlad - -Jason Morrison (7): - LH-556 Clarify sending ENV environment variables - Starting to add features for Rails 3 - Make rails rake tasks depend on gem-making tasks - Start to get Rails 3 features to pass - require fileutils to reflect rubygems 1.3.6 change - Support ENV['CUCUMBER_FORMAT'] in rails cucumber tasks for testing - Fix the initializer syntax in the Rails 3 Railtie - -Joe Ferris (11): - Got the generator running and a request dispatched to the test endpoint - Fixed logging in hoptoad:test rake task - Separated Rails 2 and 3 entry - Support bundler - Rails 3 generator works with an existing api key - Extract request info from rack env - Detect presence of the plugin - Added a capistrano hook for Rails 3 - Fixed rack/sinatra being broken without active_support - Fixes for earlier versions of Rails - Fixed Rails 3 generator not to append cap hooks for vlad deploys - -Josh Kalderimis (7): - updated railtie to work with the new rails 3 middleware api - railtie_name is deprecated - updated app_middleware call to use string version as to make sure constant is loaded - moved generator using the new rails 3 convention - update path to template for Rails 3 generator - correction to referencing of the rails application in rails3_tasks - add environment_name and project_root back to rails 3 railtie - -Joshua Nichols (1): - Handle gem not being installed more gracefully. - - -Version 2.2.2 - 2010-03-10 -=============================================================================== - -Chad Pytel (1): - document proxy support - -Joe Ferris (8): - Added upgrade instructions to the README - Give a clearer error message when generating a Rails app fails - Fail loudly when a gem can't be vendored - Debugging rubygems issues - Explicitly specify the gem paths - Less noisy - Restore gem path after vendoring - Fixed a typo - -Jon Yurek (1): - Added notice about removing hoptoad rake tasks to upgrade gem - -Mike Burns (1): - Remove stray file with notes in it - - -Version 2.2.1 - 2010-03-10 -=============================================================================== - -Jason Morrison (3): - LH-629 Ensure notifier is not considered a framework gem - Removing things-the-generator-must-do file - Add rake cucumber:wip:rails* tasks for work-in-progress features - - -Version 2.2.0 - 2010-02-18 -=============================================================================== - -Bumping the version from 2.1.4 to 2.2.0 since adding Rack support warrants a minor version. - -Jason Morrison (1): - Stringify array elements when making assertions about Notice XML for 1.9 compatibility - - -Version 2.1.4 - 2010-02-12 -=============================================================================== - -Chad Pytel (2): - add more info to README for 1.2.6 - fix gem unpack line for 1.2.6 - -Jason Morrison (2): - Adding additional instructions for Rails 1.2.6 - Typesetting in README.rdoc - -Joe Ferris (11): - Separating Rails functionality out more - Initial Rack middleware - Extract request info from rack env - Added integration tests for rescuing - Fixed reporting of Rails version - Small refactoring - Automatically add Rack middleware for Rails apps that support it (catches exceptions from Metal) - Added an integration test and docs for rack apps - Added integration/readme coverage of Sinatra apps - Added docs to HoptoadNotifier::Rack - Require rack in tests for older versions of Rails; use active_support instead of activesupport - -Nick Quaranto (3): - Fixing the capistrano hook bit in the readme - Adding changeling:minor and changeling:patch to automate notifier releases - Adding rake changeling:push - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/gems/2.2.2/gems/airbrake-4.3.0/Gemfile b/gems/2.2.2/gems/airbrake-4.3.0/Gemfile deleted file mode 100644 index c80ee36..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/Gemfile +++ /dev/null @@ -1,3 +0,0 @@ -source "http://rubygems.org" - -gemspec diff --git a/gems/2.2.2/gems/airbrake-4.3.0/Guardfile b/gems/2.2.2/gems/airbrake-4.3.0/Guardfile deleted file mode 100644 index 2e5c263..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/Guardfile +++ /dev/null @@ -1,6 +0,0 @@ -guard :test do - watch(%r{^lib/(.+)\.rb$}) { |m| "test/#{m[1]}_test.rb" } - watch(%r{^test/.+_test\.rb$}) - watch('test/helper.rb') { "test" } -end - diff --git a/gems/2.2.2/gems/airbrake-4.3.0/INSTALL b/gems/2.2.2/gems/airbrake-4.3.0/INSTALL deleted file mode 100644 index 18d28ee..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/INSTALL +++ /dev/null @@ -1,20 +0,0 @@ -=== Configuration - -You should have something like this in config/initializers/airbrake.rb. - - Airbrake.configure do |config| - config.api_key = '1234567890abcdef' - end - -(Please note that this configuration should be in a global configuration, and -is *not* environment-specific. Airbrake is smart enough to know what errors are -caused by what environments, so your staging errors don't get mixed in with -your production errors.) - -You can test that Airbrake is working in your production environment by using -this rake task (from RAILS_ROOT): - - rake airbrake:test - -If everything is configured properly, that task will send a notice to Airbrake -which will be visible immediately. diff --git a/gems/2.2.2/gems/airbrake-4.3.0/LICENSE b/gems/2.2.2/gems/airbrake-4.3.0/LICENSE deleted file mode 100644 index 40d0844..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/LICENSE +++ /dev/null @@ -1,61 +0,0 @@ -This product includes jquery written by John Resig -and distributed under an MIT license. -See https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt - - Copyright (c) 2011 John Resig, http://jquery.com/ - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -All other components of this product are -Copyright (c) 2007-2015 Rackspace, Inc. - -Subject to the terms of this notice, Rackspace, Inc. grants you a -nonexclusive, nontransferable license, without the right to -sublicense, to (a) install and execute one copy of these files on any -number of workstations owned or controlled by you and (b) distribute -verbatim copies eof these files to third parties. As a condition to the -foregoing grant, you must provide this notice along with each copy you -distribute and you must not remove, alter, or obscure this notice. All -other use, reproduction, modification, distribution, or other -exploitation of these files is strictly prohibited, except as may be set -forth in a separate written license agreement between you and ERackspace, -Inc. The terms of any such license agreement will control over this -notice. The license stated above will be automatically terminated and -revoked if you exceed its scope or violate any of the terms of this -notice. - -This License does not grant permission to use the trade names, -trademarks, service marks, or product names of Rackspace, Inc., -Airbrake, Exceptional, Airbrake.io, Exceptional.io except as -required for reasonable and customary use in describing the origin -of this file and reproducing the content of this notice. You may -not mark or brand this file with any trade name, trademarks, -servicemarks, or product names other than the original brand -(if any)provided by Rackspace, Inc. - -Unless otherwise expressly agreed by Rackspace, Inc., in a -separate written license agreement, these files are provided AS IS, -WITHOUT WARRANTY OF ANY KIND, including without any implied warranties -of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, or NON-INFRINGEMENT. -As a condition to your use of these files, you are solely responsible for -such use. Rackspace, Inc. will have no liability to you for direct, -indirect, consequential, incidental, special, or punitive damages or -for lost profits or data. diff --git a/gems/2.2.2/gems/airbrake-4.3.0/README.md b/gems/2.2.2/gems/airbrake-4.3.0/README.md deleted file mode 100644 index 99a5918..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/README.md +++ /dev/null @@ -1,148 +0,0 @@ -Airbrake -======== - -[![Circle CI](https://circleci.com/gh/airbrake/airbrake/tree/master.png?circle-token=66cb9cfc6d20f550a2dbde522f5f0f9f81bd653b)](https://circleci.com/gh/airbrake/airbrake) -[![Code Climate](https://codeclimate.com/github/airbrake/airbrake.png)](https://codeclimate.com/github/airbrake/airbrake) -[![Coverage Status](https://coveralls.io/repos/airbrake/airbrake/badge.png?branch=master)](https://coveralls.io/r/airbrake/airbrake?branch=master) -[![Dependency Status](https://gemnasium.com/airbrake/airbrake.png)](https://gemnasium.com/airbrake/airbrake) - - - -This is the notifier gem for integrating apps with [Airbrake](http://airbrake.io). - -When an uncaught exception occurs, Airbrake will POST the relevant data -to the Airbrake server specified in your environment. - - - -Help ----- - -For help with using Airbrake and this notifier visit [our support site](http://help.airbrake.io). - -For **SSL** verification see the [Resources](https://github.com/airbrake/airbrake/blob/master/resources/README.md). - -Rails Installation ------------------- - -### Rails 3.x/4.x - -Add the airbrake gem to your Gemfile. In Gemfile: - - gem 'airbrake' - -Then from your project's RAILS_ROOT, and in your development environment, run: - - bundle install - rails generate airbrake --api-key your_key_here - -The generator creates a file under `config/initializers/airbrake.rb` configuring Airbrake with your API key. This file should be checked into your version control system so that it is deployed to your staging and production environments. - -### Rails 2.x - -Add the airbrake gem to your app. In config/environment.rb: - - config.gem 'airbrake' - -or if you are using bundler: - - gem 'airbrake', :require => 'airbrake/rails' - -Then from your project's RAILS_ROOT, and in your development environment, run: - - rake gems:install - rake gems:unpack GEM=airbrake - script/generate airbrake --api-key your_key_here - -As always, if you choose not to vendor the airbrake gem, make sure -every server you deploy to has the gem installed or your application won't start. - -The generator creates a file under `config/initializers/airbrake.rb` configuring Airbrake with your API key. This file should be checked into your version control system so that it is deployed to your staging and production environments. - -Ignored exceptions ------------------------- - -Exceptions raised from Rails environments named **development**, **test** or **cucumber** will be ignored by default. - -You can clear the list of ignored environments with this setting: - - config.development_environments = [] - -List of ignored exception classes includes: - - ActiveRecord::RecordNotFound - ActionController::RoutingError - ActionController::InvalidAuthenticityToken - CGI::Session::CookieStore::TamperedWithCookie - ActionController::UnknownHttpMethod - ActionController::UnknownAction - AbstractController::ActionNotFound - Mongoid::Errors::DocumentNotFound - ActionController::UnknownFormat - -You can alter this list with - - config.ignore_only = [] - -which will cause none of the exception classes to be ignored. - -Check the [wiki](https://github.com/airbrake/airbrake/wiki/Customizing-your-airbrake.rb) for more customization options. - -Supported frameworks ------------------------- - -See **[TESTED_AGAINST](https://github.com/airbrake/airbrake/blob/master/TESTED_AGAINST)** for a full list of frameworks and versions we test against. - -Airbrake wiki pages ------------------------- -Our wiki contains a lot of additional information about Airbrake configuration. Please browse the wiki when finished reading this -README: - -https://github.com/airbrake/airbrake/wiki - -Development ------------ - -For running unit tests, you should run - - bundle - bundle exec rake test:unit - -If you wish to run the entire suite, which checks the different framework -integrations with cucumber, you should run the following commands - - bundle - bundle exec rake appraisal:install - bundle exec rake - -We use [Appraisals](https://github.com/thoughtbot/appraisal) to run the integration -tests. - -Maintainers ------------ - -Make sure all tests are passing before pushing the new version. Also, make sure integration -test is passing. You can run it with: - - ./script/integration_test.rb - -After this is passing, change the version inside *lib/airbrake/version.rb* and -push the new version with Changeling: - - rake changeling:change - -Credits -------- - -![thoughtbot](https://secure.gravatar.com/avatar/a95a04df2dae60397c38c9bd04492c53) - -Airbrake is maintained and funded by [airbrake.io](http://airbrake.io). - -Thank you to all [the contributors](https://github.com/airbrake/airbrake/contributors)! - -The names and logos for Airbrake, thoughtbot are trademarks of their respective holders. - -License -------- - -Airbrake is Copyright © 2008-2015 Airbrake. diff --git a/gems/2.2.2/gems/airbrake-4.3.0/README_FOR_HEROKU_ADDON.md b/gems/2.2.2/gems/airbrake-4.3.0/README_FOR_HEROKU_ADDON.md deleted file mode 100644 index cec8fb6..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/README_FOR_HEROKU_ADDON.md +++ /dev/null @@ -1,102 +0,0 @@ -Airbrake on Heroku -================== - -Send your application errors to our hosted service and reclaim your inbox. - -1. Installing the Heroku add-on ----------------------------- -To use Airbrake on Heroku, install the Airbrake add-on: - - $ heroku addons:add airbrake:developer # If you'd like another plan, specify that instead. - # Check https://addons.heroku.com/airbrake for a full list of plans. - -2. Including the Airbrake notifier in your application --------------------------------------------------- -After adding the Airbrake add-on, you will need to install and configure the Airbrake notifier. - -Your application connects to Airbrake with an API key. On Heroku, this is automatically provided to your -application in `ENV['AIRBRAKE_API_KEY']`, so installation should be a snap! - -### Rails 3.x - -Add the airbrake and heroku gems to your Gemfile. In Gemfile: - - gem 'airbrake' - gem 'heroku' - -Then from your project's RAILS_ROOT, run: - - $ bundle install - $ script/rails generate airbrake --heroku - -### Rails 2.x - -Install the heroku gem if you haven't already: - - gem install heroku - -Add the airbrake gem to your app. In config/environment.rb: - - config.gem 'airbrake' - -Then from your project's RAILS_ROOT, run: - - $ rake gems:install - $ rake gems:unpack GEM=airbrake - $ script/generate airbrake --heroku - -As always, if you choose not to vendor the airbrake gem, make sure -every server you deploy to has the gem installed or your application won't start. - -### Rack applications - -In order to use airbrake in a non-Rails rack app, just load the airbrake, configure your API key, and use the Airbrake::Rack middleware: - - require 'rubygems' - require 'rack' - require 'airbrake' - - Airbrake.configure do |config| - config.api_key = `ENV['AIRBRAKE_API_KEY']` - end - - app = Rack::Builder.app do - use Airbrake::Rack - run lambda { |env| raise "Rack down" } - end - -### Rails 1.x - -For Rails 1.x, visit the [Airbrake's README on GitHub](http://github.com/airbrake/airbrake), -and be sure to use `ENV['AIRBRAKE_API_KEY']` where your API key is required in configuration code. - -3. Configure your notification settings (important!) ---------------------------------------------------- - -Once you have included and configured the notifier in your application, -you will want to configure your notification settings. - -This is important - without setting your email address, you won't receive notification emails. - -Airbrake can deliver exception notifications to your email inbox. To configure these delivery settings: - -1. Visit your applications resources page, like [ http://api.heroku.com/myapps/my-great-app/resources ](http://api.heroku.com/myapps/my-great-app/resources). -2. Click the name of your Airbrake addon. (It may still be called Hoptoad.) -3. Click "Settings" to configure the Airbrake Add-on. - -4. Optionally: Set up deploy notification ------------------------------------------ - -If your Airbrake plan supports deploy notification, set it up for your Heroku application like this: - - rake airbrake:heroku:add_deploy_notification - -This will install a Heroku [HTTP Deploy Hook](http://docs.heroku.com/deploy-hooks) to notify Airbrake of the deploy. - -You can pass in additional information for the deploy hook, in the ENV. Here are the available parameters: -* `ENV["RAILS_ENV"]` - Rails environment you're deploying to, if not set on Heroku -* `ENV["AIRBRAKE_API_KEY"]` - API key if not saved on Heroku or in initializer -* `ENV["HEROKU_APP"]` - app name if you have multiple Heroku apps -* `ENV["REPO"]` - Github url of the repo you're deploying, set this if you're not using remote named "origin" - -We will also set "username" and "revision" from Heroku variables. diff --git a/gems/2.2.2/gems/airbrake-4.3.0/Rakefile b/gems/2.2.2/gems/airbrake-4.3.0/Rakefile deleted file mode 100644 index 4906d6f..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/Rakefile +++ /dev/null @@ -1,179 +0,0 @@ -require 'rubygems' unless RUBY_VERSION > "1.8" -require 'bundler/setup' -require 'appraisal' -require 'rake' -require 'rake/testtask' -require 'coveralls/rake/task' -require 'rubygems/package_task' -require 'cucumber/rake/task' -require './lib/airbrake/version' - -Coveralls::RakeTask.new - -appraisal_environments = %w(rails-4.0 rails-3.2 rails-3.1 rails-3.0 rake sinatra rack) -task default: %w( test:unit coveralls:push) + - appraisal_environments.map {|ae| "test:integration:#{ae.gsub(/[\-\.]/, '_')}"} + - appraisal_environments.map {|ae| "test:cucumber:#{ae.gsub(/[\-\.]/, '_')}"} - - -namespace :test do - Rake::TestTask.new(:unit) do |t| - t.libs << 'lib' - t.pattern = 'test/*_test.rb' - t.verbose = true - end - - desc "Integration tests Rake, Sinatra, Rack and for all versions of Rails" - namespace :integration do - appraisal_environments.each do |appraisal_env| - task appraisal_env.gsub(/[\-\.]/, '_').to_sym do - ENV['INTEGRATION'] = 'true' - system "appraisal #{appraisal_env} rake integration_test" or exit!(1) - end - end - end - - desc "Cucumber tests Rake, Sinatra, Rack and for all versions of Rails" - namespace :cucumber do - appraisal_environments.each do |appraisal_env| - task appraisal_env.gsub(/[\-\.]/, '_').to_sym do - ENV['INTEGRATION'] = 'true' - system "appraisal #{appraisal_env} rake cucumber" or exit!(1) - end - end - end -end - -Rake::TestTask.new(:integration_test) do |t| - t.libs << 'lib' - t.pattern = 'test/integration.rb' - t.verbose = true -end - -namespace :changeling do - desc "Bumps the version by a minor or patch version, depending on what was passed in." - task :bump, :part do |t, args| - # Thanks, Jeweler! - if Airbrake::VERSION =~ /^(\d+)\.(\d+)\.(\d+)(?:\.(.*?))?$/ - major = $1.to_i - minor = $2.to_i - patch = $3.to_i - build = $4 - else - abort - end - - case args[:part] - when /major/ - major += 1 - minor = 0 - patch = 0 - when /minor/ - minor += 1 - patch = 0 - when /patch/ - patch += 1 - else - abort - end - - version = [major, minor, patch, build].compact.join('.') - - File.open(File.join("lib", "airbrake", "version.rb"), "w") do |f| - f.write < 2.0.0)" - task :major do |t| - Rake::Task['changeling:bump'].invoke(t.name) - Rake::Task['changeling:change'].invoke - end - - desc "Bump by a minor version (1.2.3 => 1.3.0)" - task :minor do |t| - Rake::Task['changeling:bump'].invoke(t.name) - Rake::Task['changeling:change'].invoke - end - - desc "Bump by a patch version, (1.2.3 => 1.2.4)" - task :patch do |t| - Rake::Task['changeling:bump'].invoke(t.name) - Rake::Task['changeling:change'].invoke - end - - desc "Push the latest version and tags" - task :push do |t| - system("git push origin master") - system("git push origin $(git tag | grep -v rc | tail -1)") - end -end - -begin - require 'yard' - YARD::Rake::YardocTask.new do |t| - t.files = ['lib/**/*.rb', 'TESTING.rdoc'] - end -rescue LoadError -end - -GEM_ROOT = File.dirname(__FILE__).freeze - -desc "Clean files generated by rake tasks" -task :clobber => [:clobber_rdoc, :clobber_package] - -LOCAL_GEM_ROOT = File.join(GEM_ROOT, 'tmp', 'local_gems').freeze - -# Helper method that's used to only include relevant features when using -# various gemfiles. We don't want to, for instance, test sinatra features when -# using the rails gemfile and vice versa. -def cucumber_opts - opts = "--tags ~@wip " - - opts << ENV["FEATURE"] and return if ENV["FEATURE"] - - case ENV["BUNDLE_GEMFILE"] - when /rails/ - opts << "features/rails.feature features/metal.feature features/user_informer.feature" - when /rack/ - opts << "features/rack.feature" - when /sinatra/ - opts << "features/sinatra.feature" - when /rake/ - opts << "features/rake.feature" - end -end - -Cucumber::Rake::Task.new(:cucumber) do |t| - t.fork = true - t.cucumber_opts = cucumber_opts -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/TESTED_AGAINST b/gems/2.2.2/gems/airbrake-4.3.0/TESTED_AGAINST deleted file mode 100644 index 57fc189..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/TESTED_AGAINST +++ /dev/null @@ -1,7 +0,0 @@ -Rails 3.0.20 -Rails 3.1.12 -Rails 3.2.13 -Rails 4.0.0 -Sinatra 1.3.3 -Rack 1.4.3 -Rake 10.0.3 diff --git a/gems/2.2.2/gems/airbrake-4.3.0/airbrake.gemspec b/gems/2.2.2/gems/airbrake-4.3.0/airbrake.gemspec deleted file mode 100644 index be3d5f6..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/airbrake.gemspec +++ /dev/null @@ -1,41 +0,0 @@ -require "./lib/airbrake/version" - -Gem::Specification.new do |s| - s.name = "airbrake" - s.version = Airbrake::VERSION.dup - s.summary = "Send your application errors to our hosted service and reclaim your inbox." - s.license = "MIT" - - s.executables << "airbrake" - s.files = Dir["{generators/**/*,lib/**/*,rails/**/*,resources/*,script/*}"] + - %w(airbrake.gemspec CHANGELOG Gemfile Guardfile INSTALL LICENSE Rakefile README_FOR_HEROKU_ADDON.md README.md TESTED_AGAINST install.rb) - s.test_files = Dir.glob("{test,spec,features}/**/*") - - s.add_runtime_dependency("builder") - s.add_runtime_dependency("multi_json") - - s.add_development_dependency("bourne", "~> 1.4.0") - s.add_development_dependency("cucumber-rails","~> 1.1.1") - s.add_development_dependency("fakeweb", "~> 1.3.0") - s.add_development_dependency("nokogiri", "~> 1.5.0") - s.add_development_dependency("rspec", "~> 2.6.0") - s.add_development_dependency("sham_rack", "~> 1.3.0") - s.add_development_dependency("json-schema", "~> 1.0.12") - s.add_development_dependency("capistrano", "~> 2.0") - s.add_development_dependency("aruba") - s.add_development_dependency("appraisal") - s.add_development_dependency("rspec-rails") - s.add_development_dependency("girl_friday") - s.add_development_dependency("sucker_punch", "1.0.2") - s.add_development_dependency("shoulda-matchers") - s.add_development_dependency("shoulda-context") - s.add_development_dependency("pry") - s.add_development_dependency("coveralls") - s.add_development_dependency("minitest", ["~> 4.0"]) - s.add_development_dependency("test-unit") - - - s.authors = ["Airbrake"] - s.email = "support@airbrake.io" - s.homepage = "http://www.airbrake.io" -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/bin/airbrake b/gems/2.2.2/gems/airbrake-4.3.0/bin/airbrake deleted file mode 100644 index ba5bcf0..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/bin/airbrake +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env ruby - -require "airbrake" -require "airbrake/cli/runner" -require "net/http" -require "uri" - -args = ARGV.dup -command = args.shift.strip rescue nil -options = ARGV[1..-1] - -Runner.run!(command, options) diff --git a/gems/2.2.2/gems/airbrake-4.3.0/features/metal.feature b/gems/2.2.2/gems/airbrake-4.3.0/features/metal.feature deleted file mode 100644 index 749b78a..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/features/metal.feature +++ /dev/null @@ -1,34 +0,0 @@ -Feature: Rescue errors in Rails middleware - Background: - Given I successfully run `rails new rails_root -O --skip-gemfile` - And I cd to "rails_root" - And I configure the notifier to use the following configuration lines: - """ - config.api_key = "myapikey" - config.logger = Logger.new STDOUT - """ - And I configure the Airbrake shim - And I append to "app/metal/exploder.rb" with: - """ - class Exploder - def call(env) - raise "Explode!" - end - end - """ - And I remove the file "config/routes.rb" - And I append to "config/routes.rb" with: - """ - RailsRoot::Application.routes.draw do - mount Exploder.new => "/" - end - """ - - Scenario: It should not report to Airbrake in development - When I perform a request to "http://example.com:123/metal/index?param=value" - Then I should not receive a Airbrake notification - - Scenario: It should report to Airbrake in production - When I perform a request to "http://example.com:123/metal/index?param=value" in the "production" environment - Then I should receive a Airbrake notification - diff --git a/gems/2.2.2/gems/airbrake-4.3.0/features/rack.feature b/gems/2.2.2/gems/airbrake-4.3.0/features/rack.feature deleted file mode 100644 index aed1707..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/features/rack.feature +++ /dev/null @@ -1,60 +0,0 @@ -Feature: Use the notifier in a plain Rack app - - Scenario: Rescue and exception in a Rack app - - Given the following Rack app: - """ - require 'logger' - require 'rack' - require 'airbrake' - - Airbrake.configure do |config| - config.api_key = 'my_api_key' - config.logger = Logger.new STDOUT - end - - app = Rack::Builder.app do - use Airbrake::Rack - run lambda { |env| raise "Rack down" } - end - - """ - When I perform a Rack request to "http://example.com:123/test/index?param=value" - Then I should receive a Airbrake notification - - Scenario: Ignore user agents - - Given the following Rack app: - """ - require 'logger' - require 'rack' - require 'airbrake' - - Airbrake.configure do |config| - config.api_key = 'my_api_key' - config.ignore_user_agent << /ignore/ - config.logger = Logger.new STDOUT - end - - class Mock - class AppendUserAgent - def initialize(app) - @app = app - end - - def call(env) - env["HTTP_USER_AGENT"] = "ignore" - @app.call(env) - end - end - end - - app = Rack::Builder.app do - use Airbrake::Rack - use Mock::AppendUserAgent - run lambda { |env| raise "Rack down" } - end - - """ - When I perform a Rack request to "http://example.com:123/test/index?param=value" - Then I should not receive a Airbrake notification diff --git a/gems/2.2.2/gems/airbrake-4.3.0/features/rails.feature b/gems/2.2.2/gems/airbrake-4.3.0/features/rails.feature deleted file mode 100644 index 690e195..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/features/rails.feature +++ /dev/null @@ -1,324 +0,0 @@ -Feature: Install the Gem in a Rails application - - Background: - Given I successfully run `rails new rails_root -O --skip-gemfile` - And I cd to "rails_root" - - Scenario: Use the gem without vendoring the gem in a Rails application - When I configure the Airbrake shim - And I run `rails generate airbrake -k myapikey -t` - Then I should receive a Airbrake notification - And I should see the Rails version - - Scenario: Configure the notifier by hand - When I configure the Airbrake shim - And I configure the notifier to use "myapikey" as an API key - And I run `rails generate airbrake` - Then I should receive a Airbrake notification - - Scenario: Configuration within initializer isn't overridden by Railtie - When I configure the Airbrake shim - And I run `rails generate airbrake -k myapikey -t` - And I configure the notifier to use the following configuration lines: - """ - config.api_key = "myapikey" - config.project_root = "argle/bargle" - """ - And I define a response for "TestController#index": - """ - raise RuntimeError, "some message" - """ - And I route "/test/index" to "test#index" - And I perform a request to "http://example.com:123/test/index?param=value" - Then I should receive a Airbrake notification - - Scenario: Try to install without an api key - When I run `rails generate airbrake` - Then I should see "Must pass --api-key or --heroku or create config/initializers/airbrake.rb" - - Scenario: Generator should support the --secure option - When I run `rails generate airbrake -k myapikey --secure` - Then my Airbrake configuration should contain the following line: - """ - config.secure = true - """ - - Scenario: Configure and deploy using only installed gem - When I run `capify .` - And I configure the Airbrake shim - And I run `rails generate airbrake -k myapikey -t` - And I run `cap -T` - Then I should see "airbrake:deploy" - - Scenario: Try to install when the airbrake plugin still exists - When I install the "airbrake" plugin - And I configure the Airbrake shim - And I configure the notifier to use "myapikey" as an API key - And I run `rails generate airbrake` - Then I should see "You must first remove the airbrake plugin. Please run: script/plugin remove airbrake" - - Scenario: Rescue an exception in a controller - When I configure the Airbrake shim - And I run `rails generate airbrake -k myapikey -t` - And I define a response for "TestController#index": - """ - raise RuntimeError, "some message" - """ - And I route "/test/index" to "test#index" - And I perform a request to "http://example.com:123/test/index?param=value" - Then I should receive a Airbrake notification - - Scenario: The gem should not be considered a framework gem - When I configure the Airbrake shim - And I run `rails generate airbrake -k myapikey -t` - And I run `rake gems` - Then I should see that "airbrake" is not considered a framework gem - - Scenario: The app uses Vlad instead of Capistrano - When I configure the Airbrake shim - And I run `touch config/deploy.rb` - And I run `rm Capfile` - And I run `rails generate airbrake -k myapikey` - Then "config/deploy.rb" should not contain "capistrano" - - # @wip - # Scenario: Support the Heroku addon in the generator - # When I configure the Airbrake shim - # And I run `rails generate airbrake -k myapikey -t` - # And I configure the Heroku shim with "myapikey" - # And I run `rails generate airbrake --heroku` - # Then I should receive a Airbrake notification - # And I should see the Rails version - # And my Airbrake configuration should contain the following line: - # """ - # config.api_key = 'myapikey' - # """ - - # @wip - # Scenario: Support the --app option for the Heroku addon in the generator - # When I configure the Airbrake shim - # And I configure the Heroku shim with "myapikey" and multiple app support - # And I run `rails generate airbrake --heroku -a myapp -t` - # Then I should receive a Airbrake notification - # And I should see the Rails version - # And my Airbrake configuration should contain the following line: - # """ - # config.api_key = 'myapikey' - # """ - - Scenario: Filtering parameters in a controller - When I configure the Airbrake shim - And I run `rails generate airbrake -k myapikey -t` - When I configure the notifier to use the following configuration lines: - """ - config.api_key = "myapikey" - config.params_filters << "credit_card_number" - config.params_filters << "secret" - config.logger = Logger.new STDOUT - """ - And I define a response for "TestController#index": - """ - session["secret"] = "blue42" - params[:credit_card_number] = "red23" - raise RuntimeError, "some message" - """ - And I route "/test/index" to "test#index" - And I perform a request to "http://example.com:123/test/index?param=value" in the "production" environment - Then I should receive a Airbrake notification - And the Airbrake notification should not contain "red23" - And the Airbrake notification should not contain "blue42" - And the Airbrake notification should contain "FILTERED" - - Scenario: Filtering session and params based on Rails parameter filters - When I configure the Airbrake shim - And I run `rails generate airbrake -k myapikey -t` - When I configure the notifier to use the following configuration lines: - """ - config.api_key = "myapikey" - config.logger = Logger.new STDOUT - """ - And I configure the application to filter parameter "secret" - And I define a response for "TestController#index": - """ - params["secret"] = "red23" - session["secret"] = "blue42" - raise RuntimeError, "some message" - """ - And I route "/test/index" to "test#index" - And I perform a request to "http://example.com:123/test/index" in the "production" environment - Then I should receive a Airbrake notification - And the Airbrake notification should not contain "red23" - And the Airbrake notification should not contain "blue42" - And the Airbrake notification should contain "FILTERED" - - Scenario: Filtering sensitive Rack variables - When I configure the Airbrake shim - And I run `rails generate airbrake -k myapikey -t` - When I configure the notifier to use the following configuration lines: - """ - config.logger = Logger.new STDOUT - """ - And I define a response for "TestController#index": - """ - raise RuntimeError - """ - Then I should receive a Airbrake notification - And the Airbrake notification should not contain any of the sensitive Rack variables - - Scenario: Filtering vs symbols - When I configure the Airbrake shim - And I run `rails generate airbrake -k myapikey -t` - When I configure the notifier to use the following configuration lines: - """ - config.api_key = "myapikey" - config.logger = Logger.new STDOUT - """ - And I configure the application to filter parameter "block" - And I define a response for "TestController#index": - """ - request.env["foo"] = {:foo => "bar"} - raise RuntimeError, "some message" - """ - And I route "/test/index" to "test#index" - And I perform a request to "http://example.com:123/test/index" in the "production" environment - Then I should receive a Airbrake notification - And the Airbrake notification should contain "some message" - - Scenario: Notify airbrake within the controller - When I configure the Airbrake shim - And I run `rails generate airbrake -k myapikey -t` - And I define a response for "TestController#index": - """ - session[:value] = "unicorn" - notify_airbrake(RuntimeError.new("some message")) - render :nothing => true - """ - And I route "/test/index" to "test#index" - And I perform a request to "http://example.com:123/test/index?param=value" in the "production" environment - Then I should receive a Airbrake notification - And the Airbrake notification should contain "unicorn" - - Scenario: Reporting 404s should be disabled by default - When I configure the Airbrake shim - And I configure the notifier to use the following configuration lines: - """ - config.api_key = "myapikey" - """ - And I perform a request to "http://example.com:123/this/route/does/not/exist" in the "production" environment - Then I should see "The page you were looking for doesn't exist." - And I should not receive a Airbrake notification - - Scenario: Reporting 404s should work when configured properly - When I configure the Airbrake shim - And I run `rails generate airbrake -k myapikey -t` - When I configure the notifier to use the following configuration lines: - """ - config.ignore_only = [] - """ - And I perform a request to "http://example.com:123/this/route/does/not/exist" in the "production" environment - Then I should see "The page you were looking for doesn't exist" - And I should receive a Airbrake notification - - @wip - Scenario: reporting over SSL with utf8 check should work - When I configure the Airbrake shim - And I run `rails generate airbrake -k myapikey -t` - When I configure the notifier to use the following configuration lines: - """ - config.secure = true - """ - And I define a response for "TestController#index": - """ - raise RuntimeError, "some message" - """ - And I route "/test/index" to "test#index" - And I perform a request to "http://example.com:123/test/index?utf8=✓" - Then I should receive a Airbrake notification - - Scenario: It should also send the user details - When I configure the Airbrake shim - And I configure the notifier to use the following configuration lines: - """ - config.api_key = "myapikey" - config.logger = Logger.new STDOUT - """ - And I define a response for "TestController#index": - """ - raise RuntimeError, "some message" - """ - And I route "/test/index" to "test#index" - And I have set up authentication system in my app that uses "current_user" - And I perform a request to "http://example.com:123/test/index" in the "production" environment - Then I should receive a Airbrake notification - And the Airbrake notification should contain user details - When I have set up authentication system in my app that uses "current_member" - And I perform a request to "http://example.com:123/test/index" in the "production" environment - Then I should receive a Airbrake notification - And the Airbrake notification should contain user details - - Scenario: It should also send custom user attributes - When I configure the Airbrake shim - And I configure the notifier to use the following configuration lines: - """ - config.api_key = "myapikey" - config.logger = Logger.new STDOUT - config.user_attributes = [:id, :name, :email, :username] - """ - And I define a response for "TestController#index": - """ - raise RuntimeError, "some message" - """ - And I route "/test/index" to "test#index" - And I have set up authentication system in my app that uses "current_user" - And I perform a request to "http://example.com:123/test/index" in the "production" environment - Then I should receive a Airbrake notification - And the Airbrake notification should contain the custom user details - - Scenario: It should warn the user that she's using unsupported attributes for - current user - When I configure the Airbrake shim - And I configure the notifier to use the following configuration lines: - """ - config.api_key = "myapikey" - config.logger = Logger.new STDOUT - config.user_attributes = [:id, :name, :email, :username, :shoe_size] - """ - And I run `rails runner config/boot.rb` - Then I should see "Unsupported user attribute: 'shoe_size'" - And I should not see "Unsupported user attribute: 'id'" - - Scenario: It should log the notice when failure happens - When Airbrake server is not responding - And I configure the notifier to use the following configuration lines: - """ - config.api_key = "myapikey" - config.logger = Logger.new STDOUT - """ - And I define a response for "TestController#index": - """ - raise RuntimeError, "some message" - """ - And I route "/test/index" to "test#index" - And I perform a request to "http://example.com:123/test/index?param=value" in the "production" environment - Then I should see "Notice details:" - And I should see "some message" - - Scenario: It should send the framework info - When I configure the Airbrake shim - And I configure the notifier to use the following configuration lines: - """ - config.api_key = "myapikey" - config.logger = Logger.new STDOUT - """ - And I define a response for "TestController#index": - """ - raise RuntimeError, "some message" - """ - And I route "/test/index" to "test#index" - And I perform a request to "http://example.com:123/test/index" in the "production" environment - Then I should receive a Airbrake notification - And the Airbrake notification should contain the framework information - - Scenario: Middleware should be correctly placed - When I list the application's middleware and save it into a file - Then the Airbrake middleware should be placed correctly diff --git a/gems/2.2.2/gems/airbrake-4.3.0/features/rake.feature b/gems/2.2.2/gems/airbrake-4.3.0/features/rake.feature deleted file mode 100644 index 7104176..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/features/rake.feature +++ /dev/null @@ -1,33 +0,0 @@ -Feature: Use the Gem to catch errors in a Rake application - - Background: - Given I've prepared the Rakefile - - Scenario: Ignoring exceptions - When I run rake with airbrake ignored - Then Airbrake should not catch the exception - - Scenario: Catching exceptions in Rake - When I run rake with airbrake - Then Airbrake should catch the exception - - Scenario: Falling back to default handler before Airbrake is configured - When I run rake with airbrake not yet configured - Then Airbrake should not catch the exception - - Scenario: Disabling Rake exception catcher - When I run rake with airbrake disabled - Then Airbrake should not catch the exception - - Scenario: Autodetect, running from terminal - When I run rake with airbrake autodetect from terminal - Then Airbrake should not catch the exception - - Scenario: Autodetect, not running from terminal - When I run rake with airbrake autodetect not from terminal - Then Airbrake should catch the exception - - # @wip - # Scenario: Airbrake should also send the command name - # When I run `rake airbrake_autodetect_not_from_terminal` - # Then command "airbrake_autodetect_not_from_terminal" should be reported diff --git a/gems/2.2.2/gems/airbrake-4.3.0/features/sinatra.feature b/gems/2.2.2/gems/airbrake-4.3.0/features/sinatra.feature deleted file mode 100644 index 10cbe7c..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/features/sinatra.feature +++ /dev/null @@ -1,126 +0,0 @@ -Feature: Use the notifier in a Sinatra app - - Scenario: Rescue an exception in a Sinatra app - Given the following Rack app: - """ - require 'sinatra/base' - require 'airbrake' - require 'logger' - - Airbrake.configure do |config| - config.api_key = 'my_api_key' - config.logger = Logger.new STDOUT - config.development_environments = [] - end - - class FontaneApp < Sinatra::Base - use Airbrake::Sinatra - - get "/test/index" do - raise "Sinatra has left the building" - end - end - - app = FontaneApp - """ - When I perform a Rack request to "http://example.com:123/test/index?param=value" - Then I should receive a Airbrake notification - - Scenario: Catching environment name in modular Sinatra app - Given the following Rack app: - """ - require 'sinatra/base' - require 'airbrake' - require 'logger' - - Airbrake.configure do |config| - config.api_key = 'my_api_key' - config.logger = Logger.new STDOUT - end - - class FontaneApp < Sinatra::Base - use Airbrake::Sinatra - - set :environment, :production - - get "/test/index" do - raise "Sinatra has left the building" - end - end - - app = FontaneApp - """ - When I perform a Rack request to "http://example.com:123/test/index?param=value" - Then I should receive a Airbrake notification - And the output should contain "Env: production" - - Scenario: Warnings when environment name wasn't determined automatically - Given the following Rack app: - """ - require 'sinatra/base' - require 'airbrake' - require 'logger' - - Airbrake.configure do |config| - config.api_key = 'my_api_key' - config.logger = Logger.new STDOUT - config.development_environments = [] - end - - class DummyMiddleware - def initialize(app) - @app = app - end - - def call(env) - @app.call(env) - end - end - - class FontaneApp < Sinatra::Base - - use Airbrake::Sinatra - - use DummyMiddleware - - set :environment, :production - - get "/test/index" do - raise "Sinatra has left the building" - end - end - - app = FontaneApp - """ - When I perform a Rack request to "http://example.com:123/test/index?param=value" - Then I should receive a Airbrake notification - And the output should contain "Please set your environment name manually" - - Scenario: Give precendence to environment name that was first set - Given the following Rack app: - """ - require 'sinatra/base' - require 'airbrake' - require 'logger' - - Airbrake.configure do |config| - config.api_key = 'my_api_key' - config.logger = Logger.new STDOUT - config.environment_name = "staging" - end - - class FontaneApp < Sinatra::Base - use Airbrake::Sinatra - - set :environment, :production - - get "/test/index" do - raise "Sinatra has left the building" - end - end - - app = FontaneApp - """ - When I perform a Rack request to "http://example.com:123/test/index?param=value" - Then I should receive a Airbrake notification - And the output should contain "Env: staging" diff --git a/gems/2.2.2/gems/airbrake-4.3.0/features/step_definitions/file_steps.rb b/gems/2.2.2/gems/airbrake-4.3.0/features/step_definitions/file_steps.rb deleted file mode 100644 index 0257042..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/features/step_definitions/file_steps.rb +++ /dev/null @@ -1,14 +0,0 @@ -Then /^"([^\"]*)" should not contain text of "([^\"]*)"$/ do |target_file, contents_file| - notifier_root = File.join(File.dirname(__FILE__), '..', '..') - full_path_contents = File.join(notifier_root, contents_file) - contents_text = File.open(full_path_contents).read - - full_path_target = File.join(rails_root, target_file) - target_text = File.open(full_path_target).read - - target_text.should_not include(contents_text) -end - -Then /^I append "([^\"]*)" to Gemfile$/ do |contents| - append_to_gemfile(contents) -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/features/step_definitions/rack_steps.rb b/gems/2.2.2/gems/airbrake-4.3.0/features/step_definitions/rack_steps.rb deleted file mode 100644 index d46603f..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/features/step_definitions/rack_steps.rb +++ /dev/null @@ -1,27 +0,0 @@ -Given /^the following Rack app:$/ do |definition| - File.open(RACK_FILE, 'w') { |file| file.write(definition) } -end - -When /^I add "([^\"]*)" requirement(?: with "([^\"]*)" option)?$/ do |gem,option| - append_to_gemfile("gem '#{gem}'#{option ? ", #{option}":""}") -end - -When /^I initialize Gemfile$/ do - step %{I run `bundle init`} -end - -When /^I perform a Rack request to "([^\"]*)"$/ do |url| - shim_file = File.join(PROJECT_ROOT, 'features', 'support', 'airbrake_shim.rb.template') - request_file = File.join(TEMP_DIR, 'rack_request.rb') - File.open(request_file, 'w') do |file| - file.puts "require 'rubygems'" - file.puts IO.read(shim_file) - file.puts IO.read(RACK_FILE) - file.puts "env = Rack::MockRequest.env_for(#{url.inspect})" - file.puts "status, headers, body = app.call(env)" - file.puts %{puts "HTTP \#{status}"} - file.puts %{headers.each { |key, value| puts "\#{key}: \#{value}"}} - file.puts "body.each { |part| print part }" - end - step %{I run `bundle exec ruby #{request_file}`} -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/features/step_definitions/rails_application_steps.rb b/gems/2.2.2/gems/airbrake-4.3.0/features/step_definitions/rails_application_steps.rb deleted file mode 100644 index 9f95237..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/features/step_definitions/rails_application_steps.rb +++ /dev/null @@ -1,267 +0,0 @@ -require 'uri' - -require 'active_support/core_ext/string/inflections' - -Given /^Airbrake server is not responding$/ do - content = <<-CONTENT - require 'sham_rack' - - ShamRack.at("api.airbrake.io") {["500", { "Content-type" => "text/xml" }, ["Internal server error"]]} - - CONTENT - target = File.join(rails_root, 'config', 'initializers', 'airbrake_shim.rb') - File.open(target,"w") { |f| f.write content } -end - -Then /^I should (?:(not ))?receive a Airbrake notification$/ do |negator| - steps %{ - Then the output should #{negator}contain "** [Airbrake] Response from Airbrake:" - And the output should #{negator}contain "b6817316-9c45-ed26-45eb-780dbb86aadb" - And the output should #{negator}contain "http://airbrake.io/locate/b6817316-9c45-ed26-45eb-780dbb86aadb" - } -end - -Then /^I should receive two Airbrake notifications$/ do - step %{the output should match /\[Airbrake\] Response from Airbrake:/} -end - -When /^I configure the Airbrake shim$/ do - shim_file = File.join(PROJECT_ROOT, 'features', 'support', 'airbrake_shim.rb.template') - target = File.join(rails_root, 'config', 'initializers', 'airbrake_shim.rb') - FileUtils.cp(shim_file, target) -end - -When /^I configure the notifier to use "([^\"]*)" as an API key$/ do |api_key| - steps %{ - When I configure the notifier to use the following configuration lines: - """ - config.api_key = #{api_key.inspect} - """ - } -end - -When /^I configure the notifier to use the following configuration lines:$/ do |configuration_lines| - initializer_code = <<-EOF - Airbrake.configure do |config| - config.test_mode = true - #{configuration_lines} - end - EOF - - File.open(rails_initializer_file, 'w') { |file| file.write(initializer_code) } -end - -def rails_initializer_file - File.join(rails_root, 'config', 'initializers', 'airbrake.rb') -end - -def rails_non_initializer_airbrake_config_file - File.join(rails_root, 'config', 'airbrake.rb') -end - -Then /^I should (?:(not ))?see "([^\"]*)"$/ do |negator,expected_text| - step %{the output should #{negator}contain "#{expected_text}"} -end - -When /^I install the "([^\"]*)" plugin$/ do |plugin_name| - FileUtils.mkdir_p("#{rails_root}/vendor/plugins/#{plugin_name}") -end - -When /^I define a response for "([^\"]*)":$/ do |controller_and_action, definition| - controller_class_name, action = controller_and_action.split('#') - controller_name = controller_class_name.underscore - controller_file_name = File.join(rails_root, 'app', 'controllers', "#{controller_name}.rb") - File.open(controller_file_name, "w") do |file| - file.puts "class #{controller_class_name} < ApplicationController" - file.puts "def consider_all_requests_local; false; end" - file.puts "def local_request?; false; end" - file.puts "def #{action}" - file.puts definition - file.puts "end" - file.puts "end" - end -end - -When /^I perform a request to "([^\"]*)"$/ do |uri| - perform_request(uri) - step %{I run `bundle exec rails runner request.rb`} -end - -When /^I perform a request to "([^\"]*)" in the "([^\"]*)" environment$/ do |uri, environment| - perform_request(uri,environment) - step %{I run `bundle exec rails runner -e #{environment} request.rb`} -end - -Given /^the response page for a "([^\"]*)" error is$/ do |error, html| - File.open(File.join(rails_root, "public", "#{error}.html"), "w") do |file| - file.write(html) - end -end - -Then /^I should see the Rails version$/ do - step %{I should see "Rails: #{ENV["RAILS_VERSION"]}"} -end - -Then /^I should see that "([^\"]*)" is not considered a framework gem$/ do |gem_name| - step %{I should not see "[R] #{gem_name}"} -end - -When /^I route "([^\"]*)" to "([^\"]*)"$/ do |path, controller_action_pair| - route = %(get "#{path}", :to => "#{controller_action_pair}") - routes_file = File.join(rails_root, "config", "routes.rb") - File.open(routes_file, "r+") do |file| - content = file.read - content.gsub!(/^end$/, " #{route}\nend") - file.rewind - file.write(content) - end -end - -Then /^"([^\"]*)" should not contain "([^\"]*)"$/ do |file_path, text| - actual_text = IO.read(File.join(rails_root, file_path)) - if actual_text.include?(text) - raise "Didn't expect text:\n#{actual_text}\nTo include:\n#{text}" - end -end - -Then /^my Airbrake configuration should contain the following line:$/ do |line| - configuration_file = rails_initializer_file - - configuration = File.read(configuration_file) - if ! configuration.include?(line.strip) - raise "Expected text:\n#{configuration}\nTo include:\n#{line}\nBut it didn't." - end -end - -When /^I configure the Heroku shim with "([^\"]*)"( and multiple app support)?$/ do |api_key, multi_app| - heroku_script_bin = File.join(TEMP_DIR, "bin") - FileUtils.mkdir_p(heroku_script_bin) - heroku_script = File.join(heroku_script_bin, "heroku") - heroku_env_vars = <<-VARS -AIRBRAKE_API_KEY => myapikey - APP_NAME => cold-moon-2929 - BUNDLE_WITHOUT => development:test - COMMIT_HASH => lj32j42ss9332jfa2 - DATABASE_URL => postgres://fchovwjcyb:QLPVWmBBbf4hCG_YMrtV@ec3-107-28-193-23.compute-1.amazonaws.com/fhcvojwwcyb - LANG => en_US.UTF-8 - LAST_GIT_BY => kensa - RACK_ENV => production - SHARED_DATABASE_URL => postgres://fchovwjcyb:QLPVwMbbbF8Hcg_yMrtV@ec2-94-29-181-224.compute-1.amazonaws.com/fhcvojcwwyb - STACK => bamboo-mri-1.9.2 - URL => cold-moon-2929.heroku.com - VARS - single_app_script = <<-SINGLE -#!/bin/bash -if [ $1 == 'config' ] -then - echo "#{heroku_env_vars}" -fi - SINGLE - - multi_app_script = <<-MULTI -#!/bin/bash -if [[ $1 == 'config' && $2 == '--app' ]] -then - echo "#{heroku_env_vars}" -fi - MULTI - - File.open(heroku_script, "w") do |f| - if multi_app - f.puts multi_app_script - else - f.puts single_app_script - end - end - FileUtils.chmod(0755, heroku_script) - prepend_path(heroku_script_bin) -end - -When /^I configure the application to filter parameter "([^\"]*)"$/ do |parameter| - application_filename = File.join(rails_root, 'config', 'application.rb') - application_lines = File.open(application_filename).readlines - - application_definition_line = application_lines.detect { |line| line =~ /Application/ } - application_definition_line_index = application_lines.index(application_definition_line) - - parameter = (parameter == "block" ? "lambda { |x,y| x }" : parameter.inspect) - application_lines.insert(application_definition_line_index + 1, " config.filter_parameters += [#{parameter}]") - - File.open(application_filename, "w") do |file| - file.puts application_lines.join("\n") - end -end - -When /^I have set up authentication system in my app that uses "([^\"]*)"$/ do |current_user| - application_controller = File.join(rails_root, 'app', 'controllers', "application_controller.rb") - definition = - """ - class ApplicationController < ActionController::Base - def consider_all_requests_local; false; end - def local_request?; false; end - - # this is the ultimate authentication system, devise is history - def #{current_user} - Struct.new(:id, :name, :email, :username, :class_name).new(1, 'Bender', 'bender@beer.com', 'b3nd0r', 'User') - end - end - """ - File.open(application_controller, "w") {|file| file.puts definition } -end - -Then /^the Airbrake notification should contain "([^\"]*)"$/ do |content| - step %{the last notice sent should contain "#{content}"} -end - -Then /^the Airbrake notification should not contain "([^\"]*)"$/ do |content| - step %{the last notice sent should not contain "#{content}"} -end - -Then /^the Airbrake notification should contain the custom user details$/ do - step %{the last notice sent should contain "Bender"} - step %{the last notice sent should contain "bender@beer.com"} - step %{the last notice sent should contain "b3nd0r"} -end - -Then /^the Airbrake notification should contain user details$/ do - step %{the last notice sent should contain "1"} -end - -Then /^the Airbrake notification should not contain any of the sensitive Rack variables$/ do - sensitive_rack_data_regex = FILTERED_RACK_VARS.map do |var| - var.instance_of?(Regexp) ? var : Regexp.quote(var) - end.join("|") - step %{the last notice sent should not contain keys with "#{sensitive_rack_data_regex}"} -end - -Then /^the last notice sent should contain "([^\"]*)"$/ do |data| - last_notice = File.read(LAST_NOTICE) - last_notice.should match(%r{#{data}}) -end - -Then /^the last notice sent should not contain "([^\"]*)"$/ do |data| - last_notice = File.read(LAST_NOTICE) - last_notice.should_not match(%r{#{data}}) -end - -Then /^the last notice sent should not contain keys with "([^\"]*)"$/ do |data| - last_notice = File.read(LAST_NOTICE) - last_notice.should_not match(%r{key\=\"(#{data})\"}) -end - -Then /^the Airbrake notification should contain the framework information$/ do - step %{the last notice sent should contain "Rails: #{ENV["RAILS_VERSION"]}"} -end - -When /^I list the application's middleware and save it into a file$/ do - step %{I run `bash -c 'bundle exec rake middleware > middleware.dump'`} -end - -Then /^the Airbrake middleware should be placed correctly$/ do - middleware_file = File.join(LOCAL_RAILS_ROOT, 'middleware.dump') - middleware = File.read(middleware_file).split(/\n/) - airbrake_index = middleware.rindex("use Airbrake::Rails::Middleware") - middleware_index = middleware.rindex("use ActionDispatch::DebugExceptions") || - middleware.rindex("use ActionDispatch::ShowExceptions") - (airbrake_index > middleware_index).should be_true -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/features/step_definitions/rake_steps.rb b/gems/2.2.2/gems/airbrake-4.3.0/features/step_definitions/rake_steps.rb deleted file mode 100644 index 75748aa..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/features/step_definitions/rake_steps.rb +++ /dev/null @@ -1,22 +0,0 @@ -Given /I've prepared the Rakefile/ do - rakefile = File.join(PROJECT_ROOT, 'features', 'support', 'rake', 'Rakefile') - target = File.join(TEMP_DIR, 'Rakefile') - FileUtils.cp(rakefile, target) -end - -When /I run rake with (.+)/ do |command| - command = "rake #{command.gsub(' ','_')}" - step %{I run `#{command}`} -end - -Then "Airbrake should not catch the exception" do - step %{I should not see "[airbrake]"} -end - -Then "Airbrake should catch the exception" do - step %{I should see "[airbrake]"} -end - -Then /^command "(.*?)" should be reported$/ do |command_name| - step %{the output should contain "[airbrake] rake #{command_name}"} -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/features/support/airbrake_shim.rb.template b/gems/2.2.2/gems/airbrake-4.3.0/features/support/airbrake_shim.rb.template deleted file mode 100644 index b48e933..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/features/support/airbrake_shim.rb.template +++ /dev/null @@ -1,11 +0,0 @@ -require 'sham_rack' - -ShamRack.at("api.airbrake.io") do |env| - response = <<-end_xml - -b6817316-9c45-ed26-45eb-780dbb86aadb -http://airbrake.io/locate/b6817316-9c45-ed26-45eb-780dbb86aadb - - end_xml - ["200 OK", { "Content-type" => "text/xml" }, [response]] -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/features/support/aruba.rb b/gems/2.2.2/gems/airbrake-4.3.0/features/support/aruba.rb deleted file mode 100644 index 23705f6..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/features/support/aruba.rb +++ /dev/null @@ -1,5 +0,0 @@ -Before do - @aruba_timeout_seconds = 30 - @aruba_io_wait_seconds = 5 - @dirs = ["tmp"] -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/features/support/env.rb b/gems/2.2.2/gems/airbrake-4.3.0/features/support/env.rb deleted file mode 100644 index 6464e58..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/features/support/env.rb +++ /dev/null @@ -1,39 +0,0 @@ -require 'active_support' -require 'nokogiri' -require 'rspec' -require 'aruba/cucumber' -require 'pry' - -PROJECT_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..', '..')).freeze -TEMP_DIR = File.join(PROJECT_ROOT, 'tmp').freeze -LOCAL_RAILS_ROOT = File.join(TEMP_DIR, 'rails_root').freeze -RACK_FILE = File.join(TEMP_DIR, 'rack_app.rb').freeze -LAST_NOTICE = File.join(PROJECT_ROOT, 'resources', 'notice.xml') -ORIGINAL_RACK_FILTERS = File.join(PROJECT_ROOT, 'lib', 'airbrake', 'utils', 'rack_filters.rb') - -Before do - FileUtils.rm_rf(LOCAL_RAILS_ROOT) - - reload_rack_filters -end - -When /^I reset Bundler environment variable$/ do - BUNDLE_ENV_VARS.each do |key| - ENV[key] = nil - end -end - -def prepend_path(path) - ENV['PATH'] = path + ":" + ENV['PATH'] -end - -def reload_rack_filters - original_filters = File.read(ORIGINAL_RACK_FILTERS) - - Dir.mkdir(TEMP_DIR) unless Dir.exist?(TEMP_DIR) - - File.write(File.join(TEMP_DIR, "rack_filters.rb"), - original_filters.lines.to_a[1..-2].join("\n")) - - require File.join(TEMP_DIR, "rack_filters.rb") -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/features/support/matchers.rb b/gems/2.2.2/gems/airbrake-4.3.0/features/support/matchers.rb deleted file mode 100644 index c888066..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/features/support/matchers.rb +++ /dev/null @@ -1,35 +0,0 @@ -RSpec::Matchers.define :have_content do |xpath, content| - match do |document| - @elements = document.search(xpath) - - if @elements.empty? - false - else - element_with_content = document.at("#{xpath}[contains(.,'#{content}')]") - - if element_with_content.nil? - @found = @elements.collect { |element| element.content } - - false - else - true - end - end - end - - failure_message_for_should do |document| - if @elements.empty? - "In XML:\n#{document}\nNo element at #{xpath}" - else - "In XML:\n#{document}\nGot content #{@found.inspect} at #{xpath} instead of #{content.inspect}" - end - end - - failure_message_for_should_not do |document| - unless @elements.empty? - "In XML:\n#{document}\nExpcted no content #{content.inspect} at #{xpath}" - end - end -end - -World(RSpec::Matchers) diff --git a/gems/2.2.2/gems/airbrake-4.3.0/features/support/rails.rb b/gems/2.2.2/gems/airbrake-4.3.0/features/support/rails.rb deleted file mode 100644 index a804260..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/features/support/rails.rb +++ /dev/null @@ -1,156 +0,0 @@ -BUNDLE_ENV_VARS = %w(RUBYOPT BUNDLE_PATH BUNDLE_BIN_PATH BUNDLE_GEMFILE) -ORIGINAL_BUNDLE_VARS = Hash[ENV.select{ |key,value| BUNDLE_ENV_VARS.include?(key) }] - -ENV['RAILS_ENV'] = 'test' - -Before do - ENV['BUNDLE_GEMFILE'] = File.join(Dir.pwd, ENV['BUNDLE_GEMFILE']) unless ENV['BUNDLE_GEMFILE'].start_with?(Dir.pwd) - @framework_version = nil -end - -After do |s| - ORIGINAL_BUNDLE_VARS.each_pair do |key, value| - ENV[key] = value - end - Cucumber.wants_to_quit = true if s.failed? -end - -module RailsHelpers - def rails_root_exists? - File.exists?(environment_path) - end - - def application_controller_filename - controller_filename = File.join(rails_root, 'app', 'controllers', "application_controller.rb") - end - - def rails_3_or_4? - rails_version =~ /\A[34]/ - end - - def rails_root - LOCAL_RAILS_ROOT - end - - def rails_uses_rack? - rails_3_or_4? || rails_version =~ /^2\.3/ - end - - def rails_version - @rails_version ||= begin - if ENV["RAILS_VERSION"] - ENV["RAILS_VERSION"] - elsif bundler_manages_gems? - rails_version = open(gemfile_path).read.match(/gem.*rails["'].*["'](.+)["']/)[1] - else - environment_file = File.join(rails_root, 'config', 'environment.rb') - rails_version = `grep RAILS_GEM_VERSION #{environment_file}`.match(/[\d.]+/)[0] - end - end - end - - def bundler_manages_gems? - File.exists?(gemfile_path) - end - - def gemfile_path - gemfile = File.join(rails_root, 'Gemfile') - end - - def rails_manages_gems? - rails_version =~ /\A2\.[123]/ - end - - def rails_supports_initializers? - rails_3_or_4? || rails_version =~ /\A2\./ - end - - def rails_finds_generators_in_gems? - rails_3_or_4? || rails_version =~ /\A2\./ - end - - def version_string - ENV['RAILS_VERSION'] || `tail -n 1 SUPPORTED_RAILS_VERSIONS` # use latest version if ENV["RAILS_VERSION"] is undefined - end - - def environment_path - File.join(rails_root, 'config', 'environment.rb') - end - - def rakefile_path - File.join(rails_root, 'Rakefile') - end - - def config_gem(gem_name, version = nil) - run = "Rails::Initializer.run do |config|" - insert = " config.gem '#{gem_name}'" - insert += ", :version => '#{version}'" if version - content = File.read(environment_path) - content = "require 'thread'\n#{content}" - if content.sub!(run, "#{run}\n#{insert}") - File.open(environment_path, 'wb') { |file| file.write(content) } - else - raise "Couldn't find #{run.inspect} in #{environment_path}" - end - end - - def config_gem_dependencies - insert = <<-END - if Gem::VERSION >= "1.3.6" - module Rails - class GemDependency - def requirement - r = super - (r == Gem::Requirement.default) ? nil : r - end - end - end - end - END - run = "Rails::Initializer.run do |config|" - content = File.read(environment_path) - if content.sub!(run, "#{insert}\n#{run}") - File.open(environment_path, 'wb') { |file| file.write(content) } - else - raise "Couldn't find #{run.inspect} in #{environment_path}" - end - end - - def require_thread - content = File.read(rakefile_path) - content = "require 'thread'\n#{content}" - File.open(rakefile_path, 'wb') { |file| file.write(content) } - end - - def perform_request(uri, environment = 'production') - request_script = <<-SCRIPT -require File.expand_path('../config/environment', __FILE__) - -env = Rack::MockRequest.env_for(#{uri.inspect}) -response = RailsRoot::Application.call(env) - -response = response.last if response.last.is_a?(ActionDispatch::Response) - -if response.is_a?(Array) - puts "Status: " + response.first.to_s - puts "Headers: " + response.second.to_s - if response.last.respond_to?(:each) - # making it work even with Rack::BodyProxy - body = "" - response.last.each do |chunk| - body << chunk - end - response.pop - response << body - end - puts "Body: " + response.last.to_s -else - puts response.body -end - SCRIPT - File.open(File.join(rails_root, 'request.rb'), 'w') { |file| file.write(request_script) } - end - -end - -World(RailsHelpers) diff --git a/gems/2.2.2/gems/airbrake-4.3.0/features/support/rake/Rakefile b/gems/2.2.2/gems/airbrake-4.3.0/features/support/rake/Rakefile deleted file mode 100644 index 0bb5741..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/features/support/rake/Rakefile +++ /dev/null @@ -1,77 +0,0 @@ -# A test harness for RakeHandler -# -require 'rake' -require 'rubygems' -require 'airbrake' -require 'airbrake/rake_handler' - -class IgnoredException < StandardError; end - -Airbrake.configure do |c| - c.ignore_rake_only = ["IgnoredException"] -end - -# Should catch exception -task :airbrake do - Airbrake.configuration.rescue_rake_exceptions = true - stub_tty_output(true) - raise_exception -end - -# Should not catch exception -task :airbrake_disabled do - Airbrake.configuration.rescue_rake_exceptions = false - stub_tty_output(true) - raise_exception -end - -# Should ignore the exception -task :airbrake_ignored do - Airbrake.configuration.rescue_rake_exceptions = true - stub_tty_output(true) - raise_exception(IgnoredException) -end - -# Should not catch exception as tty_output is true -task :airbrake_autodetect_from_terminal do - Airbrake.configuration.rescue_rake_exceptions = nil - stub_tty_output(true) - raise_exception -end - -# Should catch exception as tty_output is false -task :airbrake_autodetect_not_from_terminal do - Airbrake.configuration.rescue_rake_exceptions = nil - stub_tty_output(false) - raise_exception -end - -task :airbrake_not_yet_configured do - Airbrake.configuration.rescue_rake_exceptions = true - stub_tty_output(true) - stub_empty_sender - raise_exception -end - -module Airbrake - def self.send_notice(notice) - $stderr.puts "[airbrake] #{notice.component}" - end -end - -def stub_empty_sender - Airbrake.sender = nil -end - -def stub_tty_output(value) - Rake.application.instance_eval do - @tty_output_stub = value - def tty_output? - @tty_output_stub - end - end -end - -def raise_exception(exception_class = StandardError) - raise exception_class.new('TEST') -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/features/user_informer.feature b/gems/2.2.2/gems/airbrake-4.3.0/features/user_informer.feature deleted file mode 100644 index 35a1e59..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/features/user_informer.feature +++ /dev/null @@ -1,57 +0,0 @@ -Feature: Inform the user of the airbrake notice that was just created - - Background: - Given I successfully run `rails new rails_root -O --skip-gemfile` - And I cd to "rails_root" - And I configure the Airbrake shim - - Scenario: Rescue an exception in a controller - When I run `rails generate airbrake -k myapikey` - And I define a response for "TestController#index": - """ - raise RuntimeError, "some message" - """ - And the response page for a "500" error is - """ - - """ - And I route "/test/index" to "test#index" - And I perform a request to "http://example.com:123/test/index?param=value" in the "production" environment - Then I should see "Airbrake Error b6817316-9c45-ed26-45eb-780dbb86aadb" - - Scenario: Rescue an exception in a controller with a custom error string - When I configure the notifier to use the following configuration lines: - """ - config.api_key = "myapikey" - config.user_information = 'Error #{{ error_id }}' - """ - And I run `rails generate airbrake -k myapikey` - And I define a response for "TestController#index": - """ - raise RuntimeError, "some message" - """ - And the response page for a "500" error is - """ - - """ - And I route "/test/index" to "test#index" - And I perform a request to "http://example.com:123/test/index?param=value" in the "production" environment - Then I should see "Error #b6817316-9c45-ed26-45eb-780dbb86aadb" - - Scenario: Don't inform the user - When I configure the notifier to use the following configuration lines: - """ - config.user_information = false - """ - And I run `rails generate airbrake -k myapikey` - And I define a response for "TestController#index": - """ - raise RuntimeError, "some message" - """ - And the response page for a "500" error is - """ - - """ - And I route "/test/index" to "test#index" - And I perform a request to "http://example.com:123/test/index?param=value" in the "production" environment - Then I should not see "Airbrake Error b6817316-9c45-ed26-45eb-780dbb86aadb" diff --git a/gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/airbrake_generator.rb b/gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/airbrake_generator.rb deleted file mode 100644 index 6274d07..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/airbrake_generator.rb +++ /dev/null @@ -1,94 +0,0 @@ -require File.expand_path(File.dirname(__FILE__) + "/lib/insert_commands.rb") -require File.expand_path(File.dirname(__FILE__) + "/lib/rake_commands.rb") - -class AirbrakeGenerator < Rails::Generator::Base - def add_options!(opt) - opt.on('-k', '--api-key=key', String, "Your Airbrake API key") { |v| options[:api_key] = v} - opt.on('-h', '--heroku', "Use the Heroku addon to provide your Airbrake API key") { |v| options[:heroku] = v} - opt.on('-a', '--app=myapp', String, "Your Heroku app name (only required if deploying to >1 Heroku app)") { |v| options[:app] = v} - end - - def manifest - if !api_key_configured? && !options[:api_key] && !options[:heroku] - puts "Must pass --api-key or --heroku or create config/initializers/airbrake.rb" - exit - end - if plugin_is_present? - puts "You must first remove the airbrake plugin. Please run: script/plugin remove airbrake" - exit - end - record do |m| - m.directory 'lib/tasks' - m.file 'airbrake_tasks.rake', 'lib/tasks/airbrake_tasks.rake' - if ['config/deploy.rb', 'Capfile'].all? { |file| File.exists?(file) } - m.append_to 'config/deploy.rb', capistrano_hook - end - if api_key_expression - if use_initializer? - m.template 'initializer.rb', 'config/initializers/airbrake.rb', - :assigns => {:api_key => api_key_expression} - else - m.template 'initializer.rb', 'config/airbrake.rb', - :assigns => {:api_key => api_key_expression} - m.append_to 'config/environment.rb', "require 'config/airbrake'" - end - end - determine_api_key if heroku? - m.rake "airbrake:test", :generate_only => true - end - end - - def api_key_expression - s = if options[:api_key] - "'#{options[:api_key]}'" - elsif options[:heroku] - "ENV['HOPTOAD_API_KEY']" - end - end - - def determine_api_key - puts "Attempting to determine your API Key from Heroku..." - ENV['HOPTOAD_API_KEY'] = heroku_api_key - if ENV['HOPTOAD_API_KEY'] =~ /\S/ - puts "... Done." - puts "Heroku's Airbrake API Key is '#{ENV['HOPTOAD_API_KEY']}'" - else - puts "... Failed." - puts "WARNING: We were unable to detect the Airbrake API Key from your Heroku environment." - puts "Your Heroku application environment may not be configured correctly." - exit 1 - end - end - - def heroku_var(var,app_name = nil) - app = app_name ? "--app #{app_name}" : '' - `heroku config #{app} | grep -E "#{var.upcase}" | awk '{ print $3; }'`.strip - end - - def heroku_api_key - heroku_var("(hoptoad|airbrake)_api_key",options[:app]).split.find {|x| x =~ /\S/ } - end - - def heroku? - options[:heroku] || - system("grep HOPTOAD_API_KEY config/initializers/airbrake.rb") || - system("grep HOPTOAD_API_KEY config/environment.rb") - end - - def use_initializer? - Rails::VERSION::MAJOR > 1 - end - - def api_key_configured? - File.exists?('config/initializers/airbrake.rb') || - system("grep Airbrake config/environment.rb") - end - - def capistrano_hook - IO.read(source_path('capistrano_hook.rb')) - end - - def plugin_is_present? - File.exists?('vendor/plugins/airbrake') - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/lib/insert_commands.rb b/gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/lib/insert_commands.rb deleted file mode 100644 index 9136fb0..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/lib/insert_commands.rb +++ /dev/null @@ -1,34 +0,0 @@ -# Mostly pinched from http://github.com/ryanb/nifty-generators/tree/master - -Rails::Generator::Commands::Base.class_eval do - def file_contains?(relative_destination, line) - File.read(destination_path(relative_destination)).include?(line) - end -end - -Rails::Generator::Commands::Create.class_eval do - def append_to(file, line) - logger.insert "#{line} appended to #{file}" - unless options[:pretend] || file_contains?(file, line) - File.open(file, "a") do |file| - file.puts - file.puts line - end - end - end -end - -Rails::Generator::Commands::Destroy.class_eval do - def append_to(file, line) - logger.remove "#{line} removed from #{file}" - unless options[:pretend] - gsub_file file, "\n#{line}", '' - end - end -end - -Rails::Generator::Commands::List.class_eval do - def append_to(file, line) - logger.insert "#{line} appended to #{file}" - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/lib/rake_commands.rb b/gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/lib/rake_commands.rb deleted file mode 100644 index c432bb9..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/lib/rake_commands.rb +++ /dev/null @@ -1,24 +0,0 @@ -Rails::Generator::Commands::Create.class_eval do - def rake(cmd, opts = {}) - logger.rake "rake #{cmd}" - unless system("rake #{cmd}") - logger.rake "#{cmd} failed. Rolling back" - command(:destroy).invoke! - end - end -end - -Rails::Generator::Commands::Destroy.class_eval do - def rake(cmd, opts = {}) - unless opts[:generate_only] - logger.rake "rake #{cmd}" - system "rake #{cmd}" - end - end -end - -Rails::Generator::Commands::List.class_eval do - def rake(cmd, opts = {}) - logger.rake "rake #{cmd}" - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/templates/airbrake_tasks.rake b/gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/templates/airbrake_tasks.rake deleted file mode 100644 index b453356..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/templates/airbrake_tasks.rake +++ /dev/null @@ -1,25 +0,0 @@ -# Don't load anything when running the gems:* tasks. -# Otherwise, airbrake will be considered a framework gem. -# https://thoughtbot.lighthouseapp.com/projects/14221/tickets/629 -unless ARGV.any? {|a| a =~ /^gems/} - - Dir[File.join(Rails.root, 'vendor', 'gems', 'airbrake-*')].each do |vendored_notifier| - $: << File.join(vendored_notifier, 'lib') - end - - begin - require 'airbrake/tasks' - rescue LoadError => exception - namespace :airbrake do - %w(deploy test log_stdout).each do |task_name| - desc "Missing dependency for airbrake:#{task_name}" - task task_name do - $stderr.puts "Failed to run airbrake:#{task_name} because of missing dependency." - $stderr.puts "You probably need to run `rake gems:install` to install the airbrake gem" - abort exception.inspect - end - end - end - end - -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/templates/capistrano_hook.rb b/gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/templates/capistrano_hook.rb deleted file mode 100644 index 889b27c..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/templates/capistrano_hook.rb +++ /dev/null @@ -1,6 +0,0 @@ - -Dir[File.join(File.dirname(__FILE__), '..', 'vendor', 'gems', 'airbrake-*')].each do |vendored_notifier| - $: << File.join(vendored_notifier, 'lib') -end - -require 'airbrake/capistrano' diff --git a/gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/templates/initializer.rb b/gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/templates/initializer.rb deleted file mode 100644 index 248d740..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/generators/airbrake/templates/initializer.rb +++ /dev/null @@ -1,4 +0,0 @@ -<% if Rails::VERSION::MAJOR < 3 && Rails::VERSION::MINOR < 2 -%> -require 'airbrake/rails' -<% end -%> -<%= configuration_output %> diff --git a/gems/2.2.2/gems/airbrake-4.3.0/install.rb b/gems/2.2.2/gems/airbrake-4.3.0/install.rb deleted file mode 100644 index 692ee9f..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/install.rb +++ /dev/null @@ -1 +0,0 @@ -puts IO.read(File.join(File.dirname(__FILE__), 'INSTALL')) diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake.rb deleted file mode 100644 index 057d986..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake.rb +++ /dev/null @@ -1,189 +0,0 @@ -begin - require "girl_friday" -rescue LoadError -end - -begin - require "sucker_punch" -rescue LoadError -end - -require 'net/http' -require 'net/https' -require 'rubygems' -require 'logger' - -require 'airbrake/version' -require 'airbrake/jobs/send_job' -require 'airbrake/utils/rack_filters' -require 'airbrake/utils/params_cleaner' -require 'airbrake/configuration' -require 'airbrake/notice' -require 'airbrake/sender' -require 'airbrake/response' -require 'airbrake/backtrace' -require 'airbrake/rack' -require 'airbrake/sinatra' -require 'airbrake/user_informer' - -begin - require 'airbrake/sidekiq' -rescue LoadError -end - -require 'airbrake/railtie' if defined?(Rails::Railtie) - -module Airbrake - API_VERSION = "2.4" - LOG_PREFIX = "** [Airbrake] " - - class << self - # The sender object is responsible for delivering formatted data to the Airbrake server. - # Must respond to #send_to_airbrake. See Airbrake::Sender. - attr_accessor :sender - - # A Airbrake configuration object. Must act like a hash and return sensible - # values for all Airbrake configuration options. See Airbrake::Configuration. - attr_writer :configuration - - # Tell the log that the Notifier is good to go - def report_ready - write_verbose_log("Notifier #{VERSION} ready to catch errors") - end - - # Prints out the environment info to the log for debugging help - def report_environment_info - write_verbose_log("Environment Info: #{environment_info}") - end - - # Prints out the response body from Airbrake for debugging help - def report_response_body(response) - write_verbose_log("Response from Airbrake: \n#{Response.pretty_format(response)}") - end - - # Prints out the details about the notice that wasn't sent to server - def report_notice(notice) - write_verbose_log("Notice details: \n#{notice}") - end - - def report_notice_not_sent_for_configuration - write_verbose_log("Notice was not sent due to configuration: \ - \n Environment Monitored? #{configuration.public?} \ - \n API key set? #{configuration.configured?}") - end - - # Returns the Ruby version, Rails version, and current Rails environment - def environment_info - info = "[Ruby: #{RUBY_VERSION}]" - info << " [#{configuration.framework}]" if configuration.framework - info << " [Env: #{configuration.environment_name}]" if configuration.environment_name - info - end - - # Writes out the given message to the #logger - def write_verbose_log(message) - logger.debug LOG_PREFIX + message if logger - end - - # Look for the Rails logger currently defined - def logger - self.configuration.logger || - Logger.new(nil) - end - - # Call this method to modify defaults in your initializers. - # - # @example - # Airbrake.configure do |config| - # config.api_key = '1234567890abcdef' - # config.secure = false - # end - def configure(silent = false) - yield(configuration) - self.sender = if configuration.test_mode? - CollectingSender.new(configuration) - else - Sender.new(configuration) - end - - report_ready unless silent - self.sender - end - - # The configuration object. - # @see Airbrake.configure - def configuration - @configuration ||= Configuration.new - end - - # Sends an exception manually using this method, even when you are not in a controller. - # - # @param [Exception] exception The exception you want to notify Airbrake about. - # @param [Hash] opts Data that will be sent to Airbrake. - # - # @option opts [String] :api_key The API key for this project. The API key is a unique identifier that Airbrake uses for identification. - # @option opts [String] :error_message The error returned by the exception (or the message you want to log). - # @option opts [String] :backtrace A backtrace, usually obtained with +caller+. - # @option opts [String] :rack_env The Rack environment. - # @option opts [String] :session The contents of the user's session. - # @option opts [String] :environment_name The application environment name. - # @option opts [String] :parameters Additional parameters. - def notify(exception, opts = {}) - send_notice(build_notice_for(exception, opts)) - end - - # Sends the notice unless it is one of the default ignored exceptions - # @see Airbrake.notify - def notify_or_ignore(exception, opts = {}) - notice = build_notice_for(exception, opts) - send_notice(notice) unless notice.ignore? - end - - def build_lookup_hash_for(exception, options = {}) - notice = build_notice_for(exception, options) - - result = {} - result[:action] = notice.action rescue nil - result[:component] = notice.component rescue nil - result[:error_class] = notice.error_class if notice.error_class - result[:environment_name] = 'production' - - unless notice.backtrace.lines.empty? - result[:file] = notice.backtrace.lines.first.file - result[:line_number] = notice.backtrace.lines.first.number - end - - result - end - - private - - def send_notice(notice) - if configuration.configured? && configuration.public? - if configuration.async? - configuration.async.call(notice) - nil # make sure we never set env["airbrake.error_id"] for async notices - else - sender.send_to_airbrake(notice) - end - else - report_notice_not_sent_for_configuration - end - end - - def build_notice_for(exception, opts = {}) - exception = unwrap_exception(exception) - opts = opts.merge(:exception => exception) if exception.is_a?(Exception) - opts = opts.merge(exception.to_hash) if exception.respond_to?(:to_hash) - Notice.new(configuration.merge(opts)) - end - - def unwrap_exception(exception) - if exception.respond_to?(:original_exception) - exception.original_exception - elsif exception.respond_to?(:continued_exception) - exception.continued_exception - end || exception - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/backtrace.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/backtrace.rb deleted file mode 100644 index 4a97f12..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/backtrace.rb +++ /dev/null @@ -1,103 +0,0 @@ -module Airbrake - # Front end to parsing the backtrace for each notice - class Backtrace - - # Handles backtrace parsing line by line - class Line - - # regexp (optionnally allowing leading X: for windows support) - INPUT_FORMAT = %r{^((?:[a-zA-Z]:)?[^:]+):(\d+)(?::in `([^']+)')?$}.freeze - - # The file portion of the line (such as app/models/user.rb) - attr_reader :file - - # The line number portion of the line - attr_reader :number - - # The method_name of the line (such as index) - attr_reader :method_name - - # Parses a single line of a given backtrace - # @param [String] unparsed_line The raw line from +caller+ or some backtrace - # @return [Line] The parsed backtrace line - def self.parse(unparsed_line) - _, file, number, method_name = unparsed_line.match(INPUT_FORMAT).to_a - new(file, number, method_name) - end - - def initialize(file, number, method_name) - @file = file - @number = number - @method_name = method_name - end - - # Reconstructs the line in a readable fashion - def to_s - "#{file}:#{number}:in `#{method_name}'" - end - - def ==(other) - to_s == other.to_s - end - - def inspect - "" - end - end - - # holder for an Array of Backtrace::Line instances - attr_reader :lines - - def self.parse(ruby_backtrace, opts = {}) - ruby_lines = split_multiline_backtrace(ruby_backtrace) - - filters = opts[:filters] || [] - filtered_lines = ruby_lines.to_a.map do |line| - filters.inject(line) do |l, proc| - proc.call(l) - end - end.compact - - lines = filtered_lines.collect do |unparsed_line| - Line.parse(unparsed_line) - end - - new(lines) - end - - def initialize(lines) - @lines = lines - end - - def inspect - "" - end - - def to_s - content = [] - lines.each do |line| - content << line - end - content.join("\n") - end - - def ==(other) - if other.respond_to?(:lines) - lines == other.lines - else - false - end - end - - private - - def self.split_multiline_backtrace(backtrace) - backtrace = [backtrace] unless backtrace.respond_to?(:to_a) - if backtrace.to_a.size == 1 - backtrace.to_a.first.split(/\n\s*/) - else - backtrace - end - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/capistrano.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/capistrano.rb deleted file mode 100644 index 1eae95c..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/capistrano.rb +++ /dev/null @@ -1,101 +0,0 @@ -# Defines deploy:notify_airbrake which will send information about the deploy to Airbrake. -require 'capistrano' - -module Airbrake - module Capistrano - # What follows is a copy-paste backport of the shellescape method - # included in Ruby 1.9 and greater. The FSF's guidance on a snippet - # of this size indicates that such a small function is not subject - # to copyright and as such there is no risk of a license conflict: - # See www.gnu.org/prep/maintain/maintain.html#Legally-Significant - # - # Escapes a string so that it can be safely used in a Bourne shell - # command line. +str+ can be a non-string object that responds to - # +to_s+. - # - # Note that a resulted string should be used unquoted and is not - # intended for use in double quotes nor in single quotes. - # - # argv = Shellwords.escape("It's better to give than to receive") - # argv #=> "It\\'s\\ better\\ to\\ give\\ than\\ to\\ receive" - # - # String#shellescape is a shorthand for this function. - # - # argv = "It's better to give than to receive".shellescape - # argv #=> "It\\'s\\ better\\ to\\ give\\ than\\ to\\ receive" - # - # # Search files in lib for method definitions - # pattern = "^[ \t]*def " - # open("| grep -Ern #{pattern.shellescape} lib") { |grep| - # grep.each_line { |line| - # file, lineno, matched_line = line.split(':', 3) - # # ... - # } - # } - # - # It is the caller's responsibility to encode the string in the right - # encoding for the shell environment where this string is used. - # - # Multibyte characters are treated as multibyte characters, not bytes. - # - # Returns an empty quoted String if +str+ has a length of zero. - def self.shellescape(str) - str = str.to_s - - # An empty argument will be skipped, so return empty quotes. - return "''" if str.empty? - - str = str.dup - - # Treat multibyte characters as is. It is caller's responsibility - # to encode the string in the right encoding for the shell - # environment. - str.gsub!(/([^A-Za-z0-9_\-.,:\/@\n])/, "\\\\\\1") - - # A LF cannot be escaped with a backslash because a backslash + LF - # combo is regarded as line continuation and simply ignored. - str.gsub!(/\n/, "'\n'") - - return str - end - - def self.load_into(configuration) - configuration.load do - after "deploy", "airbrake:deploy" - after "deploy:migrations", "airbrake:deploy" - after "deploy:cold", "airbrake:deploy" - - namespace :airbrake do - desc <<-DESC - Notify Airbrake of the deployment by running the notification on the REMOTE machine. - - Run remotely so we use remote API keys, environment, etc. - DESC - task :deploy, :except => { :no_release => true } do - rack_env = fetch(:rack_env, nil) - rails_env = fetch(:rails_env, nil) - airbrake_env = fetch(:airbrake_env, rack_env || rails_env || "production") - local_user = ENV['USER'] || ENV['USERNAME'] - executable = RUBY_PLATFORM.downcase.include?('mswin') ? fetch(:rake, 'rake.bat') : fetch(:rake, 'bundle exec rake ') - directory = configuration.release_path - notify_command = "cd #{directory}; #{executable} #{'RACK_ENV='+rack_env if rack_env} #{'RAILS_ENV='+rails_env if rails_env} airbrake:deploy TO=#{airbrake_env} REVISION=#{current_revision} REPO=#{repository} USER=#{Airbrake::Capistrano::shellescape(local_user)}" - notify_command << " DRY_RUN=true" if dry_run - notify_command << " API_KEY=#{ENV['API_KEY']}" if ENV['API_KEY'] - logger.info "Notifying Airbrake of Deploy (#{notify_command})" - if configuration.dry_run - logger.info "DRY RUN: Notification not actually run." - else - result = "" - run(notify_command, :once => true) { |ch, stream, data| result << data } - # TODO: Check if SSL is active on account via result content. - end - logger.info "Airbrake Notification Complete." - end - end - end - end - end -end - -if Capistrano::Configuration.instance - Airbrake::Capistrano.load_into(Capistrano::Configuration.instance) -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/capistrano3.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/capistrano3.rb deleted file mode 100644 index 0417acd..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/capistrano3.rb +++ /dev/null @@ -1,3 +0,0 @@ -# Defines airbrake:deploy which will send information about the deploy to Airbrake. - -load File.expand_path("../tasks/airbrake.cap", __FILE__) diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/client.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/client.rb deleted file mode 100644 index 7822457..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/client.rb +++ /dev/null @@ -1,76 +0,0 @@ -require File.expand_path( "../runner", __FILE__) - -module Client - extend self - - def options - Runner.options - end - - def fetch_projects - uri = URI.parse "http://#{options.account}.airbrake.io"\ - "/data_api/v1/projects.xml?auth_token=#{options.auth_token}" - http = Net::HTTP.new(uri.host,uri.port) - request = Net::HTTP::Get.new(uri.request_uri) - response = http.request(request) - response.body - end - - def create_project - uri = URI.parse "http://#{options.account}.airbrake.io"\ - "/data_api/v1/projects.xml" - http = Net::HTTP.new(uri.host,uri.port) - request = Net::HTTP::Post.new(uri.request_uri) - request.set_form_data('project[name]' => options.name,'auth_token' => options.auth_token) - response = http.request(request) - response.body - - print_project_response(response.body) - end - - def create_deploy - uri = URI.parse "http://airbrake.io/deploys.txt" - http = Net::HTTP.new(uri.host,uri.port) - request = Net::HTTP::Post.new(uri.request_uri) - opts = { 'api_key' => options.api_key }.merge!(deploy_opts) - request.set_form_data(opts) - response = http.request(request) - puts response.message if response.respond_to?(:message) - end - - def deploy_opts - opts = {} - ['rails_env', 'scm_revision', 'scm_repository', 'local_username'].each do |attr| - opts.merge!("deploy[#{attr}]" => options.send(attr)) - end - opts - end - - def print_projects - factory = ProjectFactory.new - projects = fetch_projects - factory.create_projects_from_xml(projects) - abort "No projects were fetched. Did you provide the correct auth token?" if projects.match(/error/m) - puts "\nProjects\n" + "".rjust(63,"#") - factory.projects.each do |project| - puts project - end - puts - end - - def print_project_response(response) - case response - when /errors/ - puts "Error creating project: #{response.gsub("\n","").scan(/.*]*>(.*?)<\/error>.*/).last.first.gsub(/\s{1,}/," ")}" - when /project/ - project = Project.new(:id => response[/]*>(.*?)<\/id>/,1], - :name => response[/]*>(.*?)<\/name>/,1], - :api_key => response[/]*>(.*?)<\/api-key>/,1]) - puts "\nProject details\n" + "".rjust(63,"#") - puts project - else - puts "Unexpected error. Please try again!\n" - puts response - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/options.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/options.rb deleted file mode 100644 index db4f904..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/options.rb +++ /dev/null @@ -1,45 +0,0 @@ -class Options - - ATTRIBUTES = [:error, :message, :api_key, :host, :port, :auth_token, :name, - :account, :rails_env, :scm_revision, :scm_repository, :local_username] - - ATTRIBUTES.each do |attribute| - attr_reader attribute - end - - private - - # You should not write to this from outside - ATTRIBUTES.each do |attribute| - attr_writer attribute - end - - public - - # Parses all the options passed and stores them in attributes - def initialize(array = []) - opts = Hash[*array] - self.error = opts.delete("-e") || opts.delete("--error") { RuntimeError } - self.message = opts.delete("-m") || opts.delete("--message") { "I've made a huge mistake" } - self.api_key = opts.delete("-k") || opts.delete("--api-key") || config_from_file.api_key || ENV["AIRBRAKE_API_KEY"] - self.host = opts.delete("-h") || opts.delete("--host") || config_from_file.host - self.port = opts.delete("-p") || opts.delete("--port") || config_from_file.port - self.auth_token = opts.delete("-t") || opts.delete("--auth-token") || ENV["AIRBRAKE_AUTH_TOKEN"] - self.name = opts.delete("-n") || opts.delete("--name") - self.account = opts.delete("-a") || opts.delete("--account") || ENV["AIRBRAKE_ACCOUNT"] - self.rails_env = opts.delete("-E") || opts.delete("--rails-env") || ENV["RAILS_ENV"] || "production" - self.scm_revision = opts.delete("-r") || opts.delete("--scm-revision") || ENV["REVISION"] - self.scm_repository = opts.delete("-R") || opts.delete("--scm-repository") || ENV["REPO"] - self.local_username = opts.delete("-u") || opts.delete("--local-username") || ENV["USER"] - opts - end - - # Fallback to read from the initializer - def config_from_file - begin - load "config/initializers/airbrake.rb" - rescue LoadError - end - Airbrake.configuration - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/printer.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/printer.rb deleted file mode 100644 index 09897ed..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/printer.rb +++ /dev/null @@ -1,33 +0,0 @@ -module Printer - def self.print(collection) - collection.each do |element| - puts element - end - end - - def self.print_usage - puts <<-USAGE -Usage: airbrake [COMMAND] [OPTION]... -Commands: - raise # Raise an exception specified by ERROR and MESSAGE. - list # List all the projects for given AUTH_TOKEN and ACCOUNT. - create # Create a project with the given NAME. - deploy # Send a new deployment notification to a project that matches the API_KEY. - -Options: - -e, [--error=ERROR] # Error class to raise. Default: RuntimeError - -m, [--message=MESSAGE] # Error message. Default: "I've made a huge mistake" - -k, [--api-key=API_KEY] # Api key of your Airbrake application - -h, [--host=HOST] # URL of the Airbrake API server. Default: api.airbrake.io - -p, [--port=PORT] # Port of the Airbrake API server. Default: 80 - -t, [--auth-token=AUTH_TOKEN] # The auth token used for API requests - -a, [--account=ACCOUNT] # The account used for API requests - -n, [--name=NAME] # The name of the project you're trying to create - -E, [--rails-env=NAME] # The name of the environment you're deploying to. Default: production - -r, [--scm-revision=REVISION] # SCM revision for deployment info - -R, [--scm-repository=REPO] # SCM repository for deployment info - -u, [--local-username=USER] # The name of the user who is deploying - -h, [--help] # Show this usage - USAGE - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/project.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/project.rb deleted file mode 100644 index d19ccfd..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/project.rb +++ /dev/null @@ -1,17 +0,0 @@ -class Project - attr_writer :name, :id, :api_key - - def initialize(attributes = {}) - attributes.keys.each do |key| - instance_variable_set("@#{key}",attributes[key]) - end - end - - def to_s - "#{@name}".rjust(20) + "(#{@id}):".rjust(10) + " #{@api_key}" - end - - def valid? - @name && @id && @api_key - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/project_factory.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/project_factory.rb deleted file mode 100644 index 4c69616..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/project_factory.rb +++ /dev/null @@ -1,39 +0,0 @@ -require File.expand_path( "../project", __FILE__) -# Responsible for creating projects when needed. -# Creates them from XML received. -class ProjectFactory - def initialize - @project = Project.new - @projects = [] - end - - def project - @project - end - - def create_projects_from_xml(xml) - xml.split("\n").each do |line| - /]*>(.*)<\/name>/ =~ line - name = $1 - project.name = name.capitalize if name - /]*>(.*)<\/id>/ =~ line - id = $1 - project.id = id if id - /]*>(.*)<\/api-key>/ =~ line - api_key = $1 - project.api_key = api_key if api_key - check_project - end - end - - def check_project - if @project.valid? - projects << @project - @project = Project.new - end - end - - def projects - @projects - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/runner.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/runner.rb deleted file mode 100644 index 7c522f9..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/runner.rb +++ /dev/null @@ -1,49 +0,0 @@ -require File.expand_path( "../project_factory", __FILE__) -require File.expand_path( "../options", __FILE__) -require File.expand_path( "../validator", __FILE__) -require File.expand_path( "../printer", __FILE__) -require File.expand_path( "../client", __FILE__) - -module Runner - extend Validator - - extend self - - attr_accessor :options - - def run!(command, cli_options = {}) - - self.options = Options.new(cli_options) - - case command - when 'raise' - validates :api_key - Airbrake.configure do |c| - c.api_key = options.api_key - c.host = options.host if options.host - c.port = options.port if options.port - c.secure = options.port.to_i == 443 - end - exception_id = Airbrake.notify(:error_class => options.error, - :error_message => "#{options.error}: #{options.message}", - :cgi_data => ENV) - abort "Error sending exception to Airbrake server. Try again later." unless exception_id - puts "Exception sent successfully: http://airbrake.io/locate/#{exception_id}" - - when "list" - validates :auth_token, :account - Client.print_projects - - when "create" - validates :auth_token, :account - Client.create_project - - when "deploy" - validates :api_key - Client.create_deploy - - else - Printer.print_usage - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/validator.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/validator.rb deleted file mode 100644 index f443629..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/cli/validator.rb +++ /dev/null @@ -1,8 +0,0 @@ -module Validator - def validates(*attributes) - attributes.each do |attribute| - abort "You didn't provide #{attribute.to_s.upcase}"\ - " so no API request was made." unless Runner.options.send(attribute) - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/configuration.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/configuration.rb deleted file mode 100644 index 096192a..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/configuration.rb +++ /dev/null @@ -1,366 +0,0 @@ -module Airbrake - # Used to set up and modify settings for the notifier. - class Configuration - - OPTIONS = [:api_key, :backtrace_filters, :development_environments, - :development_lookup, :environment_name, :host, - :http_open_timeout, :http_read_timeout, :ignore, :ignore_by_filters, - :ignore_user_agent, :notifier_name, :notifier_url, :notifier_version, - :params_filters, :params_whitelist_filters, :project_root, :port, :protocol, :proxy_host, - :proxy_pass, :proxy_port, :proxy_user, :secure, :use_system_ssl_cert_chain, - :framework, :user_information, :rescue_rake_exceptions, :rake_environment_filters, - :test_mode].freeze - - # The API key for your project, found on the project edit form. - attr_accessor :api_key - - # The host to connect to (defaults to airbrake.io). - attr_accessor :host - - # The port on which your Airbrake server runs (defaults to 443 for secure - # connections, 80 for insecure connections). - attr_writer :port - - # +true+ for https connections, +false+ for http connections. - attr_accessor :secure - - # +true+ to use whatever CAs OpenSSL has installed on your system. +false+ to use the ca-bundle.crt file included in Airbrake itself (reccomended and default) - attr_accessor :use_system_ssl_cert_chain - - # The HTTP open timeout in seconds (defaults to 2). - attr_accessor :http_open_timeout - - # The HTTP read timeout in seconds (defaults to 5). - attr_accessor :http_read_timeout - - # The hostname of your proxy server (if using a proxy) - attr_accessor :proxy_host - - # The port of your proxy server (if using a proxy) - attr_accessor :proxy_port - - # The username to use when logging into your proxy server (if using a proxy) - attr_accessor :proxy_user - - # The password to use when logging into your proxy server (if using a proxy) - attr_accessor :proxy_pass - - # A list of parameters that should be filtered out of what is sent to Airbrake. - # By default, all "password" attributes will have their contents replaced. - attr_accessor :params_filters - - # A list of whitelisted parameters that will be sent to Airbrake. - # All other parameters will be filtered and their content replaced. - # By default this list is empty (all parameters are whitelisted). - attr_accessor :params_whitelist_filters - - # A list of filters for cleaning and pruning the backtrace. See #filter_backtrace. - attr_reader :backtrace_filters - - # A list of filters for ignoring exceptions. See #ignore_by_filter. - attr_reader :ignore_by_filters - - # A list of environment keys that will be ignored from what is sent to Airbrake server - # Empty by default and used only in rake handler - attr_reader :rake_environment_filters - - # A list of exception classes to ignore during server requests. The array can be appended to. - attr_reader :ignore - - # A list of exception classes to ignore during Rake tasks. The array can be appended to. - attr_reader :ignore_rake - - # A list of user agents that are being ignored. The array can be appended to. - attr_reader :ignore_user_agent - - # A list of environments in which notifications should not be sent. - attr_accessor :development_environments - - # +true+ if you want to check for production errors matching development errors, +false+ otherwise. - attr_accessor :development_lookup - - # The name of the environment the application is running in - attr_accessor :environment_name - - # The path to the project in which the error occurred, such as the Rails.root - attr_accessor :project_root - - # The name of the notifier library being used to send notifications (such as "Airbrake Notifier") - attr_accessor :notifier_name - - # The version of the notifier library being used to send notifications (such as "1.0.2") - attr_accessor :notifier_version - - # The url of the notifier library being used to send notifications - attr_accessor :notifier_url - - # The logger used by Airbrake - attr_accessor :logger - - # The text that the placeholder is replaced with. {{error_id}} is the actual error number. - attr_accessor :user_information - - # The framework Airbrake is configured to use - attr_accessor :framework - - # Should Airbrake catch exceptions from Rake tasks? - # (boolean or nil; set to nil to catch exceptions when rake isn't running from a terminal; default is nil) - attr_accessor :rescue_rake_exceptions - alias_method :rescue_rake_exceptions?, :rescue_rake_exceptions - - # User attributes that are being captured - attr_reader :user_attributes - - # Only used for JSON API - attr_reader :project_id - - # Setting this to true will use the CollectingSender instead of - # the default one which will cause storing the last notice locally - attr_accessor :test_mode - alias_method :test_mode?, :test_mode - - DEFAULT_PARAMS_FILTERS = %w(password password_confirmation).freeze - DEFAULT_PARAMS_WHITELIST_FILTERS = [].freeze - - DEFAULT_USER_ATTRIBUTES = %w(id).freeze - - VALID_USER_ATTRIBUTES = %w(id name username email).freeze - - DEFAULT_BACKTRACE_FILTERS = [ - lambda { |line| - if defined?(Airbrake.configuration.project_root) && Airbrake.configuration.project_root.to_s != '' - line.sub(/#{Airbrake.configuration.project_root}/, "[PROJECT_ROOT]") - else - line - end - }, - lambda { |line| line.gsub(/^\.\//, "") }, - lambda { |line| - Gem.path.each{ |path| line.sub!(/#{path}/, "[GEM_ROOT]") unless path.to_s.strip.empty? } if defined?(Gem) - line - }, - lambda { |line| line if line !~ %r{lib/airbrake} } - ].freeze - - IGNORE_DEFAULT = ['ActiveRecord::RecordNotFound', - 'ActionController::RoutingError', - 'ActionController::InvalidAuthenticityToken', - 'CGI::Session::CookieStore::TamperedWithCookie', - 'ActionController::UnknownHttpMethod', - 'ActionController::UnknownAction', - 'AbstractController::ActionNotFound', - 'Mongoid::Errors::DocumentNotFound', - 'ActionController::UnknownFormat'] - - alias_method :secure?, :secure - alias_method :use_system_ssl_cert_chain?, :use_system_ssl_cert_chain - - def initialize - @secure = false - @use_system_ssl_cert_chain= false - @host = 'api.airbrake.io' - @port = nil - @http_open_timeout = 2 - @http_read_timeout = 5 - @params_filters = DEFAULT_PARAMS_FILTERS.dup - @params_whitelist_filters = DEFAULT_PARAMS_WHITELIST_FILTERS.dup - @backtrace_filters = DEFAULT_BACKTRACE_FILTERS.dup - @ignore_by_filters = [] # These filters are applied to both server requests and Rake tasks - @ignore = IGNORE_DEFAULT.dup - @ignore_rake = [] # Rake tasks don't ignore any exception classes by default - @ignore_user_agent = [] - @development_environments = %w(development test cucumber) - @development_lookup = true - @notifier_name = 'Airbrake Notifier' - @notifier_version = VERSION - @notifier_url = 'https://github.com/airbrake/airbrake' - @framework = 'Standalone' - @user_information = 'Airbrake Error {{error_id}}' - @rescue_rake_exceptions = nil - @user_attributes = DEFAULT_USER_ATTRIBUTES.dup - @rake_environment_filters = [] - @async = nil - end - - # Takes a block and adds it to the list of backtrace filters. When the filters - # run, the block will be handed each line of the backtrace and can modify - # it as necessary. - # - # @example - # config.filter_bracktrace do |line| - # line.gsub(/^#{Rails.root}/, "[Rails.root]") - # end - # - # @param [Proc] block The new backtrace filter. - # @yieldparam [String] line A line in the backtrace. - def filter_backtrace(&block) - self.backtrace_filters << block - end - - # Takes a block and adds it to the list of ignore filters. - # When the filters run, the block will be handed the exception. - # @example - # config.ignore_by_filter do |exception_data| - # true if exception_data[:error_class] == "RuntimeError" - # end - # - # @param [Proc] block The new ignore filter - # @yieldparam [Hash] data The exception data given to +Airbrake.notify+ - # @yieldreturn [Boolean] If the block returns true the exception will be ignored, otherwise it will be processed by airbrake. - def ignore_by_filter(&block) - self.ignore_by_filters << block - end - - # Overrides the list of default ignored errors. - # - # @param [Array] names A list of exceptions to ignore. - def ignore_only=(names) - @ignore = [names].flatten - end - - # Overrides the list of default ignored errors during Rake tasks. - # - # @param [Array] names A list of rake exceptions to ignore. - def ignore_rake_only=(names) - @ignore_rake = [names].flatten - end - - # Overrides the list of default ignored user agents - # - # @param [Array] A list of user agents to ignore - def ignore_user_agent_only=(names) - @ignore_user_agent = [names].flatten - end - - # Allows config options to be read like a hash - # - # @param [Symbol] option Key for a given attribute - def [](option) - send(option) - end - - # Returns a hash of all configurable options - def to_hash - OPTIONS.inject({}) do |hash, option| - hash[option.to_sym] = self.send(option) - hash - end - end - - # Returns a hash of all configurable options merged with +hash+ - # - # @param [Hash] hash A set of configuration options that will take precedence over the defaults - def merge(hash) - to_hash.merge(hash) - end - - # Determines if the notifier will send notices. - # @return [Boolean] Returns +true+ if an api string exists, +false+ otherwise. - def configured? - !api_key.nil? && !api_key.empty? - end - - # Determines if the notifier will send notices. - # @return [Boolean] Returns +false+ if in a development environment, +true+ otherwise. - def public? - @public ||= !development_environments.include?(environment_name) - end - - def port - @port || default_port - end - - # Determines whether protocol should be "http" or "https". - # @return [String] Returns +"http"+ if you've set secure to +false+ in - # configuration, and +"https"+ otherwise. - def protocol - if secure? - 'https' - else - 'http' - end - end - - def user_attributes=(user_attributes) - @user_attributes = validate_user_attributes user_attributes - end - - # Should Airbrake send notifications asynchronously - # (boolean, nil or callable; default is nil). - # Can be used as callable-setter when block provided. - def async(&block) - if block_given? - @async = block - end - @async - end - alias_method :async?, :async - - def async=(use_default_or_this) - @async = use_default_or_this == true ? - default_async_processor : - use_default_or_this - end - - def rescue_rake_exceptions=(val) - if val && !defined?(Airbrake::RakeHandler) - raise LoadError, "you must require 'airbrake/rake_handler' to rescue from rake exceptions" - end - @rescue_rake_exceptions = val - end - - def ca_bundle_path - if use_system_ssl_cert_chain? && File.exist?(OpenSSL::X509::DEFAULT_CERT_FILE) - OpenSSL::X509::DEFAULT_CERT_FILE - else - local_cert_path # ca-bundle.crt built from source, see resources/README.md - end - end - - def local_cert_path - File.expand_path(File.join("..", "..", "..", "resources", "ca-bundle.crt"), __FILE__) - end - - def project_id=(project_id) - @project_id = "#{project_id}" - end - - private - # Determines what port should we use for sending notices. - # @return [Fixnum] Returns 443 if you've set secure to true in your - # configuration, and 80 otherwise. - def default_port - if secure? - 443 - else - 80 - end - end - - # Async notice delivery defaults to girl friday - def default_async_processor - if defined?(SuckerPunch) - lambda {|notice| SendJob.new.async.perform(notice)} - elsif defined?(GirlFriday) - queue = GirlFriday::WorkQueue.new(nil, :size => 3) do |notice| - Airbrake.sender.send_to_airbrake(notice) - end - lambda {|notice| queue << notice} - else - warn "[AIRBRAKE] You can't use the default async handler without sucker_punch or girl_friday."\ - " Please make sure you have sucker_punch or girl_friday installed (sucker_punch is recommended)." - end - end - - def validate_user_attributes(user_attributes) - user_attributes.reject do |attribute| - unless VALID_USER_ATTRIBUTES.include? attribute.to_s - warn "[AIRBRAKE] Unsupported user attribute: '#{attribute}'. "\ - "This attribute will not be shown in the Airbrake UI. "\ - "Check http://git.io/h6YRpA for more info." - true - end - end - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/jobs/send_job.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/jobs/send_job.rb deleted file mode 100644 index 40b0d0e..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/jobs/send_job.rb +++ /dev/null @@ -1,7 +0,0 @@ -class SendJob - include SuckerPunch::Job if defined?(SuckerPunch) - - def perform(notice) - Airbrake.sender.send_to_airbrake(notice) - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/notice.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/notice.rb deleted file mode 100644 index fc99c13..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/notice.rb +++ /dev/null @@ -1,396 +0,0 @@ -require 'builder' -require 'socket' -require 'multi_json' - -module Airbrake - class Notice - - class << self - def attr_reader_with_tracking(*names) - attr_readers.concat(names) - attr_reader_without_tracking(*names) - end - - alias_method :attr_reader_without_tracking, :attr_reader - alias_method :attr_reader, :attr_reader_with_tracking - - - def attr_readers - @attr_readers ||= [] - end - end - - # The exception that caused this notice, if any - attr_reader :exception - - # The API key for the project to which this notice should be sent - attr_reader :api_key - - # The backtrace from the given exception or hash. - attr_reader :backtrace - - # The name of the class of error (such as RuntimeError) - attr_reader :error_class - - # The name of the server environment (such as "production") - attr_reader :environment_name - - # CGI variables such as HTTP_METHOD - attr_reader :cgi_data - - # The message from the exception, or a general description of the error - attr_reader :error_message - - # See Configuration#backtrace_filters - attr_reader :backtrace_filters - - # See Configuration#params_filters - attr_reader :params_filters - - # See Configuration#params_whitelist_filters - attr_reader :params_whitelist_filters - - # A hash of parameters from the query string or post body. - attr_reader :parameters - alias_method :params, :parameters - - # The component (if any) which was used in this request (usually the controller) - attr_reader :component - alias_method :controller, :component - - # The action (if any) that was called in this request - attr_reader :action - - # A hash of session data from the request - attr_reader :session_data - - # The path to the project that caused the error (usually Rails.root) - attr_reader :project_root - - # The URL at which the error occurred (if any) - attr_reader :url - - # See Configuration#ignore - attr_reader :ignore - - # See Configuration#ignore_by_filters - attr_reader :ignore_by_filters - - # The name of the notifier library sending this notice, such as "Airbrake Notifier" - attr_reader :notifier_name - - # The version number of the notifier library sending this notice, such as "2.1.3" - attr_reader :notifier_version - - # A URL for more information about the notifier library sending this notice - attr_reader :notifier_url - - # The host name where this error occurred (if any) - attr_reader :hostname - - # Details about the user who experienced the error - attr_reader :user - - # Instance that's used for cleaning out data that should be filtered out, should respond to #clean - attr_accessor :cleaner - - public - - def initialize(args) - @args = args - @exception = args[:exception] - @api_key = args[:api_key] - @project_root = args[:project_root] - @url = args[:url] || rack_env(:url) - - @notifier_name = args[:notifier_name] - @notifier_version = args[:notifier_version] - @notifier_url = args[:notifier_url] - - @ignore = args[:ignore] || [] - @ignore_by_filters = args[:ignore_by_filters] || [] - @backtrace_filters = args[:backtrace_filters] || [] - @params_filters = args[:params_filters] || [] - @params_whitelist_filters = args[:params_whitelist_filters] || [] - - @parameters = args[:parameters] || - action_dispatch_params || - rack_env(:params) || - {} - @component = args[:component] || args[:controller] || parameters['controller'] - @action = args[:action] || parameters['action'] - - @environment_name = args[:environment_name] - @cgi_data = (args[:cgi_data].respond_to?(:to_hash) && args[:cgi_data].to_hash.dup) || args[:rack_env] || {} - @backtrace = Backtrace.parse(exception_attribute(:backtrace, caller), :filters => @backtrace_filters) - @error_class = exception_attribute(:error_class) {|exception| exception.class.name } - @error_message = exception_attribute(:error_message, 'Notification') do |exception| - "#{exception.class.name}: #{args[:error_message] || exception.message}" - end - - @hostname = local_hostname - @user = args[:user] || {} - - - also_use_rack_params_filters - find_session_data - - @cleaner = args[:cleaner] || - Airbrake::Utils::ParamsCleaner.new(:blacklist_filters => params_filters, - :whitelist_filters => params_whitelist_filters, - :to_clean => data_to_clean) - - clean_data! - end - - # Converts the given notice to XML - def to_xml - builder = Builder::XmlMarkup.new - builder.instruct! - xml = builder.notice(:version => Airbrake::API_VERSION) do |notice| - notice.tag!("api-key", api_key) - notice.notifier do |notifier| - notifier.name(notifier_name) - notifier.version(notifier_version) - notifier.url(notifier_url) - end - notice.error do |error| - error.tag!('class', error_class) - error.message(error_message) - error.backtrace do |backtrace| - self.backtrace.lines.each do |line| - backtrace.line( - :number => line.number, - :file => line.file, - :method => line.method_name - ) - end - end - end - if request_present? - notice.request do |request| - request.url(url) - request.component(controller) - request.action(action) - unless parameters.empty? - request.params do |params| - xml_vars_for(params, parameters) - end - end - unless session_data.empty? - request.session do |session| - xml_vars_for(session, session_data) - end - end - unless cgi_data.empty? - request.tag!("cgi-data") do |cgi_datum| - xml_vars_for(cgi_datum, cgi_data) - end - end - end - end - notice.tag!("server-environment") do |env| - env.tag!("project-root", project_root) - env.tag!("environment-name", environment_name) - env.tag!("hostname", hostname) - end - unless user.empty? - notice.tag!("current-user") do |u| - user.each do |attr, value| - u.tag!(attr.to_s, value) - end - end - end - if framework =~ /\S/ - notice.tag!("framework", framework) - end - end - xml.to_s - end - - def to_json - MultiJson.dump({ - 'notifier' => { - 'name' => 'airbrake', - 'version' => Airbrake::VERSION, - 'url' => 'https://github.com/airbrake/airbrake' - }, - 'errors' => [{ - 'type' => error_class, - 'message' => error_message, - 'backtrace' => backtrace.lines.map do |line| - { - 'file' => line.file, - 'line' => line.number.to_i, - 'function' => line.method_name - } - end - }], - 'context' => {}.tap do |hash| - if request_present? - hash['url'] = url - hash['component'] = controller - hash['action'] = action - hash['rootDirectory'] = File.dirname(project_root) - hash['environment'] = environment_name - end - end.tap do |hash| - next if user.empty? - - hash['userId'] = user[:id] - hash['userName'] = user[:name] - hash['userEmail'] = user[:email] - end - - }.tap do |hash| - hash['environment'] = cgi_data unless cgi_data.empty? - hash['params'] = parameters unless parameters.empty? - hash['session'] = session_data unless session_data.empty? - end) - end - - # Determines if this notice should be ignored - def ignore? - ignored_class_names.include?(error_class) || - ignore_by_filters.any? {|filter| filter.call(self) } - end - - # Allows properties to be accessed using a hash-like syntax - # - # @example - # notice[:error_message] - # @param [String] method The given key for an attribute - # @return The attribute value, or self if given +:request+ - def [](method) - case method - when :request - self - else - send(method) - end - end - - private - - def request_present? - url || - controller || - action || - !parameters.empty? || - !cgi_data.empty? || - !session_data.empty? - end - - # Gets a property named +attribute+ of an exception, either from an actual - # exception or a hash. - # - # If an exception is available, #from_exception will be used. Otherwise, - # a key named +attribute+ will be used from the #args. - # - # If no exception or hash key is available, +default+ will be used. - def exception_attribute(attribute, default = nil, &block) - (exception && from_exception(attribute, &block)) || @args[attribute] || default - end - - # Gets a property named +attribute+ from an exception. - # - # If a block is given, it will be used when getting the property from an - # exception. The block should accept and exception and return the value for - # the property. - # - # If no block is given, a method with the same name as +attribute+ will be - # invoked for the value. - def from_exception(attribute) - if block_given? - yield(exception) - else - exception.send(attribute) - end - end - - # Replaces the contents of params that match params_filters. - def clean_data! - cleaner.clean.tap do |c| - @parameters = c.parameters - @cgi_data = c.cgi_data - @session_data = c.session_data - end - end - - def data_to_clean - {:parameters => parameters, - :cgi_data => cgi_data, - :session_data => session_data} - end - - def find_session_data - @session_data = @args[:session_data] || @args[:session] || rack_session || {} - @session_data = session_data[:data] if session_data[:data] - end - - # Converts the mixed class instances and class names into just names - # TODO: move this into Configuration or another class - def ignored_class_names - ignore.collect do |string_or_class| - if string_or_class.respond_to?(:name) - string_or_class.name - else - string_or_class - end - end - end - - def xml_vars_for(builder, hash) - hash.each do |key, value| - if value.respond_to?(:to_hash) - builder.var(:key => key){|b| xml_vars_for(b, value.to_hash) } - else - builder.var(value.to_s, :key => key) - end - end - end - - def rack_env(method) - rack_request.send(method) if rack_request - rescue - {:message => "failed to call #{method} on Rack::Request -- #{$!.message}"} - end - - def rack_request - @rack_request ||= if @args[:rack_env] - ::Rack::Request.new(@args[:rack_env]) - end - end - - def action_dispatch_params - @args[:rack_env]['action_dispatch.request.parameters'] if @args[:rack_env] - end - - def rack_session - @args[:rack_env]['rack.session'] if @args[:rack_env] - end - - def also_use_rack_params_filters - if cgi_data - @params_filters ||= [] - @params_filters += cgi_data["action_dispatch.parameter_filter"] || [] - end - end - - def local_hostname - Socket.gethostname - end - - def framework - Airbrake.configuration.framework - end - - def to_s - content = [] - self.class.attr_readers.each do |attr| - content << " #{attr}: #{send(attr)}" - end - content.join("\n") - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rack.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rack.rb deleted file mode 100644 index 05c8203..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rack.rb +++ /dev/null @@ -1,64 +0,0 @@ -module Airbrake - # Middleware for Rack applications. Any errors raised by the upstream - # application will be delivered to Airbrake and re-raised. - # - # Synopsis: - # - # require 'rack' - # require 'airbrake' - # - # Airbrake.configure do |config| - # config.api_key = 'my_api_key' - # #can also set the environment over here - # config.environment_name = ENV['RACK_ENV'] || "development" - # end - # - # app = Rack::Builder.app do - # run lambda { |env| raise "Rack down" } - # end - # - # use Airbrake::Rack - # run app - # - # Use a standard Airbrake.configure call to configure your api key. - class Rack - def initialize(app) - @app = app - Airbrake.configuration.framework = "Rack: #{::Rack.release}" - end - - def ignored_user_agent?(env) - true if Airbrake. - configuration. - ignore_user_agent. - flatten. - any? { |ua| ua === env['HTTP_USER_AGENT'] } - end - - def notify_airbrake(exception, env) - unless ignored_user_agent?(env) - Airbrake.notify_or_ignore(exception, :rack_env => env) - end - end - - def call(env) - begin - response = @app.call(env) - rescue Exception => raised - env['airbrake.error_id'] = notify_airbrake(raised, env) - raise raised - end - - if framework_exception(env) - env['airbrake.error_id'] = notify_airbrake(framework_exception(env), env) - end - - response - end - - def framework_exception(env) - env['rack.exception'] || env['sinatra.error'] - end - - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails.rb deleted file mode 100644 index 676f1fb..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails.rb +++ /dev/null @@ -1,45 +0,0 @@ -require 'airbrake' -require 'airbrake/rails/controller_methods' -require 'airbrake/rails/action_controller_catcher' -require 'airbrake/rails/error_lookup' - -module Airbrake - module Rails - def self.initialize - if defined?(ActionController::Base) - ActionController::Base.send(:include, Airbrake::Rails::ActionControllerCatcher) - ActionController::Base.send(:include, Airbrake::Rails::ErrorLookup) - ActionController::Base.send(:include, Airbrake::Rails::ControllerMethods) - end - - rails_logger = if defined?(::Rails.logger) - ::Rails.logger - elsif defined?(RAILS_DEFAULT_LOGGER) - RAILS_DEFAULT_LOGGER - end - - if defined?(::Rails.configuration) && ::Rails.configuration.respond_to?(:middleware) - if defined?(::ActionController::Failsafe) - ::Rails.configuration.middleware.insert_after 'ActionController::Failsafe', - Airbrake::Rack - end - if defined?(::Rack::Lock) - ::Rails.configuration.middleware.insert_after 'Rack::Lock', - Airbrake::UserInformer - else - ::Rails.configuration.middleware.insert_before 'Rack::Runtime', - Airbrake::UserInformer - end - end - - Airbrake.configure(true) do |config| - config.logger = rails_logger - config.environment_name = defined?(::Rails.env) && ::Rails.env || defined?(RAILS_ENV) && RAILS_ENV - config.project_root = defined?(::Rails.root) && ::Rails.root || defined?(RAILS_ROOT) && RAILS_ROOT - config.framework = defined?(::Rails.version) && "Rails: #{::Rails.version}" || defined?(::Rails::VERSION::STRING) && "Rails: #{::Rails::VERSION::STRING}" - end - end - end -end - -Airbrake::Rails.initialize diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails/action_controller_catcher.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails/action_controller_catcher.rb deleted file mode 100644 index 88cc862..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails/action_controller_catcher.rb +++ /dev/null @@ -1,32 +0,0 @@ -module Airbrake - module Rails - module ActionControllerCatcher - - # Sets up an alias chain to catch exceptions for Rails 2 - def self.included(base) #:nodoc: - if base.method_defined?(:rescue_action_in_public) - base.send(:alias_method, :rescue_action_in_public_without_airbrake, :rescue_action_in_public) - base.send(:alias_method, :rescue_action_in_public, :rescue_action_in_public_with_airbrake) - end - end - - private - - # Overrides the rescue_action method in ActionController::Base, but does not inhibit - # any custom processing that is defined with Rails 2's exception helpers. - def rescue_action_in_public_with_airbrake(exception) - unless airbrake_ignore_user_agent? - error_id = Airbrake.notify_or_ignore(exception, airbrake_request_data) - request.env['airbrake.error_id'] = error_id - end - rescue_action_in_public_without_airbrake(exception) - end - - def airbrake_ignore_user_agent? #:nodoc: - # Rails 1.2.6 doesn't have request.user_agent, so check for it here - user_agent = request.respond_to?(:user_agent) ? request.user_agent : request.env["HTTP_USER_AGENT"] - Airbrake.configuration.ignore_user_agent.flatten.any? { |ua| ua === user_agent } - end - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails/controller_methods.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails/controller_methods.rb deleted file mode 100644 index 3725530..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails/controller_methods.rb +++ /dev/null @@ -1,124 +0,0 @@ -module Airbrake - module Rails - module ControllerMethods - - def airbrake_request_data - { - :parameters => airbrake_filter_if_filtering(params.to_hash), - :session_data => airbrake_filter_if_filtering(airbrake_session_data), - :controller => params[:controller], - :action => params[:action], - :url => airbrake_request_url, - :cgi_data => airbrake_filter_if_filtering(request.env), - :user => airbrake_current_user || {} - } - end - - private - - # This method should be used for sending manual notifications while you are still - # inside the controller. Otherwise it works like Airbrake.notify. - def notify_airbrake(hash_or_exception) - unless airbrake_local_request? - Airbrake.notify_or_ignore(hash_or_exception, airbrake_request_data) - end - end - - def airbrake_local_request? - if defined?(::Rails.application.config) - ::Rails.application.config.consider_all_requests_local || (request.local? && (!request.env["HTTP_X_FORWARDED_FOR"])) - else - consider_all_requests_local || (local_request? && (!request.env["HTTP_X_FORWARDED_FOR"])) - end - end - - def airbrake_ignore_user_agent? #:nodoc: - # Rails 1.2.6 doesn't have request.user_agent, so check for it here - user_agent = request.respond_to?(:user_agent) ? request.user_agent : request.env["HTTP_USER_AGENT"] - Airbrake.configuration.ignore_user_agent.flatten.any? { |ua| ua === user_agent } - end - - - def airbrake_filter_if_filtering(hash) - return hash if ! hash.is_a?(Hash) - - if respond_to?(:filter_parameters) # Rails 2 - filter_parameters(hash) - elsif rails_3_or_4? - filter_rails3_parameters(hash) - else - hash - end - end - - def rails_3_or_4? - defined?(::Rails.version) && ::Rails.version =~ /\A[34]/ - end - - def filter_rails3_parameters(hash) - ActionDispatch::Http::ParameterFilter.new( - ::Rails.application.config.filter_parameters - ).filter(recursive_stringify_keys(hash)) - end - - def recursive_stringify_keys(hash) - hash = hash.stringify_keys - hash.each do |k, v| - if v.is_a?(Hash) - hash[k] = v.respond_to?(:stringify_keys) ? recursive_stringify_keys(v) : nil # Rack::Session::Abstract::SessionHash has a stringify_keys method we should not call - end - end - hash - end - - def airbrake_session_data - if session - if session.respond_to?(:to_hash) - session.to_hash - else - session.data - end - else - {:session => 'no session found'} - end - end - - def airbrake_request_url - url = "#{request.protocol}#{request.host}" - - unless [80, 443].include?(request.port) - url << ":#{request.port}" - end - - URI.join(url, request.fullpath).to_s - end - - def airbrake_current_user - user = fetch_user - - if user - Airbrake.configuration.user_attributes.map(&:to_sym).inject({}) do |hsh, attr| - hsh[attr.to_sym] = user.send(attr) if user.respond_to? attr - hsh - end - end - end - - def fetch_user - if defined?(current_user) - current_user - elsif defined?(current_member) - current_member - else - nil - end - ensure - # The Airbrake middleware is first in the chain, before ActiveRecord::ConnectionAdapters::ConnectionManagement - # kicks in to do its thing. This can cause the connection pool to run out of connections. - if defined?(ActiveRecord::Base) && ActiveRecord::Base.respond_to?(:connection_pool) - ActiveRecord::Base.connection_pool.release_connection - end - end - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails/error_lookup.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails/error_lookup.rb deleted file mode 100644 index f3a2351..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails/error_lookup.rb +++ /dev/null @@ -1,35 +0,0 @@ -module Airbrake - module Rails - module ErrorLookup - - # Sets up an alias chain to catch exceptions when Rails does - def self.included(base) #:nodoc: - if base.method_defined?(:rescue_action_locally) - base.send(:alias_method, :rescue_action_locally_without_airbrake, :rescue_action_locally) - base.send(:alias_method, :rescue_action_locally, :rescue_action_locally_with_airbrake) - end - end - - private - - def rescue_action_locally_with_airbrake(exception) - result = rescue_action_locally_without_airbrake(exception) - - if Airbrake.configuration.development_lookup - path = File.join(File.dirname(__FILE__), '..', '..', 'templates', 'rescue.erb') - notice = Airbrake.build_lookup_hash_for(exception, airbrake_request_data) - - result << @template.render( - :file => path, - :use_full_path => false, - :locals => { :host => Airbrake.configuration.host, - :api_key => Airbrake.configuration.api_key, - :notice => notice }) - end - - result - end - end - end -end - diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails/middleware.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails/middleware.rb deleted file mode 100644 index 2e787ed..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails/middleware.rb +++ /dev/null @@ -1,63 +0,0 @@ -module Airbrake - module Rails - # Rack middleware for Rails applications. Any errors raised by the upstream - # application will be delivered to Airbrake and re-raised. - # - class Middleware - def initialize(app) - @app = app - end - - def call(env) - begin - response = @app.call(env) - rescue Exception => exception - env['airbrake.error_id'] = notify_airbrake(env, exception) - raise exception - end - - if framework_exception = env["action_dispatch.exception"] - env["airbrake.error_id"] = notify_airbrake(env, framework_exception) - end - - response - end - - private - - def controller(env) - env["action_controller.instance"] - end - - def after_airbrake_handler(env, exception) - if controller(env).respond_to?(:rescue_action_in_public_without_airbrake) - controller(env).rescue_action_in_public_without_airbrake(exception) - end - end - - def notify_airbrake(env, exception) - unless ignored_user_agent? env - error_id = Airbrake.notify_or_ignore(exception, request_data(env)) - after_airbrake_handler(env, exception) - error_id - end - end - - def request_data(env) - if controller(env).respond_to?(:airbrake_request_data) - controller(env).airbrake_request_data - else - {:rack_env => env} - end - end - - def ignored_user_agent?(env) - true if Airbrake. - configuration. - ignore_user_agent. - flatten. - any? { |ua| ua === env['HTTP_USER_AGENT'] } - end - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails3_tasks.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails3_tasks.rb deleted file mode 100644 index 88d6c89..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rails3_tasks.rb +++ /dev/null @@ -1,126 +0,0 @@ -require 'airbrake' -require File.join(File.dirname(__FILE__), 'shared_tasks') - -def stub_rake_exception_handling! - # Override error handling in Rake so we don't clutter STDERR - # with unnecesarry stack trace - Rake.application.instance_eval do - class << self - def display_error_message_silent(exception) - puts exception - end - alias_method :display_error_message_old, :display_error_message - alias_method :display_error_message, :display_error_message_silent - end - end -end - -def unstub_rake_exception_handling! - # Turns Rake exception handling back to normal - Rake.application.instance_eval do - class << self - def display_error_message_silent(exception) - display_error_message_old(exception) - end - end - end -end - -namespace :airbrake do - desc "Verify your gem installation by sending a test exception to the airbrake service" - task :test => [:environment] do - - stub_rake_exception_handling! - - Rails.logger = defined?(ActiveSupport::TaggedLogging) ? - ActiveSupport::TaggedLogging.new(Logger.new(STDOUT)) : - Logger.new(STDOUT) - - def wait_for_threads - # if using multiple threads, we have to wait for - # them to finish - if GirlFriday.status.empty? - Thread.list.each do |thread| - thread.join unless thread == Thread.current - end - else - GirlFriday.shutdown! - end - end - - # Sets up verbose logging - Rails.logger.level = Logger::DEBUG - Airbrake.configure(true) do |config| - config.logger = Rails.logger - end - - # Override Rails exception middleware, so we stop cluttering STDOUT - # with stack trace from Rails - class ActionDispatch::DebugExceptions; def call(env); @app.call(env); end; end - class ActionDispatch::ShowExceptions; def call(env); @app.call(env); end; end - - require './app/controllers/application_controller' - - class AirbrakeTestingException < RuntimeError; end - - # Checks if api_key is set - unless Airbrake.configuration.api_key - puts "Airbrake needs an API key configured! Check the README to see how to add it." - exit - end - - # Enables Airbrake reporting on all environments, - # so we don't have to worry about invoking the task in production - Airbrake.configuration.development_environments = [] - - puts "Configuration:" - Airbrake.configuration.to_hash.each do |key, value| - puts sprintf("%25s: %s", key.to_s, value.inspect.slice(0, 55)) - end - - unless defined?(ApplicationController) - puts "No ApplicationController found" - exit - end - - puts 'Setting up the Controller.' - class ApplicationController - # This is to bypass any filters that may prevent access to the action. - prepend_before_filter :test_airbrake - def test_airbrake - puts "Raising '#{exception_class.name}' to simulate application failure." - raise exception_class.new, "\nTesting airbrake via \"rake airbrake:test\"."\ - " If you can see this, it works." - end - - # Ensure we actually have an action to go to. - def verify; end - - def exception_class - exception_name = ENV['EXCEPTION'] || "AirbrakeTestingException" - Object.const_get(exception_name) - rescue - Object.const_set(exception_name, Class.new(Exception)) - end - end - - Rails.application.routes.draw do - get 'verify' => 'application#verify', :as => 'verify', :via => :get - end - - puts 'Processing request.' - - config = Rails.application.config - protocol = (config.respond_to?(:force_ssl) && config.force_ssl) ? 'https' : 'http' - - env = Rack::MockRequest.env_for("#{protocol}://www.example.com/verify") - env['REMOTE_ADDR'] = '127.0.0.1' - - Rails.application.call(env) - - wait_for_threads if defined? GirlFriday - - unstub_rake_exception_handling! - end -end - diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/railtie.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/railtie.rb deleted file mode 100644 index 7710978..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/railtie.rb +++ /dev/null @@ -1,47 +0,0 @@ -require 'airbrake' -require 'rails' - -require 'airbrake/rails/middleware' - -module Airbrake - class Railtie < ::Rails::Railtie - rake_tasks do - require 'airbrake/rake_handler' - require 'airbrake/rails3_tasks' - end - - initializer "airbrake.middleware" do |app| - - middleware = if defined?(ActionDispatch::DebugExceptions) - # Rails >= 3.2.0 - #"ActionDispatch::DebugExceptions" - "ActionDispatch::ShowExceptions" - else - # Rails < 3.2.0 - "ActionDispatch::ShowExceptions" - end - - app.config.middleware.insert_after middleware, - "Airbrake::Rails::Middleware" - - app.config.middleware.insert 0, "Airbrake::UserInformer" - end - - config.after_initialize do - Airbrake.configure(true) do |config| - config.logger ||= config.async? ? ::Logger.new(STDERR) : ::Rails.logger - config.environment_name ||= ::Rails.env - config.project_root ||= ::Rails.root - config.framework = "Rails: #{::Rails::VERSION::STRING}" - end - - ActiveSupport.on_load(:action_controller) do - # Lazily load action_controller methods - # - require 'airbrake/rails/controller_methods' - - include Airbrake::Rails::ControllerMethods - end - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rake_handler.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rake_handler.rb deleted file mode 100644 index 7b30a90..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/rake_handler.rb +++ /dev/null @@ -1,75 +0,0 @@ -# Patch Rake::Application to handle errors with Airbrake -module Airbrake::RakeHandler - def self.included(klass) - klass.class_eval do - include Rake087Methods unless defined?(Rake::VERSION) && Rake::VERSION >= '0.9.0' - alias_method :display_error_message_without_airbrake, :display_error_message - alias_method :display_error_message, :display_error_message_with_airbrake - end - end - - def display_error_message_with_airbrake(exception) - if Airbrake.sender && Airbrake.configuration && - (Airbrake.configuration.rescue_rake_exceptions || - (Airbrake.configuration.rescue_rake_exceptions===nil && !self.tty_output?)) - - Airbrake.notify_or_ignore(exception, - :component => 'rake', - :action => reconstruct_command_line, - :cgi_data => environment_info, - :ignore => Airbrake.configuration.ignore_rake) - end - - display_error_message_without_airbrake(exception) - end - - def reconstruct_command_line - ARGV.join(' ') - end - - def environment_info - ENV.reject do |k| - Airbrake.configuration.rake_environment_filters.include? k - end - end - - # This module brings Rake 0.8.7 error handling to 0.9.0 standards - module Rake087Methods - # Method taken from Rake 0.9.0 source - # - # Provide standard exception handling for the given block. - def standard_exception_handling - begin - yield - rescue SystemExit => ex - # Exit silently with current status - raise - rescue OptionParser::InvalidOption => ex - $stderr.puts ex.message - exit(false) - rescue Exception => ex - # Exit with error message - display_error_message(ex) - exit(false) - end - end - - # Method extracted from Rake 0.8.7 source - def display_error_message(ex) - $stderr.puts "#{name} aborted!" - $stderr.puts ex.message - if options.trace - $stderr.puts ex.backtrace.join("\n") - else - $stderr.puts ex.backtrace.find {|str| str =~ /#{@rakefile}/ } || "" - $stderr.puts "(See full trace by running task with --trace)" - end - end - end -end - -Rake.application.instance_eval do - class << self - include Airbrake::RakeHandler - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/response.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/response.rb deleted file mode 100644 index 6db0908..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/response.rb +++ /dev/null @@ -1,29 +0,0 @@ -module Airbrake - class Response - def self.pretty_format(xml_body) - new(xml_body) - rescue - xml_body - end - - def to_s - output = "\n" - output = "UUID: #{@id}" - output << "\n" - output << "URL: #{@url}" - output - end - - private - - def initialize(xml_body) - @xml_body = xml_body - @url = parse_tag("url") - @id = parse_tag("id") - end - - def parse_tag(name) - @xml_body.match(%r{<#{name}[^>]*>(.*?)})[1] - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/sender.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/sender.rb deleted file mode 100644 index 7bc6749..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/sender.rb +++ /dev/null @@ -1,206 +0,0 @@ -module Airbrake - # Sends out the notice to Airbrake - class Sender - - NOTICES_URI = '/notifier_api/v2/notices'.freeze - HEADERS = { - :xml => { - 'Content-type' => 'text/xml', - 'Accept' => 'text/xml, application/xml' - },:json => { - 'Content-Type' => 'application/json', - 'Accept' => 'application/json' - }} - - JSON_API_URI = '/api/v3/projects'.freeze - HTTP_ERRORS = [Timeout::Error, - Errno::EINVAL, - Errno::ECONNRESET, - EOFError, - Net::HTTPBadResponse, - Net::HTTPHeaderSyntaxError, - Net::ProtocolError, - Errno::ECONNREFUSED, - OpenSSL::SSL::SSLError].freeze - - def initialize(options = {}) - [ :proxy_host, - :proxy_port, - :proxy_user, - :proxy_pass, - :protocol, - :host, - :port, - :secure, - :use_system_ssl_cert_chain, - :http_open_timeout, - :http_read_timeout, - :project_id, - :api_key - ].each do |option| - instance_variable_set("@#{option}", options[option]) - end - end - - - # Sends the notice data off to Airbrake for processing. - # - # @param [Notice or String] notice The notice to be sent off - def send_to_airbrake(notice) - data = prepare_notice(notice) - http = setup_http_connection - - response = begin - http.post(url.respond_to?(:path) ? url.path : url, - data, - headers) - rescue *HTTP_ERRORS => e - log :level => :error, - :message => "Unable to contact the Airbrake server. HTTP Error=#{e}" - nil - end - - case response - when Net::HTTPSuccess then - log :level => :info, - :message => "Success: #{response.class}", - :response => response - else - log :level => :error, - :message => "Failure: #{response.class}", - :response => response, - :notice => notice - end - - if response && response.respond_to?(:body) - error_id = response.body.match(%r{]*>(.*?)}) - error_id[1] if error_id - end - rescue => e - log :level => :error, - :message => "[Airbrake::Sender#send_to_airbrake] Cannot send notification. Error: #{e.class}" + - " - #{e.message}\nBacktrace:\n#{e.backtrace.join("\n\t")}" - - nil - end - - attr_reader :proxy_host, - :proxy_port, - :proxy_user, - :proxy_pass, - :protocol, - :host, - :port, - :secure, - :use_system_ssl_cert_chain, - :http_open_timeout, - :http_read_timeout, - :project_id, - :api_key - - alias_method :secure?, :secure - alias_method :use_system_ssl_cert_chain?, :use_system_ssl_cert_chain - - private - - def prepare_notice(notice) - if json_api_enabled? - begin - JSON.parse(notice) - notice - rescue - notice.to_json - end - else - notice.respond_to?(:to_xml) ? notice.to_xml : notice - end - end - - def api_url - if json_api_enabled? - "#{JSON_API_URI}/#{project_id}/notices?key=#{api_key}" - else - NOTICES_URI - end - end - - def headers - if json_api_enabled? - HEADERS[:json] - else - HEADERS[:xml] - end - end - - def url - URI.parse("#{protocol}://#{host}:#{port}").merge(api_url) - end - - def log(opts = {}) - (opts[:logger] || logger).send(opts[:level], LOG_PREFIX + opts[:message]) - Airbrake.report_environment_info - Airbrake.report_response_body(opts[:response].body) if opts[:response] && opts[:response].respond_to?(:body) - Airbrake.report_notice(opts[:notice]) if opts[:notice] - end - - def logger - Airbrake.logger - end - - def setup_http_connection - http = - Net::HTTP::Proxy(proxy_host, proxy_port, proxy_user, proxy_pass). - new(url.host, url.port) - - http.read_timeout = http_read_timeout - http.open_timeout = http_open_timeout - - if secure? - http.use_ssl = true - - http.ca_file = Airbrake.configuration.ca_bundle_path - http.verify_mode = OpenSSL::SSL::VERIFY_PEER - else - http.use_ssl = false - end - - http - rescue => e - log :level => :error, - :message => "[Airbrake::Sender#setup_http_connection] Failure initializing the HTTP connection.\n" + - "Error: #{e.class} - #{e.message}\nBacktrace:\n#{e.backtrace.join("\n\t")}" - raise e - end - - def json_api_enabled? - !!(host =~ /collect.airbrake.io/) && - project_id =~ /\S/ - end - end - - class CollectingSender < Sender - # Used when test mode is enabled, to store the last XML notice locally - - attr_writer :last_notice_path - - def last_notice - File.read last_notice_path - end - - def last_notice_path - File.expand_path(File.join("..", "..", "..", "resources", "notice.xml"), __FILE__) - end - - def send_to_airbrake(notice) - data = prepare_notice(notice) - - notices_file = File.open(last_notice_path, "w") do |file| - file.puts data - end - - super(notice) - ensure - notices_file.close if notices_file - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/shared_tasks.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/shared_tasks.rb deleted file mode 100644 index 919977e..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/shared_tasks.rb +++ /dev/null @@ -1,60 +0,0 @@ -namespace :airbrake do - desc "Notify Airbrake of a new deploy." - task :deploy do - require 'airbrake_tasks' - - if defined?(Rails.root) - initializer_file = Rails.root.join('config', 'initializers','airbrake.rb') - - if initializer_file.exist? - load initializer_file - else - Rake::Task[:environment].invoke - end - end - - AirbrakeTasks.deploy(:rails_env => ENV['TO'], - :scm_revision => ENV['REVISION'], - :scm_repository => ENV['REPO'], - :local_username => ENV['USER'], - :api_key => ENV['API_KEY'], - :dry_run => ENV['DRY_RUN']) - end - - task :log_stdout do - require 'logger' - RAILS_DEFAULT_LOGGER = Logger.new(STDOUT) - end - - namespace :heroku do - desc "Install Heroku deploy notifications addon" - task :add_deploy_notification => [:environment] do - - def get_heroku_vars - config = `heroku config --shell` - array_of_vars = config.split.map do |var| - var.partition("=").tap {|part| part.delete_at(1)} - end.flatten - @heroku_vars = Hash[*array_of_vars] - end - - get_heroku_vars - - heroku_rails_env = @heroku_vars["RAILS_ENV"] || ENV["RAILS_ENV"] || "production" - heroku_api_key = @heroku_vars["AIRBRAKE_API_KEY"] || Airbrake.configuration.api_key || ENV["AIRBRAKE_API_KEY"] - heroku_app = ENV["HEROKU_APP"] - repo = `git config --get remote.origin.url` || ENV["REPO"] - - command = %Q(heroku addons:add deployhooks:http --url="http://airbrake.io/deploys.txt?api_key=#{heroku_api_key}) - command << "&deploy[local_username]={{user}}" - command << "&deploy[scm_revision]={{head_long}}" - command << "&deploy[rails_env]=#{heroku_rails_env}" if heroku_rails_env - command << "&deploy[scm_repository]=#{repo}" if repo - command << '"' - command << " --app=#{heroku_app}" if heroku_app - - puts "\nRunning:\n#{command}\n" - puts `#{command}` - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/sidekiq.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/sidekiq.rb deleted file mode 100644 index aa94cda..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/sidekiq.rb +++ /dev/null @@ -1,8 +0,0 @@ -gem 'sidekiq', '~> 3.0' -require 'sidekiq' - -Sidekiq.configure_server do |config| - config.error_handlers << lambda do |exception, context| - Airbrake.notify_or_ignore(exception, :parameters => context) - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/sinatra.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/sinatra.rb deleted file mode 100644 index 2ee3900..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/sinatra.rb +++ /dev/null @@ -1,40 +0,0 @@ -module Airbrake - # Middleware for Sinatra applications. Any errors raised by the upstream - # application will be delivered to Airbrake and re-raised. - - # Synopsis: - - # require 'sinatra' - # require 'airbrake' - - # Airbrake.configure do |config| - # config.api_key = 'my api key' - # end - - # use Airbrake::Sinatra - - # get '/' do - # raise "Sinatra has left the building" - # end - # - # Use a standard Airbrake.configure call to configure your api key. - class Sinatra < Rack - - def initialize(app) - super - Airbrake.configuration.environment_name ||= environment_name(app) - Airbrake.configuration.framework = "Sinatra: #{::Sinatra::VERSION}" - end - - def framework_exception(env) - env['sinatra.error'] - end - - def environment_name(app) - "#{app.settings.environment}" - rescue - ENV["RACK_ENV"] || warn("[Airbrake] Couldn't determine environment name automatically. "\ - "Please set your environment name manually by setting 'config.environment_name='.") - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/tasks.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/tasks.rb deleted file mode 100644 index 60d9ab8..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/tasks.rb +++ /dev/null @@ -1,81 +0,0 @@ -require 'airbrake' -require File.join(File.dirname(__FILE__), 'shared_tasks') - -namespace :airbrake do - desc "Verify your gem installation by sending a test exception to the airbrake service" - task :test => ['airbrake:log_stdout', :environment] do - RAILS_DEFAULT_LOGGER.level = Logger::DEBUG - - Dir["app/controllers/application*.rb"].each { |file| require(File.expand_path(file)) } - - class AirbrakeTestingException < RuntimeError; end - - unless Airbrake.configuration.api_key - puts "Airbrake needs an API key configured! Check the README to see how to add it." - exit - end - - Airbrake.configuration.development_environments = [] - - catcher = Airbrake::Rails::ActionControllerCatcher - in_controller = ApplicationController.included_modules.include?(catcher) - in_base = ActionController::Base.included_modules.include?(catcher) - if !in_controller || !in_base - puts "Rails initialization did not occur" - exit - end - - puts "Configuration:" - Airbrake.configuration.to_hash.each do |key, value| - puts sprintf("%25s: %s", key.to_s, value.inspect.slice(0, 55)) - end - - unless defined?(ApplicationController) - puts "No ApplicationController found" - exit - end - - puts 'Setting up the Controller.' - class ApplicationController - # This is to bypass any filters that may prevent access to the action. - prepend_before_filter :test_airbrake - def test_airbrake - puts "Raising '#{exception_class.name}' to simulate application failure." - raise exception_class.new, 'Testing airbrake via "rake airbrake:test". If you can see this, it works.' - end - - def rescue_action(exception) - rescue_action_in_public exception - end - - # Ensure we actually have an action to go to. - def verify; end - - def consider_all_requests_local - false - end - - def local_request? - false - end - - def exception_class - exception_name = ENV['EXCEPTION'] || "AirbrakeTestingException" - exception_name.split("::").inject(Object){|klass, name| klass.const_get(name)} - rescue - Object.const_set(exception_name.gsub(/:+/, "_"), Class.new(Exception)) - end - - def logger - nil - end - end - class AirbrakeVerificationController < ApplicationController; end - - puts 'Processing request.' - request = ActionController::TestRequest.new("REQUEST_URI" => "/airbrake_verification_controller") - response = ActionController::TestResponse.new - AirbrakeVerificationController.new.process(request, response) - end -end - diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/tasks/airbrake.cap b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/tasks/airbrake.cap deleted file mode 100644 index 6f83af1..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/tasks/airbrake.cap +++ /dev/null @@ -1,29 +0,0 @@ -namespace :airbrake do - desc <<-DESC - Notify Airbrake of the deployment by running the notification on the REMOTE machine. - - Run remotely so we use remote API keys, environment, etc. - DESC - task :deploy do - # update scm state to get the repository information - invoke "#{scm}:update" - on roles(:all) do - within release_path do - # XXX: Invoking deploy:set_rails_env would set :rails_env to proper - # value, but that would make us depend on capistrano-rails - with rails_env: fetch(:rails_env, fetch(:stage)) do - # Compose the command notify_command - airbrake_env = fetch(:airbrake_env, fetch(:rails_env, fetch(:stage))) - notify_command = "airbrake:deploy" - notify_command << " TO=#{airbrake_env}" - notify_command << " REVISION=#{fetch(:current_revision)} REPO=#{fetch(:repo_url)}" - notify_command << " USER=#{local_user.strip.shellescape}" - notify_command << " API_KEY=#{ENV['API_KEY']}" if ENV['API_KEY'] - - info "Notifying Airbrake of Deploy (#{notify_command})" - execute :rake, notify_command - info "Airbrake Notification Complete." - end - end - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/user_informer.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/user_informer.rb deleted file mode 100644 index a8279dd..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/user_informer.rb +++ /dev/null @@ -1,36 +0,0 @@ -module Airbrake - class UserInformer - def initialize(app) - @app = app - end - - def replacement(with) - Airbrake.configuration.user_information.gsub(/\{\{\s*error_id\s*\}\}/, with.to_s) - end - - def call(env) - dup._call(env) - end - - def _call(env) - status, headers, body = @app.call(env) - - if env['airbrake.error_id'] && Airbrake.configuration.user_information - new_body = [] - replace = replacement(env['airbrake.error_id']) - body.each do |chunk| - new_body << chunk.gsub("", replace) - end - body.close if body.respond_to?(:close) - headers['Content-Length'] = new_body.inject(0){|sum, x| sum + x.bytesize}.to_s - body = new_body - end - - [status, headers, body] - - ensure - body.close if body && body.respond_to?(:close) && $! - end - end -end - diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/utils/params_cleaner.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/utils/params_cleaner.rb deleted file mode 100644 index 2096507..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/utils/params_cleaner.rb +++ /dev/null @@ -1,142 +0,0 @@ -module Airbrake - module Utils - class ParamsCleaner - attr_writer :blacklist_filters, :whitelist_filters, :to_clean - attr_reader :parameters, :cgi_data, :session_data - - # Public: Initialize a new Airbrake::Utils::ParamsCleaner - # - # opts - The Hash options that contain filters and params (default: {}): - # :blacklist_filters - The Array of param keys that should be filtered - # :whitelist_filters - The Array of param keys that shouldn't be filtered - # :to_clean - The Hash of unfiltered params - # :blacklist_filters take precedence over the :whitelist_filters - def initialize(opts = {}) - @blacklist_filters = (opts[:blacklist_filters] || []).flatten - @blacklist_filters.map!{|f| f.is_a?(Symbol) ? f.to_s : f } - @whitelist_filters = (opts[:whitelist_filters] || []).flatten - @whitelist_filters.map!{|f| f.is_a?(Symbol) ? f.to_s : f } - @to_clean = opts[:to_clean] - end - - # Public: Takes the params to_clean passed in an initializer - # and filters them out by filters passed. - # - # Also normalizes unserializable data. - # - # Returns self, so that :parameters, :cgi_data, :session_data - # could be extracted - def clean - clean_parameters - clean_session_data - clean_cgi_data - clean_rack_request_data - - self - end - - private - - def clean_parameters - return unless @to_clean[:parameters] - - @parameters = if any_filters? - filter(clean_unserializable_data(@to_clean[:parameters])) - else - clean_unserializable_data(@to_clean[:parameters]) - end - end - - def clean_cgi_data - return unless @to_clean[:cgi_data] - - @cgi_data = if any_filters? - filter(clean_unserializable_data(@to_clean[:cgi_data])) - else - clean_unserializable_data(@to_clean[:cgi_data]) - end - end - - def clean_session_data - return unless @to_clean[:session_data] - - @session_data = if any_filters? - filter(clean_unserializable_data(@to_clean[:session_data])) - else - clean_unserializable_data(@to_clean[:session_data]) - end - end - - def clean_rack_request_data - if @cgi_data - @cgi_data.reject! do |key, val| - Airbrake::FILTERED_RACK_VARS.include?(key) || Airbrake::SENSITIVE_ENV_VARS.any?{|re| re.match(key)} - end - end - end - - def any_filters? - @blacklist_filters.any? || @whitelist_filters.any? - end - - def filter_key?(key) - blacklist_key?(key) || !whitelist_key?(key) - end - - def blacklist_key?(key) - @blacklist_filters.any? do |filter| - key == filter || filter.is_a?(Regexp) && filter.match(key) - end - end - - def whitelist_key?(key) - return true if @whitelist_filters.empty? - @whitelist_filters.any? do |filter| - key == filter || filter.is_a?(Regexp) && filter.match(key) - end - end - - def filter(hash) - hash.each do |key, value| - if filter_key?(key) - hash[key] = "[FILTERED]" - elsif value.respond_to?(:to_hash) - filter(hash[key]) - elsif value.is_a?(Array) - hash[key] = value.inject(Array.new) do |result, item| - item = filter(item) if item.is_a?(Enumerable) - result.push(item) - end - end - end - end - - # Removes non-serializable data. Allowed data types are strings, arrays, - # and hashes. All other types are converted to strings. - def clean_unserializable_data(data, stack = []) - return "[possible infinite recursion halted]" if stack.any?{|item| item == data.object_id } - if data.is_a?(String) - data - elsif data.is_a?(Hash) - data.inject({}) do |result, (key, value)| - result.merge!(key => clean_unserializable_data(value, stack + [data.object_id])) - end - elsif data.respond_to?(:to_hash) - data.to_hash.inject({}) do |result, (key, value)| - result.merge!(key => clean_unserializable_data(value, stack + [data.object_id])) - end - elsif data.respond_to?(:collect) and !data.is_a?(IO) - data = data.collect do |value| - clean_unserializable_data(value, stack + [data.object_id]) - end - elsif data.respond_to?(:to_ary) - data = data.to_ary.collect do |value| - clean_unserializable_data(value, stack + [data.object_id]) - end - elsif data.respond_to?(:to_s) - data.nil? ? nil : data.to_s - end - end - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/utils/rack_filters.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/utils/rack_filters.rb deleted file mode 100644 index 1101b4c..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/utils/rack_filters.rb +++ /dev/null @@ -1,45 +0,0 @@ -module Airbrake - SENSITIVE_RACK_VARS = %w( - HTTP_X_CSRF_TOKEN - HTTP_COOKIE - HTTP_AUTHORIZATION - - action_dispatch.request.unsigned_session_cookie - action_dispatch.cookies - action_dispatch.unsigned_session_cookie - action_dispatch.secret_key_base - action_dispatch.signed_cookie_salt - action_dispatch.encrypted_cookie_salt - action_dispatch.encrypted_signed_cookie_salt - action_dispatch.http_auth_salt - action_dispatch.secret_token - - rack.request.cookie_hash - rack.request.cookie_string - rack.request.form_vars - - rack.session - rack.session.options - ) - - RACK_VARS_CONTAINING_INSTANCES = %w( - action_controller.instance - - action_dispatch.backtrace_cleaner - action_dispatch.routes - action_dispatch.logger - action_dispatch.key_generator - - rack-cache.storage - - rack.errors - rack.input - ) - - SENSITIVE_ENV_VARS = [ - /secret/i, - /password/i - ] - - FILTERED_RACK_VARS = SENSITIVE_RACK_VARS + SENSITIVE_ENV_VARS + RACK_VARS_CONTAINING_INSTANCES -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/version.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/version.rb deleted file mode 100644 index f289b5c..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake/version.rb +++ /dev/null @@ -1,3 +0,0 @@ -module Airbrake - VERSION = "4.3.0".freeze -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake_tasks.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake_tasks.rb deleted file mode 100644 index 6e817b7..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/airbrake_tasks.rb +++ /dev/null @@ -1,64 +0,0 @@ -require 'net/http' -require 'uri' - -# Capistrano tasks for notifying Airbrake of deploys -module AirbrakeTasks - - # Alerts Airbrake of a deploy. - # - # @param [Hash] opts Data about the deploy that is set to Airbrake - # - # @option opts [String] :api_key Api key of you Airbrake application - # @option opts [String] :rails_env Environment of the deploy (production, staging) - # @option opts [String] :scm_revision The given revision/sha that is being deployed - # @option opts [String] :scm_repository Address of your repository to help with code lookups - # @option opts [String] :local_username Who is deploying - def self.deploy(opts = {}) - api_key = opts.delete(:api_key) || Airbrake.configuration.api_key - unless api_key =~ /\S/ - puts "I don't seem to be configured with an API key. Please check your configuration." - return false - end - - unless opts[:rails_env] =~ /\S/ - puts "I don't know to which Rails environment you are deploying (use the TO=production option)." - return false - end - - dry_run = opts.delete(:dry_run) - params = {'api_key' => api_key} - opts.each {|k,v| params["deploy[#{k}]"] = v } - - host = Airbrake.configuration.host || 'api.airbrake.io' - port = Airbrake.configuration.port - - proxy = Net::HTTP.Proxy(Airbrake.configuration.proxy_host, - Airbrake.configuration.proxy_port, - Airbrake.configuration.proxy_user, - Airbrake.configuration.proxy_pass) - http = proxy.new(host, port) - - - - # Handle Security - if Airbrake.configuration.secure? - http.use_ssl = true - http.ca_file = Airbrake.configuration.ca_bundle_path - http.verify_mode = OpenSSL::SSL::VERIFY_PEER - end - - post = Net::HTTP::Post.new("/deploys.txt") - post.set_form_data(params) - - if dry_run - puts http.inspect, params.inspect - return true - else - response = http.request(post) - - puts response.body - return Net::HTTPSuccess === response - end - end -end - diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/rails/generators/airbrake/airbrake_generator.rb b/gems/2.2.2/gems/airbrake-4.3.0/lib/rails/generators/airbrake/airbrake_generator.rb deleted file mode 100644 index 6796df2..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/rails/generators/airbrake/airbrake_generator.rb +++ /dev/null @@ -1,155 +0,0 @@ -require 'rails/generators' - -class AirbrakeGenerator < Rails::Generators::Base - desc "Creates the Airbrake initializer file at config/initializers/airbrake.rb" - - class_option :api_key, :aliases => "-k", :type => :string, - :desc => "Your Airbrake API key" - - class_option :heroku, :type => :boolean, - :desc => "Use the Heroku addon to provide your Airbrake API key" - - class_option :app, :aliases => "-a", :type => :string, - :desc => "Your Heroku app name (only required if deploying to >1 Heroku app)" - - class_option :secure, :type => :boolean, - :desc => "Use SSL connection" - - class_option :test_mode, :aliases => "-t", :type => :boolean, - :desc => "Use Airbrake in test mode" - - def self.source_root - @_airbrake_source_root ||= File.expand_path("../../../../../generators/airbrake/templates", __FILE__) - end - - def install - ensure_api_key_was_configured - ensure_plugin_is_not_present - append_capistrano_hook if capistrano_present? - generate_initializer unless api_key_configured? - determine_api_key if heroku? - test_airbrake - end - - private - - def ensure_api_key_was_configured - if !options[:api_key] && !options[:heroku] && !api_key_configured? - puts "Must pass --api-key or --heroku or create config/initializers/airbrake.rb" - exit - end - end - - def ensure_plugin_is_not_present - if plugin_is_present? - puts "You must first remove the airbrake plugin. Please run: script/plugin remove airbrake" - exit - end - end - - def capistrano_present? - !Gem.loaded_specs['capistrano'].nil? && - File.exists?('config/deploy.rb') && - File.exists?('Capfile') - end - - def append_capistrano_hook - if capistrano_version < Gem::Version.new('3') - append_file('config/deploy.rb', capistrano2_hook) - else - append_file('config/deploy.rb', capistrano3_hook) - end - end - - def capistrano_version - Gem.loaded_specs['capistrano'].version - end - - def capistrano2_hook - <<-HOOK - -require './config/boot' -require 'airbrake/capistrano' - HOOK - end - - def capistrano3_hook - <<-HOOK - -require 'airbrake/capistrano3' -after "deploy:finished", "airbrake:deploy" - HOOK - end - - def api_key_expression - if options[:api_key] - "'#{options[:api_key]}'" - elsif options[:heroku] - "ENV['AIRBRAKE_API_KEY']" - end - end - - def generate_initializer - template 'initializer.rb', 'config/initializers/airbrake.rb' - end - - def determine_api_key - puts "Attempting to determine your API Key from Heroku..." - ENV['AIRBRAKE_API_KEY'] = heroku_api_key - if ENV['AIRBRAKE_API_KEY'] =~ /\S/ - puts "... Done." - puts "Heroku's Airbrake API Key is '#{ENV['AIRBRAKE_API_KEY']}'" - else - puts "... Failed." - puts "WARNING: We were unable to detect the Airbrake API Key from your Heroku environment." - puts "Your Heroku application environment may not be configured correctly." - exit 1 - end - end - - def heroku_var(var,app_name = nil) - app = app_name ? "-a #{app_name}" : '' - `heroku config:get #{var} #{app}` - end - - def heroku_api_key - heroku_var("AIRBRAKE_API_KEY",options[:app]).split.find {|x| x if x =~ /\S/} - end - - def secure? - options[:secure] - end - - def test_mode? - options[:test_mode] - end - - def heroku? - options[:heroku] || - system("grep AIRBRAKE_API_KEY config/initializers/airbrake.rb") || - system("grep AIRBRAKE_API_KEY config/environment.rb") - end - - def api_key_configured? - File.exists?('config/initializers/airbrake.rb') - end - - def test_airbrake - puts run("rake airbrake:test") - end - - def plugin_is_present? - File.exists?('vendor/plugins/airbrake') - end - - def configuration_output - output = <<-eos -Airbrake.configure do |config| - config.api_key = #{api_key_expression} - eos - - output << " config.secure = true\n" if secure? - output << " config.test_mode = true\n" if test_mode? - output << "end" - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/lib/templates/rescue.erb b/gems/2.2.2/gems/airbrake-4.3.0/lib/templates/rescue.erb deleted file mode 100644 index 4bbab4d..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/lib/templates/rescue.erb +++ /dev/null @@ -1,91 +0,0 @@ - - - diff --git a/gems/2.2.2/gems/airbrake-4.3.0/rails/init.rb b/gems/2.2.2/gems/airbrake-4.3.0/rails/init.rb deleted file mode 100644 index 89b7399..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/rails/init.rb +++ /dev/null @@ -1 +0,0 @@ -require 'airbrake/rails' diff --git a/gems/2.2.2/gems/airbrake-4.3.0/resources/README.md b/gems/2.2.2/gems/airbrake-4.3.0/resources/README.md deleted file mode 100644 index 2f13d31..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/resources/README.md +++ /dev/null @@ -1,34 +0,0 @@ -Airbrake Resources -================== - -Airbrake has an SSL mode available to paying plans. SSL Certificate Authority (CA) certificates are not kept current by default on many environments. When CA certs are stale, Airbrake cannot verify Airbrake's production SSL cert and error reports fail. To avoid this, we now package local CA certs. The production of these certs is detailed here. - -Building ca-bundle.crt ----------------------- - -From https://gist.github.com/996292. - -If you want to use curl or net-http/open-uri to access https resources, you will often (always?) get an error, because they don't have the large number of root certificates installed that web browsers have. - -You can manually install the root certs, but first you have to get them from somewhere. [This article](http://notetoself.vrensk.com/2008/09/verified-https-in-ruby/) gives a nice description of how to do that. The [source of the cert files](http://curl.haxx.se/ca/cacert.pem) it points to is hosted by the curl project, who kindly provide it in the .pem format. - -**problem:** Sadly, ironically, and comically, it's not possible to access that file via https! Luckily, the awesome curl project does provide us with the script that they use to produce the file, so we can do it securely ourselves. Here's how. - -1. `git clone https://github.com/bagder/curl.git` -2. `cd curl/lib` -3. edit `mk-ca-bundle.pl` and change: - - ```perl - my $url = 'http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1'; - ``` - - to - - ```perl - my $url = 'https://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1'; - ``` - - (change `http` to `https`) -4. `./mk-ca-bundle.pl` - -Ta da! diff --git a/gems/2.2.2/gems/airbrake-4.3.0/resources/airbrake_3_0.json b/gems/2.2.2/gems/airbrake-4.3.0/resources/airbrake_3_0.json deleted file mode 100644 index 7f34be7..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/resources/airbrake_3_0.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "type" : "object", - "additionalProperties" : false, - "properties" : { - "notifier" : { - "type" : "hash", - "required" : true, - "additionalProperties" : false, - "properties" : { - "name" : {"type" : "string", "required" : true}, - "version" : {"type" : "string", "required" : true}, - "url" : {"type" : "string", "required" : true} - } - }, - "errors" : { - "type" : "array", - "required" : true, - "items" : { - "type" : [{ - "type" : "hash", - "additionalProperties" : false, - "properties" : { - "backtrace" : {"type" : "array", "required" : true}, - "type" : {"type" : "string", "required" : true}, - "message" : {"type" : "string", "required" : true} - } - }] - } - }, - "context" : { - "type" : "hash", - "additionalProperties" : false, - "properties" : { - "os" : {"type" : "string"}, - "language" : {"type" : "string"}, - "environment" : {"type" : "string"}, - "version" : {"type" : "string"}, - "url" : {"type" : "string"}, - "rootDirectory" : {"type" : "string"}, - "userId" : {"type" : "string"}, - "userName" : {"type" : "string"}, - "userEmail" : {"type" : "string"}, - "component" : {"type" : "string"}, - "action" : {"type" : "string"} - } - }, - "environment" : {"type" : "hash"}, - "session" : {"type" : "hash"}, - "params" : {"type" : "hash"} - } -} - diff --git a/gems/2.2.2/gems/airbrake-4.3.0/resources/ca-bundle.crt b/gems/2.2.2/gems/airbrake-4.3.0/resources/ca-bundle.crt deleted file mode 100644 index e87dce4..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/resources/ca-bundle.crt +++ /dev/null @@ -1,3376 +0,0 @@ -## -## ca-bundle.crt -- Bundle of CA Root Certificates -## -## Certificate data from Mozilla as of: Fri Sep 2 23:34:57 2011 -## -## 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: -## https://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. -## - -# ***** BEGIN LICENSE BLOCK ***** -# Version: MPL 1.1/GPL 2.0/LGPL 2.1 -# -# The contents of this file are subject to the Mozilla Public License Version -# 1.1 (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# The Original Code is the Netscape security libraries. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1994-2000 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 2 or later (the "GPL"), or -# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -# in which case the provisions of the GPL or the LGPL are applicable instead -# of those above. If you wish to allow use of your version of this file only -# under the terms of either the GPL or the LGPL, and not to allow others to -# use your version of this file under the terms of the MPL, indicate your -# decision by deleting the provisions above and replace them with the notice -# and other provisions required by the GPL or the LGPL. If you do not delete -# the provisions above, a recipient may use your version of this file under -# the terms of any one of the MPL, the GPL or the LGPL. -# -# ***** END LICENSE BLOCK ***** -# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.79 $ $Date: 2011/09/02 19:40:56 $ - -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 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----- - -Verisign Class 4 Public Primary Certification Authority - G2 -============================================================ ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEDKIjprS9esTR/h/xCA3JfgwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT -MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgNCBQdWJsaWMgUHJpbWFy -eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln -biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz -dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT -MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgNCBQdWJsaWMgUHJpbWFy -eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln -biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz -dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC68OTP+cSuhVS5B1f5j8V/aBH4 -xBewRNzjMHPVKmIquNDMHO0oW369atyzkSTKQWI8/AIBvxwWMZQFl3Zuoq29YRdsTjCG8FE3KlDH -qGKB3FtKqsGgtG7rL+VXxbErQHDbWk2hjh+9Ax/YA9SPTJlxvOKCzFjomDqG04Y48wApHwIDAQAB -MA0GCSqGSIb3DQEBBQUAA4GBAIWMEsGnuVAVess+rLhDityq3RS6iYF+ATwjcSGIL4LcY/oCRaxF -WdcqWERbt5+BO5JoPeI3JPV7bI92NZYJqFmduc4jq3TWg/0ycyfYaT5DdPauxYma51N86Xv2S/PB -ZYPejYqcPIiNOVn8qj8ijaHBZlCBckztImRPT8qAkbYp ------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 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----- - -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----- - -TC TrustCenter, Germany, Class 2 CA -=================================== ------BEGIN CERTIFICATE----- -MIIDXDCCAsWgAwIBAgICA+owDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQI -EwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig -U2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBD -bGFzcyAyIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAeFw05 -ODAzMDkxMTU5NTlaFw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt -YnVyZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UEChMxVEMgVHJ1c3RDZW50ZXIgZm9yIFNlY3Vy -aXR5IGluIERhdGEgTmV0d29ya3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3Mg -MiBDQTEpMCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVAdHJ1c3RjZW50ZXIuZGUwgZ8wDQYJKoZI -hvcNAQEBBQADgY0AMIGJAoGBANo46O0yAClxgwENv4wB3NrGrTmkqYov1YtcaF9QxmL1Zr3KkSLs -qh1R1z2zUbKDTl3LSbDwTFXlay3HhQswHJJOgtTKAu33b77c4OMUuAVT8pr0VotanoWT0bSCVq5N -u6hLVxa8/vhYnvgpjbB7zXjJT6yLZwzxnPv8V5tXXE8NAgMBAAGjazBpMA8GA1UdEwEB/wQFMAMB -Af8wDgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3LnRydXN0Y2VudGVy -LmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0GCSqGSIb3DQEBBAUAA4GBAIRS+yjf -/x91AbwBvgRWl2p0QiQxg/lGsQaKic+WLDO/jLVfenKhhQbOhvgFjuj5Jcrag4wGrOs2bYWRNAQ2 -9ELw+HkuCkhcq8xRT3h2oNmsGb0q0WkEKJHKNhAngFdb0lz1wlurZIFjdFH0l7/NEij3TWZ/p/Ac -ASZ4smZHcFFk ------END CERTIFICATE----- - -TC TrustCenter, Germany, Class 3 CA -=================================== ------BEGIN CERTIFICATE----- -MIIDXDCCAsWgAwIBAgICA+swDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQI -EwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig -U2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBD -bGFzcyAzIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAeFw05 -ODAzMDkxMTU5NTlaFw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt -YnVyZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UEChMxVEMgVHJ1c3RDZW50ZXIgZm9yIFNlY3Vy -aXR5IGluIERhdGEgTmV0d29ya3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3Mg -MyBDQTEpMCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVAdHJ1c3RjZW50ZXIuZGUwgZ8wDQYJKoZI -hvcNAQEBBQADgY0AMIGJAoGBALa0wTUFLg2N7KBAahwOJ6ZQkmtQGwfeLud2zODa/ISoXoxjaitN -2U4CdhHBC/KNecoAtvGwDtf7pBc9r6tpepYnv68zoZoqWarEtTcI8hKlMbZD9TKWcSgoq40oht+7 -7uMMfTDWw1Krj10nnGvAo+cFa1dJRLNu6mTP0o56UHd3AgMBAAGjazBpMA8GA1UdEwEB/wQFMAMB -Af8wDgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3LnRydXN0Y2VudGVy -LmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0GCSqGSIb3DQEBBAUAA4GBABY9xs3B -u4VxhUafPiCPUSiZ7C1FIWMjWwS7TJC4iJIETb19AaM/9uzO8d7+feXhPrvGq14L3T2WxMup1Pkm -5gZOngylerpuw3yCGdHHsbHD2w2Om0B8NwvxXej9H5CIpQ5ON2QhqE6NtJ/x3kit1VYYUimLRzQS -CdS7kjXvD9s0 ------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----- -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 ------END CERTIFICATE----- - -QuoVadis Root CA 3 -================== ------BEGIN CERTIFICATE----- -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 ------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 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 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----- - -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 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----- -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 -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 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----- - -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 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----- -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 -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----- -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 ------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----- -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 ------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----- diff --git a/gems/2.2.2/gems/airbrake-4.3.0/resources/notice.xml b/gems/2.2.2/gems/airbrake-4.3.0/resources/notice.xml deleted file mode 100644 index d3e99f9..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/resources/notice.xml +++ /dev/null @@ -1 +0,0 @@ -myapikeyAirbrake Notifier4.2.1https://github.com/airbrake/airbrakeRuntimeErrorRuntimeError: some messagehttp://example.com:123/test/index?param=valuetestindexvaluetestindex["1", "1"]falsetruefalseGETexample.com123param=value/test/indexhttpoff0["password"]truetestindexparam=valuevaluevaluevaluetestindex["text/html"]/Users/shifi/work/rackspace/code/airbrake/tmp/rails_rootproductionus-irving07382.americas.nsn-net.netRails: 3.0.20 diff --git a/gems/2.2.2/gems/airbrake-4.3.0/script/integration_test.rb b/gems/2.2.2/gems/airbrake-4.3.0/script/integration_test.rb deleted file mode 100644 index 919bcbf..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/script/integration_test.rb +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env ruby - -require 'logger' -require 'fileutils' - -RAILS_ENV = "production" -RAILS_ROOT = FileUtils.pwd -RAILS_DEFAULT_LOGGER = Logger.new(STDOUT) - -$: << File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib')) -require 'airbrake' - -fail "Please supply an API Key as the first argument" if ARGV.empty? - -host = ARGV[1] || "api.airbrake.io" -port = ARGV[2] || 80 -secure = (ARGV[3] == "secure") -exception = RuntimeError.new "Testing airbrake notifier with secure = #{secure}. If you can see this, it works." - -Airbrake.configure do |config| - config.secure = secure - config.host = host - config.port = port - config.api_key = ARGV.first -end - -puts "Configuration:" -Airbrake.configuration.to_hash.each do |key, value| - puts sprintf("%25s: %s", key.to_s, value.inspect.slice(0, 55)) -end - -puts "Sending #{secure ? "" : "in"}secure notification to project with key #{ARGV.first}" -if Airbrake.notify(exception) then puts "\nIntegration test passed with success!" -else puts "\nIntegration test was unsuccessful." -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/airbrake_tasks_test.rb b/gems/2.2.2/gems/airbrake-4.3.0/test/airbrake_tasks_test.rb deleted file mode 100644 index 57f7290..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/airbrake_tasks_test.rb +++ /dev/null @@ -1,167 +0,0 @@ -require File.expand_path '../helper', __FILE__ -require 'rubygems' - -require File.dirname(__FILE__) + '/../lib/airbrake_tasks' - -class AirbrakeTasksTest < Test::Unit::TestCase - def successful_response(body = "") - response = Net::HTTPSuccess.new('1.2', '200', 'OK') - response.stubs(:body).returns(body) - return response - end - - def unsuccessful_response(body = "") - response = Net::HTTPClientError.new('1.2', '200', 'OK') - response.stubs(:body).returns(body) - return response - end - - context "being quiet" do - setup { AirbrakeTasks.stubs(:puts) } - - context "in a configured project" do - setup { Airbrake.configure { |config| config.api_key = "1234123412341234" } } - - context "on deploy({})" do - setup { @output = AirbrakeTasks.deploy({}) } - - before_should "complain about missing rails env" do - AirbrakeTasks.expects(:puts).with(regexp_matches(/rails environment/i)) - end - - should "return false" do - assert !@output - end - end - - context "given an optional HTTP proxy and valid options" do - setup do - @response = stub("response", :body => "stub body") - @http_proxy = stub("proxy", :request => @response) - @http_proxy_class = stub("proxy_class", :new => @http_proxy) - @post = stub("post", :set_form_data => nil) - - Net::HTTP.expects(:Proxy). - with(Airbrake.configuration.proxy_host, - Airbrake.configuration.proxy_port, - Airbrake.configuration.proxy_user, - Airbrake.configuration.proxy_pass). - returns(@http_proxy_class) - Net::HTTP::Post.expects(:new).with("/deploys.txt").returns(@post) - - @options = { :rails_env => "staging", :dry_run => false } - end - - context "performing a dry run" do - setup { @output = AirbrakeTasks.deploy(@options.merge(:dry_run => true)) } - - should "return true without performing any actual request" do - assert_equal true, @output - assert_received(@http_proxy, :request) do |expects| - expects.never - end - end - end - - context "on deploy(options)" do - setup do - @output = AirbrakeTasks.deploy(@options) - end - - before_should "post to http://api.airbrake.io:80/deploys.txt" do - @http_proxy_class.expects(:new).with("api.airbrake.io", 80).returns(@http_proxy) - @post.expects(:set_form_data).with(kind_of(Hash)) - @http_proxy.expects(:request).with(any_parameters).returns(successful_response) - end - - before_should "use the project api key" do - @post.expects(:set_form_data). - with(has_entries('api_key' => "1234123412341234")) - end - - before_should "use send the rails_env param" do - @post.expects(:set_form_data). - with(has_entries("deploy[rails_env]" => "staging")) - end - - [:local_username, :scm_repository, :scm_revision].each do |key| - before_should "use send the #{key} param if it's passed in." do - @options[key] = "value" - @post.expects(:set_form_data). - with(has_entries("deploy[#{key}]" => "value")) - end - end - - before_should "use the :api_key param if it's passed in." do - @options[:api_key] = "value" - @post.expects(:set_form_data). - with(has_entries("api_key" => "value")) - end - - before_should "puts the response body on success" do - AirbrakeTasks.expects(:puts).with("body") - @http_proxy.expects(:request).with(any_parameters).returns(successful_response('body')) - end - - before_should "puts the response body on failure" do - AirbrakeTasks.expects(:puts).with("body") - @http_proxy.expects(:request).with(any_parameters).returns(unsuccessful_response('body')) - end - - should "return false on failure", :before => lambda { - @http_proxy.expects(:request).with(any_parameters).returns(unsuccessful_response('body')) - } do - assert !@output - end - - should "return true on success", :before => lambda { - @http_proxy.expects(:request).with(any_parameters).returns(successful_response('body')) - } do - assert @output - end - end - end - end - - context "in a configured project with custom host" do - setup do - Airbrake.configure do |config| - config.api_key = "1234123412341234" - config.host = "custom.host" - end - end - - context "on deploy(:rails_env => 'staging')" do - setup { @output = AirbrakeTasks.deploy(:rails_env => "staging") } - - before_should "post to the custom host" do - @post = stub("post", :set_form_data => nil) - @http_proxy = stub("proxy", :request => stub("response", :body => "stub body")) - - @http_proxy_class = stub("proxy_class", :new => @http_proxy) - @http_proxy_class.expects(:new).with("custom.host", 80).returns(@http_proxy) - Net::HTTP.expects(:Proxy).with(any_parameters).returns(@http_proxy_class) - Net::HTTP::Post.expects(:new).with("/deploys.txt").returns(@post) - @post.expects(:set_form_data).with(kind_of(Hash)) - @http_proxy.expects(:request).with(any_parameters).returns(successful_response) - end - end - end - - context "when not configured" do - setup { Airbrake.configure { |config| config.api_key = "" } } - - context "on deploy(:rails_env => 'staging')" do - setup { @output = AirbrakeTasks.deploy(:rails_env => "staging") } - - before_should "complain about missing api key" do - AirbrakeTasks.expects(:puts).with(regexp_matches(/api key/i)) - end - - should "return false" do - assert !@output - end - end - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/backtrace_test.rb b/gems/2.2.2/gems/airbrake-4.3.0/test/backtrace_test.rb deleted file mode 100644 index 7b7c0dd..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/backtrace_test.rb +++ /dev/null @@ -1,215 +0,0 @@ -require File.expand_path '../helper', __FILE__ - -class BacktraceTest < Test::Unit::TestCase - - should "parse a backtrace into lines" do - array = [ - "app/models/user.rb:13:in `magic'", - "app/controllers/users_controller.rb:8:in `index'" - ] - - backtrace = Airbrake::Backtrace.parse(array) - - line = backtrace.lines.first - assert_equal '13', line.number - assert_equal 'app/models/user.rb', line.file - assert_equal 'magic', line.method_name - - line = backtrace.lines.last - assert_equal '8', line.number - assert_equal 'app/controllers/users_controller.rb', line.file - assert_equal 'index', line.method_name - end - - should "parse a string backtrace" do - string = [ - "app/models/user.rb:13:in `magic'", - "app/controllers/users_controller.rb:8:in `index'" - ].join("\n") - - backtrace = Airbrake::Backtrace.parse(string) - - line = backtrace.lines.first - assert_equal '13', line.number - assert_equal 'app/models/user.rb', line.file - assert_equal 'magic', line.method_name - - line = backtrace.lines.last - assert_equal '8', line.number - assert_equal 'app/controllers/users_controller.rb', line.file - assert_equal 'index', line.method_name - end - - should "parse a windows backtrace into lines" do - array = [ - "C:/Program Files/Server/app/models/user.rb:13:in `magic'", - "C:/Program Files/Server/app/controllers/users_controller.rb:8:in `index'" - ] - - backtrace = Airbrake::Backtrace.parse(array) - - line = backtrace.lines.first - assert_equal '13', line.number - assert_equal 'C:/Program Files/Server/app/models/user.rb', line.file - assert_equal 'magic', line.method_name - - line = backtrace.lines.last - assert_equal '8', line.number - assert_equal 'C:/Program Files/Server/app/controllers/users_controller.rb', line.file - assert_equal 'index', line.method_name - end - - should "be equal with equal lines" do - one = build_backtrace_array - two = one.dup - - assert_equal Airbrake::Backtrace.parse(one), Airbrake::Backtrace.parse(two) - end - - should "parse massive one-line exceptions into multiple lines" do - original_backtrace = Airbrake::Backtrace. - parse(["one:1:in `one'\n two:2:in `two'\n three:3:in `three`"]) - expected_backtrace = Airbrake::Backtrace. - parse(["one:1:in `one'", "two:2:in `two'", "three:3:in `three`"]) - - assert_equal expected_backtrace, original_backtrace - end - - context "with a gem root" do - setup do - @gem_root = '/root/to/gem' - Gem.path << @gem_root - end - - should "filter out the gem root" do - backtrace_with_gem_root = Airbrake::Backtrace.parse( - ["#{@gem_root}/some/gem.rb:9:in `test'", - "#{@gem_root}/path/to/awesome_gem.rb:13:in `awesome'", - "/test/something.rb:55:in `hack'"], - :filters => default_filters) - backtrace_without_gem_root = Airbrake::Backtrace.parse( - ["[GEM_ROOT]/some/gem.rb:9:in `test'", - "[GEM_ROOT]/path/to/awesome_gem.rb:13:in `awesome'", - "/test/something.rb:55:in `hack'"]) - - assert_equal backtrace_without_gem_root, backtrace_with_gem_root - end - - should "ignore empty gem paths" do - Gem.path << "" - backtrace_with_gem_root = Airbrake::Backtrace.parse( - ["#{@gem_root}/some/gem.rb:9:in `test'", - "/test/something.rb:55:in `hack'"], - :filters => default_filters) - backtrace_without_gem_root = Airbrake::Backtrace.parse( - ["[GEM_ROOT]/some/gem.rb:9:in `test'", - "/test/something.rb:55:in `hack'"]) - - assert_equal backtrace_without_gem_root, backtrace_with_gem_root - end - end - - context "with a project root" do - setup do - @project_root = '/some/path' - Airbrake.configure {|config| config.project_root = @project_root } - end - - teardown do - reset_config - end - - should "filter out the project root" do - backtrace_with_root = Airbrake::Backtrace.parse( - ["#{@project_root}/app/models/user.rb:7:in `latest'", - "#{@project_root}/app/controllers/users_controller.rb:13:in `index'", - "/lib/something.rb:41:in `open'"], - :filters => default_filters) - backtrace_without_root = Airbrake::Backtrace.parse( - ["[PROJECT_ROOT]/app/models/user.rb:7:in `latest'", - "[PROJECT_ROOT]/app/controllers/users_controller.rb:13:in `index'", - "/lib/something.rb:41:in `open'"]) - - assert_equal backtrace_without_root, backtrace_with_root - end - end - - context "with a project root equals to a part of file name" do - setup do - # Heroku-like - @project_root = '/app' - Airbrake.configure {|config| config.project_root = @project_root } - end - - teardown do - reset_config - end - - should "filter out the project root" do - backtrace_with_root = Airbrake::Backtrace.parse( - ["#{@project_root}/app/models/user.rb:7:in `latest'", - "#{@project_root}/app/controllers/users_controller.rb:13:in `index'", - "/lib/something.rb:41:in `open'"], - :filters => default_filters) - backtrace_without_root = Airbrake::Backtrace.parse( - ["[PROJECT_ROOT]/app/models/user.rb:7:in `latest'", - "[PROJECT_ROOT]/app/controllers/users_controller.rb:13:in `index'", - "/lib/something.rb:41:in `open'"]) - - assert_equal backtrace_without_root, backtrace_with_root - end - end - - context "with a blank project root" do - setup do - Airbrake.configure {|config| config.project_root = '' } - end - - teardown do - reset_config - end - - should "not filter line numbers with respect to any project root" do - backtrace = ["/app/models/user.rb:7:in `latest'", - "/app/controllers/users_controller.rb:13:in `index'", - "/lib/something.rb:41:in `open'"] - - backtrace_with_root = - Airbrake::Backtrace.parse(backtrace, :filters => default_filters) - - backtrace_without_root = - Airbrake::Backtrace.parse(backtrace) - - assert_equal backtrace_without_root, backtrace_with_root - end - end - - should "remove notifier trace" do - inside_notifier = ['lib/airbrake.rb:13:in `voodoo`'] - outside_notifier = ['users_controller:8:in `index`'] - - without_inside = Airbrake::Backtrace.parse(outside_notifier) - with_inside = Airbrake::Backtrace.parse(inside_notifier + outside_notifier, - :filters => default_filters) - - assert_equal without_inside, with_inside - end - - should "run filters on the backtrace" do - filters = [lambda { |line| line.sub('foo', 'bar') }] - input = Airbrake::Backtrace.parse(["foo:13:in `one'", "baz:14:in `two'"], - :filters => filters) - expected = Airbrake::Backtrace.parse(["bar:13:in `one'", "baz:14:in `two'"]) - assert_equal expected, input - end - - def build_backtrace_array - ["app/models/user.rb:13:in `magic'", - "app/controllers/users_controller.rb:8:in `index'"] - end - - def default_filters - Airbrake::Configuration::DEFAULT_BACKTRACE_FILTERS - end - -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/capistrano_test.rb b/gems/2.2.2/gems/airbrake-4.3.0/test/capistrano_test.rb deleted file mode 100644 index 76c2dc0..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/capistrano_test.rb +++ /dev/null @@ -1,43 +0,0 @@ -require File.expand_path '../helper', __FILE__ - -silence_warnings { require 'capistrano/configuration' } -require 'airbrake/capistrano' - -class CapistranoTest < Test::Unit::TestCase - def setup - super - reset_config - - # Save value to avoid polluting ENV for future tests - @old_user = ENV['USER'] - ENV['USER'] = %q[D'Angelo "D" Barksdale] - - @configuration = Capistrano::Configuration.new - Airbrake::Capistrano.load_into(@configuration) - @configuration.dry_run = true - end - - should "define airbrake:deploy task" do - assert_not_nil @configuration.find_task('airbrake:deploy') - end - - should "log when calling airbrake:deploy task" do - @configuration.set(:current_revision, '084505b1c0e0bcf1526e673bb6ac99fbcb18aecc') - @configuration.set(:repository, 'repository') - @configuration.set(:release_path, '/home/deploy/rails_app/hoptoad') - io = StringIO.new - logger = Capistrano::Logger.new(:output => io) - logger.level = Capistrano::Logger::MAX_LEVEL - - @configuration.logger = logger - @configuration.find_and_execute_task('airbrake:deploy') - - assert io.string.include?('** Notifying Airbrake of Deploy') - assert io.string.include?('TO=production') - assert io.string.include?('** Airbrake Notification Complete') - assert io.string.include?(%q[D\'Angelo\ \"D\"\ Barksdale]) - end - - # Return ENV['USER'] to its original value - def teardown; ENV['USER'] = @old_user end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/configuration_test.rb b/gems/2.2.2/gems/airbrake-4.3.0/test/configuration_test.rb deleted file mode 100644 index 693f022..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/configuration_test.rb +++ /dev/null @@ -1,303 +0,0 @@ -require File.expand_path '../helper', __FILE__ - -class ConfigurationTest < Test::Unit::TestCase - - include DefinesConstants - - should "provide default values" do - assert_config_default :proxy_host, nil - assert_config_default :proxy_port, nil - assert_config_default :proxy_user, nil - assert_config_default :proxy_pass, nil - assert_config_default :project_root, nil - assert_config_default :environment_name, nil - assert_config_default :logger, nil - assert_config_default :notifier_version, Airbrake::VERSION - assert_config_default :notifier_name, 'Airbrake Notifier' - assert_config_default :notifier_url, 'https://github.com/airbrake/airbrake' - assert_config_default :secure, false - assert_config_default :host, 'api.airbrake.io' - assert_config_default :http_open_timeout, 2 - assert_config_default :http_read_timeout, 5 - assert_config_default :ignore_by_filters, [] - assert_config_default :ignore_user_agent, [] - assert_config_default :params_filters, - Airbrake::Configuration::DEFAULT_PARAMS_FILTERS - assert_config_default :params_whitelist_filters, - Airbrake::Configuration::DEFAULT_PARAMS_WHITELIST_FILTERS - assert_config_default :backtrace_filters, - Airbrake::Configuration::DEFAULT_BACKTRACE_FILTERS - assert_config_default :rake_environment_filters, [] - assert_config_default :ignore, - Airbrake::Configuration::IGNORE_DEFAULT - assert_config_default :development_lookup, true - assert_config_default :framework, 'Standalone' - assert_config_default :async, nil - assert_config_default :project_id, nil - end - - should "set GirlFriday/SuckerPunch-callable for async=true" do - config = Airbrake::Configuration.new - config.async = true - assert config.async.respond_to?(:call) - end - - should "raise error for rake integration if rake handler isn't loaded" do - config = Airbrake::Configuration.new - assert_raises(LoadError) { config.rescue_rake_exceptions = true } - end - - should "set provided-callable for async {}" do - config = Airbrake::Configuration.new - config.async {|notice| :ok} - assert config.async.respond_to?(:call) - assert_equal :ok, config.async.call - end - - should "provide default values for secure connections" do - config = Airbrake::Configuration.new - config.secure = true - assert_equal 443, config.port - assert_equal 'https', config.protocol - end - - should "provide default values for insecure connections" do - config = Airbrake::Configuration.new - config.secure = false - assert_equal 80, config.port - assert_equal 'http', config.protocol - end - - should "not cache inferred ports" do - config = Airbrake::Configuration.new - config.secure = false - config.port - config.secure = true - assert_equal 443, config.port - end - - should "allow values to be overwritten" do - assert_config_overridable :proxy_host - assert_config_overridable :proxy_port - assert_config_overridable :proxy_user - assert_config_overridable :proxy_pass - assert_config_overridable :secure - assert_config_overridable :host - assert_config_overridable :port - assert_config_overridable :http_open_timeout - assert_config_overridable :http_read_timeout - assert_config_overridable :project_root - assert_config_overridable :notifier_version - assert_config_overridable :notifier_name - assert_config_overridable :notifier_url - assert_config_overridable :environment_name - assert_config_overridable :development_lookup - assert_config_overridable :logger - assert_config_overridable :async - assert_config_overridable :project_id - assert_config_overridable :params_filters - end - - should "have an api key" do - assert_config_overridable :api_key - end - - should "act like a hash" do - config = Airbrake::Configuration.new - hash = config.to_hash - [:api_key, :backtrace_filters, :development_environments, - :environment_name, :host, :http_open_timeout, - :http_read_timeout, :ignore, :ignore_by_filters, :ignore_user_agent, - :notifier_name, :notifier_url, :notifier_version, :params_filters, - :project_root, :port, :protocol, :proxy_host, :proxy_pass, :proxy_port, - :proxy_user, :secure, :development_lookup, :async].each do |option| - assert_equal config[option], hash[option], "Wrong value for #{option}" - end - end - - should "be mergable" do - config = Airbrake::Configuration.new - hash = config.to_hash - assert_equal hash.merge(:key => 'value'), config.merge(:key => 'value') - end - - should "allow param filters to be appended" do - assert_appends_value :params_filters - end - - should "allow rake environment filters to be appended" do - assert_appends_value :rake_environment_filters - end - - should "allow ignored user agents to be appended" do - assert_appends_value :ignore_user_agent - end - - should "allow backtrace filters to be appended" do - assert_appends_value(:backtrace_filters) do |config| - new_filter = lambda {} - config.filter_backtrace(&new_filter) - new_filter - end - end - - should "allow ignore by filters to be appended" do - assert_appends_value(:ignore_by_filters) do |config| - new_filter = lambda {} - config.ignore_by_filter(&new_filter) - new_filter - end - end - - should "allow ignored exceptions to be appended" do - config = Airbrake::Configuration.new - original_filters = config.ignore.dup - new_filter = 'hello' - config.ignore << new_filter - assert_same_elements original_filters + [new_filter], config.ignore - end - - should "allow ignored exceptions to be replaced" do - assert_replaces(:ignore, :ignore_only=) - end - - should "allow ignored rake exceptions to be appended" do - config = Airbrake::Configuration.new - original_filters = config.ignore_rake.dup - new_filter = 'hello' - config.ignore_rake << new_filter - assert_same_elements original_filters + [new_filter], config.ignore_rake - end - - should "allow ignored rake exceptions to be replaced" do - assert_replaces(:ignore_rake, :ignore_rake_only=) - end - - should "allow ignored user agents to be replaced" do - assert_replaces(:ignore_user_agent, :ignore_user_agent_only=) - end - - should "use development and test as development environments by default" do - config = Airbrake::Configuration.new - assert_same_elements %w(development test cucumber), config.development_environments - end - - context "configured?" do - setup do - @config = Airbrake::Configuration.new - end - - should "be true if given an api_key" do - @config.api_key = "1234" - assert @config.configured? - end - - should "be false with a nil api_key" do - @config.api_key = nil - assert !@config.configured? - end - - should "be false with a blank api_key" do - @config.api_key = '' - assert !@config.configured? - end - end - - should "be public in a public environment" do - config = Airbrake::Configuration.new - config.development_environments = %w(development) - config.environment_name = 'production' - assert config.public? - end - - should "not be public in a development environment" do - config = Airbrake::Configuration.new - config.development_environments = %w(staging) - config.environment_name = 'staging' - assert !config.public? - end - - should "be public without an environment name" do - config = Airbrake::Configuration.new - assert config.public? - end - - should "use the assigned logger if set" do - config = Airbrake::Configuration.new - config.logger = "CUSTOM LOGGER" - assert_equal "CUSTOM LOGGER", config.logger - end - - should 'give a new instance if non defined' do - Airbrake.configuration = nil - assert_kind_of Airbrake::Configuration, Airbrake.configuration - end - - should 'reject invalid user attributes' do - silence_warnings - config = Airbrake::Configuration.new - config.user_attributes = %w(id foo) - assert_equal %w(id), config.user_attributes - end - - should "warn about invalid attributes" do - stub_warnings - config = Airbrake::Configuration.new - config.user_attributes = %w(id foo bar baz) - %w(foo bar baz).each do |attr| - assert_match(/Unsupported user attribute: '#{attr}'/, Kernel.warnings) - end - end - - def assert_config_default(option, default_value, config = nil) - config ||= Airbrake::Configuration.new - assert_equal default_value, config.send(option) - end - - def assert_config_overridable(option, value = 'a value') - config = Airbrake::Configuration.new - config.send(:"#{option}=", value) - assert_equal value, config.send(option) - end - - def assert_appends_value(option, &block) - config = Airbrake::Configuration.new - original_values = config.send(option).dup - block ||= lambda do |conf| - new_value = 'hello' - conf.send(option) << new_value - new_value - end - new_value = block.call(config) - assert_same_elements original_values + [new_value], config.send(option) - end - - def assert_replaces(option, setter) - config = Airbrake::Configuration.new - new_value = 'hello' - config.send(setter, [new_value]) - assert_equal [new_value], config.send(option) - config.send(setter, new_value) - assert_equal [new_value], config.send(option) - end - - # monkeypatches Kernel.warn so we can read warnings from - # Kernel.warnings - def stub_warnings - Kernel.class_eval do - @@warnings = [] - - def warn(*messages) - @@warnings += messages - end - - def self.warnings - @@warnings.join("\n") - end - end - end - - def silence_warnings - Kernel.class_eval { def warn(*args); end } - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/controller_methods_test.rb b/gems/2.2.2/gems/airbrake-4.3.0/test/controller_methods_test.rb deleted file mode 100644 index f2742f8..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/controller_methods_test.rb +++ /dev/null @@ -1,171 +0,0 @@ -require File.expand_path '../helper', __FILE__ - -require 'airbrake/rails/controller_methods' -class TestController - include Airbrake::Rails::ControllerMethods - - def params; {}; end - def session; nil; end - def request - OpenStruct.new(:port=> 80, :protocol => 'http://', host: 'example.com', :fullpath => 'path', :env => []) - end -end - -class NilUserTestController < TestController - def current_user - nil - end -end - -class CurrentUserTestController < TestController - def current_user - OpenStruct.new(:id => 123, :name => 'tape') - end -end - -class CurrentMemberTestController < TestController - def current_member - OpenStruct.new(:id => 321, :name => 'mamba') - end -end - - -class NoSessionTestController < TestController - def session - nil - end -end - -class ControllerMethodsTest < Test::Unit::TestCase - include DefinesConstants - - context "#airbrake_current_user" do - context "without a logged in user" do - setup do - - NilClass.class_eval do - @@called = false - - def self.called - !! @@called - end - - def id - @@called = true - end - end - - @controller = NilUserTestController.new - end - - should "not call #id on NilClass" do - @controller.send(:airbrake_current_user) - assert_equal false, NilClass.called - end - end - - context "with a logged in User" do - teardown do - Object.__send__(:remove_const, :ActiveRecord) if defined?(ActiveRecord) - Object.__send__(:remove_const, :POOL) if defined?(POOL) - end - should 'include user info in the data sent to Ab' do - Airbrake.configuration.user_attributes = %w(id) - controller = CurrentUserTestController.new - ab_data = controller.airbrake_request_data - - assert_equal( {:id => 123}, ab_data[:user]) - end - - should 'include more info if asked to, discarding unknown attributes' do - Airbrake.configuration.user_attributes = %w(id name collar-size) - - controller = CurrentUserTestController.new - ab_data = controller.airbrake_request_data - - assert_equal( {:id => 123, :name => 'tape'}, ab_data[:user]) - end - - should 'work with a "current_member" method too' do - Airbrake.configuration.user_attributes = %w(id) - controller = CurrentMemberTestController.new - ab_data = controller.airbrake_request_data - - assert_equal( {:id => 321}, ab_data[:user]) - end - - should "release DB connections" do - ::POOL = Object.new - module ::ActiveRecord; class Base; def self.connection_pool; ::POOL; end; end; end - ::POOL.expects(:release_connection) - - CurrentUserTestController.new.airbrake_request_data - end - end - end - - context '#airbrake_session_data' do - setup do - @controller = NoSessionTestController.new - end - should 'not call session if no session' do - no_session = @controller.send(:airbrake_session_data) - assert_equal no_session, {:session => 'no session found'} - end - end - - context "#airbrake_request_url" do - setup do - @controller = NoSessionTestController.new - end - should "return correct request url" do - request_url = @controller.send(:airbrake_request_url) - assert_equal request_url, "http://example.com/path" - end - end - - context "Rails 3" do - setup do - @controller = NilUserTestController.new - ::Rails = Object.new - ::Rails.stubs(:version).returns("3.2.17") - end - - should "respond to rails_3_or_4? with true" do - assert @controller.send(:rails_3_or_4?) - end - - should "call filter_rails3_parameters" do - hash = {:a => "b"} - filtered_hash = {:c => "d"} - - @controller.expects(:filter_rails3_parameters).with(hash). - returns(filtered_hash) - assert_equal filtered_hash, - @controller.send(:airbrake_filter_if_filtering, hash) - end - end - - context "Rails 4.x" do - setup do - @controller = TestController.new - ::Rails = Object.new - ::Rails.stubs(:version).returns("4.5.6.7") - end - - should 'be true when running Rails 4.x' do - assert @controller.send(:rails_3_or_4?) - end - - should "call filter_rails3_parameters" do - hash = {:a => "b"} - filtered_hash = {:c => "d"} - - @controller.expects(:filter_rails3_parameters).with(hash). - returns(filtered_hash) - assert_equal filtered_hash, - @controller.send(:airbrake_filter_if_filtering, hash) - end - end - -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/helper.rb b/gems/2.2.2/gems/airbrake-4.3.0/test/helper.rb deleted file mode 100644 index 4c9f3b1..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/helper.rb +++ /dev/null @@ -1,233 +0,0 @@ -require "simplecov" - -if ENV["INTEGRATION"] then SimpleCov.command_name "test:integration" -else SimpleCov.command_name "test:units" -end - -SimpleCov.merge_timeout 3600 -SimpleCov.start - -if ENV["CI"] - require "coveralls" - Coveralls.wear_merged! -end - -$VERBOSE = ENV["VERBOSE"] - -module Kernel - def silence_warnings - with_warnings(nil) { yield } - end - - def with_warnings(flag) - old_verbose, $VERBOSE = $VERBOSE, flag - yield - ensure - $VERBOSE = old_verbose - end -end - -silence_warnings do - require 'test/unit' - require 'rubygems' - - require 'thread' - - require 'mocha/setup' - require 'nokogiri' - require 'rack' - require 'bourne' - require 'sham_rack' - require 'json-schema' - require "shoulda-matchers" - require "shoulda-context" - require "fakeweb" - require "pry" - - begin require 'redgreen'; rescue LoadError; end -end - -$LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), "..", "lib")) - -require "airbrake" - -XSD_SCHEMA_PATH = "http://airbrake.io/airbrake_#{Airbrake::API_VERSION.tr(".","_")}.xsd" -COVERALLS_API_URL = "https://coveralls.io/api/v1" - -FakeWeb.allow_net_connect = %r{#{XSD_SCHEMA_PATH}|#{COVERALLS_API_URL}} - -module TestMethods - def rescue_action e - raise e - end - - def do_raise - raise "Airbrake" - end - - def do_not_raise - render :text => "Success" - end - - def do_raise_ignored - raise ActiveRecord::RecordNotFound.new("404") - end - - def do_raise_not_ignored - raise ActiveRecord::StatementInvalid.new("Statement invalid") - end - - def manual_notify - notify_airbrake(Exception.new) - render :text => "Success" - end - - def manual_notify_ignored - notify_airbrake(ActiveRecord::RecordNotFound.new("404")) - render :text => "Success" - end -end - -module TestHelpers - def stub_sender - stub('sender', :send_to_airbrake => nil) - end - - def stub_sender! - Airbrake.sender = stub_sender - end - - def stub_notice - stub('notice', :to_xml => 'some yaml', :ignore? => false) - end - - def stub_notice! - stub_notice.tap do |notice| - Airbrake::Notice.stubs(:new => notice) - end - end - - def reset_config - Airbrake.configuration = nil - Airbrake.configure do |config| - config.api_key = 'abc123' - end - end - - def clear_backtrace_filters - Airbrake.configuration.backtrace_filters.clear - end - - def build_exception(opts = {}) - backtrace = ["airbrake/test/helper.rb:132:in `build_exception'", - "airbrake/test/backtrace.rb:4:in `build_notice_data'", - "/var/lib/gems/1.8/gems/airbrake-2.4.5/rails/init.rb:2:in `send_exception'"] - opts = {:backtrace => backtrace}.merge(opts) - BacktracedException.new(opts) - end - - def build_notice_data(exception = nil) - exception ||= build_exception - { - :api_key => 'abc123', - :error_class => exception.class.name, - :error_message => "#{exception.class.name}: #{exception.message}", - :backtrace => exception.backtrace, - :environment => { 'PATH' => '/bin', 'REQUEST_URI' => '/users/1' }, - :request => { - :params => { 'controller' => 'users', 'action' => 'show', 'id' => '1' }, - :rails_root => '/path/to/application', - :url => "http://test.host/users/1" - }, - :session => { - :key => '123abc', - :data => { 'user_id' => '5', 'flash' => { 'notice' => 'Logged in successfully' } } - } - } - end - - def assert_caught_and_sent - assert !Airbrake.sender.collected.empty? - end - - def assert_caught_and_not_sent - assert Airbrake.sender.collected.empty? - end - - def assert_array_starts_with(expected, actual) - assert_respond_to actual, :to_ary - array = actual.to_ary.reverse - expected.reverse.each_with_index do |value, i| - assert_equal value, array[i] - end - end - - def assert_valid_node(document, xpath, content) - nodes = document.xpath(xpath) - assert nodes.any?{|node| node.content == content }, - "Expected xpath #{xpath} to have content #{content}, " + - "but found #{nodes.map { |n| n.content }} in #{nodes.size} matching nodes." + - "Document:\n#{document.to_s}" - end - - def assert_logged(expected) - assert_received(Airbrake, :write_verbose_log) do |expect| - expect.with {|actual| actual =~ expected } - end - end - - def assert_not_logged(expected) - assert_received(Airbrake, :write_verbose_log) do |expect| - expect.with {|actual| actual =~ expected }.never - end - end -end - -class Test::Unit::TestCase - include ::TestHelpers -end - -module DefinesConstants - def setup - @defined_constants = [] - end - - def teardown - @defined_constants.each do |constant| - Object.__send__(:remove_const, constant) - end - end - - def define_constant(name, value) - Object.const_set(name, value) - @defined_constants << name - end -end - -class CollectingSender - attr_reader :collected - - def initialize - @collected = [] - end - - def send_to_airbrake(data) - @collected << data - end -end - -class BacktracedException < Exception - attr_accessor :backtrace - - def initialize(opts) - @backtrace = opts[:backtrace] - end - - def set_backtrace(bt) - @backtrace = bt - end - - def message - "Something went wrong. Did you press the red button?" - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/integration.rb b/gems/2.2.2/gems/airbrake-4.3.0/test/integration.rb deleted file mode 100644 index ecb1a8c..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/integration.rb +++ /dev/null @@ -1,14 +0,0 @@ -require File.expand_path '../helper', __FILE__ - -silence_warnings do - require 'abstract_controller' - require 'action_controller' - require 'action_dispatch' - require 'active_support/dependencies' - require 'active_support/core_ext/kernel/reporting' - - require "erb" - require "action_view" -end - -require File.expand_path "../integration/catcher_test", __FILE__ diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/integration/catcher_test.rb b/gems/2.2.2/gems/airbrake-4.3.0/test/integration/catcher_test.rb deleted file mode 100644 index 56c5543..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/integration/catcher_test.rb +++ /dev/null @@ -1,371 +0,0 @@ -require 'airbrake/rails/controller_methods' -require 'airbrake/rails/middleware' - -unless defined?(ActionDispatch::IntegrationTest) # Rails 3.0 - # what follows is a dirty hack which makes - # AD::IntegrationTest possible in Rails 3.0 - ActiveSupport::Deprecation.debug = true - - FIXTURE_LOAD_PATH = File.join(File.dirname(__FILE__), 'fixtures') - FIXTURES = Pathname.new(FIXTURE_LOAD_PATH) - - SharedTestRoutes = ActionDispatch::Routing::RouteSet.new - - class RoutedRackApp - attr_reader :routes - - def initialize(routes, &blk) - @routes = routes - @stack = ActionDispatch::MiddlewareStack.new(&blk).build(@routes) - end - - def call(env) - @stack.call(env) - end - end - - class ActionController::IntegrationTest < ActiveSupport::TestCase - def self.build_app(routes = nil) - RoutedRackApp.new(routes || ActionDispatch::Routing::RouteSet.new) do |middleware| - yield(middleware) if block_given? - end - end - - self.app = build_app - - # Stub Rails dispatcher so it does not get controller references and - # simply return the controller#action as Rack::Body. - class StubDispatcher < ::ActionDispatch::Routing::RouteSet::Dispatcher - protected - def controller_reference(controller_param) - controller_param - end - - def dispatch(controller, action, env) - [200, {'Content-Type' => 'text/html'}, ["#{controller}##{action}"]] - end - end - - def self.stub_controllers - old_dispatcher = ActionDispatch::Routing::RouteSet::Dispatcher - ActionDispatch::Routing::RouteSet.module_eval { remove_const :Dispatcher } - ActionDispatch::Routing::RouteSet.module_eval { const_set :Dispatcher, StubDispatcher } - yield ActionDispatch::Routing::RouteSet.new - ensure - ActionDispatch::Routing::RouteSet.module_eval { remove_const :Dispatcher } - ActionDispatch::Routing::RouteSet.module_eval { const_set :Dispatcher, old_dispatcher } - end - - def with_routing(&block) - temporary_routes = ActionDispatch::Routing::RouteSet.new - old_app, self.class.app = self.class.app, self.class.build_app(temporary_routes) - old_routes = SharedTestRoutes - silence_warnings { Object.const_set(:SharedTestRoutes, temporary_routes) } - - yield temporary_routes - ensure - self.class.app = old_app - silence_warnings { Object.const_set(:SharedTestRoutes, old_routes) } - end - - def with_autoload_path(path) - path = File.join(File.dirname(__FILE__), "fixtures", path) - if ActiveSupport::Dependencies.autoload_paths.include?(path) - yield - else - begin - ActiveSupport::Dependencies.autoload_paths << path - yield - ensure - ActiveSupport::Dependencies.autoload_paths.reject! {|p| p == path} - ActiveSupport::Dependencies.clear - end - end - end - end - - class ActionDispatch::IntegrationTest < ActiveSupport::TestCase - setup do - @routes = SharedTestRoutes - end - end - - module ActionController - class Base - include ActionController::Testing - end - - Base.view_paths = FIXTURE_LOAD_PATH - - class TestCase - include ActionDispatch::TestProcess - - setup do - @routes = SharedTestRoutes - end - end - end - - # This stub emulates the Railtie including the URL helpers from a Rails application - module ActionController - class Base - include SharedTestRoutes.url_helpers - end - end -end # end Rails 3.0 hack - -module ActionDispatch - class ShowExceptions - private - def public_path - "/null" - end - - # Silence logger - def logger - Logger.new("/dev/null") - end - end -end - -class ActionControllerCatcherTest < ActionDispatch::IntegrationTest - - include DefinesConstants - include TestHelpers - - def setup - super - reset_config - Airbrake.sender = CollectingSender.new - Airbrake.configuration.development_environments = [] - define_constant('RAILS_ROOT', '/path/to/rails/root') - end - - def ignore(exception_class) - Airbrake.configuration.ignore << exception_class - end - - def assert_sent_hash(hash, xpath) - hash.each do |key, value| - next if key.match(/^airbrake\./) || # We added this key. - hash[key] !~ /\S/ - - element_xpath = "#{xpath}/var[@key = '#{key}']" - if value.respond_to?(:to_hash) - assert_sent_hash value.to_hash, element_xpath - else - next if key == "action_dispatch.exception" # TODO: Rails 3.2 only - review - value.gsub!(/\d/,"") if key == "PATH_INFO" # TODO: Rails 3.2 only - review - assert_sent_element value, element_xpath - end - end - end - - def assert_sent_element(value, xpath) - assert_valid_node last_sent_notice_document, xpath, stringify_array_elements(value).to_s - end - - def stringify_array_elements(data) - if data.respond_to?(:to_ary) - data.collect do |value| - stringify_array_elements(value) - end - else - data.to_s - end - end - - def assert_sent_request_info_for(request) - params = request.parameters.to_hash - assert_sent_hash params, '/notice/request/params' - assert_sent_element params['controller'], '/notice/request/component' - assert_sent_element params['action'], '/notice/request/action' - assert_sent_element url_from_request(request), '/notice/request/url' - assert_sent_hash request.env, '/notice/request/cgi-data' - end - - def url_from_request(request) - url = "#{request.protocol}#{request.host}" - - unless [80, 443].include?(request.port) - url << ":#{request.port}" - end - - url << request.fullpath.gsub(%r{\d},"") # TODO: Rails 3.2 only - review - - url - end - - def sender - Airbrake.sender - end - - def last_sent_notice_xml - sender.collected.last.to_xml - end - - def last_sent_notice_document - assert_not_nil xml = last_sent_notice_xml, "No xml was sent" - Nokogiri::XML.parse(xml) - end - - class AirbrakeTestController < ActionController::Base - begin - use ActionDispatch::ShowExceptions, ActionDispatch::PublicExceptions.new("/null") - rescue NameError - use ActionDispatch::ShowExceptions - end - - use Airbrake::Rails::Middleware - - include Airbrake::Rails::ControllerMethods - - cattr_accessor :local - - before_filter :set_session - - def set_session - unless params.empty? - request.session = ActionController::TestSession.new(params[:session] || {}) - end - end - - def boom - raise "boom" - render :nothing => true - end - - def hello - render :text => "hello" - end - - def manual_airbrake - notify_airbrake(:error_message => "fail") - render :nothing => true - end - - protected - - def airbrake_local_request? - @@local - end - end - - setup do - Airbrake.configuration.development_environments = [] - end - - - def test_deliver_notices_from_exceptions_raised_in_public_requests - @app = AirbrakeTestController.action(:boom) - get '/' - assert_caught_and_sent - end - - def test_not_deliver_notices_from_exceptions_in_development_environments - Airbrake.configuration.development_environments = ["test"] - Airbrake.configuration.environment_name = "test" - @app = AirbrakeTestController.action(:boom) - get '/' - assert_caught_and_not_sent - end - - def test_not_deliver_notices_from_exceptions_with_no_api_key - Airbrake.configuration.api_key = nil - @app = AirbrakeTestController.action(:boom) - get '/' - assert_caught_and_not_sent - end - - def test_not_deliver_notices_from_actions_that_dont_raise - @app = AirbrakeTestController.action(:hello) - get '/' - assert_caught_and_not_sent - assert_equal 'hello', response.body - end - - def test_not_deliver_ignored_exceptions_raised_by_actions - @app = AirbrakeTestController.action(:boom) - ignore(RuntimeError) - get '/' - assert_caught_and_not_sent - end - - def test_deliver_ignored_exception_raised_manually - @app = AirbrakeTestController.action(:manual_airbrake) - ignore(RuntimeError) - get '/' - assert_caught_and_sent - end - - def test_not_deliver_manually_sent_notices_in_local_requests - AirbrakeTestController.local = true - @app = AirbrakeTestController.action(:manual_airbrake) - get '/' - assert_caught_and_not_sent - AirbrakeTestController.local = false - end - - def test_not_create_actions_from_airbrake_methods - Airbrake::Rails::ControllerMethods.instance_methods.each do |method| - assert !(AirbrakeTestController.new.action_methods.include?(method)) - end - end - - def test_ignore_exceptions_when_user_agent_is_being_ignored_by_regular_expression - Airbrake.configuration.ignore_user_agent_only = [/Ignored/] - @app = AirbrakeTestController.action(:boom) - get "/", {}, {"HTTP_USER_AGENT" => "ShouldBeIgnored"} - assert_caught_and_not_sent - end - - def test_ignore_exceptions_when_user_agent_is_being_ignored_by_string - Airbrake.configuration.ignore_user_agent_only = ['IgnoredUserAgent'] - @app = AirbrakeTestController.action(:boom) - get "/", {}, {"HTTP_USER_AGENT" => "IgnoredUserAgent"} - assert_caught_and_not_sent - end - - def test_not_ignore_exceptions_when_user_agent_is_not_being_ignored - Airbrake.configuration.ignore_user_agent_only = ['IgnoredUserAgent'] - @app = AirbrakeTestController.action(:boom) - get "/", {}, {"HTTP_USER_AGENT" => "NonIgnoredAgent"} - assert_caught_and_sent - end - - def test_send_session_data_for_manual_notifications - @app = AirbrakeTestController.action(:manual_airbrake) - data = { 'one' => 'two' } - get "/", :session => data - assert_sent_hash data, "/notice/request/session" - end - - def test_send_request_data_for_manual_notification - params = { 'controller' => "airbrake_test", 'action' => "index" } - @app = AirbrakeTestController.action(:manual_airbrake) - get "/", params - assert_sent_request_info_for @request - end - - def test_send_request_data_for_manual_notification_with_non_standard_port - params = { 'controller' => "airbrake_test", 'action' => "index" } - @app = AirbrakeTestController.action(:manual_airbrake) - get "/", params, {"SERVER_PORT" => 81} - assert_sent_request_info_for @request - end - - def test_send_request_data_for_automatic_notification - params = { 'controller' => "airbrake_test", 'action' => "index" } - @app = AirbrakeTestController.action(:boom) - get "/", params - assert_sent_request_info_for @request - end - - def test_send_request_data_for_automatic_notification_with_non_standard_port - params = { 'controller' => "airbrake_test", 'action' => "index" } - @app = AirbrakeTestController.action(:boom) - get "/", params, {"SERVER_PORT" => 81} - assert_sent_request_info_for @request - assert_sent_element 81, "/notice/request/cgi-data/var[@key = 'SERVER_PORT']" - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/logger_test.rb b/gems/2.2.2/gems/airbrake-4.3.0/test/logger_test.rb deleted file mode 100644 index 6e06172..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/logger_test.rb +++ /dev/null @@ -1,79 +0,0 @@ -require File.expand_path '../helper', __FILE__ - -class LoggerTest < Test::Unit::TestCase - def stub_http(response, body = nil) - response.stubs(:body => body) if body - @http = stub(:post => response, - :read_timeout= => nil, - :open_timeout= => nil, - :use_ssl= => nil) - Net::HTTP.stubs(:new).returns(@http) - end - - def send_notice - Airbrake.sender.send_to_airbrake({'foo' => "bar"}) - end - - def stub_verbose_log - Airbrake.stubs(:write_verbose_log) - end - - def configure - Airbrake.configure { |config| } - end - - should "report that notifier is ready when configured" do - stub_verbose_log - configure - assert_logged(/Notifier (.*) ready/) - end - - should "not report that notifier is ready when internally configured" do - stub_verbose_log - Airbrake.configure(true) { |config| } - assert_not_logged(/.*/) - end - - should "print environment info a successful notification without a body" do - reset_config - stub_verbose_log - stub_http(Net::HTTPSuccess) - send_notice - assert_logged(/Environment Info:/) - assert_not_logged(/Response from Airbrake:/) - end - - should "print environment info on a failed notification without a body" do - reset_config - stub_verbose_log - stub_http(Net::HTTPError) - send_notice - assert_logged(/Environment Info:/) - assert_not_logged(/Response from Airbrake:/) - end - - should "print environment info and response on a success with a body" do - reset_config - stub_verbose_log - stub_http(Net::HTTPSuccess, 'test') - send_notice - assert_logged(/Environment Info:/) - assert_logged(/Response from Airbrake:/) - end - - should "print environment info and response on a failure with a body" do - reset_config - stub_verbose_log - stub_http(Net::HTTPError, 'test') - send_notice - assert_logged(/Environment Info:/) - assert_logged(/Response from Airbrake:/) - end - - should "print information about the notice when Airbrake server fails" do - stub_verbose_log - stub_http(Net::HTTPError, "test") - send_notice - assert_logged(/Notice details:/) - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/notice_test.rb b/gems/2.2.2/gems/airbrake-4.3.0/test/notice_test.rb deleted file mode 100644 index d824b7c..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/notice_test.rb +++ /dev/null @@ -1,488 +0,0 @@ -require File.expand_path '../helper', __FILE__ - - -class NoticeTest < Test::Unit::TestCase - - include DefinesConstants - - def configure - Airbrake::Configuration.new.tap do |config| - config.api_key = 'abc123def456' - end - end - - def build_notice(args = {}) - configuration = args.delete(:configuration) || configure - Airbrake::Notice.new(configuration.merge(args)) - end - - def stub_request(attrs = {}) - stub('request', { :parameters => { 'one' => 'two' }, - :protocol => 'http', - :host => 'some.host', - :request_uri => '/some/uri', - :session => { :to_hash => { 'a' => 'b' } }, - :env => { 'three' => 'four' } }.update(attrs)) - end - - def assert_accepts_exception_attribute(attribute, args = {}, &block) - exception = build_exception - block ||= lambda { exception.send(attribute) } - value = block.call(exception) - - notice_from_exception = build_notice(args.merge(:exception => exception)) - - assert_equal notice_from_exception.send(attribute), - value, - "#{attribute} was not correctly set from an exception" - - notice_from_hash = build_notice(args.merge(attribute => value)) - assert_equal notice_from_hash.send(attribute), - value, - "#{attribute} was not correctly set from a hash" - end - - def assert_valid_notice_document(document) - xsd_path = URI(XSD_SCHEMA_PATH) - schema = Nokogiri::XML::Schema.new(Net::HTTP.get(xsd_path)) - errors = schema.validate(document) - assert errors.empty?, errors.collect{|e| e.message }.join - end - - def assert_valid_json(notice) - json_schema = File.expand_path(File.join(File.dirname(__FILE__),"..", "resources", "airbrake_3_0.json")) - errors = JSON::Validator.fully_validate(json_schema, notice) - assert errors.empty?, errors.join - end - - def build_backtrace_array - ["app/models/user.rb:13:in `magic'", - "app/controllers/users_controller.rb:8:in `index'"] - end - - def hostname - `hostname`.chomp - end - - def user - Struct.new(:email,:id,:name). - new("darth@vader.com",1,"Anakin Skywalker") - end - - should "call the cleaner on initialization" do - cleaner = stub - cleaner.expects(:clean).returns(stub(:parameters => {}, :cgi_data => {}, :session_data => {})) - Airbrake::Notice.new(:cleaner => cleaner) - end - - should "set the api key" do - api_key = 'key' - notice = build_notice(:api_key => api_key) - assert_equal api_key, notice.api_key - end - - should "accept a project root" do - project_root = '/path/to/project' - notice = build_notice(:project_root => project_root) - assert_equal project_root, notice.project_root - end - - should "accept a component" do - assert_equal 'users_controller', build_notice(:component => 'users_controller').controller - end - - should "alias the component as controller" do - assert_equal 'users_controller', build_notice(:controller => 'users_controller').component - assert_equal 'users_controller', build_notice(:component => 'users_controller').controller - end - - should "accept a action" do - assert_equal 'index', build_notice(:action => 'index').action - end - - should "accept a url" do - url = 'http://some.host/uri' - notice = build_notice(:url => url) - assert_equal url, notice.url - end - - should "set the host name" do - notice = build_notice - assert_equal hostname, notice.hostname - end - - should "accept a backtrace from an exception or hash" do - array = ["user.rb:34:in `crazy'"] - exception = build_exception - exception.set_backtrace array - backtrace = Airbrake::Backtrace.parse(array) - notice_from_exception = build_notice(:exception => exception) - - - assert_equal backtrace, - notice_from_exception.backtrace, - "backtrace was not correctly set from an exception" - - notice_from_hash = build_notice(:backtrace => array) - assert_equal backtrace, - notice_from_hash.backtrace, - "backtrace was not correctly set from a hash" - end - - should "accept user" do - assert_equal user.id, build_notice(:user => user).user.id - assert_equal user.email, build_notice(:user => user).user.email - assert_equal user.name, build_notice(:user => user).user.name - end - - should "pass its backtrace filters for parsing" do - backtrace_array = ['my/file/backtrace:3'] - exception = build_exception - exception.set_backtrace(backtrace_array) - Airbrake::Backtrace.expects(:parse).with(backtrace_array, {:filters => 'foo'}) - - Airbrake::Notice.new({:exception => exception, :backtrace_filters => 'foo'}) - end - - should "set the error class from an exception or hash" do - assert_accepts_exception_attribute :error_class do |exception| - exception.class.name - end - end - - should "set the error message from an exception or hash" do - assert_accepts_exception_attribute :error_message do |exception| - "#{exception.class.name}: #{exception.message}" - end - end - - should "accept parameters from a request or hash" do - parameters = { 'one' => 'two' } - notice_from_hash = build_notice(:parameters => parameters) - assert_equal notice_from_hash.parameters, parameters - end - - should "accept session data from a session[:data] hash" do - data = { 'one' => 'two' } - notice = build_notice(:session => { :data => data }) - assert_equal data, notice.session_data - end - - should "accept session data from a session_data hash" do - data = { 'one' => 'two' } - notice = build_notice(:session_data => data) - assert_equal data, notice.session_data - end - - should "accept an environment name" do - assert_equal 'development', build_notice(:environment_name => 'development').environment_name - end - - should "accept CGI data from a hash" do - data = { 'string' => 'value' } - notice = build_notice(:cgi_data => data) - assert_equal data, notice.cgi_data, "should take CGI data from a hash" - end - - should "not crash without CGI data" do - assert_nothing_raised do - build_notice - end - end - - should "accept any object that responds to :to_hash as CGI data" do - hashlike_obj = Object.new - hashlike_obj.instance_eval do - def to_hash - {:i => 'am a hash'} - end - end - assert hashlike_obj.respond_to?(:to_hash) - - notice = build_notice(:cgi_data => hashlike_obj) - assert_equal({:i => 'am a hash'}, notice.cgi_data, "should take CGI data from any hash-like object") - end - - should "accept notifier information" do - params = { :notifier_name => 'a name for a notifier', - :notifier_version => '1.0.5', - :notifier_url => 'http://notifiers.r.us/download' } - notice = build_notice(params) - assert_equal params[:notifier_name], notice.notifier_name - assert_equal params[:notifier_version], notice.notifier_version - assert_equal params[:notifier_url], notice.notifier_url - end - - should "set sensible defaults without an exception" do - backtrace = Airbrake::Backtrace.parse(build_backtrace_array) - notice = build_notice(:backtrace => build_backtrace_array) - - assert_equal 'Notification', notice.error_message - assert_array_starts_with backtrace.lines, notice.backtrace.lines - assert_equal({}, notice.parameters) - assert_equal({}, notice.session_data) - end - - should "use the caller as the backtrace for an exception without a backtrace" do - filters = Airbrake::Configuration.new.backtrace_filters - backtrace = Airbrake::Backtrace.parse(caller, :filters => filters) - notice = build_notice(:exception => StandardError.new('error'), :backtrace => nil) - - assert_array_starts_with backtrace.lines, notice.backtrace.lines - end - - context "a Notice turned into JSON" do - setup do - @exception = build_exception - - @notice = build_notice({ - :notifier_name => 'a name', - :notifier_version => '1.2.3', - :notifier_url => 'http://some.url/path', - :exception => @exception, - :controller => "controller", - :action => "action", - :url => "http://url.com", - :parameters => { "paramskey" => "paramsvalue", - "nestparentkey" => { "nestkey" => "nestvalue" } }, - :session_data => { "sessionkey" => "sessionvalue" }, - :cgi_data => { "cgikey" => "cgivalue" }, - :project_root => "RAILS_ROOT", - :environment_name => "RAILS_ENV" - }) - - @json = @notice.to_json - end - - should "validate against the JSON schema" do - assert_valid_json @json - end - end - - context "a Notice turned into XML" do - setup do - Airbrake.configure do |config| - config.api_key = "1234567890" - end - - @exception = build_exception - - @notice = build_notice({ - :notifier_name => 'a name', - :notifier_version => '1.2.3', - :notifier_url => 'http://some.url/path', - :exception => @exception, - :controller => "controller", - :action => "action", - :url => "http://url.com", - :parameters => { "paramskey" => "paramsvalue", - "nestparentkey" => { "nestkey" => "nestvalue" } }, - :session_data => { "sessionkey" => "sessionvalue" }, - :cgi_data => { "cgikey" => "cgivalue" }, - :project_root => "RAILS_ROOT", - :environment_name => "RAILS_ENV" - }) - - @xml = @notice.to_xml - - @document = Nokogiri::XML::Document.parse(@xml) - end - - should "validate against the XML schema" do - assert_valid_notice_document @document - end - - - should "serialize a Notice to XML when sent #to_xml" do - assert_valid_node(@document, "//api-key", @notice.api_key) - - assert_valid_node(@document, "//notifier/name", @notice.notifier_name) - assert_valid_node(@document, "//notifier/version", @notice.notifier_version) - assert_valid_node(@document, "//notifier/url", @notice.notifier_url) - - assert_valid_node(@document, "//error/class", @notice.error_class) - assert_valid_node(@document, "//error/message", @notice.error_message) - - assert_valid_node(@document, "//error/backtrace/line/@number", @notice.backtrace.lines.first.number) - assert_valid_node(@document, "//error/backtrace/line/@file", @notice.backtrace.lines.first.file) - assert_valid_node(@document, "//error/backtrace/line/@method", @notice.backtrace.lines.first.method_name) - - assert_valid_node(@document, "//request/url", @notice.url) - assert_valid_node(@document, "//request/component", @notice.controller) - assert_valid_node(@document, "//request/action", @notice.action) - - assert_valid_node(@document, "//request/params/var/@key", "paramskey") - assert_valid_node(@document, "//request/params/var", "paramsvalue") - assert_valid_node(@document, "//request/params/var/@key", "nestparentkey") - assert_valid_node(@document, "//request/params/var/var/@key", "nestkey") - assert_valid_node(@document, "//request/params/var/var", "nestvalue") - assert_valid_node(@document, "//request/session/var/@key", "sessionkey") - assert_valid_node(@document, "//request/session/var", "sessionvalue") - assert_valid_node(@document, "//request/cgi-data/var/@key", "cgikey") - assert_valid_node(@document, "//request/cgi-data/var", "cgivalue") - - assert_valid_node(@document, "//server-environment/project-root", "RAILS_ROOT") - assert_valid_node(@document, "//server-environment/environment-name", "RAILS_ENV") - assert_valid_node(@document, "//server-environment/hostname", hostname) - end - end - - should "not send empty request data" do - notice = build_notice - assert_nil notice.url - assert_nil notice.controller - assert_nil notice.action - - xml = notice.to_xml - document = Nokogiri::XML.parse(xml) - assert_nil document.at('//request/url') - assert_nil document.at('//request/component') - assert_nil document.at('//request/action') - - assert_valid_notice_document document - end - - %w(url controller action).each do |var| - should "send a request if #{var} is present" do - notice = build_notice(var.to_sym => 'value') - xml = notice.to_xml - document = Nokogiri::XML.parse(xml) - assert_not_nil document.at('//request') - end - end - - %w(parameters cgi_data session_data).each do |var| - should "send a request if #{var} is present" do - notice = build_notice(var.to_sym => { 'key' => 'value' }) - xml = notice.to_xml - document = Nokogiri::XML.parse(xml) - assert_not_nil document.at('//request') - end - end - - should "not ignore an exception not matching ignore filters" do - notice = build_notice(:error_class => 'ArgumentError', - :ignore => ['Argument'], - :ignore_by_filters => [lambda { |n| false }]) - assert !notice.ignore? - end - - should "ignore an exception with a matching error class" do - notice = build_notice(:error_class => 'ArgumentError', - :ignore => [ArgumentError]) - assert notice.ignore? - end - - should "ignore an exception with a matching error class name" do - notice = build_notice(:error_class => 'ArgumentError', - :ignore => ['ArgumentError']) - assert notice.ignore? - end - - should "ignore an exception with a matching filter" do - filter = lambda {|notice| notice.error_class == 'ArgumentError' } - notice = build_notice(:error_class => 'ArgumentError', - :ignore_by_filters => [filter]) - assert notice.ignore? - end - - should "not raise without an ignore list" do - notice = build_notice(:ignore => nil, :ignore_by_filters => nil) - assert_nothing_raised do - notice.ignore? - end - end - - ignored_error_classes = Airbrake::Configuration::IGNORE_DEFAULT - - ignored_error_classes.each do |ignored_error_class| - should "ignore #{ignored_error_class} error by default" do - notice = build_notice(:error_class => ignored_error_class) - assert notice.ignore? - end - end - - should "act like a hash" do - notice = build_notice(:error_message => 'some message') - assert_equal notice.error_message, notice[:error_message] - end - - should "return params on notice[:request][:params]" do - params = { 'one' => 'two' } - notice = build_notice(:parameters => params) - assert_equal params, notice[:request][:params] - end - - should "ensure #to_hash is called on objects that support it" do - assert_nothing_raised do - build_notice(:session => { :object => stub(:to_hash => {}) }) - end - end - - should "ensure #to_ary is called on objects that support it" do - assert_nothing_raised do - build_notice(:session => { :object => stub(:to_ary => []) }) - end - end - - should "extract data from a rack environment hash" do - url = "https://subdomain.happylane.com:100/test/file.rb?var=value&var2=value2" - parameters = { 'var' => 'value', 'var2' => 'value2' } - env = Rack::MockRequest.env_for(url) - - notice = build_notice(:rack_env => env) - - assert_equal url, notice.url - assert_equal parameters, notice.parameters - assert_equal 'GET', notice.cgi_data['REQUEST_METHOD'] - end - - should "show a nice warning when rack environment exceeds rack keyspace" do - # simulate exception for too big query - Rack::Request.any_instance.expects(:params).raises(RangeError.new("exceeded available parameter key space")) - - url = "https://subdomain.happylane.com:100/test/file.rb?var=x" - env = Rack::MockRequest.env_for(url) - - notice = build_notice(:rack_env => env) - - assert_equal url, notice.url - assert_equal({:message => "failed to call params on Rack::Request -- exceeded available parameter key space"}, notice.parameters) - assert_equal 'GET', notice.cgi_data['REQUEST_METHOD'] - end - - should "extract data from a rack environment hash with action_dispatch info" do - params = { 'controller' => 'users', 'action' => 'index', 'id' => '7' } - env = Rack::MockRequest.env_for('/', { 'action_dispatch.request.parameters' => params }) - - notice = build_notice(:rack_env => env) - - assert_equal params, notice.parameters - assert_equal params['controller'], notice.component - assert_equal params['action'], notice.action - end - - should "extract session data from a rack environment" do - session_data = { 'something' => 'some value' } - env = Rack::MockRequest.env_for('/', 'rack.session' => session_data) - - notice = build_notice(:rack_env => env) - - assert_equal session_data, notice.session_data - end - - should "prefer passed session data to rack session data" do - session_data = { 'something' => 'some value' } - env = Rack::MockRequest.env_for('/') - - notice = build_notice(:rack_env => env, :session_data => session_data) - - assert_equal session_data, notice.session_data - end - - should "prefer passed error_message to exception message" do - exception = build_exception - notice = build_notice(:exception => exception,:error_message => "Random ponies") - assert_equal "BacktracedException: Random ponies", notice.error_message - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/notifier_test.rb b/gems/2.2.2/gems/airbrake-4.3.0/test/notifier_test.rb deleted file mode 100644 index 26e68d2..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/notifier_test.rb +++ /dev/null @@ -1,288 +0,0 @@ -require File.expand_path '../helper', __FILE__ - -class NotifierTest < Test::Unit::TestCase - - class OriginalException < Exception - end - - class ContinuedException < Exception - end - - include DefinesConstants - - def setup - super - reset_config - end - - def assert_sent(notice, notice_args) - assert_received(Airbrake::Notice, :new) {|expect| expect.with(has_entries(notice_args)) } - assert_received(Airbrake.sender, :send_to_airbrake) {|expect| expect.with(notice) } - end - - def set_public_env - Airbrake.configure { |config| config.environment_name = 'production' } - end - - def set_development_env - Airbrake.configure { |config| config.environment_name = 'development' } - end - - should "yield and save a configuration when configuring" do - yielded_configuration = nil - Airbrake.configure do |config| - yielded_configuration = config - end - - assert_kind_of Airbrake::Configuration, yielded_configuration - assert_equal yielded_configuration, Airbrake.configuration - end - - should "not remove existing config options when configuring twice" do - first_config = nil - Airbrake.configure do |config| - first_config = config - end - Airbrake.configure do |config| - assert_equal first_config, config - end - end - - should "configure the sender" do - sender = stub_sender - Airbrake::Sender.stubs(:new => sender) - configuration = nil - - Airbrake.configure { |yielded_config| configuration = yielded_config } - - assert_received(Airbrake::Sender, :new) { |expect| expect.with(configuration) } - assert_equal sender, Airbrake.sender - end - - should "create and send a notice for an exception" do - set_public_env - exception = build_exception - stub_sender! - notice = stub_notice! - - Airbrake.notify(exception) - - assert_sent notice, :exception => exception - end - - should "create and send a notice for a hash" do - set_public_env - notice = stub_notice! - notice_args = { :error_message => 'uh oh' } - stub_sender! - - Airbrake.notify(notice_args) - - assert_sent(notice, notice_args) - end - - should "not pass the hash as an exception when sending a notice for it" do - set_public_env - stub_notice! - notice_args = { :error_message => 'uh oh' } - stub_sender! - - Airbrake.notify(notice_args) - - assert_received(Airbrake::Notice, :new) {|expect| expect.with(Not(has_key(:exception))) } - end - - should "create and send a notice for an exception that responds to to_hash" do - set_public_env - exception = build_exception - notice = stub_notice! - notice_args = { :error_message => 'uh oh' } - exception.stubs(:to_hash).returns(notice_args) - stub_sender! - - Airbrake.notify(exception) - - assert_sent(notice, notice_args.merge(:exception => exception)) - end - - should "create and sent a notice for an exception and hash" do - set_public_env - exception = build_exception - notice = stub_notice! - notice_args = { :error_message => 'uh oh' } - stub_sender! - - Airbrake.notify(exception, notice_args) - - assert_sent(notice, notice_args.merge(:exception => exception)) - end - - should "not create a notice in a development environment" do - set_development_env - sender = stub_sender! - - Airbrake.notify(build_exception) - Airbrake.notify_or_ignore(build_exception) - - assert_received(sender, :send_to_airbrake) {|expect| expect.never } - end - - should "not deliver an ignored exception when notifying implicitly" do - set_public_env - exception = build_exception - sender = stub_sender! - notice = stub_notice! - notice.stubs(:ignore? => true) - - Airbrake.notify_or_ignore(exception) - - assert_received(sender, :send_to_airbrake) {|expect| expect.never } - end - - should "deliver exception in async-mode" do - Airbrake.configure do |config| - config.environment_name = 'production' - config.async do |notice| - Airbrake.sender.send_to_airbrake(notice) - end - end - exception = build_exception - stub_sender! - notice = stub_notice! - - Airbrake.notify(exception) - - assert_sent(notice, :exception => exception) - end - - should "pass notice in async-mode" do - received_notice = nil - Airbrake.configure do |config| - config.environment_name = 'production' - config.async {|notice| received_notice = notice} - end - exception = build_exception - stub_sender! - notice = stub_notice! - - Airbrake.notify(exception) - - assert_equal received_notice, notice - end - - should "deliver an ignored exception when notifying manually" do - set_public_env - exception = build_exception - stub_sender! - notice = stub_notice! - notice.stubs(:ignore? => true) - - Airbrake.notify(exception) - - assert_sent(notice, :exception => exception) - end - - should "pass config to created notices" do - exception = build_exception - config_opts = { 'one' => 'two', 'three' => 'four' } - stub_notice! - stub_sender! - Airbrake.configuration = stub('config', :merge => config_opts, :configured? => true, :public? => true,:async? => nil) - - Airbrake.notify(exception) - - assert_received(Airbrake::Notice, :new) do |expect| - expect.with(has_entries(config_opts)) - end - end - - context "building notice JSON for an exception" do - setup do - @params = { :controller => "users", :action => "create" } - @exception = build_exception - @hash = Airbrake.build_lookup_hash_for(@exception, @params) - end - - should "set action" do - assert_equal @params[:action], @hash[:action] - end - - should "set controller" do - assert_equal @params[:controller], @hash[:component] - end - - should "set line number" do - assert @hash[:line_number] =~ /\d+/ - end - - should "set file" do - assert_match(/test\/helper\.rb$/, @hash[:file]) - end - - should "set rails_env to production" do - assert_equal 'production', @hash[:environment_name] - end - - should "set error class" do - assert_equal @exception.class.to_s, @hash[:error_class] - end - - should "not set file or line number with no backtrace" do - @exception.stubs(:backtrace).returns([]) - - @hash = Airbrake.build_lookup_hash_for(@exception) - - assert_nil @hash[:line_number] - assert_nil @hash[:file] - end - - should "not set action or controller when not provided" do - @hash = Airbrake.build_lookup_hash_for(@exception) - - assert_nil @hash[:action] - assert_nil @hash[:controller] - end - - context "when an exception that provides #original_exception is raised" do - setup do - @exception.stubs(:original_exception).returns(begin - raise NotifierTest::OriginalException.new - rescue Exception => e - e - end) - end - - should "unwrap exceptions that provide #original_exception" do - @hash = Airbrake.build_lookup_hash_for(@exception) - assert_equal "NotifierTest::OriginalException", @hash[:error_class] - end - - should "keep exception if #original_exception is nil" do - @exception.stubs(:original_exception).returns(nil) - @hash = Airbrake.build_lookup_hash_for(@exception) - assert_equal "BacktracedException", @hash[:error_class] - end - end - - context "when an exception that provides #continued_exception is raised" do - setup do - @exception.stubs(:continued_exception).returns(begin - raise NotifierTest::ContinuedException.new - rescue Exception => e - e - end) - end - - should "unwrap exceptions that provide #continued_exception" do - @hash = Airbrake.build_lookup_hash_for(@exception) - assert_equal "NotifierTest::ContinuedException", @hash[:error_class] - end - - should "keep exception if #continued_exception is nil" do - @exception.stubs(:continued_exception).returns(nil) - @hash = Airbrake.build_lookup_hash_for(@exception) - assert_equal "BacktracedException", @hash[:error_class] - end - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/params_cleaner_test.rb b/gems/2.2.2/gems/airbrake-4.3.0/test/params_cleaner_test.rb deleted file mode 100644 index 0a1ed2c..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/params_cleaner_test.rb +++ /dev/null @@ -1,184 +0,0 @@ -require File.expand_path '../helper', __FILE__ - -class ParamsCleanerTest < Test::Unit::TestCase - - def clean(opts = {}) - cleaner = Airbrake::Utils::ParamsCleaner.new(:blacklist_filters => opts.delete(:params_filters) || [], - :whitelist_filters => opts.delete(:whitelist_params_filters) || [], - :to_clean => opts) - cleaner.clean - end - - def assert_serializes_hash(attribute) - [File.open(__FILE__), Proc.new { puts "boo!" }, Module.new, nil].each do |object| - hash = { - :strange_object => object, - :sub_hash => { - :sub_object => object - }, - :array => [object] - } - clean_params = clean(attribute => hash) - hash = clean_params.send(attribute) - object_serialized = object.nil? ? nil : object.to_s - assert_equal object_serialized, hash[:strange_object], "objects should be serialized" - assert_kind_of Hash, hash[:sub_hash], "subhashes should be kept" - assert_equal object_serialized, hash[:sub_hash][:sub_object], "subhash members should be serialized" - assert_kind_of Array, hash[:array], "arrays should be kept" - assert_equal object_serialized, hash[:array].first, "array members should be serialized" - end - end - - def assert_filters_hash(attribute) - filters = ['abc', :def] - original = { - 'abc' => '123', - 'def' => '456', - 'ghi' => '789', - 'something_with_abc' => 'match the entire string', - 'nested_hash' => { 'abc' => '100', 'ghi' => '789' }, - 'nested_array' => [{ 'abc' => '100' }, { 'ghi' => '789' }, 'xyz'] - } - filtered = { - 'abc' => '[FILTERED]', - 'def' => '[FILTERED]', - 'ghi' => '789', - 'something_with_abc' => 'match the entire string', - 'nested_hash' => { 'abc' => '[FILTERED]', 'ghi' => '789' }, - 'nested_array' => [{ 'abc' => '[FILTERED]' }, { 'ghi' => '789' }, 'xyz'] - } - - clean_params = clean(:params_filters => filters, attribute => original) - - assert_equal(filtered, clean_params.send(attribute)) - end - - should "should always remove a Rails application's secret token" do - original = { - "action_dispatch.secret_token" => "abc123xyz456", - "abc" => "123" - } - clean_params = clean(:cgi_data => original) - assert_equal({"abc" => "123"}, clean_params.cgi_data) - end - - should "remove sensitive rack vars" do - original = { - "HTTP_X_CSRF_TOKEN" => "remove_me", - "HTTP_COOKIE" => "remove_me", - "HTTP_AUTHORIZATION" => "remove_me", - "action_dispatch.request.unsigned_session_cookie" => "remove_me", - "action_dispatch.cookies" => "remove_me", - "action_dispatch.unsigned_session_cookie" => "remove_me", - "action_dispatch.secret_key_base" => "remove_me", - "action_dispatch.signed_cookie_salt" => "remove_me", - "action_dispatch.encrypted_cookie_salt" => "remove_me", - "action_dispatch.encrypted_signed_cookie_salt" => "remove_me", - "action_dispatch.http_auth_salt" => "remove_me", - "action_dispatch.secret_token" => "remove_me", - "rack.request.cookie_hash" => "remove_me", - "rack.request.cookie_string" => "remove_me", - "rack.request.form_vars" => "remove_me", - "rack.session" => "remove_me", - "rack.session.options" => "remove_me", - "rack.request.form_vars" => "story%5Btitle%5D=The+TODO+label", - "abc" => "123" - } - - clean_params = clean(:cgi_data => original) - assert_equal({"abc" => "123"}, clean_params.cgi_data) - end - - should "remove secrets from cgi_data" do - original = { - "aws_secret_key" => "secret", - "service_password" => "password", - "abc" => "123" - } - - clean_params = clean(:cgi_data => original) - assert_equal({"abc" => "123"}, clean_params.cgi_data) - end - - should "handle frozen objects" do - params = { - 'filter_me' => ['a', 'b', 'c', 'd'].freeze - } - - clean_params = clean({:params_filters => ['filter_me'], :parameters => params}) - assert_equal({'filter_me' => '[FILTERED]'}, clean_params.parameters) - end - - should "filter parameters" do - assert_filters_hash(:parameters) - end - - should "whitelist filter parameters" do - whitelist_filters = ["abc", :def] - original = { 'abc' => "123", 'def' => "456", 'ghi' => "789", 'nested' => { 'abc' => '100' }, - 'something_with_abc' => 'match the entire string'} - filtered = { 'abc' => "123", - 'def' => "456", - 'something_with_abc' => "[FILTERED]", - 'ghi' => "[FILTERED]", - 'nested' => "[FILTERED]" } - - clean_params = clean(:whitelist_params_filters => whitelist_filters, - :parameters => original) - - assert_equal(filtered, - clean_params.send(:parameters)) - end - - should "not filter everything if whitelist filters are empty" do - whitelist_filters = [] - original = { 'abc' => '123' } - clean_params = clean(:whitelist_params_filters => whitelist_filters, - :parameters => original) - assert_equal(original, clean_params.send(:parameters)) - end - - should "not care if filters are defined in nested array" do - filters = [[/crazy/, :foo, ["bar", ["too"]]]] - original = { - 'this_is_crazy' => 'yes_it_is', - 'I_am_good' => 'yes_you_are', - 'foo' => '1212', - 'too' => '2121', - 'bar' => 'secret' - } - filtered = { - 'this_is_crazy' => '[FILTERED]', - 'I_am_good' => 'yes_you_are', - 'foo' => '[FILTERED]', - 'too' => '[FILTERED]', - 'bar' => '[FILTERED]' - } - clean_params = clean(:params_filters => filters, - :parameters => original) - assert_equal(filtered, clean_params.send(:parameters)) - end - - should "filter key if it is defined as blacklist and whitelist" do - original = { 'filter_me' => 'secret' } - filtered = { 'filter_me' => '[FILTERED]' } - clean_params = clean(:params_filters => [:filter_me], - :params_whitelist_filters => [:filter_me], - :parameters => original) - assert_equal(filtered, clean_params.send(:parameters)) - end - - should "filter cgi data" do - assert_filters_hash(:cgi_data) - end - - should "filter session" do - assert_filters_hash(:session_data) - end - - should "convert unserializable objects to strings" do - assert_serializes_hash(:parameters) - assert_serializes_hash(:cgi_data) - assert_serializes_hash(:session_data) - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/rack_test.rb b/gems/2.2.2/gems/airbrake-4.3.0/test/rack_test.rb deleted file mode 100644 index a143db4..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/rack_test.rb +++ /dev/null @@ -1,62 +0,0 @@ -require File.expand_path '../helper', __FILE__ - -class RackTest < Test::Unit::TestCase - - should "call the upstream app with the environment" do - environment = { 'key' => 'value' } - app = lambda { |env| ['response', {}, env] } - stack = Airbrake::Rack.new(app) - - response = stack.call(environment) - - assert_equal ['response', {}, environment], response - end - - should "deliver an exception raised while calling an upstream app" do - Airbrake.stubs(:notify_or_ignore) - - exception = build_exception - environment = { 'key' => 'value' } - app = lambda do |env| - raise exception - end - - begin - stack = Airbrake::Rack.new(app) - stack.call(environment) - rescue Exception => raised - assert_equal exception, raised - else - flunk "Didn't raise an exception" - end - - assert_received(Airbrake, :notify_or_ignore) do |expect| - expect.with(exception, :rack_env => environment) - end - end - - %w(rack.exception sinatra.error).each do |ex| - - should "deliver an exception in #{ex}" do - Airbrake.stubs(:notify_or_ignore) - exception = build_exception - environment = { 'key' => 'value' } - - response = [200, {}, ['okay']] - app = lambda do |env| - env[ex] = exception - response - end - stack = Airbrake::Rack.new(app) - - actual_response = stack.call(environment) - - assert_equal response, actual_response - assert_received(Airbrake, :notify_or_ignore) do |expect| - expect.with(exception, :rack_env => environment) - end - end - - end - -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/rails_initializer_test.rb b/gems/2.2.2/gems/airbrake-4.3.0/test/rails_initializer_test.rb deleted file mode 100644 index 752cb03..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/rails_initializer_test.rb +++ /dev/null @@ -1,36 +0,0 @@ -require File.expand_path '../helper', __FILE__ - -require 'airbrake/rails' - -class RailsInitializerTest < Test::Unit::TestCase - include DefinesConstants - - should "trigger use of Rails' logger if logger isn't set and Rails' logger exists" do - rails = Module.new do - def self.logger - "RAILS LOGGER" - end - end - define_constant("Rails", rails) - Airbrake::Rails.initialize - assert_equal "RAILS LOGGER", Airbrake.logger - end - - should "trigger use of Rails' default logger if logger isn't set and Rails.logger doesn't exist" do - define_constant("RAILS_DEFAULT_LOGGER", "RAILS DEFAULT LOGGER") - - Airbrake::Rails.initialize - assert_equal "RAILS DEFAULT LOGGER", Airbrake.logger - end - - should "allow overriding of the logger if already assigned" do - define_constant("RAILS_DEFAULT_LOGGER", "RAILS DEFAULT LOGGER") - Airbrake::Rails.initialize - - Airbrake.configure(true) do |config| - config.logger = "OVERRIDDEN LOGGER" - end - - assert_equal "OVERRIDDEN LOGGER", Airbrake.logger - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/recursion_test.rb b/gems/2.2.2/gems/airbrake-4.3.0/test/recursion_test.rb deleted file mode 100644 index 2ff7952..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/recursion_test.rb +++ /dev/null @@ -1,10 +0,0 @@ -require File.expand_path '../helper', __FILE__ - -class RecursionTest < Test::Unit::TestCase - should "not allow infinite recursion" do - hash = {:a => :a} - hash[:hash] = hash - notice = Airbrake::Notice.new(:parameters => hash) - assert_equal "[possible infinite recursion halted]", notice.parameters[:hash] - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/response_test.rb b/gems/2.2.2/gems/airbrake-4.3.0/test/response_test.rb deleted file mode 100644 index 0dc1da8..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/response_test.rb +++ /dev/null @@ -1,18 +0,0 @@ -require File.expand_path '../helper', __FILE__ - -class ResponseTest < Test::Unit::TestCase - include DefinesConstants - - def response_body - File.read File.expand_path('../support/response_shim.xml', __FILE__) - end - - should "output a nicely formatted notice details" do - output = Airbrake::Response.pretty_format(response_body) - - assert %r{ID: b6817316-9c45-ed26-45eb-780dbb86aadb}, "#{output}" - assert %r{URL: http://airbrake.io/locate/b6817316-9c45-ed26-45eb-780dbb86aadb}, - "#{output}" - - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/sender_test.rb b/gems/2.2.2/gems/airbrake-4.3.0/test/sender_test.rb deleted file mode 100644 index 1a4bb94..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/sender_test.rb +++ /dev/null @@ -1,319 +0,0 @@ -require File.expand_path '../helper', __FILE__ - -class SenderTest < Test::Unit::TestCase - - def setup - reset_config - end - - def build_sender(opts = {}) - Airbrake.configure do |conf| - opts.each {|opt, value| conf.send(:"#{opt}=", value) } - end - end - - def send_exception(args = {}) - notice = args.delete(:notice) || build_notice_data - notice.stubs(:to_xml) - sender = args.delete(:sender) || build_sender(args) - sender.send_to_airbrake(notice) - end - - def stub_http(options = {}) - response = stub(:body => options[:body] || 'body') - http = stub(:post => response, - :read_timeout= => nil, - :open_timeout= => nil, - :ca_file= => nil, - :verify_mode= => nil, - :use_ssl= => nil) - Net::HTTP.stubs(:new => http) - http - end - - should "post to Airbrake when using an HTTP proxy" do - response = stub(:body => 'body') - http = stub(:post => response, - :read_timeout= => nil, - :open_timeout= => nil, - :use_ssl= => nil) - proxy = stub(:new => http) - Net::HTTP.stubs(:Proxy => proxy) - - url = "http://api.airbrake.io:80#{Airbrake::Sender::NOTICES_URI}" - uri = URI.parse(url) - - proxy_host = 'some.host' - proxy_port = 88 - proxy_user = 'login' - proxy_pass = 'passwd' - - send_exception(:proxy_host => proxy_host, - :proxy_port => proxy_port, - :proxy_user => proxy_user, - :proxy_pass => proxy_pass) - assert_received(http, :post) do |expect| - expect.with(uri.path, anything, Airbrake::Sender::HEADERS[:xml]) - end - assert_received(Net::HTTP, :Proxy) do |expect| - expect.with(proxy_host, proxy_port, proxy_user, proxy_pass) - end - end - - should "return the created group's id on successful posting" do - stub_http(:body => '3799307') - assert_equal "3799307", send_exception(:secure => false) - end - - context "when using the XML API" do - - should "post to Airbrake with XML passed" do - xml_notice = Airbrake::Notice.new(:error_class => "FooBar", :error_message => "Foo Bar").to_xml - - http = stub_http - - sender = build_sender - sender.send_to_airbrake(xml_notice) - - assert_received(http, :post) do |expect| - expect.with(anything, xml_notice, Airbrake::Sender::HEADERS[:xml]) - end - end - - should "post to Airbrake with a Notice instance passed" do - notice = Airbrake::Notice.new(:error_class => "FooBar", :error_message => "Foo Bar") - - http = stub_http - - sender = build_sender - sender.send_to_airbrake(notice) - - assert_received(http, :post) do |expect| - expect.with(anything, notice.to_xml, Airbrake::Sender::HEADERS[:xml]) - end - end - - end - - context "when using new JSON API" do - should "post to Airbrake with JSON passed" do - json_notice = Airbrake::Notice.new(:error_class => "FooBar", :error_message => "Foo Bar").to_json - - http = stub_http - - sender = build_sender(:project_id => "PROJECT_ID", :host => "collect.airbrake.io") - sender.send_to_airbrake(json_notice) - - assert_received(http, :post) do |expect| - expect.with(anything, json_notice, Airbrake::Sender::HEADERS[:json]) - end - - end - - should "post to Airbrake with notice passed" do - notice = Airbrake::Notice.new(:error_class => "FooBar", :error_message => "Foo Bar") - - http = stub_http - - sender = build_sender(:project_id => "PROJECT_ID", :host => "collect.airbrake.io") - sender.send_to_airbrake(notice) - - assert_received(http, :post) do |expect| - expect.with(anything, notice.to_json, Airbrake::Sender::HEADERS[:json]) - end - - end - end - - context "when encountering exceptions: " do - context "HTTP connection setup problems" do - should "not be rescued" do - proxy = stub() - proxy.stubs(:new).raises(NoMemoryError) - Net::HTTP.stubs(:Proxy => proxy) - - assert_raise NoMemoryError do - build_sender.send(:setup_http_connection) - end - end - - should "be logged" do - proxy = stub() - proxy.stubs(:new).raises(RuntimeError) - Net::HTTP.stubs(:Proxy => proxy) - - sender = build_sender - sender.expects(:log) - - assert_raise RuntimeError do - sender.send(:setup_http_connection) - end - - end - end - - context "unexpected exception sending problems" do - should "be logged" do - sender = build_sender - sender.stubs(:setup_http_connection).raises(RuntimeError.new) - - sender.expects(:log) - send_exception(:sender => sender) - end - - should "return nil no matter what" do - sender = build_sender - sender.stubs(:setup_http_connection).raises(LocalJumpError) - - assert_nothing_thrown do - assert_nil sender.send_to_airbrake(build_notice_data) - end - end - end - - should "return nil on failed posting" do - http = stub_http - http.stubs(:post).raises(Errno::ECONNREFUSED) - assert_equal nil, send_exception(:secure => false) - end - - should "not fail when posting and a timeout exception occurs" do - http = stub_http - http.stubs(:post).raises(TimeoutError) - assert_nothing_thrown do - send_exception(:secure => false) - end - end - - should "not fail when posting and a connection refused exception occurs" do - http = stub_http - http.stubs(:post).raises(Errno::ECONNREFUSED) - assert_nothing_thrown do - send_exception(:secure => false) - end - end - - should "not fail when posting any http exception occurs" do - http = stub_http - Airbrake::Sender::HTTP_ERRORS.each do |error| - http.stubs(:post).raises(error) - assert_nothing_thrown do - send_exception(:secure => false) - end - end - end - end - - context "SSL" do - should "post to the right url for non-ssl" do - http = stub_http - url = "http://api.airbrake.io:80#{Airbrake::Sender::NOTICES_URI}" - uri = URI.parse(url) - send_exception(:secure => false) - assert_received(http, :post) {|expect| expect.with(uri.path, anything, Airbrake::Sender::HEADERS[:xml]) } - end - - should "post to the right path for ssl" do - http = stub_http - send_exception(:secure => true) - assert_received(http, :post) {|expect| expect.with(Airbrake::Sender::NOTICES_URI, anything, Airbrake::Sender::HEADERS[:xml]) } - end - - should "verify the SSL peer when the use_ssl option is set to true" do - url = "https://api.airbrake.io#{Airbrake::Sender::NOTICES_URI}" - uri = URI.parse(url) - - real_http = Net::HTTP.new(uri.host, uri.port) - real_http.stubs(:post => nil) - proxy = stub(:new => real_http) - Net::HTTP.stubs(:Proxy => proxy) - File.stubs(:exist?).with(OpenSSL::X509::DEFAULT_CERT_FILE).returns(false) - - send_exception(:secure => true) - assert(real_http.use_ssl?) - assert_equal(OpenSSL::SSL::VERIFY_PEER, real_http.verify_mode) - assert_equal(Airbrake.configuration.local_cert_path, real_http.ca_file) - end - - should "use the default DEFAULT_CERT_FILE if asked to" do - config = Airbrake::Configuration.new - config.use_system_ssl_cert_chain = true - sender = Airbrake::Sender.new(config) - - assert(sender.use_system_ssl_cert_chain?) - - http = sender.send(:setup_http_connection) - assert_not_equal http.ca_file, config.local_cert_path - end - - should "verify the connection when the use_ssl option is set (VERIFY_PEER)" do - sender = build_sender(:secure => true) - http = sender.send(:setup_http_connection) - assert_equal(OpenSSL::SSL::VERIFY_PEER, http.verify_mode) - end - - should "use the default cert (OpenSSL::X509::DEFAULT_CERT_FILE) only if explicitly told to" do - sender = build_sender(:secure => true) - http = sender.send(:setup_http_connection) - - assert_equal(Airbrake.configuration.local_cert_path, http.ca_file) - - File.stubs(:exist?).with(OpenSSL::X509::DEFAULT_CERT_FILE).returns(true) - sender = build_sender(:secure => true, :use_system_ssl_cert_chain => true) - http = sender.send(:setup_http_connection) - - assert_not_equal(Airbrake.configuration.local_cert_path, http.ca_file) - assert_equal(OpenSSL::X509::DEFAULT_CERT_FILE, http.ca_file) - end - - should "connect to the right port for ssl" do - stub_http - send_exception(:secure => true) - assert_received(Net::HTTP, :new) {|expect| expect.with("api.airbrake.io", 443) } - end - - should "connect to the right port for non-ssl" do - stub_http - send_exception(:secure => false) - assert_received(Net::HTTP, :new) {|expect| expect.with("api.airbrake.io", 80) } - end - - should "use ssl if secure" do - stub_http - send_exception(:secure => true, :host => 'example.org') - assert_received(Net::HTTP, :new) {|expect| expect.with('example.org', 443) } - end - - should "not use ssl if not secure" do - stub_http - send_exception(:secure => false, :host => 'example.org') - assert_received(Net::HTTP, :new) {|expect| expect.with('example.org', 80) } - end - end - - context "network timeouts" do - should "default the open timeout to 2 seconds" do - http = stub_http - send_exception - assert_received(http, :open_timeout=) {|expect| expect.with(2) } - end - - should "default the read timeout to 5 seconds" do - http = stub_http - send_exception - assert_received(http, :read_timeout=) {|expect| expect.with(5) } - end - - should "allow override of the open timeout" do - http = stub_http - send_exception(:http_open_timeout => 4) - assert_received(http, :open_timeout=) {|expect| expect.with(4) } - end - - should "allow override of the read timeout" do - http = stub_http - send_exception(:http_read_timeout => 10) - assert_received(http, :read_timeout=) {|expect| expect.with(10) } - end - end -end diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/support/response_shim.xml b/gems/2.2.2/gems/airbrake-4.3.0/test/support/response_shim.xml deleted file mode 100644 index b610278..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/support/response_shim.xml +++ /dev/null @@ -1,4 +0,0 @@ - -fd2ec31a-8628-0146-edae-b783ab246f9f -http://airbrake.io/locate/fd2ec31a-8628-0146-edae-b783ab246f9f - diff --git a/gems/2.2.2/gems/airbrake-4.3.0/test/user_informer_test.rb b/gems/2.2.2/gems/airbrake-4.3.0/test/user_informer_test.rb deleted file mode 100644 index 48d9702..0000000 --- a/gems/2.2.2/gems/airbrake-4.3.0/test/user_informer_test.rb +++ /dev/null @@ -1,29 +0,0 @@ -require File.expand_path '../helper', __FILE__ - -class UserInformerTest < Test::Unit::TestCase - should "modify output if there is an airbrake id" do - main_app = lambda do |env| - env['airbrake.error_id'] = 1 - [200, {}, [""]] - end - informer_app = Airbrake::UserInformer.new(main_app) - - ShamRack.mount(informer_app, "example.com") - - response = Net::HTTP.get_response(URI.parse("http://example.com/")) - assert_equal "Airbrake Error 1", response.body - assert_equal 16, response["Content-Length"].to_i - end - - should "not modify output if there is no airbrake id" do - main_app = lambda do |env| - [200, {}, [""]] - end - informer_app = Airbrake::UserInformer.new(main_app) - - ShamRack.mount(informer_app, "example.com") - - response = Net::HTTP.get_response(URI.parse("http://example.com/")) - assert_equal "", response.body - end -end diff --git a/gems/2.2.2/specifications/airbrake-4.3.0.gemspec b/gems/2.2.2/specifications/airbrake-4.3.0.gemspec deleted file mode 100644 index 96f6b1d..0000000 --- a/gems/2.2.2/specifications/airbrake-4.3.0.gemspec +++ /dev/null @@ -1,93 +0,0 @@ -# -*- encoding: utf-8 -*- -# stub: airbrake 4.3.0 ruby lib - -Gem::Specification.new do |s| - s.name = "airbrake" - s.version = "4.3.0" - - s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= - s.require_paths = ["lib"] - s.authors = ["Airbrake"] - s.date = "2015-06-24" - s.email = "support@airbrake.io" - s.executables = ["airbrake"] - s.files = ["bin/airbrake"] - s.homepage = "http://www.airbrake.io" - s.licenses = ["MIT"] - s.rubygems_version = "2.4.5" - s.summary = "Send your application errors to our hosted service and reclaim your inbox." - - s.installed_by_version = "2.4.5" if s.respond_to? :installed_by_version - - if s.respond_to? :specification_version then - s.specification_version = 4 - - if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_runtime_dependency(%q, [">= 0"]) - s.add_runtime_dependency(%q, [">= 0"]) - s.add_development_dependency(%q, ["~> 1.4.0"]) - s.add_development_dependency(%q, ["~> 1.1.1"]) - s.add_development_dependency(%q, ["~> 1.3.0"]) - s.add_development_dependency(%q, ["~> 1.5.0"]) - s.add_development_dependency(%q, ["~> 2.6.0"]) - s.add_development_dependency(%q, ["~> 1.3.0"]) - s.add_development_dependency(%q, ["~> 1.0.12"]) - s.add_development_dependency(%q, ["~> 2.0"]) - s.add_development_dependency(%q, [">= 0"]) - s.add_development_dependency(%q, [">= 0"]) - s.add_development_dependency(%q, [">= 0"]) - s.add_development_dependency(%q, [">= 0"]) - s.add_development_dependency(%q, ["= 1.0.2"]) - s.add_development_dependency(%q, [">= 0"]) - s.add_development_dependency(%q, [">= 0"]) - s.add_development_dependency(%q, [">= 0"]) - s.add_development_dependency(%q, [">= 0"]) - s.add_development_dependency(%q, ["~> 4.0"]) - s.add_development_dependency(%q, [">= 0"]) - else - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, ["~> 1.4.0"]) - s.add_dependency(%q, ["~> 1.1.1"]) - s.add_dependency(%q, ["~> 1.3.0"]) - s.add_dependency(%q, ["~> 1.5.0"]) - s.add_dependency(%q, ["~> 2.6.0"]) - s.add_dependency(%q, ["~> 1.3.0"]) - s.add_dependency(%q, ["~> 1.0.12"]) - s.add_dependency(%q, ["~> 2.0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, ["= 1.0.2"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, ["~> 4.0"]) - s.add_dependency(%q, [">= 0"]) - end - else - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, ["~> 1.4.0"]) - s.add_dependency(%q, ["~> 1.1.1"]) - s.add_dependency(%q, ["~> 1.3.0"]) - s.add_dependency(%q, ["~> 1.5.0"]) - s.add_dependency(%q, ["~> 2.6.0"]) - s.add_dependency(%q, ["~> 1.3.0"]) - s.add_dependency(%q, ["~> 1.0.12"]) - s.add_dependency(%q, ["~> 2.0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, ["= 1.0.2"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, ["~> 4.0"]) - s.add_dependency(%q, [">= 0"]) - end -end diff --git a/plugin.rb b/plugin.rb index 8de6685..a7e2e62 100644 --- a/plugin.rb +++ b/plugin.rb @@ -1,6 +1,6 @@ # name: df-core # about: A common functionality of my Discourse plugins. -# version: 1.1.1 +# version: 1.2.0 # authors: Dmitry Fedyuk # url: https://discourse.pro #register_asset 'javascripts/lib/sprintf.js' @@ -11,17 +11,37 @@ Discourse::Application.config.autoload_paths += Dir["#{pluginAppPath}models", "#{pluginAppPath}controllers"] # Из коробки airbrake не устанавливается. # Поэтому чуточку подправил его и устанавливаю локальную версию. -spec_file = "#{Rails.root}/plugins/df-core/gems/2.2.2/specifications/airbrake-4.3.0.gemspec" -spec = Gem::Specification.load spec_file -spec.activate -require 'airbrake' +#spec = Gem::Specification.load \ +# "#{Rails.root}/plugins/df-core/gems/2.2.2/specifications/airbrake-4.3.0.gemspec" +#spec.activate +# 2016-12-19 +# Требуется для гема «airbrake»: https://rubygems.org/gems/airbrake/versions/5.6.1 +gem 'airbrake-ruby', '1.6.0' +gem 'dfg-airbrake', '5.6.2', {require_name: 'airbrake'} +# 2016-12-19 +# В Airbrake 5 API поменялся: +# https://github.com/airbrake/airbrake/blob/master/docs/Migration_guide_from_v4_to_v5.md#general-changes Airbrake.configure do |c| - c.api_key = 'c07658a7417f795847b2280bc2fd7a79' - c.development_environments = [] - c.host = 'log.dmitry-fedyuk.com' - c.port = 80 - c.secure = false + # 2016-12-19 + # Берётся из адреса: http://log.dmitry-fedyuk.com/apps/559ed7e76d61673d30000000 + c.project_id = '559ed7e76d61673d30000000' + c.project_key = 'c07658a7417f795847b2280bc2fd7a79' + # 2016-12-19 + # The development_environments option was renamed to ignore_environments. + # Its behaviour was also slightly changed. + # By default, the library sends exceptions in all environments, + # so you don't need to assign an empty Array anymore to get this behavior. + # https://github.com/airbrake/airbrake/blob/master/docs/Migration_guide_from_v4_to_v5.md#development-environments + # 2016-12-19 + # https://github.com/airbrake/airbrake/blob/master/docs/Migration_guide_from_v4_to_v5.md#port + c.host = 'http://log.dmitry-fedyuk.com' end +=begin +2016-12-19 +Используется из dfg-paypal: +https://github.com/discourse-pro/dfg-paypal/blob/0.8.2/lib/paypal/nvp/request.rb#L4 +https://github.com/discourse-pro/dfg-paypal/blob/0.8.2/lib/paypal/payment/response/reference.rb#L4 +=end gem 'attr_required', '1.0.0' # 2016-12-12 # Оригинальный https://github.com/nov/paypal-express перестал работать: