Files
cromite/build/patches/eyeo-beta-118.0.5993.48-base.patch
2024-05-11 12:28:55 +02:00

53154 lines
2.8 MiB
Plaintext

From: chromium-sdk <project_26591639_bot@noreply.gitlab.com>
Date: Thu, 12 Oct 2023 14:46:00 +0200
Subject: eyeo Browser Ad filtering Solution: Base Module
Based on Chromium 118.0.5993.48
---
DEPS | 22 +
LICENSE | 15 +
README.md | 12 +
base/trace_event/builtin_categories.h | 5 +
build/install-build-deps.py | 10 +-
components/BUILD.gn | 12 +
components/adblock/CHANGELOG.md | 635 ++++++++
components/adblock/LICENSE | 674 ++++++++
components/adblock/README.md | 80 +
components/adblock/content/BUILD.gn | 22 +
components/adblock/content/browser/BUILD.gn | 136 ++
.../adblock_controller_factory_base.cc | 87 +
.../browser/adblock_controller_factory_base.h | 50 +
.../content/browser/adblock_filter_match.h | 30 +
.../adblock_telemetry_service_factory_base.cc | 100 ++
.../adblock_telemetry_service_factory_base.h | 54 +
.../browser/adblock_url_loader_factory.cc | 748 +++++++++
.../browser/adblock_url_loader_factory.h | 100 ++
.../adblock_url_loader_factory_for_test.cc | 436 +++++
.../adblock_url_loader_factory_for_test.h | 70 +
.../browser/adblock_webcontents_observer.cc | 188 +++
.../browser/adblock_webcontents_observer.h | 85 +
.../content_security_policy_injector.h | 61 +
.../content_security_policy_injector_impl.cc | 125 ++
.../content_security_policy_injector_impl.h | 66 +
.../adblock/content/browser/element_hider.h | 70 +
.../content/browser/element_hider_impl.cc | 323 ++++
.../content/browser/element_hider_impl.h | 55 +
.../content/browser/element_hider_info.cc | 37 +
.../content/browser/element_hider_info.h | 44 +
.../browser/frame_hierarchy_builder.cc | 117 ++
.../content/browser/frame_hierarchy_builder.h | 63 +
.../content/browser/frame_opener_info.cc | 37 +
.../content/browser/frame_opener_info.h | 46 +
.../browser/resource_classification_runner.h | 113 ++
.../resource_classification_runner_impl.cc | 451 ++++++
.../resource_classification_runner_impl.h | 156 ++
.../content/browser/session_stats_impl.cc | 86 +
.../content/browser/session_stats_impl.h | 71 +
.../subscription_service_factory_base.cc | 224 +++
.../subscription_service_factory_base.h | 60 +
components/adblock/core/BUILD.gn | 175 ++
.../activeping_telemetry_topic_provider.cc | 285 ++++
.../activeping_telemetry_topic_provider.h | 87 +
components/adblock/core/adblock_controller.h | 64 +
.../adblock/core/adblock_controller_impl.cc | 271 ++++
.../adblock/core/adblock_controller_impl.h | 95 ++
components/adblock/core/adblock_switches.cc | 26 +
components/adblock/core/adblock_switches.h | 29 +
.../adblock/core/adblock_telemetry_service.cc | 258 +++
.../adblock/core/adblock_telemetry_service.h | 120 ++
components/adblock/core/classifier/BUILD.gn | 76 +
.../core/classifier/resource_classifier.cc | 24 +
.../core/classifier/resource_classifier.h | 90 ++
.../classifier/resource_classifier_impl.cc | 404 +++++
.../classifier/resource_classifier_impl.h | 64 +
components/adblock/core/common/BUILD.gn | 110 ++
.../adblock/core/common/adblock_constants.cc | 164 ++
.../adblock/core/common/adblock_constants.h | 48 +
.../adblock/core/common/adblock_prefs.cc | 122 ++
.../adblock/core/common/adblock_prefs.h | 46 +
.../adblock/core/common/adblock_utils.cc | 171 ++
.../adblock/core/common/adblock_utils.h | 80 +
.../adblock/core/common/content_type.cc | 91 ++
components/adblock/core/common/content_type.h | 48 +
.../adblock/core/common/flatbuffer_data.cc | 94 ++
.../adblock/core/common/flatbuffer_data.h | 85 +
.../adblock/core/common/header_filter_data.h | 38 +
.../core/common/keyword_extractor_utils.cc | 30 +
.../core/common/keyword_extractor_utils.h | 31 +
.../core/common/regex_filter_pattern.cc | 34 +
.../core/common/regex_filter_pattern.h | 33 +
components/adblock/core/common/sitekey.h | 29 +
.../adblock/core/configuration/BUILD.gn | 59 +
.../configuration/filtering_configuration.h | 90 ++
.../filtering_configuration_prefs.cc | 33 +
.../filtering_configuration_prefs.h | 30 +
.../persistent_filtering_configuration.cc | 273 ++++
.../persistent_filtering_configuration.h | 86 +
components/adblock/core/converter/BUILD.gn | 83 +
.../adblock/core/converter/converter_main.cc | 115 ++
.../core/converter/flatbuffer_converter.cc | 134 ++
.../core/converter/flatbuffer_converter.h | 55 +
.../adblock/core/converter/parser/BUILD.gn | 66 +
.../core/converter/parser/content_filter.cc | 68 +
.../core/converter/parser/content_filter.h | 50 +
.../core/converter/parser/domain_option.cc | 114 ++
.../core/converter/parser/domain_option.h | 59 +
.../converter/parser/filter_classifier.cc | 39 +
.../core/converter/parser/filter_classifier.h | 46 +
.../adblock/core/converter/parser/metadata.cc | 145 ++
.../adblock/core/converter/parser/metadata.h | 64 +
.../core/converter/parser/snippet_filter.cc | 62 +
.../core/converter/parser/snippet_filter.h | 46 +
.../converter/parser/snippet_tokenizer.cc | 103 ++
.../core/converter/parser/snippet_tokenizer.h | 47 +
.../core/converter/parser/url_filter.cc | 218 +++
.../core/converter/parser/url_filter.h | 48 +
.../converter/parser/url_filter_options.cc | 263 +++
.../converter/parser/url_filter_options.h | 122 ++
.../core/converter/serializer/BUILD.gn | 50 +
.../serializer/filter_keyword_extractor.cc | 63 +
.../serializer/filter_keyword_extractor.h | 59 +
.../serializer/flatbuffer_serializer.cc | 394 +++++
.../serializer/flatbuffer_serializer.h | 129 ++
.../core/converter/serializer/serializer.h | 41 +
components/adblock/core/features.cc | 25 +
components/adblock/core/features.h | 31 +
.../core/schema/filter_list_schema.fbs | 165 ++
components/adblock/core/session_stats.h | 42 +
components/adblock/core/sitekey_storage.h | 53 +
.../adblock/core/sitekey_storage_impl.cc | 146 ++
.../adblock/core/sitekey_storage_impl.h | 59 +
components/adblock/core/subscription/BUILD.gn | 178 ++
.../core/subscription/conversion_executors.h | 50 +
.../core/subscription/domain_splitter.cc | 46 +
.../core/subscription/domain_splitter.h | 45 +
.../filtering_configuration_maintainer.h | 52 +
...filtering_configuration_maintainer_impl.cc | 489 ++++++
.../filtering_configuration_maintainer_impl.h | 119 ++
.../subscription/installed_subscription.cc | 42 +
.../subscription/installed_subscription.h | 137 ++
.../installed_subscription_impl.cc | 553 +++++++
.../installed_subscription_impl.h | 150 ++
.../ongoing_subscription_request.h | 50 +
.../ongoing_subscription_request_impl.cc | 190 +++
.../ongoing_subscription_request_impl.h | 74 +
.../core/subscription/pattern_matcher.cc | 265 +++
.../core/subscription/pattern_matcher.h | 33 +
.../preloaded_subscription_provider.h | 56 +
.../preloaded_subscription_provider_impl.cc | 121 ++
.../preloaded_subscription_provider_impl.h | 50 +
.../core/subscription/regex_matcher.cc | 162 ++
.../adblock/core/subscription/regex_matcher.h | 73 +
.../adblock/core/subscription/subscription.cc | 24 +
.../adblock/core/subscription/subscription.h | 78 +
.../subscription/subscription_collection.h | 98 ++
.../subscription_collection_impl.cc | 353 ++++
.../subscription_collection_impl.h | 97 ++
.../core/subscription/subscription_config.cc | 338 ++++
.../core/subscription/subscription_config.h | 120 ++
.../subscription/subscription_downloader.h | 66 +
.../subscription_downloader_impl.cc | 289 ++++
.../subscription_downloader_impl.h | 102 ++
.../subscription_persistent_metadata.h | 86 +
.../subscription_persistent_metadata_impl.cc | 170 ++
.../subscription_persistent_metadata_impl.h | 62 +
.../subscription_persistent_storage.h | 60 +
.../subscription_persistent_storage_impl.cc | 229 +++
.../subscription_persistent_storage_impl.h | 80 +
.../core/subscription/subscription_service.h | 87 +
.../subscription/subscription_service_impl.cc | 211 +++
.../subscription/subscription_service_impl.h | 97 ++
.../core/subscription/subscription_updater.h | 35 +
.../subscription/subscription_updater_impl.cc | 65 +
.../subscription/subscription_updater_impl.h | 52 +
.../subscription/subscription_validator.h | 59 +
.../subscription_validator_impl.cc | 145 ++
.../subscription_validator_impl.h | 53 +
.../subscription/url_keyword_extractor.cc | 67 +
.../core/subscription/url_keyword_extractor.h | 60 +
.../adblock/docs/ad-filtering/README.md | 18 +
.../ad-filtering/element-hiding-sequence.png | Bin 0 -> 177168 bytes
.../ad-filtering/element-hiding-sequence.txt | 32 +
.../docs/ad-filtering/element-hiding.md | 11 +
.../adblock/docs/ad-filtering/filter-lists.md | 42 +
.../request-filter-matching-sequence.png | Bin 0 -> 140660 bytes
.../request_filter_matching_sequence.txt | 28 +
.../docs/ad-filtering/resource-filtering.md | 28 +
.../response-filter-matching-sequence.png | Bin 0 -> 160751 bytes
.../response_filter_matching_sequence.txt | 30 +
.../adblock/docs/ad-filtering/snippets.md | 7 +
components/adblock/docs/adr/README.md | 3 +
.../docs/adr/consuming-full-filter-lists.md | 8 +
...ving-user-counting-to-dedicated-service.md | 5 +
.../adr/not-extending-subresource-filter.md | 13 +
...ring-filter-lists-in-flatbuffers-format.md | 17 +
.../adblock/docs/data-collection/README.md | 11 +
.../docs/data-collection/user-counting.md | 38 +
components/adblock/docs/design-overview.md | 32 +
components/adblock/docs/developer-notes.md | 117 ++
.../adblock/docs/initialization-sequence.png | Bin 0 -> 129976 bytes
.../adblock/docs/initialization-sequence.txt | 27 +
components/adblock/docs/integration-how-to.md | 216 +++
components/adblock/docs/settings/README.md | 46 +
.../docs/settings/user-setting-sequence.png | Bin 0 -> 61104 bytes
.../docs/settings/user-setting-sequence.txt | 14 +
components/adblock/features.gni | 47 +
components/resources/BUILD.gn | 5 +
components/resources/adblock_resources.grdp | 27 +
components/resources/adblocking/.gitignore | 1 +
components/resources/adblocking/BUILD.gn | 82 +
components/resources/adblocking/LICENSE | 14 +
components/resources/adblocking/anticv.txt.gz | Bin 0 -> 66744 bytes
.../resources/adblocking/easylist.txt.gz | Bin 0 -> 124964 bytes
components/resources/adblocking/elemhide.js | 43 +
.../adblocking/elemhide_for_selector.jst | 53 +
.../resources/adblocking/elemhideemu.jst | 1436 +++++++++++++++++
.../adblocking/exceptionrules.txt.gz | Bin 0 -> 846414 bytes
components/resources/adblocking/update.sh | 33 +
components/resources/components_resources.grd | 6 +
.../loader/navigation_url_loader_impl.cc | 6 +-
.../renderer_host/render_frame_host_impl.cc | 10 +
.../renderer_host/render_frame_host_impl.h | 8 +
content/public/browser/render_frame_host.h | 7 +
content/public/common/isolated_world_ids.h | 8 +
...web_request_proxying_url_loader_factory.cc | 5 +
net/url_request/redirect_info.h | 8 +
.../network/public/cpp/net_ipc_param_traits.h | 5 +
.../blink/public/mojom/frame/frame.mojom | 8 +
third_party/blink/public/web/web_document.h | 12 +
.../renderer/core/exported/web_document.cc | 52 +
.../core/frame/local_frame_mojo_handler.cc | 12 +
.../core/frame/local_frame_mojo_handler.h | 5 +
.../url_loader/mojo_url_loader_client.cc | 6 +-
tools/eyeo/generate_interdiffs.sh | 150 ++
tools/eyeo/generate_modules.sh | 209 +++
tools/eyeo/snippets_deps.py | 61 +
tools/gritsettings/resource_ids.spec | 8 +
219 files changed, 22058 insertions(+), 3 deletions(-)
create mode 100644 components/adblock/CHANGELOG.md
create mode 100644 components/adblock/LICENSE
create mode 100644 components/adblock/README.md
create mode 100644 components/adblock/content/BUILD.gn
create mode 100644 components/adblock/content/browser/BUILD.gn
create mode 100644 components/adblock/content/browser/adblock_controller_factory_base.cc
create mode 100644 components/adblock/content/browser/adblock_controller_factory_base.h
create mode 100644 components/adblock/content/browser/adblock_filter_match.h
create mode 100644 components/adblock/content/browser/adblock_telemetry_service_factory_base.cc
create mode 100644 components/adblock/content/browser/adblock_telemetry_service_factory_base.h
create mode 100644 components/adblock/content/browser/adblock_url_loader_factory.cc
create mode 100644 components/adblock/content/browser/adblock_url_loader_factory.h
create mode 100644 components/adblock/content/browser/adblock_url_loader_factory_for_test.cc
create mode 100644 components/adblock/content/browser/adblock_url_loader_factory_for_test.h
create mode 100644 components/adblock/content/browser/adblock_webcontents_observer.cc
create mode 100644 components/adblock/content/browser/adblock_webcontents_observer.h
create mode 100644 components/adblock/content/browser/content_security_policy_injector.h
create mode 100644 components/adblock/content/browser/content_security_policy_injector_impl.cc
create mode 100644 components/adblock/content/browser/content_security_policy_injector_impl.h
create mode 100644 components/adblock/content/browser/element_hider.h
create mode 100644 components/adblock/content/browser/element_hider_impl.cc
create mode 100644 components/adblock/content/browser/element_hider_impl.h
create mode 100644 components/adblock/content/browser/element_hider_info.cc
create mode 100644 components/adblock/content/browser/element_hider_info.h
create mode 100644 components/adblock/content/browser/frame_hierarchy_builder.cc
create mode 100644 components/adblock/content/browser/frame_hierarchy_builder.h
create mode 100644 components/adblock/content/browser/frame_opener_info.cc
create mode 100644 components/adblock/content/browser/frame_opener_info.h
create mode 100644 components/adblock/content/browser/resource_classification_runner.h
create mode 100644 components/adblock/content/browser/resource_classification_runner_impl.cc
create mode 100644 components/adblock/content/browser/resource_classification_runner_impl.h
create mode 100644 components/adblock/content/browser/session_stats_impl.cc
create mode 100644 components/adblock/content/browser/session_stats_impl.h
create mode 100644 components/adblock/content/browser/subscription_service_factory_base.cc
create mode 100644 components/adblock/content/browser/subscription_service_factory_base.h
create mode 100644 components/adblock/core/BUILD.gn
create mode 100644 components/adblock/core/activeping_telemetry_topic_provider.cc
create mode 100644 components/adblock/core/activeping_telemetry_topic_provider.h
create mode 100644 components/adblock/core/adblock_controller.h
create mode 100644 components/adblock/core/adblock_controller_impl.cc
create mode 100644 components/adblock/core/adblock_controller_impl.h
create mode 100644 components/adblock/core/adblock_switches.cc
create mode 100644 components/adblock/core/adblock_switches.h
create mode 100644 components/adblock/core/adblock_telemetry_service.cc
create mode 100644 components/adblock/core/adblock_telemetry_service.h
create mode 100644 components/adblock/core/classifier/BUILD.gn
create mode 100644 components/adblock/core/classifier/resource_classifier.cc
create mode 100644 components/adblock/core/classifier/resource_classifier.h
create mode 100644 components/adblock/core/classifier/resource_classifier_impl.cc
create mode 100644 components/adblock/core/classifier/resource_classifier_impl.h
create mode 100644 components/adblock/core/common/BUILD.gn
create mode 100644 components/adblock/core/common/adblock_constants.cc
create mode 100644 components/adblock/core/common/adblock_constants.h
create mode 100644 components/adblock/core/common/adblock_prefs.cc
create mode 100644 components/adblock/core/common/adblock_prefs.h
create mode 100644 components/adblock/core/common/adblock_utils.cc
create mode 100644 components/adblock/core/common/adblock_utils.h
create mode 100644 components/adblock/core/common/content_type.cc
create mode 100644 components/adblock/core/common/content_type.h
create mode 100644 components/adblock/core/common/flatbuffer_data.cc
create mode 100644 components/adblock/core/common/flatbuffer_data.h
create mode 100644 components/adblock/core/common/header_filter_data.h
create mode 100644 components/adblock/core/common/keyword_extractor_utils.cc
create mode 100644 components/adblock/core/common/keyword_extractor_utils.h
create mode 100644 components/adblock/core/common/regex_filter_pattern.cc
create mode 100644 components/adblock/core/common/regex_filter_pattern.h
create mode 100644 components/adblock/core/common/sitekey.h
create mode 100644 components/adblock/core/configuration/BUILD.gn
create mode 100644 components/adblock/core/configuration/filtering_configuration.h
create mode 100644 components/adblock/core/configuration/filtering_configuration_prefs.cc
create mode 100644 components/adblock/core/configuration/filtering_configuration_prefs.h
create mode 100644 components/adblock/core/configuration/persistent_filtering_configuration.cc
create mode 100644 components/adblock/core/configuration/persistent_filtering_configuration.h
create mode 100644 components/adblock/core/converter/BUILD.gn
create mode 100644 components/adblock/core/converter/converter_main.cc
create mode 100644 components/adblock/core/converter/flatbuffer_converter.cc
create mode 100644 components/adblock/core/converter/flatbuffer_converter.h
create mode 100644 components/adblock/core/converter/parser/BUILD.gn
create mode 100644 components/adblock/core/converter/parser/content_filter.cc
create mode 100644 components/adblock/core/converter/parser/content_filter.h
create mode 100644 components/adblock/core/converter/parser/domain_option.cc
create mode 100644 components/adblock/core/converter/parser/domain_option.h
create mode 100644 components/adblock/core/converter/parser/filter_classifier.cc
create mode 100644 components/adblock/core/converter/parser/filter_classifier.h
create mode 100644 components/adblock/core/converter/parser/metadata.cc
create mode 100644 components/adblock/core/converter/parser/metadata.h
create mode 100644 components/adblock/core/converter/parser/snippet_filter.cc
create mode 100644 components/adblock/core/converter/parser/snippet_filter.h
create mode 100644 components/adblock/core/converter/parser/snippet_tokenizer.cc
create mode 100644 components/adblock/core/converter/parser/snippet_tokenizer.h
create mode 100644 components/adblock/core/converter/parser/url_filter.cc
create mode 100644 components/adblock/core/converter/parser/url_filter.h
create mode 100644 components/adblock/core/converter/parser/url_filter_options.cc
create mode 100644 components/adblock/core/converter/parser/url_filter_options.h
create mode 100644 components/adblock/core/converter/serializer/BUILD.gn
create mode 100644 components/adblock/core/converter/serializer/filter_keyword_extractor.cc
create mode 100644 components/adblock/core/converter/serializer/filter_keyword_extractor.h
create mode 100644 components/adblock/core/converter/serializer/flatbuffer_serializer.cc
create mode 100644 components/adblock/core/converter/serializer/flatbuffer_serializer.h
create mode 100644 components/adblock/core/converter/serializer/serializer.h
create mode 100644 components/adblock/core/features.cc
create mode 100644 components/adblock/core/features.h
create mode 100644 components/adblock/core/schema/filter_list_schema.fbs
create mode 100644 components/adblock/core/session_stats.h
create mode 100644 components/adblock/core/sitekey_storage.h
create mode 100644 components/adblock/core/sitekey_storage_impl.cc
create mode 100644 components/adblock/core/sitekey_storage_impl.h
create mode 100644 components/adblock/core/subscription/BUILD.gn
create mode 100644 components/adblock/core/subscription/conversion_executors.h
create mode 100644 components/adblock/core/subscription/domain_splitter.cc
create mode 100644 components/adblock/core/subscription/domain_splitter.h
create mode 100644 components/adblock/core/subscription/filtering_configuration_maintainer.h
create mode 100644 components/adblock/core/subscription/filtering_configuration_maintainer_impl.cc
create mode 100644 components/adblock/core/subscription/filtering_configuration_maintainer_impl.h
create mode 100644 components/adblock/core/subscription/installed_subscription.cc
create mode 100644 components/adblock/core/subscription/installed_subscription.h
create mode 100644 components/adblock/core/subscription/installed_subscription_impl.cc
create mode 100644 components/adblock/core/subscription/installed_subscription_impl.h
create mode 100644 components/adblock/core/subscription/ongoing_subscription_request.h
create mode 100644 components/adblock/core/subscription/ongoing_subscription_request_impl.cc
create mode 100644 components/adblock/core/subscription/ongoing_subscription_request_impl.h
create mode 100644 components/adblock/core/subscription/pattern_matcher.cc
create mode 100644 components/adblock/core/subscription/pattern_matcher.h
create mode 100644 components/adblock/core/subscription/preloaded_subscription_provider.h
create mode 100644 components/adblock/core/subscription/preloaded_subscription_provider_impl.cc
create mode 100644 components/adblock/core/subscription/preloaded_subscription_provider_impl.h
create mode 100644 components/adblock/core/subscription/regex_matcher.cc
create mode 100644 components/adblock/core/subscription/regex_matcher.h
create mode 100644 components/adblock/core/subscription/subscription.cc
create mode 100644 components/adblock/core/subscription/subscription.h
create mode 100644 components/adblock/core/subscription/subscription_collection.h
create mode 100644 components/adblock/core/subscription/subscription_collection_impl.cc
create mode 100644 components/adblock/core/subscription/subscription_collection_impl.h
create mode 100644 components/adblock/core/subscription/subscription_config.cc
create mode 100644 components/adblock/core/subscription/subscription_config.h
create mode 100644 components/adblock/core/subscription/subscription_downloader.h
create mode 100644 components/adblock/core/subscription/subscription_downloader_impl.cc
create mode 100644 components/adblock/core/subscription/subscription_downloader_impl.h
create mode 100644 components/adblock/core/subscription/subscription_persistent_metadata.h
create mode 100644 components/adblock/core/subscription/subscription_persistent_metadata_impl.cc
create mode 100644 components/adblock/core/subscription/subscription_persistent_metadata_impl.h
create mode 100644 components/adblock/core/subscription/subscription_persistent_storage.h
create mode 100644 components/adblock/core/subscription/subscription_persistent_storage_impl.cc
create mode 100644 components/adblock/core/subscription/subscription_persistent_storage_impl.h
create mode 100644 components/adblock/core/subscription/subscription_service.h
create mode 100644 components/adblock/core/subscription/subscription_service_impl.cc
create mode 100644 components/adblock/core/subscription/subscription_service_impl.h
create mode 100644 components/adblock/core/subscription/subscription_updater.h
create mode 100644 components/adblock/core/subscription/subscription_updater_impl.cc
create mode 100644 components/adblock/core/subscription/subscription_updater_impl.h
create mode 100644 components/adblock/core/subscription/subscription_validator.h
create mode 100644 components/adblock/core/subscription/subscription_validator_impl.cc
create mode 100644 components/adblock/core/subscription/subscription_validator_impl.h
create mode 100644 components/adblock/core/subscription/url_keyword_extractor.cc
create mode 100644 components/adblock/core/subscription/url_keyword_extractor.h
create mode 100644 components/adblock/docs/ad-filtering/README.md
create mode 100644 components/adblock/docs/ad-filtering/element-hiding-sequence.png
create mode 100644 components/adblock/docs/ad-filtering/element-hiding-sequence.txt
create mode 100644 components/adblock/docs/ad-filtering/element-hiding.md
create mode 100644 components/adblock/docs/ad-filtering/filter-lists.md
create mode 100644 components/adblock/docs/ad-filtering/request-filter-matching-sequence.png
create mode 100644 components/adblock/docs/ad-filtering/request_filter_matching_sequence.txt
create mode 100644 components/adblock/docs/ad-filtering/resource-filtering.md
create mode 100644 components/adblock/docs/ad-filtering/response-filter-matching-sequence.png
create mode 100644 components/adblock/docs/ad-filtering/response_filter_matching_sequence.txt
create mode 100644 components/adblock/docs/ad-filtering/snippets.md
create mode 100644 components/adblock/docs/adr/README.md
create mode 100644 components/adblock/docs/adr/consuming-full-filter-lists.md
create mode 100644 components/adblock/docs/adr/moving-user-counting-to-dedicated-service.md
create mode 100644 components/adblock/docs/adr/not-extending-subresource-filter.md
create mode 100644 components/adblock/docs/adr/storing-filter-lists-in-flatbuffers-format.md
create mode 100644 components/adblock/docs/data-collection/README.md
create mode 100644 components/adblock/docs/data-collection/user-counting.md
create mode 100644 components/adblock/docs/design-overview.md
create mode 100644 components/adblock/docs/developer-notes.md
create mode 100644 components/adblock/docs/initialization-sequence.png
create mode 100644 components/adblock/docs/initialization-sequence.txt
create mode 100644 components/adblock/docs/integration-how-to.md
create mode 100644 components/adblock/docs/settings/README.md
create mode 100644 components/adblock/docs/settings/user-setting-sequence.png
create mode 100644 components/adblock/docs/settings/user-setting-sequence.txt
create mode 100644 components/adblock/features.gni
create mode 100644 components/resources/adblock_resources.grdp
create mode 100644 components/resources/adblocking/.gitignore
create mode 100644 components/resources/adblocking/BUILD.gn
create mode 100644 components/resources/adblocking/LICENSE
create mode 100644 components/resources/adblocking/anticv.txt.gz
create mode 100644 components/resources/adblocking/easylist.txt.gz
create mode 100644 components/resources/adblocking/elemhide.js
create mode 100644 components/resources/adblocking/elemhide_for_selector.jst
create mode 100644 components/resources/adblocking/elemhideemu.jst
create mode 100644 components/resources/adblocking/exceptionrules.txt.gz
create mode 100755 components/resources/adblocking/update.sh
create mode 100755 tools/eyeo/generate_interdiffs.sh
create mode 100755 tools/eyeo/generate_modules.sh
create mode 100644 tools/eyeo/snippets_deps.py
diff --git a/DEPS b/DEPS
--- a/DEPS
+++ b/DEPS
@@ -181,6 +181,10 @@ vars = {
# flag is set True.
'checkout_wpr_archives': False,
+ # Eyeo WPR archives are kept separately from Chromium WPRs due to
+ # access restrictions (authenticated Google Cloud Storage).
+ 'checkout_eyeo_wpr_archives': False,
+
# By default, do not check out WebKit for iOS, as it is not needed unless
# running against ToT WebKit rather than system WebKit. This can be overridden
# e.g. with custom_vars.
@@ -294,6 +298,8 @@ vars = {
'download_libaom_testdata': False,
'android_git': 'https://android.googlesource.com',
+ 'eyeo_distpartners_gitlab': 'https://gitlab.com/eyeo/distpartners',
+ 'eyeo_snippets_gitlab': 'https://gitlab.com/eyeo/anti-cv/snippets.git',
'aomedia_git': 'https://aomedia.googlesource.com',
'boringssl_git': 'https://boringssl.googlesource.com',
'chrome_git': 'https://chrome-internal.googlesource.com',
@@ -505,6 +511,11 @@ vars = {
# and whatever else without interference from each other.
'betocore_revision': '8bd72cfb219344308ee857bcbe65a27fe91acfe8',
+ # Three lines of non-changing comments so that
+ # the commit queue can handle CLs rolling feed
+ # and whatever else without interference from each other.
+ 'eyeo_snippets_revision': 'v0.8.1',
+
# If you change this, also update the libc++ revision in
# //buildtools/deps_revisions.gni.
'libcxx_revision': 'e3b94d0e5b86883fd77696bf10dc33ba250ba99b',
@@ -835,6 +846,10 @@ deps = {
'condition': 'checkout_android and checkout_src_internal',
},
+ 'src/components/resources/adblocking/snippets': {
+ 'url': Var('eyeo_snippets_gitlab') + '@' + Var('eyeo_snippets_revision'),
+ },
+
'src/docs/website': {
'url': Var('chromium_git') + '/website.git' + '@' + '192b4c1fca9c092343459067d75ba65fbc6ea856',
},
@@ -960,6 +975,13 @@ deps = {
'dep_type': 'cipd',
},
+ 'src/tools/perf/eyeo_data': {
+ 'condition':
+ 'checkout_eyeo_wpr_archives',
+ 'url':
+ Var('eyeo_distpartners_gitlab') + '/web-page-recordings.git@69fd10f2076334d10b2dd938ae84f8cc7c0c9018',
+ },
+
'src/third_party/android_toolchain/ndk': {
'packages': [
{
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -25,3 +25,18 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This file is part of eyeo Chromium SDK,
+// Copyright (C) 2006-present eyeo GmbH
+//
+// eyeo Chromium SDK is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 3 as
+// published by the Free Software Foundation.
+//
+// eyeo Chromium SDK is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -19,3 +19,15 @@ Android WebView, Ash). Even if these products have multiple executables, the
code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.
+
+
+## Eyeo Chromium SDK
+
+Eyeo Chromium SDK is a fork of the Chromium project that
+integrates ad-filtering capabilities. A big part of the functionality is
+implemented inside a component, to simplify the integration with other
+modifications to the browser.
+
+The [component folder](components/adblock) contains most of the source code,
+as well as the changelog, license and technical documentation about
+architecture and integration steps.
diff --git a/base/trace_event/builtin_categories.h b/base/trace_event/builtin_categories.h
--- a/base/trace_event/builtin_categories.h
+++ b/base/trace_event/builtin_categories.h
@@ -1,6 +1,10 @@
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+//
+// This source code is a part of eyeo Chromium SDK.
+// Use of this source code is governed by the GPLv3 that can be found in the
+// components/adblock/LICENSE file.
#ifndef BASE_TRACE_EVENT_BUILTIN_CATEGORIES_H_
#define BASE_TRACE_EVENT_BUILTIN_CATEGORIES_H_
@@ -87,6 +91,7 @@
X("exo") \
X("extensions") \
X("explore_sites") \
+ X("eyeo") \
X("FileSystem") \
X("file_system_provider") \
X("fledge") \
diff --git a/build/install-build-deps.py b/build/install-build-deps.py
--- a/build/install-build-deps.py
+++ b/build/install-build-deps.py
@@ -8,6 +8,14 @@
# including items requiring sudo privileges.
# See https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md
+# eyeo Chromium SDK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+
import argparse
import functools
import os
@@ -554,7 +562,7 @@ def backwards_compatible_list(options):
"msttcorefonts",
"python-dev",
"python-setuptools",
- "snapcraft",
+ #"snapcraft",
"ttf-dejavu-core",
"ttf-indic-fonts",
"ttf-kochi-gothic",
diff --git a/components/BUILD.gn b/components/BUILD.gn
--- a/components/BUILD.gn
+++ b/components/BUILD.gn
@@ -1,6 +1,9 @@
# Copyright 2014 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+#
+# This source code is a part of eyeo Chromium SDK.
+# Use of this source code is governed by the GPLv3 that can be found in the components/adblock/LICENSE file.
import("//base/debug/debug.gni")
import("//build/config/chrome_build.gni")
@@ -178,6 +181,14 @@ test("components_unittests") {
deps = [
"//base",
+ "//components/adblock/core:unit_tests",
+ "//components/adblock/core/classifier:unit_tests",
+ "//components/adblock/core/common:unit_tests",
+ "//components/adblock/core/configuration:unit_tests",
+ "//components/adblock/core/converter/parser:unit_tests",
+ "//components/adblock/core/converter/serializer:unit_tests",
+ "//components/adblock/core/converter:unit_tests",
+ "//components/adblock/core/subscription:unit_tests",
"//components/affiliations/core/browser:unit_tests",
"//components/aggregation_service:unit_tests",
"//components/apdu:unit_tests",
@@ -413,6 +424,7 @@ test("components_unittests") {
if (use_blink) {
deps += [
+ "//components/adblock/content/browser:unit_tests",
"//components/autofill/content/browser:unit_tests",
"//components/autofill/content/renderer:unit_tests",
"//components/autofill/core/common/mojom:unit_tests",
diff --git a/components/adblock/CHANGELOG.md b/components/adblock/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/components/adblock/CHANGELOG.md
@@ -0,0 +1,635 @@
+# Release Notes
+
+## eyeo Browser Ad Filtering Solution 118.0
+* Updated to Chromium 118.0.5993.48
+* Allow removing existing FilteringConfigurations via Java API (DPD-2090)
+* Extracting some common code shared between the WebView and Chrome integrations (DPD-2159)
+* Fixed xpath3 snippets for WebView integrations (DPD-2162)
+* Update snippets repository URL to reflect repo move (DPD-2149)
+* Removing references to C++ AdblockController class (DPD-2153). Use the FilteringConfiguration in C++ now.
+* AdblockController still remains in Java. Internally, it redirects methods to its FilteringConfiguration.
+* Eyeometry TopicProviders can now provide debug information asynchronously (DPD-2175). This debug info is shown on chrome://adblock-internals
+* Hopeful fix for a non-reproducible crash in IsActiveOnDomain (DPD-2101)
+* The following locales now install global-filters+easylist.txt by default: th, el, sl, hr, sr, bs (DPD-2180)
+* Uzbek and Kazakh locales now install ruadlist+easylist.txt by default (DPD-2228)
+* Simplify localization of filter list titles in Android UI (DPD-2227)
+
+Known issues:
+* monochrome_public_bundle target doesn't link. This is prioritized for fixing in 119.
+
+## eyeo Chromium SDK 117.0
+* Updated to Chromium 117.0.5938.44
+* Added support for hide-if-matches-xpath3 snippet (DPD-2065)
+* Added Japanese and Turkish filter lists (DPD-2096)
+* Fixed dump from dangling pointer detector in adblock::ElementHider (DPD-2122)
+* Revert changes introduced with DPD-2101 that caused a crash in chrome://flags
+
+## eyeo Chromium SDK 116.0
+* Updated to Chromium 116.0.5845.78
+* Added webview support (DPD-2036)
+* Added gn gen argument to disable eyeo filtering for first run (DPD-2063)
+* Added chrome://adblock-internals status page (DPD-1708)
+* Removed deprecated APIs from AdblockController (DPD-2060)
+* Improved blocking of popups (DPD-1977)
+* Fix bug that injects CSS/JS multiple times for the same document (DPD-1773)
+
+## eyeo Chromium SDK 115.0
+* Updated to Chromium 115.0.5790.98
+* Fixed bug with not allowlisting frames with 'about:blank...' urls (DPD-1946)
+* Fixed bug with logging telemetry authentication token in release builds (DPD-1951)
+* Fixed several problems with rewrite filters and refactored code (DPD-1657)
+* Fixed bug with handling domain matching filters with empty url pattern (DPD-1978)
+* Updated extensions JavaScript API and Java API by adding FilteringConfiguration name to blocked/allowed notifications (DPD-1909)
+* Updated snippets library version from v0.6.1 to v0.7.0 (DPD-1974)
+
+## eyeo Chromium SDK 114.0
+* Updated to Chromium 114.0.5735.53
+* Fixed bug of gn gen build settings for "eyeo_application_name" and "eyeo_application_version" being ignored (DPD-1937)
+* Fixed bug of not removing flatbuffer file after uninstalling subscription (DPD-1911)
+* Increased Telemetry ping interval from 8 hrs to 12 hrs
+* Removed ComposeFilterSuggestions on Android (DPD-699)
+* Refactored and simplified SnippetTokenizer (DPD-939)
+
+## eyeo Chromium SDK 113.0
+* Updated to Chromium 113.0.5672.76
+* Added new extension API which exposes filtering configurations, and which also supports promises (DPD-1719)
+ See chrome/common/extensions/api/eyeo_filtering_private.idl
+* Reduce JavaScript console output for element hiding emulation (DPD-1750)
+* Added TypeScript definitions for eyeo extension API (DPD-1870)
+* Restricted too generic filters that can affect many sites (DPD-1867)
+* Fix for filters containing | character in the middle of a string (DPD-1755)
+* Support for 'webbundle' filter content type (DPD-1876)
+* Ignore domain duplicates in filters (DPD-1795)
+* More events for extension API notifying about changes in allowed domains, custom filters, filters
+ lists and enable state (DPD-1871)
+* Filter lists downloads check network state and run only when connection is available (DPD-1762)
+* Relaxed base64 decoding for sitekey (DPD-1912)
+
+## eyeo Chromium SDK 112.0
+* Updated to Chromium 112.0.5615.37
+* Subscription for adblock_private events available in incognito mode (DPD-1868)
+* Restored deprecated subscriptions API removed in previous version. This methods will be kept until version 115 (DPD-1839, DPD-1771)
+* AdblockController::Observer is deprecated. Will be removed in version 115 (DPD-1754)
+* Java Subscription class now has method to report version (DPD-1794)
+* Regexp filters should not be converted to lowercase internally (DPD-1806)
+* Filter lists in repo now compressed (DPD-1774)
+
+## eyeo Chromium SDK 111.0
+* Updated to Chromium 111.0.5563.38
+* Updated snippets library from v0.5.5 to v0.6.1
+* Removed deprecated subscriptions API (DPD-1771)
+* Refactored filter lists converter (DPD-1355)
+* Rewritten pattern matching logic to improve url filtering performance (DPD-1745)
+* Added collecting frame hierarchy for popup filtering (DPD-1749)
+* Added Java API for multiple FilteringConfigurations (DPD-1661)
+* Fixed bug when AdblockController is created too late to register its FilteringConfiguration (DPD-1752)
+* Fixed sending redundant HEAD requests for Acceptable Ads when multiple FilteringConfigurations are enabled (DPD-1763)
+* Fixed problem of not removing downloaded filter list file from temp folder (DPD-1748)
+
+## eyeo Chromium SDK 110.0
+* Updated to Chromium 110.0.5481.50
+* Support multiple FilteringConfigurations (DPD-1568)
+* Fixed potential crash in SubscriptionValidator (DPD-1709)
+* Covered AdblockURLLoaderFactory with UT (DPD-1634)
+* Fixed desktop setting page (DPD-1663)
+* Added CRLF support in filter lists converter
+* Added support for multiple CSP filters per resource (DPD-1145)
+* Simplified resource type detection (DPD-1437)
+
+## eyeo Chromium SDK 109.0
+* Updated to Chromium 109.0.5414.86
+* Removed deprecated Allowed Connection Type API (DPD-1582)
+* Deprecated the distinction between installing Built-In vs Custom subscriptions (DPD-1441)
+ - Added API functions to install/uninstall/get subscriptions regardless of their provenance
+ - Deprecated API functions that select/unselect/get "built-in" subscriptions
+ - Deprecated API functions that add/remove/get "custom" subscriptions
+ - The deprecated API functions will disappear in version 111
+ - Identifying recommended filter lists is still possible via separate API functions
+* Fixed parsing URL filters with # symbol (DPD-1632)
+* Removed unneeded AdblockMojoInterface (DPD-1295)
+* Replaced some usage of render frame ID + render process ID with GlobalRenderFrameHostId (DPD-1130)
+* Fixed build issues on Windows
+* Initial work for enabling independent Filtering Configurations (DPD-1567)
+ - Filtering Configurations will allow supporting independently set up filter engine users, e.g.
+ an "ad-filtering" setting alongside a "privacy boosting" setting or "parental control" setting.
+ - Each may have independent filter lists, custom filters, allowed domains etc.
+ - The "ad-filtering" configuration remains the only possible configuration currently, maintaining
+ all existing semantics and APIs
+ - Support for multiple configurations is planned for a future release
+* Fixed invalid behavior when removing previously added custom filters and allowed domains
+
+## eyeo Chromium SDK 108.0
+* Updated to Chromium 108.0.5359.28
+* Allow Telemetry TopicProviders to collect payload asynchronously (DPD-1507)
+* Download filter list on any connection type (DPD-1418)
+ - Filter lists are now being compressed server-side and are very small (~400 kB)
+ - It's no longer advantageous to download them only on Wi-Fi
+ - APIs related to Allowed Connection Type are deprecated and non-functional
+ - Those APIs will be removed in version 109
+* Ensure Telemetry pings trigger correctly after the computer wakes up from sleep (DPD-1559)
+* Ensure filter list download requests attach Accept-Language header (DPD-1405)
+* Fixed a use-after-free when element hiding was applied on a closed tab (DPD-1600)
+* Fixed element hiding to apply within iframes served from Web Bundles (DPD-1510)
+* Improved page load times significantly by optimizing filter matching regular expressions (DPD-586)
+
+## eyeo Chromium SDK 107.0
+* Updated to Chromium 107.0.5304.54
+* Packaging a non-obfuscated version of snippets library for debug builds (DPD-1448)
+* Add GetCustomFilters call to web extensions API (DPD-849)
+* Add eyeo_intercept_debug_url build flag to hide internal testing feature (DPD-1407, DPD-1532)
+* Allow all requests from web extensions (DPD-1505)
+* Fixed a rare crash when tab is closed before websocket classification completes (DPD-1548)
+* Fixed a rare crash when network service disconnects during resource classification (DPD-1496)
+* Fixed Telemetry pings being sent too rarely when PC is suspended (DPD-1559)
+* Removed deprecated abp telemetry gn gen arguments
+
+Known issues:
+* Disabled AdblockMojoInterfaceImpl related unit tests. Will be removed in future releases
+
+## eyeo Chromium SDK 106.0
+* Updated to Chromium 106.0.5249.38
+* Updated snippets library from v0.5.1 to v0.5.5
+* Fixed faulty handling URL redirection by creating AdblockURLLoaderFactory as the last proxy (DPD-1492). Backported into 105.1
+* Fixed SiteKey validation for redirected urls (DPD-1452)
+* Improved logging related to subscription update (DPD-1359)
+* Simplified subscription first run update (DPD-1389)
+
+Known issues:
+* The following browser tests are failing and will be fixed in future releases:
+ - OutOfProcessPPAPITest.URLLoader3
+ - PasswordDialogViewTest.PopupAccountChooserWithMultipleCredentialsReturnEmpty
+ - CredentialManagerAvatarTest.AvatarFetchIsolatedPerOrigin
+
+## eyeo Chromium SDK 105.0
+* Updated to Chromium 105.0.5195.68
+* Rebranded to eyeo Chromium SDK (DPD-1322)
+* Moved snippet update to gclient sync (DPD-1283)
+* Updated extensions API:
+ - Added `onPopupAllowed` event which is fired when a popup is allowlisted
+ - Added `onPopupBlocked` event which is fired when a popup is blocked
+ - Added `onPageAllowed` event which is fired when a whole domain is allowlisted
+ - Fixed typo in `OnSubscriptionUpdated` which is now `onSubscriptionUpdated`
+* Updated Java AdBlockedObserver API:
+ - Removed `onAdMatched` and instead added `onAdAllowed` and `onAdBlocked`
+ - Removed `onPopupMatched` and instead added `onPopupAllowed` and `onPopupBlocked`
+ - Added `onPageAllowed` callback which is fired when a whole domain is allowlisted
+
+## Chromium 104.0 + ABP 2.1 (ABP Chromium 104 v1)
+* Updated to Chromium 104.0.5112.55
+* Added support for :not in element hiding (DPD-1106)
+* Fixed bug which caused that language specific list was not enabled by default in 1st run scenario (DPD-1302)
+* Moved waiting for SubscriptionService to be initialized from ResourceClassifier to mojo (DPD-1303)
+* Classification logic split into chrome-specific and chrome-agnostic part (DPD-1304)
+* Moved checking ABP enabled state to AdblockContentBrowserClient (DPD-1334)
+* Disabled flaky RecordNotificationDisplayedAndInteraction test
+
+## Chromium 103.0 + ABP 2.1 (ABP Chromium 103 v1)
+* Updated to Chromium 103.0.5060.53
+* Added rewrite filter type support (DPD-810)
+* Exposed filter list version, status and installation time and updated documentation in adblock_private.idl (DPD-870)
+* Fixed parsing regex filter as a filter option (DPD-1209)
+* Fixed parsing wildcard filters
+* Updated sequence diagrams in documentation (components/adblock/docs)
+* Fixed issues in AdblockController Java code which could lead to crashes when Profile is not yet initialized (DPD-1288)
+* Moved CSP injection and ad blocking into AdblockURLLoaderFactory and removed AdblockUrlLoaderThrottle (DPD-1238, DPD-1263)
+* Splitted ABP core codebase in namespaces (DPD-1258)
+* Several minor code cleanups and refactorings
+* Removed hardcoding fieldtrial_testing_enabled=false flag in BUILD.gn
+
+## Chromium 102.0 + ABP 2.1 (ABP Chromium 102 v1)
+* Updated to Chromium 102.0.5005.50
+* Added header filter support (DPD-1103)
+* Added Java API to get subscription version
+* Improved matching performance for long URLs (DPD-419)
+* Added support for `! Redirect` metadata in subscription header (DPD-965)
+* Fixed parsing of `! Expires` metadata in subscription header (DPD-965)
+
+## Chromium 101.0 + ABP 2.0 (ABP Chromium 101 v1)
+* Updated to Chromium 101.0.4951.41
+* Element hiding CSS sanitized before injection (DPD-1010)
+* Ping filter support (DPD-1102)
+* Allow defining default and privileged subscriptions via configuration file (DPD-1161, DPD-1205)
+* Restructure adblock component to fit Chromium Layered Components design (DPD-1165)
+* Updated in-repo documentation (DPD-1176)
+* Allow disabling adblocking via feature flag for testing (DPD-1172)
+* Add java API to get subscription version
+
+## Chromium 100.0 + ABP 2.0 (ABP Chromium 100 v1)
+* Updated to Chromium 100.0.4896.46
+* Replaced libadblockplus with a native, flatbuffer-based implementation of ad-filtering logic
+* Improved memory consumption considerably
+* Improved startup time considerably
+* Removed V8 dependency from browser process
+* Enabled preloaded filter lists for out-of-the-box ad filtering
+* Counting active users by sending periodic Telemetry pings with no user-identifiable data
+* Optimized injecting Snippets and Element Hiding Emulation JS
+* Added support for CSP filters
+* Updated in-repo documentation (components/adblock/docs)
+
+Known issues:
+* The following browser tests are failing and will be fixed in future releases:
+ - ClientHintsBrowserTest.DelegateAndMerge_HttpEquiv
+ - ClientHintsBrowserTest.DelegateAndMerge_MetaName
+ - ClientHintsBrowserTest.DelegateToBar_HttpEquiv
+ - ClientHintsBrowserTest.DelegateToBar_MetaName
+ - ClientHintsBrowserTest.DelegateToFoo_HttpEquiv
+ - ClientHintsBrowserTest.DelegateToFoo_MetaName
+ - ExtensionWebRequestApiTest.WebRequestBlocking
+
+## Chromium 99.0 + ABP 1.3 (ABP Chromium 99 v1)
+* Updated to Chromium 99.0.4844.35
+* Updated libadblockplus to version 13.1-c0.5.1
+* Enabled command line preferences for desktop builds (DPD-1088)
+* Added statistics API to expose runtime counters (DPC-610)
+* Extended JS API to receive notification when a subscription gets updated (DPC-694)
+
+Known issues:
+* Due to the V8 dependency, the following browser tests are still failing, and will be fixed in future releases:
+ - PageTextObserverSingleProcessBrowserTest.SameProcessAMPSubframe
+ - PageTextObserverSingleProcessBrowserTest.SameProcessIframe
+ - SingleProcessBrowserTest.Test
+
+## Chromium 98.0 + ABP 1.2 (ABP Chromium 98 v1)
+* Updated libadblockplus to version 12.1-c0.3.0
+
+[Full list of `libadblockplus` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus/-/compare/12.0-c0.3.0...12.1-c0.3.0)
+
+## Chromium 97.0 + ABP 1.1 (ABP Chromium 97 v1)
+* Updated to Chromium 97.0.4692.45
+* More fixes to make non-ABP test pass (DPD-866)
+* Moved ABP Java code to `components/adblock` to allow other components to declare dependencies from this code (DPD-837)
+ Package `org.chromium.chrome.browser.adblock` is changed to `org.chromium.components.adblock`
+* `.ci-scripts/v8.patch` introduced in 94v1 is no longer required (DPD-794)
+
+## Chromium 95.0 + ABP 1.0 (ABP Chromium 95 v1)
+* Updated to Chromium 95.0.4638.50
+* Removed unused AdblockTraceCall class and calls
+* Fixed majority of non-ABP unit tests and browser tests (DPC-568)
+
+Known issues:
+* The following browser tests are still failing, and will be fixed later:
+ - PersistentBackground/PermissionsApiTestWithContextType.OptionalPermissionsAutoConfirm/0
+ - PersistentBackground/PermissionsApiTestWithContextType.OptionalPermissionsGranted/0
+ - PageTextObserverSingleProcessBrowserTest.SameProcessAMPSubframe
+ - PageTextObserverSingleProcessBrowserTest.SameProcessIframe
+ - SingleProcessBrowserTest.Test
+
+## Chromium 94.0 + ABP 0.24 (ABP Chromium 94 v1)
+* Updated to Chromium 94.0.4606.50
+* Solved assertion issue detected in Chromium 92
+* Solved DCHECK issue detected in Chromium 93
+
+Known issues:
+* Debug builds sometimes hit DCHECK: https://bugs.chromium.org/p/chromium/issues/detail?id=1206694
+* Build is unsuccessful in certain environments due to warnings in V8: https://bugs.chromium.org/p/chromium/issues/detail?id=1251165
+
+ This issue can be circumvented by:
+
+ `cd v8 ; git reset --hard ; git apply ../.ci-scripts/v8.patch ; cd ..`
+
+## Chromium 93.0 + ABP 0.23 (ABP Chromium 93 v1)
+* Updated to Chromium 93.0.4577.62
+* Moved ABP-related translations to chrome/android/adblock to separate them from Chromium strings and avoid merging conflicts (DPD-696)
+* Fixed DCHECK for wrong ConversionMeasurementAPIAlternativeUsage feature configuration in upstream (DPD-749)
+* Fixed issue that blocked download PDF popup (DPD-742)
+* Added snippet filters support (DPD-648)
+* Added licensing header on chromium modified files (DPD-50)
+
+Known issues:
+* Debug builds running in specific x86 emulator hit DCHECK: https://bugs.chromium.org/p/chromium/issues/detail?id=1245583
+
+[Full list of `libadblockplus` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus/-/compare/10.0-c0.3.0...12.0-c0.3.0)
+
+## Chromium 92.0 + ABP 0.22 (ABP Chromium 92 v1)
+* Updated to Chromium 92.0.4515.105
+* Fixed crash when browser closed before FilterEngine has loaded (DPD-578)
+* Fixed crash when tab changed right after startup, before FilterEngine has loaded (DPD-367)
+* Fixed downloading the exceptions list on first run despite acceptable ads being off (DPD-53)
+* Replaced AdblockBridge with finer-grained classes: AdblockRequestClassifier and AdblockSitekeyStorage (DPD-611)
+* Added Extension API for testing and automation tasks on desktop (DPD-636)
+* Decrease priority for some adblocking-related background tasks for better startup experience (DPD-579)
+* Fixed redundant HEAD requests for disabled subscriptions (DPD-590)
+* Added class-level comments describing purpose and basic functionality description (DPD-400)
+* Added sequence diagrams for various ABP lifecycle scenarious to the docs_abp folder
+* Allow to override ABP application name & version from gn
+
+Known issues:
+* Debug builds running in x86 emulator crash due to spurious assertion in V8: https://bugs.chromium.org/p/chromium/issues/detail?id=1220335#c5
+
+ The assertion can be quenched by:
+
+ `cd v8 ; git reset --hard ; git apply ../.ci-scripts/v8.patch ; cd ..`
+
+[Full list of `libadblockplus` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus/-/compare/9.0-c0.3.0...10.0-c0.3.0)
+
+## Chromium 91.0 + ABP 0.21 (ABP Chromium 91 v1)
+* Updated to Chromium 91.0.4472.77
+* Moved ad-blocking logic from the network service to the browser and renderer(s) (DPD-368)
+* Moved all filter engine operations from AdblockController to AdblockBridge (DPD-284)
+* Added caching of JS and CSS generated for element hiding and element hiding emu purposes (DPD-7)
+* Updated libadblockplus to version 9.0-c0.3.0
+
+[Full list of `libadblockplus` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus/-/compare/8.1-c0.3.0...9.0-c0.3.0)
+
+## Chromium 90.0 + ABP 0.20 (ABP Chromium 90 v1)
+* Updated to Chromium 90.0.4430.66
+* Fixed a crash due to LegacyPrefsMigration sometimes starting without Profile (DPD-301)
+* Moved blocking/allowing WebSocket connections to ContentBrowserClient::CreateWebSocket (DPD-86)
+* Refactored AdblockBridgeImpl SendAdAllowed and SendAdBlocked into single method SendAdMatched (DPD-279)
+* Updated adblockpluscore to version 0.3.0
+* Updated libadblockplus to version 8.1-c0.3.0
+
+[Full list of `libadblockplus` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus/-/compare/8.0-c0.2.2...8.1-c0.3.0)
+
+## Chromium 89.0 + ABP 0.19 (ABP Chromium 89 v1)
+* Updated to Chromium 89.0.4389.72
+* Replaced deprecated base::ListValue with std::vector<base::Value> (DPD-26)
+* Created removeCustomFilter() method in AdblockController (DPD-58)
+* Removed ABP Network delegate (DPD-83)
+* Removed Android dependency from `components/adblock` (DPD-128)
+* Fixed Android Tests failing for builds with preloaded subscriptions (DPD-161)
+
+Known issues:
+* Some Android Tests are still failing for builds with preloaded subscriptions
+
+## Chromium 88.0 + ABP 0.18 (ABP Chromium 88 v1)
+* Updated to Chromium 88.0.4324.93
+* Fixed user counting when Acceptable Ads are disabled (DP-2118)
+* Fixed allowlisting in detached iframes (DP-2128)
+* Moved the bulk of the implementation to components/adblock (DP-1445)
+* Added dark-theme icons in Settings (DP-2054)
+* Reduced coupling between AdblockBridge and AdblockController (DP-2072)
+* Fixed potential random crashes in V8 (DP-2074)
+* Updated adblockpluscore to version 0.2.2
+* Updated libadblockplus to version 8.0-c0.2.2
+
+[Full list of `libadblockplus` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus/-/compare/3.1-c0.2.1...8.0-c0.2.2)
+
+## Chromium 87.0 + ABP 0.17 (ABP Chromium 87 v1)
+* Updated to Chromium 87.0.4280.66 (DP-1677)
+
+## Chromium 86.0 + ABP 0.17 (ABP Chromium 86 v2)
+* Allowlisting improvements:
+ - Generated allowlisted domain rule limited to the specific domain only (DP-1533)
+ - Adjusted allowlisting logic with Web Extension (DP-449)
+ - Fixed frame hierarchy not including browser-initiated loads (DP-1764)
+* AdblockController improvements:
+ - Added APIs allowing to add a custom filter and check if a filter matches (DP-1577)
+ - Made subscriptions-related APIs return `Subscription` object and aligned style with Java coding style (DP-1593, DP-1663)
+* Updated UI strings with translations (DP-1456, DP-1868, DP-1863)
+* [libadblockplus](https://gitlab.com/eyeo/adblockplus/libadblockplus) updated to version 3.1-c0.2.1 (containing adblockplus core 0.2.1 equivalent to Web Extension version 3.10)
+ - Added Filter Engine enabled/disabled state, for cleaner prevention of subscription updates on startup (DP-1723)
+ - Aligning with Web Extension regarding blocking/allowing calls (DP-449)
+ - Made `Filter` and `Subscription` mockable via refactoring (DP-1490)
+ - Updated punycode.js to 2.1.0 (DP-1649)
+
+[Full list of `libadblockplus` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus/-/compare/35983c194d19afdf56847ee011c47df7b0fd7ff0...3b6d3934f1d85a09b9f33d374f56885e033950ca)
+
+Known issues:
+* Debug builds may crash due to failed assertions in vanilla Chromium source code; these crashes do not affect release builds (crbug.com/1129004, crbug.com/1041225)
+
+## Chromium 86.0 + ABP 0.16 (ABP Chromium 86 v1)
+* Updated to Chromium 86.0.4240.75 (DP-1669)
+
+Known issues:
+* Debug builds may crash due to failed assertions in vanilla Chromium source code; these crashes do not affect release builds (crbug.com/1129004, crbug.com/1041225)
+
+## Chromium 85.0 + ABP 0.16 (ABP Chromium 85 v2)
+* Introduced new architecture:
+ - Removed dependency on libadblockplus-android
+ - Removed the need for patches in v8/ and third_party/icu/
+ - Removed dependency on Android Support Library
+ - More responsive UI, especially on application startup
+ - Automatic migration of user settings from previous versions
+ - More how-to guides, including Migration FAQ
+ - Code better aligned with Chromium conventions
+ - Reduced the number of required changes in BUILD.gn files
+* Support for user-defined element blocking rules via core API (DP-1412)
+* Support for pre-loaded filter lists (DP-1430)
+* Filter lists will no longer be downloaded if ad-blocking is disabled (DP-1725)
+* [libadblockplus](https://gitlab.com/eyeo/adblockplus/libadblockplus) was updated
+
+[Full list of `libadblockplus` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus/-/compare/92c258681107db81c414083db7f64710642c7fec...35983c194d19afdf56847ee011c47df7b0fd7ff0)
+
+## Chromium 85.0 + ABP 0.15 (ABP Chromium 85 v1)
+* Updated to Chromium 85.0.4183.81 (DP-1471)
+* Reduced the verbosity of log messages containing debug information
+
+## Chromium 84.0 + ABP 0.15 (ABP Chromium 84 v1)
+* Updated to Chromium 84.0.4147.89 (DP-1334)
+* Switched to special version of [libadblockplus-android](https://gitlab.com/eyeo/adblockplus/libadblockplus-android) migrated to AndroidX, dependency points to branch `release-3.24-androidx-migrated`
+
+## Chromium 83.0 + ABP 0.15 (ABP Chromium 83 v2)
+* Upgraded ABP Core to version 3.9.1 (DP-1250, DP-1371)
+* [libadblockplus-android](https://gitlab.com/eyeo/adblockplus/libadblockplus-android) was updated
+* [libadblockplus](https://gitlab.com/eyeo/adblockplus/libadblockplus) was updated
+* Fixed a bug causing some ads whitelisted by sitekey filters to be blocked on browser restart (DP-1268)
+* Reduced the number of ANRs (freezes) significantly due to moving more usages of the filter engine out of the UI thread (DP-1029)
+* Simplified code in order to make future Chromium updates easier (DP-871, DP-1266, DP-1189, DP-1323)
+* Fixed an ABP Core regression: Extended anchor does not matching a repeating pattern (DP-1208)
+
+[Full list of `libadblockplus-android` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus-android/compare/ffb27eeb2c61e3f951264485e435d03c0be5cd82...9f5579efbc774325c0b71978b775f96bf9fe64b1)
+
+[Full list of `libadblockplus` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus/compare/9436c424909ef9df9393ac48f0bae45c2c1dfa28...92c258681107db81c414083db7f64710642c7fec)
+
+## Chromium 83.0 + ABP 0.14 (ABP Chromium 83 v1)
+* Updated to Chromium 83.0.4103.96 (DP-1193)
+* Made ABP Settings UI more complying to other parts of chromium's settings UI which also mitigated chromium switching from the android support library to androidx (DP-1187)
+
+## Chromium 81.0 + ABP 0.14 (ABP Chromium 81 v2)
+* Upgraded ABP Core to version 3.6 (DP-1107)
+* Made ABP integration ready for Network Service running out of process (DP-1017)
+* Made the ABP popup blocker run first and disabled the builtin 'popups blocked' dialog (DP-1149)
+* Moved waiting for the filter engine out of the UI thread (DP-1249)
+* Fixed a bug causing the cache not being kept when changing subscriptions (DP-1061)
+* Fixed a bug leaving ad blocking still enabled when ABP and Acceptable Ads are both off (DP-1090)
+* Fixed a bug causing crashes due to the filter engine not being ready when entering Settings (DP-1173)
+* Fixed a crash caused by not checking if the filter engine is ready before the sitekey verification (DP-1267)
+* Adjusted to the threading changes introduced by libadblockplus-android 3.19 (DP-1281, DP-1263)
+* [libadblockplus-android](https://gitlab.com/eyeo/adblockplus/libadblockplus-android) was updated
+
+[Full list of `libadblockplus-android` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus-android/compare/bf43c5313fbb4c39b91e84bc063cbeb448557461...ffb27eeb2c61e3f951264485e435d03c0be5cd82)
+
+Known regression:
+* Extended anchor does not match repeating pattern (DP-1208)
+
+## Chromium 81.0 + ABP 0.13 (ABP Chromium 81 v1)
+* Updated to Chromium 81.0.4044.96 (DP-939)
+* Fixed the detection if ABP library should not be loaded for other processes than the browser one so it does not raise an exception for the case the process is started by the Zygote preload.
+
+## Chromium 80.0 + ABP 0.13 (ABP Chromium 80 v2)
+* Updated to Chromium 80.0.3987.132 (DP-895)
+* Fixed incorrect JS escaping, convinience fix for strings manipulation (DP-843)
+* New way to collect frame heirarchy, improves filter matching for some cases (DP-923)
+* Various fixes aimed at improving stability and avoiding ANRs (DP-965, DP-887, DP-885, DP-831)
+
+## Chromium 80.0 + ABP 0.12 (ABP Chromium 80 v1)
+* Updated to Chromium 80.0.3987.99 (DP-751)
+
+## Chromium 79.0 + ABP 0.12 (ABP Chromium 79 v2)
+* Improved performance by distinguishing shared vs exclusive lock (rw locks) when setting/using g_adblock_provider (DP-736)
+
+## Chromium 79.0 + ABP 0.11 (ABP Chromium 79 v1)
+* Updated to Chromium 79.0.3945.93 (DP-724)
+
+## Chromium 78.0 + ABP 0.11 (ABP Chromium 78 v3)
+* Added API providing ad blocked and ad whitelisted notifications (DP-665, DP-553, DP-586)
+* Updated to Chromium 78.0.3904.108 (DP-658)
+* Fixed a regression bug introduced with ABPChromium 77, where subframes were not hidden after being blocked (DP-617)
+* Improved stability of multithreaded code (DP-422)
+
+## Chromium 78.0 + ABP 0.10 (ABP Chromium 78 v1)
+* Updated to Chromium 78.0.3904.62 (DP-630)
+
+## Chromium 77.0 + ABP 0.10
+* Updated to Chromium 77.0.3865.73 (DP-559)
+* Addressed the architectural changes of Chromium 77 by adapting our integration to NetworkService running in-process
+* Ported settings to use types from Android support library to be compatible with Chromium (DP-584)
+* [libadblockplus-android](https://gitlab.com/eyeo/adblockplus/libadblockplus-android) was updated
+
+[Full list of `libadblockplus-android` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus-android/compare/4cf02b4b5f2837d45852234d9a1d2448e85f140c...9fff93a94836c9d31323c7d4a748c75f8bbc56c8)
+
+Known issues and notes:
+* ABP does not work with NetworkService running out of process
+* Subframes are not being hidden after being blocked (DP-601)
+
+## Chromium 76.0 + ABP 0.10
+* Updated to Chromium 76.0.3809.132 (DP-494)
+* [libadblockplus-android](https://gitlab.com/eyeo/adblockplus/libadblockplus-android) was updated
+* Improved stability (DP-212, DP-482)
+* Improved performance (DP-469)
+
+[Full list of `libadblockplus-android` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus-android/compare/7a2ee1131ada85f9ec76186a1fe8ae5fa82cade3...4cf02b4b5f2837d45852234d9a1d2448e85f140c)
+
+## Chromium 76.0 + ABP 0.9
+* Updated to Chromium 76.0.3809.89
+* Disabled usage of NetworkService on top of upstream Chromium 76
+
+## Chromium 75.0 + ABP 0.9
+* Updated to Chromium 75.0.3770.101
+* [libadblockplus](https://gitlab.com/eyeo/adblockplus/libadblockplus) was updated
+* Added support for Genericblock filter option (DP-164)
+* Added support for Generichide filter option (DP-163)
+* Fixed a URL parsing bug causing sitekey whitelisting to not work on testpages.adblockplus.org (DP-229)
+* Fixed a bug which was blocking AAX sitekey ads when re-enabling ABP or restarting the browser (DP-242)
+* Fixed a bug causing anonymous iframe document not being blocked (DP-245)
+* Code cleanup: Reverted DP-222 changes - it was made redundant by DP-273 (DP-311)
+
+[Full list of `libadblockplus` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus/compare/468be7e41f58f035278d825a50f06aa04b4b9b02...9face67824818f9195d884dd4bc16e905937fcf8)
+
+## Chromium 75.0 + ABP 0.8
+* Updated to Chromium 75.0.3770.67
+* [libadblockplus](https://gitlab.com/eyeo/adblockplus/libadblockplus) was updated
+
+[Full list of `libadblockplus` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus/compare/260136a5dffd457f3b964caa54bfcc7eeece4335...468be7e41f58f035278d825a50f06aa04b4b9b02)
+
+## Chromium 74.0 + ABP 0.8
+* Updated to Chromium 74.0.3729.136
+* Completely disabled field trial in order to disable lite page notifications (DP-66,DP-273)
+* [libadblockplus](https://gitlab.com/eyeo/adblockplus/libadblockplus) was updated
+
+[Full list of `libadblockplus` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus/compare/d5c01bb06dffe21f7dcd634f65f224596d2094b4...260136a5dffd457f3b964caa54bfcc7eeece4335)
+
+## Chromium 73.0 + ABP 0.8
+* Updated to Chromium 73.0.3683.90
+* [libadblockplus](https://gitlab.com/eyeo/adblockplus/libadblockplus) was updated
+* [libadblockplus-android](https://gitlab.com/eyeo/adblockplus/libadblockplus-android) was updated
+* Improved whitelisting (DP-190, DP-145)
+* Fixed a bug with websocket support (DP-93)
+* Fixed a bug where request blocking was disabled in Production Builds due to a field trial NetworkService feature (DP-222)
+* Added support for compilation for arm64 architecture (DP-181)
+
+[Full list of `libadblockplus` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus/compare/10266f56a6cc8b18deb497adc9f566d15d38ea87...4794faabf5a743085983a7f0bb5dcaed7afe2249)
+
+[Full list of `libadblockplus-android` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus-android/compare/9ee5526e35cc651542082cbf61d70b9ae813457c...7a2ee1131ada85f9ec76186a1fe8ae5fa82cade3)
+
+## Chromium 73.0 + ABP 0.7
+* Updated to Chromium 73.0.3683.75
+* [libadblockplus-android](https://gitlab.com/eyeo/adblockplus/libadblockplus-android) was updated
+
+[Full list of `libadblockplus-android` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus-android/compare/925ad81b5c81829b341b06fc98980912b1429b6d...9ee5526e35cc651542082cbf61d70b9ae813457c)
+
+## Chromium 72.0 + ABP 0.7
+* Updated a minor version of Chromium in order to include fix of CVE-2019-5786 (DP-90)
+
+## Chromium 72.0 + ABP 0.7
+* [libadblockplus](https://gitlab.com/eyeo/adblockplus/libadblockplus) was updated
+* [libadblockplus-android](https://gitlab.com/eyeo/adblockplus/libadblockplus-android) was updated
+* Fixed a bug where domain whitelisting is not working (DP-7)
+* Added support for element hiding emulation (DP-17)
+* Added support for sitekey (DP-28)
+
+[Full list of `libadblockplus` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus/compare/ec692c663b60e76c4a02a30323fac73686a18c14...10266f56a6cc8b18deb497adc9f566d15d38ea87)
+
+[Full list of `libadblockplus-android` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus-android/compare/f2e1a80624bb5280121eb07a726e5417af227ba7...925ad81b5c81829b341b06fc98980912b1429b6d)
+
+## Chromium 72.0 + ABP 0.6
+* Updated to Chromium 72.0.3626.76
+
+## Chromium 71.0 + ABP 0.6
+* [libadblockplus](https://gitlab.com/eyeo/adblockplus/libadblockplus) was updated
+* [libadblockplus-android](https://gitlab.com/eyeo/adblockplus/libadblockplus-android) was updated
+* [Fixed a bug](https://gitlab.com/eyeo/adblockplus/chromium/issues/71) where chromium would crash in incognito mode
+* [Fixed a bug](https://gitlab.com/eyeo/adblockplus/chromium/issues/29) in blocking of popups
+* [Fixed a bug](https://gitlab.com/eyeo/adblockplus/chromium/issues/55) that caused chromium to crash on android 4.4.4
+
+[Full list of `libadblockplus` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus/compare/9fb96255de4d62e8a29f6d7e889d54d1fad9feb4...d0a4727ac3c21c8551eb392d2571122d1f88dead)
+
+[Full list of `libadblockplus-android` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus-android/compare/d150f08d5d72de8938c7ebbdccd9b0c4e06b4070...c803f858ca2c7ab572acf333042e254f41de3b94)
+
+## Chromium 71.0 + ABP 0.5
+* Updated to Chromium 71.0.3578.83
+
+## Chromium 70.0 + ABP 0.5
+* [libadblockplus-android](https://gitlab.com/eyeo/adblockplus/libadblockplus-android) was updated
+* [Fixed a bug](https://gitlab.com/eyeo/adblockplus/chromium/issues/33) with websocket requests not being blocked
+* [Fixed a bug](https://gitlab.com/eyeo/adblockplus/chromium/issues/35) with !important css styles not being blocked
+* [Fixed a bug](https://gitlab.com/eyeo/adblockplus/chromium/issues/36) where element hiding was not applied to content added via document.write() to anonymous iFrames
+* [Added support](https://gitlab.com/eyeo/adblockplus/chromium/issues/39) for allowing custom filter list subscriptions
+
+[Full list of `libadblockplus-android` changes](https://gitlab.com/eyeo/adblockplus/libadblockplus-android/compare/da7f888d7ef0c4a9fb798a972e5132612730b740...d150f08d5d72de8938c7ebbdccd9b0c4e06b4070)
+
+[Full list of `adblockpluschromium` changes](https://gitlab.com/eyeo/adblockplus/chromium/compare/cd317a965431966844f8d25f4e13dd352a6e1340...dev-70.0.3538.64_2)
+
+## Chromium 70.0 + ABP 0.4
+* Updated to Chromium 70.0.3538.64
+
+## Chromium 69.0 + ABP 0.4
+* Updated to Chromium 69.0.3497.100
+
+## Chromium 69.0 + ABP 0.4
+* Updated to Chromium 69.0.3497.91
+
+## Chromium 68.0 + ABP 0.4
+* [Fixed a bug](https://gitlab.com/eyeo/adblockplus/chromium/issues/31) where type of some network requests was incorrectly labeled as FAVICON instead of IMAGE, causing some images to not be blocked.
+* [Fixed a bug](https://gitlab.com/eyeo/adblockplus/chromium/issues/29) where pop-up blocking was not working.
+* [Improved ad blocking](https://gitlab.com/eyeo/adblockplus/chromium/issues/23) experience by hiding empty spaces left from elements which were blocked on a network level.
+
+## Chromium 68.0 + ABP 0.3.4
+* Updated to Chromium `68.0.3440.70`
+* [Use Chromium Android NDK](https://gitlab.com/eyeo/adblockplus/chromium/issues/26) when building, instead of downloading official Google Android NDK
+* [Fixed a bug](https://issues.adblockplus.org/ticket/6799) where Hebrew subscription was not installed for Hebrew locale
+
+## Chromium 67.0 + ABP 0.3.3
+* Updated to Chromium `67.0.3396.87`
+* [Update](https://gitlab.com/eyeo/adblockplus/chromium/issues/7) the way `libadblockplus` and `libadblockplus-android` are built
+* [Added support](https://issues.adblockplus.org/ticket/6632) for:
+ - `am-ET - Amharic (Ethiopia)`
+ - `fr-CA - French (Canada)`
+ - `fil-PH - Filipino (Philippines)`
+ - `sw-KE - Kiswahili (Kenya)`
+* [Initialize](https://gitlab.com/eyeo/adblockplus/chromium/issues/9) filter engine asynchronously, and [wait](https://gitlab.com/eyeo/adblockplus/chromium/issues/14) for it in Settings.
+* Stop using [deprecated libadblockplus-android API](https://gitlab.com/eyeo/adblockplus/chromium/issues/13)
+* [Disable](https://gitlab.com/eyeo/adblockplus/chromium/issues/20) Chromium's built-in ad blocking
+* [Support](https://gitlab.com/eyeo/adblockplus/chromium/issues/22) configuring of android package name filter list network requests
+* [Correctly detect](https://gitlab.com/eyeo/adblockplus/chromium/issues/24) the type of image resources
+* Added a requirement to have 7zip installed on building machine
+
+[Full list of `libadblockplus` changes](https://github.com/adblockplus/libadblockplus/compare/ea5309a0a6f3c5ab1e378b79c09d930ac3fbcfd0...40f5d4d2d00abe3f94ce69210267bcce908cd748).
+
+[Full list of `libadblockplus-android` changes](https://github.com/adblockplus/libadblockplus-android/compare/7ef63f2b8458a5b23595bd22c180c0e6f2398801...5342ea7697a7a55a3f649aadb6a976a0799e7922)
+
+[Full list of `adblockpluschromium` changes](https://github.com/adblockplus/chromium/compare/483c3b509b0f032a7e92bd4fce339e70c452d2aa...6b18f01e06da9bcb1f5ffdd3c9cfb1e1e485cbf2)
+
+## Chromium 65.0 + ABP 0.3.2
+* Base release of ad blocking integration
diff --git a/components/adblock/LICENSE b/components/adblock/LICENSE
new file mode 100644
--- /dev/null
+++ b/components/adblock/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year>-present eyeo GmbH
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year>-present eyeo GmbH
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<https://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<https://www.gnu.org/licenses/why-not-lgpl.html>.
\ No newline at end of file
diff --git a/components/adblock/README.md b/components/adblock/README.md
new file mode 100644
--- /dev/null
+++ b/components/adblock/README.md
@@ -0,0 +1,80 @@
+# Eyeo Chromium SDK integration
+
+Eyeo Chromium SDK is a fork of the [Chromium project](https://chromium.googlesource.com/chromium/src) that integrates ad-filtering capabilities. This fork serves as a Software Development Kit (SDK) for extending browsers based on Chromium.
+
+For a detailed reasoning on why we implement our own ad-filtering solution instead of basing it in Chromium's Subresource Filter, check the corresponding [decision record](docs/adr/not-extending-subresource-filter.md).
+
+Please send any questions or report any issues to distribution-partners@eyeo.com.
+
+## General information
+
+The [ad-filtering documentation](docs/ad-filtering) describes the available ad-blocking functionalities and how they relate to filter lists. This is done not only from a functional perspective, but also providing more in-depth details, like sequence diagrams illustrating the ad-blocking flow.
+
+The [data collection documentation](docs/data-collection) describes what information is sent to the eyeo services, and our commitment to preserving user's privacy.
+
+The [settings documentation](docs/settings) describes the interfaces to configure the ad-blocking integration.
+
+Finally, the [Architecture Decision Record](docs/adr) documents the reasoning behind certain decisions taken during the development of eyeo Chromium SDK.
+
+
+## Partner integration steps
+
+### Check dependencies and prerequisites
+
+Eyeo Chromium SDK depends on several parts of Chromium, such as the following:
+
+* [KeyedService](/components/keyed_service/core/keyed_service.h)
+* [Network Service](/services/network/)
+* [PrefService](/components/prefs/pref_service.h)
+* [Profile](/chrome/browser/profiles/profile.h)
+* [Resources](/components/resources/)
+* [Version Info](/components/version_info/)
+
+If you cannot include these or any other parts of Chromium in your browser, you will have to re-implement them or work around them.
+
+### Understand the available interfaces
+
+The eyeo Chromium SDK APIs allow to interact with the ad-filtering engine:
+- to enable/disable it,
+- configure selected filter lists and filters,
+- receive notifications about blocking or allowing events.
+
+The SDK can be controlled by:
+- C++ API
+- Java API (on Android)
+- JavaScript Extension API (on Linux, Windows, MacOS)
+
+The SDK extends the browser's Settings UI with an "Ad blocking" section on:
+- Android
+- Linux, Windows, MacOS
+
+In order to understand what settings are available and which API is best for your use case, check the [settings documentation](docs/settings/README.md).
+
+### Prepare your application
+
+Follow the [integration how-to](docs/integration-how-to.md) to configure the ad-filtering engine. You will also find information about how to set up your application name and version.
+
+### Upgrade scenario: Find out what has changed between eyeo Chromium SDK releases
+
+Differences across versions are listed in [the changelog](components/adblock/CHANGELOG.md).
+
+You can also use our [interdiff script](tools/eyeo/generate_interdiffs.sh) to compare two git revision ranges. You can find more information in the [integration how-to](docs/integration-how-to.md).
+
+
+## For eyeo Chromium SDK contributors
+
+Adblock strives to follow the [layered component design](https://sites.google.com/a/chromium.org/dev/developers/design-documents/layered-components-design)
+
+You will find most of eyeo Chromium SDK specific code in the following places:
+
+* `components/adblock/core`: Platform-agnostic ad filtering integration
+* `components/adblock/content`: `content` dependent ad filtering integration
+* `chrome/browser/adblock`: OS-agnostic but Chrome-specific integration
+* `components/adblock/android`: Android-specific JNI code for UI
+* `chrome/renderer/adblock`: Hooks in the Renderer process to observe Renderer-issued resource loads
+* `chrome/common/extensions`: Implementation of the `adblockPrivate` Extension API
+* `components/adblock/android/java/src/org/chromium/components/adblock`: Android implementation of Settings UI
+
+You can find how our implementation maps to Chromium's design in the [design overview](docs/design-overview.md).
+
+General information for developers, like options for logging, testing, etc, can be found in the [developer notes](docs/developer-notes.md).
diff --git a/components/adblock/content/BUILD.gn b/components/adblock/content/BUILD.gn
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/BUILD.gn
@@ -0,0 +1,22 @@
+#
+# This file is part of eyeo Chromium SDK,
+# Copyright (C) 2006-present eyeo GmbH
+#
+# eyeo Chromium SDK is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3 as
+# published by the Free Software Foundation.
+#
+# eyeo Chromium SDK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+
+assert(!is_ios)
+
+# External targets should depend on this
+group("browser") {
+ public_deps = [ "//components/adblock/content/browser:browser_impl" ]
+}
diff --git a/components/adblock/content/browser/BUILD.gn b/components/adblock/content/browser/BUILD.gn
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/BUILD.gn
@@ -0,0 +1,136 @@
+#
+# This file is part of eyeo Chromium SDK,
+# Copyright (C) 2006-present eyeo GmbH
+#
+# eyeo Chromium SDK is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3 as
+# published by the Free Software Foundation.
+#
+# eyeo Chromium SDK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+
+import("//components/adblock/features.gni")
+
+config("adblock_content_common_config") {
+ defines = []
+
+ if (eyeo_intercept_debug_url) {
+ print("WARNING! Enabled intercepting eyeo debug url \"adblock.test.data\"")
+ defines += [ "EYEO_INTERCEPT_DEBUG_URL=1" ]
+ }
+}
+
+source_set("browser_impl") {
+ visibility = [
+ ":*",
+ "//components/adblock/content:*",
+ ]
+ sources = [
+ "adblock_controller_factory_base.cc",
+ "adblock_controller_factory_base.h",
+ "adblock_filter_match.h",
+ "adblock_telemetry_service_factory_base.cc",
+ "adblock_telemetry_service_factory_base.h",
+ "adblock_url_loader_factory.cc",
+ "adblock_url_loader_factory.h",
+ "adblock_webcontents_observer.cc",
+ "adblock_webcontents_observer.h",
+ "content_security_policy_injector.h",
+ "content_security_policy_injector_impl.cc",
+ "content_security_policy_injector_impl.h",
+ "element_hider.h",
+ "element_hider_impl.cc",
+ "element_hider_impl.h",
+ "element_hider_info.cc",
+ "element_hider_info.h",
+ "frame_hierarchy_builder.cc",
+ "frame_hierarchy_builder.h",
+ "frame_opener_info.cc",
+ "frame_opener_info.h",
+ "resource_classification_runner.h",
+ "resource_classification_runner_impl.cc",
+ "resource_classification_runner_impl.h",
+ "session_stats_impl.cc",
+ "session_stats_impl.h",
+ "subscription_service_factory_base.cc",
+ "subscription_service_factory_base.h",
+
+ ]
+
+ if (eyeo_intercept_debug_url) {
+ sources += [
+ "adblock_url_loader_factory_for_test.cc",
+ "adblock_url_loader_factory_for_test.h",
+ ]
+ }
+
+ deps = [
+ "//base",
+ "//components/adblock/core/converter:converter",
+ "//components/keyed_service/content:content",
+ "//components/resources:components_resources_grit",
+ "//url:url",
+ ]
+
+ public_deps = [
+ "//components/adblock/core",
+ "//content/public/browser",
+ "//third_party/blink/public/common:headers",
+ ]
+
+ all_dependent_configs = [ ":adblock_content_common_config" ]
+}
+
+source_set("test_support") {
+ testonly = true
+ sources = [
+ "test/mock_adblock_content_security_policy_injector.cc",
+ "test/mock_adblock_content_security_policy_injector.h",
+ "test/mock_element_hider.cc",
+ "test/mock_element_hider.h",
+ "test/mock_frame_hierarchy_builder.cc",
+ "test/mock_frame_hierarchy_builder.h",
+ "test/mock_resource_classification_runner.cc",
+ "test/mock_resource_classification_runner.h",
+ ]
+
+ public_deps = [
+ ":browser_impl",
+ "//testing/gmock",
+ "//testing/gtest",
+ ]
+}
+
+source_set("unit_tests") {
+ testonly = true
+ sources = [
+ "test/adblock_url_loader_factory_test.cc",
+ "test/adblock_webcontents_observer_test.cc",
+ "test/content_security_policy_injector_impl_test.cc",
+ "test/element_hider_impl_test.cc",
+ "test/frame_hierarchy_builder_test.cc",
+ "test/resource_classification_runner_impl_test.cc",
+ "test/session_stats_impl_test.cc",
+ ]
+
+ deps = [
+ "//base/test:test_support",
+ "//components/adblock/core/classifier:test_support",
+ "//components/adblock/core/subscription:test_support",
+ "//components/adblock/core:test_support",
+ "//components/adblock/core:test_support",
+ "//components/prefs:test_support",
+ "//components/resources:components_resources_grit",
+ "//components/sync_preferences:test_support",
+ "//content/test:test_support",
+ "//net:test_support",
+ "//services/network:test_support",
+ "//ui/base:test_support",
+ ":test_support",
+ ]
+}
diff --git a/components/adblock/content/browser/adblock_controller_factory_base.cc b/components/adblock/content/browser/adblock_controller_factory_base.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/adblock_controller_factory_base.cc
@@ -0,0 +1,87 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/content/browser/adblock_controller_factory_base.h"
+
+#include <memory>
+
+#include "base/command_line.h"
+#include "components/adblock/core/adblock_controller_impl.h"
+#include "components/adblock/core/adblock_switches.h"
+#include "components/adblock/core/common/adblock_constants.h"
+#include "components/adblock/core/common/adblock_prefs.h"
+#include "components/adblock/core/configuration/persistent_filtering_configuration.h"
+#include "components/adblock/core/subscription/subscription_config.h"
+#include "components/adblock/core/subscription/subscription_service.h"
+#include "components/pref_registry/pref_registry_syncable.h"
+#include "components/version_info/version_info.h"
+#include "content/public/browser/browser_context.h"
+
+namespace adblock {
+
+AdblockControllerFactoryBase::~AdblockControllerFactoryBase() = default;
+
+AdblockControllerFactoryBase::AdblockControllerFactoryBase()
+ : BrowserContextKeyedServiceFactory(
+ "AdblockController",
+ BrowserContextDependencyManager::GetInstance()) {}
+
+KeyedService* AdblockControllerFactoryBase::BuildServiceInstanceFor(
+ content::BrowserContext* context) const {
+ auto* prefs = GetPrefs(context);
+ auto adblock_filtering_configuration =
+ std::make_unique<PersistentFilteringConfiguration>(
+ prefs, kAdblockFilteringConfigurationName);
+
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+ adblock::switches::kDisableAcceptableAds)) {
+ adblock_filtering_configuration->RemoveFilterList(AcceptableAdsUrl());
+ }
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kDisableAdblock) ||
+ base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kDisableEyeoFiltering)) {
+ adblock_filtering_configuration->SetEnabled(false);
+ }
+
+ auto* subscription_service = GetSubscriptionService(context);
+ auto controller = std::make_unique<AdblockControllerImpl>(
+ adblock_filtering_configuration.get(), subscription_service, GetLocale(),
+ config::GetKnownSubscriptions());
+ controller->RunFirstRunLogic(prefs);
+ controller->MigrateLegacyPrefs(prefs);
+
+ subscription_service->InstallFilteringConfiguration(
+ std::move(adblock_filtering_configuration));
+
+ return controller.release();
+}
+
+void AdblockControllerFactoryBase::RegisterProfilePrefs(
+ user_prefs::PrefRegistrySyncable* registry) {
+ adblock::common::prefs::RegisterProfilePrefs(registry);
+}
+
+bool AdblockControllerFactoryBase::ServiceIsNULLWhileTesting() const {
+ return true;
+}
+
+bool AdblockControllerFactoryBase::ServiceIsCreatedWithBrowserContext() const {
+ return true;
+}
+
+} // namespace adblock
diff --git a/components/adblock/content/browser/adblock_controller_factory_base.h b/components/adblock/content/browser/adblock_controller_factory_base.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/adblock_controller_factory_base.h
@@ -0,0 +1,50 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_ADBLOCK_CONTROLLER_FACTORY_BASE_H_
+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_ADBLOCK_CONTROLLER_FACTORY_BASE_H_
+
+#include "components/keyed_service/content/browser_context_dependency_manager.h"
+#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
+#include "components/prefs/pref_service.h"
+#include "content/public/browser/browser_context.h"
+
+namespace adblock {
+
+class SubscriptionService;
+class AdblockControllerFactoryBase : public BrowserContextKeyedServiceFactory {
+ protected:
+ virtual PrefService* GetPrefs(content::BrowserContext* context) const = 0;
+ virtual const std::string& GetLocale() const = 0;
+ virtual SubscriptionService* GetSubscriptionService(
+ content::BrowserContext* context) const = 0;
+ AdblockControllerFactoryBase();
+ ~AdblockControllerFactoryBase() override;
+
+ private:
+ // BrowserContextKeyedServiceFactory:
+ KeyedService* BuildServiceInstanceFor(
+ content::BrowserContext* context) const override;
+ void RegisterProfilePrefs(
+ user_prefs::PrefRegistrySyncable* registry) override;
+ bool ServiceIsNULLWhileTesting() const override;
+ bool ServiceIsCreatedWithBrowserContext() const override;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_ADBLOCK_CONTROLLER_FACTORY_BASE_H_
diff --git a/components/adblock/content/browser/adblock_filter_match.h b/components/adblock/content/browser/adblock_filter_match.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/adblock_filter_match.h
@@ -0,0 +1,30 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_ADBLOCK_FILTER_MATCH_H_
+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_ADBLOCK_FILTER_MATCH_H_
+
+#include "base/functional/callback_forward.h"
+
+namespace adblock {
+
+enum class FilterMatchResult { kNoRule, kBlockRule, kAllowRule, kDisabled };
+
+using CheckFilterMatchCallback = base::OnceCallback<void(FilterMatchResult)>;
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_ADBLOCK_FILTER_MATCH_H_
diff --git a/components/adblock/content/browser/adblock_telemetry_service_factory_base.cc b/components/adblock/content/browser/adblock_telemetry_service_factory_base.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/adblock_telemetry_service_factory_base.cc
@@ -0,0 +1,100 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/content/browser/adblock_telemetry_service_factory_base.h"
+
+#include <memory>
+
+#include "components/adblock/core/activeping_telemetry_topic_provider.h"
+#include "components/adblock/core/adblock_telemetry_service.h"
+#include "components/adblock/core/common/adblock_utils.h"
+#include "components/adblock/core/subscription/subscription_service.h"
+#include "content/public/browser/browser_context.h"
+#include "content/public/browser/storage_partition.h"
+
+namespace adblock {
+namespace {
+
+std::optional<base::TimeDelta> g_check_interval_for_testing;
+std::optional<base::TimeDelta> g_initial_delay_for_testing;
+
+base::TimeDelta GetInitialDelay() {
+ static base::TimeDelta kInitialDelay =
+ g_initial_delay_for_testing ? g_initial_delay_for_testing.value()
+ : base::Seconds(30);
+ return kInitialDelay;
+}
+
+base::TimeDelta GetCheckInterval() {
+ static base::TimeDelta kCheckInterval =
+ g_check_interval_for_testing ? g_check_interval_for_testing.value()
+ : base::Minutes(5);
+ return kCheckInterval;
+}
+
+} // namespace
+
+AdblockTelemetryServiceFactoryBase::AdblockTelemetryServiceFactoryBase()
+ : BrowserContextKeyedServiceFactory(
+ "AdblockTelemetryService",
+ BrowserContextDependencyManager::GetInstance()) {}
+
+AdblockTelemetryServiceFactoryBase::~AdblockTelemetryServiceFactoryBase() =
+ default;
+
+KeyedService* AdblockTelemetryServiceFactoryBase::BuildServiceInstanceFor(
+ content::BrowserContext* context) const {
+ // Need to use a URLLoaderFactory specific to the browser context, not from
+ // system_network_context_manager(), because the required Accept-Language
+ // header depends on user's language settings and is not present in requests
+ // made from the System network context.
+ scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory =
+ context->GetDefaultStoragePartition()
+ ->GetURLLoaderFactoryForBrowserProcess();
+ auto* prefs = GetPrefs(context);
+ auto service = std::make_unique<AdblockTelemetryService>(
+ GetSubscriptionService(context)->GetAdblockFilteringConfiguration(),
+ url_loader_factory, GetInitialDelay(), GetCheckInterval());
+ service->AddTopicProvider(std::make_unique<ActivepingTelemetryTopicProvider>(
+ utils::GetAppInfo(), prefs, GetSubscriptionService(context),
+ ActivepingTelemetryTopicProvider::DefaultBaseUrl(),
+ ActivepingTelemetryTopicProvider::DefaultAuthToken()));
+
+ if (url_loader_factory) {
+ service->Start();
+ }
+
+ return service.release();
+}
+
+bool AdblockTelemetryServiceFactoryBase::ServiceIsNULLWhileTesting() const {
+ return true;
+}
+
+bool AdblockTelemetryServiceFactoryBase::ServiceIsCreatedWithBrowserContext()
+ const {
+ return true;
+}
+
+void AdblockTelemetryServiceFactoryBase::SetCheckAndDelayIntervalsForTesting(
+ base::TimeDelta check_interval,
+ base::TimeDelta initial_delay) {
+ g_check_interval_for_testing = check_interval;
+ g_initial_delay_for_testing = initial_delay;
+}
+
+} // namespace adblock
diff --git a/components/adblock/content/browser/adblock_telemetry_service_factory_base.h b/components/adblock/content/browser/adblock_telemetry_service_factory_base.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/adblock_telemetry_service_factory_base.h
@@ -0,0 +1,54 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_ADBLOCK_TELEMETRY_SERVICE_FACTORY_BASE_H_
+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_ADBLOCK_TELEMETRY_SERVICE_FACTORY_BASE_H_
+
+#include "base/time/time.h"
+#include "components/keyed_service/content/browser_context_dependency_manager.h"
+#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
+#include "components/prefs/pref_service.h"
+
+namespace adblock {
+
+class SubscriptionService;
+class AdblockTelemetryServiceFactoryBase
+ : public BrowserContextKeyedServiceFactory {
+ public:
+ // Sets the initial delay and interval checks required for browser tests.
+ // Must be called before BuildServiceInstanceFor().
+ void SetCheckAndDelayIntervalsForTesting(base::TimeDelta check_interval,
+ base::TimeDelta initial_delay);
+
+ protected:
+ virtual PrefService* GetPrefs(content::BrowserContext* context) const = 0;
+ virtual SubscriptionService* GetSubscriptionService(
+ content::BrowserContext* context) const = 0;
+ AdblockTelemetryServiceFactoryBase();
+ ~AdblockTelemetryServiceFactoryBase() override;
+
+ private:
+ // BrowserContextKeyedServiceFactory:
+ KeyedService* BuildServiceInstanceFor(
+ content::BrowserContext* context) const override;
+ bool ServiceIsNULLWhileTesting() const override;
+ bool ServiceIsCreatedWithBrowserContext() const override;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_ADBLOCK_TELEMETRY_SERVICE_FACTORY_BASE_H_
diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/components/adblock/content/browser/adblock_url_loader_factory.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/adblock_url_loader_factory.cc
@@ -0,0 +1,748 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/content/browser/adblock_url_loader_factory.h"
+
+#include "base/barrier_closure.h"
+#include "base/strings/stringprintf.h"
+#include "base/supports_user_data.h"
+#include "components/adblock/content/browser/content_security_policy_injector.h"
+#include "components/adblock/content/browser/element_hider.h"
+#include "components/adblock/content/browser/frame_opener_info.h"
+#include "components/adblock/content/browser/resource_classification_runner.h"
+#include "components/adblock/core/features.h"
+#include "components/adblock/core/sitekey_storage.h"
+#include "components/adblock/core/subscription/subscription_service.h"
+#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/render_frame_host.h"
+#include "content/public/browser/render_process_host.h"
+#include "content/public/browser/web_contents.h"
+#include "net/base/url_util.h"
+#include "net/http/http_status_code.h"
+#include "net/http/http_util.h"
+#include "services/network/public/cpp/resource_request.h"
+#include "services/network/public/mojom/early_hints.mojom.h"
+#include "services/network/public/mojom/parsed_headers.mojom-forward.h"
+#include "services/network/public/mojom/url_loader.mojom.h"
+#include "services/network/public/mojom/url_loader_factory.mojom.h"
+#include "services/network/public/mojom/url_response_head.mojom.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+namespace {
+
+// Without USER_BLOCKING priority - in session restore case - posted
+// callbacks can take over a minute to trigger. This is why such high
+// priority is applied everywhere.
+const base::TaskPriority kTaskResponsePriority =
+ base::TaskPriority::USER_BLOCKING;
+
+bool IsDocumentRequest(const network::ResourceRequest& request) {
+ return !request.url.SchemeIsWSOrWSS() && !request.is_fetch_like_api &&
+ request.destination == network::mojom::RequestDestination::kDocument;
+}
+
+ContentType ToAdblockResourceType(const network::ResourceRequest& request) {
+ if (request.url.SchemeIsWSOrWSS()) {
+ return ContentType::Websocket;
+ }
+ if (request.is_fetch_like_api) {
+ // See https://crbug.com/611453
+ return ContentType::Xmlhttprequest;
+ }
+
+ switch (request.destination) {
+ case network::mojom::RequestDestination::kDocument:
+ case network::mojom::RequestDestination::kIframe:
+ case network::mojom::RequestDestination::kFrame:
+ case network::mojom::RequestDestination::kFencedframe:
+ case network::mojom::RequestDestination::kSpeculationRules:
+ return ContentType::Subdocument;
+ case network::mojom::RequestDestination::kStyle:
+ case network::mojom::RequestDestination::kXslt:
+ return ContentType::Stylesheet;
+ case network::mojom::RequestDestination::kScript:
+ case network::mojom::RequestDestination::kWorker:
+ case network::mojom::RequestDestination::kSharedWorker:
+ case network::mojom::RequestDestination::kServiceWorker:
+ case network::mojom::RequestDestination::kJson:
+ return ContentType::Script;
+ case network::mojom::RequestDestination::kImage:
+ return ContentType::Image;
+ case network::mojom::RequestDestination::kFont:
+ return ContentType::Font;
+ case network::mojom::RequestDestination::kObject:
+ case network::mojom::RequestDestination::kEmbed:
+ return ContentType::Object;
+ case network::mojom::RequestDestination::kAudio:
+ case network::mojom::RequestDestination::kTrack:
+ case network::mojom::RequestDestination::kVideo:
+ return ContentType::Media;
+ case network::mojom::RequestDestination::kEmpty:
+ // https://fetch.spec.whatwg.org/#concept-request-destination
+ if (request.keepalive) {
+ return ContentType::Ping;
+ }
+ return ContentType::Other;
+ case network::mojom::RequestDestination::kWebBundle:
+ return ContentType::WebBundle;
+ case network::mojom::RequestDestination::kReport:
+ case network::mojom::RequestDestination::kAudioWorklet:
+ case network::mojom::RequestDestination::kDictionary:
+ case network::mojom::RequestDestination::kManifest:
+ case network::mojom::RequestDestination::kPaintWorklet:
+ case network::mojom::RequestDestination::kWebIdentity:
+ return ContentType::Other;
+ }
+ NOTREACHED();
+ return ContentType::Other;
+}
+
+} // namespace
+
+class AdblockURLLoaderFactory::InProgressRequest
+ : public network::mojom::URLLoader,
+ public network::mojom::URLLoaderClient {
+ public:
+ InProgressRequest(
+ AdblockURLLoaderFactory* factory,
+ mojo::PendingReceiver<network::mojom::URLLoader> loader_receiver,
+ int32_t request_id,
+ uint32_t options,
+ const network::ResourceRequest& request,
+ mojo::PendingRemote<network::mojom::URLLoaderClient> client,
+ const net::MutableNetworkTrafficAnnotationTag& traffic_annotation);
+
+ void FollowRedirect(
+ const std::vector<std::string>& removed_headers,
+ const net::HttpRequestHeaders& modified_headers,
+ const net::HttpRequestHeaders& modified_cors_exempt_headers,
+ const absl::optional<GURL>& new_url) override;
+ void SetPriority(net::RequestPriority priority,
+ int32_t intra_priority_value) override;
+ void PauseReadingBodyFromNet() override;
+ void ResumeReadingBodyFromNet() override;
+
+ void OnReceiveEarlyHints(
+ ::network::mojom::EarlyHintsPtr early_hints) override;
+ void OnReceiveResponse(
+ ::network::mojom::URLResponseHeadPtr head,
+ ::mojo::ScopedDataPipeConsumerHandle body,
+ absl::optional<mojo_base::BigBuffer> cached_metadata) override;
+ void OnReceiveRedirect(const ::net::RedirectInfo& redirect_info,
+ ::network::mojom::URLResponseHeadPtr head) override;
+ void OnUploadProgress(int64_t current_position,
+ int64_t total_size,
+ OnUploadProgressCallback callback) override;
+ void OnTransferSizeUpdated(int32_t transfer_size_diff) override;
+ void OnComplete(const ::network::URLLoaderCompletionStatus& status) override;
+
+ private:
+ using ProcessResponseHeadersCallback =
+ base::OnceCallback<void(FilterMatchResult,
+ network::mojom::ParsedHeadersPtr)>;
+ using CheckRewriteFilterMatchCallback =
+ base::OnceCallback<void(const absl::optional<GURL>&)>;
+
+ void OnBindingsClosed();
+ void OnClientDisconnected();
+ void Start(uint32_t options,
+ network::ResourceRequest request,
+ const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
+ mojo::PendingReceiver<network::mojom::URLLoader> target_loader,
+ mojo::PendingRemote<network::mojom::URLLoaderClient> proxy_client,
+ const absl::optional<GURL>& rewrite);
+ void OnRequestFilterMatchResult(
+ ::mojo::PendingReceiver<network::mojom::URLLoader> loader,
+ uint32_t options,
+ const network::ResourceRequest& request,
+ ::mojo::PendingRemote<network::mojom::URLLoaderClient> client,
+ const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
+ FilterMatchResult result);
+ void OnRedirectFilterMatchResult(const net::RedirectInfo& redirect_info,
+ network::mojom::URLResponseHeadPtr head,
+ FilterMatchResult result);
+ void OnProcessHeadersResult(
+ ::network::mojom::URLResponseHeadPtr head,
+ ::mojo::ScopedDataPipeConsumerHandle body,
+ absl::optional<mojo_base::BigBuffer> cached_metadata,
+ FilterMatchResult result,
+ network::mojom::ParsedHeadersPtr parsed_headers);
+ void OnRequestError(int error_code);
+ void CheckFilterMatch(CheckFilterMatchCallback callback);
+ void ProcessResponseHeaders(
+ const scoped_refptr<net::HttpResponseHeaders>& headers,
+ ProcessResponseHeadersCallback callback);
+ void CheckRewriteFilterMatch(CheckRewriteFilterMatchCallback callback);
+ void OnRequestUrlClassified(CheckFilterMatchCallback callback,
+ FilterMatchResult result);
+ void OnResponseHeadersClassified(
+ const scoped_refptr<net::HttpResponseHeaders>& headers,
+ ProcessResponseHeadersCallback callback,
+ FilterMatchResult result);
+ void PostFilterMatchCallbackToUI(CheckFilterMatchCallback callback,
+ FilterMatchResult result);
+ void PostResponseHeadersCallbackToUI(
+ ProcessResponseHeadersCallback callback,
+ FilterMatchResult result,
+ network::mojom::ParsedHeadersPtr parsed_headers);
+ void PostRewriteCallbackToUI(
+ base::OnceCallback<void(const absl::optional<GURL>&)> callback,
+ const absl::optional<GURL>& url);
+
+ GURL request_url_;
+ int request_id_;
+ bool is_document_request_;
+ ContentType adblock_resource_type_;
+ const raw_ptr<AdblockURLLoaderFactory> factory_;
+ // There are the mojo pipe endpoints between this proxy and the renderer.
+ // Messages received by |client_receiver_| are forwarded to
+ // |target_client_|.
+ mojo::Remote<network::mojom::URLLoaderClient> target_client_;
+ mojo::Receiver<network::mojom::URLLoader> loader_receiver_;
+ // These are the mojo pipe endpoints between this proxy and the network
+ // process. Messages received by |loader_receiver_| are forwarded to
+ // |target_loader_|.
+ mojo::Remote<network::mojom::URLLoader> target_loader_;
+ mojo::Receiver<network::mojom::URLLoaderClient> client_receiver_{this};
+ base::WeakPtrFactory<AdblockURLLoaderFactory::InProgressRequest>
+ weak_factory_{this};
+};
+
+AdblockURLLoaderFactory::InProgressRequest::InProgressRequest(
+ AdblockURLLoaderFactory* factory,
+ mojo::PendingReceiver<network::mojom::URLLoader> loader_receiver,
+ int32_t request_id,
+ uint32_t options,
+ const network::ResourceRequest& request,
+ mojo::PendingRemote<network::mojom::URLLoaderClient> client,
+ const net::MutableNetworkTrafficAnnotationTag& traffic_annotation)
+ : request_url_(request.url),
+ request_id_(request_id),
+ is_document_request_(IsDocumentRequest(request)),
+ adblock_resource_type_(ToAdblockResourceType(request)),
+ factory_(factory),
+ target_client_(std::move(client)),
+ loader_receiver_(this, std::move(loader_receiver)) {
+ CheckRewriteFilterMatch(base::BindOnce(
+ &InProgressRequest::Start, weak_factory_.GetWeakPtr(), options, request,
+ traffic_annotation, target_loader_.BindNewPipeAndPassReceiver(),
+ client_receiver_.BindNewPipeAndPassRemote()));
+
+ // Calls |OnBindingsClosed| only after both disconnect handlers have been run.
+ base::RepeatingClosure closure = base::BarrierClosure(
+ 2, base::BindOnce(&InProgressRequest::OnBindingsClosed,
+ weak_factory_.GetWeakPtr()));
+ loader_receiver_.set_disconnect_handler(closure);
+ client_receiver_.set_disconnect_handler(closure);
+ target_client_.set_disconnect_handler(base::BindOnce(
+ &InProgressRequest::OnClientDisconnected, weak_factory_.GetWeakPtr()));
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::FollowRedirect(
+ const std::vector<std::string>& removed_headers,
+ const net::HttpRequestHeaders& modified_headers,
+ const net::HttpRequestHeaders& modified_cors_exempt_headers,
+ const absl::optional<GURL>& new_url) {
+ if (target_loader_.is_bound()) {
+ target_loader_->FollowRedirect(removed_headers, modified_headers,
+ modified_cors_exempt_headers, new_url);
+ }
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::SetPriority(
+ net::RequestPriority priority,
+ int32_t intra_priority_value) {
+ if (target_loader_.is_bound()) {
+ target_loader_->SetPriority(priority, intra_priority_value);
+ }
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::PauseReadingBodyFromNet() {
+ if (target_loader_.is_bound()) {
+ target_loader_->PauseReadingBodyFromNet();
+ }
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::ResumeReadingBodyFromNet() {
+ if (target_loader_.is_bound()) {
+ target_loader_->ResumeReadingBodyFromNet();
+ }
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::OnReceiveEarlyHints(
+ network::mojom::EarlyHintsPtr early_hints) {
+ target_client_->OnReceiveEarlyHints(std::move(early_hints));
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::OnReceiveResponse(
+ network::mojom::URLResponseHeadPtr head,
+ mojo::ScopedDataPipeConsumerHandle body,
+ absl::optional<mojo_base::BigBuffer> cached_metadata) {
+ if (net::IsLocalhost(request_url_) || (!request_url_.SchemeIsHTTPOrHTTPS() &&
+ !request_url_.SchemeIsWSOrWSS())) {
+ VLOG(1)
+ << "[eyeo] Ignoring URL (local url or unsupported scheme), allowing "
+ "load.";
+ target_client_->OnReceiveResponse(std::move(head), std::move(body),
+ std::move(cached_metadata));
+ return;
+ }
+
+ VLOG(1) << "[eyeo] Sending headers for processing: " << request_url_;
+ client_receiver_.Pause();
+ const scoped_refptr<net::HttpResponseHeaders>& headers = head->headers;
+ ProcessResponseHeaders(
+ headers, base::BindOnce(&InProgressRequest::OnProcessHeadersResult,
+ weak_factory_.GetWeakPtr(), std::move(head),
+ std::move(body), std::move(cached_metadata)));
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::OnProcessHeadersResult(
+ ::network::mojom::URLResponseHeadPtr head,
+ ::mojo::ScopedDataPipeConsumerHandle body,
+ absl::optional<mojo_base::BigBuffer> cached_metadata,
+ FilterMatchResult result,
+ network::mojom::ParsedHeadersPtr parsed_headers) {
+ if (result == FilterMatchResult::kBlockRule) {
+ OnRequestError(net::ERR_BLOCKED_BY_ADMINISTRATOR);
+ return;
+ }
+ if (parsed_headers) {
+ // Headers were modified by ProcessResponseHeaders(). Raw headers must match
+ // parsed headers.
+ // |new_response_head| already contains the modified raw headers, update the
+ // parsed headers.
+ head->parsed_headers = std::move(parsed_headers);
+ }
+
+ target_client_->OnReceiveResponse(std::move(head), std::move(body),
+ std::move(cached_metadata));
+ client_receiver_.Resume();
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::OnRequestError(
+ int error_code) {
+ target_client_->OnComplete(network::URLLoaderCompletionStatus(error_code));
+ factory_->RemoveRequest(this);
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch(
+ CheckFilterMatchCallback callback) {
+ if (!factory_->CheckHostValid()) {
+ PostFilterMatchCallbackToUI(std::move(callback),
+ FilterMatchResult::kNoRule);
+ return;
+ }
+
+ auto subscription_service = factory_->config_.subscription_service;
+ if (is_document_request_) {
+ auto* host = content::RenderFrameHost::FromID(factory_->host_id_);
+ auto* wc = content::WebContents::FromRenderFrameHost(host);
+ DCHECK(wc);
+ auto* info = FrameOpenerInfo::FromWebContents(wc);
+ // We could use WebContents::HasLiveOriginalOpenerChain() to recognize a
+ // popup here. The problem is that its companion method
+ // WebContents::GetFirstWebContentsInLiveOriginalOpenerChain() returns not a
+ // direct opener of a popup (which can be an embedded iframe) but the main
+ // frame of the page which opened popup which is not enough for correct
+ // allowlisting. Because of that we need to track an opener via
+ // content::WebContentsUserData (see
+ // AdblockWebContentObserver::DidOpenRequestedURL()), so for
+ // consistency we everywhere check content::WebContentsUserData to find out
+ // whether a request is a popup or to obtain its opener.
+ bool is_popup = info && content::RenderFrameHost::FromID(info->GetOpener());
+ if (is_popup) {
+ factory_->config_.resource_classifier->CheckPopupFilterMatch(
+ subscription_service->GetCurrentSnapshot(), request_url_,
+ factory_->host_id_,
+ base::BindOnce(
+ &AdblockURLLoaderFactory::InProgressRequest::
+ OnRequestUrlClassified,
+ weak_factory_.GetWeakPtr(),
+ base::BindOnce(&AdblockURLLoaderFactory::InProgressRequest::
+ PostFilterMatchCallbackToUI,
+ weak_factory_.GetWeakPtr(), std::move(callback))));
+ } else {
+ factory_->config_.resource_classifier->CheckDocumentAllowlisted(
+ subscription_service->GetCurrentSnapshot(), request_url_,
+ factory_->host_id_);
+ PostFilterMatchCallbackToUI(std::move(callback),
+ FilterMatchResult::kNoRule);
+ }
+ } else {
+ factory_->config_.resource_classifier->CheckRequestFilterMatch(
+ subscription_service->GetCurrentSnapshot(), request_url_,
+ adblock_resource_type_, factory_->host_id_,
+ base::BindOnce(
+ &AdblockURLLoaderFactory::InProgressRequest::OnRequestUrlClassified,
+ weak_factory_.GetWeakPtr(),
+ base::BindOnce(&AdblockURLLoaderFactory::InProgressRequest::
+ PostFilterMatchCallbackToUI,
+ weak_factory_.GetWeakPtr(), std::move(callback))));
+ }
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::ProcessResponseHeaders(
+ const scoped_refptr<net::HttpResponseHeaders>& headers,
+ ProcessResponseHeadersCallback callback) {
+ if (!factory_->CheckHostValid()) {
+ PostResponseHeadersCallbackToUI(std::move(callback),
+ FilterMatchResult::kNoRule, nullptr);
+ return;
+ }
+
+ auto subscription_service = factory_->config_.subscription_service;
+ factory_->config_.resource_classifier->CheckResponseFilterMatch(
+ subscription_service->GetCurrentSnapshot(), request_url_,
+ adblock_resource_type_, factory_->host_id_, headers,
+ base::BindOnce(
+ &AdblockURLLoaderFactory::InProgressRequest::
+ OnResponseHeadersClassified,
+ weak_factory_.GetWeakPtr(), headers,
+ base::BindOnce(&AdblockURLLoaderFactory::InProgressRequest::
+ PostResponseHeadersCallbackToUI,
+ weak_factory_.GetWeakPtr(), std::move(callback))));
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::CheckRewriteFilterMatch(
+ CheckRewriteFilterMatchCallback callback) {
+ if (!factory_->CheckHostValid()) {
+ PostRewriteCallbackToUI(std::move(callback), absl::optional<GURL>{});
+ return;
+ }
+
+ auto subscription_service = factory_->config_.subscription_service;
+ factory_->config_.resource_classifier->CheckRewriteFilterMatch(
+ subscription_service->GetCurrentSnapshot(), request_url_,
+ factory_->host_id_,
+ base::BindOnce(
+ &AdblockURLLoaderFactory::InProgressRequest::PostRewriteCallbackToUI,
+ weak_factory_.GetWeakPtr(), std::move(callback)));
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::OnRequestUrlClassified(
+ CheckFilterMatchCallback callback,
+ FilterMatchResult result) {
+ if (result == FilterMatchResult::kBlockRule) {
+ if (factory_->CheckHostValid()) {
+ if (is_document_request_) {
+ // This path means we classified popup
+ auto* wc = content::WebContents::FromRenderFrameHost(
+ content::RenderFrameHost::FromID(factory_->host_id_));
+ DCHECK(wc);
+ wc->ClosePage();
+ } else {
+ ElementHider* element_hider = factory_->config_.element_hider;
+ if (element_hider->IsElementTypeHideable(adblock_resource_type_)) {
+ element_hider->HideBlockedElement(
+ request_url_,
+ content::RenderFrameHost::FromID(factory_->host_id_));
+ }
+ }
+ }
+ }
+ PostFilterMatchCallbackToUI(std::move(callback), result);
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::OnResponseHeadersClassified(
+ const scoped_refptr<net::HttpResponseHeaders>& headers,
+ ProcessResponseHeadersCallback callback,
+ FilterMatchResult result) {
+ if (!factory_->CheckHostValid() || result == FilterMatchResult::kDisabled) {
+ PostResponseHeadersCallbackToUI(std::move(callback), result, nullptr);
+ return;
+ }
+
+ if (result == FilterMatchResult::kBlockRule) {
+ ElementHider* element_hider = factory_->config_.element_hider;
+ if (element_hider->IsElementTypeHideable(adblock_resource_type_)) {
+ element_hider->HideBlockedElement(
+ request_url_, content::RenderFrameHost::FromID(factory_->host_id_));
+ }
+ PostResponseHeadersCallbackToUI(std::move(callback), result, nullptr);
+ return;
+ }
+
+ if (adblock_resource_type_ == ContentType::Subdocument) {
+ factory_->config_.sitekey_storage->ProcessResponseHeaders(
+ request_url_, headers, factory_->user_agent_string_);
+
+ factory_->config_.csp_injector
+ ->InsertContentSecurityPolicyHeadersIfApplicable(
+ request_url_, factory_->host_id_, headers,
+ base::BindOnce(std::move(callback), result));
+ } else {
+ PostResponseHeadersCallbackToUI(std::move(callback), result, nullptr);
+ }
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::PostFilterMatchCallbackToUI(
+ CheckFilterMatchCallback callback,
+ FilterMatchResult result) {
+ content::GetUIThreadTaskRunner({kTaskResponsePriority})
+ ->PostTask(FROM_HERE, base::BindOnce(std::move(callback), result));
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::
+ PostResponseHeadersCallbackToUI(
+ ProcessResponseHeadersCallback callback,
+ FilterMatchResult result,
+ network::mojom::ParsedHeadersPtr parsed_headers) {
+ content::GetUIThreadTaskRunner({kTaskResponsePriority})
+ ->PostTask(FROM_HERE, base::BindOnce(std::move(callback), result,
+ std::move(parsed_headers)));
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::PostRewriteCallbackToUI(
+ base::OnceCallback<void(const absl::optional<GURL>&)> callback,
+ const absl::optional<GURL>& url) {
+ content::GetUIThreadTaskRunner({kTaskResponsePriority})
+ ->PostTask(FROM_HERE, base::BindOnce(std::move(callback), url));
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::OnReceiveRedirect(
+ const net::RedirectInfo& redirect_info,
+ network::mojom::URLResponseHeadPtr head) {
+ VLOG(1)
+ << "[eyeo] AdblockURLLoaderFactory::InProgressRequest::OnReceiveRedirect "
+ "from "
+ << request_url_ << " to " << redirect_info.new_url;
+ request_url_ = redirect_info.new_url;
+ if (net::IsLocalhost(request_url_) || (!request_url_.SchemeIsHTTPOrHTTPS() &&
+ !request_url_.SchemeIsWSOrWSS())) {
+ VLOG(1)
+ << "[eyeo] Ignoring URL (local url or unsupported scheme), allowing "
+ "load.";
+ target_client_->OnReceiveRedirect(redirect_info, std::move(head));
+ return;
+ }
+ CheckFilterMatch(base::BindOnce(
+ &InProgressRequest::OnRedirectFilterMatchResult,
+ weak_factory_.GetWeakPtr(), redirect_info, std::move(head)));
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::OnRedirectFilterMatchResult(
+ const net::RedirectInfo& redirect_info,
+ network::mojom::URLResponseHeadPtr head,
+ FilterMatchResult result) {
+ if (!factory_->target_factory_.is_bound()) {
+ DLOG(WARNING) << "[eyeo] "
+ "AdblockURLLoaderFactory::InProgressRequest::"
+ "OnRedirectFilterMatchResult: target_factory_ not bound";
+ return;
+ }
+ if (result == FilterMatchResult::kBlockRule) {
+ if (is_document_request_ && factory_->CheckHostValid()) {
+ // This path means we classified popup
+ auto* wc = content::WebContents::FromRenderFrameHost(
+ content::RenderFrameHost::FromID(factory_->host_id_));
+ DCHECK(wc);
+ wc->ClosePage();
+ }
+ OnRequestError(net::ERR_BLOCKED_BY_ADMINISTRATOR);
+ return;
+ }
+ target_client_->OnReceiveRedirect(redirect_info, std::move(head));
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::OnUploadProgress(
+ int64_t current_position,
+ int64_t total_size,
+ OnUploadProgressCallback callback) {
+ target_client_->OnUploadProgress(current_position, total_size,
+ std::move(callback));
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::OnTransferSizeUpdated(
+ int32_t transfer_size_diff) {
+ target_client_->OnTransferSizeUpdated(transfer_size_diff);
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::OnComplete(
+ const network::URLLoaderCompletionStatus& status) {
+ target_client_->OnComplete(status);
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::OnBindingsClosed() {
+ factory_->RemoveRequest(this);
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::OnClientDisconnected() {
+ OnRequestError(net::ERR_ABORTED);
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::Start(
+ uint32_t options,
+ network::ResourceRequest request,
+ const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
+ mojo::PendingReceiver<network::mojom::URLLoader> target_loader,
+ mojo::PendingRemote<network::mojom::URLLoaderClient> proxy_client,
+ const absl::optional<GURL>& rewrite) {
+ if (rewrite) {
+ constexpr int kInternalRedirectStatusCode = net::HTTP_TEMPORARY_REDIRECT;
+ net::RedirectInfo redirect_info = net::RedirectInfo::ComputeRedirectInfo(
+ request.method, request.url, request.site_for_cookies,
+ request.update_first_party_url_on_redirect
+ ? net::RedirectInfo::FirstPartyURLPolicy::UPDATE_URL_ON_REDIRECT
+ : net::RedirectInfo::FirstPartyURLPolicy::NEVER_CHANGE_URL,
+ request.referrer_policy, request.referrer.spec(),
+ kInternalRedirectStatusCode, rewrite.value(),
+ absl::nullopt /* referrer_policy_header */,
+ false /* insecure_scheme_was_upgraded */, false /* copy_fragment */,
+ false /* is_signed_exchange_fallback_redirect */);
+ redirect_info.bypass_redirect_checks = true;
+
+ auto head = network::mojom::URLResponseHead::New();
+ std::string headers = base::StringPrintf(
+ "HTTP/1.1 %i Internal Redirect\n"
+ "Location: %s\n"
+ "Non-Authoritative-Reason: ABPC\n\n",
+ kInternalRedirectStatusCode, rewrite.value().spec().c_str());
+ head->headers = base::MakeRefCounted<net::HttpResponseHeaders>(
+ net::HttpUtil::AssembleRawHeaders(headers));
+ head->encoded_data_length = 0;
+
+ // Close the connection with the current URLLoader and inform the
+ // client about redirect. New URLLoader will be recreated after redirect.
+ client_receiver_.reset();
+ target_loader_.reset();
+ target_client_->OnReceiveRedirect(redirect_info, std::move(head));
+ return;
+ }
+
+ if (!factory_->target_factory_.is_bound()) {
+ DLOG(WARNING)
+ << "[eyeo] AdblockURLLoaderFactory::InProgressRequest::Start: "
+ "target_factory_ not bound";
+ return;
+ }
+
+ if (net::IsLocalhost(request_url_) || (!request_url_.SchemeIsHTTPOrHTTPS() &&
+ !request_url_.SchemeIsWSOrWSS())) {
+ VLOG(1)
+ << "[eyeo] Ignoring URL (local url or unsupported scheme), allowing "
+ "load.";
+ factory_->target_factory_->CreateLoaderAndStart(
+ std::move(target_loader), request_id_, options, request,
+ std::move(proxy_client), traffic_annotation);
+ return;
+ }
+
+ VLOG(1) << "[eyeo] Checking filter match for: " << request.url << " ("
+ << request.resource_type << ")";
+
+ CheckFilterMatch(base::BindOnce(
+ &InProgressRequest::OnRequestFilterMatchResult,
+ weak_factory_.GetWeakPtr(), std::move(target_loader), options, request,
+ std::move(proxy_client), traffic_annotation));
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::OnRequestFilterMatchResult(
+ ::mojo::PendingReceiver<network::mojom::URLLoader> target_loader,
+ uint32_t options,
+ const network::ResourceRequest& request,
+ ::mojo::PendingRemote<network::mojom::URLLoaderClient> proxy_client,
+ const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
+ FilterMatchResult result) {
+ if (!factory_->target_factory_.is_bound()) {
+ DLOG(WARNING) << "[eyeo] "
+ "AdblockURLLoaderFactory::InProgressRequest::"
+ "OnRequestFilterMatchResult: target_factory_ not bound";
+ return;
+ }
+ if (result == FilterMatchResult::kBlockRule) {
+ OnRequestError(net::ERR_BLOCKED_BY_ADMINISTRATOR);
+ return;
+ }
+ factory_->target_factory_->CreateLoaderAndStart(
+ std::move(target_loader), request_id_, options, request,
+ std::move(proxy_client), traffic_annotation);
+}
+
+AdblockURLLoaderFactory::AdblockURLLoaderFactory(
+ AdblockURLLoaderFactoryConfig config,
+ content::GlobalRenderFrameHostId host_id,
+ mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver,
+ mojo::PendingRemote<network::mojom::URLLoaderFactory> target_factory,
+ std::string user_agent_string,
+ DisconnectCallback on_disconnect)
+ : config_(std::move(config)),
+ host_id_(host_id),
+ user_agent_string_(std::move(user_agent_string)),
+ on_disconnect_(std::move(on_disconnect)) {
+ DCHECK(config_.subscription_service);
+ DCHECK(config_.resource_classifier);
+ DCHECK(config_.element_hider);
+ DCHECK(config_.sitekey_storage);
+ DCHECK(config_.csp_injector);
+ target_factory_.Bind(std::move(target_factory));
+ target_factory_.set_disconnect_handler(base::BindOnce(
+ &AdblockURLLoaderFactory::OnTargetFactoryError, base::Unretained(this)));
+ proxy_receivers_.Add(this, std::move(receiver));
+ proxy_receivers_.set_disconnect_handler(base::BindRepeating(
+ &AdblockURLLoaderFactory::OnProxyBindingError, base::Unretained(this)));
+}
+
+AdblockURLLoaderFactory::~AdblockURLLoaderFactory() = default;
+
+void AdblockURLLoaderFactory::CreateLoaderAndStart(
+ ::mojo::PendingReceiver<network::mojom::URLLoader> loader,
+ int32_t request_id,
+ uint32_t options,
+ const network::ResourceRequest& request,
+ ::mojo::PendingRemote<network::mojom::URLLoaderClient> client,
+ const net::MutableNetworkTrafficAnnotationTag& traffic_annotation) {
+ requests_.insert(std::make_unique<InProgressRequest>(
+ this, std::move(loader), request_id, options, request, std::move(client),
+ traffic_annotation));
+}
+
+void AdblockURLLoaderFactory::Clone(
+ ::mojo::PendingReceiver<URLLoaderFactory> factory) {
+ proxy_receivers_.Add(this, std::move(factory));
+}
+
+bool AdblockURLLoaderFactory::CheckHostValid() const {
+ return content::RenderFrameHost::FromID(host_id_) != nullptr;
+}
+
+void AdblockURLLoaderFactory::OnTargetFactoryError() {
+ target_factory_.reset();
+ proxy_receivers_.Clear();
+ MaybeDestroySelf();
+}
+
+void AdblockURLLoaderFactory::OnProxyBindingError() {
+ MaybeDestroySelf();
+}
+
+void AdblockURLLoaderFactory::RemoveRequest(InProgressRequest* request) {
+ auto it = requests_.find(request);
+ DCHECK(it != requests_.end());
+ requests_.erase(it);
+ MaybeDestroySelf();
+}
+
+void AdblockURLLoaderFactory::MaybeDestroySelf() {
+ if (proxy_receivers_.empty() && requests_.empty()) {
+ std::move(on_disconnect_).Run(this);
+ }
+}
+
+} // namespace adblock
diff --git a/components/adblock/content/browser/adblock_url_loader_factory.h b/components/adblock/content/browser/adblock_url_loader_factory.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/adblock_url_loader_factory.h
@@ -0,0 +1,100 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_ADBLOCK_URL_LOADER_FACTORY_H_
+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_ADBLOCK_URL_LOADER_FACTORY_H_
+
+#include "base/containers/unique_ptr_adapters.h"
+#include "base/memory/raw_ptr.h"
+#include "components/adblock/content/browser/adblock_filter_match.h"
+#include "content/public/browser/global_routing_id.h"
+#include "mojo/public/cpp/bindings/receiver_set.h"
+#include "mojo/public/cpp/bindings/remote.h"
+#include "services/network/public/mojom/url_loader_factory.mojom.h"
+
+namespace adblock {
+
+class SubscriptionService;
+class ResourceClassificationRunner;
+class ElementHider;
+class SitekeyStorage;
+class ContentSecurityPolicyInjector;
+
+struct AdblockURLLoaderFactoryConfig {
+ // These raw_ptrs have DisableDanglingPtrDetection because they point to
+ // KeyedServices that will be removed with the BrowserContext. This object has
+ // no good method to find out when the BrowserContext is destroyed, so it
+ // can't null the pointers.
+ raw_ptr<SubscriptionService, DisableDanglingPtrDetection>
+ subscription_service = nullptr;
+ raw_ptr<ResourceClassificationRunner, DisableDanglingPtrDetection>
+ resource_classifier = nullptr;
+ raw_ptr<ElementHider, DisableDanglingPtrDetection> element_hider = nullptr;
+ raw_ptr<SitekeyStorage, DisableDanglingPtrDetection> sitekey_storage =
+ nullptr;
+ raw_ptr<ContentSecurityPolicyInjector, DisableDanglingPtrDetection>
+ csp_injector = nullptr;
+};
+
+// Processing network requests and responses.
+class AdblockURLLoaderFactory : public network::mojom::URLLoaderFactory {
+ public:
+ using DisconnectCallback = base::OnceCallback<void(AdblockURLLoaderFactory*)>;
+
+ AdblockURLLoaderFactory(
+ AdblockURLLoaderFactoryConfig config,
+ content::GlobalRenderFrameHostId host_id,
+ mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver,
+ mojo::PendingRemote<network::mojom::URLLoaderFactory> target_factory,
+ std::string user_agent_string,
+ DisconnectCallback on_disconnect);
+ ~AdblockURLLoaderFactory() override;
+
+ void CreateLoaderAndStart(
+ ::mojo::PendingReceiver<::network::mojom::URLLoader> loader,
+ int32_t request_id,
+ uint32_t options,
+ const ::network::ResourceRequest& request,
+ ::mojo::PendingRemote<::network::mojom::URLLoaderClient> client,
+ const ::net::MutableNetworkTrafficAnnotationTag& traffic_annotation)
+ override;
+ void Clone(::mojo::PendingReceiver<URLLoaderFactory> factory) override;
+
+ virtual bool CheckHostValid() const;
+
+ private:
+ class InProgressRequest;
+ friend class InProgressRequest;
+
+ void OnTargetFactoryError();
+ void OnProxyBindingError();
+ void RemoveRequest(InProgressRequest* request);
+ void MaybeDestroySelf();
+
+ AdblockURLLoaderFactoryConfig config_;
+ content::GlobalRenderFrameHostId host_id_;
+ mojo::ReceiverSet<network::mojom::URLLoaderFactory> proxy_receivers_;
+ std::set<std::unique_ptr<InProgressRequest>, base::UniquePtrComparator>
+ requests_;
+ mojo::Remote<network::mojom::URLLoaderFactory> target_factory_;
+ const std::string user_agent_string_;
+ DisconnectCallback on_disconnect_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_ADBLOCK_URL_LOADER_FACTORY_H_
diff --git a/components/adblock/content/browser/adblock_url_loader_factory_for_test.cc b/components/adblock/content/browser/adblock_url_loader_factory_for_test.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/adblock_url_loader_factory_for_test.cc
@@ -0,0 +1,436 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/content/browser/adblock_url_loader_factory_for_test.h"
+
+#include "base/strings/string_split.h"
+#include "base/strings/string_util.h"
+#include "base/strings/utf_string_conversions.h"
+#include "components/adblock/core/configuration/filtering_configuration.h"
+#include "components/adblock/core/subscription/subscription_config.h"
+#include "net/http/http_status_code.h"
+#include "net/http/http_util.h"
+#include "services/network/public/cpp/resource_request.h"
+#include "services/network/public/mojom/url_loader.mojom.h"
+#include "services/network/public/mojom/url_loader_factory.mojom.h"
+#include "services/network/public/mojom/url_response_head.mojom.h"
+#include "url/url_canon.h"
+#include "url/url_util.h"
+
+namespace adblock {
+
+namespace {
+
+constexpr char kResponseOk[] = "OK";
+constexpr char kResponseInvalidCommand[] = "INVALID_COMMAND";
+constexpr char kTopicFilters[] = "filters";
+constexpr char kTopicDomains[] = "domains";
+constexpr char kTopicSubscriptions[] = "subscriptions";
+constexpr char kTopicAdblock[] = "adblock";
+constexpr char kTopicAcceptableAds[] = "aa";
+constexpr char kTopicHelp[] = "help";
+
+constexpr char kActionAdd[] = "add";
+constexpr char kActionClear[] = "clear";
+constexpr char kActionList[] = "list";
+constexpr char kActionRemove[] = "remove";
+constexpr char kActionEnable[] = "enable";
+constexpr char kActionDisable[] = "disable";
+constexpr char kActionState[] = "state";
+
+constexpr char kHelp[] = R"(
+ Command syntax `adblock.test.data/[topic]/[action]/[payload]` where:
+ - `topic` is either `domains` (allowed domains), `filters`, `subscriptions`,
+ `adblock`, `aa` (Acceptable Ads)
+ - `action` is either:
+ - `add`, `clear` (remove all), `list`, `remove` valid for `domains`,
+ `filters` and `subscriptions`
+ - `enable`, `disable` or `state` valid for `aa` and `adblock`
+ - `payload` is url encoded string required for action `add` and `remove`.
+ When adding or removing filter/domain/subscription one can encode several
+ entries splitting them by a new line character.
+
+ An example:
+ Call `adblock.test.data/filters/add/%2FadsPlugin%2F%2A%0A%2Fadsponsor.`
+ Then calling `adblock.test.data/filters/list` returns:
+
+ OK
+
+ /adsPlugin/*
+ /adsponsor.
+)";
+
+constexpr char payload_delimiter[] = "\n";
+
+std::string DecodePayload(const std::string& encoded) {
+ // Example how to encode:
+ // url::RawCanonOutputT<char> buffer;
+ // url::EncodeURIComponent(base.c_str(), base.size(), &buffer);
+ // std::string encoded(buffer.data(), buffer.length());
+ VLOG(2) << "[eyeo] Encoded payload: " << encoded;
+ url::RawCanonOutputT<char16_t> output;
+ url::DecodeURLEscapeSequences(encoded.c_str(), encoded.size(),
+ url::DecodeURLMode::kUTF8OrIsomorphic, &output);
+ std::string decoded =
+ base::UTF16ToUTF8(std::u16string(output.data(), output.length()));
+ VLOG(2) << "[eyeo] Decoded payload: " << decoded;
+ return decoded;
+}
+
+std::string GetPayload(const std::string& input) {
+ static const char kPayloadParam[] = "payload=";
+ if (base::StartsWith(input, kPayloadParam)) {
+ return input.substr(sizeof(kPayloadParam) - 1);
+ }
+ return "";
+}
+
+std::vector<std::string> GetCommandElements(const GURL& url) {
+ std::vector<std::string> command_elements;
+ auto path = url.path();
+ if (path.length() > 1) {
+ path.erase(0, 1);
+ command_elements = base::SplitString(path, "/", base::KEEP_WHITESPACE,
+ base::SPLIT_WANT_NONEMPTY);
+ if (command_elements.size() == 1) {
+ // Check old format
+ if (path == kActionAdd || path == kActionRemove) {
+ auto payload = GetPayload(url.query());
+ if (payload.length() > 0) {
+ command_elements = {kTopicFilters,
+ path == kActionAdd ? kActionAdd : kActionRemove,
+ payload};
+ }
+ }
+ }
+ }
+ return command_elements;
+}
+
+void Clear(SubscriptionService* subscription_service,
+ std::vector<std::string> (FilteringConfiguration::*getter)() const,
+ void (FilteringConfiguration::*action)(const std::string&)) {
+ auto* adblock_configuration =
+ subscription_service->GetAdblockFilteringConfiguration();
+ DCHECK(adblock_configuration)
+ << "Action called for non existing \"adblock\" configuration";
+ for (const auto& item : (adblock_configuration->*getter)()) {
+ (adblock_configuration->*action)(item);
+ }
+}
+
+std::vector<std::string> List(
+ SubscriptionService* subscription_service,
+ std::vector<std::string> (FilteringConfiguration::*getter)() const) {
+ auto* adblock_configuration =
+ subscription_service->GetAdblockFilteringConfiguration();
+ DCHECK(adblock_configuration)
+ << "Action called for non existing \"adblock\" configuration";
+ return (adblock_configuration->*getter)();
+}
+
+void AddOrRemove(SubscriptionService* subscription_service,
+ void (FilteringConfiguration::*action)(const std::string&),
+ std::string& items) {
+ auto items_list = base::SplitString(items, payload_delimiter,
+ base::WhitespaceHandling::TRIM_WHITESPACE,
+ base::SplitResult::SPLIT_WANT_NONEMPTY);
+ auto* adblock_configuration =
+ subscription_service->GetAdblockFilteringConfiguration();
+ DCHECK(adblock_configuration)
+ << "Action called for non existing \"adblock\" configuration";
+ for (const auto& item : items_list) {
+ (adblock_configuration->*action)(item);
+ }
+}
+
+void ClearSubscriptions(SubscriptionService* subscription_service) {
+ auto* adblock_configuration =
+ subscription_service->GetAdblockFilteringConfiguration();
+ DCHECK(adblock_configuration)
+ << "Action called for non existing \"adblock\" configuration";
+ for (const auto& subscription : adblock_configuration->GetFilterLists()) {
+ adblock_configuration->RemoveFilterList(subscription);
+ }
+}
+
+std::vector<std::string> ListSubscriptions(
+ SubscriptionService* subscription_service) {
+ auto* adblock_configuration =
+ subscription_service->GetAdblockFilteringConfiguration();
+ DCHECK(adblock_configuration)
+ << "Action called for non existing \"adblock\" configuration";
+ std::vector<std::string> subscriptions;
+ base::ranges::transform(
+ adblock_configuration->GetFilterLists(),
+ std::back_inserter(subscriptions),
+ [](const auto& subscription) { return subscription.spec(); });
+ return subscriptions;
+}
+
+void AddOrRemoveSubscription(
+ SubscriptionService* subscription_service,
+ void (FilteringConfiguration::*action)(const GURL&),
+ std::string& items) {
+ auto* adblock_configuration =
+ subscription_service->GetAdblockFilteringConfiguration();
+ DCHECK(adblock_configuration)
+ << "Action called for non existing \"adblock\" configuration";
+ auto items_list = base::SplitString(items, payload_delimiter,
+ base::WhitespaceHandling::TRIM_WHITESPACE,
+ base::SplitResult::SPLIT_WANT_NONEMPTY);
+ for (const auto& item : items_list) {
+ (adblock_configuration->*action)(GURL{item});
+ }
+}
+
+bool IsAdblockEnabled(SubscriptionService* subscription_service) {
+ auto* adblock_configuration =
+ subscription_service->GetAdblockFilteringConfiguration();
+ DCHECK(adblock_configuration)
+ << "Action called for non existing \"adblock\" configuration";
+ return adblock_configuration->IsEnabled();
+}
+
+void SetAdblockEnabled(SubscriptionService* subscription_service,
+ bool enabled) {
+ auto* adblock_configuration =
+ subscription_service->GetAdblockFilteringConfiguration();
+ DCHECK(adblock_configuration)
+ << "Action called for non existing \"adblock\" configuration";
+ adblock_configuration->SetEnabled(enabled);
+}
+
+bool IsAAEnabled(SubscriptionService* subscription_service) {
+ auto* adblock_configuration =
+ subscription_service->GetAdblockFilteringConfiguration();
+ DCHECK(adblock_configuration)
+ << "Action called for non existing \"adblock\" configuration";
+ return base::ranges::any_of(
+ adblock_configuration->GetFilterLists(),
+ [&](const auto& url) { return url == AcceptableAdsUrl(); });
+}
+
+void SetAAEnabled(SubscriptionService* subscription_service, bool enabled) {
+ auto* adblock_configuration =
+ subscription_service->GetAdblockFilteringConfiguration();
+ DCHECK(adblock_configuration)
+ << "Action called for non existing \"adblock\" configuration";
+ enabled ? adblock_configuration->AddFilterList(AcceptableAdsUrl())
+ : adblock_configuration->RemoveFilterList(AcceptableAdsUrl());
+}
+
+} // namespace
+
+// static
+const std::string AdblockURLLoaderFactoryForTest::kAdblockDebugDataHostName =
+ "adblock.test.data";
+
+AdblockURLLoaderFactoryForTest::AdblockURLLoaderFactoryForTest(
+ AdblockURLLoaderFactoryConfig config,
+ content::GlobalRenderFrameHostId host_id,
+ mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver,
+ mojo::PendingRemote<network::mojom::URLLoaderFactory> target_factory,
+ std::string user_agent_string,
+ DisconnectCallback on_disconnect,
+ SubscriptionService* subscription_service)
+ : AdblockURLLoaderFactory(std::move(config),
+ host_id,
+ std::move(receiver),
+ std::move(target_factory),
+ user_agent_string,
+ std::move(on_disconnect)),
+ subscription_service_(subscription_service) {}
+
+AdblockURLLoaderFactoryForTest::~AdblockURLLoaderFactoryForTest() = default;
+
+void AdblockURLLoaderFactoryForTest::CreateLoaderAndStart(
+ ::mojo::PendingReceiver<network::mojom::URLLoader> loader,
+ int32_t request_id,
+ uint32_t options,
+ const network::ResourceRequest& request,
+ ::mojo::PendingRemote<network::mojom::URLLoaderClient> client,
+ const net::MutableNetworkTrafficAnnotationTag& traffic_annotation) {
+ DCHECK(subscription_service_);
+ if (request.url.host() != kAdblockDebugDataHostName) {
+ DLOG(WARNING)
+ << "[eyeo] AdblockURLLoaderFactoryForTest got unexpected url: "
+ << request.url;
+ AdblockURLLoaderFactory::CreateLoaderAndStart(
+ std::move(loader), request_id, options, request, std::move(client),
+ traffic_annotation);
+ return;
+ }
+ VLOG(2) << "[eyeo] AdblockURLLoaderFactoryForTest handles: " << request.url;
+ std::string response_body = HandleCommand(request.url);
+ SendResponse(std::move(response_body), std::move(client));
+}
+
+void AdblockURLLoaderFactoryForTest::SendResponse(
+ std::string response_body,
+ ::mojo::PendingRemote<network::mojom::URLLoaderClient> client) const {
+ auto response_head = network::mojom::URLResponseHead::New();
+ response_head->mime_type = "text/plain";
+ mojo::Remote<network::mojom::URLLoaderClient> client_remote(
+ std::move(client));
+ mojo::ScopedDataPipeProducerHandle producer;
+ mojo::ScopedDataPipeConsumerHandle consumer;
+ if (CreateDataPipe(nullptr, producer, consumer) != MOJO_RESULT_OK) {
+ DLOG(ERROR)
+ << "[eyeo] AdblockURLLoaderFactoryForTest fails to call CreateDataPipe";
+ client_remote->OnComplete(
+ network::URLLoaderCompletionStatus(net::ERR_INSUFFICIENT_RESOURCES));
+ return;
+ }
+ uint32_t write_size = static_cast<uint32_t>(response_body.size());
+ producer->WriteData(response_body.c_str(), &write_size,
+ MOJO_WRITE_DATA_FLAG_NONE);
+ client_remote->OnReceiveResponse(std::move(response_head),
+ std::move(consumer), absl::nullopt);
+ network::URLLoaderCompletionStatus status;
+ status.error_code = net::OK;
+ status.decoded_body_length = write_size;
+ client_remote->OnComplete(status);
+}
+
+std::string AdblockURLLoaderFactoryForTest::HandleCommand(
+ const GURL& url) const {
+ auto command_elements = GetCommandElements(url);
+ if (command_elements.size() == 1 && command_elements[0] == kTopicHelp) {
+ return kHelp;
+ }
+ // There needs to be at least topic and action, plus optional payload
+ if (command_elements.size() > 1) {
+ const auto& topic = command_elements[0];
+ const auto& action = command_elements[1];
+ if (topic == kTopicSubscriptions) {
+ if (command_elements.size() == 3) {
+ // This can be either add or remove with custom payload
+ void (FilteringConfiguration::*action_ptr)(const GURL&) = nullptr;
+ std::string payload = DecodePayload(command_elements[2]);
+ if (action == kActionAdd) {
+ action_ptr = &FilteringConfiguration::AddFilterList;
+ } else if (action == kActionRemove) {
+ action_ptr = &FilteringConfiguration::RemoveFilterList;
+ }
+ if (action_ptr) {
+ VLOG(2) << "[eyeo] Handling subscription payload: " << payload;
+ AddOrRemoveSubscription(subscription_service_, action_ptr, payload);
+ return kResponseOk;
+ }
+ } else if (action == kActionClear) {
+ ClearSubscriptions(subscription_service_);
+ return kResponseOk;
+ } else if (action == kActionList) {
+ std::string response = kResponseOk;
+ auto subscriptions = ListSubscriptions(subscription_service_);
+ if (!subscriptions.empty()) {
+ response += "\n\n";
+ for (const auto& subscription : subscriptions) {
+ response += subscription + "\n";
+ }
+ }
+ return response;
+ }
+ } else if (topic == kTopicFilters || topic == kTopicDomains) {
+ if (command_elements.size() == 3) {
+ // This can be either add or remove with custom payload
+ void (FilteringConfiguration::*action_ptr)(const std::string&) =
+ nullptr;
+ std::string payload = DecodePayload(command_elements[2]);
+ if (topic == kTopicFilters) {
+ if (action == kActionAdd) {
+ action_ptr = &FilteringConfiguration::AddCustomFilter;
+ } else if (action == kActionRemove) {
+ action_ptr = &FilteringConfiguration::RemoveCustomFilter;
+ }
+ } else {
+ if (action == kActionAdd) {
+ action_ptr = &FilteringConfiguration::AddAllowedDomain;
+ } else if (action == kActionRemove) {
+ action_ptr = &FilteringConfiguration::RemoveAllowedDomain;
+ }
+ }
+ if (action_ptr) {
+ VLOG(2) << "[eyeo] Handling payload: " << payload;
+ AddOrRemove(subscription_service_, action_ptr, payload);
+ return kResponseOk;
+ }
+ } else {
+ std::vector<std::string> (FilteringConfiguration::*getter)() const =
+ nullptr;
+ void (FilteringConfiguration::*deleter)(const std::string&) = nullptr;
+ if (action == kActionClear) {
+ if (topic == kTopicFilters) {
+ deleter = &FilteringConfiguration::RemoveCustomFilter;
+ getter = &FilteringConfiguration::GetCustomFilters;
+ } else {
+ deleter = &FilteringConfiguration::RemoveAllowedDomain;
+ getter = &FilteringConfiguration::GetAllowedDomains;
+ }
+ } else if (action == kActionList) {
+ if (topic == kTopicFilters) {
+ getter = &FilteringConfiguration::GetCustomFilters;
+ } else {
+ getter = &FilteringConfiguration::GetAllowedDomains;
+ }
+ }
+ if (deleter && getter) {
+ Clear(subscription_service_, getter, deleter);
+ return kResponseOk;
+ } else if (getter) {
+ std::string response = kResponseOk;
+ auto items = List(subscription_service_, getter);
+ if (!items.empty()) {
+ response += "\n\n";
+ for (const auto& item : items) {
+ response += item + "\n";
+ }
+ }
+ return response;
+ }
+ }
+ } else if (topic == kTopicAdblock || topic == kTopicAcceptableAds) {
+ if (action == kActionState) {
+ std::string response = kResponseOk;
+ response += "\n\n";
+ bool enabled = topic == kTopicAdblock
+ ? IsAdblockEnabled(subscription_service_)
+ : IsAAEnabled(subscription_service_);
+ response += enabled ? "enabled" : "disabled";
+ return response;
+ }
+ absl::optional<bool> value = absl::nullopt;
+ if (action == kActionEnable) {
+ value = true;
+ } else if (action == kActionDisable) {
+ value = false;
+ }
+ if (value.has_value()) {
+ if (topic == kTopicAdblock) {
+ SetAdblockEnabled(subscription_service_, value.value());
+ } else {
+ SetAAEnabled(subscription_service_, value.value());
+ }
+ return kResponseOk;
+ }
+ }
+ }
+ return kResponseInvalidCommand;
+}
+
+} // namespace adblock
diff --git a/components/adblock/content/browser/adblock_url_loader_factory_for_test.h b/components/adblock/content/browser/adblock_url_loader_factory_for_test.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/adblock_url_loader_factory_for_test.h
@@ -0,0 +1,70 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_ADBLOCK_URL_LOADER_FACTORY_FOR_TEST_H_
+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_ADBLOCK_URL_LOADER_FACTORY_FOR_TEST_H_
+
+#include "components/adblock/content/browser/adblock_url_loader_factory.h"
+#include "components/adblock/core/subscription/subscription_service.h"
+
+namespace adblock {
+
+// A simple class which handles following commands passed via intercepted url
+// in a format `adblock.test.data/[topic]/[action]/[payload]` where:
+// - `topic` is either `domains` (allowed domains), `filters`, `subscriptions`,
+// `adblock`, `aa` (Acceptable Ads)
+// - `action` is either:
+// - `add`, `clear` (remove all), `list`, `remove` valid for `domains`,
+// `filters` and `subscriptions`
+// - `enable`, `disable` or `state` valid for `aa` and `adblock`
+// - `payload` is url encoded string required for action `add` and `remove`.
+// When adding or removing filter/domain/subscription one can encode several
+// entries splitting them by a new line character.
+class AdblockURLLoaderFactoryForTest final : public AdblockURLLoaderFactory {
+ public:
+ AdblockURLLoaderFactoryForTest(
+ AdblockURLLoaderFactoryConfig config,
+ content::GlobalRenderFrameHostId host_id,
+ mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver,
+ mojo::PendingRemote<network::mojom::URLLoaderFactory> target_factory,
+ std::string user_agent_string,
+ DisconnectCallback on_disconnect,
+ SubscriptionService* subscription_service);
+ ~AdblockURLLoaderFactoryForTest() final;
+
+ void CreateLoaderAndStart(
+ ::mojo::PendingReceiver<::network::mojom::URLLoader> loader,
+ int32_t request_id,
+ uint32_t options,
+ const ::network::ResourceRequest& request,
+ ::mojo::PendingRemote<::network::mojom::URLLoaderClient> client,
+ const ::net::MutableNetworkTrafficAnnotationTag& traffic_annotation)
+ final;
+
+ static const std::string kAdblockDebugDataHostName;
+
+ private:
+ std::string HandleCommand(const GURL& url) const;
+ void SendResponse(
+ std::string response_body,
+ ::mojo::PendingRemote<network::mojom::URLLoaderClient> client) const;
+ raw_ptr<SubscriptionService> subscription_service_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_ADBLOCK_URL_LOADER_FACTORY_FOR_TEST_H_
diff --git a/components/adblock/content/browser/adblock_webcontents_observer.cc b/components/adblock/content/browser/adblock_webcontents_observer.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/adblock_webcontents_observer.cc
@@ -0,0 +1,188 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/content/browser/adblock_webcontents_observer.h"
+
+#include "base/trace_event/trace_event.h"
+#include "components/adblock/content/browser/frame_opener_info.h"
+#include "components/adblock/core/common/sitekey.h"
+#include "components/adblock/core/subscription/subscription_service.h"
+#include "content/public/browser/navigation_handle.h"
+#include "net/base/url_util.h"
+#include "third_party/blink/public/common/frame/frame_owner_element_type.h"
+
+namespace {
+const char* WindowOpenDispositionToString(WindowOpenDisposition value) {
+ switch (value) {
+ case WindowOpenDisposition::UNKNOWN:
+ return "UNKNOWN";
+ case WindowOpenDisposition::CURRENT_TAB:
+ return "CURRENT_TAB";
+ case WindowOpenDisposition::SINGLETON_TAB:
+ return "SINGLETON_TAB";
+ case WindowOpenDisposition::NEW_FOREGROUND_TAB:
+ return "NEW_FOREGROUND_TAB";
+ case WindowOpenDisposition::NEW_BACKGROUND_TAB:
+ return "NEW_BACKGROUND_TAB";
+ case WindowOpenDisposition::NEW_POPUP:
+ return "NEW_POPUP";
+ case WindowOpenDisposition::NEW_WINDOW:
+ return "NEW_WINDOW";
+ case WindowOpenDisposition::SAVE_TO_DISK:
+ return "SAVE_TO_DISK";
+ case WindowOpenDisposition::OFF_THE_RECORD:
+ return "OFF_THE_RECORD";
+ case WindowOpenDisposition::IGNORE_ACTION:
+ return "IGNORE_ACTION";
+ case WindowOpenDisposition::SWITCH_TO_TAB:
+ return "SWITCH_TO_TAB";
+ case WindowOpenDisposition::NEW_PICTURE_IN_PICTURE:
+ return "NEW_PICTURE_IN_PICTURE";
+ default:
+ return "";
+ }
+}
+} // namespace
+
+void TraceHandleLoadComplete(
+ intptr_t rfh_trace_id,
+ const adblock::ElementHider::ElemhideInjectionData&) {
+ TRACE_EVENT_NESTABLE_ASYNC_END0("eyeo",
+ "AdblockWebContentObserver::HandleOnLoad",
+ TRACE_ID_LOCAL(rfh_trace_id));
+}
+
+AdblockWebContentObserver::AdblockWebContentObserver(
+ content::WebContents* web_contents,
+ adblock::SubscriptionService* subscription_service,
+ adblock::ElementHider* element_hider,
+ adblock::SitekeyStorage* sitekey_storage,
+ std::unique_ptr<adblock::FrameHierarchyBuilder> frame_hierarchy_builder)
+ : content::WebContentsObserver(web_contents),
+ content::WebContentsUserData<AdblockWebContentObserver>(*web_contents),
+ subscription_service_(subscription_service),
+ element_hider_(element_hider),
+ sitekey_storage_(sitekey_storage),
+ frame_hierarchy_builder_(std::move(frame_hierarchy_builder)) {}
+
+AdblockWebContentObserver::~AdblockWebContentObserver() = default;
+
+void AdblockWebContentObserver::DidOpenRequestedURL(
+ content::WebContents* new_contents,
+ content::RenderFrameHost* source_render_frame_host,
+ const GURL& url,
+ const content::Referrer& referrer,
+ WindowOpenDisposition disposition,
+ ui::PageTransition transition,
+ bool started_from_context_menu,
+ bool renderer_initiated) {
+ if (!IsAdblockEnabled()) {
+ return;
+ }
+ VLOG(1) << "[eyeo] DidOpenRequestedURL: URL=" << url
+ << ", disposition=" << WindowOpenDispositionToString(disposition)
+ << ", renderer_initiated=" << renderer_initiated;
+ if (disposition == WindowOpenDisposition::NEW_FOREGROUND_TAB ||
+ disposition == WindowOpenDisposition::NEW_POPUP) {
+ // WindowOpenDisposition::NEW_WINDOW is excluded as it is set when user
+ // opens a link in a new window from context menu.
+ // We use content::WebContentsUserData instead of content::DocumentUserData
+ // because the latter is reset when there is a client side redirection.
+ adblock::FrameOpenerInfo::CreateForWebContents(new_contents);
+ auto* info = adblock::FrameOpenerInfo::FromWebContents(new_contents);
+ info->SetOpener(source_render_frame_host->GetGlobalId());
+ }
+}
+
+void AdblockWebContentObserver::DidFinishNavigation(
+ content::NavigationHandle* navigation_handle) {
+ if (!IsAdblockEnabled()) {
+ return;
+ }
+ const GURL& url = navigation_handle->GetURL();
+ VLOG(1) << "[eyeo] Finished navigation: URL=" << url
+ << ", has_commited=" << navigation_handle->HasCommitted()
+ << ", is_error=" << navigation_handle->IsErrorPage()
+ << ", isInMainFrame=" << navigation_handle->IsInMainFrame();
+ if (navigation_handle->HasCommitted()) {
+ if (!navigation_handle->GetRenderFrameHost()) {
+ return;
+ }
+ if (!navigation_handle->IsErrorPage()) {
+ DVLOG(3) << "[eyeo] Ready to inject JS to " << url.spec();
+ HandleOnLoad(navigation_handle->GetRenderFrameHost());
+ }
+ if (navigation_handle->IsErrorPage() || url.IsAboutBlank() ||
+ !url.SchemeIsHTTPOrHTTPS()) {
+ DVLOG(3) << "[eyeo] Not suitable URL " << url.spec()
+ << ", error = " << navigation_handle->GetNetErrorCode()
+ << ", IsAboutSrcdoc = " << url.IsAboutSrcdoc();
+
+ if (navigation_handle->GetNetErrorCode() ==
+ net::ERR_BLOCKED_BY_ADMINISTRATOR &&
+ navigation_handle->GetRenderFrameHost()->GetFrameOwnerElementType() ==
+ blink::FrameOwnerElementType::kIframe) {
+ // element hiding for blocked element
+ DVLOG(3) << "[eyeo] Subframe url=" << url.spec()
+ << ", isAboutSrcDoc = " << url.IsAboutSrcdoc();
+ element_hider_->HideBlockedElement(
+ url, navigation_handle->GetRenderFrameHost()->GetParent());
+ }
+ }
+ }
+}
+
+void AdblockWebContentObserver::HandleOnLoad(
+ content::RenderFrameHost* frame_host) {
+ DCHECK(frame_host);
+ const GURL url =
+ frame_hierarchy_builder_->FindUrlForFrame(frame_host, web_contents());
+ if (net::IsLocalhost(url)) {
+ DVLOG(1) << "[eyeo] skipping element hiding on localhost URL";
+ return;
+ }
+ const auto rfh_trace_id = reinterpret_cast<intptr_t>(frame_host);
+ TRACE_EVENT_NESTABLE_ASYNC_BEGIN1(
+ "eyeo", "AdblockWebContentObserver::HandleOnLoad",
+ TRACE_ID_LOCAL(rfh_trace_id), "url", url.spec());
+
+ auto referrers_chain =
+ frame_hierarchy_builder_->BuildFrameHierarchy(frame_host);
+ DVLOG(1) << "[eyeo] Got " << referrers_chain.size() << " referrers for "
+ << url.spec();
+
+ adblock::SiteKey site_key;
+ auto url_key_pair = sitekey_storage_->FindSiteKeyForAnyUrl(referrers_chain);
+ if (url_key_pair.has_value()) {
+ site_key = url_key_pair->second;
+ DVLOG(2) << "[eyeo] Element hiding found siteKey: " << url_key_pair->second
+ << " for url: " << url_key_pair->first;
+ }
+
+ element_hider_->ApplyElementHidingEmulationOnPage(
+ std::move(url), std::move(referrers_chain), frame_host,
+ std::move(site_key),
+ base::BindOnce(&TraceHandleLoadComplete, rfh_trace_id));
+}
+
+bool AdblockWebContentObserver::IsAdblockEnabled() const {
+ return base::ranges::any_of(
+ subscription_service_->GetInstalledFilteringConfigurations(),
+ &adblock::FilteringConfiguration::IsEnabled);
+}
+
+WEB_CONTENTS_USER_DATA_KEY_IMPL(AdblockWebContentObserver);
diff --git a/components/adblock/content/browser/adblock_webcontents_observer.h b/components/adblock/content/browser/adblock_webcontents_observer.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/adblock_webcontents_observer.h
@@ -0,0 +1,85 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_ADBLOCK_WEBCONTENTS_OBSERVER_H_
+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_ADBLOCK_WEBCONTENTS_OBSERVER_H_
+
+#include "base/memory/raw_ptr.h"
+#include "components/adblock/content/browser/element_hider.h"
+#include "components/adblock/content/browser/frame_hierarchy_builder.h"
+#include "components/adblock/core/adblock_controller.h"
+#include "components/adblock/core/sitekey_storage.h"
+#include "components/adblock/core/subscription/subscription_service.h"
+#include "content/public/browser/web_contents.h"
+#include "content/public/browser/web_contents_observer.h"
+#include "content/public/browser/web_contents_user_data.h"
+
+namespace content {
+class NavigationHandle;
+class RenderFrameHost;
+} // namespace content
+
+class GURL;
+/**
+ * @brief Listens to page load events to trigger frame-wide element hiding.
+ * Responds to notifications about blocked resource loads to collapse the
+ * empty space around them. Lives in browser process UI thread.
+ *
+ */
+class AdblockWebContentObserver
+ : public content::WebContentsObserver,
+ public content::WebContentsUserData<AdblockWebContentObserver> {
+ public:
+ AdblockWebContentObserver(
+ content::WebContents* web_contents,
+ adblock::SubscriptionService* subscription_service,
+ adblock::ElementHider* element_hider,
+ adblock::SitekeyStorage* sitekey_storage,
+ std::unique_ptr<adblock::FrameHierarchyBuilder> frame_hierarchy_builder);
+ ~AdblockWebContentObserver() override;
+ AdblockWebContentObserver(const AdblockWebContentObserver&) = delete;
+ AdblockWebContentObserver& operator=(const AdblockWebContentObserver&) =
+ delete;
+
+ // WebContentsObserver overrides.
+ void DidFinishNavigation(
+ content::NavigationHandle* navigation_handle) override;
+
+ void DidOpenRequestedURL(content::WebContents* new_contents,
+ content::RenderFrameHost* source_render_frame_host,
+ const GURL& url,
+ const content::Referrer& referrer,
+ WindowOpenDisposition disposition,
+ ui::PageTransition transition,
+ bool started_from_context_menu,
+ bool renderer_initiated) override;
+
+ private:
+ explicit AdblockWebContentObserver(content::WebContents* web_contents);
+ void HandleOnLoad(content::RenderFrameHost* render_frame_host);
+ bool IsAdblockEnabled() const;
+
+ friend class content::WebContentsUserData<AdblockWebContentObserver>;
+ WEB_CONTENTS_USER_DATA_KEY_DECL();
+
+ raw_ptr<adblock::SubscriptionService> subscription_service_;
+ raw_ptr<adblock::ElementHider> element_hider_;
+ raw_ptr<adblock::SitekeyStorage> sitekey_storage_;
+
+ std::unique_ptr<adblock::FrameHierarchyBuilder> frame_hierarchy_builder_;
+};
+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_ADBLOCK_WEBCONTENTS_OBSERVER_H_
diff --git a/components/adblock/content/browser/content_security_policy_injector.h b/components/adblock/content/browser/content_security_policy_injector.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/content_security_policy_injector.h
@@ -0,0 +1,61 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_CONTENT_SECURITY_POLICY_INJECTOR_H_
+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_CONTENT_SECURITY_POLICY_INJECTOR_H_
+
+#include <string>
+
+#include "components/adblock/content/browser/adblock_filter_match.h"
+#include "components/keyed_service/core/keyed_service.h"
+#include "content/public/browser/global_routing_id.h"
+#include "net/http/http_response_headers.h"
+#include "services/network/public/mojom/parsed_headers.mojom-forward.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+using InsertContentSecurityPolicyHeadersCallback =
+ base::OnceCallback<void(network::mojom::ParsedHeadersPtr)>;
+
+// Implements CSP filter application.
+//
+// CSP filters are an anti-circumvention technique that allows injecting a
+// Content Security Policy header into a HTTP response.
+// For example, a "Content-Security-Policy: script-src: 'none'" header blocks
+// all scripts, including inline, in the received document.
+// This will not block downloading the resource, but may stop it from executing
+// further actions once it has downloaded.
+class ContentSecurityPolicyInjector : public KeyedService {
+ public:
+ // If a CSP filter exists for this URL in any of currently installed filter
+ // lists, inserts its payload into |headers| as a Content-Security-Policy
+ // header type.
+ // |callback| will be posted, never called in-stack. If |headers| were
+ // changed, |callback| will receive a ParsedHeaders object that matches the
+ // new state of the response headers - otherwise |callback| will receive
+ // nullptr.
+ virtual void InsertContentSecurityPolicyHeadersIfApplicable(
+ const GURL& request_url,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ const scoped_refptr<net::HttpResponseHeaders>& headers,
+ InsertContentSecurityPolicyHeadersCallback callback) = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_CONTENT_SECURITY_POLICY_INJECTOR_H_
diff --git a/components/adblock/content/browser/content_security_policy_injector_impl.cc b/components/adblock/content/browser/content_security_policy_injector_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/content_security_policy_injector_impl.cc
@@ -0,0 +1,125 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/content/browser/content_security_policy_injector_impl.h"
+
+#include "base/functional/bind.h"
+#include "base/logging.h"
+#include "base/memory/scoped_refptr.h"
+#include "base/sequence_checker.h"
+#include "base/task/thread_pool.h"
+#include "base/trace_event/trace_event.h"
+#include "components/adblock/core/subscription/subscription_service.h"
+#include "content/public/browser/network_service_instance.h"
+#include "services/network/public/mojom/url_response_head.mojom.h"
+
+namespace adblock {
+namespace {
+
+std::set<base::StringPiece> GetCspInjections(
+ const SubscriptionService::Snapshot subscription_collections,
+ const GURL request_url,
+ const std::vector<GURL> frame_hierarchy_chain) {
+ TRACE_EVENT1("eyeo", "GetCspInjection", "url", request_url.spec());
+ std::set<base::StringPiece> injections;
+ for (const auto& collection : subscription_collections) {
+ const auto injection =
+ collection->GetCspInjections(request_url, frame_hierarchy_chain);
+ injections.insert(injection.begin(), injection.end());
+ }
+ if (!injections.empty()) {
+ VLOG(1) << "[eyeo] Will attempt to inject CSP header/s "
+ << " for " << request_url;
+ DVLOG(2) << "[eyeo] CSP headers for " << request_url << ":";
+ for (const auto& filter : injections) {
+ DVLOG(2) << "[eyeo] " << filter;
+ }
+ }
+ return injections;
+}
+
+} // namespace
+
+ContentSecurityPolicyInjectorImpl::ContentSecurityPolicyInjectorImpl(
+ SubscriptionService* subscription_service,
+ std::unique_ptr<FrameHierarchyBuilder> frame_hierarchy_builder)
+ : subscription_service_(subscription_service),
+ frame_hierarchy_builder_(std::move(frame_hierarchy_builder)) {}
+
+ContentSecurityPolicyInjectorImpl::~ContentSecurityPolicyInjectorImpl() =
+ default;
+
+void ContentSecurityPolicyInjectorImpl::
+ InsertContentSecurityPolicyHeadersIfApplicable(
+ const GURL& request_url,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ const scoped_refptr<net::HttpResponseHeaders>& headers,
+ InsertContentSecurityPolicyHeadersCallback callback) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ content::RenderFrameHost* host =
+ frame_hierarchy_builder_->FindRenderFrameHost(render_frame_host_id);
+ if (host) {
+ // GetCspInjection might take a while, let it run in the background.
+ base::ThreadPool::PostTaskAndReplyWithResult(
+ FROM_HERE, {},
+ base::BindOnce(&GetCspInjections,
+ subscription_service_->GetCurrentSnapshot(), request_url,
+ frame_hierarchy_builder_->BuildFrameHierarchy(host)),
+ base::BindOnce(
+ &ContentSecurityPolicyInjectorImpl::OnCspInjectionsSearchFinished,
+ weak_ptr_factory.GetWeakPtr(), request_url, std::move(headers),
+ std::move(callback)));
+ } else {
+ // This request is likely dead, since there's no associated RenderFrameHost.
+ // Post the callback to the current sequence to unblock any callers that
+ // might be waiting for it.
+ std::move(callback).Run(nullptr);
+ }
+}
+
+void ContentSecurityPolicyInjectorImpl::OnCspInjectionsSearchFinished(
+ const GURL request_url,
+ const scoped_refptr<net::HttpResponseHeaders> headers,
+ InsertContentSecurityPolicyHeadersCallback callback,
+ std::set<base::StringPiece> csp_injections) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ if (!csp_injections.empty()) {
+ for (const auto& c_i : csp_injections) {
+ // Set the CSP header according to |csp_injection|.
+ headers->AddHeader("Content-Security-Policy", c_i);
+ }
+ // We need to ensure parsed headers match raw headers. Send the updated
+ // raw headers to NetworkService for parsing.
+ content::GetNetworkService()->ParseHeaders(
+ request_url, headers,
+ base::BindOnce(
+ &ContentSecurityPolicyInjectorImpl::OnUpdatedHeadersParsed,
+ weak_ptr_factory.GetWeakPtr(), std::move(callback)));
+ } else {
+ // No headers are injected, no need to update parsed headers.
+ std::move(callback).Run(nullptr);
+ }
+}
+
+void ContentSecurityPolicyInjectorImpl::OnUpdatedHeadersParsed(
+ InsertContentSecurityPolicyHeadersCallback callback,
+ network::mojom::ParsedHeadersPtr parsed_headers) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ std::move(callback).Run(std::move(parsed_headers));
+}
+
+} // namespace adblock
diff --git a/components/adblock/content/browser/content_security_policy_injector_impl.h b/components/adblock/content/browser/content_security_policy_injector_impl.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/content_security_policy_injector_impl.h
@@ -0,0 +1,66 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_CONTENT_SECURITY_POLICY_INJECTOR_IMPL_H_
+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_CONTENT_SECURITY_POLICY_INJECTOR_IMPL_H_
+
+#include "base/memory/raw_ptr.h"
+#include "base/memory/weak_ptr.h"
+#include "base/sequence_checker.h"
+#include "components/adblock/content/browser/content_security_policy_injector.h"
+#include "components/adblock/content/browser/frame_hierarchy_builder.h"
+#include "components/adblock/core/subscription/subscription_service.h"
+#include "services/network/public/mojom/network_service.mojom.h"
+
+namespace adblock {
+
+class ContentSecurityPolicyInjectorImpl final
+ : public ContentSecurityPolicyInjector {
+ public:
+ ContentSecurityPolicyInjectorImpl(
+ SubscriptionService* subscription_service,
+ std::unique_ptr<FrameHierarchyBuilder> frame_hierarchy_builder);
+
+ ~ContentSecurityPolicyInjectorImpl() final;
+
+ void InsertContentSecurityPolicyHeadersIfApplicable(
+ const GURL& request_url,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ const scoped_refptr<net::HttpResponseHeaders>& headers,
+ InsertContentSecurityPolicyHeadersCallback callback) final;
+
+ private:
+ void OnCspInjectionsSearchFinished(
+ const GURL request_url,
+ const scoped_refptr<net::HttpResponseHeaders> headers,
+ InsertContentSecurityPolicyHeadersCallback callback,
+ std::set<base::StringPiece> csp_injections);
+
+ void OnUpdatedHeadersParsed(
+ InsertContentSecurityPolicyHeadersCallback callback,
+ network::mojom::ParsedHeadersPtr parsed_headers);
+
+ SEQUENCE_CHECKER(sequence_checker_);
+ raw_ptr<SubscriptionService> subscription_service_;
+ std::unique_ptr<FrameHierarchyBuilder> frame_hierarchy_builder_;
+ base::WeakPtrFactory<ContentSecurityPolicyInjectorImpl> weak_ptr_factory{
+ this};
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_CONTENT_SECURITY_POLICY_INJECTOR_IMPL_H_
diff --git a/components/adblock/content/browser/element_hider.h b/components/adblock/content/browser/element_hider.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/element_hider.h
@@ -0,0 +1,70 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_ELEMENT_HIDER_H_
+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_ELEMENT_HIDER_H_
+
+#include <string>
+#include <vector>
+
+#include "base/functional/callback_forward.h"
+#include "components/adblock/core/common/content_type.h"
+#include "components/adblock/core/common/sitekey.h"
+#include "components/keyed_service/core/keyed_service.h"
+
+class GURL;
+
+namespace content {
+class RenderFrameHost;
+} // namespace content
+
+namespace adblock {
+/**
+ * @brief Implements element hiding logic.
+ * Element hiding includes injecting JavaScript code, CSS stylesheets and
+ * predefined snippets into the context of a loaded page to hide unwanted
+ * objects that could not be blocked from loading earlier.
+ * Element hiding also collapses visible elements blocked during resource load.
+ * Lives in browser process, UI thread.
+ *
+ */
+class ElementHider : public KeyedService {
+ public:
+ struct ElemhideInjectionData {
+ std::string stylesheet;
+ std::string elemhide_js;
+ std::string snippet_js;
+ };
+
+ virtual void ApplyElementHidingEmulationOnPage(
+ GURL url,
+ std::vector<GURL> frame_hierarchy,
+ content::RenderFrameHost* render_frame_host,
+ SiteKey sitekey,
+ base::OnceCallback<void(const ElemhideInjectionData&)> on_finished) = 0;
+
+ virtual bool IsElementTypeHideable(
+ ContentType adblock_resource_type) const = 0;
+
+ virtual void HideBlockedElement(
+ const GURL& url,
+ content::RenderFrameHost* render_frame_host) = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_ELEMENT_HIDER_H_
diff --git a/components/adblock/content/browser/element_hider_impl.cc b/components/adblock/content/browser/element_hider_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/element_hider_impl.cc
@@ -0,0 +1,323 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/content/browser/element_hider_impl.h"
+
+#include "base/functional/bind.h"
+#include "base/functional/callback.h"
+#include "base/json/json_string_value_serializer.h"
+#include "base/json/string_escape.h"
+#include "base/logging.h"
+#include "base/strings/string_piece.h"
+#include "base/strings/string_util.h"
+#include "base/strings/utf_string_conversions.h"
+#include "base/task/thread_pool.h"
+#include "base/trace_event/trace_event.h"
+#include "components/adblock/content/browser/element_hider_info.h"
+#include "components/adblock/core/subscription/subscription_service.h"
+#include "components/grit/components_resources.h"
+#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/global_routing_id.h"
+#include "content/public/browser/render_frame_host.h"
+#include "content/public/common/isolated_world_ids.h"
+#include "ui/base/resource/resource_bundle.h"
+
+namespace adblock {
+namespace {
+
+std::string GenerateBlockedElemhideJavaScript(
+ const std::string& url,
+ const std::string& filename_with_query) {
+ TRACE_EVENT1("eyeo", "GenerateBlockedElemhideJavaScript", "url", url);
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+
+ // basically copy-pasted JS and saved to resources from
+ // https://github.com/adblockplus/adblockpluschrome/blob/master/include.preload.js#L546
+ std::string result =
+ ui::ResourceBundle::GetSharedInstance().LoadDataResourceString(
+ IDR_ADBLOCK_ELEMHIDE_JS);
+
+ result.append("\n");
+
+ // the file is template with tokens to be replaced with actual variable values
+ std::string query_jst =
+ ui::ResourceBundle::GetSharedInstance().LoadDataResourceString(
+ IDR_ADBLOCK_ELEMHIDE_FOR_SELECTOR_JS);
+
+ std::string build_string;
+ base::EscapeJSONString(filename_with_query, false, &build_string);
+
+ base::ReplaceSubstringsAfterOffset(&query_jst, 0, "{{url}}", url);
+ base::ReplaceSubstringsAfterOffset(&query_jst, 0, "{{filename_with_query}}",
+ build_string);
+ result.append(query_jst);
+
+ return result;
+}
+
+void GenerateStylesheet(const GURL& url,
+ std::vector<base::StringPiece>& input,
+ std::string& output) {
+ TRACE_EVENT1("eyeo", "GenerateStylesheet", "url", url.spec());
+ // Chromium's Blink engine supports only up to 8,192 simple selectors, and
+ // even fewer compound selectors, in a rule. The exact number of selectors
+ // that would work depends on their sizes (e.g. "#foo .bar" has a size of 2).
+ // Since we don't know the sizes of the selectors here, we simply split them
+ // into groups of 1,024, based on the reasonable assumption that the average
+ // selector won't have a size greater than 8. The alternative would be to
+ // calculate the sizes of the selectors and divide them up accordingly, but
+ // this approach is more efficient and has worked well in practice. In theory
+ // this could still lead to some selectors not working on Chromium, but it is
+ // highly unlikely.
+ const size_t max_selector_count = 1024u;
+ for (size_t i = 0; i < input.size(); i += max_selector_count) {
+ const size_t batch_size = std::min(max_selector_count, input.size() - i);
+ const base::span<base::StringPiece> selectors_batch(&input[i], batch_size);
+ output += base::JoinString(selectors_batch, ", ") +
+ " {display: none !important;}\n";
+ }
+}
+
+void GenerateElemHidingEmuJavaScript(
+ const GURL& url,
+ const std::vector<base::StringPiece>& input,
+ std::string& output) {
+ TRACE_EVENT1("eyeo", "GenerateElemHidingEmuJavaScript", "url", url.spec());
+ // build the string with selectors
+ std::string build_string;
+ for (const auto& selector : input) {
+ build_string.append("{selector:");
+ base::EscapeJSONString(selector, true, &build_string);
+ build_string.append(", text:");
+ base::EscapeJSONString(url.host(), true, &build_string);
+ build_string.append("}, \n");
+ }
+ output = ui::ResourceBundle::GetSharedInstance().LoadDataResourceString(
+ IDR_ADBLOCK_ELEMHIDE_EMU_JS);
+
+ base::ReplaceSubstringsAfterOffset(
+ &output, 0, "{{elemHidingEmulatedPatternsDef}}", build_string);
+}
+
+std::string GenerateXpath3Dep() {
+ static std::string xpath3_dep =
+ "(" +
+ ui::ResourceBundle::GetSharedInstance().LoadDataResourceString(
+ IDR_ADBLOCK_SNIPPETS_XPATH3_DEP_JS) +
+ ")();";
+ if (xpath3_dep == "()();") {
+ LOG(WARNING) << "Snippets library does not support xpath3!";
+ return "";
+ }
+ return xpath3_dep;
+}
+
+void GenerateSnippetScript(const GURL& url,
+ base::Value::List input,
+ std::string& output) {
+ TRACE_EVENT1("eyeo", "GenerateSnippetScript", "url", url.spec());
+ // snippets must be JSON representation of the array of arrays of snippets
+ std::string serialized;
+ JSONStringValueSerializer serializer(&serialized);
+ serializer.Serialize(std::move(input));
+ // snippets_lib should be the library as-is, without any escaping or JSON
+ // parsing.
+ static std::string snippets_lib =
+ ui::ResourceBundle::GetSharedInstance().LoadDataResourceString(
+ IDR_ADBLOCK_SNIPPETS_JS);
+
+ output = "{{xpath3}}({{callback}})({}, ...{{snippets}});";
+ bool require_xpath3 =
+ serialized.find("hide-if-matches-xpath3") != std::string::npos;
+ base::ReplaceSubstringsAfterOffset(&output, 0, "{{xpath3}}",
+ require_xpath3 ? GenerateXpath3Dep() : "");
+ base::ReplaceSubstringsAfterOffset(&output, 0, "{{callback}}", snippets_lib);
+ base::ReplaceSubstringsAfterOffset(&output, 0, "{{snippets}}", serialized);
+}
+
+ElementHider::ElemhideInjectionData PrepareElemhideEmulationData(
+ const SubscriptionService::Snapshot subscription_collections,
+ const GURL url,
+ const std::vector<GURL> frame_hierarchy,
+ const SiteKey sitekey) {
+ TRACE_EVENT1("eyeo", "PrepareElemhideEmulationData", "url", url.spec());
+
+ std::vector<base::StringPiece> stylesheet;
+ std::vector<base::StringPiece> elemhide_js;
+ base::Value::List snippet_js;
+ for (const auto& collection : subscription_collections) {
+ bool doc_allowlisted = !!collection->FindBySpecialFilter(
+ SpecialFilterType::Document, url, frame_hierarchy, sitekey);
+ bool ehe_allowlisted =
+ doc_allowlisted ||
+ collection->FindBySpecialFilter(SpecialFilterType::Elemhide, url,
+ frame_hierarchy, sitekey);
+ if (!ehe_allowlisted) {
+ base::ranges::copy(
+ collection->GetElementHideSelectors(url, frame_hierarchy, sitekey),
+ std::back_inserter(stylesheet));
+ base::ranges::copy(collection->GetElementHideEmulationSelectors(url),
+ std::back_inserter(elemhide_js));
+ }
+ if (!doc_allowlisted) {
+ base::ranges::for_each(
+ collection->GenerateSnippets(url, frame_hierarchy),
+ [&snippet_js](auto& item) { snippet_js.Append(std::move(item)); });
+ }
+ }
+ ElementHider::ElemhideInjectionData result;
+ if (!stylesheet.empty()) {
+ DVLOG(2) << "[eyeo] Got " << stylesheet.size() << " EH selectors for url "
+ << url;
+ GenerateStylesheet(url, stylesheet, result.stylesheet);
+ }
+ if (!elemhide_js.empty()) {
+ DVLOG(2) << "[eyeo] Got " << elemhide_js.size()
+ << " EH emu selectors for url " << url;
+ GenerateElemHidingEmuJavaScript(url, elemhide_js, result.elemhide_js);
+ }
+ if (!snippet_js.empty()) {
+ DVLOG(2) << "[eyeo] Got " << snippet_js.size() << " snippets for url "
+ << url;
+ GenerateSnippetScript(url, std::move(snippet_js), result.snippet_js);
+ }
+ return result;
+}
+
+void InsertUserCSSAndApplyElemHidingEmuJS(
+ content::GlobalRenderFrameHostId frame_host_id,
+ base::OnceCallback<void(const ElementHider::ElemhideInjectionData&)>
+ on_finished,
+ ElementHider::ElemhideInjectionData input) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ auto* frame_host = content::RenderFrameHost::FromID(frame_host_id);
+ if (!frame_host) {
+ // Render frame host was destroyed before element hiding could be applied.
+ // This is not a bug, just legitimate a race condition.
+ std::move(on_finished).Run(std::move(input));
+ return;
+ }
+ auto* info = ElementHiderInfo::GetOrCreateForCurrentDocument(frame_host);
+ if (info->IsElementHidingDone()) {
+ std::move(on_finished).Run(ElementHider::ElemhideInjectionData{});
+ return;
+ } else {
+ info->SetElementHidingDone();
+ }
+
+ if (!input.stylesheet.empty()) {
+ frame_host->InsertAbpElemhideStylesheet(input.stylesheet);
+ DVLOG(1) << "[eyeo] Element hiding - inserted stylesheet in frame"
+ << " '" << frame_host->GetFrameName() << "'";
+ }
+
+ if (!input.elemhide_js.empty()) {
+ frame_host->ExecuteJavaScriptInIsolatedWorld(
+ base::UTF8ToUTF16(input.elemhide_js),
+ content::RenderFrameHost::JavaScriptResultCallback(),
+ content::ISOLATED_WORLD_ID_ADBLOCK);
+
+ DVLOG(1) << "[eyeo] Element hiding emulation - executed JS in frame"
+ << " '" << frame_host->GetFrameName() << "'";
+ }
+
+ if (!input.snippet_js.empty()) {
+ // PK: Extension API ends up generating isolated world for injected script
+ // execution. See GetIsolatedWorldIdForInstance in
+ // extensions/renderer/script_injection.cc. Why not to reuse adblock space?
+ frame_host->ExecuteJavaScriptInIsolatedWorld(
+ base::UTF8ToUTF16(input.snippet_js),
+ content::RenderFrameHost::JavaScriptResultCallback(),
+ content::ISOLATED_WORLD_ID_ADBLOCK);
+
+ DVLOG(1) << "[eyeo] Snippet - executed JS in frame"
+ << " '" << frame_host->GetFrameName() << "'";
+ }
+
+ std::move(on_finished).Run(std::move(input));
+}
+
+} // namespace
+
+ElementHiderImpl::ElementHiderImpl(SubscriptionService* subscription_service)
+ : subscription_service_(subscription_service) {}
+
+ElementHiderImpl::~ElementHiderImpl() = default;
+
+void ElementHiderImpl::ApplyElementHidingEmulationOnPage(
+ GURL url,
+ std::vector<GURL> frame_hierarchy,
+ content::RenderFrameHost* render_frame_host,
+ SiteKey sitekey,
+ base::OnceCallback<void(const ElemhideInjectionData&)> on_finished) {
+ auto* info = ElementHiderInfo::GetForCurrentDocument(render_frame_host);
+ if (info && info->IsElementHidingDone()) {
+ std::move(on_finished).Run(ElementHider::ElemhideInjectionData{});
+ return;
+ }
+ base::ThreadPool::PostTaskAndReplyWithResult(
+ FROM_HERE, {},
+ base::BindOnce(&PrepareElemhideEmulationData,
+ subscription_service_->GetCurrentSnapshot(),
+ std::move(url), std::move(frame_hierarchy),
+ std::move(sitekey)),
+ base::BindOnce(&InsertUserCSSAndApplyElemHidingEmuJS,
+ render_frame_host->GetGlobalId(), std::move(on_finished)));
+}
+
+bool ElementHiderImpl::IsElementTypeHideable(
+ ContentType adblock_resource_type) const {
+ switch (adblock_resource_type) {
+ case ContentType::Image:
+ case ContentType::Object:
+ case ContentType::Media:
+ return true;
+
+ default:
+ break;
+ }
+ return false;
+}
+
+void ElementHiderImpl::HideBlockedElement(
+ const GURL& url,
+ content::RenderFrameHost* render_frame_host) {
+ TRACE_EVENT1("eyeo", "ElementHiderFlatbufferImpl::HideBlockedElemenet", "url",
+ url.spec());
+ // we can't get relative URL from URLRequest
+ // so the hack is to select in JS with filename_with_query selector and then
+ // check every found element's full absolute URL
+ std::string filename_with_query = url.ExtractFileName();
+ if (url.has_query()) {
+ filename_with_query.append("?");
+ filename_with_query.append(url.query());
+ }
+
+ const std::string js =
+ GenerateBlockedElemhideJavaScript(url.spec(), filename_with_query);
+
+ // elemhide resource by element hide rules
+ render_frame_host->ExecuteJavaScriptInIsolatedWorld(
+ base::UTF8ToUTF16(js),
+ content::RenderFrameHost::JavaScriptResultCallback(),
+ content::ISOLATED_WORLD_ID_ADBLOCK);
+
+ DVLOG(1) << "[eyeo] Element hiding - executed JS in frame"
+ << " '" << render_frame_host->GetFrameName() << "'";
+}
+
+} // namespace adblock
diff --git a/components/adblock/content/browser/element_hider_impl.h b/components/adblock/content/browser/element_hider_impl.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/element_hider_impl.h
@@ -0,0 +1,55 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_ELEMENT_HIDER_IMPL_H_
+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_ELEMENT_HIDER_IMPL_H_
+
+#include <vector>
+
+#include "base/memory/raw_ptr.h"
+#include "base/memory/weak_ptr.h"
+#include "components/adblock/content/browser/element_hider.h"
+#include "components/adblock/core/subscription/subscription_service.h"
+#include "content/public/browser/global_routing_id.h"
+
+namespace adblock {
+
+class ElementHiderImpl final : public ElementHider {
+ public:
+ explicit ElementHiderImpl(SubscriptionService* subscription_service);
+ ~ElementHiderImpl() final;
+
+ void ApplyElementHidingEmulationOnPage(
+ GURL url,
+ std::vector<GURL> frame_hierarchy,
+ content::RenderFrameHost* render_frame_host,
+ SiteKey sitekey,
+ base::OnceCallback<void(const ElemhideInjectionData&)> on_finished) final;
+
+ bool IsElementTypeHideable(ContentType adblock_resource_type) const final;
+
+ void HideBlockedElement(const GURL& url,
+ content::RenderFrameHost* render_frame_host) final;
+
+ private:
+ raw_ptr<SubscriptionService> subscription_service_;
+ base::WeakPtrFactory<ElementHiderImpl> weak_ptr_factory_{this};
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_ELEMENT_HIDER_IMPL_H_
diff --git a/components/adblock/content/browser/element_hider_info.cc b/components/adblock/content/browser/element_hider_info.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/element_hider_info.cc
@@ -0,0 +1,37 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/content/browser/element_hider_info.h"
+
+namespace adblock {
+
+DOCUMENT_USER_DATA_KEY_IMPL(ElementHiderInfo);
+
+ElementHiderInfo::ElementHiderInfo(content::RenderFrameHost* rfh)
+ : content::DocumentUserData<ElementHiderInfo>(rfh) {}
+
+ElementHiderInfo::~ElementHiderInfo() = default;
+
+bool ElementHiderInfo::IsElementHidingDone() const {
+ return element_hining_done_;
+}
+
+void ElementHiderInfo::SetElementHidingDone() {
+ element_hining_done_ = true;
+}
+
+} // namespace adblock
diff --git a/components/adblock/content/browser/element_hider_info.h b/components/adblock/content/browser/element_hider_info.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/element_hider_info.h
@@ -0,0 +1,44 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_ELEMENT_HIDER_INFO_H_
+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_ELEMENT_HIDER_INFO_H_
+
+#include "content/public/browser/document_user_data.h"
+
+namespace adblock {
+
+class ElementHiderInfo final
+ : public content::DocumentUserData<ElementHiderInfo> {
+ public:
+ ~ElementHiderInfo() final;
+
+ bool IsElementHidingDone() const;
+ void SetElementHidingDone();
+
+ private:
+ explicit ElementHiderInfo(content::RenderFrameHost* rfh);
+
+ bool element_hining_done_ = false;
+
+ friend DocumentUserData;
+ DOCUMENT_USER_DATA_KEY_DECL();
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_ELEMENT_HIDER_INFO_H_
diff --git a/components/adblock/content/browser/frame_hierarchy_builder.cc b/components/adblock/content/browser/frame_hierarchy_builder.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/frame_hierarchy_builder.cc
@@ -0,0 +1,117 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/content/browser/frame_hierarchy_builder.h"
+
+#include "base/logging.h"
+#include "content/public/browser/render_frame_host.h"
+#include "content/public/browser/render_process_host.h"
+#include "content/public/browser/web_contents.h"
+#include "content/public/common/url_constants.h"
+#include "services/network/public/mojom/network_context.mojom-forward.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+namespace {
+
+// Do not use GURL::IsAboutBlank for frame hierarchy, it returns true for valid
+// src like `about:blank?eyeo=true`
+bool IsExactlyAboutBlank(const GURL url) {
+ static const base::StringPiece kAboutBlankUrl = "about:blank";
+ return url == kAboutBlankUrl;
+}
+
+bool IsValidForFrameHierarchy(const GURL& url) {
+ return !url.is_empty() && !IsExactlyAboutBlank(url) &&
+ url != content::kBlockedURL;
+}
+
+// Basically calling `GetAsReferrer()` on url strips elements that are not
+// supposed to be sent as HTTP referrer: username, password and ref fragment,
+// and this is what we want for frame hierarchy urls.
+// But for urls like `about:blank?eyeo=true` calling `GetAsReferrer()` returns
+// an empty url which excludes it from frame hierarchy, so for `about:blank...`
+// we fallback to `GetLastCommittedURL()`.
+GURL GetUrlAsReferrer(const content::RenderFrameHost* frame_host) {
+ auto last_commited_referrer =
+ frame_host->GetLastCommittedURL().GetAsReferrer();
+ if (last_commited_referrer.is_empty()) {
+ auto last_commited_url = frame_host->GetLastCommittedURL();
+ if (last_commited_url.IsAboutBlank() &&
+ IsValidForFrameHierarchy(last_commited_url)) {
+ last_commited_referrer = last_commited_url;
+ }
+ }
+ return last_commited_referrer;
+}
+
+} // namespace
+
+FrameHierarchyBuilder::FrameHierarchyBuilder() = default;
+
+FrameHierarchyBuilder::~FrameHierarchyBuilder() = default;
+
+content::RenderFrameHost* FrameHierarchyBuilder::FindRenderFrameHost(
+ content::GlobalRenderFrameHostId render_frame_host_id) const {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ return content::RenderFrameHost::FromID(render_frame_host_id);
+}
+
+std::vector<GURL> FrameHierarchyBuilder::BuildFrameHierarchy(
+ content::RenderFrameHost* host) const {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+ DCHECK(host) << "RenderFrameHost is needed to build frame hierarchy";
+
+ std::vector<GURL> referrers_chain;
+ for (auto* iter = host; iter; iter = iter->GetParent()) {
+ auto last_commited_referrer = GetUrlAsReferrer(iter);
+ if (IsValidForFrameHierarchy(last_commited_referrer)) {
+ VLOG(2) << "[eyeo] FrameHierarchy item: "
+ << last_commited_referrer.spec();
+ referrers_chain.emplace_back(last_commited_referrer);
+ }
+ }
+
+ return referrers_chain;
+}
+
+GURL FrameHierarchyBuilder::FindUrlForFrame(
+ content::RenderFrameHost* frame_host,
+ content::WebContents* web_contents) const {
+ GURL url = frame_host->GetLastCommittedURL();
+ // Anonymous frames have "about:blank" source so we use a parent frame URL
+ // Do not use GURL::IsExactlyAboutBlank (DPD-1946).
+ if (IsExactlyAboutBlank(url)) {
+ for (auto* parent = frame_host->GetParent(); parent;
+ parent = parent->GetParent()) {
+ GURL parent_url = parent->GetLastCommittedURL();
+ if (!parent_url.spec().empty() && !IsExactlyAboutBlank(parent_url)) {
+ url = parent_url;
+ break;
+ }
+ }
+ // If we still cannot find parent url let's use top level navigation url
+ if (IsExactlyAboutBlank(url)) {
+ url = web_contents->GetLastCommittedURL();
+ }
+ }
+ return url;
+}
+
+} // namespace adblock
diff --git a/components/adblock/content/browser/frame_hierarchy_builder.h b/components/adblock/content/browser/frame_hierarchy_builder.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/frame_hierarchy_builder.h
@@ -0,0 +1,63 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_FRAME_HIERARCHY_BUILDER_H_
+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_FRAME_HIERARCHY_BUILDER_H_
+
+#include <vector>
+
+#include "base/sequence_checker.h"
+#include "content/public/browser/render_frame_host.h"
+
+class GURL;
+
+namespace content {
+class RenderFrameHost;
+class WebContents;
+} // namespace content
+
+namespace adblock {
+/**
+ * @brief Builds the frame hierarchy based on the RenderFrameHost.
+ * A frame hierarchy is an ordered list of URLs of frames containing
+ * an element, beginning with the direct parent frame and ending with
+ * the top-level URL of the page.
+ * Frame hierarchies are traversed to find any allow rules that apply to
+ * parent frames of blocked resource to override the blocking rule.
+ * Used in browser process UI main thread.
+ *
+ */
+class FrameHierarchyBuilder {
+ public:
+ FrameHierarchyBuilder();
+ virtual ~FrameHierarchyBuilder();
+
+ virtual content::RenderFrameHost* FindRenderFrameHost(
+ content::GlobalRenderFrameHostId render_frame_host_id) const;
+
+ virtual std::vector<GURL> BuildFrameHierarchy(
+ content::RenderFrameHost* host) const;
+ virtual GURL FindUrlForFrame(content::RenderFrameHost* host,
+ content::WebContents* web_contents) const;
+
+ private:
+ SEQUENCE_CHECKER(sequence_checker_);
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_FRAME_HIERARCHY_BUILDER_H_
diff --git a/components/adblock/content/browser/frame_opener_info.cc b/components/adblock/content/browser/frame_opener_info.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/frame_opener_info.cc
@@ -0,0 +1,37 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/content/browser/frame_opener_info.h"
+
+namespace adblock {
+
+WEB_CONTENTS_USER_DATA_KEY_IMPL(FrameOpenerInfo);
+
+FrameOpenerInfo::FrameOpenerInfo(content::WebContents* contents)
+ : content::WebContentsUserData<FrameOpenerInfo>(*contents) {}
+
+FrameOpenerInfo::~FrameOpenerInfo() = default;
+
+content::GlobalRenderFrameHostId FrameOpenerInfo::GetOpener() const {
+ return render_frame_host_id_;
+}
+void FrameOpenerInfo::SetOpener(
+ content::GlobalRenderFrameHostId render_frame_host_id) {
+ render_frame_host_id_ = render_frame_host_id;
+}
+
+} // namespace adblock
diff --git a/components/adblock/content/browser/frame_opener_info.h b/components/adblock/content/browser/frame_opener_info.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/frame_opener_info.h
@@ -0,0 +1,46 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_FRAME_OPENER_INFO_H_
+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_FRAME_OPENER_INFO_H_
+
+#include "content/public/browser/global_routing_id.h"
+#include "content/public/browser/web_contents_user_data.h"
+
+namespace adblock {
+
+class FrameOpenerInfo final
+ : public content::WebContentsUserData<FrameOpenerInfo> {
+ public:
+ ~FrameOpenerInfo() final;
+
+ content::GlobalRenderFrameHostId GetOpener() const;
+ void SetOpener(content::GlobalRenderFrameHostId render_frame_host_id);
+
+ private:
+ explicit FrameOpenerInfo(content::WebContents* contents);
+
+ content::GlobalRenderFrameHostId render_frame_host_id_ =
+ content::GlobalRenderFrameHostId{MSG_ROUTING_NONE, MSG_ROUTING_NONE};
+
+ friend WebContentsUserData;
+ WEB_CONTENTS_USER_DATA_KEY_DECL();
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_FRAME_OPENER_INFO_H_
diff --git a/components/adblock/content/browser/resource_classification_runner.h b/components/adblock/content/browser/resource_classification_runner.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/resource_classification_runner.h
@@ -0,0 +1,113 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_RESOURCE_CLASSIFICATION_RUNNER_H_
+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_RESOURCE_CLASSIFICATION_RUNNER_H_
+
+#include <memory>
+#include <vector>
+
+#include "base/observer_list.h"
+#include "components/adblock/content/browser/adblock_filter_match.h"
+#include "components/adblock/core/common/content_type.h"
+#include "components/adblock/core/subscription/subscription_service.h"
+#include "components/keyed_service/core/keyed_service.h"
+#include "services/network/public/mojom/network_param.mojom.h"
+
+#include "url/gurl.h"
+
+namespace content {
+struct GlobalRenderFrameHostId;
+class RenderFrameHost;
+} // namespace content
+namespace adblock {
+
+/**
+ * @brief Declares whether network requests should be blocked or allowed to
+ * load by comparing their URLs and other metadata against filters defined
+ * in active subscriptions.
+ * Lives in the UI thread.
+ */
+class ResourceClassificationRunner : public KeyedService {
+ public:
+ class Observer : public base::CheckedObserver {
+ public:
+ // Will only be called when |match_result| is BLOCK_RULE or ALLOW_RULE.
+ virtual void OnAdMatched(const GURL& url,
+ FilterMatchResult match_result,
+ const std::vector<GURL>& parent_frame_urls,
+ ContentType content_type,
+ content::RenderFrameHost* render_frame_host,
+ const GURL& subscription,
+ const std::string& configuration_name) = 0;
+ virtual void OnPageAllowed(const GURL& url,
+ content::RenderFrameHost* render_frame_host,
+ const GURL& subscription,
+ const std::string& configuration_name) = 0;
+ virtual void OnPopupMatched(const GURL& url,
+ FilterMatchResult match_result,
+ const GURL& opener_url,
+ content::RenderFrameHost* render_frame_host,
+ const GURL& subscription,
+ const std::string& configuration_name) = 0;
+ };
+ virtual void AddObserver(Observer* observer) = 0;
+ virtual void RemoveObserver(Observer* observer) = 0;
+
+ // Performs a *synchronous* check, this can block the UI for a while!
+ virtual FilterMatchResult ShouldBlockPopup(
+ const SubscriptionService::Snapshot& subscription_collections,
+ const GURL& popup_url,
+ content::RenderFrameHost* render_frame_host) = 0;
+ virtual void CheckPopupFilterMatch(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& popup_url,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ CheckFilterMatchCallback callback) = 0;
+ virtual void CheckRequestFilterMatch(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ ContentType adblock_resource_type,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ CheckFilterMatchCallback callback) = 0;
+ virtual void CheckRequestFilterMatchForWebSocket(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ CheckFilterMatchCallback callback) = 0;
+ // No callback, just notify observers
+ virtual void CheckDocumentAllowlisted(
+ SubscriptionService::Snapshot subscription_collection,
+ const GURL& request_url,
+ content::GlobalRenderFrameHostId render_frame_host_id) = 0;
+ virtual void CheckResponseFilterMatch(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& response_url,
+ ContentType adblock_resource_type,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ const scoped_refptr<net::HttpResponseHeaders>& headers,
+ CheckFilterMatchCallback callback) = 0;
+ virtual void CheckRewriteFilterMatch(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ base::OnceCallback<void(const absl::optional<GURL>&)> result) = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_RESOURCE_CLASSIFICATION_RUNNER_H_
diff --git a/components/adblock/content/browser/resource_classification_runner_impl.cc b/components/adblock/content/browser/resource_classification_runner_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/resource_classification_runner_impl.cc
@@ -0,0 +1,451 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/content/browser/resource_classification_runner_impl.h"
+
+#include "base/functional/bind.h"
+#include "base/task/task_traits.h"
+#include "base/task/thread_pool.h"
+#include "base/trace_event/trace_event.h"
+#include "components/adblock/content/browser/frame_opener_info.h"
+#include "components/adblock/core/common/adblock_utils.h"
+#include "components/adblock/core/common/sitekey.h"
+#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/render_frame_host.h"
+#include "content/public/browser/web_contents.h"
+#include "services/network/public/mojom/url_response_head.mojom.h"
+
+namespace adblock {
+
+using ClassificationDecision =
+ ResourceClassifier::ClassificationResult::Decision;
+
+ResourceClassificationRunnerImpl::ResourceClassificationRunnerImpl(
+ scoped_refptr<ResourceClassifier> resource_classifier,
+ std::unique_ptr<FrameHierarchyBuilder> frame_hierarchy_builder,
+ SitekeyStorage* sitekey_storage)
+ : resource_classifier_(std::move(resource_classifier)),
+ frame_hierarchy_builder_(std::move(frame_hierarchy_builder)),
+ sitekey_storage_(sitekey_storage),
+ weak_ptr_factory_(this) {}
+
+ResourceClassificationRunnerImpl::~ResourceClassificationRunnerImpl() = default;
+
+void ResourceClassificationRunnerImpl::AddObserver(Observer* observer) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ observers_.AddObserver(observer);
+}
+
+void ResourceClassificationRunnerImpl::RemoveObserver(Observer* observer) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ observers_.RemoveObserver(observer);
+}
+
+void ResourceClassificationRunnerImpl::OnCheckPopupFilterMatchComplete(
+ const GURL& popup_url,
+ const std::vector<GURL>& frame_hierarchy,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ absl::optional<CheckFilterMatchCallback> callback,
+ const ResourceClassifier::ClassificationResult& classification_result) {
+ if (classification_result.decision != ClassificationDecision::Ignored) {
+ FilterMatchResult result =
+ classification_result.decision == ClassificationDecision::Allowed
+ ? FilterMatchResult::kAllowRule
+ : FilterMatchResult::kBlockRule;
+ if (callback) {
+ std::move(*callback).Run(result);
+ }
+ auto* frame_host = content::RenderFrameHost::FromID(render_frame_host_id);
+ if (frame_host) {
+ const auto& opener_url =
+ frame_hierarchy.empty() ? GURL() : frame_hierarchy.front();
+ if (result == FilterMatchResult::kBlockRule) {
+ VLOG(1) << "[eyeo] Prevented loading of pop-up " << popup_url.spec()
+ << ", opener: " << opener_url.spec();
+ } else {
+ VLOG(1) << "[eyeo] Pop-up allowed " << popup_url.spec()
+ << ", opener: " << opener_url.spec();
+ }
+ for (auto& observer : observers_) {
+ observer.OnPopupMatched(
+ popup_url, result, opener_url, frame_host,
+ classification_result.decisive_subscription,
+ classification_result.decisive_configuration_name);
+ }
+ }
+ } else if (callback) {
+ std::move(*callback).Run(FilterMatchResult::kNoRule);
+ }
+}
+
+
+FilterMatchResult ResourceClassificationRunnerImpl::ShouldBlockPopup(
+ const SubscriptionService::Snapshot& subscription_collections,
+ const GURL& popup_url,
+ content::RenderFrameHost* frame_host) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DVLOG(1) << "[eyeo] ShouldBlockPopup for " << popup_url.spec();
+ DCHECK(frame_host);
+ TRACE_EVENT1("eyeo", "ResourceClassificationRunnerImpl::ShouldBlockPopup",
+ "popup_url", popup_url.spec());
+
+ const auto frame_hierarchy =
+ frame_hierarchy_builder_->BuildFrameHierarchy(frame_host);
+ const auto sitekey = sitekey_storage_->FindSiteKeyForAnyUrl(frame_hierarchy);
+
+ auto classification_result = resource_classifier_->ClassifyPopup(
+ subscription_collections, popup_url, frame_hierarchy,
+ sitekey ? sitekey->second : SiteKey());
+ if (classification_result.decision == ClassificationDecision::Ignored) {
+ return FilterMatchResult::kNoRule;
+ }
+ OnCheckPopupFilterMatchComplete(popup_url, frame_hierarchy,
+ frame_host->GetGlobalId(), absl::nullopt,
+ classification_result);
+ return classification_result.decision == ClassificationDecision::Allowed
+ ? FilterMatchResult::kAllowRule
+ : FilterMatchResult::kBlockRule;
+}
+
+void ResourceClassificationRunnerImpl::CheckPopupFilterMatch(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& popup_url,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ CheckFilterMatchCallback callback) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DVLOG(1) << "[eyeo] CheckPopupFilterMatch for " << popup_url.spec();
+ auto* frame_host = content::RenderFrameHost::FromID(render_frame_host_id);
+ if (!frame_host) {
+ // Host has died, likely because this is a deferred execution. It does not
+ // matter anymore whether the resource is blocked, the page is gone.
+ VLOG(1) << "[eyeo] CheckPopupFilterMatch for " << popup_url.spec()
+ << " no frame host!";
+ std::move(callback).Run(FilterMatchResult::kNoRule);
+ return;
+ }
+
+ auto* wc = content::WebContents::FromRenderFrameHost(frame_host);
+ DCHECK(wc);
+ auto* info = FrameOpenerInfo::FromWebContents(wc);
+ DCHECK(info);
+ auto* frame_host_opener = content::RenderFrameHost::FromID(info->GetOpener());
+ if (!frame_host_opener) {
+ // We are unable to check allowlisting
+ VLOG(1) << "[eyeo] CheckPopupFilterMatch for " << popup_url.spec()
+ << " no frame host for opener!";
+ std::move(callback).Run(FilterMatchResult::kNoRule);
+ return;
+ }
+
+ const auto frame_hierarchy =
+ frame_hierarchy_builder_->BuildFrameHierarchy(frame_host_opener);
+ auto sitekey = sitekey_storage_->FindSiteKeyForAnyUrl(frame_hierarchy);
+
+ base::ThreadPool::PostTaskAndReplyWithResult(
+ FROM_HERE, {},
+ base::BindOnce(&ResourceClassifier::ClassifyPopup, resource_classifier_,
+ std::move(subscription_collections), popup_url,
+ frame_hierarchy, sitekey ? sitekey->second : SiteKey()),
+ base::BindOnce(
+ &ResourceClassificationRunnerImpl::OnCheckPopupFilterMatchComplete,
+ weak_ptr_factory_.GetWeakPtr(), popup_url, frame_hierarchy,
+ render_frame_host_id, std::move(callback)));
+}
+
+void ResourceClassificationRunnerImpl::CheckRequestFilterMatchForWebSocket(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ CheckFilterMatchCallback callback) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(request_url.SchemeIsWSOrWSS());
+ CheckRequestFilterMatch(std::move(subscription_collections), request_url,
+ ContentType::Websocket, render_frame_host_id,
+ std::move(callback));
+}
+
+void ResourceClassificationRunnerImpl::CheckDocumentAllowlisted(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ content::GlobalRenderFrameHostId render_frame_host_id) {
+ // We pass main frame no matter what
+ DVLOG(1) << "[eyeo] Main document. Passing it through: " << request_url;
+ base::ThreadPool::PostTaskAndReplyWithResult(
+ FROM_HERE, {},
+ base::BindOnce(&CheckDocumentAllowlistedInternal,
+ std::move(subscription_collections), request_url),
+ base::BindOnce(
+ &ResourceClassificationRunnerImpl::ProcessDocumentAllowlistedResponse,
+ weak_ptr_factory_.GetWeakPtr(), request_url, render_frame_host_id));
+}
+
+void ResourceClassificationRunnerImpl::ProcessDocumentAllowlistedResponse(
+ const GURL request_url,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ CheckResourceFilterMatchResult result) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ content::RenderFrameHost* host =
+ content::RenderFrameHost::FromID(render_frame_host_id);
+ if (result.status == FilterMatchResult::kAllowRule && host) {
+ VLOG(1) << "[eyeo] Calling OnPageAllowed() for " << request_url;
+ for (auto& observer : observers_) {
+ observer.OnPageAllowed(request_url, host, result.subscription,
+ result.configuration_name);
+ }
+ }
+}
+
+void ResourceClassificationRunnerImpl::CheckRequestFilterMatch(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ ContentType adblock_resource_type,
+ content::GlobalRenderFrameHostId frame_host_id,
+ CheckFilterMatchCallback callback) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DVLOG(1) << "[eyeo] CheckRequestFilterMatchImpl for " << request_url.spec();
+
+ auto* host = content::RenderFrameHost::FromID(frame_host_id);
+ if (!host) {
+ // Host has died, likely because this is a deferred execution. It does not
+ // matter anymore whether the resource is blocked, the page is gone.
+ std::move(callback).Run(FilterMatchResult::kNoRule);
+ return;
+ }
+ const std::vector<GURL> frame_hierarchy_chain =
+ frame_hierarchy_builder_->BuildFrameHierarchy(host);
+
+ DVLOG(1) << "[eyeo] Got " << frame_hierarchy_chain.size()
+ << " frame_hierarchy for " << request_url.spec();
+
+ auto site_key_pair =
+ sitekey_storage_->FindSiteKeyForAnyUrl(frame_hierarchy_chain);
+ SiteKey site_key;
+ if (site_key_pair.has_value()) {
+ site_key = site_key_pair->second;
+ DVLOG(1) << "[eyeo] Found site key: " << site_key.value()
+ << " for url: " << site_key_pair->first;
+ }
+
+ base::ThreadPool::PostTaskAndReplyWithResult(
+ FROM_HERE, {},
+ base::BindOnce(
+ &ResourceClassificationRunnerImpl::CheckRequestFilterMatchInternal,
+ resource_classifier_, std::move(subscription_collections),
+ request_url, frame_hierarchy_chain, adblock_resource_type,
+ std::move(site_key)),
+ base::BindOnce(
+ &ResourceClassificationRunnerImpl::OnCheckResourceFilterMatchComplete,
+ weak_ptr_factory_.GetWeakPtr(), request_url, frame_hierarchy_chain,
+ adblock_resource_type, frame_host_id, std::move(callback)));
+}
+
+// static
+ResourceClassificationRunnerImpl::CheckResourceFilterMatchResult
+ResourceClassificationRunnerImpl::CheckRequestFilterMatchInternal(
+ const scoped_refptr<ResourceClassifier>& resource_classifier,
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL request_url,
+ const std::vector<GURL> frame_hierarchy,
+ ContentType adblock_resource_type,
+ const SiteKey sitekey) {
+ TRACE_EVENT1("eyeo",
+ "ResourceClassificationRunnerImpl::"
+ "CheckRequestFilterMatchInternal",
+ "url", request_url.spec());
+
+ DVLOG(1) << "[eyeo] CheckRequestFilterMatchInternal start";
+
+ auto classification_result = resource_classifier->ClassifyRequest(
+ std::move(subscription_collections), request_url, frame_hierarchy,
+ adblock_resource_type, sitekey);
+
+ if (classification_result.decision == ClassificationDecision::Allowed) {
+ VLOG(1) << "[eyeo] Document allowed due to allowing filter " << request_url;
+ return CheckResourceFilterMatchResult{
+ FilterMatchResult::kAllowRule,
+ classification_result.decisive_subscription,
+ classification_result.decisive_configuration_name};
+ }
+
+ if (classification_result.decision == ClassificationDecision::Blocked) {
+ VLOG(1) << "[eyeo] Document blocked " << request_url;
+ return CheckResourceFilterMatchResult{
+ FilterMatchResult::kBlockRule,
+ classification_result.decisive_subscription,
+ classification_result.decisive_configuration_name};
+ }
+
+ return CheckResourceFilterMatchResult{FilterMatchResult::kNoRule, {}, {}};
+}
+
+void ResourceClassificationRunnerImpl::OnCheckResourceFilterMatchComplete(
+ const GURL request_url,
+ const std::vector<GURL> frame_hierarchy,
+ ContentType adblock_resource_type,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ CheckFilterMatchCallback callback,
+ const CheckResourceFilterMatchResult result) {
+ // Notify |callback| as soon as we know whether we should block, as this
+ // unblocks loading of network resources.
+ std::move(callback).Run(result.status);
+ auto* render_frame_host =
+ content::RenderFrameHost::FromID(render_frame_host_id);
+ if (render_frame_host) {
+ // Only notify the UI if we explicitly blocked or allowed the resource, not
+ // when there was NO_RULE.
+ if (result.status == FilterMatchResult::kAllowRule ||
+ result.status == FilterMatchResult::kBlockRule) {
+ NotifyAdMatched(request_url, result.status, frame_hierarchy,
+ adblock_resource_type, render_frame_host,
+ result.subscription, result.configuration_name);
+ }
+ }
+}
+
+void ResourceClassificationRunnerImpl::NotifyAdMatched(
+ const GURL& url,
+ FilterMatchResult result,
+ const std::vector<GURL>& parent_frame_urls,
+ ContentType content_type,
+ content::RenderFrameHost* render_frame_host,
+ const GURL& subscription,
+ const std::string& configuration_name) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ VLOG(1) << "[eyeo] NotifyAdMatched() called for " << url;
+
+ for (auto& observer : observers_) {
+ observer.OnAdMatched(url, result, parent_frame_urls,
+ static_cast<ContentType>(content_type),
+ render_frame_host, subscription, configuration_name);
+ }
+}
+
+// static
+ResourceClassificationRunnerImpl::CheckResourceFilterMatchResult
+ResourceClassificationRunnerImpl::CheckDocumentAllowlistedInternal(
+ const SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url) {
+ CheckResourceFilterMatchResult result{FilterMatchResult::kNoRule, {}, {}};
+ // It is required for all configurations to have an allowing Document filter
+ // to consider a page allowlisted.
+ for (const auto& collection : subscription_collections) {
+ auto subscription_url = collection->FindBySpecialFilter(
+ SpecialFilterType::Document, request_url, std::vector<GURL>(),
+ SiteKey());
+ if (!subscription_url) {
+ return {FilterMatchResult::kNoRule, {}, {}};
+ } else {
+ result = {FilterMatchResult::kAllowRule, subscription_url.value(),
+ collection->GetFilteringConfigurationName()};
+ }
+ }
+ return result;
+}
+
+void ResourceClassificationRunnerImpl::CheckResponseFilterMatch(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& response_url,
+ ContentType adblock_resource_type,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ const scoped_refptr<net::HttpResponseHeaders>& headers,
+ CheckFilterMatchCallback callback) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DVLOG(1) << "[eyeo] CheckResponseFilterMatch for " << response_url.spec();
+ content::RenderFrameHost* host =
+ frame_hierarchy_builder_->FindRenderFrameHost(render_frame_host_id);
+ if (!host) {
+ // This request is likely dead, since there's no associated RenderFrameHost.
+ std::move(callback).Run(FilterMatchResult::kNoRule);
+ return;
+ }
+
+ auto frame_hierarchy = frame_hierarchy_builder_->BuildFrameHierarchy(host);
+ // ResponseFilterMatch might take a while, let it run in the background.
+ base::ThreadPool::PostTaskAndReplyWithResult(
+ FROM_HERE, {},
+ base::BindOnce(
+ &ResourceClassificationRunnerImpl::CheckResponseFilterMatchInternal,
+ resource_classifier_, std::move(subscription_collections),
+ response_url, frame_hierarchy, adblock_resource_type,
+ std::move(headers)),
+ base::BindOnce(
+ &ResourceClassificationRunnerImpl::OnCheckResourceFilterMatchComplete,
+ weak_ptr_factory_.GetWeakPtr(), response_url, frame_hierarchy,
+ adblock_resource_type, host->GetGlobalId(), std::move(callback)));
+}
+
+// static
+ResourceClassificationRunnerImpl::CheckResourceFilterMatchResult
+ResourceClassificationRunnerImpl::CheckResponseFilterMatchInternal(
+ const scoped_refptr<ResourceClassifier> resource_classifier,
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL response_url,
+ const std::vector<GURL> frame_hierarchy,
+ ContentType adblock_resource_type,
+ const scoped_refptr<net::HttpResponseHeaders> response_headers) {
+ auto classification_result = resource_classifier->ClassifyResponse(
+ std::move(subscription_collections), response_url, frame_hierarchy,
+ adblock_resource_type, response_headers);
+
+ if (classification_result.decision == ClassificationDecision::Allowed) {
+ VLOG(1) << "[eyeo] Document allowed due to allowing filter "
+ << response_url;
+ return CheckResourceFilterMatchResult{
+ FilterMatchResult::kAllowRule,
+ classification_result.decisive_subscription,
+ classification_result.decisive_configuration_name};
+ }
+
+ if (classification_result.decision == ClassificationDecision::Blocked) {
+ VLOG(1) << "[eyeo] Document blocked " << response_url;
+ return CheckResourceFilterMatchResult{
+ FilterMatchResult::kBlockRule,
+ classification_result.decisive_subscription,
+ classification_result.decisive_configuration_name};
+ }
+
+ return CheckResourceFilterMatchResult{FilterMatchResult::kNoRule, {}, {}};
+}
+
+void ResourceClassificationRunnerImpl::CheckRewriteFilterMatch(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ base::OnceCallback<void(const absl::optional<GURL>&)> callback) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ DVLOG(1) << "[eyeo] CheckRewriteFilterMatch for " << request_url.spec();
+
+ content::RenderFrameHost* host =
+ frame_hierarchy_builder_->FindRenderFrameHost(render_frame_host_id);
+ if (!host) {
+ std::move(callback).Run(absl::optional<GURL>{});
+ return;
+ }
+
+ const std::vector<GURL> frame_hierarchy =
+ frame_hierarchy_builder_->BuildFrameHierarchy(host);
+ base::ThreadPool::PostTaskAndReplyWithResult(
+ FROM_HERE, {},
+ base::BindOnce(&ResourceClassifier::CheckRewrite, resource_classifier_,
+ std::move(subscription_collections), request_url,
+ frame_hierarchy),
+ std::move(callback));
+}
+
+} // namespace adblock
diff --git a/components/adblock/content/browser/resource_classification_runner_impl.h b/components/adblock/content/browser/resource_classification_runner_impl.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/resource_classification_runner_impl.h
@@ -0,0 +1,156 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_RESOURCE_CLASSIFICATION_RUNNER_IMPL_H_
+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_RESOURCE_CLASSIFICATION_RUNNER_IMPL_H_
+
+#include <vector>
+
+#include "base/memory/raw_ptr.h"
+#include "components/adblock/content/browser/frame_hierarchy_builder.h"
+#include "components/adblock/content/browser/resource_classification_runner.h"
+#include "components/adblock/core/classifier/resource_classifier.h"
+#include "components/adblock/core/common/sitekey.h"
+#include "components/adblock/core/sitekey_storage.h"
+#include "content/public/browser/global_routing_id.h"
+
+namespace adblock {
+
+class ResourceClassificationRunnerImpl final
+ : public ResourceClassificationRunner {
+ public:
+ ResourceClassificationRunnerImpl(
+ scoped_refptr<ResourceClassifier> resource_classifier,
+ std::unique_ptr<FrameHierarchyBuilder> frame_hierarchy_builder,
+ SitekeyStorage* sitekey_storage);
+ ~ResourceClassificationRunnerImpl() final;
+
+ void AddObserver(Observer* observer) final;
+ void RemoveObserver(Observer* observer) final;
+
+ // Performs a *synchronous* check, this can block the UI for a while!
+ FilterMatchResult ShouldBlockPopup(
+ const SubscriptionService::Snapshot& subscription_collections,
+ const GURL& popup_url,
+ content::RenderFrameHost* render_frame_host) final;
+ void CheckPopupFilterMatch(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& popup_url,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ CheckFilterMatchCallback callback) final;
+ void CheckRequestFilterMatch(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ ContentType adblock_resource_type,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ CheckFilterMatchCallback callback) final;
+ void CheckRequestFilterMatchForWebSocket(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ CheckFilterMatchCallback callback) final;
+ // No callback, just notify observers
+ void CheckDocumentAllowlisted(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ content::GlobalRenderFrameHostId render_frame_host_id) final;
+ void CheckResponseFilterMatch(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& response_url,
+ ContentType adblock_resource_type,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ const scoped_refptr<net::HttpResponseHeaders>& headers,
+ CheckFilterMatchCallback callback) final;
+ void CheckRewriteFilterMatch(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ base::OnceCallback<void(const absl::optional<GURL>&)> result) final;
+
+ private:
+ struct CheckResourceFilterMatchResult {
+ FilterMatchResult status;
+ GURL subscription;
+ std::string configuration_name;
+ };
+
+ static CheckResourceFilterMatchResult CheckRequestFilterMatchInternal(
+ const scoped_refptr<ResourceClassifier>& resource_classifier,
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL request_url,
+ const std::vector<GURL> frame_hierarchy,
+ ContentType adblock_resource_type,
+ const SiteKey sitekey);
+
+ void OnCheckResourceFilterMatchComplete(
+ const GURL request_url,
+ const std::vector<GURL> frame_hierarchy,
+ ContentType adblock_resource_type,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ CheckFilterMatchCallback callback,
+ const CheckResourceFilterMatchResult result);
+
+ void OnCheckPopupFilterMatchComplete(
+ const GURL& popup_url,
+ const std::vector<GURL>& frame_hierarchy,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ absl::optional<CheckFilterMatchCallback> callback,
+ const ResourceClassifier::ClassificationResult& result);
+
+ static CheckResourceFilterMatchResult CheckResponseFilterMatchInternal(
+ const scoped_refptr<ResourceClassifier> resource_classifier,
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL response_url,
+ const std::vector<GURL> frame_hierarchy,
+ ContentType adblock_resource_type,
+ const scoped_refptr<net::HttpResponseHeaders> response_headers);
+
+ void NotifyAdMatched(const GURL& url,
+ FilterMatchResult result,
+ const std::vector<GURL>& parent_frame_urls,
+ ContentType content_type,
+ content::RenderFrameHost* render_frame_host,
+ const GURL& subscription,
+ const std::string& configuration_name);
+
+ void PostFilterMatchCallbackToUI(CheckFilterMatchCallback callback,
+ FilterMatchResult result);
+
+ void PostRewriteCallbackToUI(
+ base::OnceCallback<void(const absl::optional<GURL>&)> callback,
+ absl::optional<GURL> url);
+
+ static CheckResourceFilterMatchResult CheckDocumentAllowlistedInternal(
+ const SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url);
+
+ void ProcessDocumentAllowlistedResponse(
+ const GURL request_url,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ CheckResourceFilterMatchResult result);
+
+ SEQUENCE_CHECKER(sequence_checker_);
+ scoped_refptr<ResourceClassifier> resource_classifier_;
+ std::unique_ptr<FrameHierarchyBuilder> frame_hierarchy_builder_;
+ raw_ptr<SitekeyStorage> sitekey_storage_;
+ base::ObserverList<Observer> observers_;
+ base::WeakPtrFactory<ResourceClassificationRunnerImpl> weak_ptr_factory_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_RESOURCE_CLASSIFICATION_RUNNER_IMPL_H_
diff --git a/components/adblock/content/browser/session_stats_impl.cc b/components/adblock/content/browser/session_stats_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/session_stats_impl.cc
@@ -0,0 +1,86 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/content/browser/session_stats_impl.h"
+
+#include "components/adblock/core/common/adblock_constants.h"
+#include "content/public/browser/browser_thread.h"
+
+namespace adblock {
+
+SessionStatsImpl::SessionStatsImpl(
+ ResourceClassificationRunner* classification_runner)
+ : classification_runner_(classification_runner) {
+ DCHECK(classification_runner_);
+ classification_runner_->AddObserver(this);
+}
+
+SessionStatsImpl::~SessionStatsImpl() {
+ classification_runner_->RemoveObserver(this);
+}
+
+std::map<GURL, long> SessionStatsImpl::GetSessionAllowedAdsCount() const {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ return allowed_map_;
+}
+
+std::map<GURL, long> SessionStatsImpl::GetSessionBlockedAdsCount() const {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ return blocked_map_;
+}
+
+void SessionStatsImpl::OnAdMatched(const GURL& url,
+ FilterMatchResult match_result,
+ const std::vector<GURL>& parent_frame_urls,
+ ContentType content_type,
+ content::RenderFrameHost* render_frame_host,
+ const GURL& subscription,
+ const std::string& configuration_name) {
+ OnMatchedInternal(match_result, subscription);
+}
+
+void SessionStatsImpl::OnPageAllowed(
+ const GURL& url,
+ content::RenderFrameHost* render_frame_host,
+ const GURL& subscription,
+ const std::string& configuration_name) {
+ OnMatchedInternal(FilterMatchResult::kAllowRule, subscription);
+}
+
+void SessionStatsImpl::OnPopupMatched(
+ const GURL& url,
+ FilterMatchResult match_result,
+ const GURL& opener_url,
+ content::RenderFrameHost* render_frame_host,
+ const GURL& subscription,
+ const std::string& configuration_name) {
+ OnMatchedInternal(match_result, subscription);
+}
+
+void SessionStatsImpl::OnMatchedInternal(FilterMatchResult match_result,
+ const GURL& subscription) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(!subscription.is_empty());
+ if (match_result == adblock::FilterMatchResult::kBlockRule) {
+ blocked_map_[subscription]++;
+ } else {
+ DCHECK(match_result == adblock::FilterMatchResult::kAllowRule);
+ allowed_map_[subscription]++;
+ }
+}
+
+} // namespace adblock
diff --git a/components/adblock/content/browser/session_stats_impl.h b/components/adblock/content/browser/session_stats_impl.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/session_stats_impl.h
@@ -0,0 +1,71 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_SESSION_STATS_IMPL_H_
+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_SESSION_STATS_IMPL_H_
+
+#include "base/memory/raw_ptr.h"
+#include "base/sequence_checker.h"
+#include "components/adblock/content/browser/resource_classification_runner.h"
+#include "components/adblock/core/session_stats.h"
+
+namespace adblock {
+
+class SessionStatsImpl final : public SessionStats,
+ public ResourceClassificationRunner::Observer {
+ public:
+ explicit SessionStatsImpl(
+ ResourceClassificationRunner* classification_runner);
+
+ ~SessionStatsImpl() final;
+
+ std::map<GURL, long> GetSessionAllowedAdsCount() const final;
+
+ std::map<GURL, long> GetSessionBlockedAdsCount() const final;
+
+ // ResourceClassificationRunner::Observer:
+ void OnAdMatched(const GURL& url,
+ FilterMatchResult match_result,
+ const std::vector<GURL>& parent_frame_urls,
+ ContentType content_type,
+ content::RenderFrameHost* render_frame_host,
+ const GURL& subscription,
+ const std::string& configuration_name) final;
+ void OnPageAllowed(const GURL& url,
+ content::RenderFrameHost* render_frame_host,
+ const GURL& subscription,
+ const std::string& configuration_name) final;
+ void OnPopupMatched(const GURL& url,
+ FilterMatchResult match_result,
+ const GURL& opener_url,
+ content::RenderFrameHost* render_frame_host,
+ const GURL& subscription,
+ const std::string& configuration_name) final;
+
+ private:
+ void OnMatchedInternal(FilterMatchResult match_result,
+ const GURL& subscription);
+
+ SEQUENCE_CHECKER(sequence_checker_);
+ raw_ptr<ResourceClassificationRunner> classification_runner_;
+ std::map<GURL, long> allowed_map_;
+ std::map<GURL, long> blocked_map_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_SESSION_STATS_IMPL_H_
diff --git a/components/adblock/content/browser/subscription_service_factory_base.cc b/components/adblock/content/browser/subscription_service_factory_base.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/subscription_service_factory_base.cc
@@ -0,0 +1,224 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/content/browser/subscription_service_factory_base.h"
+
+#include <fstream>
+#include <memory>
+#include <vector>
+
+#include "base/command_line.h"
+#include "base/files/file_util.h"
+#include "base/functional/bind.h"
+#include "base/task/thread_pool.h"
+#include "base/trace_event/trace_event.h"
+#include "components/adblock/core/adblock_switches.h"
+#include "components/adblock/core/common/adblock_constants.h"
+#include "components/adblock/core/configuration/persistent_filtering_configuration.h"
+#include "components/adblock/core/converter/flatbuffer_converter.h"
+#include "components/adblock/core/subscription/filtering_configuration_maintainer_impl.h"
+#include "components/adblock/core/subscription/installed_subscription_impl.h"
+#include "components/adblock/core/subscription/ongoing_subscription_request_impl.h"
+#include "components/adblock/core/subscription/preloaded_subscription_provider_impl.h"
+#include "components/adblock/core/subscription/subscription_config.h"
+#include "components/adblock/core/subscription/subscription_downloader_impl.h"
+#include "components/adblock/core/subscription/subscription_persistent_storage_impl.h"
+#include "components/adblock/core/subscription/subscription_service_impl.h"
+#include "components/adblock/core/subscription/subscription_updater.h"
+#include "components/adblock/core/subscription/subscription_updater_impl.h"
+#include "components/adblock/core/subscription/subscription_validator_impl.h"
+#include "components/keyed_service/content/browser_context_dependency_manager.h"
+#include "components/pref_registry/pref_registry_syncable.h"
+#include "components/prefs/pref_service.h"
+#include "content/public/browser/browser_context.h"
+#include "content/public/browser/storage_partition.h"
+
+namespace adblock {
+namespace {
+
+std::optional<base::TimeDelta> g_update_check_interval_for_testing;
+std::optional<base::TimeDelta> g_update_initial_delay_for_testing;
+
+base::TimeDelta GetUpdateInitialDelay() {
+ static base::TimeDelta kInitialDelay =
+ g_update_initial_delay_for_testing
+ ? g_update_initial_delay_for_testing.value()
+ : base::Seconds(30);
+ return kInitialDelay;
+}
+
+base::TimeDelta GetUpdateCheckInterval() {
+ static base::TimeDelta kCheckInterval =
+ g_update_check_interval_for_testing
+ ? g_update_check_interval_for_testing.value()
+ : base::Hours(1);
+ return kCheckInterval;
+}
+
+constexpr net::BackoffEntry::Policy kRetryBackoffPolicy = {
+ 0, // Number of initial errors to ignore.
+ 5000, // Initial delay in ms.
+ 2.0, // Factor by which the waiting time will be multiplied.
+ 0.2, // Fuzzing percentage.
+ 60 * 60 * 1000, // Maximum delay in ms.
+ -1, // Never discard the entry.
+ false, // Use initial delay.
+};
+
+std::unique_ptr<OngoingSubscriptionRequest> MakeOngoingSubscriptionRequest(
+ scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory) {
+ return std::make_unique<OngoingSubscriptionRequestImpl>(&kRetryBackoffPolicy,
+ url_loader_factory);
+}
+
+ConversionResult ConvertFilterFile(const GURL& subscription_url,
+ const base::FilePath& path) {
+ TRACE_EVENT1("eyeo", "ConvertFileToFlatbuffer", "url",
+ subscription_url.spec());
+ ConversionResult result;
+ std::ifstream input_stream(path.AsUTF8Unsafe());
+ if (!input_stream.is_open() || !input_stream.good()) {
+ result = ConversionError("Could not open filter file");
+ } else {
+ result = FlatbufferConverter::Convert(
+ input_stream, subscription_url,
+ config::AllowPrivilegedFilters(subscription_url));
+ }
+ base::DeleteFile(path);
+ return result;
+}
+
+std::unique_ptr<SubscriptionUpdater> MakeSubscriptionUpdater() {
+ return std::make_unique<SubscriptionUpdaterImpl>(GetUpdateInitialDelay(),
+ GetUpdateCheckInterval());
+}
+
+std::unique_ptr<FilteringConfigurationMaintainer>
+MakeFilterConfigurationMaintainer(
+ content::BrowserContext* context,
+ PrefService* prefs,
+ SubscriptionPersistentMetadata* persistent_metadata,
+ const ConversionExecutors* conversion_executors,
+ FilteringConfiguration* configuration,
+ FilteringConfigurationMaintainerImpl::SubscriptionUpdatedCallback
+ observer) {
+ auto main_thread_task_runner = base::SequencedTaskRunner::GetCurrentDefault();
+ scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory =
+ context->GetDefaultStoragePartition()
+ ->GetURLLoaderFactoryForBrowserProcess();
+
+ const std::string storage_dir = configuration->GetName() + "_subscriptions";
+
+ auto storage = std::make_unique<SubscriptionPersistentStorageImpl>(
+ context->GetPath().AppendASCII(storage_dir),
+ std::make_unique<SubscriptionValidatorImpl>(prefs,
+ CurrentSchemaVersion()),
+ persistent_metadata);
+
+ auto downloader = std::make_unique<SubscriptionDownloaderImpl>(
+ utils::GetAppInfo(),
+ base::BindRepeating(&MakeOngoingSubscriptionRequest, url_loader_factory),
+ const_cast<ConversionExecutors*>(conversion_executors),
+ persistent_metadata);
+
+ auto maintainer = std::make_unique<FilteringConfigurationMaintainerImpl>(
+ configuration, std::move(storage), std::move(downloader),
+ std::make_unique<PreloadedSubscriptionProviderImpl>(),
+ MakeSubscriptionUpdater(),
+ const_cast<ConversionExecutors*>(conversion_executors),
+ persistent_metadata, observer);
+ maintainer->InitializeStorage();
+ return maintainer;
+}
+
+void CleanupPersistedConfiguration(PrefService* prefs,
+ FilteringConfiguration* configuration) {
+ PersistentFilteringConfiguration::RemovePersistedData(
+ prefs, configuration->GetName());
+}
+
+} // namespace
+
+SubscriptionServiceFactoryBase::SubscriptionServiceFactoryBase()
+ : BrowserContextKeyedServiceFactory(
+ "AdblockSubscriptionService",
+ BrowserContextDependencyManager::GetInstance()) {}
+
+SubscriptionServiceFactoryBase::~SubscriptionServiceFactoryBase() = default;
+
+KeyedService* SubscriptionServiceFactoryBase::BuildServiceInstanceFor(
+ content::BrowserContext* context) const {
+ auto* prefs = GetPrefs(context);
+ auto* subscription_service = new SubscriptionServiceImpl(
+ base::BindRepeating(&MakeFilterConfigurationMaintainer, context, prefs,
+ GetSubscriptionPersistentMetadata(context),
+ static_cast<const ConversionExecutors*>(this)),
+ base::BindRepeating(&CleanupPersistedConfiguration, prefs));
+ auto persisted_configs =
+ PersistentFilteringConfiguration::GetPersistedConfigurations(prefs);
+ bool start_disabled = base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kDisableEyeoFiltering);
+ for (auto& persisted_configuration : persisted_configs) {
+ if (persisted_configuration->GetName() ==
+ kAdblockFilteringConfigurationName) {
+ // "adblock" configuration is taken care by
+ // AdblockController(Factory)
+ continue;
+ }
+ if (start_disabled) {
+ persisted_configuration->SetEnabled(false);
+ }
+ subscription_service->InstallFilteringConfiguration(
+ std::move(persisted_configuration));
+ }
+ return subscription_service;
+}
+
+scoped_refptr<InstalledSubscription>
+SubscriptionServiceFactoryBase::ConvertCustomFilters(
+ const std::vector<std::string>& filters) const {
+ auto raw_data =
+ FlatbufferConverter::Convert(filters, CustomFiltersUrl(), true);
+ return base::MakeRefCounted<InstalledSubscriptionImpl>(
+ std::move(raw_data), Subscription::InstallationState::Installed,
+ base::Time());
+}
+
+void SubscriptionServiceFactoryBase::ConvertFilterListFile(
+ const GURL& subscription_url,
+ const base::FilePath& path,
+ base::OnceCallback<void(ConversionResult)> result_callback) const {
+ base::ThreadPool::PostTaskAndReplyWithResult(
+ FROM_HERE, {base::MayBlock()},
+ base::BindOnce(&ConvertFilterFile, subscription_url, path),
+ std::move(result_callback));
+}
+
+void SubscriptionServiceFactoryBase::RegisterProfilePrefs(
+ user_prefs::PrefRegistrySyncable* registry) {
+ adblock::PersistentFilteringConfiguration::RegisterProfilePrefs(registry);
+}
+
+// static
+void SubscriptionServiceFactoryBase::SetUpdateCheckAndDelayIntervalsForTesting(
+ base::TimeDelta check_interval,
+ base::TimeDelta initial_delay) {
+ g_update_check_interval_for_testing = check_interval;
+ g_update_initial_delay_for_testing = initial_delay;
+}
+
+} // namespace adblock
diff --git a/components/adblock/content/browser/subscription_service_factory_base.h b/components/adblock/content/browser/subscription_service_factory_base.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/subscription_service_factory_base.h
@@ -0,0 +1,60 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_SUBSCRIPTION_SERVICE_FACTORY_BASE_H_
+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_SUBSCRIPTION_SERVICE_FACTORY_BASE_H_
+
+#include "components/adblock/core/subscription/conversion_executors.h"
+#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
+#include "components/prefs/pref_service.h"
+#include "content/public/browser/browser_context.h"
+
+namespace adblock {
+
+class SubscriptionPersistentMetadata;
+class SubscriptionServiceFactoryBase : public BrowserContextKeyedServiceFactory,
+ public ConversionExecutors {
+ public:
+ static void SetUpdateCheckAndDelayIntervalsForTesting(
+ base::TimeDelta check_interval,
+ base::TimeDelta initial_delay);
+
+ // ConversionExecutors:
+ scoped_refptr<InstalledSubscription> ConvertCustomFilters(
+ const std::vector<std::string>& filters) const override;
+ void ConvertFilterListFile(
+ const GURL& subscription_url,
+ const base::FilePath& path,
+ base::OnceCallback<void(ConversionResult)>) const override;
+
+ protected:
+ virtual PrefService* GetPrefs(content::BrowserContext* context) const = 0;
+ virtual SubscriptionPersistentMetadata* GetSubscriptionPersistentMetadata(
+ content::BrowserContext* context) const = 0;
+ SubscriptionServiceFactoryBase();
+ ~SubscriptionServiceFactoryBase() override;
+
+ // BrowserContextKeyedServiceFactory:
+ KeyedService* BuildServiceInstanceFor(
+ content::BrowserContext* context) const override;
+ void RegisterProfilePrefs(
+ user_prefs::PrefRegistrySyncable* registry) override;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_SUBSCRIPTION_SERVICE_FACTORY_BASE_H_
diff --git a/components/adblock/core/BUILD.gn b/components/adblock/core/BUILD.gn
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/BUILD.gn
@@ -0,0 +1,175 @@
+#
+# This file is part of eyeo Chromium SDK,
+# Copyright (C) 2006-present eyeo GmbH
+#
+# eyeo Chromium SDK is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3 as
+# published by the Free Software Foundation.
+#
+# eyeo Chromium SDK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+
+import("//components/adblock/features.gni")
+import("//third_party/flatbuffers/flatbuffer.gni")
+
+flatbuffer("schema") {
+ sources = [ "schema/filter_list_schema.fbs" ]
+}
+
+template("generate_sha256_header") {
+ output_prefix_ = "${target_gen_dir}/hash/${target_name}"
+ generated_files = [
+ "${output_prefix_}.h",
+ "${output_prefix_}.cc",
+ ]
+
+ # Generates .h and .cc files which contain the hashes of invoker.files_to_hash.
+ action("${target_name}_hash") {
+ # The script lives in /chrome but has no dependencies to the //chrome target.
+ # According to the script's author, it could be moved to /build but only if
+ # there's code *upstream* that needs it outside of /chrome.
+ script = "//chrome/tools/build/sha256_file.py"
+ outputs = generated_files
+ inputs = invoker.files_to_hash
+
+ args = [ rebase_path(output_prefix_, root_build_dir) ] +
+ rebase_path(inputs, root_build_dir)
+
+ deps = invoker.deps
+ }
+
+ # Allows linking the generated .h and .cc files, is the main target of
+ # this template.
+ source_set("${target_name}") {
+ sources = generated_files
+
+ deps = [ ":${target_name}_hash" ]
+ }
+}
+
+generate_sha256_header("schema_hash") {
+ deps = [ ":schema" ]
+
+ # Using the generated flatbuffer header instead of source .fbs file to:
+ # - avoid generating new schema hash if just a comment in the .fbs changes
+ # - generate a new schema hash if .fbs -> .h conversion changes unexpectedly
+ files_to_hash = [ "${target_gen_dir}/schema/filter_list_schema_generated.h" ]
+}
+
+config("eyeo_telemetry_config") {
+ defines = []
+
+ if (eyeo_telemetry_server_url != "") {
+ # Explicitly setting Telemetry server URL, used for testing with a test
+ # server.
+ defines += [ "EYEO_TELEMETRY_SERVER_URL=\"$eyeo_telemetry_server_url\"" ]
+ } else {
+ # Implicitly setting production Telemetry server URL based on
+ # eyeo_telemetry_client_id (or a default client id as a fallback).
+ if (eyeo_telemetry_client_id != "") {
+ defines += [ "EYEO_TELEMETRY_CLIENT_ID=\"$eyeo_telemetry_client_id\"" ]
+ } else {
+ print("WARNING! gn arg eyeo_telemetry_client_id is not set. " +
+ "Users will not be counted correctly by eyeo.")
+ eyeo_telemetry_client_id = "eyeochromium"
+ }
+ eyeo_telemetry_server_url =
+ "https://${eyeo_telemetry_client_id}.telemetry.eyeo.com/"
+ defines += [ "EYEO_TELEMETRY_SERVER_URL=\"$eyeo_telemetry_server_url\"" ]
+ }
+
+ if (eyeo_telemetry_activeping_auth_token != "") {
+ defines += [ "EYEO_TELEMETRY_ACTIVEPING_AUTH_TOKEN=\"$eyeo_telemetry_activeping_auth_token\"" ]
+ } else {
+ print("WARNING! gn arg eyeo_telemetry_activeping_auth_token is not set. " +
+ "Users will not be counted correctly by eyeo.")
+ }
+}
+
+source_set("core") {
+ output_name = "adblock_core"
+ sources = [
+ "activeping_telemetry_topic_provider.cc",
+ "activeping_telemetry_topic_provider.h",
+ "adblock_controller.h",
+ "adblock_controller_impl.cc",
+ "adblock_controller_impl.h",
+ "adblock_switches.cc",
+ "adblock_switches.h",
+ "adblock_telemetry_service.cc",
+ "adblock_telemetry_service.h",
+ "features.cc",
+ "features.h",
+ "sitekey_storage.h",
+ "sitekey_storage_impl.cc",
+ "sitekey_storage_impl.h",
+ ]
+
+ deps = [
+ "//components/language/core/common",
+ "//third_party/flatbuffers",
+ ]
+
+ public_deps = [
+ "//components/adblock/core/classifier",
+ "//components/adblock/core/common",
+ "//components/adblock/core/common:utils",
+ "//components/adblock/core/configuration",
+ "//components/adblock/core/subscription",
+ "//components/keyed_service/core",
+ "//components/pref_registry",
+ "//components/prefs",
+ "//components/version_info",
+ ]
+
+ configs += [ ":eyeo_telemetry_config" ]
+}
+
+source_set("test_support") {
+ testonly = true
+ sources = [
+ "test/mock_adblock_controller.cc",
+ "test/mock_adblock_controller.h",
+ "test/mock_sitekey_storage.cc",
+ "test/mock_sitekey_storage.h",
+ ]
+
+ public_deps = [
+ ":core",
+ "//components/adblock/core/subscription:test_support",
+ "//testing/gmock",
+ "//testing/gtest",
+ ]
+}
+
+source_set("unit_tests") {
+ testonly = true
+ sources = [
+ "test/activeping_telemetry_topic_provider_test.cc",
+ "test/adblock_controller_impl_test.cc",
+ "test/adblock_telemetry_service_unittest.cc",
+ "test/bundled_subscription_test.cc",
+ "test/sitekey_storage_impl_test.cc",
+ ]
+
+ deps = [
+ ":core",
+ ":test_support",
+ "//base/test:test_support",
+ "//components/adblock/core/configuration:test_support",
+ "//components/adblock/core/subscription:test_support",
+ "//components/prefs:test_support",
+ "//components/resources:components_resources_grit",
+ "//components/sync_preferences:test_support",
+ "//net:test_support",
+ "//services/network:test_support",
+ "//testing/gtest",
+ ]
+
+ configs += [ ":eyeo_telemetry_config" ]
+}
diff --git a/components/adblock/core/activeping_telemetry_topic_provider.cc b/components/adblock/core/activeping_telemetry_topic_provider.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/activeping_telemetry_topic_provider.cc
@@ -0,0 +1,285 @@
+/* This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/activeping_telemetry_topic_provider.h"
+
+#include "base/json/json_reader.h"
+#include "base/json/json_writer.h"
+#include "base/system/sys_info.h"
+#include "base/time/time.h"
+#include "base/time/time_to_iso8601.h"
+#include "base/uuid.h"
+#include "components/adblock/core/common/adblock_prefs.h"
+#include "components/adblock/core/subscription/subscription_config.h"
+
+namespace adblock {
+namespace {
+int g_http_port_for_testing = 0;
+std::optional<base::TimeDelta> g_time_delta_for_testing;
+
+GURL GetUrl() {
+ GURL url(EYEO_TELEMETRY_SERVER_URL);
+ if (!g_http_port_for_testing) {
+ return url;
+ }
+ DCHECK_EQ(url::kHttpsScheme, url.scheme());
+ GURL::Replacements replacements;
+ replacements.SetSchemeStr(url::kHttpScheme);
+ const std::string port_str = base::NumberToString(g_http_port_for_testing);
+ replacements.SetPortStr(port_str);
+ return url.ReplaceComponents(replacements);
+}
+
+base::TimeDelta GetNormalPingInterval() {
+ static base::TimeDelta kNormalPingInterval =
+ g_time_delta_for_testing ? g_time_delta_for_testing.value()
+ : base::Hours(12);
+ return kNormalPingInterval;
+}
+
+base::TimeDelta GetRetryPingInterval() {
+ static base::TimeDelta kRetryPingInterval =
+ g_time_delta_for_testing ? g_time_delta_for_testing.value()
+ : base::Hours(1);
+ return kRetryPingInterval;
+}
+
+void AppendStringIfPresent(PrefService* pref_service,
+ const std::string& pref_name,
+ base::StringPiece payload_key,
+ base::Value::Dict& payload) {
+ auto str = pref_service->GetString(pref_name);
+ if (!str.empty()) {
+ payload.Set(payload_key, std::move(str));
+ }
+}
+} // namespace
+
+ActivepingTelemetryTopicProvider::ActivepingTelemetryTopicProvider(
+ utils::AppInfo app_info,
+ PrefService* pref_service,
+ SubscriptionService* subscription_service,
+ const GURL& base_url,
+ const std::string& auth_token)
+ : app_info_(std::move(app_info)),
+ pref_service_(pref_service),
+ subscription_service_(subscription_service),
+ base_url_(base_url),
+ auth_token_(auth_token) {}
+
+ActivepingTelemetryTopicProvider::~ActivepingTelemetryTopicProvider() = default;
+
+// static
+GURL ActivepingTelemetryTopicProvider::DefaultBaseUrl() {
+#if !defined(EYEO_TELEMETRY_CLIENT_ID)
+ LOG(WARNING)
+ << "[eyeo] Using default Telemetry server since a Telemetry client ID "
+ "was "
+ "not provided. Users will not be counted correctly by eyeo. Please "
+ "set an ID via \"eyeo_telemetry_client_id\" gn argument.";
+#endif
+ return GetUrl();
+}
+
+// static
+std::string ActivepingTelemetryTopicProvider::DefaultAuthToken() {
+#if defined(EYEO_TELEMETRY_ACTIVEPING_AUTH_TOKEN)
+ DVLOG(1) << "[eyeo] Using " << EYEO_TELEMETRY_ACTIVEPING_AUTH_TOKEN
+ << " as Telemetry authentication token";
+ return EYEO_TELEMETRY_ACTIVEPING_AUTH_TOKEN;
+#else
+ LOG(WARNING)
+ << "[eyeo] No Telemetry authentication token defined. Users will "
+ "not be counted correctly by eyeo. Please set a token via "
+ "\"eyeo_telemetry_activeping_auth_token\" gn argument.";
+ return "";
+#endif
+}
+
+GURL ActivepingTelemetryTopicProvider::GetEndpointURL() const {
+ return base_url_.Resolve("/topic/eyeochromium_activeping/version/1");
+}
+
+std::string ActivepingTelemetryTopicProvider::GetAuthToken() const {
+ return auth_token_;
+}
+
+void ActivepingTelemetryTopicProvider::GetPayload(
+ PayloadCallback callback) const {
+ std::string serialized;
+ // The only way JSONWriter::Write() can return fail is then the Value
+ // contains lists or dicts that are too deep (200 levels). We just built the
+ // payload and root objects here, they should be really shallow.
+ CHECK(base::JSONWriter::Write(GetPayloadInternal(), &serialized));
+ std::move(callback).Run(std::move(serialized));
+}
+
+base::Time ActivepingTelemetryTopicProvider::GetTimeOfNextRequest() const {
+ const auto next_ping_time =
+ pref_service_->GetTime(common::prefs::kTelemetryNextPingTime);
+ // Next ping time may be unset if this is a first run. Next request should
+ // happen ASAP.
+ if (next_ping_time.is_null()) {
+ return base::Time::Now();
+ }
+
+ return next_ping_time;
+}
+
+void ActivepingTelemetryTopicProvider::ParseResponse(
+ std::unique_ptr<std::string> response_content) {
+ if (!response_content) {
+ VLOG(1) << "[eyeo] Telemetry ping failed, no response from server";
+ ScheduleNextPing(GetRetryPingInterval());
+ return;
+ }
+
+ VLOG(1) << "[eyeo] Response from Telemetry server: " << *response_content;
+ auto parsed = base::JSONReader::ReadDict(*response_content);
+ if (!parsed) {
+ VLOG(1)
+ << "[eyeo] Telemetry ping failed, response could not be parsed as JSON";
+ ScheduleNextPing(GetRetryPingInterval());
+ return;
+ }
+
+ auto* error_message = parsed->FindString("error");
+ if (error_message) {
+ VLOG(1) << "[eyeo] Telemetry ping failed, error message: "
+ << *error_message;
+ ScheduleNextPing(GetRetryPingInterval());
+ return;
+ }
+
+ // For legacy reasons, "ping_response_time" is sent to us as "token". This
+ // should be the server time of when the ping was handled, possibly truncated
+ // for anonymity. We don't parse it or interpret it, just send it back with
+ // next ping.
+ auto* ping_response_time = parsed->FindString("token");
+ if (!ping_response_time) {
+ VLOG(1) << "[eyeo] Telemetry ping failed, response did not contain a last "
+ "ping / token value";
+ ScheduleNextPing(GetRetryPingInterval());
+ return;
+ }
+
+ VLOG(1) << "[eyeo] Telemetry ping succeeded";
+ ScheduleNextPing(GetNormalPingInterval());
+ UpdatePrefs(*ping_response_time);
+}
+
+void ActivepingTelemetryTopicProvider::FetchDebugInfo(
+ DebugInfoCallback callback) const {
+ base::Value::Dict debug_info;
+ debug_info.Set("endpoint_url", GetEndpointURL().spec());
+ debug_info.Set("payload", GetPayloadInternal());
+ debug_info.Set("first_ping",
+ pref_service_->GetString(
+ adblock::common::prefs::kTelemetryFirstPingTime));
+ debug_info.Set("time_of_next_request",
+ base::TimeToISO8601(GetTimeOfNextRequest()));
+ debug_info.Set(
+ "last_ping",
+ pref_service_->GetString(adblock::common::prefs::kTelemetryLastPingTime));
+ debug_info.Set("previous_last_ping",
+ pref_service_->GetString(
+ adblock::common::prefs::kTelemetryPreviousLastPingTime));
+ debug_info.Set("next_ping",
+ base::TimeToISO8601(pref_service_->GetTime(
+ adblock::common::prefs::kTelemetryNextPingTime)));
+
+ std::string serialized;
+ // The only way JSONWriter::Write() can return fail is then the Value
+ // contains lists or dicts that are too deep (200 levels). We just built the
+ // payload and root objects here, they should be really shallow.
+ CHECK(base::JSONWriter::WriteWithOptions(
+ debug_info, base::JsonOptions::OPTIONS_PRETTY_PRINT, &serialized));
+ std::move(callback).Run(std::move(serialized));
+}
+
+void ActivepingTelemetryTopicProvider::ScheduleNextPing(base::TimeDelta delay) {
+ pref_service_->SetTime(common::prefs::kTelemetryNextPingTime,
+ base::Time::Now() + delay);
+}
+
+void ActivepingTelemetryTopicProvider::UpdatePrefs(
+ const std::string& ping_response_time) {
+ // First ping is only set once per client.
+ if (pref_service_->GetString(common::prefs::kTelemetryFirstPingTime)
+ .empty()) {
+ pref_service_->SetString(common::prefs::kTelemetryFirstPingTime,
+ ping_response_time);
+ }
+ // Previous-to-last becomes last, last becomes current.
+ pref_service_->SetString(
+ common::prefs::kTelemetryPreviousLastPingTime,
+ pref_service_->GetString(common::prefs::kTelemetryLastPingTime));
+ pref_service_->SetString(common::prefs::kTelemetryLastPingTime,
+ ping_response_time);
+ // Generate a new random tag that wil be sent along with ping times in the
+ // next request.
+ const auto tag = base::Uuid::GenerateRandomV4();
+ pref_service_->SetString(common::prefs::kTelemetryLastPingTag,
+ tag.AsLowercaseString());
+}
+
+base::Value ActivepingTelemetryTopicProvider::GetPayloadInternal() const {
+ base::Value::Dict payload;
+ bool aa_enabled = false;
+ auto* adblock_configuration =
+ subscription_service_->GetAdblockFilteringConfiguration();
+ if (adblock_configuration) {
+ aa_enabled = base::ranges::any_of(
+ adblock_configuration->GetFilterLists(),
+ [&](const auto& url) { return url == AcceptableAdsUrl(); });
+ }
+ payload.Set("addon_name", "eyeo-chromium-sdk");
+ payload.Set("addon_version", "2.0.0");
+ payload.Set("application", app_info_.name);
+ payload.Set("application_version", app_info_.version);
+ payload.Set("aa_active", aa_enabled);
+ payload.Set("platform", base::SysInfo::OperatingSystemName());
+ payload.Set("platform_version", base::SysInfo::OperatingSystemVersion());
+ // Server requires the following parameters to either have a correct,
+ // non-empty value, or not be present at all. We shall not send empty strings.
+ AppendStringIfPresent(pref_service_, common::prefs::kTelemetryLastPingTag,
+ "last_ping_tag", payload);
+ AppendStringIfPresent(pref_service_, common::prefs::kTelemetryFirstPingTime,
+ "first_ping", payload);
+ AppendStringIfPresent(pref_service_, common::prefs::kTelemetryLastPingTime,
+ "last_ping", payload);
+ AppendStringIfPresent(pref_service_,
+ common::prefs::kTelemetryPreviousLastPingTime,
+ "previous_last_ping", payload);
+
+ base::Value::Dict root;
+ root.Set("payload", std::move(payload));
+ return base::Value(std::move(root));
+}
+
+// static
+void ActivepingTelemetryTopicProvider::SetHttpPortForTesting(
+ int http_port_for_testing) {
+ g_http_port_for_testing = http_port_for_testing;
+}
+
+// static
+void ActivepingTelemetryTopicProvider::SetIntervalsForTesting(
+ base::TimeDelta time_delta) {
+ g_time_delta_for_testing = time_delta;
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/activeping_telemetry_topic_provider.h b/components/adblock/core/activeping_telemetry_topic_provider.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/activeping_telemetry_topic_provider.h
@@ -0,0 +1,87 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_ACTIVEPING_TELEMETRY_TOPIC_PROVIDER_H_
+#define COMPONENTS_ADBLOCK_CORE_ACTIVEPING_TELEMETRY_TOPIC_PROVIDER_H_
+
+#include "base/memory/raw_ptr.h"
+#include "base/time/time.h"
+#include "components/adblock/core/adblock_telemetry_service.h"
+#include "components/adblock/core/common/adblock_utils.h"
+#include "components/adblock/core/subscription/subscription_service.h"
+#include "components/prefs/pref_service.h"
+
+namespace adblock {
+
+// Telemetry topic provider that uploads user-counting data for periodic pings.
+// Provides the following data in Payload:
+// - Last ping time, previous-to-last ping time, first ping time
+// - Unique, non-persistent tag for disambiguating pings made by clients in
+// the same day
+// - Whether Acceptable Ads is enabled
+// - Application name & version, platform name & version
+// Note: Provides no user-identifiable information, no persistent tracking
+// data (ie. no traceable UUID) and no information about user actions.
+class ActivepingTelemetryTopicProvider final
+ : public AdblockTelemetryService::TopicProvider {
+ public:
+ ActivepingTelemetryTopicProvider(utils::AppInfo app_info,
+ PrefService* pref_service,
+ SubscriptionService* subscription_service,
+ const GURL& base_url,
+ const std::string& auth_token);
+ ~ActivepingTelemetryTopicProvider() final;
+
+ static GURL DefaultBaseUrl();
+ static std::string DefaultAuthToken();
+
+ GURL GetEndpointURL() const final;
+ std::string GetAuthToken() const final;
+ void GetPayload(PayloadCallback callback) const final;
+
+ // Normally 12 hours since last ping, 1 hour in case of retries.
+ base::Time GetTimeOfNextRequest() const final;
+
+ // Attempts to parse "token" (an opaque server description of last ping time)
+ // from |response_content|.
+ void ParseResponse(std::unique_ptr<std::string> response_content) final;
+
+ void FetchDebugInfo(DebugInfoCallback callback) const final;
+
+ // Sets the port used by the embedded http server required for browser tests.
+ // Must be called before the first call to DefaultBaseUrl().
+ static void SetHttpPortForTesting(int http_port_for_testing);
+
+ // Sets the internal timing for sending pings required for browser tests.
+ // Must be called before AdblockTelemetryService::Start().
+ static void SetIntervalsForTesting(base::TimeDelta time_delta);
+
+ private:
+ void ScheduleNextPing(base::TimeDelta delay);
+ void UpdatePrefs(const std::string& ping_response_time);
+ base::Value GetPayloadInternal() const;
+
+ const utils::AppInfo app_info_;
+ raw_ptr<PrefService> pref_service_;
+ raw_ptr<SubscriptionService> subscription_service_;
+ const GURL base_url_;
+ const std::string auth_token_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_ACTIVEPING_TELEMETRY_TOPIC_PROVIDER_H_
diff --git a/components/adblock/core/adblock_controller.h b/components/adblock/core/adblock_controller.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/adblock_controller.h
@@ -0,0 +1,64 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_ADBLOCK_CONTROLLER_H_
+#define COMPONENTS_ADBLOCK_CORE_ADBLOCK_CONTROLLER_H_
+
+#include <string>
+#include <vector>
+
+#include "base/observer_list.h"
+#include "components/adblock/core/subscription/installed_subscription.h"
+#include "components/adblock/core/subscription/subscription_config.h"
+#include "components/keyed_service/core/keyed_service.h"
+
+class GURL;
+
+namespace adblock {
+/**
+ * @brief Provides the way for the UI to interact with the filter engine.
+ * It allows to set the states of the ad-block and acceptable ads and
+ * adding, removing and listing subscriptions and allowed domains.
+ */
+class AdblockController : public KeyedService {
+ public:
+ ~AdblockController() override = default;
+
+ virtual void SetAdblockEnabled(bool enabled) = 0;
+ virtual bool IsAdblockEnabled() const = 0;
+ virtual void SetAcceptableAdsEnabled(bool enabled) = 0;
+ virtual bool IsAcceptableAdsEnabled() const = 0;
+
+ virtual void InstallSubscription(const GURL& url) = 0;
+ virtual void UninstallSubscription(const GURL& url) = 0;
+ virtual std::vector<scoped_refptr<Subscription>> GetInstalledSubscriptions()
+ const = 0;
+
+ virtual void AddAllowedDomain(const std::string& domain) = 0;
+ virtual void RemoveAllowedDomain(const std::string& domain) = 0;
+ virtual std::vector<std::string> GetAllowedDomains() const = 0;
+
+ virtual void AddCustomFilter(const std::string& filter) = 0;
+ virtual void RemoveCustomFilter(const std::string& filter) = 0;
+ virtual std::vector<std::string> GetCustomFilters() const = 0;
+
+ virtual std::vector<KnownSubscriptionInfo> GetKnownSubscriptions() const = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_ADBLOCK_CONTROLLER_H_
diff --git a/components/adblock/core/adblock_controller_impl.cc b/components/adblock/core/adblock_controller_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/adblock_controller_impl.cc
@@ -0,0 +1,271 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/adblock_controller_impl.h"
+
+#include <algorithm>
+#include <iterator>
+#include <numeric>
+#include <vector>
+
+#include "absl/types/optional.h"
+#include "base/command_line.h"
+#include "base/functional/bind.h"
+#include "base/logging.h"
+#include "base/ranges/algorithm.h"
+#include "base/strings/string_util.h"
+#include "base/version.h"
+#include "components/adblock/core/adblock_switches.h"
+#include "components/adblock/core/common/adblock_constants.h"
+#include "components/adblock/core/common/adblock_prefs.h"
+#include "components/adblock/core/common/adblock_utils.h"
+#include "components/adblock/core/subscription/installed_subscription.h"
+#include "components/adblock/core/subscription/subscription.h"
+#include "components/adblock/core/subscription/subscription_config.h"
+#include "components/adblock/core/subscription/subscription_service.h"
+#include "components/language/core/common/locale_util.h"
+#include "components/prefs/pref_service.h"
+#include "components/prefs/scoped_user_pref_update.h"
+#include "components/version_info/version_info.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+namespace {
+
+template <typename T>
+std::vector<T> MigrateItemsFromList(PrefService* pref_service,
+ const std::string& pref_name) {
+ std::vector<T> results;
+ if (pref_service->FindPreference(pref_name)->HasUserSetting()) {
+ const auto& list = pref_service->GetList(pref_name);
+ for (const auto& item : list) {
+ if (item.is_string()) {
+ results.emplace_back(item.GetString());
+ }
+ }
+ pref_service->ClearPref(pref_name);
+ }
+ return results;
+}
+
+absl::optional<bool> MigrateBoolFromPrefs(PrefService* pref_service,
+ const std::string& pref_name) {
+ if (pref_service->FindPreference(pref_name)->HasUserSetting()) {
+ bool value = pref_service->GetBoolean(pref_name);
+ pref_service->ClearPref(pref_name);
+ return value;
+ }
+ return absl::nullopt;
+}
+
+} // namespace
+
+AdblockControllerImpl::AdblockControllerImpl(
+ FilteringConfiguration* adblock_filtering_configuration,
+ SubscriptionService* subscription_service,
+ const std::string& locale,
+ std::vector<KnownSubscriptionInfo> known_subscriptions)
+ : adblock_filtering_configuration_(adblock_filtering_configuration),
+ subscription_service_(subscription_service),
+ language_(language::ExtractBaseLanguage(locale)),
+ known_subscriptions_(std::move(known_subscriptions)) {
+ // language::ExtractBaseLanguage is pretty basic, if it doesn't return
+ // something that looks like a valid language, fallback to English and use the
+ // default EasyList.
+ if (language_.size() != 2u) {
+ language_ = "en";
+ }
+}
+
+AdblockControllerImpl::~AdblockControllerImpl() = default;
+
+void AdblockControllerImpl::SetAdblockEnabled(bool enabled) {
+ adblock_filtering_configuration_->SetEnabled(enabled);
+}
+
+bool AdblockControllerImpl::IsAdblockEnabled() const {
+ return adblock_filtering_configuration_->IsEnabled();
+}
+
+void AdblockControllerImpl::SetAcceptableAdsEnabled(bool enabled) {
+ if (enabled) {
+ InstallSubscription(AcceptableAdsUrl());
+ } else {
+ UninstallSubscription(AcceptableAdsUrl());
+ }
+}
+
+bool AdblockControllerImpl::IsAcceptableAdsEnabled() const {
+ return base::ranges::any_of(
+ adblock_filtering_configuration_->GetFilterLists(),
+ [&](const auto& url) { return url == AcceptableAdsUrl(); });
+}
+
+void AdblockControllerImpl::InstallSubscription(const GURL& url) {
+ adblock_filtering_configuration_->AddFilterList(url);
+}
+
+void AdblockControllerImpl::UninstallSubscription(const GURL& url) {
+ adblock_filtering_configuration_->RemoveFilterList(url);
+}
+
+std::vector<scoped_refptr<Subscription>>
+AdblockControllerImpl::GetInstalledSubscriptions() const {
+ return GetSubscriptionsThatMatchConfiguration();
+}
+
+void AdblockControllerImpl::AddAllowedDomain(const std::string& domain) {
+ adblock_filtering_configuration_->AddAllowedDomain(domain);
+}
+
+void AdblockControllerImpl::RemoveAllowedDomain(const std::string& domain) {
+ adblock_filtering_configuration_->RemoveAllowedDomain(domain);
+}
+
+std::vector<std::string> AdblockControllerImpl::GetAllowedDomains() const {
+ return adblock_filtering_configuration_->GetAllowedDomains();
+}
+
+void AdblockControllerImpl::AddCustomFilter(const std::string& filter) {
+ adblock_filtering_configuration_->AddCustomFilter(filter);
+}
+
+void AdblockControllerImpl::RemoveCustomFilter(const std::string& filter) {
+ adblock_filtering_configuration_->RemoveCustomFilter(filter);
+}
+
+std::vector<std::string> AdblockControllerImpl::GetCustomFilters() const {
+ return adblock_filtering_configuration_->GetCustomFilters();
+}
+
+std::vector<KnownSubscriptionInfo>
+AdblockControllerImpl::GetKnownSubscriptions() const {
+ return known_subscriptions_;
+}
+
+void AdblockControllerImpl::RunFirstRunLogic(PrefService* pref_service) {
+ // If the state of installed subscriptions in SubscriptionService is different
+ // than the state in prefs, prefs take precedence.
+ if (pref_service->GetBoolean(
+ common::prefs::kInstallFirstStartSubscriptions)) {
+ // On first run, install additional subscriptions.
+ for (const auto& cur : known_subscriptions_) {
+ if (cur.first_run == SubscriptionFirstRunBehavior::Subscribe) {
+ if (cur.url == AcceptableAdsUrl() &&
+ base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kDisableAcceptableAds)) {
+ // Do not install Acceptable Ads on first run because a command line
+ // switch forbids it. Mostly used for testing.
+ continue;
+ }
+ InstallSubscription(cur.url);
+ }
+ }
+
+ if (IsEyeoFilteringDisabledByDefault()) {
+ SetAdblockEnabled(false);
+ }
+
+ InstallLanguageBasedRecommendedSubscriptions();
+ pref_service->SetBoolean(common::prefs::kInstallFirstStartSubscriptions,
+ false);
+ }
+}
+
+void AdblockControllerImpl::MigrateLegacyPrefs(PrefService* pref_service) {
+ if (auto aa_value = MigrateBoolFromPrefs(
+ pref_service, common::prefs::kEnableAcceptableAdsLegacy)) {
+ SetAcceptableAdsEnabled(*aa_value);
+ VLOG(1) << "[eyeo] Migrated kEnableAcceptableAdsLegacy pref";
+ }
+
+ if (auto enable_value = MigrateBoolFromPrefs(
+ pref_service, common::prefs::kEnableAdblockLegacy)) {
+ SetAdblockEnabled(*enable_value);
+ VLOG(1) << "[eyeo] Migrated kEnableAdblockLegacy pref";
+ }
+
+ for (const auto& url : MigrateItemsFromList<GURL>(
+ pref_service, common::prefs::kAdblockCustomSubscriptionsLegacy)) {
+ adblock_filtering_configuration_->AddFilterList(url);
+ VLOG(1) << "[eyeo] Migrated " << url
+ << " from kAdblockCustomSubscriptionsLegacy pref";
+ }
+
+ for (const auto& url : MigrateItemsFromList<GURL>(
+ pref_service, common::prefs::kAdblockSubscriptionsLegacy)) {
+ adblock_filtering_configuration_->AddFilterList(url);
+ VLOG(1) << "[eyeo] Migrated " << url
+ << " from kAdblockSubscriptionsLegacy pref";
+ }
+
+ for (const auto& domain : MigrateItemsFromList<std::string>(
+ pref_service, common::prefs::kAdblockAllowedDomainsLegacy)) {
+ adblock_filtering_configuration_->AddAllowedDomain(domain);
+ VLOG(1) << "[eyeo] Migrated " << domain
+ << " from kAdblockAllowedDomainsLegacy pref";
+ }
+
+ for (const auto& filter : MigrateItemsFromList<std::string>(
+ pref_service, common::prefs::kAdblockCustomFiltersLegacy)) {
+ adblock_filtering_configuration_->AddCustomFilter(filter);
+ VLOG(1) << "[eyeo] Migrated " << filter
+ << " from kAdblockCustomFiltersLegacy pref";
+ }
+}
+
+void AdblockControllerImpl::InstallLanguageBasedRecommendedSubscriptions() {
+ bool language_specific_subscription_installed = false;
+ for (const auto& subscription : known_subscriptions_) {
+ if (subscription.first_run ==
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch &&
+ std::find(subscription.languages.begin(), subscription.languages.end(),
+ language_) != subscription.languages.end()) {
+ VLOG(1) << "[eyeo] Using recommended subscription for language \""
+ << language_ << "\": " << subscription.title;
+ language_specific_subscription_installed = true;
+ InstallSubscription(subscription.url);
+ }
+ }
+ if (language_specific_subscription_installed) {
+ return;
+ }
+
+ // If there's no language-specific recommended subscription, see if we may
+ // install the default subscription..
+ if (base::ranges::any_of(
+ known_subscriptions_, [&](const KnownSubscriptionInfo& subscription) {
+ return subscription.url == DefaultSubscriptionUrl() &&
+ subscription.first_run !=
+ SubscriptionFirstRunBehavior::Ignore;
+ })) {
+ VLOG(1) << "[eyeo] Using the default subscription for language \""
+ << language_ << "\"";
+ InstallSubscription(DefaultSubscriptionUrl());
+ }
+ VLOG(1) << "[eyeo] No default subscription found, neither "
+ "language-specific, nor generic.";
+}
+
+std::vector<scoped_refptr<Subscription>>
+AdblockControllerImpl::GetSubscriptionsThatMatchConfiguration() const {
+ return subscription_service_->GetCurrentSubscriptions(
+ adblock_filtering_configuration_);
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/adblock_controller_impl.h b/components/adblock/core/adblock_controller_impl.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/adblock_controller_impl.h
@@ -0,0 +1,95 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_ADBLOCK_CONTROLLER_IMPL_H_
+#define COMPONENTS_ADBLOCK_CORE_ADBLOCK_CONTROLLER_IMPL_H_
+
+#include <string>
+#include <vector>
+
+#include "base/memory/raw_ptr.h"
+#include "base/memory/weak_ptr.h"
+#include "base/sequence_checker.h"
+#include "components/adblock/core/adblock_controller.h"
+#include "components/adblock/core/configuration/filtering_configuration.h"
+#include "components/adblock/core/subscription/subscription_config.h"
+#include "components/adblock/core/subscription/subscription_service.h"
+#include "components/prefs/pref_member.h"
+
+class GURL;
+class PrefService;
+
+namespace adblock {
+
+/**
+ * @brief Implementation of the AdblockController interface. Uses a
+ * FilteringConfiguration as the backend for all the state set via the
+ * interface.
+ */
+class AdblockControllerImpl : public AdblockController {
+ public:
+ AdblockControllerImpl(FilteringConfiguration* adblock_filtering_configuration,
+ SubscriptionService* subscription_service,
+ const std::string& locale,
+ std::vector<KnownSubscriptionInfo> known_subscriptions);
+ ~AdblockControllerImpl() override;
+
+ AdblockControllerImpl(const AdblockControllerImpl&) = delete;
+ AdblockControllerImpl& operator=(const AdblockControllerImpl&) = delete;
+ AdblockControllerImpl(AdblockControllerImpl&&) = delete;
+ AdblockControllerImpl& operator=(AdblockControllerImpl&&) = delete;
+
+ void SetAdblockEnabled(bool enabled) override;
+ bool IsAdblockEnabled() const override;
+ void SetAcceptableAdsEnabled(bool enabled) override;
+ bool IsAcceptableAdsEnabled() const override;
+
+ void InstallSubscription(const GURL& url) override;
+ void UninstallSubscription(const GURL& url) override;
+ std::vector<scoped_refptr<Subscription>> GetInstalledSubscriptions()
+ const override;
+
+ void AddAllowedDomain(const std::string& domain) override;
+ void RemoveAllowedDomain(const std::string& domain) override;
+ std::vector<std::string> GetAllowedDomains() const override;
+
+ void AddCustomFilter(const std::string& filter) override;
+ void RemoveCustomFilter(const std::string& filter) override;
+ std::vector<std::string> GetCustomFilters() const override;
+
+ std::vector<KnownSubscriptionInfo> GetKnownSubscriptions() const override;
+
+ void RunFirstRunLogic(PrefService* pref_service);
+ void MigrateLegacyPrefs(PrefService* pref_service);
+
+ protected:
+ SEQUENCE_CHECKER(sequence_checker_);
+ void NotifySubscriptionChanged(const GURL& subscription_url);
+ void InstallLanguageBasedRecommendedSubscriptions();
+ std::vector<scoped_refptr<Subscription>>
+ GetSubscriptionsThatMatchConfiguration() const;
+
+ raw_ptr<FilteringConfiguration> adblock_filtering_configuration_;
+ raw_ptr<SubscriptionService> subscription_service_;
+ std::string language_;
+ std::vector<KnownSubscriptionInfo> known_subscriptions_;
+ base::WeakPtrFactory<AdblockControllerImpl> weak_ptr_factory_{this};
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_ADBLOCK_CONTROLLER_IMPL_H_
diff --git a/components/adblock/core/adblock_switches.cc b/components/adblock/core/adblock_switches.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/adblock_switches.cc
@@ -0,0 +1,26 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/adblock_switches.h"
+
+namespace adblock::switches {
+
+const char kDisableAcceptableAds[] = "disable-aa";
+const char kDisableAdblock[] = "disable-adblock";
+const char kDisableEyeoFiltering[] = "disable-eyeo-filtering";
+
+} // namespace adblock::switches
diff --git a/components/adblock/core/adblock_switches.h b/components/adblock/core/adblock_switches.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/adblock_switches.h
@@ -0,0 +1,29 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_ADBLOCK_SWITCHES_H_
+#define COMPONENTS_ADBLOCK_CORE_ADBLOCK_SWITCHES_H_
+
+namespace adblock::switches {
+
+extern const char kDisableAcceptableAds[];
+extern const char kDisableAdblock[];
+extern const char kDisableEyeoFiltering[];
+
+} // namespace adblock::switches
+
+#endif // COMPONENTS_ADBLOCK_CORE_ADBLOCK_SWITCHES_H_
diff --git a/components/adblock/core/adblock_telemetry_service.cc b/components/adblock/core/adblock_telemetry_service.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/adblock_telemetry_service.cc
@@ -0,0 +1,258 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/adblock_telemetry_service.h"
+
+#include <string>
+
+#include "base/barrier_callback.h"
+#include "base/functional/bind.h"
+#include "base/memory/weak_ptr.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
+#include "base/strings/utf_string_conversions.h"
+#include "base/time/time.h"
+#include "base/timer/timer.h"
+#include "components/adblock/core/common/adblock_prefs.h"
+#include "components/prefs/pref_service.h"
+#include "net/base/load_flags.h"
+#include "services/network/public/cpp/resource_request.h"
+#include "services/network/public/cpp/simple_url_loader.h"
+#include "services/network/public/mojom/url_response_head.mojom.h"
+
+namespace adblock {
+
+namespace {
+
+const char kDataType[] = "application/json";
+net::NetworkTrafficAnnotationTag kTrafficAnnotation =
+ net::DefineNetworkTrafficAnnotation("adblock_telemetry_request", R"(
+ semantics {
+ sender: "AdblockTelemetryService"
+ description:
+ "Messages sent to telemetry.eyeo.com to report usage statistics."
+ "Contain no user-identifiable data."
+ trigger:
+ "Periodic, several times a day."
+ data:
+ "Subject to change: "
+ "Dates of first ping, last ping and previous-to-last ping. "
+ "A non-persistent, unique ID that disambiguates pings made in the "
+ "same day. "
+ "Application name and version (ex. Chromium 86.0.4240.183). "
+ "Platform name and version (ex. Windows 10). "
+ "Whether Acceptable Ads are in use (yes/no)."
+ destination: WEBSITE
+ }
+ policy {
+ cookies_allowed: NO
+ setting:
+ "Enabled or disabled via 'Ad blocking' setting."
+ policy_exception_justification:
+ "Parent setting may be controlled by policy"
+ }
+ })");
+
+} // namespace
+
+// Represents an ongoing chain of requests relevant to a Topic.
+// A Topic is and endpoint on the Telemetry server that expects messages
+// about a domain of activity, ex. usage of Acceptable Ads or frequency of
+// filter "hits" per filter list. The browser may report on multiple topics.
+// Messages are sent periodically. The interval of communication and the
+// content of the messages is provided by a TopicProvider.
+class AdblockTelemetryService::Conversation {
+ public:
+ Conversation(
+ std::unique_ptr<TopicProvider> topic_provider,
+ scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory)
+ : topic_provider_(std::move(topic_provider)),
+ url_loader_factory_(url_loader_factory) {}
+
+ bool IsRequestDue() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ const auto due_time = topic_provider_->GetTimeOfNextRequest();
+ if (due_time > base::Time::Now()) {
+ VLOG(1) << "[eyeo] Telemetry request for "
+ << topic_provider_->GetEndpointURL()
+ << " not due yet, should run at " << due_time;
+ return false;
+ }
+ if (IsRequestInFlight()) {
+ VLOG(1) << "[eyeo] Telemetry request for "
+ << topic_provider_->GetEndpointURL() << " already in-flight";
+ return false;
+ }
+ VLOG(1) << "[eyeo] Telemetry request for "
+ << topic_provider_->GetEndpointURL() << " is due";
+ return true;
+ }
+
+ void StartRequest() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ VLOG(1) << "[eyeo] Telemetry request for "
+ << topic_provider_->GetEndpointURL() << " starting now";
+ topic_provider_->GetPayload(base::BindOnce(&Conversation::MakeRequest,
+ weak_ptr_factory_.GetWeakPtr()));
+ }
+
+ void Stop() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ url_loader_.reset();
+ }
+
+ const std::unique_ptr<TopicProvider>& GetTopicProvider() const {
+ return topic_provider_;
+ }
+
+ private:
+ bool IsRequestInFlight() {
+ return url_loader_ != nullptr || weak_ptr_factory_.HasWeakPtrs();
+ }
+
+ void MakeRequest(std::string payload) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ auto request = std::make_unique<network::ResourceRequest>();
+ request->url = topic_provider_->GetEndpointURL();
+ VLOG(1) << "[eyeo] Sending request to: " << request->url;
+ request->method = net::HttpRequestHeaders::kPostMethod;
+ // The server expects authorization via a bearer token. The token may be
+ // empty in testing builds.
+ const auto auth_token = topic_provider_->GetAuthToken();
+ if (!auth_token.empty()) {
+ request->headers.SetHeader(net::HttpRequestHeaders::kAuthorization,
+ "Bearer " + auth_token);
+ }
+ // Notify the server we're expecting a JSON response.
+ request->headers.SetHeader(net::HttpRequestHeaders::kAccept, kDataType);
+ // Disallow using cache - identical requests should be physically sent to
+ // the server.
+ request->load_flags = net::LOAD_BYPASS_CACHE | net::LOAD_DISABLE_CACHE;
+ // Omitting credentials prevents cookies from being sent. The server does
+ // not expect or parse cookies, but we want to be on the safe side,
+ // privacy-wise.
+ request->credentials_mode = network::mojom::CredentialsMode::kOmit;
+
+ // If any url_loader_ existed previously, it will be overwritten and its
+ // request will be cancelled.
+ url_loader_ = network::SimpleURLLoader::Create(std::move(request),
+ kTrafficAnnotation);
+
+ VLOG(2) << "[eyeo] Payload: " << payload;
+ url_loader_->AttachStringForUpload(payload, kDataType);
+ // The Telemetry server responds with a JSON that contains a description of
+ // any potential error. We want to parse this JSON if possible, we're not
+ // content with just an HTTP error code. Process the response content even
+ // if the code is not 200.
+ url_loader_->SetAllowHttpErrorResults(true);
+
+ url_loader_->DownloadToString(
+ url_loader_factory_.get(),
+ base::BindOnce(&Conversation::OnResponseArrived,
+ base::Unretained(this)),
+ network::SimpleURLLoader::kMaxBoundedStringDownloadSize - 1);
+ }
+
+ void OnResponseArrived(std::unique_ptr<std::string> server_response) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ topic_provider_->ParseResponse(std::move(server_response));
+ url_loader_.reset();
+ }
+
+ SEQUENCE_CHECKER(sequence_checker_);
+ std::unique_ptr<TopicProvider> topic_provider_;
+ scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
+ std::unique_ptr<network::SimpleURLLoader> url_loader_;
+ base::WeakPtrFactory<Conversation> weak_ptr_factory_{this};
+};
+
+AdblockTelemetryService::AdblockTelemetryService(
+ FilteringConfiguration* filtering_configuration,
+ scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
+ base::TimeDelta initial_delay,
+ base::TimeDelta check_interval)
+ : adblock_filtering_configuration_(filtering_configuration),
+ url_loader_factory_(url_loader_factory),
+ initial_delay_(initial_delay),
+ check_interval_(check_interval) {
+ DCHECK(adblock_filtering_configuration_);
+ adblock_filtering_configuration_->AddObserver(this);
+}
+
+AdblockTelemetryService::~AdblockTelemetryService() {
+ DCHECK(adblock_filtering_configuration_);
+ adblock_filtering_configuration_->RemoveObserver(this);
+}
+
+void AdblockTelemetryService::AddTopicProvider(
+ std::unique_ptr<TopicProvider> topic_provider) {
+ ongoing_conversations_.push_back(std::make_unique<Conversation>(
+ std::move(topic_provider), url_loader_factory_));
+}
+
+void AdblockTelemetryService::Start() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ OnEnabledStateChangedInternal();
+}
+
+void AdblockTelemetryService::OnEnabledStateChanged(FilteringConfiguration*) {
+ OnEnabledStateChangedInternal();
+}
+
+void AdblockTelemetryService::GetTopicProvidersDebugInfo(
+ TopicProvidersDebugInfoCallback service_callback) const {
+ const auto barrier_callback = base::BarrierCallback<std::string>(
+ ongoing_conversations_.size(), std::move(service_callback));
+ for (const auto& conversation : ongoing_conversations_) {
+ conversation->GetTopicProvider()->FetchDebugInfo(barrier_callback);
+ }
+}
+
+void AdblockTelemetryService::OnEnabledStateChangedInternal() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ if (adblock_filtering_configuration_->IsEnabled() && !timer_.IsRunning()) {
+ VLOG(1) << "[eyeo] Starting periodic Telemetry requests";
+ timer_.Start(FROM_HERE, initial_delay_,
+ base::BindRepeating(&AdblockTelemetryService::RunPeriodicCheck,
+ base::Unretained(this)));
+ } else if (!adblock_filtering_configuration_->IsEnabled() &&
+ timer_.IsRunning()) {
+ VLOG(1) << "[eyeo] Stopping periodic Telemetry requests";
+ Shutdown();
+ }
+}
+
+void AdblockTelemetryService::RunPeriodicCheck() {
+ for (auto& conversation : ongoing_conversations_) {
+ if (conversation->IsRequestDue()) {
+ conversation->StartRequest();
+ }
+ }
+ timer_.Start(FROM_HERE, check_interval_,
+ base::BindRepeating(&AdblockTelemetryService::RunPeriodicCheck,
+ base::Unretained(this)));
+}
+
+void AdblockTelemetryService::Shutdown() {
+ timer_.Stop();
+ for (auto& conversation : ongoing_conversations_) {
+ conversation->Stop();
+ }
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/adblock_telemetry_service.h b/components/adblock/core/adblock_telemetry_service.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/adblock_telemetry_service.h
@@ -0,0 +1,120 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_ADBLOCK_TELEMETRY_SERVICE_H_
+#define COMPONENTS_ADBLOCK_CORE_ADBLOCK_TELEMETRY_SERVICE_H_
+
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "base/functional/callback_forward.h"
+#include "base/memory/raw_ptr.h"
+#include "base/sequence_checker.h"
+#include "base/time/time.h"
+#include "base/timer/timer.h"
+#include "components/adblock/core/configuration/filtering_configuration.h"
+#include "components/adblock/core/subscription/subscription_service.h"
+#include "components/keyed_service/core/keyed_service.h"
+#include "services/network/public/cpp/shared_url_loader_factory.h"
+#include "url/gurl.h"
+
+namespace network {
+class SimpleURLLoader;
+} // namespace network
+
+namespace adblock {
+/**
+ * @brief Sends periodic pings to eyeo in order to count active users. Executed
+ * from Browser process UI main thread.
+ */
+class AdblockTelemetryService : public KeyedService,
+ public FilteringConfiguration::Observer {
+ public:
+ // Provides data and behavior relevant for a Telemetry "topic". A topic could
+ // be "counting users" or "reporting filter list hits" for example.
+ class TopicProvider {
+ public:
+ using PayloadCallback = base::OnceCallback<void(std::string payload)>;
+ using DebugInfoCallback = base::OnceCallback<void(std::string payload)>;
+ virtual ~TopicProvider() = default;
+ // Endpoint URL on the Telemetry server onto which requests should be sent.
+ virtual GURL GetEndpointURL() const = 0;
+ // Authorization bearer token for the endpoint defined by GetEndpointURL().
+ virtual std::string GetAuthToken() const = 0;
+ // Data uploaded with the request, should be valid for the schema
+ // present on the server. Async to allow querying asynchronous data sources.
+ virtual void GetPayload(PayloadCallback callback) const = 0;
+ // Returns the desired time when AdblockTelemetryService should make the
+ // next network request.
+ virtual base::Time GetTimeOfNextRequest() const = 0;
+ // Parses the response returned by the Telemetry server. |response_content|
+ // may be null. Implementation is free to implement a "retry" in case of
+ // response errors via GetTimeToNextRequest().
+ virtual void ParseResponse(
+ std::unique_ptr<std::string> response_content) = 0;
+ // Gets debugging info to be logged on chrome://adblock-internals. Do not
+ // put any secrets here (tokens, api keys). Asynchronous to allow reusing
+ // the async logic of GetPayload, if needed.
+ virtual void FetchDebugInfo(DebugInfoCallback callback) const = 0;
+ };
+ AdblockTelemetryService(
+ FilteringConfiguration* filtering_configuration,
+ scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
+ base::TimeDelta initial_delay,
+ base::TimeDelta check_interval);
+ ~AdblockTelemetryService() override;
+ using TopicProvidersDebugInfoCallback =
+ base::OnceCallback<void(std::vector<std::string>)>;
+
+ // Add all required topic providers before calling Start().
+ void AddTopicProvider(std::unique_ptr<TopicProvider> topic_provider);
+
+ // Starts periodic Telemetry requests, provided ad-blocking is enabled.
+ // If ad blocking is disabled, the schedule will instead start when
+ // ad blocking becomes enabled.
+ void Start();
+
+ // KeyedService:
+ void Shutdown() override;
+
+ // FilteringConfiguration::Observer
+ void OnEnabledStateChanged(FilteringConfiguration* config) override;
+
+ // Collects debug information from all topic providers. Runs |callback| once
+ // all topic providers have provided their info.
+ void GetTopicProvidersDebugInfo(
+ TopicProvidersDebugInfoCallback callback) const;
+
+ private:
+ void OnEnabledStateChangedInternal();
+ void RunPeriodicCheck();
+
+ SEQUENCE_CHECKER(sequence_checker_);
+ raw_ptr<FilteringConfiguration> adblock_filtering_configuration_;
+ scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
+ base::TimeDelta initial_delay_;
+ base::TimeDelta check_interval_;
+
+ class Conversation;
+ std::vector<std::unique_ptr<Conversation>> ongoing_conversations_;
+ base::OneShotTimer timer_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_ADBLOCK_TELEMETRY_SERVICE_H_
diff --git a/components/adblock/core/classifier/BUILD.gn b/components/adblock/core/classifier/BUILD.gn
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/classifier/BUILD.gn
@@ -0,0 +1,76 @@
+# This file is part of eyeo Chromium SDK,
+# Copyright (C) 2006-present eyeo GmbH
+# eyeo Chromium SDK is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3 as
+# published by the Free Software Foundation.
+# eyeo Chromium SDK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+# You should have received a copy of the GNU General Public License
+# along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+
+source_set("classifier") {
+ sources = [
+ "resource_classifier.cc",
+ "resource_classifier.h",
+ "resource_classifier_impl.cc",
+ "resource_classifier_impl.h",
+ ]
+
+ deps = [ "//components/adblock/core/common:utils" ]
+
+ public_deps = [
+ "//base",
+ "//components/adblock/core/common",
+ "//components/adblock/core/subscription:subscription",
+ "//net:net",
+ "//url:url",
+ ]
+}
+
+source_set("test_support") {
+ testonly = true
+ sources = [
+ "test/mock_resource_classifier.cc",
+ "test/mock_resource_classifier.h",
+ ]
+
+ deps = [
+ ":classifier",
+ "//testing/gmock",
+ "//testing/gtest",
+ ]
+}
+
+source_set("unit_tests") {
+ testonly = true
+ sources = [ "test/resource_classifier_impl_test.cc" ]
+
+ deps = [
+ ":test_support",
+ "//components/adblock/core",
+ "//components/adblock/core/subscription:test_support",
+ "//net:test_support",
+ "//testing/gtest",
+ ]
+}
+
+source_set("perf_tests") {
+ testonly = true
+ sources = [ "test/resource_classifier_perftest.cc" ]
+
+ deps = [
+ ":classifier",
+ "//components/adblock/core/converter",
+ "//testing/gtest",
+ "//third_party/zlib/google:compression_utils",
+ ]
+
+ data = [
+ "//components/test/data/adblock/easylist.txt.gz",
+ "//components/test/data/adblock/exceptionrules.txt.gz",
+ "//components/test/data/adblock/anticv.txt.gz",
+ "//components/test/data/adblock/longurl.txt.gz",
+ ]
+}
diff --git a/components/adblock/core/classifier/resource_classifier.cc b/components/adblock/core/classifier/resource_classifier.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/classifier/resource_classifier.cc
@@ -0,0 +1,24 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/classifier/resource_classifier.h"
+
+namespace adblock {
+
+ResourceClassifier::~ResourceClassifier() = default;
+
+} // namespace adblock
diff --git a/components/adblock/core/classifier/resource_classifier.h b/components/adblock/core/classifier/resource_classifier.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/classifier/resource_classifier.h
@@ -0,0 +1,90 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_CLASSIFIER_RESOURCE_CLASSIFIER_H_
+#define COMPONENTS_ADBLOCK_CORE_CLASSIFIER_RESOURCE_CLASSIFIER_H_
+
+#include <vector>
+
+#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_refptr.h"
+#include "components/adblock/core/common/content_type.h"
+#include "components/adblock/core/common/sitekey.h"
+#include "components/adblock/core/subscription/subscription_service.h"
+#include "net/http/http_response_headers.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+// Classifies resources encountered on websites.
+// May be called from multiple threads, thread-safe and immutable.
+class ResourceClassifier
+ : public base::RefCountedThreadSafe<ResourceClassifier> {
+ public:
+ struct ClassificationResult {
+ enum class Decision {
+ // The resource should be blocked as there's a blocking filter in at least
+ // one of the Subscriptions.
+ Blocked,
+ // There is a blocking filter but at least one of the Subscriptions also
+ // has an overriding allowing filter.
+ Allowed,
+ // There are no filters that apply to this resource.
+ Ignored,
+ } decision;
+ // If decision is Blocked or Allowed, |decisive_subscription| has the URL of
+ // the subscription that had the decisive filter.
+ GURL decisive_subscription;
+ // If decision is Blocked or Allowed, |decisive_configuration_name| has the
+ // name of the FilteringConfiguration that contain matched filter.
+ std::string decisive_configuration_name;
+ };
+
+ virtual ClassificationResult ClassifyRequest(
+ const SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ ContentType content_type,
+ const SiteKey& sitekey) const = 0;
+
+ virtual ClassificationResult ClassifyPopup(
+ const SubscriptionService::Snapshot& subscription_collections,
+ const GURL& popup_url,
+ const std::vector<GURL>& opener_frame_hierarchy,
+ const SiteKey& sitekey) const = 0;
+
+ virtual ClassificationResult ClassifyResponse(
+ const SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ ContentType content_type,
+ const scoped_refptr<net::HttpResponseHeaders>& response_headers)
+ const = 0;
+
+ virtual absl::optional<GURL> CheckRewrite(
+ const SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy) const = 0;
+
+ protected:
+ friend class base::RefCountedThreadSafe<ResourceClassifier>;
+ virtual ~ResourceClassifier();
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_CLASSIFIER_RESOURCE_CLASSIFIER_H_
diff --git a/components/adblock/core/classifier/resource_classifier_impl.cc b/components/adblock/core/classifier/resource_classifier_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/classifier/resource_classifier_impl.cc
@@ -0,0 +1,404 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/classifier/resource_classifier_impl.h"
+
+#include "base/strings/string_split.h"
+#include "components/adblock/core/common/adblock_utils.h"
+#include "components/adblock/core/subscription/installed_subscription.h"
+
+namespace adblock {
+namespace {
+
+using ClassificationResult = ResourceClassifier::ClassificationResult;
+
+absl::optional<HeaderFilterData> IsHeaderFilterOverruled(
+ base::StringPiece blocking_header_filter,
+ std::set<HeaderFilterData>& allowing_filters) {
+ for (auto filter : allowing_filters) {
+ if (filter.header_filter.empty()) {
+ // Allowing header filters may not contain payload, allow all headers in
+ // that case.
+ return filter;
+ }
+ if (utils::RegexMatches(filter.header_filter, blocking_header_filter,
+ true)) {
+ return filter;
+ }
+ }
+ return absl::nullopt;
+}
+
+bool ContainsHeaderValue(const scoped_refptr<net::HttpResponseHeaders>& headers,
+ base::StringPiece header_name,
+ const std::string& header_value) {
+ size_t iter = 0;
+ std::string value;
+ while (headers->EnumerateHeader(&iter, header_name, &value)) {
+ if (value.find(header_value) != std::string::npos) {
+ return true;
+ }
+ }
+ return false;
+}
+
+ClassificationResult ClassifyRequestWithSingleCollection(
+ const SubscriptionCollection& subscription_collection,
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ ContentType content_type,
+ const SiteKey& sitekey) {
+ // Search all subscriptions for any blocking filters (generic or
+ // domain-specific).
+ const auto subscription_with_blocking_filter_it =
+ subscription_collection.FindBySubresourceFilter(
+ request_url, frame_hierarchy, content_type, sitekey,
+ FilterCategory::Blocking);
+ if (!subscription_with_blocking_filter_it) {
+ // Found no blocking filters in any of the subscriptions.
+ return ClassificationResult{
+ ClassificationResult::Decision::Ignored, {}, {}};
+ }
+ // Found a blocking filter but perhaps one of the subscriptions has an
+ // allowing filter to override it?
+ const auto subscription_with_allowing_filter_it =
+ subscription_collection.FindByAllowFilter(request_url, frame_hierarchy,
+ content_type, sitekey);
+ if (subscription_with_allowing_filter_it) {
+ // Found an overriding allowing filter:
+ return ClassificationResult{
+ ClassificationResult::Decision::Allowed,
+ *subscription_with_allowing_filter_it,
+ subscription_collection.GetFilteringConfigurationName()};
+ }
+ // Last chance to avoid blocking: maybe there is a GENERICBLOCK filter and we
+ // should re-search for domain-specific filters only?
+ if (subscription_collection.FindBySpecialFilter(
+ SpecialFilterType::Genericblock, request_url, frame_hierarchy,
+ sitekey)) {
+ // This is a relatively rare case - we should have searched for
+ // domain-specific filters only.
+ const auto subscription_with_domain_specific_blocking_filter_it =
+ subscription_collection.FindBySubresourceFilter(
+ request_url, frame_hierarchy, content_type, sitekey,
+ FilterCategory::DomainSpecificBlocking);
+ if (subscription_with_domain_specific_blocking_filter_it) {
+ // There was a domain-specific blocking filter, the resource is blocked by
+ // it.
+ return ClassificationResult{
+ ClassificationResult::Decision::Blocked,
+ *subscription_with_domain_specific_blocking_filter_it,
+ subscription_collection.GetFilteringConfigurationName()};
+ } else {
+ // There were no domain-specific blocking filters, our first match must
+ // have been a generic filter.
+ return ClassificationResult{
+ ClassificationResult::Decision::Ignored, {}, {}};
+ }
+ }
+ // There was no GENERICBLOCK filter available, so the original blocking result
+ // is valid.
+ return ClassificationResult{
+ ClassificationResult::Decision::Blocked,
+ *subscription_with_blocking_filter_it,
+ subscription_collection.GetFilteringConfigurationName()};
+}
+
+ClassificationResult ClassifyPopupWithSingleCollection(
+ const SubscriptionCollection& subscription_collection,
+ const GURL& popup_url,
+ const std::vector<GURL>& opener_frame_hierarchy,
+ const SiteKey& sitekey) {
+ // Search all subscriptions for popup blocking filters (generic or
+ // domain-specific).
+ const auto subscription_with_blocking_filter_it =
+ subscription_collection.FindByPopupFilter(
+ popup_url, opener_frame_hierarchy, sitekey, FilterCategory::Blocking);
+ if (!subscription_with_blocking_filter_it) {
+ // Found no blocking filters in any of the subscriptions.
+ return ClassificationResult{
+ ClassificationResult::Decision::Ignored, {}, {}};
+ }
+ // Found a blocking filter but perhaps one of the subscriptions has an
+ // allowing filter to override it?
+ const auto subscription_with_allowing_filter_it =
+ subscription_collection.FindByPopupFilter(
+ popup_url, opener_frame_hierarchy, sitekey, FilterCategory::Allowing);
+ if (subscription_with_allowing_filter_it) {
+ // Found an overriding allowing filter:
+ return ClassificationResult{
+ ClassificationResult::Decision::Allowed,
+ *subscription_with_allowing_filter_it,
+ subscription_collection.GetFilteringConfigurationName()};
+ }
+ const auto subscription_with_document_allowing_filter_it =
+ subscription_collection.FindBySpecialFilter(
+ SpecialFilterType::Document, popup_url, opener_frame_hierarchy,
+ sitekey);
+ if (subscription_with_document_allowing_filter_it) {
+ // Found an overriding document allowing filter for the frame hierarchy:
+ return ClassificationResult{
+ ClassificationResult::Decision::Allowed,
+ *subscription_with_document_allowing_filter_it,
+ subscription_collection.GetFilteringConfigurationName()};
+ }
+ // There is no overriding allowing filter, the popup should be blocked.
+ return ClassificationResult{
+ ClassificationResult::Decision::Blocked,
+ *subscription_with_blocking_filter_it,
+ subscription_collection.GetFilteringConfigurationName()};
+}
+
+ClassificationResult CheckHeaderFiltersMatchResponseHeaders(
+ const SubscriptionCollection& subscription_collection,
+ const GURL request_url,
+ const std::vector<GURL> frame_hierarchy,
+ const scoped_refptr<net::HttpResponseHeaders>& headers,
+ std::set<HeaderFilterData> blocking_filters,
+ std::set<HeaderFilterData> allowing_filters) {
+ ClassificationResult result{ClassificationResult::Decision::Ignored, {}, {}};
+
+ for (const auto& filter : blocking_filters) {
+ auto key_value =
+ base::SplitString(filter.header_filter, "=", base::KEEP_WHITESPACE,
+ base::SPLIT_WANT_NONEMPTY);
+ // If no '=' occurs, filter blocks response contains header, regardless
+ // header value
+ if (key_value.size() == 1u) {
+ if (headers->HasHeader(filter.header_filter)) {
+ if (auto allow_rule = IsHeaderFilterOverruled(filter.header_filter,
+ allowing_filters)) {
+ result = {ClassificationResult::Decision::Allowed,
+ allow_rule->subscription_url,
+ subscription_collection.GetFilteringConfigurationName()};
+ } else {
+ return ClassificationResult{
+ ClassificationResult::Decision::Blocked, filter.subscription_url,
+ subscription_collection.GetFilteringConfigurationName()};
+ }
+ }
+ } else {
+ DCHECK_EQ(2u, key_value.size());
+ if (ContainsHeaderValue(headers, key_value[0], key_value[1])) {
+ if (auto allow_rule = IsHeaderFilterOverruled(filter.header_filter,
+ allowing_filters)) {
+ result = {ClassificationResult::Decision::Allowed,
+ allow_rule->subscription_url,
+ subscription_collection.GetFilteringConfigurationName()};
+ } else {
+ return ClassificationResult{
+ ClassificationResult::Decision::Blocked, filter.subscription_url,
+ subscription_collection.GetFilteringConfigurationName()};
+ }
+ }
+ }
+ }
+ return result;
+}
+
+ClassificationResult ClassifyResponseWithSingleCollection(
+ const SubscriptionCollection& subscription_collection,
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ ContentType content_type,
+ const scoped_refptr<net::HttpResponseHeaders>& response_headers) {
+ auto blocking_filters = subscription_collection.GetHeaderFilters(
+ request_url, frame_hierarchy, content_type, FilterCategory::Blocking);
+ if (blocking_filters.empty()) {
+ return ClassificationResult{
+ ClassificationResult::Decision::Ignored, {}, {}};
+ }
+
+ // If blocking filters found, check first if filters are not overruled
+ const auto subscription_with_allowing_document_filter_it =
+ subscription_collection.FindBySpecialFilter(
+ SpecialFilterType::Document, request_url, frame_hierarchy, SiteKey());
+ if (subscription_with_allowing_document_filter_it) {
+ // Found no blocking filters in any of the subscriptions.
+ return ClassificationResult{
+ ClassificationResult::Decision::Allowed,
+ *subscription_with_allowing_document_filter_it,
+ subscription_collection.GetFilteringConfigurationName()};
+ }
+
+ if (subscription_collection.FindBySpecialFilter(
+ SpecialFilterType::Genericblock, request_url, frame_hierarchy,
+ SiteKey())) {
+ // If genericblock filter found, searched for blocking domain-specific
+ // filters.
+ blocking_filters = subscription_collection.GetHeaderFilters(
+ request_url, frame_hierarchy, content_type,
+ FilterCategory::DomainSpecificBlocking);
+
+ return CheckHeaderFiltersMatchResponseHeaders(
+ subscription_collection, request_url, frame_hierarchy, response_headers,
+ std::move(blocking_filters), {});
+ }
+ // If no special filters found, get allowing filters and check which filters
+ // applies.
+ auto allowing_filters = subscription_collection.GetHeaderFilters(
+ request_url, frame_hierarchy, content_type, FilterCategory::Allowing);
+ return CheckHeaderFiltersMatchResponseHeaders(
+ subscription_collection, request_url, frame_hierarchy, response_headers,
+ std::move(blocking_filters), std::move(allowing_filters));
+}
+
+absl::optional<GURL> CheckRewriteWithSingleCollection(
+ const SubscriptionCollection& subscription_collection,
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy) {
+ auto blocking_rewrites = subscription_collection.GetRewriteFilters(
+ request_url, frame_hierarchy, FilterCategory::Blocking);
+ if (blocking_rewrites.empty()) {
+ return absl::nullopt;
+ }
+
+ // If blocking filters are found, check first if blocking filters are not
+ // overruled completely.
+ const auto subscription_with_allowing_document_filter_it =
+ subscription_collection.FindBySpecialFilter(
+ SpecialFilterType::Document, request_url, frame_hierarchy, SiteKey());
+ if (subscription_with_allowing_document_filter_it) {
+ return absl::nullopt;
+ }
+
+ if (subscription_collection.FindBySpecialFilter(
+ SpecialFilterType::Genericblock, request_url, frame_hierarchy,
+ SiteKey())) {
+ // If genericblock filter is found, searched for blocking domain-specific
+ // filters.
+ blocking_rewrites = subscription_collection.GetRewriteFilters(
+ request_url, frame_hierarchy, FilterCategory::DomainSpecificBlocking);
+
+ if (blocking_rewrites.empty()) {
+ return absl::nullopt;
+ }
+ }
+
+ // Check if blocking filters are not overruled by allowing ones.
+ auto allowing_rewrites = subscription_collection.GetRewriteFilters(
+ request_url, frame_hierarchy, FilterCategory::Allowing);
+ if (allowing_rewrites.empty()) {
+ // Any filter will do, take the 1st one.
+ return absl::optional<GURL>(GURL{*blocking_rewrites.begin()});
+ }
+
+ // Change set to vector to call algorithm
+ std::vector<std::string> blocking_rewrites_v(blocking_rewrites.begin(),
+ blocking_rewrites.end());
+ // Remove blocking filters overruled by allowing filters.
+ blocking_rewrites_v.erase(
+ base::ranges::remove_if(
+ blocking_rewrites_v,
+ [&allowing_rewrites](const auto blocking_rewrite) {
+ return base::ranges::find_if(
+ allowing_rewrites, [&](const auto& allowing_rewrite) {
+ return blocking_rewrite == allowing_rewrite;
+ }) != allowing_rewrites.end();
+ }),
+ blocking_rewrites_v.end());
+
+ if (blocking_rewrites_v.empty()) {
+ return absl::nullopt;
+ }
+
+ // Any filter will do, take the 1st one.
+ return absl::optional<GURL>(GURL{*blocking_rewrites_v.begin()});
+}
+
+} // namespace
+
+ResourceClassifierImpl::~ResourceClassifierImpl() = default;
+
+ClassificationResult ResourceClassifierImpl::ClassifyRequest(
+ const SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ ContentType content_type,
+ const SiteKey& sitekey) const {
+ auto classification =
+ ClassificationResult{ClassificationResult::Decision::Ignored, {}, {}};
+ for (const auto& collection : subscription_collections) {
+ auto result = ClassifyRequestWithSingleCollection(
+ *collection, request_url, frame_hierarchy, content_type, sitekey);
+ if (result.decision == ClassificationResult::Decision::Blocked) {
+ return result;
+ }
+ if (result.decision == ClassificationResult::Decision::Allowed) {
+ classification = result;
+ }
+ }
+ return classification;
+}
+
+ClassificationResult ResourceClassifierImpl::ClassifyPopup(
+ const SubscriptionService::Snapshot& subscription_collections,
+ const GURL& popup_url,
+ const std::vector<GURL>& opener_frame_hierarchy,
+ const SiteKey& sitekey) const {
+ auto classification =
+ ClassificationResult{ClassificationResult::Decision::Ignored, {}, {}};
+ for (const auto& collection : subscription_collections) {
+ auto result = ClassifyPopupWithSingleCollection(
+ *collection, popup_url, opener_frame_hierarchy, sitekey);
+ if (result.decision == ClassificationResult::Decision::Blocked) {
+ return result;
+ }
+ if (result.decision == ClassificationResult::Decision::Allowed) {
+ classification = result;
+ }
+ }
+ return classification;
+}
+
+ClassificationResult ResourceClassifierImpl::ClassifyResponse(
+ const SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ ContentType content_type,
+ const scoped_refptr<net::HttpResponseHeaders>& response_headers) const {
+ auto classification =
+ ClassificationResult{ClassificationResult::Decision::Ignored, {}, {}};
+ for (const auto& collection : subscription_collections) {
+ auto result = ClassifyResponseWithSingleCollection(
+ *collection, request_url, frame_hierarchy, content_type,
+ response_headers);
+ if (result.decision == ClassificationResult::Decision::Blocked) {
+ return result;
+ }
+ if (result.decision == ClassificationResult::Decision::Allowed) {
+ classification = result;
+ }
+ }
+ return classification;
+}
+
+absl::optional<GURL> ResourceClassifierImpl::CheckRewrite(
+ const SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy) const {
+ for (const auto& collection : subscription_collections) {
+ auto result = CheckRewriteWithSingleCollection(*collection, request_url,
+ frame_hierarchy);
+ if (result) {
+ return result;
+ }
+ }
+ return absl::nullopt;
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/classifier/resource_classifier_impl.h b/components/adblock/core/classifier/resource_classifier_impl.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/classifier/resource_classifier_impl.h
@@ -0,0 +1,64 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_CLASSIFIER_RESOURCE_CLASSIFIER_IMPL_H_
+#define COMPONENTS_ADBLOCK_CORE_CLASSIFIER_RESOURCE_CLASSIFIER_IMPL_H_
+
+#include <set>
+
+#include "components/adblock/core/classifier/resource_classifier.h"
+
+namespace adblock {
+
+class ResourceClassifierImpl final : public ResourceClassifier {
+ public:
+ ResourceClassifierImpl() = default;
+
+ ClassificationResult ClassifyRequest(
+ const SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ ContentType content_type,
+ const SiteKey& sitekey) const final;
+
+ ClassificationResult ClassifyPopup(
+ const SubscriptionService::Snapshot& subscription_collections,
+ const GURL& popup_url,
+ const std::vector<GURL>& opener_frame_hierarchy,
+ const SiteKey& sitekey) const final;
+
+ ClassificationResult ClassifyResponse(
+ const SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ ContentType content_type,
+ const scoped_refptr<net::HttpResponseHeaders>& response_headers)
+ const final;
+
+ absl::optional<GURL> CheckRewrite(
+ const SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy) const final;
+
+ protected:
+ friend class base::RefCountedThreadSafe<ResourceClassifierImpl>;
+ ~ResourceClassifierImpl() override;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_CLASSIFIER_RESOURCE_CLASSIFIER_IMPL_H_
diff --git a/components/adblock/core/common/BUILD.gn b/components/adblock/core/common/BUILD.gn
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/common/BUILD.gn
@@ -0,0 +1,110 @@
+#
+# This file is part of eyeo Chromium SDK,
+# Copyright (C) 2006-present eyeo GmbH
+#
+# eyeo Chromium SDK is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3 as
+# published by the Free Software Foundation.
+#
+# eyeo Chromium SDK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+
+import("//components/adblock/features.gni")
+
+config("eyeo_filtering_config") {
+ defines = []
+
+ if (eyeo_disable_filtering_by_default) {
+ defines += [ "EYEO_DISABLE_FILTERING_BY_DEFAULT=true" ]
+ } else {
+ defines += [ "EYEO_DISABLE_FILTERING_BY_DEFAULT=false" ]
+ }
+}
+
+source_set("common") {
+ configs += [ ":eyeo_filtering_config" ]
+
+ sources = [
+ "adblock_constants.cc",
+ "adblock_constants.h",
+ "adblock_prefs.cc",
+ "adblock_prefs.h",
+ "content_type.cc",
+ "content_type.h",
+ "flatbuffer_data.cc",
+ "flatbuffer_data.h",
+ "header_filter_data.h",
+ "keyword_extractor_utils.cc",
+ "keyword_extractor_utils.h",
+ "regex_filter_pattern.cc",
+ "regex_filter_pattern.h",
+ "sitekey.h",
+ ]
+
+ deps = [ "//components/prefs" ]
+
+ public_deps = [
+ "//base",
+ "//components/adblock/core:schema",
+ "//components/adblock/core:schema_hash",
+ "//third_party/abseil-cpp:absl",
+ "//url",
+ ]
+}
+
+config("eyeo_application_config") {
+ defines = []
+
+ if (eyeo_application_name != "") {
+ defines += [ "EYEO_APPLICATION_NAME=\"$eyeo_application_name\"" ]
+ }
+
+ if (eyeo_application_version != "") {
+ defines += [ "EYEO_APPLICATION_VERSION=\"$eyeo_application_version\"" ]
+ }
+}
+
+source_set("utils") {
+ configs += [ ":eyeo_application_config" ]
+
+ sources = [
+ "adblock_utils.cc",
+ "adblock_utils.h",
+ ]
+
+ deps = [
+ "//components/resources:components_resources_grit",
+ "//components/version_info",
+ "//net",
+ "//third_party/icu/",
+ "//third_party/re2",
+ "//ui/base",
+ "//url",
+ ]
+
+ public_deps = [
+ ":common",
+ "//base",
+ ]
+}
+
+source_set("unit_tests") {
+ testonly = true
+ sources = [
+ "test/adblock_utils_test.cc",
+ "test/flatbuffer_data_test.cc",
+ ]
+
+ deps = [
+ ":common",
+ ":utils",
+ "//base/test:test_support",
+ "//components/adblock/core/subscription:subscription",
+ "//testing/gtest",
+ ]
+}
diff --git a/components/adblock/core/common/adblock_constants.cc b/components/adblock/core/common/adblock_constants.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/common/adblock_constants.cc
@@ -0,0 +1,164 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/common/adblock_constants.h"
+
+#include "base/base64.h"
+#include "components/adblock/core/hash/schema_hash.h"
+#include "components/adblock/core/schema/filter_list_schema_generated.h"
+
+namespace adblock {
+
+const char kSiteKeyHeaderKey[] = "x-adblock-key";
+
+const char kAllowlistEverythingFilter[] = "@@*$document";
+
+const char kAdblockFilteringConfigurationName[] = "adblock";
+
+const char kBlankHtml[] =
+ "data:text/html,<!DOCTYPE html><html><head></head><body></body></html>";
+
+const char kBlankMp3[] =
+ "data:audio/"
+ "mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjIwLjEwMAAAAAAAAAAAAAAA//"
+ "tUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAGAAADAABgYGBg"
+ "YGBgYGBgYGBgYGBggICAgICAgICAgICAgICAgICgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwM"
+ "DAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4P////////////////////"
+ "8AAAAATGF2YzU4LjM1AAAAAAAAAAAAAAAAJAYAAAAAAAAAAwDVxttG//"
+ "sUZAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwVVVVVVVVVVVVVVVV"
+ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//"
+ "sUZB4P8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVV"
+ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//"
+ "sUZDwP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVV"
+ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//"
+ "sUZFoP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVV"
+ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//"
+ "sUZHgP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVV"
+ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//"
+ "sUZJYP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVV"
+ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV";
+
+const char kBlankMp4[] =
+ "data:video/"
+ "mp4;base64,"
+ "AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAAuJtZGF0AAACrwYF//"
+ "+r3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE2MCByMzAxMU0gY2RlOWE5MyAtIEguMjY0"
+ "L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMjAgLSBodHRwOi8vd3d3LnZpZG"
+ "VvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0xIHJlZj0zIGRlYmxvY2s9MTow"
+ "OjAgYW5hbHlzZT0weDM6MHgxMTMgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC"
+ "4wMCBtaXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MCB0cmVsbGlzPTEgOHg4ZGN0"
+ "PTEgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LT"
+ "IgdGhyZWFkcz0yIGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRl"
+ "Y2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT"
+ "0wIGJmcmFtZXM9MyBiX3B5cmFtaWQ9MiBiX2FkYXB0PTEgYl9iaWFzPTAgZGlyZWN0PTEgd2Vp"
+ "Z2h0Yj0xIG9wZW5fZ29wPTAgd2VpZ2h0cD0yIGtleWludD0yNTAga2V5aW50X21pbj0yNSBzY2"
+ "VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmNfbG9va2FoZWFkPTQwIHJjPWNyZiBtYnRyZWU9"
+ "MSBjcmY9MjMuMCBxY29tcD0wLjYwIHFwbWluPTAgcXBtYXg9NjkgcXBzdGVwPTQgaXBfcmF0aW"
+ "89MS40MCBhcT0xOjEuMDAAgAAAACNliIQAK//"
+ "+9dvzLK5umjbe9jc2CT9EPcfnoOYC2tjtP+"
+ "go4QAAAwRtb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAAKAABAAABAAAAAAAAAAAAAAAA"
+ "AQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+ "AAAAAAAAACAAACLnRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAKAAAAAAAAAAA"
+ "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAZAAAADgAAAAAAC"
+ "RlZHRzAAAAHGVsc3QAAAAAAAAAAQAAACgAAAAAAAEAAAAAAaZtZGlhAAAAIG1kaGQAAAAAAAAA"
+ "AAAAAAAAADIAAAACAFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSG"
+ "FuZGxlcgAAAAFRbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAA"
+ "AAABAAAADHVybCAAAAABAAABEXN0YmwAAACtc3RzZAAAAAAAAAABAAAAnWF2YzEAAAAAAAAAAQ"
+ "AAAAAAAAAAAAAAAAAAAAAAZAA4AEgAAABIAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+ "AAAAAAAAAAAAAAAY//8AAAA3YXZjQwFkAAr/"
+ "4QAaZ2QACvNlHJ42JwEQAAADABAAAAMDIPEiWWABAAZo6+PLIsD8+"
+ "PgAAAAAEHBhc3AAAAABAAAAAQAAABhzdHRzAAAAAAAAAAEAAAABAAACAAAAABxzdHNjAAAAAAA"
+ "AAAEAAAABAAAAAQAAAAEAAAAUc3RzegAAAAAAAALaAAAAAQAAABRzdGNvAAAAAAAAAAEAAAAwA"
+ "AAAYnVkdGEAAABabWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAA"
+ "taWxzdAAAACWpdG9vAAAAHWRhdGEAAAABAAAAAExhdmY1OC40NS4xMDA=";
+
+const char kBlankGif[] =
+ "data:image/gif;base64,R0lGODlhAQABAIABAAAAAP///"
+ "yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";
+
+const char kBlankPng2x2[] =
+ "data:image/"
+ "png;base64,"
+ "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAC0lEQ"
+ "VQI12NgQAcAABIAAe+JVKQAAAAASUVORK5CYII=";
+
+const char kBlankPng3x2[] =
+ "data:image/"
+ "png;base64,"
+ "iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAC0lEQVQI12NgwAUAABoAASRETu"
+ "UAAAAASUVORK5CYII=";
+
+const char kBlankPng32x32[] =
+ "data:image/"
+ "png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGklEQVRYw+"
+ "3BAQEAAACCIP+vbkhAAQAAAO8GECAAAZf3V9cAAAAASUVORK5CYII=";
+
+const std::string& CurrentSchemaVersion() {
+ static std::string kCurrentSchemaVersion =
+ base::Base64Encode(kSha256_filter_list_schema_generated_h);
+ return kCurrentSchemaVersion;
+}
+
+const GURL& TestPagesSubscriptionUrl() {
+ static GURL kTestPagesUrl(
+ "https://abptestpages.org/en/abp-testcase-subscription.txt");
+ return kTestPagesUrl;
+}
+
+const GURL& CustomFiltersUrl() {
+ static GURL kCustomFiltersUrl("adblock:custom");
+ return kCustomFiltersUrl;
+}
+
+base::StringPiece RewriteUrl(flat::AbpResource type) {
+ switch (type) {
+ case flat::AbpResource_BlankText:
+ return "data:text/plain,";
+ case flat::AbpResource_BlankCss:
+ return "data:text/css,";
+ case flat::AbpResource_BlankJs:
+ return "data:application/javascript,";
+ case flat::AbpResource_BlankHtml:
+ return kBlankHtml;
+ case flat::AbpResource_BlankMp3:
+ return kBlankMp3;
+ case flat::AbpResource_BlankMp4:
+ return kBlankMp4;
+ case flat::AbpResource_TransparentGif1x1:
+ return kBlankGif;
+ case flat::AbpResource_TransparentPng2x2:
+ return kBlankPng2x2;
+ case flat::AbpResource_TransparentPng3x2:
+ return kBlankPng3x2;
+ case flat::AbpResource_TransparentPng32x32:
+ return kBlankPng32x32;
+ default:
+ return {};
+ }
+}
+
+bool g_eyeo_disable_filtering_by_default = EYEO_DISABLE_FILTERING_BY_DEFAULT;
+
+bool IsEyeoFilteringDisabledByDefault() {
+ return g_eyeo_disable_filtering_by_default;
+}
+
+base::AutoReset<bool> OverrideEyeoFilteringDisabledByDefault(bool val) {
+ return base::AutoReset<bool>(&g_eyeo_disable_filtering_by_default, val);
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/common/adblock_constants.h b/components/adblock/core/common/adblock_constants.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/common/adblock_constants.h
@@ -0,0 +1,48 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_CONSTANTS_H_
+#define COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_CONSTANTS_H_
+
+#include "base/auto_reset.h"
+#include "base/strings/string_piece.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+namespace flat {
+enum AbpResource : int8_t;
+}
+
+extern const char kSiteKeyHeaderKey[];
+extern const char kAllowlistEverythingFilter[];
+extern const char kAdblockFilteringConfigurationName[];
+
+const std::string& CurrentSchemaVersion();
+const GURL& TestPagesSubscriptionUrl();
+const GURL& CustomFiltersUrl();
+base::StringPiece RewriteUrl(flat::AbpResource type);
+
+bool IsEyeoFilteringDisabledByDefault();
+
+// Override result of IsEyeoFilteringDisabledByDefault() for the
+// duration of the returned AutoReset's lifetime. Used for testing.
+base::AutoReset<bool> OverrideEyeoFilteringDisabledByDefault(bool val);
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_CONSTANTS_H_
diff --git a/components/adblock/core/common/adblock_prefs.cc b/components/adblock/core/common/adblock_prefs.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/common/adblock_prefs.cc
@@ -0,0 +1,122 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/common/adblock_prefs.h"
+
+#include "base/logging.h"
+#include "components/prefs/pref_registry_simple.h"
+
+namespace adblock::common::prefs {
+
+// Whether to block ads
+const char kEnableAdblockLegacy[] = "adblock.enable";
+
+// Legacy: Whether to allow acceptable ads or block them all.
+// Used now just to map CLI switch. Otherwise use kAdblockSubscriptionsLegacy.
+const char kEnableAcceptableAdsLegacy[] = "adblock.aa_enable";
+
+// List of domains ad blocking will be disabled for
+const char kAdblockAllowedDomainsLegacy[] = "adblock.allowed_domains";
+
+// List of custom filters added explicitly by the user
+const char kAdblockCustomFiltersLegacy[] = "adblock.custom_filters";
+
+// List of recommended subscriptions
+const char kAdblockSubscriptionsLegacy[] = "adblock.subscriptions";
+
+// Legacy: List of custom (user defined) subscriptions.
+// Use just kAdblockSubscriptionsLegacy.
+const char kAdblockCustomSubscriptionsLegacy[] = "adblock.custom_subscriptions";
+
+// Whether more options item is enabled in the UI
+const char kAdblockMoreOptionsEnabled[] = "adblock.more_options";
+
+// Whether a first-run installation of preloaded subscriptions and
+// language-based recommended subscriptions is necessary.
+const char kInstallFirstStartSubscriptions[] =
+ "adblock.install_first_run_subscriptions";
+
+// Dictionary mapping subscription filename to subscription content hash,
+// stored in Tracked Preferences to ensure untrusted subscription files aren't
+// added, or existing subscription files aren't modified.
+const char kSubscriptionSignatures[] = "adblock.subscription_signatures";
+
+// Stores the schema version used to create currently installed subscriptions.
+// Allows discovering a need to re-install subscriptions when the schema
+// version used by this browser build is newer.
+const char kLastUsedSchemaVersion[] = "adblock.last_used_schema_version";
+
+// Map of subscription URL into subscription metadata, containing ex. expiration
+// time, download count etc. Used for driving the subscription update process
+// and for setting query parameters in subscription download requests.
+const char kSubscriptionMetadata[] = "adblock.subscription_metadata";
+
+// Client-generated UUID4 that uniquely identifies the server response that
+// sent kTelemetryLastPingTime. Sent along with other ping times to
+// disambiguate between other clients who send ping requests the same day.
+// Regenerated on every successful response.
+const char kTelemetryLastPingTag[] =
+ "adblock.telemetry.activeping.last_ping_tag";
+
+// Server UTC time of last ping response, updated with every successful
+// response. Shall not be compared to client time (even UTC). Sent by the
+// telemetry server, stored as unparsed string (ex. "2022-02-08T09:30:00Z").
+const char kTelemetryLastPingTime[] =
+ "adblock.telemetry.activeping.last_ping_time";
+
+// Previous last ping time, gets replaced by kTelemetryLastPingTime when a new
+// successful ping response arrives. Sent in a ping request.
+const char kTelemetryPreviousLastPingTime[] =
+ "adblock.telemetry.activeping.previous_last_ping_time";
+
+// Time of first recorded response for a telemetry ping request, sent along
+// with future ping requests, to further disambiguate
+// user-counting without being able to uniquely track a user.
+const char kTelemetryFirstPingTime[] =
+ "adblock.telemetry.activeping.first_ping_time";
+
+// Client time, when to perform the next ping?
+// Not sent, used locally to ensure we don't ping too often.
+const char kTelemetryNextPingTime[] =
+ "adblock.telemetry.activeping.next_ping_time";
+
+void RegisterTelemetryPrefs(PrefRegistrySimple* registry) {
+ registry->RegisterStringPref(kTelemetryLastPingTag, "");
+ registry->RegisterStringPref(kTelemetryLastPingTime, "");
+ registry->RegisterStringPref(kTelemetryPreviousLastPingTime, "");
+ registry->RegisterStringPref(kTelemetryFirstPingTime, "");
+ registry->RegisterTimePref(kTelemetryNextPingTime, base::Time());
+}
+
+void RegisterProfilePrefs(PrefRegistrySimple* registry) {
+ registry->RegisterBooleanPref(kEnableAdblockLegacy, true);
+ registry->RegisterBooleanPref(kEnableAcceptableAdsLegacy, true);
+ registry->RegisterBooleanPref(kAdblockMoreOptionsEnabled, false);
+ registry->RegisterListPref(kAdblockAllowedDomainsLegacy, {});
+ registry->RegisterListPref(kAdblockCustomFiltersLegacy, {});
+ registry->RegisterListPref(kAdblockSubscriptionsLegacy, {});
+ registry->RegisterListPref(kAdblockCustomSubscriptionsLegacy, {});
+ registry->RegisterBooleanPref(kInstallFirstStartSubscriptions, true);
+ registry->RegisterDictionaryPref(kSubscriptionSignatures);
+ registry->RegisterStringPref(kLastUsedSchemaVersion, "");
+ registry->RegisterDictionaryPref(kSubscriptionMetadata);
+ RegisterTelemetryPrefs(registry);
+
+ VLOG(3) << "[eyeo] Registered prefs";
+}
+
+} // namespace adblock::common::prefs
diff --git a/components/adblock/core/common/adblock_prefs.h b/components/adblock/core/common/adblock_prefs.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/common/adblock_prefs.h
@@ -0,0 +1,46 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_PREFS_H_
+#define COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_PREFS_H_
+
+class PrefRegistrySimple;
+
+namespace adblock::common::prefs {
+
+extern const char kEnableAdblockLegacy[];
+extern const char kEnableAcceptableAdsLegacy[];
+extern const char kAdblockAllowedDomainsLegacy[];
+extern const char kAdblockCustomFiltersLegacy[];
+extern const char kAdblockSubscriptionsLegacy[];
+extern const char kAdblockCustomSubscriptionsLegacy[];
+extern const char kAdblockMoreOptionsEnabled[];
+extern const char kInstallFirstStartSubscriptions[];
+extern const char kSubscriptionSignatures[];
+extern const char kLastUsedSchemaVersion[];
+extern const char kSubscriptionMetadata[];
+extern const char kTelemetryLastPingTag[];
+extern const char kTelemetryLastPingTime[];
+extern const char kTelemetryPreviousLastPingTime[];
+extern const char kTelemetryFirstPingTime[];
+extern const char kTelemetryNextPingTime[];
+
+void RegisterProfilePrefs(PrefRegistrySimple* registry);
+
+} // namespace adblock::common::prefs
+
+#endif // COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_PREFS_H_
diff --git a/components/adblock/core/common/adblock_utils.cc b/components/adblock/core/common/adblock_utils.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/common/adblock_utils.cc
@@ -0,0 +1,171 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/common/adblock_utils.h"
+
+#include <numeric>
+
+#include "base/containers/flat_map.h"
+#include "base/json/string_escape.h"
+#include "base/logging.h"
+#include "base/memory/scoped_refptr.h"
+#include "base/strings/safe_sprintf.h"
+#include "base/strings/string_split.h"
+#include "base/strings/string_util.h"
+#include "base/strings/utf_string_conversions.h"
+#include "components/adblock/core/common/adblock_constants.h"
+#include "components/grit/components_resources.h"
+#include "components/version_info/version_info.h"
+#include "net/http/http_response_headers.h"
+#include "third_party/icu/source/i18n/unicode/regex.h"
+#include "third_party/re2/src/re2/re2.h"
+#include "ui/base/resource/resource_bundle.h"
+#include "url/gurl.h"
+
+namespace adblock {
+namespace utils {
+namespace {
+constexpr char kLanguagesSeparator[] = ",";
+}
+
+std::string CreateDomainAllowlistingFilter(const std::string& domain) {
+ return "@@||" + base::ToLowerASCII(domain) +
+ "^$document,domain=" + base::ToLowerASCII(domain);
+}
+
+SiteKey GetSitekeyHeader(
+ const scoped_refptr<net::HttpResponseHeaders>& headers) {
+ size_t iterator = 0;
+ std::string name;
+ std::string value;
+ while (headers->EnumerateHeaderLines(&iterator, &name, &value)) {
+ std::transform(name.begin(), name.end(), name.begin(),
+ [](unsigned char c) { return std::tolower(c); });
+ if (name == adblock::kSiteKeyHeaderKey) {
+ return SiteKey{value};
+ }
+ }
+ return {};
+}
+
+AppInfo::AppInfo() = default;
+
+AppInfo::~AppInfo() = default;
+
+AppInfo::AppInfo(const AppInfo&) = default;
+
+AppInfo GetAppInfo() {
+ AppInfo info;
+
+#if defined(EYEO_APPLICATION_NAME)
+ info.name = EYEO_APPLICATION_NAME;
+#else
+ info.name = version_info::GetProductName();
+#endif
+#if defined(EYEO_APPLICATION_VERSION)
+ info.version = EYEO_APPLICATION_VERSION;
+#else
+ info.version = version_info::GetVersionNumber();
+#endif
+ base::ReplaceChars(version_info::GetOSType(), base::kWhitespaceASCII, "",
+ &info.client_os);
+ return info;
+}
+
+std::string SerializeLanguages(const std::vector<std::string> languages) {
+ if (languages.empty()) {
+ return {};
+ }
+
+ return std::accumulate(std::next(languages.begin()), languages.end(),
+ languages[0],
+ [](const std::string& a, const std::string& b) {
+ return a + kLanguagesSeparator + b;
+ });
+}
+
+std::vector<std::string> DeserializeLanguages(const std::string languages) {
+ return base::SplitString(languages, kLanguagesSeparator,
+ base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
+}
+
+std::vector<std::string> ConvertURLs(const std::vector<GURL>& input) {
+ std::vector<std::string> output;
+ output.reserve(input.size());
+ std::transform(std::begin(input), std::end(input), std::back_inserter(output),
+ [](const GURL& gurl) { return gurl.spec(); });
+ return output;
+}
+
+std::string ConvertBaseTimeToABPFilterVersionFormat(const base::Time& date) {
+ base::Time::Exploded exploded;
+ // we receive in GMT and convert to UTC ( which has the same time )
+ date.UTCExplode(&exploded);
+ char buff[16];
+ base::strings::SafeSPrintf(buff, "%04d%02d%02d%02d%02d", exploded.year,
+ exploded.month, exploded.day_of_month,
+ exploded.hour, exploded.minute);
+ return std::string(buff);
+}
+
+std::unique_ptr<FlatbufferData> MakeFlatbufferDataFromResourceBundle(
+ int resource_id) {
+ return std::make_unique<InMemoryFlatbufferData>(
+ ui::ResourceBundle::GetSharedInstance().LoadDataResourceString(
+ resource_id));
+}
+
+bool RegexMatches(base::StringPiece pattern,
+ base::StringPiece input,
+ bool case_sensitive) {
+ re2::RE2::Options options;
+ options.set_case_sensitive(case_sensitive);
+ options.set_never_capture(true);
+ options.set_log_errors(false);
+ options.set_encoding(re2::RE2::Options::EncodingLatin1);
+ const re2::RE2 re2_pattern(pattern.data(), options);
+ if (re2_pattern.ok()) {
+ return re2::RE2::PartialMatch(input.data(), re2_pattern);
+ }
+ VLOG(2) << "[eyeo] RE2 does not support filter pattern " << pattern
+ << " and return with error message: " << re2_pattern.error();
+
+ // Maximum length of the string to match to avoid causing an icu::RegexMatcher
+ // stack overflow. (crbug.com/1198219)
+ if (input.size() > url::kMaxURLChars) {
+ return false;
+ }
+ const icu::UnicodeString icu_pattern(pattern.data(), pattern.length());
+ const icu::UnicodeString icu_input(input.data(), input.length());
+ UErrorCode status = U_ZERO_ERROR;
+ const auto icu_case_sensetive = case_sensitive ? 0u : UREGEX_CASE_INSENSITIVE;
+ icu::RegexMatcher matcher(icu_pattern, icu_case_sensetive, status);
+
+ // is pattern supported by icu regex
+ if (U_FAILURE(status)) {
+ // should not happen as validation should take place before reaching
+ // this point
+ DLOG(ERROR) << "[eyeo] None of the regex engines can use pattern: "
+ << pattern;
+ return false;
+ }
+ matcher.reset(icu_input);
+ return matcher.find(0, status);
+}
+
+} // namespace utils
+} // namespace adblock
diff --git a/components/adblock/core/common/adblock_utils.h b/components/adblock/core/common/adblock_utils.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/common/adblock_utils.h
@@ -0,0 +1,80 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_UTILS_H_
+#define COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_UTILS_H_
+
+#include <string>
+
+#include "base/functional/callback_forward.h"
+#include "base/memory/scoped_refptr.h"
+#include "base/time/time.h"
+#include "components/adblock/core/common/flatbuffer_data.h"
+#include "components/adblock/core/common/sitekey.h"
+
+class GURL;
+
+namespace net {
+class HttpResponseHeaders;
+}
+
+namespace adblock {
+
+class Subscription;
+
+namespace utils {
+
+struct AppInfo {
+ AppInfo();
+ ~AppInfo();
+ AppInfo(const AppInfo&);
+ std::string name;
+ std::string version;
+ std::string client_os;
+};
+
+std::string CreateDomainAllowlistingFilter(const std::string& domain);
+
+SiteKey GetSitekeyHeader(
+ const scoped_refptr<net::HttpResponseHeaders>& headers);
+
+AppInfo GetAppInfo();
+
+std::string SerializeLanguages(const std::vector<std::string> languages);
+
+std::vector<std::string> DeserializeLanguages(const std::string languages);
+
+std::vector<std::string> ConvertURLs(const std::vector<GURL>& input);
+
+// converts |date| into abp version format ex: 202107210821
+// in UTC format as necessary for server
+
+std::string ConvertBaseTimeToABPFilterVersionFormat(const base::Time& date);
+
+// Creates a FlatbufferData object that holds data from the ResourceBundle
+
+std::unique_ptr<FlatbufferData> MakeFlatbufferDataFromResourceBundle(
+ int resource_id);
+
+bool RegexMatches(base::StringPiece pattern,
+ base::StringPiece input,
+ bool case_sensitive);
+
+} // namespace utils
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_UTILS_H_
diff --git a/components/adblock/core/common/content_type.cc b/components/adblock/core/common/content_type.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/common/content_type.cc
@@ -0,0 +1,91 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/common/content_type.h"
+
+namespace adblock {
+
+std::string ContentTypeToString(ContentType content_type) {
+ switch (content_type) {
+ case ContentType::Unknown:
+ return "UNKNOWN";
+ case ContentType::Other:
+ return "OTHER";
+ case ContentType::Script:
+ return "SCRIPT";
+ case ContentType::Image:
+ return "IMAGE";
+ case ContentType::Stylesheet:
+ return "STYLESHEET";
+ case ContentType::Object:
+ return "OBJECT";
+ case ContentType::Subdocument:
+ return "SUBDOCUMENT";
+ case ContentType::Websocket:
+ return "WEBSOCKET";
+ case ContentType::Webrtc:
+ return "WEBRTC";
+ case ContentType::Ping:
+ return "PING";
+ case ContentType::Xmlhttprequest:
+ return "XMLHTTPREQUEST";
+ case ContentType::Media:
+ return "MEDIA";
+ case ContentType::Font:
+ return "FONT";
+ case ContentType::WebBundle:
+ return "WEBBUNDLE";
+ case ContentType::Default:
+ return "DEFAULT";
+ }
+}
+
+// TODO(atokodi): Use StringPiece
+ContentType ContentTypeFromString(const std::string& content_type) {
+ if (content_type == "other" || content_type == "xbl" ||
+ content_type == "dtd") {
+ return ContentType::Other;
+ } else if (content_type == "script") {
+ return ContentType::Script;
+ } else if (content_type == "image" || content_type == "background") {
+ return ContentType::Image;
+ } else if (content_type == "stylesheet") {
+ return ContentType::Stylesheet;
+ } else if (content_type == "object") {
+ return ContentType::Object;
+ } else if (content_type == "subdocument") {
+ return ContentType::Subdocument;
+ } else if (content_type == "websocket") {
+ return ContentType::Websocket;
+ } else if (content_type == "webrtc") {
+ return ContentType::Webrtc;
+ } else if (content_type == "ping") {
+ return ContentType::Ping;
+ } else if (content_type == "xmlhttprequest") {
+ return ContentType::Xmlhttprequest;
+ } else if (content_type == "media") {
+ return ContentType::Media;
+ } else if (content_type == "font") {
+ return ContentType::Font;
+ } else if (content_type == "webbundle") {
+ return ContentType::WebBundle;
+ } else {
+ return ContentType::Unknown;
+ }
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/common/content_type.h b/components/adblock/core/common/content_type.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/common/content_type.h
@@ -0,0 +1,48 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_CONTENT_TYPE_H_
+#define COMPONENTS_ADBLOCK_CORE_COMMON_CONTENT_TYPE_H_
+
+#include <string>
+
+namespace adblock {
+
+enum ContentType {
+ Unknown = 0,
+ Other = 1,
+ Script = 2,
+ Image = 4,
+ Stylesheet = 8,
+ Object = 16,
+ Subdocument = 32,
+ Websocket = 128,
+ Webrtc = 256,
+ Ping = 1024,
+ Xmlhttprequest = 2048,
+ Media = 16384,
+ Font = 32768,
+ WebBundle = 65536,
+ Default = (1 << 24) - 1,
+};
+
+std::string ContentTypeToString(ContentType content_type);
+ContentType ContentTypeFromString(const std::string& content_type);
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_COMMON_CONTENT_TYPE_H_
diff --git a/components/adblock/core/common/flatbuffer_data.cc b/components/adblock/core/common/flatbuffer_data.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/common/flatbuffer_data.cc
@@ -0,0 +1,94 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/common/flatbuffer_data.h"
+
+#include "absl/types/optional.h"
+#include "base/files/file_path.h"
+#include "base/files/file_util.h"
+#include "base/functional/bind.h"
+#include "base/logging.h"
+#include "base/task/task_traits.h"
+#include "base/task/thread_pool.h"
+
+namespace adblock {
+namespace {
+
+// Destroys memory mapped to a file on disk, and optionally removes the file
+// itself. Performs blocking operations, must run on a MayBlock() task runner.
+void DestroyMemoryMappedFile(std::unique_ptr<base::MemoryMappedFile> memory,
+ absl::optional<base::FilePath> path_to_remove) {
+ memory.reset();
+ // Deleting the file should happen *after* removing the memory mapping.
+ if (path_to_remove) {
+ base::DeleteFile(*path_to_remove);
+ }
+}
+
+} // namespace
+
+InMemoryFlatbufferData::InMemoryFlatbufferData(std::string data)
+ : data_(std::move(data)) {}
+
+InMemoryFlatbufferData::~InMemoryFlatbufferData() = default;
+
+const uint8_t* InMemoryFlatbufferData::data() const {
+ return reinterpret_cast<const uint8_t*>(data_.data());
+}
+
+size_t InMemoryFlatbufferData::size() const {
+ return data_.size();
+}
+
+MemoryMappedFlatbufferData::MemoryMappedFlatbufferData(base::FilePath path)
+ : permanently_remove_path_(false), path_(std::move(path)) {
+ file_ = std::make_unique<base::MemoryMappedFile>();
+ if (!file_->Initialize(path_)) {
+ file_.reset();
+ }
+}
+
+MemoryMappedFlatbufferData::~MemoryMappedFlatbufferData() {
+ const auto path_to_remove =
+ permanently_remove_path_.load()
+ ? absl::optional<base::FilePath>(std::move(path_))
+ : absl::nullopt;
+ base::ThreadPool::PostTask(
+ FROM_HERE, {base::MayBlock()},
+ base::BindOnce(&DestroyMemoryMappedFile, std::move(file_),
+ std::move(path_to_remove)));
+}
+
+const uint8_t* MemoryMappedFlatbufferData::data() const {
+ if (!file_) {
+ return nullptr;
+ }
+ return file_->data();
+}
+
+size_t MemoryMappedFlatbufferData::size() const {
+ if (!file_) {
+ return 0u;
+ }
+ return file_->length();
+}
+
+void MemoryMappedFlatbufferData::PermanentlyRemoveSourceOnDestruction() {
+ permanently_remove_path_.store(true);
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/common/flatbuffer_data.h b/components/adblock/core/common/flatbuffer_data.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/common/flatbuffer_data.h
@@ -0,0 +1,85 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_FLATBUFFER_DATA_H_
+#define COMPONENTS_ADBLOCK_CORE_COMMON_FLATBUFFER_DATA_H_
+
+#include <atomic>
+#include <memory>
+#include <string>
+
+#include "base/files/file_path.h"
+#include "base/files/memory_mapped_file.h"
+
+namespace adblock {
+
+// Holds raw flatbuffer data.
+// All methods must be thread-safe, the object can be accessed from multiple
+// task runners concurrently.
+class FlatbufferData {
+ public:
+ virtual ~FlatbufferData() = default;
+
+ virtual const uint8_t* data() const = 0;
+ virtual size_t size() const = 0;
+
+ // Schedules permanent removal of the data source of this flatbuffer when
+ // |this| is destroyed. This can mean removing a file from disk or removing
+ // a record from a database etc.
+ virtual void PermanentlyRemoveSourceOnDestruction() {}
+};
+
+// Implementation that loads the flatbuffer into memory from a source string.
+// Requires around 5-10 MB of memory for a subscription like EasyList.
+class InMemoryFlatbufferData : public FlatbufferData {
+ public:
+ explicit InMemoryFlatbufferData(std::string data);
+ ~InMemoryFlatbufferData() override;
+ const uint8_t* data() const override;
+ size_t size() const override;
+
+ private:
+ std::string data_;
+};
+
+// Memory-mapped implementation that opens a file and memory-maps it. Should
+// use less memory than InMemoryFlatbufferData because the bulk of the data
+// resides on disk. Some memory is still consumed due to caching/paging and
+// the application's *shared* memory usage may increase.
+class MemoryMappedFlatbufferData : public FlatbufferData {
+ public:
+ // Ctor should be called on blocking task runner, performs file I/O/
+ explicit MemoryMappedFlatbufferData(base::FilePath path);
+ ~MemoryMappedFlatbufferData() override;
+ const uint8_t* data() const override;
+ size_t size() const override;
+
+ // Post cleanup of the mapped file to blocking task runner during destruction.
+ void PermanentlyRemoveSourceOnDestruction() final;
+
+ private:
+ // Since buffers may be accessed by many threads,
+ // PermanentlyRemoveSourceOnDestruction() must set the cleanup flag
+ // atomically.
+ std::atomic_bool permanently_remove_path_;
+ const base::FilePath path_;
+ std::unique_ptr<base::MemoryMappedFile> file_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_COMMON_FLATBUFFER_DATA_H_
diff --git a/components/adblock/core/common/header_filter_data.h b/components/adblock/core/common/header_filter_data.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/common/header_filter_data.h
@@ -0,0 +1,38 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_HEADER_FILTER_DATA_H_
+#define COMPONENTS_ADBLOCK_CORE_COMMON_HEADER_FILTER_DATA_H_
+
+#include <string>
+
+#include "url/gurl.h"
+
+namespace adblock {
+
+struct HeaderFilterData {
+ base::StringPiece header_filter;
+ GURL subscription_url;
+ // required by std::set
+ bool operator<(const HeaderFilterData& other) const {
+ return (header_filter < other.header_filter);
+ }
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_COMMON_HEADER_FILTER_DATA_H_
diff --git a/components/adblock/core/common/keyword_extractor_utils.cc b/components/adblock/core/common/keyword_extractor_utils.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/common/keyword_extractor_utils.cc
@@ -0,0 +1,30 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/common/keyword_extractor_utils.h"
+#include "base/strings/string_piece.h"
+
+namespace adblock {
+namespace utils {
+
+bool IsBadKeyword(base::StringPiece value) {
+ return value == "http" || value == "https" || value == "com" ||
+ value == "js" || value.size() < 2;
+}
+
+} // namespace utils
+} // namespace adblock
diff --git a/components/adblock/core/common/keyword_extractor_utils.h b/components/adblock/core/common/keyword_extractor_utils.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/common/keyword_extractor_utils.h
@@ -0,0 +1,31 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_KEYWORD_EXTRACTOR_UTILS_H_
+#define COMPONENTS_ADBLOCK_CORE_COMMON_KEYWORD_EXTRACTOR_UTILS_H_
+
+#include "base/strings/string_piece.h"
+
+namespace adblock {
+namespace utils {
+
+bool IsBadKeyword(base::StringPiece value);
+
+} // namespace utils
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_COMMON_KEYWORD_EXTRACTOR_UTILS_H_
diff --git a/components/adblock/core/common/regex_filter_pattern.cc b/components/adblock/core/common/regex_filter_pattern.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/common/regex_filter_pattern.cc
@@ -0,0 +1,34 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/common/regex_filter_pattern.h"
+
+#include "absl/types/optional.h"
+#include "base/strings/string_piece.h"
+
+namespace adblock {
+
+absl::optional<base::StringPiece> ExtractRegexFilterFromPattern(
+ base::StringPiece filter_pattern) {
+ if (!(filter_pattern.size() > 2 && filter_pattern.front() == '/' &&
+ filter_pattern.back() == '/')) {
+ return absl::nullopt;
+ }
+ return filter_pattern.substr(1, filter_pattern.size() - 2);
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/common/regex_filter_pattern.h b/components/adblock/core/common/regex_filter_pattern.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/common/regex_filter_pattern.h
@@ -0,0 +1,33 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_REGEX_FILTER_PATTERN_H_
+#define COMPONENTS_ADBLOCK_CORE_COMMON_REGEX_FILTER_PATTERN_H_
+
+#include "absl/types/optional.h"
+#include "base/strings/string_piece.h"
+
+namespace adblock {
+
+// For a regex filter "/{expression}/" returns "{expression}".
+// For non-regex filters, returns nullopt.
+// Cheap, may be used to identify regex filter patterns.
+absl::optional<base::StringPiece> ExtractRegexFilterFromPattern(
+ base::StringPiece filter_pattern);
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_COMMON_REGEX_FILTER_PATTERN_H_
diff --git a/components/adblock/core/common/sitekey.h b/components/adblock/core/common/sitekey.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/common/sitekey.h
@@ -0,0 +1,29 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_SITEKEY_H_
+#define COMPONENTS_ADBLOCK_CORE_COMMON_SITEKEY_H_
+
+#include "base/types/strong_alias.h"
+
+namespace adblock {
+
+using SiteKey = base::StrongAlias<class SiteKeyTag, std::string>;
+
+}
+
+#endif // COMPONENTS_ADBLOCK_CORE_COMMON_SITEKEY_H_
diff --git a/components/adblock/core/configuration/BUILD.gn b/components/adblock/core/configuration/BUILD.gn
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/configuration/BUILD.gn
@@ -0,0 +1,59 @@
+#
+# This file is part of eyeo Chromium SDK,
+# Copyright (C) 2006-present eyeo GmbH
+#
+# eyeo Chromium SDK is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3 as
+# published by the Free Software Foundation.
+#
+# eyeo Chromium SDK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+
+source_set("configuration") {
+ sources = [
+ "filtering_configuration_prefs.cc",
+ "filtering_configuration_prefs.h",
+ "filtering_configuration.h",
+ "persistent_filtering_configuration.cc",
+ "persistent_filtering_configuration.h",
+ ]
+
+ public_deps = [
+ "//base",
+ "//components/prefs",
+ "//url:url",
+ ]
+}
+
+source_set("test_support") {
+ testonly = true
+ sources = [
+ "test/fake_filtering_configuration.cc",
+ "test/fake_filtering_configuration.h",
+ "test/mock_filtering_configuration.cc",
+ "test/mock_filtering_configuration.h",
+ ]
+ public_deps = [
+ ":configuration",
+ "//testing/gmock",
+ "//testing/gtest",
+ ]
+}
+
+source_set("unit_tests") {
+ testonly = true
+ sources = [ "test/persistent_filtering_configuration_test.cc" ]
+
+ deps = [
+ ":configuration",
+ "//base/test:test_support",
+ "//components/prefs:test_support",
+ "//testing/gmock",
+ "//testing/gtest",
+ ]
+}
diff --git a/components/adblock/core/configuration/filtering_configuration.h b/components/adblock/core/configuration/filtering_configuration.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/configuration/filtering_configuration.h
@@ -0,0 +1,90 @@
+
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_CONFIGURATION_FILTERING_CONFIGURATION_H_
+#define COMPONENTS_ADBLOCK_CORE_CONFIGURATION_FILTERING_CONFIGURATION_H_
+
+#include <string>
+#include "base/observer_list_types.h"
+#include "base/strings/string_piece.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+// A group of settings that control how to perform resource filtering.
+//
+// FilterConfigurations can be installed into a SubscriptionService.
+// SubscriptionService interprets how to express each configuration in terms of
+// installed subscriptions, and how to enact filtering.
+//
+// Each configuration is independent from others. If two FilteringConfigurations
+// have filters that result in a conflicting classification decision,
+// blocking a resource takes precedence over allowing a resource.
+//
+// Examples of multiple FilteringConfigurations could be:
+// - one configuration to filter ads
+// - another configuration to protect user privacy
+// - another configuration to enforce parental control
+// Each of these could be disabled/enabled or reconfigured individually, without
+// affecting others.
+class FilteringConfiguration {
+ public:
+ class Observer : public base::CheckedObserver {
+ public:
+ virtual void OnEnabledStateChanged(FilteringConfiguration* config) {}
+ virtual void OnFilterListsChanged(FilteringConfiguration* config) {}
+ virtual void OnAllowedDomainsChanged(FilteringConfiguration* config) {}
+ virtual void OnCustomFiltersChanged(FilteringConfiguration* config) {}
+ };
+
+ virtual ~FilteringConfiguration() = default;
+
+ virtual void AddObserver(Observer* observer) = 0;
+ virtual void RemoveObserver(Observer* observer) = 0;
+
+ // The name must be unique across all created configurations.
+ virtual const std::string& GetName() const = 0;
+
+ // Enable or disable the entire configuration. A disabled configuration does
+ // not contribute filters to classification and behaves as if it was not
+ // installed.
+ virtual void SetEnabled(bool enabled) = 0;
+ virtual bool IsEnabled() const = 0;
+
+ // Adding an existing filter list, or removing a non-existing filter list, are
+ // NOPs and do not notify observers.
+ virtual void AddFilterList(const GURL& url) = 0;
+ virtual void RemoveFilterList(const GURL& url) = 0;
+ virtual std::vector<GURL> GetFilterLists() const = 0;
+
+ // Adding an existing allowed domain, or removing a non-existing allowed
+ // domain, are NOPs and do not notify observers.
+ virtual void AddAllowedDomain(const std::string& domain) = 0;
+ virtual void RemoveAllowedDomain(const std::string& domain) = 0;
+ virtual std::vector<std::string> GetAllowedDomains() const = 0;
+
+ // Adding an existing custom filter, or removing a non-existing custom filter,
+ // are NOPs and do not notify observers.
+ virtual void AddCustomFilter(const std::string& filter) = 0;
+ virtual void RemoveCustomFilter(const std::string& filter) = 0;
+ virtual std::vector<std::string> GetCustomFilters() const = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_CONFIGURATION_FILTERING_CONFIGURATION_H_
diff --git a/components/adblock/core/configuration/filtering_configuration_prefs.cc b/components/adblock/core/configuration/filtering_configuration_prefs.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/configuration/filtering_configuration_prefs.cc
@@ -0,0 +1,33 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/configuration/filtering_configuration_prefs.h"
+
+#include "base/logging.h"
+#include "components/prefs/pref_registry_simple.h"
+
+namespace adblock::filtering_configuration::prefs {
+
+const char kConfigurationsPrefsPath[] = "filtering.configurations";
+
+void RegisterProfilePrefs(PrefRegistrySimple* registry) {
+ registry->RegisterDictionaryPref(kConfigurationsPrefsPath);
+
+ VLOG(3) << "[eyeo] Registered prefs";
+}
+
+} // namespace adblock::filtering_configuration::prefs
diff --git a/components/adblock/core/configuration/filtering_configuration_prefs.h b/components/adblock/core/configuration/filtering_configuration_prefs.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/configuration/filtering_configuration_prefs.h
@@ -0,0 +1,30 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_CONFIGURATION_FILTERING_CONFIGURATION_PREFS_H_
+#define COMPONENTS_ADBLOCK_CORE_CONFIGURATION_FILTERING_CONFIGURATION_PREFS_H_
+class PrefRegistrySimple;
+
+namespace adblock::filtering_configuration::prefs {
+
+extern const char kConfigurationsPrefsPath[];
+
+void RegisterProfilePrefs(PrefRegistrySimple* registry);
+
+} // namespace adblock::filtering_configuration::prefs
+
+#endif // COMPONENTS_ADBLOCK_CORE_CONFIGURATION_FILTERING_CONFIGURATION_PREFS_H_
diff --git a/components/adblock/core/configuration/persistent_filtering_configuration.cc b/components/adblock/core/configuration/persistent_filtering_configuration.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/configuration/persistent_filtering_configuration.cc
@@ -0,0 +1,273 @@
+
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/configuration/persistent_filtering_configuration.h"
+
+#include <string>
+
+#include "base/strings/string_util.h"
+#include "components/adblock/core/configuration/filtering_configuration_prefs.h"
+#include "components/prefs/pref_service.h"
+#include "components/prefs/scoped_user_pref_update.h"
+
+#include "base/logging.h"
+
+namespace adblock {
+namespace {
+
+constexpr auto kEnabledKey = base::StringPiece("enabled");
+constexpr auto kDomainsKey = base::StringPiece("domains");
+constexpr auto kCustomFiltersKey = base::StringPiece("filters");
+constexpr auto kFilterListsKey = base::StringPiece("subscriptions");
+
+base::Value::Dict ReadFromPrefs(PrefService* pref_service,
+ base::StringPiece configuration_name) {
+ const auto& all_configurations =
+ pref_service
+ ->GetValue(filtering_configuration::prefs::kConfigurationsPrefsPath)
+ .GetDict();
+ const auto* this_config = all_configurations.FindDict(configuration_name);
+ if (this_config) {
+ return base::Value::Dict(this_config->Clone());
+ }
+ return base::Value::Dict();
+}
+
+void StoreToPrefs(const base::Value::Dict& configuration,
+ PrefService* pref_service,
+ base::StringPiece configuration_name) {
+ // ScopedDictPrefUpdate requires an std::string for some reason:
+ static std::string kConfigurationsPrefsPathString(
+ filtering_configuration::prefs::kConfigurationsPrefsPath);
+ ScopedDictPrefUpdate update(pref_service, kConfigurationsPrefsPathString);
+ update.Get().Set(configuration_name, configuration.Clone());
+}
+
+void SetDefaultValuesIfNeeded(base::Value::Dict& configuration) {
+ if (!configuration.FindBool(kEnabledKey)) {
+ configuration.Set(kEnabledKey, true);
+ }
+ configuration.EnsureList(kDomainsKey);
+ configuration.EnsureList(kCustomFiltersKey);
+ configuration.EnsureList(kFilterListsKey);
+}
+
+bool AppendToList(base::Value::Dict& configuration,
+ base::StringPiece key,
+ const std::string& value) {
+ DCHECK(configuration.FindList(key)); // see SetDefaultValuesIfNeeded().
+ auto* list = configuration.FindList(key);
+ if (base::ranges::find(*list, base::Value(value)) != list->end()) {
+ // value already exists in the list.
+ return false;
+ }
+ list->Append(value);
+ return true;
+}
+
+bool RemoveFromList(base::Value::Dict& configuration,
+ base::StringPiece key,
+ const std::string& value) {
+ DCHECK(configuration.FindList(key)); // see SetDefaultValuesIfNeeded().
+ auto* list = configuration.FindList(key);
+ auto it = base::ranges::find(*list, base::Value(value));
+ if (it == list->end()) {
+ // value was not on the list.
+ return false;
+ }
+ list->erase(it);
+ return true;
+}
+
+template <typename T>
+std::vector<T> GetFromList(const base::Value::Dict& configuration,
+ base::StringPiece key) {
+ DCHECK(configuration.FindList(key)); // see SetDefaultValuesIfNeeded().
+ const auto* list = configuration.FindList(key);
+ std::vector<T> result;
+ for (const auto& value : *list) {
+ if (value.is_string()) {
+ result.emplace_back(value.GetString());
+ }
+ }
+ return result;
+}
+
+} // namespace
+
+PersistentFilteringConfiguration::PersistentFilteringConfiguration(
+ PrefService* pref_service,
+ std::string name)
+ : pref_service_(pref_service),
+ name_(std::move(name)),
+ dictionary_(ReadFromPrefs(pref_service_, name_)) {
+ SetDefaultValuesIfNeeded(dictionary_);
+ PersistToPrefs();
+}
+
+PersistentFilteringConfiguration::~PersistentFilteringConfiguration() = default;
+
+void PersistentFilteringConfiguration::AddObserver(Observer* observer) {
+ observers_.AddObserver(observer);
+}
+void PersistentFilteringConfiguration::RemoveObserver(Observer* observer) {
+ observers_.RemoveObserver(observer);
+}
+
+const std::string& PersistentFilteringConfiguration::GetName() const {
+ return name_;
+}
+
+void PersistentFilteringConfiguration::SetEnabled(bool enabled) {
+ if (IsEnabled() == enabled) {
+ return;
+ }
+ dictionary_.Set(kEnabledKey, enabled);
+ PersistToPrefs();
+ NotifyEnabledStateChanged();
+}
+
+bool PersistentFilteringConfiguration::IsEnabled() const {
+ const auto pref_value = dictionary_.FindBool(kEnabledKey);
+ DCHECK(pref_value);
+ return *pref_value;
+}
+
+void PersistentFilteringConfiguration::AddFilterList(const GURL& url) {
+ if (AppendToList(dictionary_, kFilterListsKey, url.spec())) {
+ PersistToPrefs();
+ NotifyFilterListsChanged();
+ }
+}
+
+void PersistentFilteringConfiguration::RemoveFilterList(const GURL& url) {
+ if (RemoveFromList(dictionary_, kFilterListsKey, url.spec())) {
+ PersistToPrefs();
+ NotifyFilterListsChanged();
+ }
+}
+
+std::vector<GURL> PersistentFilteringConfiguration::GetFilterLists() const {
+ return GetFromList<GURL>(dictionary_, kFilterListsKey);
+}
+
+void PersistentFilteringConfiguration::AddAllowedDomain(
+ const std::string& domain) {
+ if (AppendToList(dictionary_, kDomainsKey, domain)) {
+ PersistToPrefs();
+ NotifyAllowedDomainsChanged();
+ }
+}
+
+void PersistentFilteringConfiguration::RemoveAllowedDomain(
+ const std::string& domain) {
+ if (RemoveFromList(dictionary_, kDomainsKey, domain)) {
+ PersistToPrefs();
+ NotifyAllowedDomainsChanged();
+ }
+}
+
+std::vector<std::string> PersistentFilteringConfiguration::GetAllowedDomains()
+ const {
+ return GetFromList<std::string>(dictionary_, kDomainsKey);
+}
+
+void PersistentFilteringConfiguration::AddCustomFilter(
+ const std::string& filter) {
+ if (AppendToList(dictionary_, kCustomFiltersKey, filter)) {
+ PersistToPrefs();
+ NotifyCustomFiltersChanged();
+ }
+}
+
+void PersistentFilteringConfiguration::RemoveCustomFilter(
+ const std::string& filter) {
+ if (RemoveFromList(dictionary_, kCustomFiltersKey, filter)) {
+ PersistToPrefs();
+ NotifyCustomFiltersChanged();
+ }
+}
+
+std::vector<std::string> PersistentFilteringConfiguration::GetCustomFilters()
+ const {
+ return GetFromList<std::string>(dictionary_, kCustomFiltersKey);
+}
+
+void PersistentFilteringConfiguration::PersistToPrefs() {
+ StoreToPrefs(dictionary_, pref_service_, name_);
+}
+
+void PersistentFilteringConfiguration::NotifyEnabledStateChanged() {
+ for (auto& o : observers_) {
+ o.OnEnabledStateChanged(this);
+ }
+}
+
+void PersistentFilteringConfiguration::NotifyFilterListsChanged() {
+ for (auto& o : observers_) {
+ o.OnFilterListsChanged(this);
+ }
+}
+
+void PersistentFilteringConfiguration::NotifyAllowedDomainsChanged() {
+ for (auto& o : observers_) {
+ o.OnAllowedDomainsChanged(this);
+ }
+}
+
+void PersistentFilteringConfiguration::NotifyCustomFiltersChanged() {
+ for (auto& o : observers_) {
+ o.OnCustomFiltersChanged(this);
+ }
+}
+
+// static
+void PersistentFilteringConfiguration::RegisterProfilePrefs(
+ PrefRegistrySimple* registry) {
+ registry->RegisterDictionaryPref(
+ std::string(filtering_configuration::prefs::kConfigurationsPrefsPath));
+}
+
+// static
+std::vector<std::unique_ptr<PersistentFilteringConfiguration>>
+PersistentFilteringConfiguration::GetPersistedConfigurations(
+ PrefService* pref_service) {
+ std::vector<std::unique_ptr<PersistentFilteringConfiguration>> configs;
+ const auto& all_configurations =
+ pref_service
+ ->GetValue(filtering_configuration::prefs::kConfigurationsPrefsPath)
+ .GetDict();
+ for (auto it = all_configurations.begin(); it != all_configurations.end();
+ ++it) {
+ configs.push_back(std::make_unique<PersistentFilteringConfiguration>(
+ pref_service, (it->first)));
+ }
+ return configs;
+}
+
+// static
+void PersistentFilteringConfiguration::RemovePersistedData(
+ PrefService* pref_service,
+ const std::string& name) {
+ static std::string kConfigurationsPrefsPathString(
+ filtering_configuration::prefs::kConfigurationsPrefsPath);
+ ScopedDictPrefUpdate update(pref_service, kConfigurationsPrefsPathString);
+ update.Get().Remove(name);
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/configuration/persistent_filtering_configuration.h b/components/adblock/core/configuration/persistent_filtering_configuration.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/configuration/persistent_filtering_configuration.h
@@ -0,0 +1,86 @@
+
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_CONFIGURATION_PERSISTENT_FILTERING_CONFIGURATION_H_
+#define COMPONENTS_ADBLOCK_CORE_CONFIGURATION_PERSISTENT_FILTERING_CONFIGURATION_H_
+
+#include "base/memory/raw_ptr.h"
+#include "base/observer_list.h"
+#include "base/values.h"
+#include "components/adblock/core/configuration/filtering_configuration.h"
+#include "components/prefs/pref_registry_simple.h"
+#include "components/prefs/pref_service.h"
+
+namespace adblock {
+
+// An implementation of FilteringConfiguration that persists itself to a dict
+// inside PrefService.
+//
+// All instances live in the same root node in prefs but in serialize themselves
+// to individual sub-keys based on their name.
+class PersistentFilteringConfiguration final : public FilteringConfiguration {
+ public:
+ // Each |name| must be unique, otherwise multiple
+ // PersistentFilteringConfigurations will try to serialize to the same path in
+ // prefs and conflict with one another.
+ PersistentFilteringConfiguration(PrefService* pref_service, std::string name);
+ ~PersistentFilteringConfiguration() final;
+
+ void AddObserver(Observer* observer) final;
+ void RemoveObserver(Observer* observer) final;
+
+ const std::string& GetName() const final;
+
+ void SetEnabled(bool enabled) final;
+ bool IsEnabled() const final;
+
+ void AddFilterList(const GURL& url) final;
+ void RemoveFilterList(const GURL& url) final;
+ std::vector<GURL> GetFilterLists() const final;
+
+ void AddAllowedDomain(const std::string& domain) final;
+ void RemoveAllowedDomain(const std::string& domain) final;
+ std::vector<std::string> GetAllowedDomains() const final;
+
+ void AddCustomFilter(const std::string& filter) final;
+ void RemoveCustomFilter(const std::string& filter) final;
+ std::vector<std::string> GetCustomFilters() const final;
+
+ static void RegisterProfilePrefs(PrefRegistrySimple* registry);
+
+ static std::vector<std::unique_ptr<PersistentFilteringConfiguration>>
+ GetPersistedConfigurations(PrefService* pref_service);
+ static void RemovePersistedData(PrefService* pref_service,
+ const std::string& name);
+
+ private:
+ void PersistToPrefs();
+ void NotifyEnabledStateChanged();
+ void NotifyFilterListsChanged();
+ void NotifyAllowedDomainsChanged();
+ void NotifyCustomFiltersChanged();
+
+ const raw_ptr<PrefService> pref_service_;
+ std::string name_;
+ base::ObserverList<Observer> observers_;
+ base::Value::Dict dictionary_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_CONFIGURATION_PERSISTENT_FILTERING_CONFIGURATION_H_
diff --git a/components/adblock/core/converter/BUILD.gn b/components/adblock/core/converter/BUILD.gn
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/BUILD.gn
@@ -0,0 +1,83 @@
+#
+# This file is part of eyeo Chromium SDK,
+# Copyright (C) 2006-present eyeo GmbH
+#
+# eyeo Chromium SDK is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3 as
+# published by the Free Software Foundation.
+#
+# eyeo Chromium SDK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+
+source_set("converter") {
+ sources = [
+ "flatbuffer_converter.cc",
+ "flatbuffer_converter.h",
+ ]
+
+ deps = [
+ "//components/adblock/core/converter/parser",
+ "//components/adblock/core/converter/serializer",
+ ]
+
+ public_deps = [
+ "//base",
+ "//components/adblock/core/common",
+ "//third_party/abseil-cpp:absl",
+ "//third_party/flatbuffers",
+ "//url",
+ ]
+
+ assert_no_deps = [
+ "//components/keyed_service/core",
+ "//components/resources:components_resources_grit",
+ "//net",
+ "//services/network/public/cpp",
+ ]
+}
+
+executable("adblock_flatbuffer_converter") {
+ sources = [ "converter_main.cc" ]
+
+ deps = [
+ ":converter",
+ "//third_party/zlib/google:compression_utils",
+ ]
+}
+
+source_set("unit_tests") {
+ testonly = true
+ sources = [
+ "test/flatbuffer_converter_test.cc",
+ ]
+
+ deps = [
+ ":converter",
+ "//components/adblock/core/subscription",
+ "//testing/gmock",
+ "//testing/gtest",
+ ]
+}
+
+source_set("perf_tests") {
+ testonly = true
+ sources = [
+ "test/flatbuffer_converter_perftest.cc",
+ ]
+
+ deps = [
+ ":converter",
+ "//testing/gtest",
+ "//third_party/zlib/google:compression_utils",
+ ]
+
+ data = [
+ "//components/test/data/adblock/easylist.txt.gz",
+ "//components/test/data/adblock/exceptionrules.txt.gz",
+ ]
+}
diff --git a/components/adblock/core/converter/converter_main.cc b/components/adblock/core/converter/converter_main.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/converter_main.cc
@@ -0,0 +1,115 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <sstream>
+#include <vector>
+
+#include "base/at_exit.h"
+#include "base/command_line.h"
+#include "base/files/file_path.h"
+#include "base/files/file_util.h"
+#include "base/logging.h"
+#include "components/adblock/core/common/flatbuffer_data.h"
+#include "components/adblock/core/converter/flatbuffer_converter.h"
+#include "third_party/zlib/google/compression_utils.h"
+
+#if BUILDFLAG(IS_WIN)
+#include "base/strings/sys_string_conversions.h"
+#endif // BUILDFLAG(IS_WIN)
+
+namespace {
+
+bool Convert(base::FilePath input_path, GURL url, base::FilePath output_path) {
+ if (!url.is_valid()) {
+ LOG(ERROR) << "[eyeo] Filter list URL not valid: " << url;
+ return false;
+ }
+ std::string content;
+ if (!base::ReadFileToString(input_path, &content)) {
+ LOG(ERROR) << "[eyeo] Could not open input file " << input_path;
+ return false;
+ }
+ if (input_path.MatchesFinalExtension(FILE_PATH_LITERAL(".gz"))) {
+ if (!compression::GzipUncompress(content, &content)) {
+ LOG(ERROR) << "[eyeo] Could not decompress input file " << input_path;
+ return false;
+ }
+ }
+ std::stringstream input(content);
+ auto converter_result =
+ adblock::FlatbufferConverter::Convert(input, url, true);
+
+ if (absl::holds_alternative<adblock::ConversionError>(converter_result)) {
+ LOG(ERROR) << "[eyeo] "
+ << absl::get<adblock::ConversionError>(converter_result);
+ return false;
+ }
+
+ if (absl::holds_alternative<GURL>(converter_result)) {
+ LOG(ERROR) << "[eyeo] Filter list redirects. Won't convert";
+ return false;
+ }
+
+ if (!base::WriteFile(
+ output_path,
+ reinterpret_cast<const char*>(
+ absl::get<std::unique_ptr<adblock::FlatbufferData>>(
+ converter_result)
+ ->data()),
+ absl::get<std::unique_ptr<adblock::FlatbufferData>>(converter_result)
+ ->size())) {
+ LOG(ERROR) << "[eyeo] Could not write output file " << output_path;
+ return false;
+ }
+ return true;
+}
+
+} // namespace
+
+int main(int argc, char* argv[]) {
+ base::AtExitManager exit_manager;
+ base::CommandLine::Init(argc, argv);
+ auto* command_line = base::CommandLine::ForCurrentProcess();
+
+ logging::LoggingSettings logging_settings;
+ logging_settings.logging_dest = logging::LOG_TO_STDERR;
+ logging::InitLogging(logging_settings);
+
+ const auto positional_arguments = command_line->GetArgs();
+ if (positional_arguments.size() != 3u) {
+ LOG(ERROR) << "[eyeo] Usage: " << command_line->GetProgram()
+ << " [INPUT_FILE] [FILTER_LIST_URL] [OUTPUT_FILE]";
+ return 1;
+ }
+
+ // We need to make the path absolute because base::ReadFileToString() fails
+ // for paths with `..` components.
+ const auto input_path =
+ base::MakeAbsoluteFilePath(base::FilePath(positional_arguments[0]));
+
+#if BUILDFLAG(IS_WIN)
+ const auto url = GURL(base::SysWideToUTF8(positional_arguments[1]));
+#else
+ const auto url = GURL(positional_arguments[1]);
+#endif
+ const auto output_path = base::FilePath(positional_arguments[2]);
+
+ if (!Convert(input_path, url, output_path)) {
+ return 1;
+ }
+ return 0;
+}
diff --git a/components/adblock/core/converter/flatbuffer_converter.cc b/components/adblock/core/converter/flatbuffer_converter.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/flatbuffer_converter.cc
@@ -0,0 +1,134 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/converter/flatbuffer_converter.h"
+
+#include <fstream>
+#include <iostream>
+
+#include "base/logging.h"
+#include "base/strings/string_piece.h"
+#include "base/strings/string_split.h"
+#include "base/strings/string_util.h"
+#include "components/adblock/core/converter/parser/content_filter.h"
+#include "components/adblock/core/converter/parser/filter_classifier.h"
+#include "components/adblock/core/converter/parser/metadata.h"
+#include "components/adblock/core/converter/parser/snippet_filter.h"
+#include "components/adblock/core/converter/parser/url_filter.h"
+#include "components/adblock/core/converter/serializer/flatbuffer_serializer.h"
+
+namespace adblock {
+
+static constexpr char kCommentPrefix[] = "!";
+static constexpr size_t kMaxSeparatorLength = 3u;
+
+// static
+ConversionResult FlatbufferConverter::Convert(std::istream& filter_stream,
+ GURL subscription_url,
+ bool allow_privileged) {
+ if (!filter_stream) {
+ return ConversionError("Invalid filter stream");
+ }
+
+ auto metadata = Metadata::FromStream(filter_stream);
+ if (!metadata.has_value()) {
+ return ConversionError("Invalid filter list metadata");
+ }
+
+ if (metadata->redirect_url.has_value()) {
+ return metadata->redirect_url.value();
+ }
+
+ FlatbufferSerializer flatbuffer_serializer(subscription_url,
+ allow_privileged);
+ flatbuffer_serializer.SerializeMetadata(std::move(metadata.value()));
+ std::string line;
+ while (std::getline(filter_stream, line)) {
+ ConvertFilter(line, flatbuffer_serializer);
+ }
+
+ return flatbuffer_serializer.GetSerializedSubscription();
+}
+
+// static
+std::unique_ptr<FlatbufferData> FlatbufferConverter::Convert(
+ const std::vector<std::string>& filters,
+ GURL subscription_url,
+ bool allow_privileged) {
+ FlatbufferSerializer flatbuffer_serializer(subscription_url,
+ allow_privileged);
+ for (const auto& filter : filters) {
+ ConvertFilter(filter, flatbuffer_serializer);
+ }
+
+ return flatbuffer_serializer.GetSerializedSubscription();
+}
+
+// static
+void FlatbufferConverter::ConvertFilter(
+ const std::string& line,
+ FlatbufferSerializer& flatbuffer_serializer) {
+ const base::StringPiece filter_str =
+ base::TrimWhitespaceASCII(line, base::TRIM_ALL);
+ if (base::StartsWith(filter_str, kCommentPrefix) || filter_str.empty()) {
+ return;
+ }
+
+ auto separator_pos = filter_str.find('#');
+ FilterType filter_type = FilterType::Url;
+ if (separator_pos != std::string::npos) {
+ filter_type = FilterClassifier::FilterTypeFromString(
+ filter_str.substr(separator_pos, kMaxSeparatorLength));
+ }
+
+ switch (filter_type) {
+ case FilterType::ElemHide:
+ case FilterType::ElemHideException:
+ case FilterType::ElemHideEmulation:
+ if (auto content_filter = ContentFilter::FromString(
+ filter_str.substr(0, separator_pos), filter_type,
+ filter_str.substr(
+ separator_pos +
+ (filter_type == FilterType::ElemHide ? 2 : 3)))) {
+ flatbuffer_serializer.SerializeContentFilter(
+ std::move(content_filter.value()));
+ } else {
+ VLOG(1) << "[eyeo] Invalid content filter: " << line;
+ }
+ break;
+ case FilterType::Snippet:
+ if (auto snippet_filter = SnippetFilter::FromString(
+ filter_str.substr(0, separator_pos),
+ filter_str.substr(separator_pos + kMaxSeparatorLength))) {
+ flatbuffer_serializer.SerializeSnippetFilter(
+ std::move(snippet_filter.value()));
+ } else {
+ VLOG(1) << "[eyeo] Invalid snippet filter: " << line;
+ }
+ break;
+ case FilterType::Url:
+ if (auto url_filter = UrlFilter::FromString(
+ std::string(filter_str.data(), filter_str.size()))) {
+ flatbuffer_serializer.SerializeUrlFilter(std::move(url_filter.value()));
+ } else {
+ VLOG(1) << "[eyeo] Invalid url filter: " << line;
+ }
+ break;
+ }
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/converter/flatbuffer_converter.h b/components/adblock/core/converter/flatbuffer_converter.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/flatbuffer_converter.h
@@ -0,0 +1,55 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_FLATBUFFER_CONVERTER_H_
+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_FLATBUFFER_CONVERTER_H_
+
+#include <istream>
+#include <memory>
+
+#include "base/types/strong_alias.h"
+#include "components/adblock/core/common/flatbuffer_data.h"
+#include "third_party/abseil-cpp/absl/types/variant.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+using ConversionError =
+ base::StrongAlias<class ConversionErrorTag, std::string>;
+// Conversion can yield valid FlatbufferData, a redirect URL or an error:
+using ConversionResult =
+ absl::variant<std::unique_ptr<FlatbufferData>, GURL, ConversionError>;
+
+class FlatbufferSerializer;
+class FlatbufferConverter {
+ public:
+ static ConversionResult Convert(std::istream& filter_stream,
+ GURL subscription_url,
+ bool allow_privileged);
+ static std::unique_ptr<FlatbufferData> Convert(
+ const std::vector<std::string>& filters,
+ GURL subscription_url,
+ bool allow_privileged);
+
+ private:
+ static void ConvertFilter(const std::string& line,
+ FlatbufferSerializer& flatbuffer_serializer);
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_FLATBUFFER_CONVERTER_H_
diff --git a/components/adblock/core/converter/parser/BUILD.gn b/components/adblock/core/converter/parser/BUILD.gn
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/BUILD.gn
@@ -0,0 +1,66 @@
+#
+# This file is part of eyeo Chromium SDK,
+# Copyright (C) 2006-present eyeo GmbH
+#
+# eyeo Chromium SDK is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3 as
+# published by the Free Software Foundation.
+#
+# eyeo Chromium SDK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+
+source_set("parser") {
+ sources = [
+ "content_filter.cc",
+ "content_filter.h",
+ "domain_option.cc",
+ "domain_option.h",
+ "filter_classifier.cc",
+ "filter_classifier.h",
+ "metadata.cc",
+ "metadata.h",
+ "snippet_filter.cc",
+ "snippet_filter.h",
+ "snippet_tokenizer.cc",
+ "snippet_tokenizer.h",
+ "url_filter.cc",
+ "url_filter.h",
+ "url_filter_options.cc",
+ "url_filter_options.h",
+ ]
+
+ public_deps = [
+ "//base",
+ "//components/adblock/core/common",
+ "//url",
+ ]
+
+ deps = [
+ "//third_party/icu/",
+ "//third_party/re2",
+ ]
+}
+
+source_set("unit_tests") {
+ testonly = true
+ sources = [
+ "test/content_filter_test.cc",
+ "test/domain_option_test.cc",
+ "test/metadata_test.cc",
+ "test/snippet_filter_test.cc",
+ "test/snippet_tokenizer_test.cc",
+ "test/url_filter_options_test.cc",
+ "test/url_filter_test.cc",
+ ]
+
+ deps = [
+ ":parser",
+ "//testing/gmock",
+ "//testing/gtest"
+ ]
+}
diff --git a/components/adblock/core/converter/parser/content_filter.cc b/components/adblock/core/converter/parser/content_filter.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/content_filter.cc
@@ -0,0 +1,68 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/converter/parser/content_filter.h"
+
+#include "base/logging.h"
+
+namespace adblock {
+
+static constexpr char kDomainSeparator[] = ",";
+
+// static
+absl::optional<ContentFilter> ContentFilter::FromString(
+ base::StringPiece domain_list,
+ FilterType filter_type,
+ base::StringPiece selector) {
+ DCHECK(filter_type == FilterType::ElemHide ||
+ filter_type == FilterType::ElemHideException ||
+ filter_type == FilterType::ElemHideEmulation);
+ if (selector.empty()) {
+ VLOG(1) << "[eyeo] Content filters require selector";
+ return {};
+ }
+
+ DomainOption domains =
+ DomainOption::FromString(domain_list, kDomainSeparator);
+
+ if (filter_type == FilterType::ElemHideEmulation) {
+ // ElemHideEmulation filters require that the domains have
+ // at least one subdomain or is localhost
+ domains.RemoveDomainsWithNoSubdomain();
+ if (domains.GetIncludeDomains().empty()) {
+ VLOG(1) << "[eyeo] ElemHideEmulation "
+ "filters require include domains.";
+ return {};
+ }
+ } else if (selector.size() < 3 && domains.UnrestrictedByDomain()) {
+ VLOG(1) << "[eyeo] Content filter is not specific enough. Must be longer "
+ "than 2 characters or restricted by domain.";
+ return {};
+ }
+
+ return ContentFilter(filter_type, selector, std::move(domains));
+}
+
+ContentFilter::ContentFilter(FilterType type,
+ base::StringPiece selector,
+ DomainOption domains)
+ : type(type),
+ selector(selector.data(), selector.size()),
+ domains(std::move(domains)) {}
+ContentFilter::~ContentFilter() = default;
+
+} // namespace adblock
diff --git a/components/adblock/core/converter/parser/content_filter.h b/components/adblock/core/converter/parser/content_filter.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/content_filter.h
@@ -0,0 +1,50 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_CONTENT_FILTER_H_
+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_CONTENT_FILTER_H_
+
+#include <string>
+
+#include "base/strings/string_piece.h"
+#include "components/adblock/core/converter/parser/domain_option.h"
+#include "components/adblock/core/converter/parser/filter_classifier.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
+
+namespace adblock {
+
+class ContentFilter {
+ public:
+ static absl::optional<ContentFilter> FromString(base::StringPiece domain_list,
+ FilterType type,
+ base::StringPiece selector);
+
+ ~ContentFilter();
+
+ const FilterType type;
+ const std::string selector;
+ const DomainOption domains;
+
+ private:
+ ContentFilter(FilterType type,
+ base::StringPiece selector,
+ DomainOption domains);
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_CONTENT_FILTER_H_
diff --git a/components/adblock/core/converter/parser/domain_option.cc b/components/adblock/core/converter/parser/domain_option.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/domain_option.cc
@@ -0,0 +1,114 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/converter/parser/content_filter.h"
+
+#include "base/logging.h"
+#include "base/ranges/algorithm.h"
+#include "base/strings/string_split.h"
+#include "base/strings/string_util.h"
+
+namespace adblock {
+
+namespace {
+
+void RemoveDuplicates(std::vector<std::string>& data) {
+ sort(data.begin(), data.end());
+ auto unique_end = unique(data.begin(), data.end());
+ data.erase(unique_end, data.end());
+}
+
+} // namespace
+
+DomainOption::DomainOption() {}
+
+// static
+DomainOption DomainOption::FromString(base::StringPiece domains_list,
+ base::StringPiece separator) {
+ static const std::string_view kExclusionPrefix = "~";
+ auto lower_domains_list = base::ToLowerASCII(domains_list);
+ auto domains =
+ base::SplitStringPiece(lower_domains_list, separator,
+ base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
+
+ const auto first_include_domain_it = std::partition(
+ domains.begin(), domains.end(), [](base::StringPiece domain) {
+ return base::StartsWith(domain, kExclusionPrefix);
+ });
+
+ std::vector<std::string> exclude_domains(domains.begin(),
+ first_include_domain_it);
+ std::vector<std::string> include_domains(first_include_domain_it,
+ domains.end());
+
+ // Remove the ~ prefix that indicates an exclude domain.
+ for (auto& domain : exclude_domains) {
+ base::RemoveChars(domain, kExclusionPrefix, &domain);
+ }
+
+ RemoveDuplicates(exclude_domains);
+ RemoveDuplicates(include_domains);
+
+ return DomainOption(std::move(exclude_domains), std::move(include_domains));
+}
+
+const std::vector<std::string>& DomainOption::GetExcludeDomains() const {
+ return exclude_domains_;
+}
+
+const std::vector<std::string>& DomainOption::GetIncludeDomains() const {
+ return include_domains_;
+}
+
+void DomainOption::RemoveDomainsWithNoSubdomain() {
+ exclude_domains_.erase(
+ base::ranges::remove_if(
+ exclude_domains_,
+ [](auto it) { return !HasSubdomainOrLocalhost(it); }),
+ exclude_domains_.end());
+
+ include_domains_.erase(
+ base::ranges::remove_if(
+ include_domains_,
+ [](auto it) { return !HasSubdomainOrLocalhost(it); }),
+ include_domains_.end());
+}
+
+bool DomainOption::UnrestrictedByDomain() const {
+ return base::ranges::count_if(exclude_domains_, &HasSubdomainOrLocalhost) ==
+ 0 &&
+ base::ranges::count_if(include_domains_, &HasSubdomainOrLocalhost) ==
+ 0;
+}
+
+DomainOption::DomainOption(std::vector<std::string> exclude_domains,
+ std::vector<std::string> include_domains)
+ : exclude_domains_(std::move(exclude_domains)),
+ include_domains_(std::move(include_domains)) {}
+DomainOption::DomainOption(const DomainOption& other) = default;
+DomainOption::DomainOption(DomainOption&& other) = default;
+DomainOption& DomainOption::operator=(const DomainOption& other) = default;
+DomainOption& DomainOption::operator=(DomainOption&& other) = default;
+DomainOption::~DomainOption() = default;
+
+// static
+bool DomainOption::HasSubdomainOrLocalhost(base::StringPiece domain) {
+ return (domain == "localhost") ||
+ (domain.find(".") != base::StringPiece::npos);
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/converter/parser/domain_option.h b/components/adblock/core/converter/parser/domain_option.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/domain_option.h
@@ -0,0 +1,59 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_DOMAIN_OPTION_H_
+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_DOMAIN_OPTION_H_
+
+#include <string>
+#include <vector>
+
+#include "base/strings/string_piece.h"
+
+namespace adblock {
+
+class DomainOption {
+ public:
+ DomainOption();
+
+ static DomainOption FromString(base::StringPiece domains_list,
+ base::StringPiece separator);
+
+ DomainOption(const DomainOption& other);
+ DomainOption(DomainOption&& other);
+ DomainOption& operator=(const DomainOption& other);
+ DomainOption& operator=(DomainOption&& other);
+ ~DomainOption();
+
+ const std::vector<std::string>& GetExcludeDomains() const;
+ const std::vector<std::string>& GetIncludeDomains() const;
+
+ void RemoveDomainsWithNoSubdomain();
+ bool UnrestrictedByDomain() const;
+
+ private:
+ DomainOption(std::vector<std::string> exclude_domains,
+ std::vector<std::string> include_domains);
+
+ static bool HasSubdomainOrLocalhost(base::StringPiece domain);
+
+ std::vector<std::string> exclude_domains_;
+ std::vector<std::string> include_domains_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_DOMAIN_OPTION_H_
diff --git a/components/adblock/core/converter/parser/filter_classifier.cc b/components/adblock/core/converter/parser/filter_classifier.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/filter_classifier.cc
@@ -0,0 +1,39 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/converter/parser/filter_classifier.h"
+
+namespace adblock {
+
+// static
+FilterType FilterClassifier::FilterTypeFromString(base::StringPiece separator) {
+ if (base::StartsWith(separator, kElemHideFilterSeparator)) {
+ return FilterType::ElemHide;
+ }
+ if (base::StartsWith(separator, kElemHideExceptionFilterSeparator)) {
+ return FilterType::ElemHideException;
+ }
+ if (base::StartsWith(separator, kElemHideEmulationFilterSeparator)) {
+ return FilterType::ElemHideEmulation;
+ }
+ if (base::StartsWith(separator, kSnippetFilterSeparator)) {
+ return FilterType::Snippet;
+ }
+ return FilterType::Url;
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/converter/parser/filter_classifier.h b/components/adblock/core/converter/parser/filter_classifier.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/filter_classifier.h
@@ -0,0 +1,46 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_FILTER_CLASSIFIER_H_
+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_FILTER_CLASSIFIER_H_
+
+#include "base/strings/string_piece.h"
+#include "base/strings/string_util.h"
+
+namespace adblock {
+
+static constexpr char kElemHideFilterSeparator[] = "##";
+static constexpr char kElemHideExceptionFilterSeparator[] = "#@#";
+static constexpr char kElemHideEmulationFilterSeparator[] = "#?#";
+static constexpr char kSnippetFilterSeparator[] = "#$#";
+
+enum class FilterType {
+ ElemHide,
+ ElemHideException,
+ ElemHideEmulation,
+ Snippet,
+ Url,
+};
+
+class FilterClassifier {
+ public:
+ static FilterType FilterTypeFromString(base::StringPiece separator);
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_FILTER_CLASSIFIER_H_
diff --git a/components/adblock/core/converter/parser/metadata.cc b/components/adblock/core/converter/parser/metadata.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/metadata.cc
@@ -0,0 +1,145 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/converter/parser/metadata.h"
+
+#include "base/logging.h"
+#include "base/ranges/algorithm.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_util.h"
+#include "third_party/re2/src/re2/re2.h"
+
+namespace adblock {
+
+// Parses the stream line by line until it finds comments. After the first non
+// comment line any upcoming comments will be skipped.
+// static
+absl::optional<Metadata> Metadata::FromStream(std::istream& filter_stream) {
+ static re2::RE2 comment_re("^!\\s*(.*?)\\s*:\\s*(.*)");
+
+ std::string homepage;
+ std::string title;
+ std::string version;
+ absl::optional<GURL> redirect_url;
+ base::TimeDelta expires = kDefaultExpirationInterval;
+
+ std::string line;
+ std::getline(filter_stream, line);
+ if (!IsValidAdblockHeader(line)) {
+ VLOG(1) << "[eyeo] Invalid filter list. Should start with [Adblock Plus "
+ "<x>.<y>].";
+ return {};
+ }
+
+ std::string key, value;
+ // Process stream until the line is a comment
+ auto position_in_stream = filter_stream.tellg();
+ while (std::getline(filter_stream, line)) {
+ base::TrimWhitespaceASCII(line, base::TRIM_ALL, &line);
+ if (!re2::RE2::FullMatch(line, comment_re, &key, &value)) {
+ break;
+ }
+
+ key = base::ToLowerASCII(key);
+ if (key == "homepage") {
+ homepage = value;
+ } else if (key == "redirect") {
+ auto url = GURL(value);
+ if (url.is_valid()) {
+ redirect_url = url;
+ } else {
+ VLOG(1) << "[eyeo] Invalid redirect URL: " << value
+ << ". Will not redirect.";
+ }
+ } else if (key == "title") {
+ title = value;
+ } else if (key == "version") {
+ version = value;
+ } else if (key == "expires") {
+ expires = ParseExpirationTime(value);
+ }
+
+ position_in_stream = filter_stream.tellg();
+ }
+
+ // NOTE: Rewind stream after last header line
+ filter_stream.seekg(position_in_stream, std::ios_base::beg);
+
+ return Metadata(std::move(homepage), std::move(title), std::move(version),
+ std::move(redirect_url), std::move(expires));
+}
+
+// static
+Metadata Metadata::Default() {
+ Metadata metadata;
+ return metadata;
+}
+
+Metadata::Metadata(std::string homepage,
+ std::string title,
+ std::string version,
+ absl::optional<GURL> redirect_url,
+ base::TimeDelta expires)
+ : homepage(std::move(homepage)),
+ title(std::move(title)),
+ version(std::move(version)),
+ redirect_url(std::move(redirect_url)),
+ expires(std::move(expires)) {}
+
+Metadata::Metadata() : expires(kDefaultExpirationInterval) {}
+Metadata::Metadata(const Metadata& other) = default;
+Metadata::Metadata(Metadata&& other) = default;
+Metadata::~Metadata() = default;
+
+// static
+bool Metadata::IsValidAdblockHeader(const std::string& adblock_header) {
+ static re2::RE2 adblock_header_re("^\\[Adblock.*\\]");
+ std::string adblock_header_trimmed;
+
+ base::TrimWhitespaceASCII(adblock_header, base::TRIM_ALL,
+ &adblock_header_trimmed);
+ if (!re2::RE2::FullMatch(re2::StringPiece(adblock_header_trimmed.data(),
+ adblock_header_trimmed.size()),
+ adblock_header_re)) {
+ return false;
+ }
+ return true;
+}
+
+// NOTE: This is done by the logic described here:
+// https://eyeo.gitlab.io/adblockplus/abc/core-spec/#appendix-filter-list-syntax
+// static
+base::TimeDelta Metadata::ParseExpirationTime(
+ const std::string& expiration_value) {
+ static re2::RE2 expiration_time_re("\\s*([0-9]+)\\s*(h)?.*");
+ std::string expiration_unit;
+ uint64_t expiration_time;
+
+ if (!re2::RE2::FullMatch(expiration_value, expiration_time_re,
+ &expiration_time, &expiration_unit)) {
+ VLOG(1) << "[eyeo] Invalid expiration time format: " << expiration_value
+ << ". Will use default value of "
+ << kDefaultExpirationInterval.InDays() << " days.";
+ return kDefaultExpirationInterval;
+ }
+ return base::ranges::clamp(expiration_unit == "h"
+ ? base::Hours(expiration_time)
+ : base::Days(expiration_time),
+ kMinExpirationInterval, kMaxExpirationInterval);
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/converter/parser/metadata.h b/components/adblock/core/converter/parser/metadata.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/metadata.h
@@ -0,0 +1,64 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_METADATA_H_
+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_METADATA_H_
+
+#include <istream>
+#include <string>
+
+#include "base/time/time.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+class Metadata {
+ public:
+ static absl::optional<Metadata> FromStream(std::istream& filter_stream);
+ static Metadata Default();
+
+ Metadata(const Metadata& other);
+ Metadata(Metadata&& other);
+ ~Metadata();
+
+ const std::string homepage;
+ const std::string title;
+ const std::string version;
+ const absl::optional<GURL> redirect_url;
+ const base::TimeDelta expires;
+
+ static constexpr base::TimeDelta kDefaultExpirationInterval = base::Days(5);
+ static constexpr base::TimeDelta kMaxExpirationInterval = base::Days(14);
+ static constexpr base::TimeDelta kMinExpirationInterval = base::Hours(1);
+
+ private:
+ Metadata(std::string homepage,
+ std::string title,
+ std::string version,
+ absl::optional<GURL> redirect_url,
+ base::TimeDelta expires);
+ Metadata();
+
+ static bool IsValidAdblockHeader(const std::string& adblock_header);
+ static base::TimeDelta ParseExpirationTime(
+ const std::string& expiration_value);
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_METADATA_H_
diff --git a/components/adblock/core/converter/parser/snippet_filter.cc b/components/adblock/core/converter/parser/snippet_filter.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/snippet_filter.cc
@@ -0,0 +1,62 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/converter/parser/snippet_filter.h"
+
+#include "base/logging.h"
+
+namespace adblock {
+
+static constexpr char kDomainSeparator[] = ",";
+
+// static
+absl::optional<SnippetFilter> SnippetFilter::FromString(
+ base::StringPiece domain_list,
+ base::StringPiece snippet) {
+ if (snippet.empty()) {
+ VLOG(1) << "[eyeo] Filter has no snippet script.";
+ return {};
+ }
+
+ DomainOption domains =
+ DomainOption::FromString(domain_list, kDomainSeparator);
+ // Snippet filters require that the domains have
+ // at least one subdomain or is localhost
+ domains.RemoveDomainsWithNoSubdomain();
+ if (domains.GetIncludeDomains().empty()) {
+ VLOG(1) << "Snippet "
+ "filters require include domains.";
+ return {};
+ }
+
+ auto snippet_script = SnippetTokenizer::Tokenize(snippet);
+ if (snippet_script.empty()) {
+ VLOG(1) << "Could not tokenize snippet script";
+ return {};
+ }
+
+ return SnippetFilter(std::move(snippet_script), std::move(domains));
+}
+
+SnippetFilter::SnippetFilter(SnippetTokenizer::SnippetScript snippet_script,
+ DomainOption domains)
+ : snippet_script(std::move(snippet_script)), domains(std::move(domains)) {}
+SnippetFilter::SnippetFilter(const SnippetFilter& other) = default;
+SnippetFilter::SnippetFilter(SnippetFilter&& other) = default;
+SnippetFilter::~SnippetFilter() = default;
+
+} // namespace adblock
diff --git a/components/adblock/core/converter/parser/snippet_filter.h b/components/adblock/core/converter/parser/snippet_filter.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/snippet_filter.h
@@ -0,0 +1,46 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_SNIPPET_FILTER_H_
+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_SNIPPET_FILTER_H_
+
+#include "components/adblock/core/converter/parser/domain_option.h"
+#include "components/adblock/core/converter/parser/snippet_tokenizer.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
+
+namespace adblock {
+
+class SnippetFilter {
+ public:
+ static absl::optional<SnippetFilter> FromString(base::StringPiece domain_list,
+ base::StringPiece snippet);
+
+ SnippetFilter(const SnippetFilter& other);
+ SnippetFilter(SnippetFilter&& other);
+ ~SnippetFilter();
+
+ const SnippetTokenizer::SnippetScript snippet_script;
+ const DomainOption domains;
+
+ private:
+ SnippetFilter(SnippetTokenizer::SnippetScript snippet_script,
+ DomainOption domains);
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_SNIPPET_FILTER_H_
diff --git a/components/adblock/core/converter/parser/snippet_tokenizer.cc b/components/adblock/core/converter/parser/snippet_tokenizer.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/snippet_tokenizer.cc
@@ -0,0 +1,103 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/converter/parser/snippet_tokenizer.h"
+
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_util.h"
+#include "base/strings/utf_string_conversion_utils.h"
+#include "base/third_party/icu/icu_utf.h"
+
+namespace adblock {
+
+SnippetTokenizer::SnippetScript SnippetTokenizer::Tokenize(
+ base::StringPiece input) {
+ SnippetScript script;
+ std::string token;
+ std::vector<std::string> arguments;
+ bool escape = false;
+ bool quotes_just_closed = false;
+ bool within_quotes = false;
+ for (char ch : input) {
+ if (escape) {
+ AddEscapeChar(token, ch);
+ escape = false;
+ quotes_just_closed = false;
+ } else if (ch == '\\') {
+ escape = true;
+ quotes_just_closed = false;
+ } else if (ch == '\'') {
+ within_quotes = !within_quotes;
+ quotes_just_closed = !within_quotes;
+ } else if (within_quotes || (ch != ';' && !base::IsAsciiWhitespace(ch))) {
+ token += ch;
+ quotes_just_closed = false;
+ } else {
+ AddArgument(arguments, token, quotes_just_closed);
+ if (ch == ';') {
+ AddFunctionCall(script, arguments, within_quotes, escape);
+ }
+ quotes_just_closed = false;
+ }
+ }
+ AddArgument(arguments, token, quotes_just_closed);
+ AddFunctionCall(script, arguments, within_quotes, escape);
+ return script;
+}
+
+void SnippetTokenizer::AddEscapeChar(std::string& token, char ch) {
+ switch (ch) {
+ case 'r':
+ token += '\r';
+ break;
+ case 'n':
+ token += '\n';
+ break;
+ case 't':
+ token += '\t';
+ break;
+ case 'u':
+ token += "\\u";
+ break;
+ default:
+ token += ch;
+ }
+}
+
+void SnippetTokenizer::AddArgument(std::vector<std::string>& arguments,
+ std::string& token,
+ bool quotes_just_closed) {
+ if (quotes_just_closed || !token.empty()) {
+ arguments.push_back(token);
+ token.clear();
+ }
+}
+
+void SnippetTokenizer::AddFunctionCall(SnippetScript& script,
+ std::vector<std::string>& arguments,
+ bool within_quotes,
+ bool escape) {
+ // if within quote whole script is invalid
+ // or if detected escape char but ended
+ if (arguments.empty() || within_quotes || escape) {
+ return;
+ }
+ script.push_back(arguments);
+ arguments.clear();
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/converter/parser/snippet_tokenizer.h b/components/adblock/core/converter/parser/snippet_tokenizer.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/snippet_tokenizer.h
@@ -0,0 +1,47 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_SNIPPET_TOKENIZER_H_
+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_SNIPPET_TOKENIZER_H_
+
+#include <string>
+#include <vector>
+
+#include "base/strings/string_piece.h"
+
+namespace adblock {
+
+class SnippetTokenizer {
+ public:
+ using SnippetScript = std::vector<std::vector<std::string>>;
+
+ static SnippetScript Tokenize(base::StringPiece input);
+
+ private:
+ static void AddEscapeChar(std::string& token, char ch);
+ static void AddArgument(std::vector<std::string>& arguments,
+ std::string& token,
+ bool quotes_just_closed);
+ static void AddFunctionCall(SnippetScript& script,
+ std::vector<std::string>& arguments,
+ bool within_quotes,
+ bool escape);
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_SNIPPET_TOKENIZER_H_
diff --git a/components/adblock/core/converter/parser/url_filter.cc b/components/adblock/core/converter/parser/url_filter.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/url_filter.cc
@@ -0,0 +1,218 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/converter/parser/url_filter.h"
+
+#include "base/logging.h"
+#include "base/strings/string_util.h"
+#include "components/adblock/core/common/regex_filter_pattern.h"
+#include "third_party/icu/source/i18n/unicode/regex.h"
+#include "third_party/re2/src/re2/re2.h"
+
+namespace adblock {
+namespace {
+
+// Converts patterns like ||abc.com/aa|bb into ||abc.com/aa%7Cbb.
+// Non-anchor pipe characters must be escaped to properly match components of
+// a URL. GURL escapes "|" as seen in url/url_canon_path.cc
+// Pipe characters in anchor position (beginning & end) must be left as-is, in
+// order for the tokenizer to see them as anchors.
+std::string SanitizePipeCharacters(std::string pattern) {
+ auto piece = base::StringPiece(pattern);
+ // Skip up to 2 leading | characters, they are treated as anchors. These
+ // may not be replaced by the escaped variant.
+ int number_of_left_anchors = 0;
+ if (base::StartsWith(piece, "|")) {
+ number_of_left_anchors++;
+ piece.remove_prefix(1);
+ }
+ if (base::StartsWith(piece, "|")) {
+ number_of_left_anchors++;
+ piece.remove_prefix(1);
+ }
+ // Skip up to one trailing | characters, this is the right anchor.
+ bool pattern_has_right_anchor = base::EndsWith(piece, "|");
+ if (pattern_has_right_anchor) {
+ piece.remove_suffix(1);
+ }
+ if (piece.find('|') == base::StringPiece::npos) {
+ // The most common case, pattern has no pipe characters apart from anchors.
+ // Avoid allocating new strings, pass the input out.
+ return pattern;
+ }
+ // Escape instances of | the same way GURL does it.
+ std::string output;
+ CHECK(base::ReplaceChars(piece, "|", R"(%7C)", &output));
+ // Re-add the unmodified anchors.
+ for (int i = 0; i < number_of_left_anchors; i++) {
+ output.insert(output.begin(), '|');
+ }
+ if (pattern_has_right_anchor) {
+ output.push_back('|');
+ }
+ return output;
+}
+
+} // namespace
+
+static constexpr char kAllowingSymbol[] = "@@";
+static constexpr char kOptionSymbol = '$';
+
+bool IsGenericFilterIsNotSpecificEnough(
+ base::StringPiece filter_str,
+ const absl::optional<UrlFilterOptions>& options) {
+ if (options.has_value() && (!options->Domains().GetExcludeDomains().empty() ||
+ !options->Domains().GetIncludeDomains().empty() ||
+ !options->Sitekeys().empty())) {
+ return false;
+ }
+ const size_t kMinLength = 4;
+ const auto trimmed_filter_str =
+ base::TrimString(filter_str, "|", base::TRIM_LEADING);
+ return trimmed_filter_str.size() < kMinLength &&
+ trimmed_filter_str.find('*') == std::string::npos;
+}
+
+// static
+absl::optional<UrlFilter> UrlFilter::FromString(std::string filter_str) {
+ absl::optional<UrlFilterOptions> options;
+ bool is_allowing = base::StartsWith(filter_str, kAllowingSymbol);
+ if (is_allowing) {
+ filter_str.erase(0, 2);
+ }
+
+ // TODO(DPD-1277): Support filters that contain multiple '$'
+ size_t option_selector_it = filter_str.rfind(kOptionSymbol);
+ if (option_selector_it != std::string::npos &&
+ !ExtractRegexFilterFromPattern(filter_str)) {
+ std::string option_list = filter_str.substr(option_selector_it + 1);
+ options = UrlFilterOptions::FromString(option_list);
+
+ if (!options.has_value()) {
+ return {};
+ }
+
+ if (options->Csp().has_value() && options->Csp().value().empty() &&
+ !is_allowing) {
+ VLOG(1) << "[eyeo] Invalid CSP filter. Blocking CSP filter requires "
+ "directives";
+ return {};
+ }
+
+ if (options->Headers().has_value() && options->Headers().value().empty() &&
+ !is_allowing) {
+ VLOG(1) << "[eyeo] Invalid header filter. Blocking header filter "
+ "requires directives";
+ return {};
+ }
+
+ if (!options->IsSubresource() && !options->ExceptionTypes().empty() &&
+ !is_allowing) {
+ VLOG(1) << "[eyeo] Exception options can only be used with allowing "
+ "filters";
+ return {};
+ }
+
+ filter_str.erase(option_selector_it);
+ }
+
+ if (filter_str.empty() && !options.has_value()) {
+ return {};
+ }
+
+ if (!ExtractRegexFilterFromPattern(filter_str)) {
+ // It's rare, but some filters contain pipe characters ("|") that are not
+ // anchors but are instead integral parts of the URL they intend to match.
+ // GURL escapes "|"" characters and we need to similarly escape such
+ // occurrences in the filter.
+ filter_str = SanitizePipeCharacters(std::move(filter_str));
+
+ // Most filters are case-insensitive, we may lowercase them along with
+ // lowercasing the URL during matching. This simplifies and speeds up the
+ // matching algorithm. Do not lowercase case-sensitive filters.
+ if ((!options || !options->IsMatchCase())) {
+ filter_str = base::ToLowerASCII(filter_str);
+ }
+ }
+
+ if (options.has_value() && options->Rewrite().has_value()) {
+ if (options->ThirdParty() ==
+ UrlFilterOptions::ThirdPartyOption::ThirdPartyOnly) {
+ VLOG(1) << "[eyeo] Rewrite filter must not be used together with the "
+ "third-party filter option";
+ return {};
+ }
+
+ if (!base::StartsWith(filter_str, "||") && filter_str != "*" &&
+ !filter_str.empty()) {
+ VLOG(1) << "[eyeo] Rewrite filter pattern must either be a star (*) "
+ "or start with a domain anchor double pipe (||)";
+ return {};
+ }
+
+ if (options->Domains().GetIncludeDomains().empty() &&
+ options->ThirdParty() == UrlFilterOptions::ThirdPartyOption::Ignore) {
+ VLOG(1) << "[eyeo] Rewrite filter must be restricted to at least one "
+ "domain using the domain filter option or have ~third-party "
+ "option";
+ return {};
+ }
+ }
+
+ if (IsGenericFilterIsNotSpecificEnough(filter_str, options)) {
+ VLOG(1) << "[eyeo] Generic url filter is not specific enough. Must be "
+ "longer than 3 characters or domain-specific.";
+ return {};
+ }
+
+ if (!options.has_value()) {
+ options = UrlFilterOptions();
+ }
+
+ return UrlFilter(is_allowing, std::move(filter_str),
+ std::move(options.value()));
+}
+
+UrlFilter::UrlFilter(bool is_allowing,
+ std::string pattern,
+ UrlFilterOptions options)
+ : is_allowing(is_allowing),
+ pattern(std::move(pattern)),
+ options(std::move(options)) {}
+UrlFilter::UrlFilter(const UrlFilter& other) = default;
+UrlFilter::UrlFilter(UrlFilter&& other) = default;
+UrlFilter::~UrlFilter() = default;
+
+// static
+bool UrlFilter::IsValidRegex(const std::string& pattern) {
+ re2::RE2::Options options;
+ options.set_never_capture(true);
+ options.set_log_errors(false);
+ const re2::RE2 re2_pattern(pattern.data(), options);
+ if (re2_pattern.ok()) {
+ return true;
+ }
+ const icu::UnicodeString icu_pattern(pattern.data(), pattern.length());
+ UErrorCode status = U_ZERO_ERROR;
+ const icu::RegexMatcher matcher(icu_pattern, 0u, status);
+ if (U_FAILURE(status)) {
+ return false;
+ }
+ return true;
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/converter/parser/url_filter.h b/components/adblock/core/converter/parser/url_filter.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/url_filter.h
@@ -0,0 +1,48 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_URL_FILTER_H_
+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_URL_FILTER_H_
+
+#include <string>
+
+#include "components/adblock/core/converter/parser/url_filter_options.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
+
+namespace adblock {
+
+class UrlFilter {
+ public:
+ static absl::optional<UrlFilter> FromString(std::string filter_str);
+
+ UrlFilter(const UrlFilter& other);
+ UrlFilter(UrlFilter&& other);
+ ~UrlFilter();
+
+ const bool is_allowing;
+ const std::string pattern;
+ const UrlFilterOptions options;
+
+ private:
+ UrlFilter(bool is_allowing, std::string pattern, UrlFilterOptions options);
+
+ static bool IsValidRegex(const std::string& pattern);
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_URL_FILTER_H_
diff --git a/components/adblock/core/converter/parser/url_filter_options.cc b/components/adblock/core/converter/parser/url_filter_options.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/url_filter_options.cc
@@ -0,0 +1,263 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/converter/parser/url_filter_options.h"
+
+#include "base/logging.h"
+#include "base/strings/string_split.h"
+#include "base/strings/string_util.h"
+#include "third_party/re2/src/re2/re2.h"
+
+namespace adblock {
+
+using SiteKeys = std::vector<SiteKey>;
+
+static constexpr char kDomainOrSitekeySeparator[] = "|";
+static constexpr char kInverseSymbol = '~';
+
+// static
+absl::optional<UrlFilterOptions> UrlFilterOptions::FromString(
+ const std::string& option_list) {
+ bool is_match_case = false;
+ bool is_popup_filter = false;
+ bool is_subresource = false;
+ ThirdPartyOption third_party = ThirdPartyOption::Ignore;
+ absl::optional<RewriteOption> rewrite;
+ DomainOption domains;
+ SiteKeys sitekeys;
+ absl::optional<std::string> csp;
+ absl::optional<std::string> headers;
+ uint32_t content_types = 0;
+ std::set<ExceptionType> exception_types;
+
+ bool is_inverse_option;
+ std::string key, value;
+ for (auto& option : base::SplitString(option_list, ",", base::KEEP_WHITESPACE,
+ base::SPLIT_WANT_NONEMPTY)) {
+ if (option.empty()) {
+ continue;
+ }
+
+ is_inverse_option = option.front() == kInverseSymbol;
+ if (is_inverse_option) {
+ option.erase(0, 1);
+ }
+
+ size_t delimiter_pos = option.find('=');
+ if (delimiter_pos != std::string::npos) {
+ key = option.substr(0, delimiter_pos);
+ value = option.substr(delimiter_pos + 1);
+ } else {
+ key = option;
+ }
+
+ key = base::ToLowerASCII(key);
+ base::RemoveChars(key, base::kWhitespaceASCII, &key);
+
+ if (key == "match-case") {
+ is_match_case = !is_inverse_option;
+ } else if (key == "popup") {
+ is_popup_filter = true;
+ } else if (key == "third-party") {
+ third_party = !is_inverse_option ? ThirdPartyOption::ThirdPartyOnly
+ : ThirdPartyOption::FirstPartyOnly;
+ } else if (key == "rewrite") {
+ rewrite = ParseRewrite(value);
+ if (!rewrite.has_value()) {
+ VLOG(1) << "[eyeo] Invalid rewrite filter value: " << value;
+ return {};
+ }
+ } else if (key == "domain") {
+ if (value.empty()) {
+ VLOG(1) << "[eyeo] Domain option has to have a value.";
+ return {};
+ }
+ domains = DomainOption::FromString(value, kDomainOrSitekeySeparator);
+ } else if (key == "sitekey") {
+ if (value.empty()) {
+ VLOG(1) << "[eyeo] Sitekey option has to have a value.";
+ return {};
+ }
+ sitekeys = ParseSitekeys(value);
+ } else if (key == "csp") {
+ if (!IsValidCsp(value)) {
+ VLOG(1) << "[eyeo] Invalid CSP filter directives: " << value;
+ return {};
+ }
+ csp = value;
+ } else if (key == "header") {
+ ParseHeaders(value);
+ headers = value;
+ } else {
+ ContentType content_type = ContentTypeFromString(key);
+ if (content_type != ContentType::Unknown) {
+ is_subresource = true;
+ if (is_inverse_option) {
+ if (content_types == 0) {
+ content_types = ContentType::Default;
+ }
+
+ content_types &= ~content_type;
+ } else {
+ content_types |= content_type;
+ }
+ continue;
+ }
+
+ auto exception_type = ExceptionTypeFromString(key);
+ if (exception_type) {
+ // NOTE: Inverse exception types are not supported
+ exception_types.emplace(exception_type.value());
+ continue;
+ }
+
+ VLOG(1) << "[eyeo] Unknown filter option: " << key;
+ return {};
+ }
+ }
+
+ if (exception_types.empty() && !is_popup_filter && !csp.has_value() &&
+ !rewrite.has_value() && !headers.has_value()) {
+ is_subresource = true;
+ }
+
+ if (content_types == 0) {
+ content_types = ContentType::Default;
+ }
+
+ return UrlFilterOptions(is_match_case, is_popup_filter, is_subresource,
+ third_party, content_types, std::move(rewrite),
+ std::move(domains), std::move(sitekeys),
+ std::move(csp), std::move(headers),
+ std::move(exception_types));
+}
+
+UrlFilterOptions::UrlFilterOptions()
+ : is_match_case_(false),
+ is_popup_filter_(false),
+ is_subresource_(true),
+ third_party_(ThirdPartyOption::Ignore),
+ content_types_(ContentType::Default) {}
+
+// static
+absl::optional<UrlFilterOptions::RewriteOption> UrlFilterOptions::ParseRewrite(
+ const std::string& rewrite_value) {
+ if (rewrite_value == "abp-resource:blank-text") {
+ return RewriteOption::AbpResource_BlankText;
+ } else if (rewrite_value == "abp-resource:blank-css") {
+ return RewriteOption::AbpResource_BlankCss;
+ } else if (rewrite_value == "abp-resource:blank-js") {
+ return RewriteOption::AbpResource_BlankJs;
+ } else if (rewrite_value == "abp-resource:blank-html") {
+ return RewriteOption::AbpResource_BlankHtml;
+ } else if (rewrite_value == "abp-resource:blank-mp3") {
+ return RewriteOption::AbpResource_BlankMp3;
+ } else if (rewrite_value == "abp-resource:blank-mp4") {
+ return RewriteOption::AbpResource_BlankMp4;
+ } else if (rewrite_value == "abp-resource:1x1-transparent-gif") {
+ return RewriteOption::AbpResource_TransparentGif1x1;
+ } else if (rewrite_value == "abp-resource:2x2-transparent-png") {
+ return RewriteOption::AbpResource_TransparentPng2x2;
+ } else if (rewrite_value == "abp-resource:3x2-transparent-png") {
+ return RewriteOption::AbpResource_TransparentPng3x2;
+ } else if (rewrite_value == "abp-resource:32x32-transparent-png") {
+ return RewriteOption::AbpResource_TransparentPng32x32;
+ } else {
+ return {};
+ }
+}
+
+// static
+SiteKeys UrlFilterOptions::ParseSitekeys(const std::string& sitekey_value) {
+ SiteKeys sitekeys;
+ for (auto& sitekey : base::SplitString(
+ base::ToUpperASCII(sitekey_value), kDomainOrSitekeySeparator,
+ base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY)) {
+ sitekeys.emplace_back(std::move(sitekey));
+ }
+ std::sort(sitekeys.begin(), sitekeys.end());
+ return sitekeys;
+}
+
+// static
+bool UrlFilterOptions::IsValidCsp(const std::string& csp_value) {
+ static re2::RE2 invalid_csp(
+ "(;|^) "
+ "?(base-uri|referrer|report-to|report-uri|upgrade-insecure-requests)\\b");
+
+ return !(re2::RE2::PartialMatch(
+ re2::StringPiece(csp_value.data(), csp_value.size()), invalid_csp));
+}
+
+// static
+void UrlFilterOptions::ParseHeaders(std::string& headers_value) {
+ // replace \x2c with actual ,
+ static re2::RE2 r1("([^\\\\])\\\\x2c");
+ re2::RE2::GlobalReplace(&headers_value, r1, "\\1,");
+
+ // remove extra escape for \\x2c which left
+ static re2::RE2 r2("\\\\x2c");
+ re2::RE2::GlobalReplace(&headers_value, r2, "x2c");
+}
+
+// static
+absl::optional<UrlFilterOptions::ExceptionType>
+UrlFilterOptions::ExceptionTypeFromString(const std::string& exception_type) {
+ if (exception_type == "document") {
+ return ExceptionType::Document;
+ } else if (exception_type == "genericblock") {
+ return ExceptionType::Genericblock;
+ } else if (exception_type == "elemhide") {
+ return ExceptionType::Elemhide;
+ } else if (exception_type == "generichide") {
+ return ExceptionType::Generichide;
+ }
+ return {};
+}
+
+UrlFilterOptions::UrlFilterOptions(
+ const bool is_match_case,
+ const bool is_popup_filter,
+ const bool is_subresource,
+ const ThirdPartyOption third_party,
+ const uint32_t content_types,
+ const absl::optional<RewriteOption> rewrite,
+ const DomainOption domains,
+ const SiteKeys sitekeys,
+ const absl::optional<std::string> csp,
+ const absl::optional<std::string> headers,
+ const std::set<ExceptionType> exception_types)
+ : is_match_case_(is_match_case),
+ is_popup_filter_(is_popup_filter),
+ is_subresource_(is_subresource),
+ third_party_(third_party),
+ content_types_(content_types),
+ rewrite_(std::move(rewrite)),
+ domains_(std::move(domains)),
+ sitekeys_(std::move(sitekeys)),
+ csp_(std::move(csp)),
+ headers_(std::move(headers)),
+ exception_types_(std::move(exception_types)) {}
+UrlFilterOptions::UrlFilterOptions(const UrlFilterOptions& other) = default;
+UrlFilterOptions::UrlFilterOptions(UrlFilterOptions&& other) = default;
+UrlFilterOptions& UrlFilterOptions::operator=(const UrlFilterOptions& other) =
+ default;
+UrlFilterOptions& UrlFilterOptions::operator=(UrlFilterOptions&& other) =
+ default;
+UrlFilterOptions::~UrlFilterOptions() = default;
+
+} // namespace adblock
diff --git a/components/adblock/core/converter/parser/url_filter_options.h b/components/adblock/core/converter/parser/url_filter_options.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/url_filter_options.h
@@ -0,0 +1,122 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_URL_FILTER_OPTIONS_H_
+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_URL_FILTER_OPTIONS_H_
+
+#include <set>
+#include <string>
+#include <vector>
+
+#include "components/adblock/core/common/content_type.h"
+#include "components/adblock/core/common/sitekey.h"
+#include "components/adblock/core/converter/parser/domain_option.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
+
+namespace adblock {
+
+class UrlFilterOptions {
+ public:
+ enum class ThirdPartyOption {
+ Ignore,
+ ThirdPartyOnly,
+ FirstPartyOnly,
+ };
+
+ enum class RewriteOption {
+ AbpResource_BlankText,
+ AbpResource_BlankCss,
+ AbpResource_BlankJs,
+ AbpResource_BlankHtml,
+ AbpResource_BlankMp3,
+ AbpResource_BlankMp4,
+ AbpResource_TransparentGif1x1,
+ AbpResource_TransparentPng2x2,
+ AbpResource_TransparentPng3x2,
+ AbpResource_TransparentPng32x32,
+ };
+
+ enum class ExceptionType {
+ Document,
+ Elemhide,
+ Generichide,
+ Genericblock,
+ };
+
+ static absl::optional<UrlFilterOptions> FromString(
+ const std::string& option_list);
+
+ UrlFilterOptions();
+ UrlFilterOptions(const UrlFilterOptions& other);
+ UrlFilterOptions(UrlFilterOptions&& other);
+ UrlFilterOptions& operator=(const UrlFilterOptions& other);
+ UrlFilterOptions& operator=(UrlFilterOptions&& other);
+ ~UrlFilterOptions();
+
+ inline bool IsMatchCase() const { return is_match_case_; }
+ inline bool IsPopup() const { return is_popup_filter_; }
+ inline bool IsSubresource() const { return is_subresource_; }
+ inline ThirdPartyOption ThirdParty() const { return third_party_; }
+ inline const absl::optional<RewriteOption>& Rewrite() const {
+ return rewrite_;
+ }
+ inline const DomainOption& Domains() const { return domains_; }
+ inline const std::vector<SiteKey>& Sitekeys() const { return sitekeys_; }
+ inline const absl::optional<std::string>& Csp() const { return csp_; }
+ inline const absl::optional<std::string>& Headers() const { return headers_; }
+ inline uint32_t ContentTypes() const { return content_types_; }
+ inline const std::set<ExceptionType>& ExceptionTypes() const {
+ return exception_types_;
+ }
+
+ private:
+ UrlFilterOptions(bool is_match_case,
+ bool is_popup_filter,
+ bool is_subresource,
+ ThirdPartyOption third_party,
+ uint32_t content_types,
+ absl::optional<RewriteOption> rewrite,
+ DomainOption domains,
+ std::vector<SiteKey> sitekeys,
+ absl::optional<std::string> csp,
+ absl::optional<std::string> headers,
+ std::set<ExceptionType> exception_types);
+
+ static absl::optional<RewriteOption> ParseRewrite(
+ const std::string& rewrite_value);
+ static std::vector<SiteKey> ParseSitekeys(const std::string& sitekey_value);
+ static bool IsValidCsp(const std::string& csp_value);
+ static void ParseHeaders(std::string& headers_value);
+ static absl::optional<ExceptionType> ExceptionTypeFromString(
+ const std::string& exception_type);
+
+ bool is_match_case_;
+ bool is_popup_filter_;
+ bool is_subresource_;
+ ThirdPartyOption third_party_;
+ uint32_t content_types_;
+ absl::optional<RewriteOption> rewrite_;
+ DomainOption domains_;
+ std::vector<SiteKey> sitekeys_;
+ absl::optional<std::string> csp_;
+ absl::optional<std::string> headers_;
+ std::set<ExceptionType> exception_types_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_URL_FILTER_OPTIONS_H_
diff --git a/components/adblock/core/converter/serializer/BUILD.gn b/components/adblock/core/converter/serializer/BUILD.gn
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/serializer/BUILD.gn
@@ -0,0 +1,50 @@
+#
+# This file is part of eyeo Chromium SDK,
+# Copyright (C) 2006-present eyeo GmbH
+#
+# eyeo Chromium SDK is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3 as
+# published by the Free Software Foundation.
+#
+# eyeo Chromium SDK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+
+source_set("serializer") {
+ sources = [
+ "filter_keyword_extractor.cc",
+ "filter_keyword_extractor.h",
+ "flatbuffer_serializer.cc",
+ "flatbuffer_serializer.h",
+ "serializer.h",
+ ]
+
+ public_deps = [
+ "//base",
+ "//components/adblock/core/common",
+ "//components/adblock/core:schema",
+ "//third_party/re2",
+ "//url",
+ ]
+
+ deps = [
+ "//components/adblock/core/converter/parser",
+ ]
+}
+
+source_set("unit_tests") {
+ testonly = true
+ sources = [
+ "test/filter_keyword_extractor_test.cc",
+ ]
+
+ deps = [
+ ":serializer",
+ "//testing/gmock",
+ "//testing/gtest",
+ ]
+}
diff --git a/components/adblock/core/converter/serializer/filter_keyword_extractor.cc b/components/adblock/core/converter/serializer/filter_keyword_extractor.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/serializer/filter_keyword_extractor.cc
@@ -0,0 +1,63 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/converter/serializer/filter_keyword_extractor.h"
+
+#include <algorithm>
+#include <cctype>
+
+#include "base/strings/string_util.h"
+#include "components/adblock/core/common/keyword_extractor_utils.h"
+#include "third_party/re2/src/re2/re2.h"
+
+namespace adblock {
+
+absl::optional<std::string> FilterKeywordExtractor::GetNextKeyword() {
+ std::string current_keyword;
+ do {
+ // In case that we are extracting keyword to store a filter
+ // we need to be careful as only one keyword will be used.
+ // So a keyword at the end of the filter might mismatch with keyword
+ // when trying to fetch the filter
+ // for example:
+ // a filter ||domain.cc/in_discovery should not retrieve "discovery" as a
+ // keyword because when we have a valid to block url like this one
+ // domain.cc/in_discovery5 returns with "discovery5" as
+ // one of the extracted keywords instead of "discovery"
+ const static re2::RE2 filter_keyword_extractor(
+ "([^a-zA-Z0-9%*][a-zA-Z0-9%]{2,})");
+ const static re2::RE2 has_a_following_keyword("(^[^a-zA-Z0-9%*])");
+ const static re2::RE2 following_keyword_consume("(^[a-zA-Z0-9%*]*)");
+ if (!RE2::FindAndConsume(&input_, filter_keyword_extractor,
+ &current_keyword)) {
+ return absl::nullopt;
+ }
+ if (!RE2::PartialMatch(input_, has_a_following_keyword)) {
+ RE2::Consume(&input_, following_keyword_consume);
+ current_keyword.clear();
+ continue;
+ }
+ current_keyword = current_keyword.substr(1);
+ } while (utils::IsBadKeyword(current_keyword));
+ return base::ToLowerASCII(current_keyword);
+}
+
+FilterKeywordExtractor::FilterKeywordExtractor(base::StringPiece url)
+ : input_(url.data(), url.size()), end_of_last_keyword_(input_.begin()) {}
+FilterKeywordExtractor::~FilterKeywordExtractor() = default;
+
+} // namespace adblock
diff --git a/components/adblock/core/converter/serializer/filter_keyword_extractor.h b/components/adblock/core/converter/serializer/filter_keyword_extractor.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/serializer/filter_keyword_extractor.h
@@ -0,0 +1,59 @@
+
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_FILTER_KEYWORD_EXTRACTOR_H_
+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_FILTER_KEYWORD_EXTRACTOR_H_
+
+#include <string>
+
+#include "absl/types/optional.h"
+#include "base/strings/string_piece.h"
+#include "third_party/re2/src/re2/re2.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+// Keywords allow selecting filters that could potentially match a URL faster
+// than an exhaustive search.
+// This is how it works:
+//
+// 1. A filter pattern is split into keywords via GetNextKeyword()
+// like so:
+// ||content.adblockplus.com/ad
+// becomes:
+// "content", "adblockplus"
+// - "com" is skipped because it's a very common component
+// - "ad" is skipped, explanation in .cc
+//
+// 2. Once we have keywords that describe the filter, the longest or most unique
+// keyword gets chosen to index the filter within the flatbuffer. In this case,
+// "adblockplus".
+class FilterKeywordExtractor {
+ public:
+ explicit FilterKeywordExtractor(base::StringPiece url);
+ ~FilterKeywordExtractor();
+ absl::optional<std::string> GetNextKeyword();
+
+ private:
+ re2::StringPiece input_;
+ re2::StringPiece::iterator end_of_last_keyword_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_FILTER_KEYWORD_EXTRACTOR_H_
diff --git a/components/adblock/core/converter/serializer/flatbuffer_serializer.cc b/components/adblock/core/converter/serializer/flatbuffer_serializer.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/serializer/flatbuffer_serializer.cc
@@ -0,0 +1,394 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/converter/serializer/flatbuffer_serializer.h"
+
+#include "base/logging.h"
+#include "base/notreached.h"
+#include "base/strings/string_piece.h"
+#include "base/strings/string_util.h"
+#include "components/adblock/core/common/adblock_constants.h"
+#include "components/adblock/core/common/regex_filter_pattern.h"
+#include "components/adblock/core/converter/parser/filter_classifier.h"
+#include "components/adblock/core/converter/serializer/filter_keyword_extractor.h"
+
+namespace adblock {
+
+class Buffer : public FlatbufferData {
+ public:
+ explicit Buffer(flatbuffers::DetachedBuffer&& buffer)
+ : buffer_(std::move(buffer)) {}
+
+ const uint8_t* data() const override { return buffer_.data(); }
+
+ size_t size() const override { return buffer_.size(); }
+
+ private:
+ flatbuffers::DetachedBuffer buffer_;
+};
+
+FlatbufferSerializer::FlatbufferSerializer(GURL subscription_url,
+ bool allow_privileged)
+ : subscription_url_(subscription_url), allow_privileged_(allow_privileged) {
+ SerializeMetadata(Metadata::Default());
+}
+
+FlatbufferSerializer::~FlatbufferSerializer() = default;
+
+std::unique_ptr<FlatbufferData>
+FlatbufferSerializer::GetSerializedSubscription() {
+ auto subscription = flat::CreateSubscription(
+ builder_, metadata_, WriteUrlFilterIndex(url_subresource_block_),
+ WriteUrlFilterIndex(url_subresource_allow_),
+ WriteUrlFilterIndex(url_popup_block_),
+ WriteUrlFilterIndex(url_popup_allow_),
+ WriteUrlFilterIndex(url_document_allow_),
+ WriteUrlFilterIndex(url_elemhide_allow_),
+ WriteUrlFilterIndex(url_generichide_allow_),
+ WriteUrlFilterIndex(url_genericblock_allow_),
+ WriteUrlFilterIndex(url_csp_block_), WriteUrlFilterIndex(url_csp_allow_),
+ WriteUrlFilterIndex(url_rewrite_block_),
+ WriteUrlFilterIndex(url_rewrite_allow_),
+ WriteUrlFilterIndex(url_header_block_),
+ WriteUrlFilterIndex(url_header_allow_),
+ WriteElemhideFilterIndex(elemhide_index_),
+ WriteElemhideFilterIndex(elemhide_emulation_index_),
+ WriteElemhideFilterIndex(elemhide_exception_index_),
+ WriteSnippetFilterIndex(snippet_index_));
+
+ builder_.Finish(subscription, flat::SubscriptionIdentifier());
+ return std::make_unique<Buffer>(builder_.Release());
+}
+
+void FlatbufferSerializer::SerializeMetadata(const Metadata metadata) {
+ metadata_ = flat::CreateSubscriptionMetadata(
+ builder_, builder_.CreateString(CurrentSchemaVersion()),
+ builder_.CreateString(subscription_url_.spec()),
+ builder_.CreateString(metadata.homepage),
+ builder_.CreateString(metadata.title),
+ builder_.CreateString(metadata.version),
+ metadata.expires.InMilliseconds());
+}
+
+void FlatbufferSerializer::SerializeContentFilter(
+ const ContentFilter content_filter) {
+ auto offset = flat::CreateElemHideFilter(
+ builder_, {},
+ content_filter.type == FilterType::ElemHideEmulation
+ ? builder_.CreateString(content_filter.selector.data(),
+ content_filter.selector.size())
+ : builder_.CreateString(EscapeSelector(content_filter.selector)),
+ CreateVectorOfSharedStrings(content_filter.domains.GetExcludeDomains()));
+
+ // Insert the filter under the correct index.
+ switch (content_filter.type) {
+ case FilterType::ElemHide:
+ AddElemhideFilterForDomains(
+ elemhide_index_, content_filter.domains.GetIncludeDomains(), offset);
+ break;
+ case FilterType::ElemHideException:
+ AddElemhideFilterForDomains(elemhide_exception_index_,
+ content_filter.domains.GetIncludeDomains(),
+ offset);
+ break;
+ case FilterType::ElemHideEmulation:
+ AddElemhideFilterForDomains(elemhide_emulation_index_,
+ content_filter.domains.GetIncludeDomains(),
+ offset);
+ break;
+ default:
+ break;
+ }
+}
+
+void FlatbufferSerializer::SerializeSnippetFilter(
+ const SnippetFilter snippet_filter) {
+ if (!allow_privileged_) {
+ VLOG(1) << "[eyeo] Snippet filters not allowed";
+ return;
+ }
+
+ std::vector<flatbuffers::Offset<adblock::flat::SnippetFunctionCall>> offsets;
+ offsets.reserve(snippet_filter.snippet_script.size());
+ for (const auto& cur : snippet_filter.snippet_script) {
+ offsets.push_back(flat::CreateSnippetFunctionCall(
+ builder_, builder_.CreateSharedString(cur.front()),
+ builder_.CreateVectorOfStrings(++cur.begin(), cur.end())));
+ }
+
+ auto offset = flat::CreateSnippetFilter(
+ builder_, {},
+ CreateVectorOfSharedStrings(snippet_filter.domains.GetExcludeDomains()),
+ builder_.CreateVector(offsets));
+ AddSnippetFilterForDomains(
+ snippet_index_, snippet_filter.domains.GetIncludeDomains(), offset);
+}
+
+void FlatbufferSerializer::SerializeUrlFilter(const UrlFilter url_filter) {
+ const auto& options = url_filter.options;
+ if (!allow_privileged_ && options.Headers().has_value()) {
+ VLOG(1) << "[eyeo] Header filters not allowed";
+ return;
+ }
+
+ auto offset = flat::CreateUrlFilter(
+ builder_, {}, builder_.CreateString(url_filter.pattern),
+ options.IsMatchCase(), options.ContentTypes(),
+ ThirdPartyOptionToFb(options.ThirdParty()),
+ CreateVectorOfSharedStringsFromSitekeys(options.Sitekeys()),
+ CreateVectorOfSharedStrings(options.Domains().GetIncludeDomains()),
+ CreateVectorOfSharedStrings(options.Domains().GetExcludeDomains()),
+ options.Rewrite().has_value()
+ ? flat::CreateRewrite(builder_,
+ RewriteOptionToFb(options.Rewrite().value()))
+ : flatbuffers::Offset<flat::Rewrite>(),
+ options.Csp().has_value()
+ ? builder_.CreateSharedString(options.Csp().value())
+ : flatbuffers::Offset<flatbuffers::String>(),
+ options.Headers().has_value()
+ ? builder_.CreateSharedString(options.Headers().value())
+ : flatbuffers::Offset<flatbuffers::String>());
+
+ const absl::optional<base::StringPiece> keyword_pattern =
+ ExtractRegexFilterFromPattern(url_filter.pattern).has_value()
+ ? absl::optional<base::StringPiece>()
+ : url_filter.pattern;
+
+ if (options.Headers().has_value()) {
+ AddUrlFilterToIndex(
+ url_filter.is_allowing ? url_header_allow_ : url_header_block_,
+ keyword_pattern, offset);
+ return;
+ }
+
+ if (options.IsPopup()) {
+ AddUrlFilterToIndex(
+ url_filter.is_allowing ? url_popup_allow_ : url_popup_block_,
+ keyword_pattern, offset);
+ }
+
+ if (options.Csp().has_value()) {
+ AddUrlFilterToIndex(
+ url_filter.is_allowing ? url_csp_allow_ : url_csp_block_,
+ keyword_pattern, offset);
+ }
+
+ if (options.Rewrite().has_value()) {
+ AddUrlFilterToIndex(
+ url_filter.is_allowing ? url_rewrite_allow_ : url_rewrite_block_,
+ keyword_pattern, offset);
+ }
+
+ if (options.IsSubresource()) {
+ AddUrlFilterToIndex(url_filter.is_allowing ? url_subresource_allow_
+ : url_subresource_block_,
+ keyword_pattern, offset);
+ }
+
+ for (auto exception_type : options.ExceptionTypes()) {
+ switch (exception_type) {
+ case UrlFilterOptions::ExceptionType::Genericblock:
+ AddUrlFilterToIndex(url_genericblock_allow_, keyword_pattern, offset);
+ break;
+ case UrlFilterOptions::ExceptionType::Generichide:
+ AddUrlFilterToIndex(url_generichide_allow_, keyword_pattern, offset);
+ break;
+ case UrlFilterOptions::ExceptionType::Document:
+ AddUrlFilterToIndex(url_document_allow_, keyword_pattern, offset);
+ break;
+ case UrlFilterOptions::ExceptionType::Elemhide:
+ AddUrlFilterToIndex(url_elemhide_allow_, keyword_pattern, offset);
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+void FlatbufferSerializer::AddUrlFilterToIndex(
+ UrlFilterIndex& index,
+ absl::optional<base::StringPiece> pattern_text,
+ flatbuffers::Offset<flat::UrlFilter> filter) {
+ const auto keyword =
+ pattern_text ? FindCandidateKeyword(index, *pattern_text) : "";
+ index[keyword].push_back(filter);
+}
+
+void FlatbufferSerializer::AddElemhideFilterForDomains(
+ ElemhideIndex& index,
+ const std::vector<std::string>& include_domains,
+ flatbuffers::Offset<flat::ElemHideFilter> filter) const {
+ if (include_domains.empty()) {
+ // This is a generic filter, we add those under "" index.
+ index[""].push_back(filter);
+ } else {
+ // Index this filter under each domain it is included for.
+ for (const auto& domain : include_domains) {
+ index[domain].push_back(filter);
+ }
+ }
+}
+
+void FlatbufferSerializer::AddSnippetFilterForDomains(
+ SnippetIndex& index,
+ const std::vector<std::string>& domains,
+ flatbuffers::Offset<flat::SnippetFilter> filter) const {
+ for (const auto& domain : domains) {
+ index[domain].push_back(filter);
+ }
+}
+
+flatbuffers::Offset<
+ flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>>
+FlatbufferSerializer::CreateVectorOfSharedStrings(
+ const std::vector<std::string>& strings) {
+ std::vector<flatbuffers::Offset<flatbuffers::String>> shared_strings;
+ std::transform(
+ strings.begin(), strings.end(), std::back_inserter(shared_strings),
+ [&](const std::string& s) { return builder_.CreateSharedString(s); });
+ return builder_.CreateVector(std::move(shared_strings));
+}
+
+flatbuffers::Offset<
+ flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>>
+FlatbufferSerializer::CreateVectorOfSharedStringsFromSitekeys(
+ const std::vector<SiteKey>& sitekeys) {
+ std::vector<flatbuffers::Offset<flatbuffers::String>> shared_strings;
+ std::transform(
+ sitekeys.begin(), sitekeys.end(), std::back_inserter(shared_strings),
+ [&](const SiteKey& s) { return builder_.CreateSharedString(s.value()); });
+ return builder_.CreateVector(std::move(shared_strings));
+}
+
+flatbuffers::Offset<
+ flatbuffers::Vector<flatbuffers::Offset<flat::UrlFiltersByKeyword>>>
+FlatbufferSerializer::WriteUrlFilterIndex(const UrlFilterIndex& index) {
+ std::vector<flatbuffers::Offset<flat::UrlFiltersByKeyword>> offsets;
+ offsets.reserve(index.size());
+
+ for (const auto& cur : index) {
+ offsets.push_back(flat::CreateUrlFiltersByKeyword(
+ builder_, builder_.CreateSharedString(cur.first),
+ builder_.CreateVector(cur.second)));
+ }
+
+ return builder_.CreateVector(offsets);
+}
+
+flatbuffers::Offset<
+ flatbuffers::Vector<flatbuffers::Offset<flat::ElemHideFiltersByDomain>>>
+FlatbufferSerializer::WriteElemhideFilterIndex(const ElemhideIndex& index) {
+ std::vector<flatbuffers::Offset<flat::ElemHideFiltersByDomain>> offsets;
+ offsets.reserve(index.size());
+
+ for (const auto& cur : index) {
+ offsets.push_back(flat::CreateElemHideFiltersByDomain(
+ builder_, builder_.CreateSharedString(cur.first),
+ builder_.CreateVector(cur.second)));
+ }
+ // Filters must be sorted (by domain), in order for LookupByKey() to work
+ // correctly. This can be also achieved by making ElemhideIndex an ordered
+ // map, but profiling shows sorting an unordered_map at the end is faster by
+ // about 15% (on exceptionrules.txt).
+ return builder_.CreateVectorOfSortedTables(offsets.data(), offsets.size());
+}
+
+flatbuffers::Offset<
+ flatbuffers::Vector<flatbuffers::Offset<flat::SnippetFiltersByDomain>>>
+FlatbufferSerializer::WriteSnippetFilterIndex(const SnippetIndex& index) {
+ std::vector<flatbuffers::Offset<flat::SnippetFiltersByDomain>> offsets;
+ offsets.reserve(index.size());
+
+ for (const auto& cur : index) {
+ offsets.push_back(flat::CreateSnippetFiltersByDomain(
+ builder_, builder_.CreateSharedString(cur.first),
+ builder_.CreateVector(cur.second)));
+ }
+ return builder_.CreateVector(offsets);
+}
+
+std::string FlatbufferSerializer::FindCandidateKeyword(
+ UrlFilterIndex& index,
+ base::StringPiece value) {
+ FilterKeywordExtractor keyword_extractor(value);
+ size_t last_size = std::numeric_limits<size_t>::max();
+ std::string keyword;
+ while (auto current_keyword = keyword_extractor.GetNextKeyword()) {
+ std::string candidate = *current_keyword;
+ auto it = index.find(candidate);
+ auto size = it != index.end() ? it->second.size() : 0;
+
+ if (size < last_size ||
+ (size == last_size && candidate.size() > keyword.size())) {
+ last_size = size;
+ keyword = candidate;
+ }
+ }
+ return keyword;
+}
+
+// static
+std::string FlatbufferSerializer::EscapeSelector(
+ const base::StringPiece& value) {
+ std::string escaped;
+ base::ReplaceChars(value, "{", "\\7b ", &escaped);
+ base::ReplaceChars(escaped, "}", "\\7d ", &escaped);
+ return escaped;
+}
+
+// static
+flat::ThirdParty FlatbufferSerializer::ThirdPartyOptionToFb(
+ UrlFilterOptions::ThirdPartyOption option) {
+ if (option == UrlFilterOptions::ThirdPartyOption::ThirdPartyOnly) {
+ return flat::ThirdParty_ThirdPartyOnly;
+ }
+ if (option == UrlFilterOptions::ThirdPartyOption::FirstPartyOnly) {
+ return flat::ThirdParty_FirstPartyOnly;
+ }
+ return flat::ThirdParty_Ignore;
+}
+
+// static
+flat::AbpResource FlatbufferSerializer::RewriteOptionToFb(
+ UrlFilterOptions::RewriteOption option) {
+ switch (option) {
+ case UrlFilterOptions::RewriteOption::AbpResource_BlankText:
+ return flat::AbpResource_BlankText;
+ case UrlFilterOptions::RewriteOption::AbpResource_BlankCss:
+ return flat::AbpResource_BlankCss;
+ case UrlFilterOptions::RewriteOption::AbpResource_BlankJs:
+ return flat::AbpResource_BlankJs;
+ case UrlFilterOptions::RewriteOption::AbpResource_BlankHtml:
+ return flat::AbpResource_BlankHtml;
+ case UrlFilterOptions::RewriteOption::AbpResource_BlankMp3:
+ return flat::AbpResource_BlankMp3;
+ case UrlFilterOptions::RewriteOption::AbpResource_BlankMp4:
+ return flat::AbpResource_BlankMp4;
+ case UrlFilterOptions::RewriteOption::AbpResource_TransparentGif1x1:
+ return flat::AbpResource_TransparentGif1x1;
+ case UrlFilterOptions::RewriteOption::AbpResource_TransparentPng2x2:
+ return flat::AbpResource_TransparentPng2x2;
+ case UrlFilterOptions::RewriteOption::AbpResource_TransparentPng3x2:
+ return flat::AbpResource_TransparentPng3x2;
+ case UrlFilterOptions::RewriteOption::AbpResource_TransparentPng32x32:
+ return flat::AbpResource_TransparentPng32x32;
+ default:
+ NOTREACHED();
+ }
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/converter/serializer/flatbuffer_serializer.h b/components/adblock/core/converter/serializer/flatbuffer_serializer.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/serializer/flatbuffer_serializer.h
@@ -0,0 +1,129 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_FLATBUFFER_SERIALIZER_H_
+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_FLATBUFFER_SERIALIZER_H_
+
+#include <map>
+#include <memory>
+#include <string>
+#include <unordered_map>
+#include <vector>
+
+#include "components/adblock/core/common/flatbuffer_data.h"
+#include "components/adblock/core/converter/parser/content_filter.h"
+#include "components/adblock/core/converter/parser/metadata.h"
+#include "components/adblock/core/converter/parser/snippet_filter.h"
+#include "components/adblock/core/converter/parser/url_filter.h"
+#include "components/adblock/core/converter/parser/url_filter_options.h"
+#include "components/adblock/core/converter/serializer/serializer.h"
+#include "components/adblock/core/schema/filter_list_schema_generated.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+class FlatbufferSerializer final : public Serializer {
+ public:
+ explicit FlatbufferSerializer(GURL subscription_url, bool allow_privileged);
+ ~FlatbufferSerializer() override;
+
+ std::unique_ptr<FlatbufferData> GetSerializedSubscription();
+
+ void SerializeMetadata(const Metadata metadata) override;
+ void SerializeContentFilter(const ContentFilter content_filter) override;
+ void SerializeSnippetFilter(const SnippetFilter snippet_filter) override;
+ void SerializeUrlFilter(const UrlFilter url_filter) override;
+
+ private:
+ using UrlFilterIndex =
+ std::map<std::string, std::vector<flatbuffers::Offset<flat::UrlFilter>>>;
+ using ElemhideIndex = std::unordered_map<
+ std::string,
+ std::vector<flatbuffers::Offset<flat::ElemHideFilter>>>;
+ using SnippetIndex =
+ std::map<std::string,
+ std::vector<flatbuffers::Offset<flat::SnippetFilter>>>;
+
+ void AddUrlFilterToIndex(UrlFilterIndex& index,
+ absl::optional<base::StringPiece> pattern_text,
+ flatbuffers::Offset<flat::UrlFilter> filter);
+ void AddElemhideFilterForDomains(
+ ElemhideIndex& index,
+ const std::vector<std::string>& include_domains,
+ flatbuffers::Offset<flat::ElemHideFilter> filter) const;
+ void AddSnippetFilterForDomains(
+ SnippetIndex& index,
+ const std::vector<std::string>& domains,
+ flatbuffers::Offset<flat::SnippetFilter> filter) const;
+
+ flatbuffers::Offset<
+ flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>>
+ CreateVectorOfSharedStrings(const std::vector<std::string>& strings);
+
+ flatbuffers::Offset<
+ flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>>
+ CreateVectorOfSharedStringsFromSitekeys(const std::vector<SiteKey>& sitekeys);
+
+ flatbuffers::Offset<
+ flatbuffers::Vector<flatbuffers::Offset<flat::UrlFiltersByKeyword>>>
+ WriteUrlFilterIndex(const UrlFilterIndex& index);
+
+ flatbuffers::Offset<
+ flatbuffers::Vector<flatbuffers::Offset<flat::ElemHideFiltersByDomain>>>
+ WriteElemhideFilterIndex(const ElemhideIndex& index);
+
+ flatbuffers::Offset<
+ flatbuffers::Vector<flatbuffers::Offset<flat::SnippetFiltersByDomain>>>
+ WriteSnippetFilterIndex(const SnippetIndex& index);
+
+ std::string FindCandidateKeyword(UrlFilterIndex& index,
+ base::StringPiece value);
+
+ static std::string EscapeSelector(const base::StringPiece& value);
+
+ static flat::ThirdParty ThirdPartyOptionToFb(
+ UrlFilterOptions::ThirdPartyOption option);
+ static flat::AbpResource RewriteOptionToFb(
+ UrlFilterOptions::RewriteOption option);
+
+ GURL subscription_url_;
+ bool allow_privileged_ = false;
+ flatbuffers::FlatBufferBuilder builder_;
+ flatbuffers::Offset<flat::SubscriptionMetadata> metadata_;
+ UrlFilterIndex url_subresource_block_;
+ UrlFilterIndex url_subresource_allow_;
+ UrlFilterIndex url_popup_block_;
+ UrlFilterIndex url_popup_allow_;
+ UrlFilterIndex url_document_allow_;
+ UrlFilterIndex url_elemhide_allow_;
+ UrlFilterIndex url_generichide_allow_;
+ UrlFilterIndex url_genericblock_allow_;
+ UrlFilterIndex url_csp_block_;
+ UrlFilterIndex url_csp_allow_;
+ UrlFilterIndex url_rewrite_block_;
+ UrlFilterIndex url_rewrite_allow_;
+ UrlFilterIndex url_header_allow_;
+ UrlFilterIndex url_header_block_;
+ ElemhideIndex elemhide_exception_index_;
+ ElemhideIndex elemhide_index_;
+ ElemhideIndex elemhide_emulation_index_;
+ SnippetIndex snippet_index_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_FLATBUFFER_SERIALIZER_H_
diff --git a/components/adblock/core/converter/serializer/serializer.h b/components/adblock/core/converter/serializer/serializer.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/serializer/serializer.h
@@ -0,0 +1,41 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_SERIALIZER_H_
+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_SERIALIZER_H_
+
+#include <memory>
+
+namespace adblock {
+
+class ContentFilter;
+class Metadata;
+class SnippetFilter;
+class UrlFilter;
+
+class Serializer {
+ public:
+ virtual ~Serializer() = default;
+ virtual void SerializeMetadata(const Metadata metadata) = 0;
+ virtual void SerializeContentFilter(const ContentFilter content_filter) = 0;
+ virtual void SerializeSnippetFilter(const SnippetFilter snippet_filter) = 0;
+ virtual void SerializeUrlFilter(const UrlFilter url_filter) = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_SERIALIZER_H_
diff --git a/components/adblock/core/features.cc b/components/adblock/core/features.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/features.cc
@@ -0,0 +1,25 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/features.h"
+
+namespace adblock {
+
+const base::Feature kAdblockPlusFeature{"AdblockPlus",
+ base::FEATURE_ENABLED_BY_DEFAULT};
+
+}
diff --git a/components/adblock/core/features.h b/components/adblock/core/features.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/features.h
@@ -0,0 +1,31 @@
+
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_FEATURES_H_
+#define COMPONENTS_ADBLOCK_CORE_FEATURES_H_
+
+#include "base/feature_list.h"
+
+namespace adblock {
+
+// Controls whether ad-blocking feature is enabled.
+extern const base::Feature kAdblockPlusFeature;
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_FEATURES_H_
diff --git a/components/adblock/core/schema/filter_list_schema.fbs b/components/adblock/core/schema/filter_list_schema.fbs
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/schema/filter_list_schema.fbs
@@ -0,0 +1,165 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+namespace adblock.flat;
+file_identifier "ABP2";
+
+// Filter types
+// ============
+
+enum AbpResource: byte {
+ BlankText,
+ BlankCss,
+ BlankJs,
+ BlankHtml,
+ BlankMp3,
+ BlankMp4,
+ TransparentGif1x1,
+ TransparentPng2x2,
+ TransparentPng3x2,
+ TransparentPng32x32
+}
+
+table Rewrite {
+ replace_with: AbpResource;
+}
+
+table Header {
+ header: string (required);
+ pattern: string;
+}
+
+enum ThirdParty: byte {
+ Ignore,
+ FirstPartyOnly,
+ ThirdPartyOnly,
+}
+
+enum ResourceType: uint32 {
+ Other = 1,
+ Script = 2,
+ Image = 4,
+ Stylesheet = 8,
+ Object = 16,
+ Subdocument = 32,
+ WebSocket = 128,
+ WebRtc = 256,
+ Ping = 1024,
+ XmlHttpRequest = 2048,
+ Media = 16384,
+ Font = 32768,
+ WebBundle = 65536
+}
+
+// usage note: you figure out if this is blocking or allowing based on if
+// it's stored in a 'block' or 'allow' list.
+table UrlFilter {
+ filter_text: string;
+ pattern: string (required);
+ match_case: bool;
+ resource_type: uint32; // this is a bitset mask of ResourceTypes
+ third_party: ThirdParty = Ignore;
+ sitekeys: [string];
+ include_domains: [string];
+ exclude_domains: [string];
+ rewrite: Rewrite;
+ csp_filter: string;
+ header_filter: string;
+ header: Header;
+}
+
+// usage note: you figure out if this is blocking or allowing based on if
+// it's stored in a 'block' or 'allow' list. You also need to use
+// where it's stored to determine its domains, and whether it needs elem
+// hide emulation or not.
+table ElemHideFilter {
+ filter_text: string;
+ selector: string (required);
+ exclude_domains: [string];
+}
+
+table SnippetFunctionCall {
+ command: string (required);
+ arguments: [string];
+}
+
+table SnippetFilter {
+ filter_text: string;
+ exclude_domains: [string];
+ script: [SnippetFunctionCall];
+}
+
+
+// Indexes
+// =======
+
+table UrlFiltersByKeyword {
+ keyword: string (key);
+ filter: [UrlFilter];
+}
+
+// encoder note: the same ElemHideFilter may appear in multiple
+// domains. Ensure that the same offset is stored rather than reencoding
+// the filter multiple times.
+table ElemHideFiltersByDomain {
+ domain: string (key);
+ filter: [ElemHideFilter];
+}
+
+// encoder note: the same SnippetFilter may appear in multiple
+// domains. Ensure that the same offset is stored rather than reencoding
+// the filter multiple times.
+table SnippetFiltersByDomain {
+ domain: string (key);
+ filter: [SnippetFilter];
+}
+
+
+// Root
+// ====
+
+table SubscriptionMetadata {
+ flatbuffers_schema_version: string;
+ url: string;
+ homepage: string;
+ title: string;
+ version: string;
+ expires: uint64;
+}
+
+table Subscription {
+ metadata: SubscriptionMetadata;
+ url_subresource_block: [UrlFiltersByKeyword];
+ url_subresource_allow: [UrlFiltersByKeyword];
+ url_popup_block: [UrlFiltersByKeyword];
+ url_popup_allow: [UrlFiltersByKeyword];
+ url_document_allow: [UrlFiltersByKeyword];
+ url_elemhide_allow: [UrlFiltersByKeyword];
+ url_generichide_allow: [UrlFiltersByKeyword];
+ url_genericblock_allow: [UrlFiltersByKeyword];
+ url_csp_block: [UrlFiltersByKeyword];
+ url_csp_allow: [UrlFiltersByKeyword];
+ url_rewrite_block: [UrlFiltersByKeyword];
+ url_rewrite_allow: [UrlFiltersByKeyword];
+ url_header_block: [UrlFiltersByKeyword];
+ url_header_allow: [UrlFiltersByKeyword];
+ elemhide: [ElemHideFiltersByDomain];
+ elemhide_emulation: [ElemHideFiltersByDomain];
+ elemhide_exception: [ElemHideFiltersByDomain];
+ snippet: [SnippetFiltersByDomain];
+}
+
+root_type Subscription;
diff --git a/components/adblock/core/session_stats.h b/components/adblock/core/session_stats.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/session_stats.h
@@ -0,0 +1,42 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SESSION_STATS_H_
+#define COMPONENTS_ADBLOCK_CORE_SESSION_STATS_H_
+
+#include <map>
+
+#include "components/keyed_service/core/keyed_service.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+/**
+ * @brief Stores statistics about blocked and allowed URLs
+ * in current session (runtime).
+ * Lives in the UI thread.
+ */
+class SessionStats : public KeyedService {
+ public:
+ virtual std::map<GURL, long> GetSessionAllowedAdsCount() const = 0;
+
+ virtual std::map<GURL, long> GetSessionBlockedAdsCount() const = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SESSION_STATS_H_
diff --git a/components/adblock/core/sitekey_storage.h b/components/adblock/core/sitekey_storage.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/sitekey_storage.h
@@ -0,0 +1,53 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SITEKEY_STORAGE_H_
+#define COMPONENTS_ADBLOCK_CORE_SITEKEY_STORAGE_H_
+
+#include <string>
+
+#include "absl/types/optional.h"
+#include "components/adblock/core/common/sitekey.h"
+#include "components/keyed_service/core/keyed_service.h"
+#include "net/http/http_response_headers.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+/**
+ * @brief Parses response headers in search for AdblockPlus sitekeys and stores
+ * them.
+ * Some filters can only be applied on pages that provide a valid sitekey.
+ * Storage is not persistent.
+ * Lives in the UI thread.
+ */
+class SitekeyStorage : public KeyedService {
+ public:
+ // Attempts to extract a sitekey from |headers|. If successful, the sitekey
+ // is added to storage and can be retrieved by |FindSiteKeyForAnyUrl|.
+ virtual void ProcessResponseHeaders(
+ const GURL& request_url,
+ const scoped_refptr<net::HttpResponseHeaders>& headers,
+ const std::string& user_agent) = 0;
+
+ virtual absl::optional<std::pair<GURL, SiteKey>> FindSiteKeyForAnyUrl(
+ const std::vector<GURL>& urls) const = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SITEKEY_STORAGE_H_
diff --git a/components/adblock/core/sitekey_storage_impl.cc b/components/adblock/core/sitekey_storage_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/sitekey_storage_impl.cc
@@ -0,0 +1,146 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/sitekey_storage_impl.h"
+
+#include "absl/types/optional.h"
+#include "base/base64.h"
+#include "base/logging.h"
+#include "base/trace_event/trace_event.h"
+#include "components/adblock/core/common/adblock_utils.h"
+#include "crypto/openssl_util.h"
+#include "crypto/signature_verifier.h"
+
+namespace adblock {
+
+SitekeyStorageImpl::SitekeyStorageImpl() {
+ crypto::EnsureOpenSSLInit();
+}
+
+SitekeyStorageImpl::~SitekeyStorageImpl() = default;
+
+void SitekeyStorageImpl::ProcessResponseHeaders(
+ const GURL& request_url,
+ const scoped_refptr<net::HttpResponseHeaders>& headers,
+ const std::string& user_agent) {
+ if (user_agent.empty()) {
+ LOG(WARNING) << "[eyeo] No user agent info";
+ return;
+ }
+
+ auto site_key = adblock::utils::GetSitekeyHeader(headers);
+ if (site_key.value().empty()) {
+ VLOG(1) << "[eyeo] No site key header";
+ return;
+ }
+
+ ProcessSiteKey(request_url, site_key, user_agent);
+}
+
+absl::optional<std::pair<GURL, SiteKey>>
+SitekeyStorageImpl::FindSiteKeyForAnyUrl(const std::vector<GURL>& urls) const {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ for (const auto& url : urls) {
+ auto elem = url_to_sitekey_map_.find(url);
+ if (elem != url_to_sitekey_map_.cend()) {
+ return {*elem};
+ }
+ }
+ return {};
+}
+
+void SitekeyStorageImpl::ProcessSiteKey(const GURL& request_url,
+ const SiteKey& site_key,
+ const std::string& user_agent) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(!site_key.value().empty());
+ auto site_key_pair = FindSiteKeyForAnyUrl({request_url});
+ if (site_key_pair.has_value() &&
+ site_key.value() == site_key_pair->second.value()) {
+ DVLOG(3) << "[eyeo] Public key already stored for url: "
+ << site_key_pair->first;
+ return;
+ }
+
+ GURL url = request_url.GetAsReferrer();
+ TRACE_EVENT1("eyeo", "ProcessSiteKeyImpl", "url", request_url.spec());
+ size_t delimiter = site_key.value().find("_");
+ if ((delimiter == std::string::npos) ||
+ (delimiter >= (site_key.value().length() - 1))) {
+ LOG(ERROR) << "[eyeo] Wrong format of site key header value: "
+ << site_key.value();
+ return;
+ }
+
+ std::string public_key = site_key.value().substr(0, delimiter);
+ std::string public_key_stripped = public_key.substr(0, public_key.find("=="));
+ std::string signature = site_key.value().substr(delimiter + 1);
+ DVLOG(1) << "[eyeo] Found site key header, public key: " << public_key
+ << ", signature: " << signature;
+
+ auto path_with_query = url.path();
+ if (url.has_query()) {
+ path_with_query += "?" + url.query();
+ }
+ DLOG(INFO) << "[eyeo] Calling IsSitekeySignatureValid(publicKey, signature, "
+ "uri, host,"
+ " userAgent) with arguments: ("
+ << public_key << ", " << signature << ", " << path_with_query
+ << ", " << url.host() << ", " << user_agent << ")";
+
+ std::string data = path_with_query + '\0' + url.host() + '\0' + user_agent;
+ if (IsSitekeySignatureValid(public_key, signature, data) &&
+ !request_url.is_empty() && request_url.is_valid() &&
+ !site_key.value().empty()) {
+ url_to_sitekey_map_[url] = SiteKey{public_key_stripped};
+ } else {
+ LOG(ERROR) << "[eyeo] Sitekey verification failed";
+ }
+}
+
+bool SitekeyStorageImpl::IsSitekeySignatureValid(
+ const std::string& public_key_b64,
+ const std::string& signature_b64,
+ const std::string& data) const {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ std::string signature;
+ if (!base::Base64Decode(signature_b64, &signature,
+ base::Base64DecodePolicy::kForgiving)) {
+ DLOG(WARNING) << "[eyeo] Signature decode failed";
+ return false;
+ }
+
+ std::string public_key;
+ if (!base::Base64Decode(public_key_b64, &public_key,
+ base::Base64DecodePolicy::kForgiving)) {
+ DLOG(WARNING) << "[eyeo] Public key decode failed";
+ return false;
+ }
+
+ crypto::SignatureVerifier verifier;
+ if (verifier.VerifyInit(crypto::SignatureVerifier::RSA_PKCS1_SHA1,
+ base::as_bytes(base::make_span(signature)),
+ base::as_bytes(base::make_span(public_key)))) {
+ verifier.VerifyUpdate(base::as_bytes(base::make_span(data)));
+ return verifier.VerifyFinal();
+ }
+
+ DLOG(WARNING) << "[eyeo] Verifier initialization failed";
+ return false;
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/sitekey_storage_impl.h b/components/adblock/core/sitekey_storage_impl.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/sitekey_storage_impl.h
@@ -0,0 +1,59 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SITEKEY_STORAGE_IMPL_H_
+#define COMPONENTS_ADBLOCK_CORE_SITEKEY_STORAGE_IMPL_H_
+
+#include <map>
+
+#include "absl/types/optional.h"
+
+#include "components/adblock/core/common/sitekey.h"
+#include "components/adblock/core/sitekey_storage.h"
+
+namespace adblock {
+
+class SitekeyStorageImpl final : public SitekeyStorage {
+ public:
+ SitekeyStorageImpl();
+ ~SitekeyStorageImpl() final;
+
+ void ProcessResponseHeaders(
+ const GURL& request_url,
+ const scoped_refptr<net::HttpResponseHeaders>& headers,
+ const std::string& user_agent) final;
+
+ absl::optional<std::pair<GURL, SiteKey>> FindSiteKeyForAnyUrl(
+ const std::vector<GURL>& urls) const final;
+
+ private:
+ void ProcessSiteKey(const GURL& request_url,
+ const SiteKey& site_key,
+ const std::string& user_agent);
+
+ bool IsSitekeySignatureValid(const std::string& public_key_b64,
+ const std::string& signature_b64,
+ const std::string& data) const;
+
+ SEQUENCE_CHECKER(sequence_checker_);
+ std::map<GURL, SiteKey> url_to_sitekey_map_;
+ base::WeakPtrFactory<SitekeyStorageImpl> weak_ptr_factory_{this};
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SITEKEY_STORAGE_IMPL_H_
diff --git a/components/adblock/core/subscription/BUILD.gn b/components/adblock/core/subscription/BUILD.gn
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/BUILD.gn
@@ -0,0 +1,178 @@
+#
+# This file is part of eyeo Chromium SDK,
+# Copyright (C) 2006-present eyeo GmbH
+#
+# eyeo Chromium SDK is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3 as
+# published by the Free Software Foundation.
+#
+# eyeo Chromium SDK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+
+source_set("subscription") {
+ sources = [
+ "conversion_executors.h",
+ "domain_splitter.cc",
+ "domain_splitter.h",
+ "filtering_configuration_maintainer.h",
+ "filtering_configuration_maintainer_impl.cc",
+ "filtering_configuration_maintainer_impl.h",
+ "installed_subscription.cc",
+ "installed_subscription.h",
+ "installed_subscription_impl.cc",
+ "installed_subscription_impl.h",
+ "ongoing_subscription_request.h",
+ "ongoing_subscription_request_impl.cc",
+ "ongoing_subscription_request_impl.h",
+ "pattern_matcher.cc",
+ "pattern_matcher.h",
+ "preloaded_subscription_provider.h",
+ "preloaded_subscription_provider_impl.cc",
+ "preloaded_subscription_provider_impl.h",
+ "regex_matcher.cc",
+ "regex_matcher.h",
+ "subscription.cc",
+ "subscription.h",
+ "subscription_collection.h",
+ "subscription_collection_impl.cc",
+ "subscription_collection_impl.h",
+ "subscription_config.cc",
+ "subscription_config.h",
+ "subscription_downloader.h",
+ "subscription_downloader_impl.cc",
+ "subscription_downloader_impl.h",
+ "subscription_persistent_metadata.h",
+ "subscription_persistent_metadata_impl.cc",
+ "subscription_persistent_metadata_impl.h",
+ "subscription_persistent_storage.h",
+ "subscription_persistent_storage_impl.cc",
+ "subscription_persistent_storage_impl.h",
+ "subscription_service.h",
+ "subscription_service_impl.cc",
+ "subscription_service_impl.h",
+ "subscription_updater.h",
+ "subscription_updater_impl.cc",
+ "subscription_updater_impl.h",
+ "subscription_validator.h",
+ "subscription_validator_impl.cc",
+ "subscription_validator_impl.h",
+ "url_keyword_extractor.cc",
+ "url_keyword_extractor.h",
+ ]
+
+ deps = [
+ "//components/adblock/core/common:utils",
+ "//components/adblock/core/converter",
+ "//components/resources:components_resources_grit",
+ "//net",
+ ]
+
+ public_deps = [
+ "//base",
+ "//components/adblock/core:schema",
+ "//components/adblock/core/common",
+ "//components/adblock/core/common",
+ "//components/adblock/core/configuration",
+ "//components/keyed_service/core",
+ "//components/prefs",
+ "//services/network/public/cpp",
+ "//third_party/abseil-cpp:absl",
+ "//third_party/re2",
+ "//url:url",
+ ]
+}
+
+source_set("test_support") {
+ testonly = true
+ sources = [
+ "test/load_gzipped_test_file.cc",
+ "test/load_gzipped_test_file.h",
+ "test/mock_conversion_executors.cc",
+ "test/mock_conversion_executors.h",
+ "test/mock_filtering_configuration_maintainer.cc",
+ "test/mock_filtering_configuration_maintainer.h",
+ "test/mock_installed_subscription.cc",
+ "test/mock_installed_subscription.h",
+ "test/mock_subscription.cc",
+ "test/mock_subscription.h",
+ "test/mock_subscription_collection.cc",
+ "test/mock_subscription_collection.h",
+ "test/mock_subscription_downloader.cc",
+ "test/mock_subscription_downloader.h",
+ "test/mock_subscription_persistent_metadata.cc",
+ "test/mock_subscription_persistent_metadata.h",
+ "test/mock_subscription_service.cc",
+ "test/mock_subscription_service.h",
+ "test/mock_subscription_updater.cc",
+ "test/mock_subscription_updater.h",
+ ]
+
+ public_deps = [
+ ":subscription",
+ "//components/adblock/core/configuration:test_support",
+ "//testing/gmock",
+ "//testing/gtest",
+ ]
+
+ deps = [ "//third_party/zlib/google:compression_utils" ]
+}
+
+source_set("unit_tests") {
+ testonly = true
+ sources = [
+ "test/filtering_configuration_maintainer_impl_test.cc",
+ "test/installed_subscription_impl_test.cc",
+ "test/ongoing_subscription_request_impl_test.cc",
+ "test/pattern_matcher_test.cc",
+ "test/preloaded_subscription_provider_impl_test.cc",
+ "test/subscription_collection_impl_test.cc",
+ "test/subscription_downloader_impl_test.cc",
+ "test/subscription_persistent_metadata_impl_test.cc",
+ "test/subscription_persistent_storage_impl_test.cc",
+ "test/subscription_service_impl_test.cc",
+ "test/subscription_updater_impl_test.cc",
+ "test/subscription_validator_impl_test.cc",
+ "test/url_keyword_extractor_test.cc",
+ ]
+
+ deps = [
+ ":test_support",
+ "//components/adblock/core",
+ "//components/adblock/core/configuration:test_support",
+ "//components/adblock/core/converter",
+ "//components/prefs:test_support",
+ "//components/resources:components_resources_grit",
+ "//components/sync_preferences:test_support",
+ "//net:test_support",
+ "//services/network:test_support",
+ "//testing/gtest",
+ ]
+}
+
+source_set("perf_tests") {
+ testonly = true
+ sources = [
+ "test/pattern_matcher_perftest.cc",
+ "test/regex_matcher_perftest.cc",
+ ]
+
+ deps = [
+ ":subscription",
+ ":test_support",
+ "//base",
+ "//components/adblock/core",
+ "//testing/gtest",
+ "//testing/perf",
+ ]
+
+ data = [
+ "//components/test/data/adblock/40_regex_patterns.txt.gz",
+ "//components/test/data/adblock/5000_patterns.txt.gz",
+ "//components/test/data/adblock/5000_url.txt.gz",
+ ]
+}
diff --git a/components/adblock/core/subscription/conversion_executors.h b/components/adblock/core/subscription/conversion_executors.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/conversion_executors.h
@@ -0,0 +1,50 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_CONVERSION_EXECUTORS_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_CONVERSION_EXECUTORS_H_
+
+#include <string>
+#include <vector>
+
+#include "base/files/file_path.h"
+#include "base/functional/bind.h"
+#include "base/functional/callback.h"
+#include "components/adblock/core/converter/flatbuffer_converter.h"
+#include "components/adblock/core/subscription/installed_subscription.h"
+
+#include "url/gurl.h"
+
+namespace adblock {
+
+class ConversionExecutors {
+ public:
+ // Synchronous
+ virtual scoped_refptr<InstalledSubscription> ConvertCustomFilters(
+ const std::vector<std::string>& filters) const = 0;
+ // Asynchronous
+ virtual void ConvertFilterListFile(
+ const GURL& subscription_url,
+ const base::FilePath& path,
+ base::OnceCallback<void(ConversionResult)> result_callback) const = 0;
+
+ virtual ~ConversionExecutors() = default;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_CONVERSION_EXECUTORS_H_
diff --git a/components/adblock/core/subscription/domain_splitter.cc b/components/adblock/core/subscription/domain_splitter.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/domain_splitter.cc
@@ -0,0 +1,46 @@
+
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/subscription/domain_splitter.h"
+
+#include "base/strings/string_util.h"
+
+namespace adblock {
+
+DomainSplitter::DomainSplitter(base::StringPiece domain)
+ : domain_(base::TrimString(domain, ".", base::TRIM_ALL)) {}
+
+absl::optional<base::StringPiece> DomainSplitter::FindNextSubdomain() {
+ const auto old_dot_pos = dot_pos_;
+ if (dot_pos_ < domain_.size()) {
+ // Find next dot in domain, for future iteration to consume.
+ dot_pos_ = domain_.find('.', dot_pos_ + 1);
+ // First run is special because we found no dots yet.
+ if (old_dot_pos == 0) {
+ return domain_;
+ }
+ // Return the part of domain *after* the dot we found in previous iteration.
+ return domain_.substr(old_dot_pos + 1);
+ }
+ // Reached end of domain_.
+ // Reset in anticipation of future calls to FindNextSubdomain().
+ dot_pos_ = 0;
+ return absl::nullopt;
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/subscription/domain_splitter.h b/components/adblock/core/subscription/domain_splitter.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/domain_splitter.h
@@ -0,0 +1,45 @@
+
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_DOMAIN_SPLITTER_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_DOMAIN_SPLITTER_H_
+
+#include "absl/types/optional.h"
+
+#include "base/strings/string_piece.h"
+
+namespace adblock {
+
+// When constructed with a full domain like "aaa.bbb.ccc.com", subsequent calls
+// to FindNextSubdomain() will yield "aaa.bbb.ccc.com", "bbb.ccc.com",
+// "ccc.com", "com" and then nullopt.
+class DomainSplitter {
+ public:
+ // |domain| must outlive this, no copy made.
+ explicit DomainSplitter(base::StringPiece domain);
+ // Returns reference to part of |domain|.
+ absl::optional<base::StringPiece> FindNextSubdomain();
+
+ private:
+ const base::StringPiece domain_;
+ size_t dot_pos_ = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_DOMAIN_SPLITTER_H_
diff --git a/components/adblock/core/subscription/filtering_configuration_maintainer.h b/components/adblock/core/subscription/filtering_configuration_maintainer.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/filtering_configuration_maintainer.h
@@ -0,0 +1,52 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_FILTERING_CONFIGURATION_MAINTAINER_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_FILTERING_CONFIGURATION_MAINTAINER_H_
+
+#include <memory>
+#include <vector>
+
+#include "base/memory/scoped_refptr.h"
+#include "components/adblock/core/subscription/subscription.h"
+#include "components/adblock/core/subscription/subscription_collection.h"
+
+namespace adblock {
+
+// Maintains a set of subscriptions needed to fulfil filtering requirements of a
+// single FilteringConfiguration.
+// Downloads and installs missing subscriptions, removes no-longer-needed
+// subscriptions, periodically updates installed subscriptions.
+class FilteringConfigurationMaintainer {
+ public:
+ virtual ~FilteringConfigurationMaintainer() = default;
+
+ // Returns a SubscriptionCollection that implements the blocking logic
+ // demanded by a FilteringConfiguration. This becomes part of a
+ // SubscriptionService::Snapshot.
+ virtual std::unique_ptr<SubscriptionCollection> GetSubscriptionCollection()
+ const = 0;
+
+ // Allows inspecting what Subscriptions are currently in use. This includes
+ // ongoing downloads, preloaded subscriptions and installed subscriptions.
+ virtual std::vector<scoped_refptr<Subscription>> GetCurrentSubscriptions()
+ const = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_FILTERING_CONFIGURATION_MAINTAINER_H_
diff --git a/components/adblock/core/subscription/filtering_configuration_maintainer_impl.cc b/components/adblock/core/subscription/filtering_configuration_maintainer_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/filtering_configuration_maintainer_impl.cc
@@ -0,0 +1,489 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/subscription/filtering_configuration_maintainer_impl.h"
+
+#include "base/functional/bind.h"
+#include "base/logging.h"
+#include "base/trace_event/common/trace_event_common.h"
+#include "base/trace_event/trace_event.h"
+#include "components/adblock/core/common/adblock_utils.h"
+#include "components/adblock/core/subscription/subscription_collection_impl.h"
+
+// TODO(mpawlowski): Remove in DPD-1154. This class should not need to know
+// anything about particular subscriptions, it should be generic.
+#include "components/adblock/core/subscription/subscription_config.h"
+
+namespace adblock {
+namespace {
+constexpr base::TimeDelta kDefaultHeadRequestExpirationInterval = base::Days(1);
+
+} // namespace
+
+class FilteringConfigurationMaintainerImpl::OngoingInstallation final
+ : public Subscription {
+ public:
+ explicit OngoingInstallation(const GURL& url) : url_(url) {}
+
+ GURL GetSourceUrl() const final { return url_; }
+ std::string GetTitle() const final { return {}; }
+ std::string GetCurrentVersion() const final { return {}; }
+ InstallationState GetInstallationState() const final {
+ return InstallationState::Installing;
+ }
+ base::Time GetInstallationTime() const final { return {}; }
+ base::TimeDelta GetExpirationInterval() const final { return {}; }
+
+ private:
+ friend class base::RefCountedThreadSafe<OngoingInstallation>;
+ ~OngoingInstallation() final = default;
+ GURL url_;
+};
+
+FilteringConfigurationMaintainerImpl::FilteringConfigurationMaintainerImpl(
+ FilteringConfiguration* configuration,
+ std::unique_ptr<SubscriptionPersistentStorage> storage,
+ std::unique_ptr<SubscriptionDownloader> downloader,
+ std::unique_ptr<PreloadedSubscriptionProvider>
+ preloaded_subscription_provider,
+ std::unique_ptr<SubscriptionUpdater> updater,
+ ConversionExecutors* conversion_executor,
+ SubscriptionPersistentMetadata* persistent_metadata,
+ SubscriptionUpdatedCallback subscription_updated_callback)
+ : configuration_(std::move(configuration)),
+ storage_(std::move(storage)),
+ downloader_(std::move(downloader)),
+ preloaded_subscription_provider_(
+ std::move(preloaded_subscription_provider)),
+ updater_(std::move(updater)),
+ conversion_executor_(conversion_executor),
+ persistent_metadata_(persistent_metadata),
+ subscription_updated_callback_(std::move(subscription_updated_callback)) {
+ DCHECK(configuration_->IsEnabled())
+ << "Disabled configurations should not be maintained";
+ configuration_->AddObserver(this);
+}
+
+FilteringConfigurationMaintainerImpl::~FilteringConfigurationMaintainerImpl() {
+ configuration_->RemoveObserver(this);
+}
+
+std::unique_ptr<SubscriptionCollection>
+FilteringConfigurationMaintainerImpl::GetSubscriptionCollection() const {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ std::vector<scoped_refptr<InstalledSubscription>> state = current_state_;
+ if (custom_filters_) {
+ state.push_back(custom_filters_);
+ }
+ base::ranges::move(
+ preloaded_subscription_provider_->GetCurrentPreloadedSubscriptions(),
+ std::back_inserter(state));
+ VLOG(2) << "[eyeo] FilteringConfiguration " << configuration_->GetName()
+ << " produces " << state.size() << " subscriptions for Snapshot";
+ return std::make_unique<SubscriptionCollectionImpl>(
+ state, configuration_->GetName());
+}
+
+std::vector<scoped_refptr<Subscription>>
+FilteringConfigurationMaintainerImpl::GetCurrentSubscriptions() const {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ // Result will contain the currently installed subscriptions:
+ std::vector<scoped_refptr<Subscription>> result;
+ base::ranges::copy(current_state_, std::back_inserter(result));
+ // And all preloaded subscriptions:
+ auto preloaded_subscriptions =
+ preloaded_subscription_provider_->GetCurrentPreloadedSubscriptions();
+ base::ranges::move(preloaded_subscriptions, std::back_inserter(result));
+ // Also, dummy subscriptions that represent ongoing installations (unless
+ // already present, in which case they'd represent updates).
+ base::ranges::copy_if(
+ ongoing_installations_, std::back_inserter(result),
+ [&](const auto& ongoing_installation) {
+ return base::ranges::find(result, ongoing_installation->GetSourceUrl(),
+ &Subscription::GetSourceUrl) == result.end();
+ });
+ return result;
+}
+
+void FilteringConfigurationMaintainerImpl::OnFilterListsChanged(
+ FilteringConfiguration* config) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK_EQ(config, configuration_);
+ if (status_ == StorageStatus::Initialized) {
+ InstallMissingSubscriptions();
+ RemoveUnneededSubscriptions();
+ }
+}
+
+void FilteringConfigurationMaintainerImpl::OnAllowedDomainsChanged(
+ FilteringConfiguration* config) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK_EQ(config, configuration_);
+ OnCustomFiltersChanged(config);
+}
+
+void FilteringConfigurationMaintainerImpl::OnCustomFiltersChanged(
+ FilteringConfiguration* config) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK_EQ(config, configuration_);
+ SetCustomFilters();
+}
+
+bool FilteringConfigurationMaintainerImpl::IsInitialized() const {
+ return status_ == StorageStatus::Initialized;
+}
+
+void FilteringConfigurationMaintainerImpl::InstallMissingSubscriptions() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(IsInitialized());
+ // Subscriptions that are either installed or being installed:
+ auto installed_subscriptions = GetReadySubscriptions();
+ base::ranges::copy(GetPendingSubscriptions(),
+ std::back_inserter(installed_subscriptions));
+ // Subscriptions that are demanded by the FilteringConfiguration:
+ auto demanded_subscriptions = configuration_->GetFilterLists();
+ base::ranges::sort(installed_subscriptions);
+ base::ranges::sort(demanded_subscriptions);
+ // Missing subscriptions is the difference between the two:
+ std::vector<GURL> missing_subscriptions;
+ base::ranges::set_difference(demanded_subscriptions, installed_subscriptions,
+ std::back_inserter(missing_subscriptions));
+ for (const auto& url : missing_subscriptions) {
+ DownloadAndInstallSubscription(url);
+ }
+}
+
+void FilteringConfigurationMaintainerImpl::RemoveUnneededSubscriptions() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(IsInitialized());
+ // Subscriptions that are either installed or being installed:
+ auto installed_subscriptions = GetReadySubscriptions();
+ base::ranges::copy(GetPendingSubscriptions(),
+ std::back_inserter(installed_subscriptions));
+ // Subscriptions that are demanded by the FilteringConfiguration:
+ auto demanded_subscriptions = configuration_->GetFilterLists();
+ base::ranges::sort(installed_subscriptions);
+ base::ranges::sort(demanded_subscriptions);
+ installed_subscriptions.erase(std::unique(installed_subscriptions.begin(),
+ installed_subscriptions.end()),
+ installed_subscriptions.end());
+ // Unneeded subscriptions is the difference between the two:
+ std::vector<GURL> unneeded_subscriptions;
+ base::ranges::set_difference(installed_subscriptions, demanded_subscriptions,
+ std::back_inserter(unneeded_subscriptions));
+ for (const auto& url : unneeded_subscriptions) {
+ UninstallSubscription(url);
+ }
+}
+
+void FilteringConfigurationMaintainerImpl::InitializeStorage() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(!IsInitialized());
+ VLOG(1) << "[eyeo] FilteringConfigurationMaintainer starting.";
+ TRACE_EVENT_ASYNC_BEGIN1(
+ "eyeo", "FilteringConfigurationMaintainerImpl::InitializeStorage",
+ TRACE_ID_LOCAL(this), "name", configuration_->GetName());
+ storage_->LoadSubscriptions(
+ base::BindOnce(&FilteringConfigurationMaintainerImpl::StorageInitialized,
+ weak_ptr_factory_.GetWeakPtr()));
+}
+
+void FilteringConfigurationMaintainerImpl::StorageInitialized(
+ std::vector<scoped_refptr<InstalledSubscription>> loaded_subscriptions) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(!IsInitialized());
+ DCHECK(current_state_.empty())
+ << "current state was modified before initial state was loaded";
+ current_state_ = std::move(loaded_subscriptions);
+ status_ = StorageStatus::Initialized;
+ // SubscriptionPersistentStorage allows multiple Subscriptions with same URL,
+ // which is a legal transitive state during ex. installing an update.
+ // However, current_state_ should always contain only
+ // one subscription with a given URL. This normally happens automatically by
+ // virtue of |SubscriptionAddedToStorage| calling |UninstallSubscription| but
+ // this invariant might not hold if ex. the application exits after
+ // SubscriptionPersistentStorage stores the update but before
+ // SubscriptionServiceImpl uninstalls the old version. It's difficult to
+ // make installing subscription updates atomic, so solve potential race
+ // condition here:
+ RemoveDuplicateSubscriptions();
+ // Synchronize current state with the demands of the FilteringConfiguration:
+ OnFilterListsChanged(configuration_);
+ OnCustomFiltersChanged(configuration_);
+ // Start periodic updates:
+ updater_->StartSchedule(
+ base::BindRepeating(&FilteringConfigurationMaintainerImpl::RunUpdateCheck,
+ weak_ptr_factory_.GetWeakPtr()));
+ TRACE_EVENT_ASYNC_END1(
+ "eyeo", "FilteringConfigurationMaintainerImpl::InitializeStorage",
+ TRACE_ID_LOCAL(this), "name", configuration_->GetName());
+}
+
+void FilteringConfigurationMaintainerImpl::RemoveDuplicateSubscriptions() {
+ // std::sort + std::unique is not good for this use case, as we need to
+ // perform actions on the duplicates, not just discard them, and std::unique
+ // leaves moved elements in unspecified state. std::adjacent_find or
+ // std::unique_copy could be used as well, but using a helper std::set seems
+ // simplest.
+ const auto comparator = [](const auto& lhs, const auto& rhs) {
+ return lhs->GetSourceUrl() < rhs->GetSourceUrl();
+ };
+ std::set<scoped_refptr<InstalledSubscription>, decltype(comparator)>
+ unique_subscriptions(comparator);
+ for (auto subscription : current_state_) {
+ if (!unique_subscriptions.insert(subscription).second) {
+ // This element already exists in the set, we found a duplicate.
+ storage_->RemoveSubscription(subscription);
+ }
+ }
+ current_state_.assign(unique_subscriptions.begin(),
+ unique_subscriptions.end());
+}
+
+void FilteringConfigurationMaintainerImpl::RunUpdateCheck() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ VLOG(1) << "[eyeo] Running update check";
+ for (auto& subscription : current_state_) {
+ // Update subscriptions that are expired and aren't already in the process
+ // of installing an update.
+ const auto& url = subscription->GetSourceUrl();
+ if (persistent_metadata_->IsExpired(url) &&
+ base::ranges::find(ongoing_installations_, url,
+ &Subscription::GetSourceUrl) ==
+ ongoing_installations_.end()) {
+ VLOG(1) << "[eyeo] Updating expired subscription " << url;
+ DownloadAndInstallSubscription(url);
+ } else {
+ VLOG(1) << "[eyeo] Skipping update of " << url << ": "
+ << (!persistent_metadata_->IsExpired(url)
+ ? "not expired yet"
+ : "already downloading");
+ }
+ }
+ // TODO(mpawlowski): remove after DPD-1154. If Acceptable Ads is not
+ // installed, but it would have been expired, send HEAD request for Acceptable
+ // Ads filter list just to count the user, without the intention of
+ // downloading it.
+ // This is to support legacy behavior.
+ if (configuration_->GetName() == "adblock" &&
+ base::ranges::none_of(GetCurrentSubscriptions(),
+ [](const auto& subscription) {
+ return subscription->GetSourceUrl() ==
+ AcceptableAdsUrl();
+ }) &&
+ persistent_metadata_->IsExpired(AcceptableAdsUrl())) {
+ PingAcceptableAds();
+ }
+}
+
+void FilteringConfigurationMaintainerImpl::DownloadAndInstallSubscription(
+ const GURL& subscription_url) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(IsInitialized());
+ const bool is_an_update =
+ base::ranges::any_of(current_state_, [&](const auto candidate) {
+ return candidate->GetSourceUrl() == subscription_url;
+ });
+
+ // We do not retry downloading subscription updates, they will be retried
+ // by the SubscriptionUpdater in due time anyway.
+ auto retry_policy =
+ is_an_update ? SubscriptionDownloader::RetryPolicy::DoNotRetry
+ : SubscriptionDownloader::RetryPolicy::RetryUntilSucceeded;
+
+ auto ongoing_installation =
+ base::MakeRefCounted<OngoingInstallation>(subscription_url);
+ ongoing_installations_.insert(ongoing_installation);
+ UpdatePreloadedSubscriptionProvider();
+
+ downloader_->StartDownload(
+ subscription_url, retry_policy,
+ base::BindOnce(
+ &FilteringConfigurationMaintainerImpl::OnSubscriptionDataAvailable,
+ weak_ptr_factory_.GetWeakPtr(), ongoing_installation));
+}
+
+void FilteringConfigurationMaintainerImpl::OnSubscriptionDataAvailable(
+ scoped_refptr<OngoingInstallation> ongoing_installation,
+ std::unique_ptr<FlatbufferData> raw_data) {
+ if (ongoing_installations_.find(ongoing_installation) ==
+ ongoing_installations_.end()) {
+ // Installation was canceled.
+ UpdatePreloadedSubscriptionProvider();
+ return;
+ }
+ if (!raw_data) {
+ // Download failed.
+ ongoing_installations_.erase(ongoing_installation);
+ UpdatePreloadedSubscriptionProvider();
+ return;
+ }
+
+ storage_->StoreSubscription(
+ std::move(raw_data),
+ base::BindOnce(
+ &FilteringConfigurationMaintainerImpl::SubscriptionAddedToStorage,
+ weak_ptr_factory_.GetWeakPtr(), ongoing_installation));
+}
+
+void FilteringConfigurationMaintainerImpl::SubscriptionAddedToStorage(
+ scoped_refptr<OngoingInstallation> ongoing_installation,
+ scoped_refptr<InstalledSubscription> subscription) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ if (ongoing_installations_.find(ongoing_installation) ==
+ ongoing_installations_.end()) {
+ // Installation was canceled. We must now remove the subscription from
+ // storage. Do not add it to |current_state|.
+ storage_->RemoveSubscription(subscription);
+ UpdatePreloadedSubscriptionProvider();
+ return;
+ }
+ ongoing_installations_.erase(ongoing_installation);
+
+ if (!subscription) {
+ // There was an error adding subscription to storage.
+ LOG(WARNING) << "[eyeo] Failed to add subscription, current number "
+ << "of subscriptions: " << current_state_.size();
+ UpdatePreloadedSubscriptionProvider();
+ return;
+ }
+ // Remove any subscription that already exists with the same URL
+ bool subscription_existed =
+ UninstallSubscriptionInternal(subscription->GetSourceUrl());
+ // Add the new subscription
+ current_state_.push_back(subscription);
+ if (subscription_existed) {
+ VLOG(1) << "[eyeo] Updated subscription " << subscription->GetSourceUrl()
+ << ", current version " << subscription->GetCurrentVersion();
+ } else {
+ VLOG(1) << "[eyeo] Added subscription " << subscription->GetSourceUrl()
+ << ", current number of subscriptions: " << current_state_.size();
+ }
+ UpdatePreloadedSubscriptionProvider();
+ // Notify "observer"
+ subscription_updated_callback_.Run(subscription->GetSourceUrl());
+}
+
+void FilteringConfigurationMaintainerImpl::PingAcceptableAds() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(IsInitialized());
+ downloader_->DoHeadRequest(
+ AcceptableAdsUrl(),
+ base::BindOnce(&FilteringConfigurationMaintainerImpl::OnHeadRequestDone,
+ weak_ptr_factory_.GetWeakPtr()));
+}
+
+void FilteringConfigurationMaintainerImpl::OnHeadRequestDone(
+ const std::string version) {
+ if (version.empty()) {
+ return;
+ }
+ persistent_metadata_->SetVersion(AcceptableAdsUrl(), version);
+ persistent_metadata_->SetExpirationInterval(
+ AcceptableAdsUrl(), kDefaultHeadRequestExpirationInterval);
+}
+
+void FilteringConfigurationMaintainerImpl::UninstallSubscription(
+ const GURL& subscription_url) {
+ DVLOG(1) << "[eyeo] Removing subscription " << subscription_url;
+ if (!UninstallSubscriptionInternal(subscription_url)) {
+ VLOG(1) << "[eyeo] Nothing to remove, subscription not installed "
+ << subscription_url;
+ return;
+ }
+ if (subscription_url != AcceptableAdsUrl()) {
+ // Remove metadata associated with the subscription. Retain (forever)
+ // metadata of the Acceptable Ads subscription even when it's no longer
+ // installed, to allow continued HEAD-only pings for user counting purposes.
+ persistent_metadata_->RemoveMetadata(subscription_url);
+ }
+ UpdatePreloadedSubscriptionProvider();
+ VLOG(1) << "[eyeo] Removed subscription " << subscription_url;
+}
+
+bool FilteringConfigurationMaintainerImpl::UninstallSubscriptionInternal(
+ const GURL& subscription_url) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(IsInitialized());
+ bool subscription_removed = false;
+ auto it = base::ranges::find(current_state_, subscription_url,
+ &Subscription::GetSourceUrl);
+ if (it != current_state_.end()) {
+ storage_->RemoveSubscription(*it);
+ current_state_.erase(it);
+ subscription_removed = true;
+ }
+
+ auto ongoing_installation_it = base::ranges::find(
+ ongoing_installations_, subscription_url, &Subscription::GetSourceUrl);
+ if (ongoing_installation_it != ongoing_installations_.end()) {
+ ongoing_installations_.erase(ongoing_installation_it);
+ DVLOG(1) << "[eyeo] Canceling installation of subscription "
+ << subscription_url;
+ downloader_->CancelDownload(subscription_url);
+ DVLOG(2) << "[eyeo] Canceled installation of subscription "
+ << subscription_url;
+ subscription_removed = true;
+ }
+ return subscription_removed;
+}
+
+void FilteringConfigurationMaintainerImpl::SetCustomFilters() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+ std::vector<std::string> filters = configuration_->GetCustomFilters();
+ base::ranges::transform(configuration_->GetAllowedDomains(),
+ std::back_inserter(filters),
+ &utils::CreateDomainAllowlistingFilter);
+ for (const auto& filter : filters) {
+ VLOG(1) << "[eyeo] Setting custom filter: " << filter;
+ }
+ if (filters.empty()) {
+ custom_filters_.reset();
+ return;
+ }
+
+ custom_filters_ = conversion_executor_->ConvertCustomFilters(filters);
+}
+
+void FilteringConfigurationMaintainerImpl::
+ UpdatePreloadedSubscriptionProvider() {
+ preloaded_subscription_provider_->UpdateSubscriptions(
+ GetReadySubscriptions(), GetPendingSubscriptions());
+}
+
+std::vector<GURL> FilteringConfigurationMaintainerImpl::GetReadySubscriptions()
+ const {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ std::vector<GURL> result;
+ result.reserve(current_state_.size());
+ base::ranges::transform(current_state_, std::back_inserter(result),
+ &Subscription::GetSourceUrl);
+ return result;
+}
+
+std::vector<GURL>
+FilteringConfigurationMaintainerImpl::GetPendingSubscriptions() const {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ std::vector<GURL> result;
+ result.reserve(ongoing_installations_.size());
+ base::ranges::transform(ongoing_installations_, std::back_inserter(result),
+ &Subscription::GetSourceUrl);
+ return result;
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/subscription/filtering_configuration_maintainer_impl.h b/components/adblock/core/subscription/filtering_configuration_maintainer_impl.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/filtering_configuration_maintainer_impl.h
@@ -0,0 +1,119 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_FILTERING_CONFIGURATION_MAINTAINER_IMPL_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_FILTERING_CONFIGURATION_MAINTAINER_IMPL_H_
+
+#include "base/functional/callback.h"
+#include "base/functional/callback_forward.h"
+#include "base/memory/raw_ptr.h"
+#include "base/memory/weak_ptr.h"
+#include "components/adblock/core/configuration/filtering_configuration.h"
+#include "components/adblock/core/subscription/conversion_executors.h"
+#include "components/adblock/core/subscription/filtering_configuration_maintainer.h"
+#include "components/adblock/core/subscription/preloaded_subscription_provider.h"
+#include "components/adblock/core/subscription/subscription_downloader.h"
+#include "components/adblock/core/subscription/subscription_persistent_metadata.h"
+#include "components/adblock/core/subscription/subscription_persistent_storage.h"
+#include "components/adblock/core/subscription/subscription_updater.h"
+
+namespace adblock {
+
+class FilteringConfigurationMaintainerImpl
+ : public FilteringConfigurationMaintainer,
+ public FilteringConfiguration::Observer {
+ public:
+ using SubscriptionUpdatedCallback =
+ base::RepeatingCallback<void(const GURL&)>;
+ FilteringConfigurationMaintainerImpl(
+ FilteringConfiguration* configuration,
+ std::unique_ptr<SubscriptionPersistentStorage> storage,
+ std::unique_ptr<SubscriptionDownloader> downloader,
+ std::unique_ptr<PreloadedSubscriptionProvider>
+ preloaded_subscription_provider,
+ std::unique_ptr<SubscriptionUpdater> updater,
+ ConversionExecutors* conversion_executor,
+ SubscriptionPersistentMetadata* persistent_metadata,
+ SubscriptionUpdatedCallback subscription_updated_callback);
+ ~FilteringConfigurationMaintainerImpl() override;
+
+ std::unique_ptr<SubscriptionCollection> GetSubscriptionCollection()
+ const override;
+
+ std::vector<scoped_refptr<Subscription>> GetCurrentSubscriptions()
+ const override;
+
+ // FilteringConfiguration::Observer:
+ void OnFilterListsChanged(FilteringConfiguration* config) final;
+ void OnAllowedDomainsChanged(FilteringConfiguration* config) final;
+ void OnCustomFiltersChanged(FilteringConfiguration* config) final;
+
+ void InitializeStorage();
+
+ private:
+ enum class StorageStatus {
+ Initialized,
+ Uninitialized,
+ };
+ class OngoingInstallation;
+ bool IsInitialized() const;
+ void InstallMissingSubscriptions();
+ void RemoveUnneededSubscriptions();
+ void StorageInitialized(
+ std::vector<scoped_refptr<InstalledSubscription>> loaded_subscriptions);
+ void RemoveDuplicateSubscriptions();
+ void RunUpdateCheck();
+ void DownloadAndInstallSubscription(const GURL& subscription_url);
+ void OnSubscriptionDataAvailable(
+ scoped_refptr<OngoingInstallation> ongoing_installation,
+ std::unique_ptr<FlatbufferData> raw_data);
+ void SubscriptionAddedToStorage(
+ scoped_refptr<OngoingInstallation> ongoing_installation,
+ scoped_refptr<InstalledSubscription> subscription);
+ void PingAcceptableAds();
+ void OnHeadRequestDone(const std::string version);
+ void UninstallSubscription(const GURL& subscription_url);
+ bool UninstallSubscriptionInternal(const GURL& subscription_url);
+ void SetCustomFilters();
+ void UpdatePreloadedSubscriptionProvider();
+ std::vector<GURL> GetReadySubscriptions() const;
+ std::vector<GURL> GetPendingSubscriptions() const;
+
+ SEQUENCE_CHECKER(sequence_checker_);
+ StorageStatus status_ = StorageStatus::Uninitialized;
+ raw_ptr<FilteringConfiguration> configuration_;
+ std::unique_ptr<SubscriptionPersistentStorage> storage_;
+ std::unique_ptr<SubscriptionDownloader> downloader_;
+ std::unique_ptr<PreloadedSubscriptionProvider>
+ preloaded_subscription_provider_;
+ std::unique_ptr<SubscriptionUpdater> updater_;
+ raw_ptr<ConversionExecutors> conversion_executor_;
+ // TODO(mpawlowski): Should not need to update metadata after DPD-1154, when
+ // HEAD requests are removed. Move all use of SubscriptionPersistentMetadata
+ // into SubscriptionPersistentStorage.
+ raw_ptr<SubscriptionPersistentMetadata> persistent_metadata_;
+ SubscriptionUpdatedCallback subscription_updated_callback_;
+ std::set<scoped_refptr<OngoingInstallation>> ongoing_installations_;
+ std::vector<scoped_refptr<InstalledSubscription>> current_state_;
+ scoped_refptr<InstalledSubscription> custom_filters_;
+ base::WeakPtrFactory<FilteringConfigurationMaintainerImpl> weak_ptr_factory_{
+ this};
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_FILTERING_CONFIGURATION_MAINTAINER_IMPL_H_
diff --git a/components/adblock/core/subscription/installed_subscription.cc b/components/adblock/core/subscription/installed_subscription.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/installed_subscription.cc
@@ -0,0 +1,42 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/subscription/installed_subscription.h"
+
+namespace adblock {
+
+InstalledSubscription::Selectors::Selectors() = default;
+InstalledSubscription::Selectors::~Selectors() = default;
+InstalledSubscription::Selectors::Selectors(const Selectors&) = default;
+InstalledSubscription::Selectors::Selectors(Selectors&&) = default;
+InstalledSubscription::Selectors& InstalledSubscription::Selectors::operator=(
+ const Selectors&) = default;
+InstalledSubscription::Selectors& InstalledSubscription::Selectors::operator=(
+ Selectors&&) = default;
+
+InstalledSubscription::Snippet::Snippet() = default;
+InstalledSubscription::Snippet::Snippet(const Snippet&) = default;
+InstalledSubscription::Snippet::Snippet(Snippet&&) = default;
+InstalledSubscription::Snippet::~Snippet() = default;
+InstalledSubscription::Snippet& InstalledSubscription::Snippet::operator=(
+ const Snippet&) = default;
+InstalledSubscription::Snippet& InstalledSubscription::Snippet::operator=(
+ Snippet&&) = default;
+
+InstalledSubscription::~InstalledSubscription() = default;
+
+} // namespace adblock
diff --git a/components/adblock/core/subscription/installed_subscription.h b/components/adblock/core/subscription/installed_subscription.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/installed_subscription.h
@@ -0,0 +1,137 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_INSTALLED_SUBSCRIPTION_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_INSTALLED_SUBSCRIPTION_H_
+
+#include <cstdint>
+#include <set>
+#include <string>
+#include <vector>
+
+#include "absl/types/optional.h"
+
+#include "base/time/time.h"
+#include "components/adblock/core/common/content_type.h"
+#include "components/adblock/core/common/header_filter_data.h"
+#include "components/adblock/core/common/sitekey.h"
+#include "components/adblock/core/subscription/subscription.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+enum class SpecialFilterType {
+ // Allows all ads on the frame and its children, overrides any URL blocking
+ // or element hiding:
+ Document,
+ // Disables element hiding on the frame and its children, URL blocking is
+ // still allowed:
+ Elemhide,
+ // Only consider domain-specific URL filters on this frame and its children:
+ Genericblock,
+ // Only consider domain-specific element hiding selectors on this frame and
+ // its children:
+ Generichide,
+};
+enum class FilterCategory { Allowing, Blocking, DomainSpecificBlocking };
+
+// Represents an installed subscription that can be queried for filters.
+class InstalledSubscription : public Subscription {
+ public:
+ struct Selectors {
+ Selectors();
+ ~Selectors();
+ Selectors(const Selectors&);
+ Selectors(Selectors&&);
+ Selectors& operator=(const Selectors&);
+ Selectors& operator=(Selectors&&);
+ // The final set of selectors to apply on a page is |elemhide_selectors|
+ // minus |elemhide_exceptions|. This difference is not computed by this
+ // Subscription because there may be multiple subscriptions and
+ // |elemhide_exceptions| from one subscriptions may remove
+ // |elemhide_selectors| from another.
+ std::vector<base::StringPiece> elemhide_selectors;
+ std::vector<base::StringPiece> elemhide_exceptions;
+ };
+
+ class Snippet {
+ public:
+ Snippet();
+ Snippet(const Snippet&);
+ Snippet(Snippet&&);
+ ~Snippet();
+ Snippet& operator=(const Snippet&);
+ Snippet& operator=(Snippet&&);
+ base::StringPiece command;
+ std::vector<base::StringPiece> arguments;
+ };
+
+ virtual bool HasUrlFilter(const GURL& url,
+ const std::string& document_domain,
+ ContentType content_type,
+ const SiteKey& sitekey,
+ FilterCategory category) const = 0;
+ virtual bool HasPopupFilter(const GURL& url,
+ const std::string& document_domain,
+ const SiteKey& sitekey,
+ FilterCategory category) const = 0;
+ virtual bool HasSpecialFilter(SpecialFilterType type,
+ const GURL& url,
+ const std::string& document_domain,
+ const SiteKey& sitekey) const = 0;
+ // CSP filters have a payload: a string that gets injected to a network
+ // response's Content-Security-Policy header. If a filters is found, it will
+ // be append to |results|.
+ virtual void FindCspFilters(const GURL& url,
+ const std::string& document_domain,
+ FilterCategory category,
+ std::set<base::StringPiece>& results) const = 0;
+ // Find all rewrite filters matching category.
+ virtual std::set<base::StringPiece> FindRewriteFilters(
+ const GURL& url,
+ const std::string& document_domain,
+ FilterCategory category) const = 0;
+
+ virtual void FindHeaderFilters(const GURL& url,
+ ContentType content_type,
+ const std::string& document_domain,
+ FilterCategory category,
+ std::set<HeaderFilterData>& results) const = 0;
+
+ virtual std::vector<Snippet> MatchSnippets(
+ const std::string& document_domain) const = 0;
+
+ virtual Selectors GetElemhideSelectors(const GURL& url,
+ bool domain_specfic) const = 0;
+ // Note there's no "domain_specific". Emulation filters are always
+ // domain-specific.
+ virtual Selectors GetElemhideEmulationSelectors(const GURL& url) const = 0;
+
+ // Instructs to remove the file which contains this subscription's data during
+ // destruction. NOP if there is no backing file, when the subscription is
+ // created in-memory.
+ // Operation is atomic and thread-safe. Consecutive calls are NOPs.
+ virtual void MarkForPermanentRemoval() = 0;
+
+ protected:
+ friend class base::RefCountedThreadSafe<InstalledSubscription>;
+ ~InstalledSubscription() override;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_INSTALLED_SUBSCRIPTION_H_
diff --git a/components/adblock/core/subscription/installed_subscription_impl.cc b/components/adblock/core/subscription/installed_subscription_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/installed_subscription_impl.cc
@@ -0,0 +1,553 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/subscription/installed_subscription_impl.h"
+
+#include <algorithm>
+#include <iostream>
+#include <iterator>
+
+#include "absl/types/optional.h"
+#include "base/logging.h"
+#include "base/ranges/algorithm.h"
+#include "base/strings/string_piece.h"
+#include "base/strings/string_util.h"
+#include "base/trace_event/trace_event.h"
+#include "components/adblock/core/common/adblock_constants.h"
+#include "components/adblock/core/common/adblock_utils.h"
+#include "components/adblock/core/common/flatbuffer_data.h"
+#include "components/adblock/core/common/regex_filter_pattern.h"
+#include "components/adblock/core/common/sitekey.h"
+#include "components/adblock/core/subscription/domain_splitter.h"
+#include "components/adblock/core/subscription/pattern_matcher.h"
+#include "components/adblock/core/subscription/regex_matcher.h"
+#include "components/adblock/core/subscription/subscription.h"
+#include "components/adblock/core/subscription/url_keyword_extractor.h"
+#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
+#include "url/url_constants.h"
+
+namespace adblock {
+namespace {
+
+bool NeedsLowercasing(const std::string& input) {
+ return base::ranges::any_of(
+ input, [](const char c) { return base::IsAsciiUpper(c); });
+}
+
+bool IsThirdParty(const GURL& url, const std::string& domain) {
+ return !net::registry_controlled_domains::SameDomainOrHost(
+ url, GURL(url.scheme() + "://" + domain),
+ net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES);
+}
+
+bool DomainMatches(base::StringPiece filter_domain,
+ base::StringPiece document_domain) {
+ // document_domain is same as filter_domain:
+ // - document: subdomain.example.com
+ // - filter: subdomain.example.com
+ // Or document_domain ends with ".filter_domain":
+ // - document: subdomain.example.com
+ // - filter: example.com
+ // (document ends with ".example.com")
+
+ return document_domain == filter_domain ||
+ (base::EndsWith(document_domain, filter_domain) &&
+ base::EndsWith(document_domain.substr(
+ 0, document_domain.size() - filter_domain.size()),
+ "."));
+}
+
+bool DomainOnList(
+ base::StringPiece document_domain,
+ const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>* list) {
+ return std::any_of(list->begin(), list->end(), [&](auto* filter_domain) {
+ return DomainMatches(
+ base::StringPiece(filter_domain->c_str(), filter_domain->size()),
+ document_domain);
+ });
+}
+
+} // namespace
+
+InstalledSubscriptionImpl::InstalledSubscriptionImpl(
+ std::unique_ptr<FlatbufferData> data,
+ InstallationState installation_state,
+ base::Time installation_time)
+ : buffer_(std::move(data)),
+ installation_state_(installation_state),
+ installation_time_(installation_time),
+ regex_matcher_(std::make_unique<RegexMatcher>()) {
+ DCHECK(buffer_);
+ index_ = flat::GetSubscription(buffer_->data());
+ regex_matcher_->PreBuildRegexPatternsWithNoKeyword(index_);
+}
+
+InstalledSubscriptionImpl::~InstalledSubscriptionImpl() = default;
+
+GURL InstalledSubscriptionImpl::GetSourceUrl() const {
+ return index_->metadata()->url() ? GURL(index_->metadata()->url()->str())
+ : GURL();
+}
+
+std::string InstalledSubscriptionImpl::GetTitle() const {
+ return index_->metadata()->title() ? index_->metadata()->title()->str() : "";
+}
+
+std::string InstalledSubscriptionImpl::GetCurrentVersion() const {
+ return index_->metadata()->version() ? index_->metadata()->version()->str()
+ : "";
+}
+
+Subscription::InstallationState
+InstalledSubscriptionImpl::GetInstallationState() const {
+ return installation_state_;
+}
+
+base::Time InstalledSubscriptionImpl::GetInstallationTime() const {
+ return installation_time_;
+}
+
+base::TimeDelta InstalledSubscriptionImpl::GetExpirationInterval() const {
+ return base::Milliseconds(index_->metadata()->expires());
+}
+
+bool InstalledSubscriptionImpl::HasUrlFilter(const GURL& url,
+ const std::string& document_domain,
+ ContentType content_type,
+ const SiteKey& sitekey,
+ FilterCategory category) const {
+ return !FindInternal(category != FilterCategory::Allowing
+ ? index_->url_subresource_block()
+ : index_->url_subresource_allow(),
+ url, content_type, document_domain, sitekey.value(),
+ category, FindStrategy::FindFirst)
+ .empty();
+}
+
+bool InstalledSubscriptionImpl::HasPopupFilter(
+ const GURL& url,
+ const std::string& document_domain,
+ const SiteKey& sitekey,
+ FilterCategory category) const {
+ return !FindInternal(category != FilterCategory::Allowing
+ ? index_->url_popup_block()
+ : index_->url_popup_allow(),
+ url, absl::nullopt, document_domain, sitekey.value(),
+ category, FindStrategy::FindFirst)
+ .empty();
+}
+
+void InstalledSubscriptionImpl::FindCspFilters(
+ const GURL& url,
+ const std::string& document_domain,
+ FilterCategory category,
+ std::set<base::StringPiece>& results) const {
+ for (auto* filter : FindInternal(category != FilterCategory::Allowing
+ ? index_->url_csp_block()
+ : index_->url_csp_allow(),
+ url, absl::nullopt, document_domain, "",
+ category, FindStrategy::FindAll)) {
+ DCHECK(category == FilterCategory::Allowing || filter->csp_filter())
+ << "Blocking CSP filter must contain payload";
+ results.insert(filter->csp_filter()
+ ? base::StringPiece(filter->csp_filter()->c_str(),
+ filter->csp_filter()->size())
+ : base::StringPiece());
+ }
+}
+
+std::set<base::StringPiece> InstalledSubscriptionImpl::FindRewriteFilters(
+ const GURL& url,
+ const std::string& document_domain,
+ FilterCategory category) const {
+ std::set<base::StringPiece> result;
+ for (auto* filter : FindInternal(category != FilterCategory::Allowing
+ ? index_->url_rewrite_block()
+ : index_->url_rewrite_allow(),
+ url, absl::nullopt, document_domain, "",
+ category, FindStrategy::FindAll)) {
+ result.insert(RewriteUrl(filter->rewrite()->replace_with()));
+ }
+ return result;
+}
+
+void InstalledSubscriptionImpl::FindHeaderFilters(
+ const GURL& url,
+ ContentType content_type,
+ const std::string& document_domain,
+ FilterCategory category,
+ std::set<HeaderFilterData>& results) const {
+ for (auto* filter : FindInternal(category != FilterCategory::Allowing
+ ? index_->url_header_block()
+ : index_->url_header_allow(),
+ url, content_type, document_domain, "",
+ category, FindStrategy::FindAll)) {
+ DCHECK(category == FilterCategory::Allowing || filter->header_filter())
+ << "Blocking header filter must contain header_filter() payload";
+ results.insert({base::StringPiece(filter->header_filter()->c_str(),
+ filter->header_filter()->size()),
+ GetSourceUrl()});
+ }
+}
+
+bool InstalledSubscriptionImpl::HasSpecialFilter(
+ SpecialFilterType type,
+ const GURL& url,
+ const std::string& document_domain,
+ const SiteKey& sitekey) const {
+ const UrlFilterIndex* index = nullptr;
+ switch (type) {
+ case SpecialFilterType::Document:
+ index = index_->url_document_allow();
+ break;
+ case SpecialFilterType::Elemhide:
+ index = index_->url_elemhide_allow();
+ break;
+ case SpecialFilterType::Genericblock:
+ index = index_->url_genericblock_allow();
+ break;
+ case SpecialFilterType::Generichide:
+ index = index_->url_generichide_allow();
+ break;
+ }
+ return !FindInternal(index, url, absl::nullopt, document_domain,
+ sitekey.value(), FilterCategory::Allowing,
+ FindStrategy::FindFirst)
+ .empty();
+}
+
+std::vector<base::StringPiece> InstalledSubscriptionImpl::GetSelectorsForDomain(
+ const flat::ElemHideFiltersByDomain* category,
+ base::StringPiece domain) const {
+ TRACE_EVENT1("eyeo", "InstalledSubscriptionImpl::GetSelectorsForDomain",
+ "domain", domain);
+
+ if (!category || !category->filter()) {
+ // No filters found for this domain.
+ return {};
+ }
+
+ std::vector<base::StringPiece> selectors;
+ for (auto* filter : *category->filter()) {
+ const bool filter_disallowed_by_excludes =
+ // Some exclusions apply on this domain:
+ filter->exclude_domains()->size() > 0 &&
+ // And those exclusions contain |domain| or one of its subdomains:
+ DomainOnList(domain, filter->exclude_domains());
+ if (filter_disallowed_by_excludes) {
+ continue;
+ }
+ selectors.emplace_back(filter->selector()->c_str(),
+ filter->selector()->size());
+ }
+
+ return selectors;
+}
+
+InstalledSubscription::Selectors
+InstalledSubscriptionImpl::GetElemhideSelectors(const GURL& url,
+ bool domain_specific) const {
+ Selectors result;
+ const std::string domain(base::ToLowerASCII(url.host()));
+ if (!domain_specific) {
+ result.elemhide_selectors =
+ GetSelectorsForDomain(index_->elemhide()->LookupByKey(""), domain);
+ result.elemhide_exceptions = GetSelectorsForDomain(
+ index_->elemhide_exception()->LookupByKey(""), domain);
+ }
+
+ DomainSplitter domain_splitter(domain);
+ while (auto subdomain = domain_splitter.FindNextSubdomain()) {
+ auto specific_selectors = GetSelectorsForDomain(
+ index_->elemhide()->LookupByKey(subdomain->data()), domain);
+ std::move(specific_selectors.begin(), specific_selectors.end(),
+ std::back_inserter(result.elemhide_selectors));
+ auto specific_exceptions = GetSelectorsForDomain(
+ index_->elemhide_exception()->LookupByKey(subdomain->data()), domain);
+ std::move(specific_exceptions.begin(), specific_exceptions.end(),
+ std::back_inserter(result.elemhide_exceptions));
+ }
+
+ return result;
+}
+
+InstalledSubscription::Selectors
+InstalledSubscriptionImpl::GetElemhideEmulationSelectors(
+ const GURL& url) const {
+ const std::string& domain = url.host();
+ Selectors result;
+ DomainSplitter domain_splitter(domain);
+ while (auto subdomain = domain_splitter.FindNextSubdomain()) {
+ auto elemhide_selectors = GetSelectorsForDomain(
+ index_->elemhide_emulation()->LookupByKey(subdomain->data()), domain);
+ std::move(elemhide_selectors.begin(), elemhide_selectors.end(),
+ std::back_inserter(result.elemhide_selectors));
+ auto elemhide_exceptions = GetSelectorsForDomain(
+ index_->elemhide_exception()->LookupByKey(subdomain->data()), domain);
+ std::move(elemhide_exceptions.begin(), elemhide_exceptions.end(),
+ std::back_inserter(result.elemhide_exceptions));
+ }
+ return result;
+}
+
+std::vector<const flat::UrlFilter*> InstalledSubscriptionImpl::FindInternal(
+ const UrlFilterIndex* index,
+ const GURL& url,
+ absl::optional<ContentType> content_type,
+ const std::string& document_domain,
+ const std::string& sitekey,
+ FilterCategory category,
+ FindStrategy strategy) const {
+ if (!index) {
+ // No filters of this type were parsed.
+ return {};
+ }
+ const std::string& normalized_domain =
+ NeedsLowercasing(document_domain) ? base::ToLowerASCII(document_domain)
+ : document_domain;
+ const std::string normalized_sitekey = base::ToUpperASCII(sitekey);
+ const GURL& lowercase_url =
+ NeedsLowercasing(url.spec()) ? GURL(base::ToLowerASCII(url.spec())) : url;
+ const bool is_third_party_request = IsThirdParty(url, document_domain);
+ std::vector<const flat::UrlFilter*> results;
+
+ UrlKeywordExtractor keyword_extractor(lowercase_url.spec());
+ while (auto current_keyword = keyword_extractor.GetNextKeyword()) {
+ FindFiltersForKeyword(index, *current_keyword, url, lowercase_url,
+ content_type, normalized_domain, normalized_sitekey,
+ category, is_third_party_request, strategy, results);
+ if (strategy == FindStrategy::FindFirst && !results.empty()) {
+ return results;
+ }
+ }
+
+ FindFiltersForKeyword(index, "", url, lowercase_url, content_type,
+ normalized_domain, normalized_sitekey, category,
+ is_third_party_request, strategy, results);
+ return results;
+}
+
+void InstalledSubscriptionImpl::FindFiltersForKeyword(
+ const UrlFilterIndex* index,
+ base::StringPiece keyword,
+ const GURL& url,
+ const GURL& lowercase_url,
+ absl::optional<ContentType> content_type,
+ const std::string& document_domain,
+ const std::string& sitekey,
+ FilterCategory category,
+ bool is_third_party_request,
+ FindStrategy strategy,
+ std::vector<const flat::UrlFilter*>& out_results) const {
+ const auto* idx = index->LookupByKey(keyword.data());
+
+ if (!idx) {
+ return;
+ }
+
+ for (const auto* filter : *(idx->filter())) {
+ if (!CandidateFilterViable(filter, content_type, document_domain, sitekey,
+ category, is_third_party_request)) {
+ continue;
+ }
+
+ if (filter->pattern()->size() == 0u) {
+ // This filter applies to all URLs, assuming prior checks passed.
+ out_results.push_back(filter);
+ if (strategy == FindStrategy::FindFirst) {
+ return;
+ }
+ }
+ // During flatbuffer conversion, the pattern is lowercased for
+ // case-insensitive filters, and left in original form for case-sensitive
+ // filters.
+ const base::StringPiece pattern(filter->pattern()->c_str(),
+ filter->pattern()->size());
+ if (const auto regex_pattern = ExtractRegexFilterFromPattern(pattern)) {
+ if (regex_matcher_->MatchesRegex(*regex_pattern, url,
+ filter->match_case())) {
+ out_results.push_back(filter);
+ if (strategy == FindStrategy::FindFirst) {
+ return;
+ }
+ }
+ } else {
+ const auto& normalized_url = filter->match_case() ? url : lowercase_url;
+ if (DoesPatternMatchUrl(pattern, normalized_url)) {
+ out_results.push_back(filter);
+ if (strategy == FindStrategy::FindFirst) {
+ return;
+ }
+ }
+ }
+ }
+}
+
+bool InstalledSubscriptionImpl::CandidateFilterViable(
+ const flat::UrlFilter* candidate,
+ absl::optional<ContentType> content_type,
+ const std::string& document_domain,
+ const std::string& sitekey,
+ FilterCategory category,
+ bool is_third_party_request) const {
+ if (content_type && (candidate->resource_type() & *content_type) == 0) {
+ return false;
+ }
+ if (category == FilterCategory::DomainSpecificBlocking &&
+ IsGenericFilter(candidate)) {
+ return false;
+ }
+ if (!CheckThirdParty(candidate, is_third_party_request)) {
+ return false;
+ }
+ if (!IsActiveOnDomain(candidate, document_domain, sitekey)) {
+ return false;
+ }
+ return true;
+}
+
+bool InstalledSubscriptionImpl::CheckThirdParty(
+ const flat::UrlFilter* filter,
+ bool is_third_party_request) const {
+ switch (filter->third_party()) {
+ case flat::ThirdParty_Ignore:
+ // This filter applies to first- and third-party requests requests.
+ return true;
+ case flat::ThirdParty_FirstPartyOnly:
+ // This filter applies only to first-party requests.
+ return !is_third_party_request;
+ case flat::ThirdParty_ThirdPartyOnly:
+ // This filter applies only to third-party requests.
+ return is_third_party_request;
+ }
+}
+
+bool InstalledSubscriptionImpl::IsGenericFilter(
+ const flat::UrlFilter* filter) const {
+ const auto* sitekeys = filter->sitekeys();
+ DCHECK(sitekeys);
+
+ if (sitekeys->size()) {
+ return false;
+ }
+
+ return IsEmptyDomainAllowed(filter->include_domains(),
+ filter->exclude_domains());
+}
+
+bool InstalledSubscriptionImpl::IsActiveOnDomain(
+ const flat::UrlFilter* filter,
+ const std::string& document_domain,
+ const std::string& sitekey) const {
+ const auto* sitekeys = filter->sitekeys();
+ DCHECK(sitekeys);
+
+ if (sitekeys->size() != 0u) {
+ if (std::none_of(
+ sitekeys->begin(), sitekeys->end(), [&sitekey](const auto* it) {
+ return base::StringPiece(it->c_str(), it->size()) == sitekey;
+ })) {
+ // This filter requires a sitekey, and the one provided doesn't match.
+ return false;
+ }
+ }
+
+ const auto* include_domains = filter->include_domains();
+ const auto* exclude_domains = filter->exclude_domains();
+ return IsActiveOnDomain(document_domain, include_domains, exclude_domains);
+}
+
+bool InstalledSubscriptionImpl::IsActiveOnDomain(
+ const std::string& document_domain,
+ const Domains* include_domains,
+ const Domains* exclude_domains) const {
+ if (IsEmptyDomainAllowed(include_domains, exclude_domains)) {
+ return true;
+ }
+
+ // If |document_domain| matches any exclusion-type mapping for this filter,
+ // the filter may not be applied to this domain.
+ if (exclude_domains && DomainOnList(document_domain, exclude_domains)) {
+ return false;
+ }
+
+ if (include_domains && include_domains->size()) {
+ if (DomainOnList(document_domain, include_domains)) {
+ return true;
+ }
+ return false;
+ }
+
+ // But if there are no include requirements for the filter, only exclude
+ // domains, the filter applies.
+ return true;
+}
+
+bool InstalledSubscriptionImpl::IsEmptyDomainAllowed(
+ const Domains* include_domains,
+ const Domains* exclude_domains) const {
+ const bool has_no_exclude_domains =
+ !exclude_domains || exclude_domains->size() == 0u;
+ return // optimization: instead of checking domains->LookupByKey(""), just
+ // check first element is empty (list is sorted)
+ (!include_domains || !include_domains->size() ||
+ !include_domains->Get(0)->size()) &&
+ has_no_exclude_domains;
+}
+
+std::vector<InstalledSubscription::Snippet>
+InstalledSubscriptionImpl::MatchSnippets(
+ const std::string& document_domain) const {
+ std::vector<InstalledSubscription::Snippet> result;
+ if (!index_->snippet()) {
+ return result;
+ }
+
+ DomainSplitter domain_splitter(document_domain);
+ while (auto subdomain = domain_splitter.FindNextSubdomain()) {
+ const auto* idx = index_->snippet()->LookupByKey(subdomain->data());
+
+ if (!idx) {
+ continue;
+ }
+
+ for (const auto* cur : (*idx->filter())) {
+ if (IsActiveOnDomain(document_domain, nullptr, cur->exclude_domains())) {
+ for (const auto* line : (*cur->script())) {
+ InstalledSubscription::Snippet obj;
+ obj.command = base::StringPiece(line->command()->c_str(),
+ line->command()->size());
+ obj.arguments.reserve(line->arguments()->size());
+
+ for (const auto* arg : (*line->arguments())) {
+ obj.arguments.emplace_back(arg->c_str(), arg->size());
+ }
+
+ result.push_back(std::move(obj));
+ }
+ }
+ }
+ }
+
+ return result;
+}
+
+void InstalledSubscriptionImpl::MarkForPermanentRemoval() {
+ buffer_->PermanentlyRemoveSourceOnDestruction();
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/subscription/installed_subscription_impl.h b/components/adblock/core/subscription/installed_subscription_impl.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/installed_subscription_impl.h
@@ -0,0 +1,150 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_INSTALLED_SUBSCRIPTION_IMPL_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_INSTALLED_SUBSCRIPTION_IMPL_H_
+
+#include <cstdint>
+#include <memory>
+#include <vector>
+
+#include "absl/types/optional.h"
+#include "base/memory/raw_ptr.h"
+#include "base/strings/string_piece.h"
+
+#include "components/adblock/core/common/flatbuffer_data.h"
+#include "components/adblock/core/schema/filter_list_schema_generated.h"
+#include "components/adblock/core/subscription/installed_subscription.h"
+#include "components/adblock/core/subscription/regex_matcher.h"
+
+namespace adblock {
+
+// A flatbuffer-based implementation of Subscription.
+class InstalledSubscriptionImpl final : public InstalledSubscription {
+ public:
+ InstalledSubscriptionImpl(std::unique_ptr<FlatbufferData> buffer,
+ InstallationState installation_state,
+ base::Time installation_time);
+ // Subscription
+ GURL GetSourceUrl() const final;
+ std::string GetTitle() const final;
+ std::string GetCurrentVersion() const final;
+ InstallationState GetInstallationState() const final;
+ base::Time GetInstallationTime() const final;
+ base::TimeDelta GetExpirationInterval() const final;
+
+ // InstalledSubscription
+ bool HasUrlFilter(const GURL& url,
+ const std::string& document_domain,
+ ContentType content_type,
+ const SiteKey& sitekey,
+ FilterCategory category) const final;
+ bool HasPopupFilter(const GURL& url,
+ const std::string& document_domain,
+ const SiteKey& sitekey,
+ FilterCategory category) const final;
+ bool HasSpecialFilter(SpecialFilterType type,
+ const GURL& url,
+ const std::string& document_domain,
+ const SiteKey& sitekey) const final;
+ void FindCspFilters(const GURL& url,
+ const std::string& document_domain,
+ FilterCategory category,
+ std::set<base::StringPiece>& results) const final;
+ std::set<base::StringPiece> FindRewriteFilters(
+ const GURL& url,
+ const std::string& document_domain,
+ FilterCategory category) const final;
+ void FindHeaderFilters(const GURL& url,
+ ContentType content_type,
+ const std::string& document_domain,
+ FilterCategory category,
+ std::set<HeaderFilterData>& results) const final;
+
+ Selectors GetElemhideSelectors(const GURL& url,
+ bool domain_specific) const final;
+ Selectors GetElemhideEmulationSelectors(const GURL& url) const final;
+
+ std::vector<Snippet> MatchSnippets(
+ const std::string& document_domain) const final;
+
+ void MarkForPermanentRemoval() final;
+
+ private:
+ friend class base::RefCountedThreadSafe<InstalledSubscriptionImpl>;
+ ~InstalledSubscriptionImpl() final;
+ enum class FindStrategy {
+ FindFirst,
+ FindAll,
+ };
+
+ using UrlFilterIndex =
+ flatbuffers::Vector<flatbuffers::Offset<flat::UrlFiltersByKeyword>>;
+ using Domains = flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>;
+ // Finds the first filter in |category| that matches the remaining parameters.
+ // Finds all filters in category that matchers the remaining parameters.
+ std::vector<const flat::UrlFilter*> FindInternal(
+ const UrlFilterIndex* index,
+ const GURL& url,
+ absl::optional<ContentType> content_type,
+ const std::string& document_domain,
+ const std::string& sitekey,
+ FilterCategory category,
+ FindStrategy strategy) const;
+ void FindFiltersForKeyword(
+ const UrlFilterIndex* index,
+ base::StringPiece keyword,
+ const GURL& url,
+ const GURL& lowercase_url,
+ absl::optional<ContentType> content_type,
+ const std::string& document_domain,
+ const std::string& sitekey,
+ FilterCategory category,
+ bool is_third_party_request,
+ FindStrategy strategy,
+ std::vector<const flat::UrlFilter*>& out_results) const;
+ bool CandidateFilterViable(const flat::UrlFilter* candidate,
+ absl::optional<ContentType> content_type,
+ const std::string& document_domain,
+ const std::string& sitekey,
+ FilterCategory category,
+ bool is_third_party_request) const;
+ bool IsGenericFilter(const flat::UrlFilter* filter) const;
+ bool CheckThirdParty(const flat::UrlFilter* filter,
+ bool is_third_party_request) const;
+ bool IsActiveOnDomain(const flat::UrlFilter* filter,
+ const std::string& document_domain,
+ const std::string& sitekey) const;
+ bool IsActiveOnDomain(const std::string& document_domain,
+ const Domains* include_domains,
+ const Domains* exclude_domains) const;
+ bool IsEmptyDomainAllowed(const Domains* include_domains,
+ const Domains* exclude_domains) const;
+ std::vector<base::StringPiece> GetSelectorsForDomain(
+ const flat::ElemHideFiltersByDomain* category,
+ base::StringPiece domain) const;
+
+ const std::unique_ptr<FlatbufferData> buffer_;
+ const InstallationState installation_state_;
+ const base::Time installation_time_;
+ raw_ptr<const flat::Subscription> index_ = nullptr;
+ const std::unique_ptr<RegexMatcher> regex_matcher_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_INSTALLED_SUBSCRIPTION_IMPL_H_
diff --git a/components/adblock/core/subscription/ongoing_subscription_request.h b/components/adblock/core/subscription/ongoing_subscription_request.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/ongoing_subscription_request.h
@@ -0,0 +1,50 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_ONGOING_SUBSCRIPTION_REQUEST_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_ONGOING_SUBSCRIPTION_REQUEST_H_
+
+#include "base/files/file_path.h"
+#include "base/functional/callback.h"
+#include "services/network/public/cpp/simple_url_loader.h"
+
+namespace adblock {
+
+// State machine of a download request of a single subscription (GET or HEAD).
+// It implements observing network state and retries.
+class OngoingSubscriptionRequest {
+ public:
+ using ResponseCallback = base::RepeatingCallback<void(
+ const GURL& subscription_url,
+ base::FilePath downloaded_file,
+ scoped_refptr<net::HttpResponseHeaders> headers)>;
+ enum class Method { GET, HEAD };
+
+ virtual ~OngoingSubscriptionRequest() = default;
+
+ virtual void Start(GURL url,
+ Method method,
+ ResponseCallback response_callback) = 0;
+ virtual void Retry() = 0;
+ virtual void Redirect(GURL redirect_url) = 0;
+
+ virtual size_t GetNumberOfRedirects() const = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_ONGOING_SUBSCRIPTION_REQUEST_H_
diff --git a/components/adblock/core/subscription/ongoing_subscription_request_impl.cc b/components/adblock/core/subscription/ongoing_subscription_request_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/ongoing_subscription_request_impl.cc
@@ -0,0 +1,190 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/subscription/ongoing_subscription_request_impl.h"
+
+#include <memory>
+
+#include "base/task/thread_pool.h"
+#include "base/trace_event/trace_event.h"
+#include "net/http/http_request_headers.h"
+#include "services/network/public/cpp/resource_request.h"
+#include "services/network/public/mojom/url_response_head.mojom.h"
+
+namespace adblock {
+namespace {
+
+const net::NetworkTrafficAnnotationTag kTrafficAnnotation =
+ net::DefineNetworkTrafficAnnotation("adblock_subscription_download", R"(
+ semantics {
+ sender: "SubscriptionDownloaderImpl"
+ description:
+ "A request to download ad-blocking filter lists, as the user "
+ "selects a new filter list source or as a filter list update "
+ "is fetched."
+ trigger:
+ "Interval or when user selects a new filter list source"
+ data:
+ "Version (timestamp) of the filter list, if present. "
+ "Application name (ex. Chromium) "
+ "Application version (93.0.4572.0) "
+ destination: WEBSITE
+ }
+ policy {
+ cookies_allowed: NO
+ setting:
+ "You enable or disable this feature via 'Ad blocking' setting."
+ policy_exception_justification: "Not implemented."
+ })");
+
+} // namespace
+
+OngoingSubscriptionRequestImpl::OngoingSubscriptionRequestImpl(
+ const net::BackoffEntry::Policy* backoff_policy,
+ scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory)
+ : backoff_entry_(std::make_unique<net::BackoffEntry>(backoff_policy)),
+ url_loader_factory_(url_loader_factory),
+ retry_timer_(std::make_unique<base::OneShotTimer>()),
+ number_of_redirects_(0) {
+ net::NetworkChangeNotifier::AddNetworkChangeObserver(this);
+}
+
+OngoingSubscriptionRequestImpl::~OngoingSubscriptionRequestImpl() {
+ if (!url_.is_empty()) {
+ VLOG(1) << "[eyeo] Cancelling download of " << url_;
+ }
+ net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this);
+}
+
+void OngoingSubscriptionRequestImpl::Start(GURL url,
+ Method method,
+ ResponseCallback response_callback) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(url_.is_empty()) << "Start() called twice";
+ url_ = std::move(url);
+ method_ = method;
+ response_callback_ = std::move(response_callback);
+ if (!net::NetworkChangeNotifier::IsOffline()) {
+ StartInternal();
+ }
+}
+
+void OngoingSubscriptionRequestImpl::Retry() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(!url_.is_empty()) << "Retry() called before Start()";
+ if (!url_loader_factory_) {
+ // This happens in unit tests that have no network.
+ return;
+ }
+ backoff_entry_->InformOfRequest(false);
+ VLOG(1) << "[eyeo] Will retry downloading " << url_ << " in "
+ << backoff_entry_->GetTimeUntilRelease();
+ retry_timer_->Start(
+ FROM_HERE, backoff_entry_->GetTimeUntilRelease(),
+ base::BindOnce(&OngoingSubscriptionRequestImpl::StartInternal,
+ // Unretained is safe because destruction of |this| will
+ // remove |retry_timer_| and abort the callback.
+ base::Unretained(this)));
+}
+
+void OngoingSubscriptionRequestImpl::Redirect(GURL redirect_url) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(!url_.is_empty()) << "Redirect() called before Start()";
+ DCHECK(url_ != redirect_url) << "Invalid redirect. Same URL";
+ VLOG(1) << "[eyeo] Will redirect " << url_ << " to " << redirect_url;
+ ++number_of_redirects_;
+ url_ = std::move(redirect_url);
+ StartInternal();
+}
+
+size_t OngoingSubscriptionRequestImpl::GetNumberOfRedirects() const {
+ return number_of_redirects_;
+}
+
+void OngoingSubscriptionRequestImpl::StartInternal() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ TRACE_EVENT_NESTABLE_ASYNC_BEGIN2("eyeo", "Downloading subscription", this,
+ "url", url_.spec(), "method",
+ MethodToString());
+ if (!url_loader_factory_) {
+ // This happens in unit tests that have no network. The request will hang
+ // indefinitely.
+ return;
+ }
+ VLOG(1) << "[eyeo] Downloading " << url_;
+ auto request = std::make_unique<network::ResourceRequest>();
+ request->url = url_;
+ request->method = MethodToString();
+ loader_ =
+ network::SimpleURLLoader::Create(std::move(request), kTrafficAnnotation);
+
+ if (method_ == Method::GET) {
+ loader_->DownloadToTempFile(
+ url_loader_factory_.get(),
+ base::BindOnce(&OngoingSubscriptionRequestImpl::OnDownloadFinished,
+ // Unretained is safe because destruction of |this| will
+ // remove |loader_| and will abort the callback.
+ base::Unretained(this)));
+ } else {
+ loader_->DownloadHeadersOnly(
+ url_loader_factory_.get(),
+ base::BindOnce(&OngoingSubscriptionRequestImpl::OnHeadersReceived,
+ base::Unretained(this)));
+ }
+}
+
+void OngoingSubscriptionRequestImpl::OnDownloadFinished(
+ base::FilePath downloaded_file) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ TRACE_EVENT_NESTABLE_ASYNC_END0("eyeo", "Downloading subscription", this);
+ GURL::Replacements strip_query;
+ strip_query.ClearQuery();
+ GURL url = url_.ReplaceComponents(strip_query);
+ response_callback_.Run(
+ url, std::move(downloaded_file),
+ loader_->ResponseInfo() ? loader_->ResponseInfo()->headers : nullptr);
+ // response_callback_ may delete this, do not call any member variables now.
+}
+
+void OngoingSubscriptionRequestImpl::OnHeadersReceived(
+ scoped_refptr<net::HttpResponseHeaders> headers) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ TRACE_EVENT_NESTABLE_ASYNC_END0("eyeo", "Downloading subscription", this);
+ response_callback_.Run(GURL(), base::FilePath(), headers);
+ // response_callback_ may delete this, do not call any member variables now.
+}
+
+const char* OngoingSubscriptionRequestImpl::MethodToString() const {
+ return method_ == Method::GET ? net::HttpRequestHeaders::kGetMethod
+ : net::HttpRequestHeaders::kHeadMethod;
+}
+
+bool OngoingSubscriptionRequestImpl::IsStarted() const {
+ return loader_ != nullptr || retry_timer_->IsRunning();
+}
+
+void OngoingSubscriptionRequestImpl::OnNetworkChanged(
+ net::NetworkChangeNotifier::ConnectionType connection_type) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ if (!IsStarted() && !url_.is_empty() &&
+ !net::NetworkChangeNotifier::IsOffline()) {
+ StartInternal();
+ DCHECK(IsStarted());
+ }
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/subscription/ongoing_subscription_request_impl.h b/components/adblock/core/subscription/ongoing_subscription_request_impl.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/ongoing_subscription_request_impl.h
@@ -0,0 +1,74 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_ONGOING_SUBSCRIPTION_REQUEST_IMPL_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_ONGOING_SUBSCRIPTION_REQUEST_IMPL_H_
+
+#include <string>
+
+#include "base/functional/callback.h"
+
+#include "base/files/file_path.h"
+#include "base/timer/timer.h"
+#include "components/adblock/core/subscription/ongoing_subscription_request.h"
+#include "components/adblock/core/subscription/subscription_downloader.h"
+#include "net/base/backoff_entry.h"
+#include "net/base/network_change_notifier.h"
+#include "services/network/public/cpp/shared_url_loader_factory.h"
+#include "services/network/public/cpp/simple_url_loader.h"
+
+namespace adblock {
+
+class OngoingSubscriptionRequestImpl final
+ : public OngoingSubscriptionRequest,
+ public net::NetworkChangeNotifier::NetworkChangeObserver {
+ public:
+ OngoingSubscriptionRequestImpl(
+ const net::BackoffEntry::Policy* backoff_policy,
+ scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory);
+ ~OngoingSubscriptionRequestImpl() final;
+ void Start(GURL url, Method method, ResponseCallback response_callback) final;
+ void Retry() final;
+ void Redirect(GURL redirect_url) final;
+
+ size_t GetNumberOfRedirects() const final;
+
+ // NetworkChangeObserver:
+ void OnNetworkChanged(
+ net::NetworkChangeNotifier::ConnectionType connection_type) final;
+
+ private:
+ bool IsStarted() const;
+ void StartInternal();
+ void OnDownloadFinished(base::FilePath downloaded_file);
+ void OnHeadersReceived(scoped_refptr<net::HttpResponseHeaders> headers);
+ const char* MethodToString() const;
+
+ SEQUENCE_CHECKER(sequence_checker_);
+ std::unique_ptr<net::BackoffEntry> backoff_entry_;
+ scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
+ GURL url_;
+ Method method_ = Method::GET;
+ ResponseCallback response_callback_;
+ std::unique_ptr<network::SimpleURLLoader> loader_;
+ std::unique_ptr<base::OneShotTimer> retry_timer_;
+ size_t number_of_redirects_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_ONGOING_SUBSCRIPTION_REQUEST_IMPL_H_
diff --git a/components/adblock/core/subscription/pattern_matcher.cc b/components/adblock/core/subscription/pattern_matcher.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/pattern_matcher.cc
@@ -0,0 +1,265 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/subscription/pattern_matcher.h"
+
+#include "absl/types/optional.h"
+#include "base/logging.h"
+#include "base/notreached.h"
+#include "base/ranges/algorithm.h"
+#include "base/strings/string_piece.h"
+#include "base/strings/string_util.h"
+#include "components/adblock/core/common/regex_filter_pattern.h"
+
+namespace adblock {
+namespace {
+
+constexpr int kMaxRecursionDepth = 50;
+
+bool CharacterIsValidSeparator(char c) {
+ // The separator character can be anything but a letter, a digit, or one of
+ // the following: _, -, ., %
+ return !base::IsAsciiAlphaNumeric(c) &&
+ base::StringPiece("_-.%").find(c) == base::StringPiece::npos;
+}
+
+// Returns if |candidate| (e.g. "https://sub") is a valid start of |url|'s host.
+// If url is "https://sub.domain.com/path" then:
+// Valid candidates:
+// - https://
+// - https://sub.
+// - https://sub.domain.
+// - https://sub.domain.com
+// Invalid candidates:
+// - https://s
+// - https://sub
+// - https://sub.domain.com/
+// - https://sub.domain.com/p
+bool IsValidStartOfHost(base::StringPiece candidate, const GURL& url) {
+ const GURL trimmed_url = url.GetWithEmptyPath();
+ if (url.has_scheme()) {
+ DCHECK(base::StartsWith(candidate, url.scheme_piece()));
+ candidate = candidate.substr(url.scheme_piece().size());
+ }
+ candidate =
+ base::TrimString(candidate, ":/", base::TrimPositions::TRIM_LEADING);
+ return candidate.empty() || candidate == url.host_piece() ||
+ (base::EndsWith(candidate, ".") &&
+ candidate.find_first_of("/") == base::StringPiece::npos);
+}
+
+class PatternTokenizer {
+ public:
+ explicit PatternTokenizer(base::StringPiece filter_pattern)
+ : consumed_filter_pattern_(filter_pattern) {}
+
+ base::StringPiece NextToken() {
+ if (consumed_filter_pattern_.empty()) {
+ return {};
+ }
+ // If the previous call left us on a wildcard character, return it and
+ // and advance to first non-wildcard position.
+ if (consumed_filter_pattern_[0] == '*') {
+ consumed_filter_pattern_ =
+ base::TrimString(consumed_filter_pattern_, "*", base::TRIM_LEADING);
+ return "*";
+ }
+ // If the previous call left us on a ^ separator, return it and advance
+ if (consumed_filter_pattern_[0] == '^') {
+ consumed_filter_pattern_ = consumed_filter_pattern_.substr(1);
+ return "^";
+ }
+ // If the previous call left us on a | anchor (or anchors), return it and
+ // advance to first non-anchor position.
+ if (consumed_filter_pattern_[0] == '|') {
+ const auto token = consumed_filter_pattern_.substr(
+ 0, consumed_filter_pattern_.find_first_not_of("|"));
+ consumed_filter_pattern_ = consumed_filter_pattern_.substr(token.size());
+ return token;
+ }
+
+ // The next token is whatever characters are between current position and
+ // the next separator (or EOF)
+ const auto next_token = consumed_filter_pattern_.substr(
+ 0, consumed_filter_pattern_.find_first_of(kSeparators));
+ // Advance to next token.
+ consumed_filter_pattern_ =
+ consumed_filter_pattern_.substr(next_token.size());
+ return next_token;
+ }
+
+ private:
+ constexpr static base::StringPiece kSeparators{"*^|"};
+ // The tokenizer consumes |consumed_filter_pattern_| from the left as it
+ // advances. This is cheap, just incrementing the begin index.
+ base::StringPiece consumed_filter_pattern_;
+};
+
+absl::optional<base::StringPiece> FindNextTokenInInput(
+ base::StringPiece consumed_input,
+ PatternTokenizer tokenizer,
+ int recursion_depth);
+
+// Check if |consumed_input| starts with next token from |tokenizer| and
+// continues matching subsequent tokens (recursively).
+bool NextTokenBeginsInput(base::StringPiece consumed_input,
+ PatternTokenizer tokenizer,
+ int recursion_depth) {
+ if (++recursion_depth > kMaxRecursionDepth) {
+ return false;
+ }
+ const auto token = tokenizer.NextToken();
+ if (token.empty()) {
+ // Matching finished, no more tokens in the filter.
+ return true;
+ }
+ if (token == "^") {
+ // The next character must either be a valid separator, or EOF. "^" matches
+ // either.
+ if (!consumed_input.empty()) {
+ // This is not an EOF, ^ must match a valid separator, followed by
+ // subsequent matching tokens.
+ return CharacterIsValidSeparator(consumed_input[0]) &&
+ NextTokenBeginsInput(consumed_input.substr(1), tokenizer,
+ recursion_depth);
+ }
+ // ^ is a valid match for EOF, but only if there aren't any tokens left
+ // that want to match text.
+ return NextTokenBeginsInput({}, tokenizer, recursion_depth);
+ } else if (token == "*") {
+ // The next characters can be anything, as long as subsequent tokens are
+ // matched further in |consumed_input| (recursively).
+ return FindNextTokenInInput(consumed_input, tokenizer, recursion_depth)
+ .has_value();
+ } else if (token == "|") {
+ // "|" is an end-of-URL anchor, verify we indeed reached end of input.
+ // TODO(mpawlowski) A literal "|"" character can occur in a URL, we should
+ // probably check this as well: DPD-1755.
+ return consumed_input.empty();
+ } else {
+ // The next characters should exactly match the token, and then subsequent
+ // tokens must continue matching the input.
+ if (!base::StartsWith(consumed_input, token)) {
+ return false;
+ }
+ return NextTokenBeginsInput(consumed_input.substr(token.size()), tokenizer,
+ recursion_depth);
+ }
+}
+
+// Returns characters skipped in order to reach next token from |tokenizer|, or
+// nullopt if not found.
+absl::optional<base::StringPiece> FindNextTokenInInput(
+ base::StringPiece consumed_input,
+ PatternTokenizer tokenizer,
+ int recursion_depth) {
+ if (++recursion_depth > kMaxRecursionDepth) {
+ return absl::nullopt;
+ }
+ const auto token = tokenizer.NextToken();
+ // We're searching for |token| anywhere inside |consumed_input|, we may skip
+ // any number of characters while we try to find it.
+ DCHECK(token != "*") << "PatternTokenizer failed to handle multiple "
+ "consecutive wildcards in the filter pattern";
+ if (token == "^") {
+ // We're looking for input that matches the ^ separator, followed by next
+ // tokens (recursively).
+ // It is possible that the first separator we find won't be followed by the
+ // correct next token. This is ok, this algorithm cannot be greedy. Keep
+ // skipping characters until we match a separator followed by subsequent
+ // tokens.
+ for (size_t i = 0; i < consumed_input.size(); i++) {
+ if (!CharacterIsValidSeparator(consumed_input[i])) {
+ continue;
+ }
+ if (NextTokenBeginsInput(consumed_input.substr(i + 1), tokenizer,
+ recursion_depth)) {
+ return consumed_input.substr(0, i + 1);
+ }
+ }
+ // Reached the end of the input without matching a valid separator (that was
+ // followed by the right tokens, recursively).
+ // It is OK as long as there are no further tokens that require matching
+ // input. The "^" symbol matches EOF too.
+ return NextTokenBeginsInput(base::StringPiece(), tokenizer, recursion_depth)
+ ? absl::optional<base::StringPiece>{consumed_input}
+ : absl::nullopt;
+ } else if (token == "|") {
+ // If we're skipping characters, we can always skip enough to reach the end
+ // anchor.
+ return consumed_input;
+ } else {
+ // The searched token is just ASCII text. Keep searching for occurrences of
+ // it within consumed_input.
+ for (auto match_pos = consumed_input.find(token);
+ match_pos != base::StringPiece::npos;
+ match_pos = consumed_input.find(token, match_pos + 1)) {
+ if (NextTokenBeginsInput(consumed_input.substr(match_pos + token.size()),
+ tokenizer, recursion_depth)) {
+ return consumed_input.substr(0, match_pos);
+ }
+ // If the first occurrence of token inside consumed_input isn't the right
+ // one, keep looking. Subsequent tokens didn't match, but the algorithm is
+ // not greedy, there might be another match.
+ }
+
+ return absl::nullopt;
+ }
+}
+
+} // namespace
+
+bool DoesPatternMatchUrl(base::StringPiece filter_pattern, const GURL& url) {
+ DCHECK(!ExtractRegexFilterFromPattern(filter_pattern))
+ << "This function does not support regular expressions filters";
+ const base::StringPiece input(url.spec());
+ PatternTokenizer tokenizer(filter_pattern);
+ const auto first_token = tokenizer.NextToken();
+ if (first_token == "|") {
+ return NextTokenBeginsInput(input, tokenizer, 0);
+ } else if (first_token == "||") {
+ {
+ // If the next token is *, we discard the start-from-host anchor, behave
+ // as if the filter started from *
+ auto empty_or_wildcard_tokenizer = tokenizer;
+ const auto token = empty_or_wildcard_tokenizer.NextToken();
+ if (token == "*") {
+ return FindNextTokenInInput(input, empty_or_wildcard_tokenizer, 0)
+ .has_value();
+ }
+ // If the next token is empty we have a filter "||" matching any domain.
+ if (token.empty()) {
+ return true;
+ }
+ }
+ const auto skipped_characters = FindNextTokenInInput(input, tokenizer, 0);
+ if (!skipped_characters) {
+ return false;
+ }
+ return IsValidStartOfHost(*skipped_characters, url);
+
+ } else if (first_token == "*") {
+ return FindNextTokenInInput(input, tokenizer, 0).has_value();
+ } else {
+ // Behave as if the first token is a wildcard, recreate tokenizer to restart
+ // from the first token.
+ return FindNextTokenInInput(input, PatternTokenizer(filter_pattern), 0)
+ .has_value();
+ }
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/subscription/pattern_matcher.h b/components/adblock/core/subscription/pattern_matcher.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/pattern_matcher.h
@@ -0,0 +1,33 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PATTERN_MATCHER_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PATTERN_MATCHER_H_
+
+#include "url/gurl.h"
+
+namespace adblock {
+
+// Returns whether the URL is matched by a filter pattern.
+// Example: filter_pattern "||example.com^" will match url
+// "https://subdomain/example.com/path.png"
+// filter_pattern must NOT be a regex filter
+bool DoesPatternMatchUrl(base::StringPiece filter_pattern, const GURL& url);
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PATTERN_MATCHER_H_
diff --git a/components/adblock/core/subscription/preloaded_subscription_provider.h b/components/adblock/core/subscription/preloaded_subscription_provider.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/preloaded_subscription_provider.h
@@ -0,0 +1,56 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PRELOADED_SUBSCRIPTION_PROVIDER_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PRELOADED_SUBSCRIPTION_PROVIDER_H_
+
+#include <vector>
+
+#include "base/memory/scoped_refptr.h"
+#include "components/adblock/core/subscription/installed_subscription.h"
+#include "components/keyed_service/core/keyed_service.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+// Provides temporary preloaded subscriptions when needed.
+// Preloaded subscriptions are filter lists bundled with the browser. They can
+// be used to provide some level of ad-filtering while waiting for the download
+// of up-to-date filter lists from the Internet.
+class PreloadedSubscriptionProvider {
+ public:
+ virtual ~PreloadedSubscriptionProvider() = default;
+
+ // The collection of preloaded subscriptions returned by
+ // |GetCurrentPreloadedSubscriptions()| is built by comparing the list of
+ // installed (ie. available) subscriptions with the list of pending (ie.
+ // desired) subscriptions.
+ virtual void UpdateSubscriptions(std::vector<GURL> installed_subscriptions,
+ std::vector<GURL> pending_subscriptions) = 0;
+
+ // Returns preloaded subscriptions that were deemed necessary, based on the
+ // difference between pending and installed subscriptions, to provide relevant
+ // temporary ad-filtering. This may include easylist.txt and
+ // exceptionrules.txt. The subscriptions are kept in memory and released when
+ // no longer needed.
+ virtual std::vector<scoped_refptr<InstalledSubscription>>
+ GetCurrentPreloadedSubscriptions() const = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PRELOADED_SUBSCRIPTION_PROVIDER_H_
diff --git a/components/adblock/core/subscription/preloaded_subscription_provider_impl.cc b/components/adblock/core/subscription/preloaded_subscription_provider_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/preloaded_subscription_provider_impl.cc
@@ -0,0 +1,121 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/subscription/preloaded_subscription_provider_impl.h"
+
+#include "base/functional/bind.h"
+#include "base/logging.h"
+#include "base/memory/scoped_refptr.h"
+#include "base/ranges/algorithm.h"
+#include "base/strings/pattern.h"
+#include "base/strings/string_piece.h"
+#include "base/trace_event/trace_event.h"
+#include "components/adblock/core/common/adblock_utils.h"
+#include "components/adblock/core/common/flatbuffer_data.h"
+#include "components/adblock/core/subscription/installed_subscription_impl.h"
+#include "components/adblock/core/subscription/subscription.h"
+#include "components/adblock/core/subscription/subscription_config.h"
+
+namespace adblock {
+namespace {
+
+bool HasSubscriptionWithMatchingUrl(const std::vector<GURL>& collection,
+ base::StringPiece pattern) {
+ return std::find_if(collection.begin(), collection.end(),
+ [pattern](const GURL& url) {
+ return base::MatchPattern(url.spec(), pattern);
+ }) != collection.end();
+}
+
+} // namespace
+
+class PreloadedSubscriptionProviderImpl::SingleSubscriptionProvider {
+ public:
+ explicit SingleSubscriptionProvider(PreloadedSubscriptionInfo info)
+ : info_(info) {}
+
+ void UpdatePreloadedSubscription(
+ const std::vector<GURL>& installed_subscriptions,
+ const std::vector<GURL>& pending_subscriptions) {
+ const bool needs_subscription =
+ HasSubscriptionWithMatchingUrl(pending_subscriptions,
+ info_.url_pattern) &&
+ !HasSubscriptionWithMatchingUrl(installed_subscriptions,
+ info_.url_pattern);
+ if (needs_subscription && !subscription_) {
+ TRACE_EVENT1("eyeo", "Creating preloaded subscription", "url_pattern",
+ info_.url_pattern);
+ subscription_ = base::MakeRefCounted<InstalledSubscriptionImpl>(
+ utils::MakeFlatbufferDataFromResourceBundle(
+ info_.flatbuffer_resource_id),
+ Subscription::InstallationState::Preloaded, base::Time());
+ VLOG(1) << "[eyeo] Preloaded subscription now in use: "
+ << subscription_->GetSourceUrl();
+ } else if (!needs_subscription && subscription_) {
+ VLOG(1) << "[eyeo] Preloaded subscription no longer in use: "
+ << subscription_->GetSourceUrl();
+ subscription_.reset();
+ }
+ }
+
+ scoped_refptr<InstalledSubscription> subscription() const {
+ return subscription_;
+ }
+
+ void Reset() { subscription_.reset(); }
+
+ private:
+ PreloadedSubscriptionInfo info_;
+ scoped_refptr<InstalledSubscription> subscription_;
+};
+
+PreloadedSubscriptionProviderImpl::~PreloadedSubscriptionProviderImpl() =
+ default;
+PreloadedSubscriptionProviderImpl::PreloadedSubscriptionProviderImpl() {
+ for (const auto& info : config::GetPreloadedSubscriptionConfiguration()) {
+ providers_.emplace_back(info);
+ }
+}
+
+void PreloadedSubscriptionProviderImpl::UpdateSubscriptions(
+ std::vector<GURL> installed_subscriptions,
+ std::vector<GURL> pending_subscriptions) {
+ installed_subscriptions_ = std::move(installed_subscriptions);
+ pending_subscriptions_ = std::move(pending_subscriptions);
+ UpdateSubscriptionsInternal();
+}
+
+std::vector<scoped_refptr<InstalledSubscription>>
+PreloadedSubscriptionProviderImpl::GetCurrentPreloadedSubscriptions() const {
+ std::vector<scoped_refptr<InstalledSubscription>> result;
+ for (const auto& provider : providers_) {
+ auto sub = provider.subscription();
+ if (sub) {
+ result.push_back(sub);
+ }
+ }
+ return result;
+}
+
+void PreloadedSubscriptionProviderImpl::UpdateSubscriptionsInternal() {
+ for (auto& provider : providers_) {
+ provider.UpdatePreloadedSubscription(installed_subscriptions_,
+ pending_subscriptions_);
+ }
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/subscription/preloaded_subscription_provider_impl.h b/components/adblock/core/subscription/preloaded_subscription_provider_impl.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/preloaded_subscription_provider_impl.h
@@ -0,0 +1,50 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PRELOADED_SUBSCRIPTION_PROVIDER_IMPL_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PRELOADED_SUBSCRIPTION_PROVIDER_IMPL_H_
+
+#include <vector>
+
+#include "components/adblock/core/subscription/preloaded_subscription_provider.h"
+
+namespace adblock {
+
+class PreloadedSubscriptionProviderImpl final
+ : public PreloadedSubscriptionProvider {
+ public:
+ ~PreloadedSubscriptionProviderImpl() final;
+ PreloadedSubscriptionProviderImpl();
+
+ void UpdateSubscriptions(std::vector<GURL> installed_subscriptions,
+ std::vector<GURL> pending_subscriptions) final;
+
+ std::vector<scoped_refptr<InstalledSubscription>>
+ GetCurrentPreloadedSubscriptions() const final;
+
+ private:
+ void UpdateSubscriptionsInternal();
+
+ class SingleSubscriptionProvider;
+ std::vector<GURL> installed_subscriptions_;
+ std::vector<GURL> pending_subscriptions_;
+ std::vector<SingleSubscriptionProvider> providers_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PRELOADED_SUBSCRIPTION_PROVIDER_IMPL_H_
diff --git a/components/adblock/core/subscription/regex_matcher.cc b/components/adblock/core/subscription/regex_matcher.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/regex_matcher.cc
@@ -0,0 +1,162 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/subscription/regex_matcher.h"
+
+#include "base/logging.h"
+#include "base/memory/ptr_util.h"
+#include "base/notreached.h"
+#include "base/strings/string_util.h"
+#include "base/timer/elapsed_timer.h"
+#include "components/adblock/core/common/adblock_utils.h"
+#include "components/adblock/core/common/regex_filter_pattern.h"
+#include "re2/re2.h"
+#include "re2/stringpiece.h"
+#include "third_party/re2/src/re2/re2.h"
+#include "unicode/utypes.h"
+
+namespace adblock {
+
+RegexMatcher::RegexMatcher() = default;
+RegexMatcher::~RegexMatcher() = default;
+
+void RegexMatcher::PreBuildRegexPatternsWithNoKeyword(
+ const flat::Subscription* index) {
+ base::ElapsedTimer timer;
+ PreBuildPatternsFrom(index->url_csp_allow());
+ PreBuildPatternsFrom(index->url_csp_block());
+ PreBuildPatternsFrom(index->url_document_allow());
+ PreBuildPatternsFrom(index->url_genericblock_allow());
+ PreBuildPatternsFrom(index->url_header_allow());
+ PreBuildPatternsFrom(index->url_popup_allow());
+ PreBuildPatternsFrom(index->url_popup_block());
+ PreBuildPatternsFrom(index->url_elemhide_allow());
+ PreBuildPatternsFrom(index->url_rewrite_allow());
+ PreBuildPatternsFrom(index->url_rewrite_block());
+ PreBuildPatternsFrom(index->url_subresource_allow());
+ PreBuildPatternsFrom(index->url_subresource_block());
+ VLOG(1) << "Added " << CacheSize() << " precompiled regular expressions in "
+ << timer.Elapsed();
+}
+
+void RegexMatcher::PreBuildRegexPattern(base::StringPiece regular_expression,
+ bool case_sensitive) {
+ auto re2_pattern = BuildRe2Expression(regular_expression, case_sensitive);
+ if (re2_pattern) {
+ re2_cache_[std::make_pair(regular_expression, case_sensitive)] =
+ std::move(re2_pattern);
+ } else {
+ auto icu_pattern = BuildIcuExpression(regular_expression, case_sensitive);
+ if (!icu_pattern) {
+ LOG(ERROR) << "Even ICU cannot parse this regular expression, "
+ "this should have been caught during parsing. Will "
+ "ignore this filter: "
+ << regular_expression;
+ return;
+ }
+ icu_cache_[std::make_pair(regular_expression, case_sensitive)] =
+ std::move(icu_pattern);
+ }
+}
+
+bool RegexMatcher::MatchesRegex(base::StringPiece regex_pattern,
+ const GURL& url,
+ bool case_sensitive) const {
+ const base::StringPiece input = url.spec();
+ const auto cache_key = std::make_pair(regex_pattern, case_sensitive);
+
+ const auto cached_re2_expression = re2_cache_.find(cache_key);
+ if (cached_re2_expression != re2_cache_.end()) {
+ return re2::RE2::PartialMatch(input.data(), *cached_re2_expression->second);
+ }
+
+ const auto cached_icu_expression = icu_cache_.find(cache_key);
+ if (cached_icu_expression != icu_cache_.end()) {
+ const icu::UnicodeString icu_input(input.data(), input.length());
+ UErrorCode status = U_ZERO_ERROR;
+ std::unique_ptr<icu::RegexMatcher> regex_matcher = base::WrapUnique(
+ cached_icu_expression->second->matcher(icu_input, status));
+ bool is_match = regex_matcher->find(0, status);
+ DCHECK(U_SUCCESS(status));
+ return is_match;
+ }
+ VLOG(1) << "Matching a non-prebuilt expression, this will be slow";
+ return utils::RegexMatches(regex_pattern, input, case_sensitive);
+}
+
+void RegexMatcher::PreBuildPatternsFrom(const UrlFilterIndex* index) {
+ if (!index) {
+ return;
+ }
+ const auto* idx = index->LookupByKey("");
+ if (!idx) {
+ return;
+ }
+ for (const auto* filter : *(idx->filter())) {
+ if (CacheSize() >= kMaxPrebuiltPatterns) {
+ return;
+ }
+ if (!filter->pattern()) {
+ continue; // This filter has no keyword because it has an empty pattern.
+ }
+ const base::StringPiece filter_string(filter->pattern()->c_str(),
+ filter->pattern()->size());
+ const auto regex_string = ExtractRegexFilterFromPattern(filter_string);
+ if (!regex_string) {
+ continue; // This is not a regex filter.
+ }
+ PreBuildRegexPattern(*regex_string, filter->match_case());
+ }
+}
+
+std::unique_ptr<re2::RE2> RegexMatcher::BuildRe2Expression(
+ base::StringPiece regular_expression,
+ bool case_sensitive) {
+ re2::RE2::Options options;
+ options.set_case_sensitive(case_sensitive);
+ options.set_never_capture(true);
+ options.set_log_errors(false);
+ options.set_encoding(re2::RE2::Options::EncodingLatin1);
+ auto prebuilt_re2 = std::make_unique<re2::RE2>(
+ re2::StringPiece(regular_expression.data(), regular_expression.size()),
+ options);
+ if (!prebuilt_re2->ok()) {
+ return nullptr;
+ }
+ return prebuilt_re2;
+}
+
+std::unique_ptr<icu::RegexPattern> RegexMatcher::BuildIcuExpression(
+ base::StringPiece regular_expression,
+ bool case_sensitive) {
+ const icu::UnicodeString icu_pattern(regular_expression.data(),
+ regular_expression.length());
+ UErrorCode status = U_ZERO_ERROR;
+ const auto icu_case_sensetive = case_sensitive ? 0u : UREGEX_CASE_INSENSITIVE;
+ std::unique_ptr<icu::RegexPattern> prebuilt_pattern = base::WrapUnique(
+ icu::RegexPattern::compile(icu_pattern, icu_case_sensetive, status));
+ if (U_FAILURE(status) || !prebuilt_pattern) {
+ return nullptr;
+ }
+ return prebuilt_pattern;
+}
+
+int RegexMatcher::CacheSize() const {
+ return re2_cache_.size() + icu_cache_.size();
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/subscription/regex_matcher.h b/components/adblock/core/subscription/regex_matcher.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/regex_matcher.h
@@ -0,0 +1,73 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_REGEX_MATCHER_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_REGEX_MATCHER_H_
+
+#include <map>
+#include "components/adblock/core/schema/filter_list_schema_generated.h"
+#include "third_party/icu/source/i18n/unicode/regex.h"
+#include "third_party/re2/src/re2/re2.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+class RegexMatcher {
+ public:
+ RegexMatcher();
+ ~RegexMatcher();
+ RegexMatcher(const RegexMatcher&) = delete;
+ RegexMatcher(RegexMatcher&&) = delete;
+ RegexMatcher& operator=(const RegexMatcher&) = delete;
+ RegexMatcher& operator=(RegexMatcher&&) = delete;
+
+ // Max number of patterns that PreBuildRegexPatternsWithNoKeyword() will
+ // build and store in memory. If there are more regex patterns in |index|,
+ // they will not be pre-built and MatchesRegex() will build them on demand.
+ static constexpr int kMaxPrebuiltPatterns = 500;
+
+ // Regex patterns that have no keyword attached must be matched to every URL.
+ // There are typically few of them and they are matched very often, so
+ // pre-build them.
+ void PreBuildRegexPatternsWithNoKeyword(const flat::Subscription* index);
+ void PreBuildRegexPattern(base::StringPiece regular_expression,
+ bool case_sensitive);
+
+ bool MatchesRegex(base::StringPiece regex_pattern,
+ const GURL& url,
+ bool case_sensitive) const;
+
+ private:
+ using UrlFilterIndex =
+ flatbuffers::Vector<flatbuffers::Offset<flat::UrlFiltersByKeyword>>;
+ void PreBuildPatternsFrom(const UrlFilterIndex* index);
+ std::unique_ptr<re2::RE2> BuildRe2Expression(
+ base::StringPiece regular_expression,
+ bool case_sensitive);
+ std::unique_ptr<icu::RegexPattern> BuildIcuExpression(
+ base::StringPiece regular_expression,
+ bool case_sensitive);
+ int CacheSize() const;
+
+ using CacheKey = std::tuple<base::StringPiece, bool>;
+ std::map<CacheKey, std::unique_ptr<re2::RE2>> re2_cache_;
+ std::map<CacheKey, std::unique_ptr<icu::RegexPattern>> icu_cache_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_REGEX_MATCHER_H_
diff --git a/components/adblock/core/subscription/subscription.cc b/components/adblock/core/subscription/subscription.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription.cc
@@ -0,0 +1,24 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/subscription/subscription.h"
+
+namespace adblock {
+
+Subscription::~Subscription() = default;
+
+} // namespace adblock
diff --git a/components/adblock/core/subscription/subscription.h b/components/adblock/core/subscription/subscription.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription.h
@@ -0,0 +1,78 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_H_
+
+#include <string>
+
+#include "base/memory/ref_counted.h"
+#include "base/time/time.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+// Represents a single filter list, ex. Easylist French or Acceptable Ads.
+// Read-only and thread-safe.
+class Subscription : public base::RefCountedThreadSafe<Subscription> {
+ public:
+ enum class InstallationState {
+ // Subscription is installed and in use.
+ Installed,
+ // A preloaded version of this subscription is in use, a full version is
+ // likely being downloaded from the Internet.
+ Preloaded,
+ // Subscription is being downloaded and not yet in use. No preloaded
+ // substitute is available.
+ Installing,
+ // State is unknown when FilteringConfiguration is disabled.
+ Unknown,
+ };
+ // Returns the URL of the text version of the subscription, ex.
+ // https://easylist-downloads.adblockplus.org/easylist.txt.
+ // Note that this may be different than the URL from which the subscription
+ // was downloaded.
+ virtual GURL GetSourceUrl() const = 0;
+
+ // Returns the value of the `! Title:` field of the filter list, ex. "EasyList
+ // Germany+EasyList". This is an optional field and may be empty.
+ virtual std::string GetTitle() const = 0;
+
+ // Returns the value of the `! Version:` field of the filter list, ex.
+ // "202108191121". This is an optional field and may be empty.
+ virtual std::string GetCurrentVersion() const = 0;
+
+ // Returns whether this subscription is installed and in use, or whether it's
+ // still being downloaded.
+ virtual InstallationState GetInstallationState() const = 0;
+
+ // Returns the time the subscription was installed or last updated.
+ // Only valid when GetInstallationState() returns Installed, otherwise zero.
+ virtual base::Time GetInstallationTime() const = 0;
+
+ // Returns amount of time until subscription expires.
+ // Typically, update checks are performed once per expiration interval.
+ virtual base::TimeDelta GetExpirationInterval() const = 0;
+
+ protected:
+ friend class base::RefCountedThreadSafe<Subscription>;
+ virtual ~Subscription();
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_H_
diff --git a/components/adblock/core/subscription/subscription_collection.h b/components/adblock/core/subscription/subscription_collection.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_collection.h
@@ -0,0 +1,98 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_COLLECTION_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_COLLECTION_H_
+
+#include <set>
+#include <vector>
+
+#include "absl/types/optional.h"
+#include "base/containers/span.h"
+#include "base/strings/string_piece.h"
+#include "base/values.h"
+#include "components/adblock/core/common/content_type.h"
+#include "components/adblock/core/common/header_filter_data.h"
+#include "components/adblock/core/common/sitekey.h"
+#include "components/adblock/core/subscription/installed_subscription.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+// Represents a collection of all currently active Subscriptions and allows
+// bulk queries to be made towards all of them.
+// Represents a snapshot of a state of the browser.
+// Cheap to create and copy, non-mutable and thread-safe.
+class SubscriptionCollection {
+ public:
+ virtual ~SubscriptionCollection() = default;
+
+ // Name of the FilteringConfiguration this collection represents
+ virtual const std::string& GetFilteringConfigurationName() const = 0;
+
+ virtual absl::optional<GURL> FindBySubresourceFilter(
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ ContentType content_type,
+ const SiteKey& sitekey,
+ FilterCategory category) const = 0;
+ virtual absl::optional<GURL> FindByPopupFilter(
+ const GURL& popup_url,
+ const std::vector<GURL>& frame_hierarchy,
+ const SiteKey& sitekey,
+ FilterCategory category) const = 0;
+ virtual absl::optional<GURL> FindByAllowFilter(
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ ContentType content_type,
+ const SiteKey& sitekey) const = 0;
+ virtual absl::optional<GURL> FindBySpecialFilter(
+ SpecialFilterType filter_type,
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ const SiteKey& sitekey) const = 0;
+
+ virtual std::vector<base::StringPiece> GetElementHideSelectors(
+ const GURL& frame_url,
+ const std::vector<GURL>& frame_hierarchy,
+ const SiteKey& sitekey) const = 0;
+ virtual std::vector<base::StringPiece> GetElementHideEmulationSelectors(
+ const GURL& frame_url) const = 0;
+
+ virtual base::Value::List GenerateSnippets(
+ const GURL& frame_url,
+ const std::vector<GURL>& frame_hierarchy) const = 0;
+
+ virtual std::set<base::StringPiece> GetCspInjections(
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy) const = 0;
+
+ virtual std::set<base::StringPiece> GetRewriteFilters(
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ FilterCategory category) const = 0;
+
+ virtual std::set<HeaderFilterData> GetHeaderFilters(
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ ContentType content_type,
+ FilterCategory category) const = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_COLLECTION_H_
diff --git a/components/adblock/core/subscription/subscription_collection_impl.cc b/components/adblock/core/subscription/subscription_collection_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_collection_impl.cc
@@ -0,0 +1,353 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/subscription/subscription_collection_impl.h"
+
+#include <algorithm>
+#include <numeric>
+#include <string>
+#include <vector>
+
+#include "base/ranges/algorithm.h"
+#include "components/adblock/core/common/adblock_utils.h"
+
+namespace adblock {
+namespace {
+
+std::string DocumentDomain(const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy) {
+ return frame_hierarchy.empty() ? request_url.host()
+ : frame_hierarchy[0].host();
+}
+
+std::vector<base::StringPiece> ReduceSelectors(
+ InstalledSubscription::Selectors& combined_selectors) {
+ // Populate result with blocking selectors.
+ std::vector<base::StringPiece> final_selectors =
+ std::move(combined_selectors.elemhide_selectors);
+ // Remove exceptions.
+ final_selectors.erase(
+ std::remove_if(
+ final_selectors.begin(), final_selectors.end(),
+ [&](const auto& selector) {
+ return std::find(combined_selectors.elemhide_exceptions.begin(),
+ combined_selectors.elemhide_exceptions.end(),
+ selector) !=
+ combined_selectors.elemhide_exceptions.end();
+ }),
+ final_selectors.end());
+ return final_selectors;
+}
+
+bool SubscriptionContainsSpecialFilter(
+ const scoped_refptr<adblock::InstalledSubscription> subscription,
+ SpecialFilterType filter_type,
+ const std::vector<GURL>& frame_hierarchy,
+ const SiteKey& sitekey) {
+ for (auto it = frame_hierarchy.begin(); it < frame_hierarchy.end(); ++it) {
+ const GURL& current_url = *it;
+ const std::string& current_domain = std::next(it) != frame_hierarchy.end()
+ ? std::next(it)->host()
+ : current_url.host();
+ if (subscription->HasSpecialFilter(filter_type, current_url, current_domain,
+ sitekey)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+bool HasAllowFilter(
+ const scoped_refptr<adblock::InstalledSubscription> subscription,
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ ContentType content_type,
+ const SiteKey& sitekey) {
+ if (subscription->HasUrlFilter(
+ request_url, DocumentDomain(request_url, frame_hierarchy),
+ content_type, sitekey, FilterCategory::Allowing)) {
+ return true;
+ }
+ if (SubscriptionContainsSpecialFilter(subscription,
+ SpecialFilterType::Document,
+ frame_hierarchy, sitekey)) {
+ return true;
+ }
+ return false;
+}
+
+bool HasSpecialFilter(
+ const scoped_refptr<adblock::InstalledSubscription> subscription,
+ SpecialFilterType filter_type,
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ const SiteKey& sitekey) {
+ if (subscription->HasSpecialFilter(
+ filter_type, request_url,
+ DocumentDomain(request_url, frame_hierarchy), sitekey)) {
+ return true;
+ }
+ return SubscriptionContainsSpecialFilter(subscription, filter_type,
+ frame_hierarchy, sitekey);
+}
+
+} // namespace
+
+SubscriptionCollectionImpl::SubscriptionCollectionImpl(
+ std::vector<scoped_refptr<InstalledSubscription>> current_state,
+ const std::string& configuration_name)
+ : subscriptions_(std::move(current_state)),
+ configuration_name_(configuration_name) {}
+
+SubscriptionCollectionImpl::~SubscriptionCollectionImpl() = default;
+SubscriptionCollectionImpl::SubscriptionCollectionImpl(
+ const SubscriptionCollectionImpl&) = default;
+SubscriptionCollectionImpl::SubscriptionCollectionImpl(
+ SubscriptionCollectionImpl&&) = default;
+SubscriptionCollectionImpl& SubscriptionCollectionImpl::operator=(
+ const SubscriptionCollectionImpl&) = default;
+SubscriptionCollectionImpl& SubscriptionCollectionImpl::operator=(
+ SubscriptionCollectionImpl&&) = default;
+
+const std::string& SubscriptionCollectionImpl::GetFilteringConfigurationName()
+ const {
+ return configuration_name_;
+}
+
+absl::optional<GURL> SubscriptionCollectionImpl::FindBySubresourceFilter(
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ ContentType content_type,
+ const SiteKey& sitekey,
+ FilterCategory category) const {
+ const auto subscription = std::find_if(
+ subscriptions_.begin(), subscriptions_.end(),
+ [&](const auto& subscription) {
+ return subscription->HasUrlFilter(
+ request_url, DocumentDomain(request_url, frame_hierarchy),
+ content_type, sitekey, category);
+ });
+ if (subscription != subscriptions_.end()) {
+ return (*subscription)->GetSourceUrl();
+ }
+ return absl::nullopt;
+}
+
+absl::optional<GURL> SubscriptionCollectionImpl::FindByPopupFilter(
+ const GURL& popup_url,
+ const std::vector<GURL>& frame_hierarchy,
+ const SiteKey& sitekey,
+ FilterCategory category) const {
+ const auto subscription =
+ std::find_if(subscriptions_.begin(), subscriptions_.end(),
+ [&](const auto& subscription) {
+ return subscription->HasPopupFilter(
+ popup_url, DocumentDomain(popup_url, frame_hierarchy),
+ sitekey, category);
+ });
+ if (subscription != subscriptions_.end()) {
+ return (*subscription)->GetSourceUrl();
+ }
+ return absl::nullopt;
+}
+
+absl::optional<GURL> SubscriptionCollectionImpl::FindByAllowFilter(
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ ContentType content_type,
+ const SiteKey& sitekey) const {
+ for (const auto& subscription : subscriptions_) {
+ if (HasAllowFilter(subscription, request_url, frame_hierarchy, content_type,
+ sitekey)) {
+ return (*subscription).GetSourceUrl();
+ }
+ }
+ return absl::nullopt;
+}
+
+absl::optional<GURL> SubscriptionCollectionImpl::FindBySpecialFilter(
+ SpecialFilterType filter_type,
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ const SiteKey& sitekey) const {
+ for (const auto& subscription : subscriptions_) {
+ if (HasSpecialFilter(subscription, filter_type, request_url,
+ frame_hierarchy, sitekey)) {
+ return (*subscription).GetSourceUrl();
+ }
+ }
+ return absl::nullopt;
+}
+
+std::vector<base::StringPiece>
+SubscriptionCollectionImpl::GetElementHideSelectors(
+ const GURL& frame_url,
+ const std::vector<GURL>& frame_hierarchy,
+ const SiteKey& sitekey) const {
+ const bool domain_specific = !!FindBySpecialFilter(
+ SpecialFilterType::Generichide, frame_url, frame_hierarchy, sitekey);
+
+ InstalledSubscription::Selectors combined_selectors;
+ for (const auto& subscription : subscriptions_) {
+ auto selectors =
+ subscription->GetElemhideSelectors(frame_url, domain_specific);
+ std::move(selectors.elemhide_selectors.begin(),
+ selectors.elemhide_selectors.end(),
+ std::back_inserter(combined_selectors.elemhide_selectors));
+ std::move(selectors.elemhide_exceptions.begin(),
+ selectors.elemhide_exceptions.end(),
+ std::back_inserter(combined_selectors.elemhide_exceptions));
+ }
+ return ReduceSelectors(combined_selectors);
+}
+
+std::vector<base::StringPiece>
+SubscriptionCollectionImpl::GetElementHideEmulationSelectors(
+ const GURL& frame_url) const {
+ InstalledSubscription::Selectors combined_selectors;
+ for (const auto& subscription : subscriptions_) {
+ auto selectors = subscription->GetElemhideEmulationSelectors(frame_url);
+ std::move(selectors.elemhide_selectors.begin(),
+ selectors.elemhide_selectors.end(),
+ std::back_inserter(combined_selectors.elemhide_selectors));
+ std::move(selectors.elemhide_exceptions.begin(),
+ selectors.elemhide_exceptions.end(),
+ std::back_inserter(combined_selectors.elemhide_exceptions));
+ }
+ return ReduceSelectors(combined_selectors);
+}
+
+base::Value::List SubscriptionCollectionImpl::GenerateSnippets(
+ const GURL& frame_url,
+ const std::vector<GURL>& frame_hierarchy) const {
+ base::Value::List snippets;
+ auto document_domain = DocumentDomain(frame_url, frame_hierarchy);
+
+ for (const auto& subscription : subscriptions_) {
+ auto matched = subscription->MatchSnippets(document_domain);
+ for (const auto& snippet : matched) {
+ base::Value::List call;
+ call.Append(base::Value(snippet.command));
+ for (const auto& arg : snippet.arguments) {
+ call.Append(base::Value(arg));
+ }
+ snippets.Append(std::move(call));
+ }
+ }
+
+ return snippets;
+}
+
+std::set<base::StringPiece> SubscriptionCollectionImpl::GetCspInjections(
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy) const {
+ std::set<base::StringPiece> blocking_filters{};
+ std::set<base::StringPiece> allowing_filters{};
+ for (const auto& subscription : subscriptions_) {
+ subscription->FindCspFilters(request_url,
+ DocumentDomain(request_url, frame_hierarchy),
+ FilterCategory::Blocking, blocking_filters);
+ }
+ if (blocking_filters.empty()) {
+ return {};
+ }
+
+ // If blocking filters found, check if can be overruled by allowing filters.
+ for (const auto& subscription : subscriptions_) {
+ // There may exist an allowing rule for this request and its immediate
+ // parent frame. We also check for document-wide allowing filters.
+ if (HasSpecialFilter(subscription, SpecialFilterType::Document, request_url,
+ frame_hierarchy, SiteKey())) {
+ return {};
+ }
+ subscription->FindCspFilters(request_url,
+ DocumentDomain(request_url, frame_hierarchy),
+ FilterCategory::Allowing, allowing_filters);
+ }
+
+ // Remove overruled filters.
+ for (const auto& a_f : allowing_filters) {
+ if (a_f.empty()) {
+ return {};
+ }
+ blocking_filters.erase(a_f);
+ }
+ if (blocking_filters.empty()) {
+ return {};
+ }
+
+ // Last chance to avoid blocking: maybe there is a Genericblock filter and
+ // we should re-search for domain-specific filters only?
+ if (base::ranges::any_of(subscriptions_, [&](const auto& sub) {
+ return HasSpecialFilter(sub, SpecialFilterType::Genericblock,
+ request_url, frame_hierarchy, SiteKey());
+ })) {
+ // This is a relatively rare case - we should have searched for
+ // domain-specific filters only.
+ std::set<base::StringPiece> domain_specific_blocking{};
+ for (const auto& subscription : subscriptions_) {
+ subscription->FindCspFilters(
+ request_url, DocumentDomain(request_url, frame_hierarchy),
+ FilterCategory::DomainSpecificBlocking, domain_specific_blocking);
+ // There is a domain-specific blocking filter. No point in
+ // searching for a domain-specific allowing filter, since the
+ // previous search for non-specific allowing filters would have found
+ // it.
+ }
+ if (!domain_specific_blocking.empty()) {
+ for (const auto& a_f : allowing_filters) {
+ if (a_f.empty()) {
+ return {};
+ }
+ domain_specific_blocking.erase(a_f);
+ }
+ }
+
+ return domain_specific_blocking;
+ }
+
+ return blocking_filters;
+}
+
+std::set<base::StringPiece> SubscriptionCollectionImpl::GetRewriteFilters(
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ FilterCategory category) const {
+ std::set<base::StringPiece> result;
+ for (const auto& subscription : subscriptions_) {
+ const auto filters = subscription->FindRewriteFilters(
+ request_url, DocumentDomain(request_url, frame_hierarchy), category);
+ result.insert(filters.begin(), filters.end());
+ }
+ return result;
+}
+
+std::set<HeaderFilterData> SubscriptionCollectionImpl::GetHeaderFilters(
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ ContentType content_type,
+ FilterCategory category) const {
+ std::set<HeaderFilterData> filters{};
+ for (const auto& subscription : subscriptions_) {
+ subscription->FindHeaderFilters(
+ request_url, content_type, DocumentDomain(request_url, frame_hierarchy),
+ category, filters);
+ }
+ return filters;
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/subscription/subscription_collection_impl.h b/components/adblock/core/subscription/subscription_collection_impl.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_collection_impl.h
@@ -0,0 +1,97 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_COLLECTION_IMPL_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_COLLECTION_IMPL_H_
+
+#include <vector>
+
+#include "base/containers/span.h"
+#include "base/memory/scoped_refptr.h"
+#include "components/adblock/core/subscription/subscription_collection.h"
+
+namespace adblock {
+
+class SubscriptionCollectionImpl final : public SubscriptionCollection {
+ public:
+ explicit SubscriptionCollectionImpl(
+ std::vector<scoped_refptr<InstalledSubscription>> current_state,
+ const std::string& configuration_name);
+ ~SubscriptionCollectionImpl() final;
+ SubscriptionCollectionImpl(const SubscriptionCollectionImpl&);
+ SubscriptionCollectionImpl(SubscriptionCollectionImpl&&);
+ SubscriptionCollectionImpl& operator=(const SubscriptionCollectionImpl&);
+ SubscriptionCollectionImpl& operator=(SubscriptionCollectionImpl&&);
+
+ const std::string& GetFilteringConfigurationName() const final;
+
+ absl::optional<GURL> FindBySubresourceFilter(
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ ContentType content_type,
+ const SiteKey& sitekey,
+ FilterCategory category) const final;
+
+ absl::optional<GURL> FindByPopupFilter(
+ const GURL& popup_url,
+ const std::vector<GURL>& frame_hierarchy,
+ const SiteKey& sitekey,
+ FilterCategory category) const final;
+
+ absl::optional<GURL> FindByAllowFilter(
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ ContentType content_type,
+ const SiteKey& sitekey) const final;
+
+ absl::optional<GURL> FindBySpecialFilter(
+ SpecialFilterType filter_type,
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ const SiteKey& sitekey) const final;
+
+ std::vector<base::StringPiece> GetElementHideSelectors(
+ const GURL& frame_url,
+ const std::vector<GURL>& frame_hierarchy,
+ const SiteKey& sitekey) const final;
+ std::vector<base::StringPiece> GetElementHideEmulationSelectors(
+ const GURL& frame_url) const final;
+ base::Value::List GenerateSnippets(
+ const GURL& frame_url,
+ const std::vector<GURL>& frame_hierarchy) const final;
+ std::set<base::StringPiece> GetCspInjections(
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy) const final;
+ std::set<base::StringPiece> GetRewriteFilters(
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ FilterCategory category) const final;
+
+ std::set<HeaderFilterData> GetHeaderFilters(
+ const GURL& request_url,
+ const std::vector<GURL>& frame_hierarchy,
+ ContentType content_type,
+ FilterCategory category) const final;
+
+ private:
+ std::vector<scoped_refptr<InstalledSubscription>> subscriptions_;
+ std::string configuration_name_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_COLLECTION_IMPL_H_
diff --git a/components/adblock/core/subscription/subscription_config.cc b/components/adblock/core/subscription/subscription_config.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_config.cc
@@ -0,0 +1,338 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/subscription/subscription_config.h"
+
+#include "components/adblock/core/common/adblock_constants.h"
+#include "components/grit/components_resources.h"
+
+namespace {
+int g_port_for_testing = 0;
+
+std::string GetHost() {
+ GURL url("https://easylist-downloads.adblockplus.org");
+ if (!g_port_for_testing) {
+ return url.spec();
+ }
+ GURL::Replacements replacements;
+ const std::string port_str = base::NumberToString(g_port_for_testing);
+ replacements.SetPortStr(port_str);
+ return url.ReplaceComponents(replacements).spec();
+}
+} // namespace
+
+namespace adblock {
+
+const GURL& AcceptableAdsUrl() {
+ static GURL kAcceptableAds(GetHost() + "exceptionrules.txt");
+ return kAcceptableAds;
+}
+
+const GURL& AntiCVUrl() {
+ static GURL kAntiCV(GetHost() + "abp-filters-anti-cv.txt");
+ return kAntiCV;
+}
+
+const GURL& DefaultSubscriptionUrl() {
+ static GURL kEasylistUrl(GetHost() + "easylist.txt");
+ return kEasylistUrl;
+}
+
+KnownSubscriptionInfo::KnownSubscriptionInfo() = default;
+KnownSubscriptionInfo::~KnownSubscriptionInfo() = default;
+KnownSubscriptionInfo::KnownSubscriptionInfo(const KnownSubscriptionInfo&) =
+ default;
+KnownSubscriptionInfo::KnownSubscriptionInfo(KnownSubscriptionInfo&&) = default;
+KnownSubscriptionInfo& KnownSubscriptionInfo::operator=(
+ const KnownSubscriptionInfo&) = default;
+KnownSubscriptionInfo& KnownSubscriptionInfo::operator=(
+ KnownSubscriptionInfo&&) = default;
+
+KnownSubscriptionInfo::KnownSubscriptionInfo(
+ GURL url_param,
+ std::string title_param,
+ std::vector<std::string> languages_param,
+ SubscriptionUiVisibility ui_visibility_param,
+ SubscriptionFirstRunBehavior first_run_param,
+ SubscriptionPrivilegedFilterStatus privileged_status_param)
+ : url(url_param),
+ title(title_param),
+ languages(languages_param),
+ ui_visibility(ui_visibility_param),
+ first_run(first_run_param),
+ privileged_status(privileged_status_param) {}
+
+const std::vector<KnownSubscriptionInfo>& config::GetKnownSubscriptions() {
+ // The current list of subscriptions can be downloaded from:
+ // https://gitlab.com/eyeo/filterlists/subscriptionlist/-/archive/master/subscriptionlist-master.tar.gz
+ // The archive contains files with subscription definitions. The ones we're
+ // interested in are ones that declare a [recommendation] keyword in either
+ // the "list" or "variant" key.
+ // Here's a script that parses the archive into a subscriptions.json:
+ // https://gitlab.com/eyeo/adblockplus/abc/adblockpluscore/-/blob/next/build/updateSubscriptions.js
+ // The list isn't updated very often. If it starts to become a burden to
+ // align the C++ representation, better to update it manually because it also
+ // contains visibility and first run behavior options.
+ static std::vector<KnownSubscriptionInfo> recommendations = {
+ {GURL(GetHost() + "abpindo+easylist.txt"),
+ "ABPindo+EasyList",
+ {"id", "ms"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "abpvn+easylist.txt"),
+ "ABPVN List+EasyList",
+ {"vi"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "bulgarian_list+easylist.txt"),
+ "Bulgarian list+EasyList",
+ {"bg"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "dandelion_sprouts_nordic_filters+easylist.txt"),
+ "Dandelion Sprout's Nordic Filters+EasyList",
+ {"no", "nb", "nn", "da", "is", "fo", "kl"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {DefaultSubscriptionUrl(),
+ "EasyList",
+ {"en"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "easylistchina+easylist.txt"),
+ "EasyList China+EasyList",
+ {"zh"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "easylistczechslovak+easylist.txt"),
+ "EasyList Czech and Slovak+EasyList",
+ {"cs", "sk"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "easylistdutch+easylist.txt"),
+ "EasyList Dutch+EasyList",
+ {"nl"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "easylistgermany+easylist.txt"),
+ "EasyList Germany+EasyList",
+ {"de"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "israellist+easylist.txt"),
+ "EasyList Hebrew+EasyList",
+ {"he"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "easylistitaly+easylist.txt"),
+ "EasyList Italy+EasyList",
+ {"it"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "easylistlithuania+easylist.txt"),
+ "EasyList Lithuania+EasyList",
+ {"lt"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "easylistpolish+easylist.txt"),
+ "EasyList Polish+EasyList",
+ {"pl"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "easylistportuguese+easylist.txt"),
+ "EasyList Portuguese+EasyList",
+ {"pt"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "easylistspanish+easylist.txt"),
+ "EasyList Spanish+EasyList",
+ {"es"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "global-filters+easylist.txt"),
+ "Global Filters+EasyList",
+ {"th", "el", "sl", "hr", "sr", "bs"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "indianlist+easylist.txt"),
+ "IndianList+EasyList",
+ {"bn", "gu", "hi", "pa", "as", "mr", "ml", "te", "kn", "or", "ne", "si"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "japanese-filters+easylist.txt"),
+ "Japanese Filters+EasyList",
+ {"ja"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "koreanlist+easylist.txt"),
+ "KoreanList+EasyList",
+ {"ko"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "latvianlist+easylist.txt"),
+ "Latvian List+EasyList",
+ {"lv"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "liste_ar+liste_fr+easylist.txt"),
+ "Liste AR+Liste FR+EasyList",
+ {"ar"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "liste_fr+easylist.txt"),
+ "Liste FR+EasyList",
+ {"fr"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "rolist+easylist.txt"),
+ "ROList+EasyList",
+ {"ro"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "ruadlist+easylist.txt"),
+ "RuAdList+EasyList",
+ {"ru", "uk", "uz", "kk"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "turkish-filters+easylist.txt"),
+ "Turkish Filters+EasyList",
+ {"tr"},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {AcceptableAdsUrl(),
+ "Acceptable Ads",
+ {},
+ SubscriptionUiVisibility::Invisible,
+ SubscriptionFirstRunBehavior::Subscribe,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {AntiCVUrl(),
+ "ABP filters",
+ {},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::Subscribe,
+ SubscriptionPrivilegedFilterStatus::Allowed},
+ {GURL(GetHost() + "i_dont_care_about_cookies.txt"),
+ "I don't care about cookies",
+ {},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::Ignore,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + ""
+ "fanboy-notifications.txt"),
+ "Fanboy's Notifications Blocking List",
+ {},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::Ignore,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "easyprivacy.txt"),
+ "EasyPrivacy",
+ {},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::Ignore,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {GURL(GetHost() + "fanboy-social.txt"),
+ "Fanboy's Social Blocking List",
+ {},
+ SubscriptionUiVisibility::Visible,
+ SubscriptionFirstRunBehavior::Ignore,
+ SubscriptionPrivilegedFilterStatus::Forbidden},
+ {CustomFiltersUrl(),
+ "User filters",
+ {},
+ SubscriptionUiVisibility::Invisible,
+ SubscriptionFirstRunBehavior::Ignore,
+ SubscriptionPrivilegedFilterStatus::Allowed},
+ {TestPagesSubscriptionUrl(),
+ "ABP Test filters",
+ {},
+ SubscriptionUiVisibility::Invisible,
+ SubscriptionFirstRunBehavior::Ignore,
+ SubscriptionPrivilegedFilterStatus::Allowed}
+
+ // You can customize subscriptions available on first run and in settings
+ // here. Items are displayed in settings in order declared here. See
+ // components/adblock/docs/integration-how-to.md, section 'How to change
+ // the default filter lists?'. For example:
+
+ // clang-format off
+ /*
+ {"https://domain.com/subscription.txt", // URL
+ "My Custom Filters", // Display name for settings
+ {}, // Supported languages list, considered for
+ // SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch
+ SubscriptionUiVisibility::Visible, // Should the app show a subscription in the settings
+ SubscriptionFirstRunBehavior::Subscribe, // Should the app subscribe on first run
+ SubscriptionPrivilegedFilterStatus::Forbidden // Allow or forbid snippets and header filters
+ },
+ */
+ // clang-format on
+
+ };
+
+ return recommendations;
+}
+
+bool config::AllowPrivilegedFilters(const GURL& url) {
+ for (const auto& cur : GetKnownSubscriptions()) {
+ if (cur.url == url) {
+ return cur.privileged_status ==
+ SubscriptionPrivilegedFilterStatus::Allowed;
+ }
+ }
+
+ return false;
+}
+
+const std::vector<PreloadedSubscriptionInfo>&
+config::GetPreloadedSubscriptionConfiguration() {
+ static const std::vector<PreloadedSubscriptionInfo> preloaded_subscriptions =
+ {{"*easylist.txt", IDR_ADBLOCK_FLATBUFFER_EASYLIST},
+ {"*exceptionrules.txt", IDR_ADBLOCK_FLATBUFFER_EXCEPTIONRULES},
+ {"*abp-filters-anti-cv.txt", IDR_ADBLOCK_FLATBUFFER_ANTICV}};
+ return preloaded_subscriptions;
+}
+
+void SetFilterListServerPortForTesting(int port_for_testing) {
+ g_port_for_testing = port_for_testing;
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/subscription/subscription_config.h b/components/adblock/core/subscription/subscription_config.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_config.h
@@ -0,0 +1,120 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_CONFIG_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_CONFIG_H_
+
+#include <vector>
+
+#include "url/gurl.h"
+
+namespace adblock {
+
+const GURL& AcceptableAdsUrl();
+const GURL& AntiCVUrl();
+const GURL& DefaultSubscriptionUrl();
+
+// Sets the port used by the embedded http server required for browser tests.
+// Must be called before the first call to GetKnownSubscriptions().
+void SetFilterListServerPortForTesting(int port_for_testing);
+
+enum class SubscriptionUiVisibility { Visible, Invisible };
+
+enum class SubscriptionFirstRunBehavior {
+ // Download and install as soon as possible.
+ Subscribe,
+ // Download and install as soon as possible but only if the device's region
+ // matches one of the |languages| defined in KnownSubscriptionInfo.
+ SubscribeIfLocaleMatch,
+ // Do not install automatically.
+ Ignore
+};
+
+// Privileged filters include:
+// - Snippet filters
+// - Header filters
+enum class SubscriptionPrivilegedFilterStatus { Allowed, Forbidden };
+
+// Description of a subscription that's known to exist in the Internet.
+// Can be used to populate a list of proposed or recommended subscriptions in
+// UI.
+struct KnownSubscriptionInfo {
+ KnownSubscriptionInfo();
+ KnownSubscriptionInfo(GURL url,
+ std::string title,
+ std::vector<std::string> languages,
+ SubscriptionUiVisibility ui_visibility,
+ SubscriptionFirstRunBehavior first_run,
+ SubscriptionPrivilegedFilterStatus privileged_status);
+ ~KnownSubscriptionInfo();
+ KnownSubscriptionInfo(const KnownSubscriptionInfo&);
+ KnownSubscriptionInfo(KnownSubscriptionInfo&&);
+ KnownSubscriptionInfo& operator=(const KnownSubscriptionInfo&);
+ KnownSubscriptionInfo& operator=(KnownSubscriptionInfo&&);
+
+ GURL url;
+ std::string title;
+ std::vector<std::string> languages;
+ SubscriptionUiVisibility ui_visibility = SubscriptionUiVisibility::Visible;
+ SubscriptionFirstRunBehavior first_run =
+ SubscriptionFirstRunBehavior::Subscribe;
+ SubscriptionPrivilegedFilterStatus privileged_status =
+ SubscriptionPrivilegedFilterStatus::Forbidden;
+};
+
+// Describes an available preloaded subscription that will be used to provide
+// some level of ad-filtering while a desired subscription is being downloaded
+// from the Internet.
+// Preloaded subscriptions are bundled with the browser and stored in the
+// ResourceBundle. They might be out-of-date and have reduced quality, but they
+// allow some level of ad-filtering immediately upon first start.
+struct PreloadedSubscriptionInfo {
+ // Wildcard-aware pattern that matches subscription URL. Examples:
+ // "*easylist.txt" (will match URLs like
+ // https://easylist-downloads.adblockplus.org/easylist.txt or
+ // https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt).
+ // This preloaded subscription will be used as a substitute for a
+ // subscription with a URL that matches |url_pattern|.
+ base::StringPiece url_pattern;
+
+ // Resource ID containing the binary flatbuffer data that defines this
+ // preloaded subscription. Examples:
+ // IDR_ADBLOCK_FLATBUFFER_EASYLIST
+ int flatbuffer_resource_id;
+};
+
+namespace config {
+
+// Returns the list of all known subscriptions. This list is static
+// and may change with browser updates, but not with filter list updates.
+// The list contains recommendations for all languages.
+const std::vector<KnownSubscriptionInfo>& GetKnownSubscriptions();
+
+// Returns whether a subscription from |url| is allowed to provide
+// privileged filters.
+bool AllowPrivilegedFilters(const GURL& url);
+
+// Returns the configuration of available preloaded subscriptions. Used by
+// PreloadedSubscriptionProvider.
+const std::vector<PreloadedSubscriptionInfo>&
+GetPreloadedSubscriptionConfiguration();
+
+} // namespace config
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_CONFIG_H_
diff --git a/components/adblock/core/subscription/subscription_downloader.h b/components/adblock/core/subscription/subscription_downloader.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_downloader.h
@@ -0,0 +1,66 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_DOWNLOADER_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_DOWNLOADER_H_
+
+#include <vector>
+
+#include "base/functional/callback.h"
+#include "components/adblock/core/common/flatbuffer_data.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+// Downloads filter lists from the Internet and converts them into flatbuffers.
+// See also: OngoingSubscriptionRequest for more details about allowing and
+// retrying downloads.
+class SubscriptionDownloader {
+ public:
+ using DownloadCompletedCallback =
+ base::OnceCallback<void(std::unique_ptr<FlatbufferData>)>;
+
+ // For head requests we only need the parsed version as result
+ using HeadRequestCallback = base::OnceCallback<void(const std::string)>;
+ // Controls retry behavior when download or conversion failed.
+ enum class RetryPolicy {
+ // Will retry with a progressive back-off until download succeeded.
+ RetryUntilSucceeded,
+ // Will only try to download and convert the subscription once.
+ DoNotRetry,
+ };
+ virtual ~SubscriptionDownloader() = default;
+ // Starts downlading |subscription_url|. |on_finished| will be called with
+ // the converted flatbuffer. |retry_policy| controls failure-handling
+ // behavior. If downloading is disallowed due to current network state, it is
+ // deferred until conditions allow it.
+ virtual void StartDownload(const GURL& subscription_url,
+ RetryPolicy retry_policy,
+ DownloadCompletedCallback on_finished) = 0;
+ // Cancels ongoing downloads for matching |url|, including retry attempts or
+ // downloads deferred due to network conditions.
+ virtual void CancelDownload(const GURL& subscription_url) = 0;
+ // Triggers head request on |subscription_url|. |on_finished| will be called
+ // with the parsed date from response headers, or with the empty string if
+ // the request was not successful.
+ virtual void DoHeadRequest(const GURL& subscription_url,
+ HeadRequestCallback on_finished) = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_DOWNLOADER_H_
diff --git a/components/adblock/core/subscription/subscription_downloader_impl.cc b/components/adblock/core/subscription/subscription_downloader_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_downloader_impl.cc
@@ -0,0 +1,289 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/subscription/subscription_downloader_impl.h"
+
+#include <algorithm>
+#include <fstream>
+#include <functional>
+#include <vector>
+
+#include "base/files/file_path.h"
+#include "base/functional/bind.h"
+#include "base/ranges/algorithm.h"
+#include "base/strings/escape.h"
+#include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_piece.h"
+#include "base/time/time.h"
+#include "base/trace_event/trace_event.h"
+#include "components/adblock/core/common/adblock_utils.h"
+#include "components/adblock/core/common/flatbuffer_data.h"
+#include "components/adblock/core/subscription/subscription_config.h"
+#include "net/base/url_util.h"
+#include "net/http/http_response_headers.h"
+
+namespace adblock {
+namespace {
+
+// To retain user anonymity, we clamp the download count sent to subscription
+// servers - any number higher than 4 is reported as just "4+".
+std::string GetClampedDownloadCount(int download_count) {
+ DCHECK_GE(download_count, 0);
+ if (download_count > 4) {
+ return "4+";
+ }
+ return base::NumberToString(download_count);
+}
+
+// Returns a version of |subscription_url| with added GET parameters that
+// describe client and request metadata.
+GURL AddUrlParameters(const GURL& subscription_url,
+ const SubscriptionPersistentMetadata* persistent_metadata,
+ const utils::AppInfo& client_metadata,
+ const bool is_disabled) {
+ const std::string query = base::StrCat(
+ {"addonName=", "eyeo-chromium-sdk", "&addonVersion=", "1.0",
+ "&application=", base::EscapeQueryParamValue(client_metadata.name, true),
+ "&applicationVersion=",
+ base::EscapeQueryParamValue(client_metadata.version, true), "&platform=",
+ base::EscapeQueryParamValue(client_metadata.client_os, true),
+ "&platformVersion=", "1.0", "&lastVersion=",
+ base::EscapeQueryParamValue(
+ persistent_metadata->GetVersion(subscription_url), true),
+ "&disabled=", is_disabled ? "true" : "false", "&downloadCount=",
+ GetClampedDownloadCount(
+ persistent_metadata->GetDownloadSuccessCount(subscription_url))});
+
+ GURL::Replacements replacements;
+ replacements.SetQueryStr(query);
+ return subscription_url.ReplaceComponents(replacements);
+}
+
+int GenerateTraceId(const GURL& subscription_url) {
+ return std::hash<std::string>{}(subscription_url.spec());
+}
+
+} // namespace
+
+SubscriptionDownloaderImpl::SubscriptionDownloaderImpl(
+ utils::AppInfo client_metadata,
+ SubscriptionRequestMaker request_maker,
+ ConversionExecutors* conversion_executor,
+ SubscriptionPersistentMetadata* persistent_metadata)
+ : client_metadata_(std::move(client_metadata)),
+ request_maker_(std::move(request_maker)),
+ conversion_executor_(conversion_executor),
+ persistent_metadata_(persistent_metadata) {}
+
+SubscriptionDownloaderImpl::~SubscriptionDownloaderImpl() = default;
+
+void SubscriptionDownloaderImpl::StartDownload(
+ const GURL& subscription_url,
+ RetryPolicy retry_policy,
+ DownloadCompletedCallback on_finished) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ if (!IsUrlAllowed(subscription_url)) {
+ LOG(WARNING) << "[eyeo] Download from URL not allowed, will not download "
+ << subscription_url;
+ std::move(on_finished).Run(nullptr);
+ return;
+ }
+
+ ongoing_downloads_[subscription_url] = OngoingDownload{
+ request_maker_.Run(), retry_policy, std::move(on_finished)};
+ std::get<OngoingRequestPtr>(ongoing_downloads_[subscription_url])
+ ->Start(
+ AddUrlParameters(subscription_url, persistent_metadata_,
+ client_metadata_, false),
+ OngoingSubscriptionRequest::Method::GET,
+ base::BindRepeating(&SubscriptionDownloaderImpl::OnDownloadFinished,
+ weak_ptr_factory_.GetWeakPtr()));
+}
+
+void SubscriptionDownloaderImpl::CancelDownload(const GURL& subscription_url) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ ongoing_downloads_.erase(subscription_url);
+}
+
+void SubscriptionDownloaderImpl::DoHeadRequest(
+ const GURL& subscription_url,
+ HeadRequestCallback on_finished) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ if (ongoing_ping_) {
+ std::move(std::get<HeadRequestCallback>(*ongoing_ping_)).Run("");
+ }
+
+ ongoing_ping_ = HeadRequest{request_maker_.Run(), std::move(on_finished)};
+ std::get<OngoingRequestPtr>(*ongoing_ping_)
+ ->Start(AddUrlParameters(subscription_url, persistent_metadata_,
+ client_metadata_, true),
+ OngoingSubscriptionRequest::Method::HEAD,
+ base::BindRepeating(
+ &SubscriptionDownloaderImpl::OnHeadersOnlyDownloaded,
+ weak_ptr_factory_.GetWeakPtr()));
+}
+
+bool SubscriptionDownloaderImpl::IsUrlAllowed(
+ const GURL& subscription_url) const {
+ if (net::IsLocalhost(subscription_url)) {
+ // We trust all localhost urls, regardless of scheme.
+ return true;
+ }
+ if (!subscription_url.SchemeIs("https") &&
+ !subscription_url.SchemeIs("data")) {
+ return false;
+ }
+ return true;
+}
+
+void SubscriptionDownloaderImpl::OnHeadersOnlyDownloaded(
+ const GURL&,
+ base::FilePath downloaded_file,
+ scoped_refptr<net::HttpResponseHeaders> headers) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(ongoing_ping_.has_value());
+ base::Time date;
+ std::string version("");
+
+ // Parse date or Date from response headers.
+ if (headers && headers->GetDateValue(&date)) {
+ version = utils::ConvertBaseTimeToABPFilterVersionFormat(date);
+ }
+
+ std::move(std::get<HeadRequestCallback>(*ongoing_ping_))
+ .Run(std::move(version));
+ ongoing_ping_.reset();
+ // A ping may fail. We don't retry, SubscriptionUpdater will send a new ping
+ // in an hour anyway.
+}
+
+void SubscriptionDownloaderImpl::OnDownloadFinished(
+ const GURL& subscription_url,
+ base::FilePath downloaded_file,
+ scoped_refptr<net::HttpResponseHeaders> headers) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+ auto download_it = ongoing_downloads_.find(subscription_url);
+ DCHECK(download_it != ongoing_downloads_.end());
+
+ // For compatibility with existing Appium tests. To be removed after DPD-808.
+ if (headers) {
+ LOG(INFO) << "[eyeo] Response status for "
+ << AddUrlParameters(subscription_url, persistent_metadata_,
+ client_metadata_, false)
+ << " : " << headers->response_code();
+ }
+
+ if (downloaded_file.empty()) {
+ persistent_metadata_->IncrementDownloadErrorCount(subscription_url);
+ if (std::get<RetryPolicy>(download_it->second) ==
+ RetryPolicy::RetryUntilSucceeded) {
+ DLOG(WARNING) << "[eyeo] Failed to retrieve content for "
+ << subscription_url << ", will retry";
+ std::get<OngoingRequestPtr>(download_it->second)->Retry();
+ } else {
+ DLOG(WARNING) << "[eyeo] Failed to retrieve content for "
+ << subscription_url << ", will abort";
+ std::move(std::get<DownloadCompletedCallback>(download_it->second))
+ .Run(nullptr);
+ ongoing_downloads_.erase(download_it);
+ }
+ return;
+ }
+
+ VLOG(1) << "[eyeo] Finished downloading " << subscription_url
+ << ", starting conversion";
+
+ TRACE_EVENT_NESTABLE_ASYNC_BEGIN1(
+ "eyeo", "Converting subscription",
+ TRACE_ID_LOCAL(GenerateTraceId(subscription_url)), "url",
+ subscription_url.spec());
+
+ conversion_executor_->ConvertFilterListFile(
+ subscription_url, downloaded_file,
+ base::BindOnce(&SubscriptionDownloaderImpl::OnConversionFinished,
+ weak_ptr_factory_.GetWeakPtr(), subscription_url));
+}
+
+void SubscriptionDownloaderImpl::OnConversionFinished(
+ const GURL& subscription_url,
+ ConversionResult converter_result) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ TRACE_EVENT_NESTABLE_ASYNC_END0(
+ "eyeo", "Converting subscription",
+ TRACE_ID_LOCAL(GenerateTraceId(subscription_url)));
+ const auto download_it = ongoing_downloads_.find(subscription_url);
+ if (download_it == ongoing_downloads_.end()) {
+ VLOG(1) << "[eyeo] Conversion result discarded, subscription download "
+ "was cancelled.";
+ return;
+ }
+
+ if (absl::holds_alternative<std::unique_ptr<FlatbufferData>>(
+ converter_result)) {
+ VLOG(1) << "[eyeo] Finished converting " << subscription_url
+ << " successfully";
+ std::move(std::get<DownloadCompletedCallback>(download_it->second))
+ .Run(std::move(
+ absl::get<std::unique_ptr<FlatbufferData>>(converter_result)));
+ ongoing_downloads_.erase(download_it);
+ } else if (absl::holds_alternative<GURL>(converter_result)) {
+ const GURL& redirect_url = absl::get<GURL>(converter_result);
+ if (!IsUrlAllowed(redirect_url)) {
+ AbortWithWarning(download_it, "Redirect URL not allowed.");
+ return;
+ }
+ if (redirect_url == subscription_url) {
+ AbortWithWarning(download_it,
+ "Redirect to the same URL is not permitted.");
+ return;
+ }
+ if (std::get<OngoingRequestPtr>(download_it->second)
+ ->GetNumberOfRedirects() >= kMaxNumberOfRedirects) {
+ AbortWithWarning(download_it, "Maximum number of redirects exceeded.");
+ } else {
+ auto ongoing_download = ongoing_downloads_.extract(download_it);
+ ongoing_download.key() = redirect_url;
+ auto redirected_download_it =
+ ongoing_downloads_.insert(std::move(ongoing_download)).position;
+ std::get<OngoingRequestPtr>(redirected_download_it->second)
+ ->Redirect(AddUrlParameters(redirect_url, persistent_metadata_,
+ client_metadata_, false));
+ }
+ } else {
+ persistent_metadata_->IncrementDownloadErrorCount(subscription_url);
+ AbortWithWarning(download_it,
+ *absl::get<ConversionError>(converter_result));
+ return;
+ }
+}
+
+void SubscriptionDownloaderImpl::AbortWithWarning(
+ const OngoingDownloadsIt ongoing_download_it,
+ const std::string& warning) {
+ if (ongoing_download_it == ongoing_downloads_.end()) {
+ return;
+ }
+ DLOG(WARNING) << "[eyeo] " << warning << " Aborting download of "
+ << ongoing_download_it->first;
+ std::move(std::get<DownloadCompletedCallback>(ongoing_download_it->second))
+ .Run(nullptr);
+ ongoing_downloads_.erase(ongoing_download_it);
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/subscription/subscription_downloader_impl.h b/components/adblock/core/subscription/subscription_downloader_impl.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_downloader_impl.h
@@ -0,0 +1,102 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_DOWNLOADER_IMPL_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_DOWNLOADER_IMPL_H_
+
+#include <memory>
+#include <string>
+#include <tuple>
+
+#include "absl/types/optional.h"
+#include "base/files/file_path.h"
+#include "base/functional/callback_forward.h"
+#include "base/memory/raw_ptr.h"
+#include "base/memory/weak_ptr.h"
+#include "base/sequence_checker.h"
+#include "components/adblock/core/common/adblock_utils.h"
+#include "components/adblock/core/converter/flatbuffer_converter.h"
+#include "components/adblock/core/subscription/conversion_executors.h"
+#include "components/adblock/core/subscription/ongoing_subscription_request.h"
+#include "components/adblock/core/subscription/subscription_downloader.h"
+#include "components/adblock/core/subscription/subscription_persistent_metadata.h"
+
+class PrefService;
+
+namespace adblock {
+
+class SubscriptionDownloaderImpl final : public SubscriptionDownloader {
+ public:
+ // Used to create OngoingSubscriptionRequests to implement concurrent HEAD and
+ // GET requests.
+ using SubscriptionRequestMaker =
+ base::RepeatingCallback<std::unique_ptr<OngoingSubscriptionRequest>()>;
+
+ SubscriptionDownloaderImpl(
+ utils::AppInfo client_metadata,
+ SubscriptionRequestMaker request_maker,
+ ConversionExecutors* conversion_executor,
+ SubscriptionPersistentMetadata* persistent_metadata);
+ ~SubscriptionDownloaderImpl() final;
+ void StartDownload(const GURL& subscription_url,
+ RetryPolicy retry_policy,
+ DownloadCompletedCallback on_finished) final;
+ void CancelDownload(const GURL& subscription_url) final;
+ void DoHeadRequest(const GURL& subscription_url,
+ HeadRequestCallback on_finished) final;
+
+ static constexpr int kMaxNumberOfRedirects = 5;
+
+ private:
+ using OngoingRequestPtr = std::unique_ptr<OngoingSubscriptionRequest>;
+ // Represents subscription downloads in progress.
+ using OngoingDownload =
+ std::tuple<OngoingRequestPtr, RetryPolicy, DownloadCompletedCallback>;
+ using OngoingDownloads = std::map<GURL, OngoingDownload>;
+ using OngoingDownloadsIt = OngoingDownloads::iterator;
+ // There's never more than one concurrent HEAD request - for the
+ // Acceptable Ads subscription, a special case in user counting. This will
+ // be replaced by a dedicated solution for user counting (Telemetry)
+ // eventually.
+ using HeadRequest = std::tuple<OngoingRequestPtr, HeadRequestCallback>;
+
+ bool IsUrlAllowed(const GURL& subscription_url) const;
+ bool IsConnectionAllowed() const;
+ void OnDownloadFinished(const GURL& subscription_url,
+ base::FilePath downloaded_file,
+ scoped_refptr<net::HttpResponseHeaders> headers);
+ void OnHeadersOnlyDownloaded(const GURL& subscription_url,
+ base::FilePath downloaded_file,
+ scoped_refptr<net::HttpResponseHeaders> headers);
+ void OnConversionFinished(const GURL& subscription_url,
+ ConversionResult converter_result);
+ void AbortWithWarning(const OngoingDownloadsIt ongoing_download_it,
+ const std::string& warning);
+
+ SEQUENCE_CHECKER(sequence_checker_);
+ utils::AppInfo client_metadata_;
+ SubscriptionRequestMaker request_maker_;
+ raw_ptr<ConversionExecutors> conversion_executor_;
+ raw_ptr<SubscriptionPersistentMetadata> persistent_metadata_;
+ OngoingDownloads ongoing_downloads_;
+ absl::optional<HeadRequest> ongoing_ping_;
+ base::WeakPtrFactory<SubscriptionDownloaderImpl> weak_ptr_factory_{this};
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_DOWNLOADER_IMPL_H_
diff --git a/components/adblock/core/subscription/subscription_persistent_metadata.h b/components/adblock/core/subscription/subscription_persistent_metadata.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_persistent_metadata.h
@@ -0,0 +1,86 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_METADATA_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_METADATA_H_
+
+#include <string>
+
+#include "base/time/time.h"
+#include "components/keyed_service/core/keyed_service.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+// Persistently stores metadata about Subscriptions.
+// Metadata is data about Subscriptions that may not be encoded in the
+// Subscriptions themselves, like number of errors encountered while
+// downloading.
+// Subscription metadata is used to control subscription update behavior and
+// provide data for GET/HEAD query parameters.
+class SubscriptionPersistentMetadata : public KeyedService {
+ public:
+ // Sets the expiration date to Now() + |expires_in|.
+ // Expiration time can be:
+ // - Parsed from the filter list (see Subscription::GetTimeUntilExpires())
+ // - Set to 5 days by default, if expiration time is not specified in filter
+ // list
+ // - Set to 1 day by default for the special case of HEAD-only request.
+ virtual void SetExpirationInterval(const GURL& subscription_url,
+ base::TimeDelta expires_in) = 0;
+ // The version of a subscription can be:
+ // - parsed from the filter list (see Subscription::GetCurrentVersion())
+ // - for HEAD requests, created by parsing the received "Date" header.
+ // - not set
+ // It is common for custom subscriptions to not have a version available.
+ virtual void SetVersion(const GURL& subscription_url,
+ std::string version) = 0;
+ // Increments the total number of successful downloads.
+ // Successful HEAD-only requests, which don't deliver an actual subscription,
+ // still count towards this number.
+ // Resets the download error count to 0, as it breaks the error streak.
+ virtual void IncrementDownloadSuccessCount(const GURL& subscription_url) = 0;
+ // Increments the number of consecutive download failures, used to determine
+ // whether to fall back to an alternate download URL.
+ // Incrementing the error count does *not* influence the success count.
+ virtual void IncrementDownloadErrorCount(const GURL& subscription_url) = 0;
+
+ // Returns whether the expiration time (see SetExpirationInterval()) is
+ // earlier than Now().
+ // A subscription for which SetExpirationInterval() was never called is
+ // considered expired, as otherwise it would never be selected for updating.
+ virtual bool IsExpired(const GURL& subscription_url) const = 0;
+ // Returns time of last installation/update time, which is set when
+ // SetExpirationInterval() is called.
+ virtual base::Time GetLastInstallationTime(
+ const GURL& subscription_url) const = 0;
+ // Returns version set in SetVersion() or "0" when not set.
+ // Subscriptions are allowed to not have a version defined.
+ virtual std::string GetVersion(const GURL& subscription_url) const = 0;
+ // Returns the number of successful downloads of this subscription in the
+ // past.
+ virtual int GetDownloadSuccessCount(const GURL& subscription_url) const = 0;
+ // Returns number of consecutive download errors.
+ virtual int GetDownloadErrorCount(const GURL& subscription_url) const = 0;
+
+ // Remove metadata associated with |subscription_url|.
+ virtual void RemoveMetadata(const GURL& subscription_url) = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_METADATA_H_
diff --git a/components/adblock/core/subscription/subscription_persistent_metadata_impl.cc b/components/adblock/core/subscription/subscription_persistent_metadata_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_persistent_metadata_impl.cc
@@ -0,0 +1,170 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/subscription/subscription_persistent_metadata_impl.h"
+
+#include "base/json/values_util.h"
+#include "base/time/time.h"
+#include "base/values.h"
+#include "components/adblock/core/common/adblock_prefs.h"
+#include "components/prefs/scoped_user_pref_update.h"
+
+namespace adblock {
+namespace {
+constexpr base::StringPiece kExpirationTimeKey = "expiration_time";
+constexpr base::StringPiece kLastInstallationTimeKey = "last_installation_time";
+constexpr base::StringPiece kVersionKey = "version";
+constexpr base::StringPiece kDownloadCountKey = "download_count";
+constexpr base::StringPiece kErrorCountKey = "error_count";
+} // namespace
+
+struct SubscriptionPersistentMetadataImpl::Metadata {
+ base::Time expiration_time;
+ base::Time last_installation_time;
+ std::string version{"0"};
+ int download_count{0};
+ int error_count{0};
+};
+
+SubscriptionPersistentMetadataImpl::SubscriptionPersistentMetadataImpl(
+ PrefService* prefs)
+ : prefs_(prefs) {
+ LoadFromPrefs();
+}
+
+SubscriptionPersistentMetadataImpl::~SubscriptionPersistentMetadataImpl() =
+ default;
+
+void SubscriptionPersistentMetadataImpl::SetExpirationInterval(
+ const GURL& subscription_url,
+ base::TimeDelta expires_in) {
+ const auto now = base::Time::Now();
+ metadata_map_[subscription_url].last_installation_time = now;
+ metadata_map_[subscription_url].expiration_time = now + expires_in;
+ UpdatePrefs();
+}
+
+void SubscriptionPersistentMetadataImpl::SetVersion(
+ const GURL& subscription_url,
+ std::string version) {
+ metadata_map_[subscription_url].version = std::move(version);
+ UpdatePrefs();
+}
+
+void SubscriptionPersistentMetadataImpl::IncrementDownloadSuccessCount(
+ const GURL& subscription_url) {
+ metadata_map_[subscription_url].download_count++;
+ metadata_map_[subscription_url].error_count = 0;
+ UpdatePrefs();
+}
+
+void SubscriptionPersistentMetadataImpl::IncrementDownloadErrorCount(
+ const GURL& subscription_url) {
+ metadata_map_[subscription_url].error_count++;
+ UpdatePrefs();
+}
+
+bool SubscriptionPersistentMetadataImpl::IsExpired(
+ const GURL& subscription_url) const {
+ auto it = metadata_map_.find(subscription_url);
+ if (it == metadata_map_.end()) {
+ return true;
+ }
+ return it->second.expiration_time <= base::Time::Now();
+}
+
+base::Time SubscriptionPersistentMetadataImpl::GetLastInstallationTime(
+ const GURL& subscription_url) const {
+ auto it = metadata_map_.find(subscription_url);
+ if (it == metadata_map_.end()) {
+ return base::Time();
+ }
+ return it->second.last_installation_time;
+}
+
+std::string SubscriptionPersistentMetadataImpl::GetVersion(
+ const GURL& subscription_url) const {
+ auto it = metadata_map_.find(subscription_url);
+ if (it == metadata_map_.end()) {
+ return "0";
+ }
+ return it->second.version;
+}
+
+int SubscriptionPersistentMetadataImpl::GetDownloadSuccessCount(
+ const GURL& subscription_url) const {
+ auto it = metadata_map_.find(subscription_url);
+ if (it == metadata_map_.end()) {
+ return 0;
+ }
+ return it->second.download_count;
+}
+
+int SubscriptionPersistentMetadataImpl::GetDownloadErrorCount(
+ const GURL& subscription_url) const {
+ auto it = metadata_map_.find(subscription_url);
+ if (it == metadata_map_.end()) {
+ return 0;
+ }
+ return it->second.error_count;
+}
+
+void SubscriptionPersistentMetadataImpl::RemoveMetadata(
+ const GURL& subscription_url) {
+ metadata_map_.erase(subscription_url);
+ UpdatePrefs();
+}
+
+void SubscriptionPersistentMetadataImpl::UpdatePrefs() {
+ base::Value::Dict dict;
+ for (const auto& pair : metadata_map_) {
+ base::Value::Dict subscription;
+ subscription.Set(kExpirationTimeKey,
+ TimeToValue(pair.second.expiration_time));
+ subscription.Set(kLastInstallationTimeKey,
+ TimeToValue(pair.second.last_installation_time));
+ subscription.Set(kVersionKey, pair.second.version);
+ subscription.Set(kDownloadCountKey, pair.second.download_count);
+ subscription.Set(kErrorCountKey, pair.second.error_count);
+ dict.Set(pair.first.spec(), std::move(subscription));
+ }
+ prefs_->SetDict(common::prefs::kSubscriptionMetadata, std::move(dict));
+}
+
+void SubscriptionPersistentMetadataImpl::LoadFromPrefs() {
+ const base::Value& dict =
+ prefs_->GetValue(common::prefs::kSubscriptionMetadata);
+ DCHECK(dict.is_dict());
+ for (const auto dict_item : dict.GetDict()) {
+ Metadata subscription;
+ DCHECK(dict_item.second.is_dict());
+ const auto* d = dict_item.second.GetIfDict();
+ subscription.expiration_time =
+ ValueToTime(d->Find(kExpirationTimeKey)).value_or(base::Time());
+ subscription.last_installation_time =
+ ValueToTime(d->Find(kLastInstallationTimeKey)).value_or(base::Time());
+ const auto* version = d->FindString(kVersionKey);
+ if (version) {
+ subscription.version = *version;
+ }
+ subscription.error_count = d->FindInt(kErrorCountKey).value_or(0);
+ subscription.download_count = d->FindInt(kDownloadCountKey).value_or(0);
+ metadata_map_.emplace(dict_item.first, std::move(subscription));
+ }
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/subscription/subscription_persistent_metadata_impl.h b/components/adblock/core/subscription/subscription_persistent_metadata_impl.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_persistent_metadata_impl.h
@@ -0,0 +1,62 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_METADATA_IMPL_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_METADATA_IMPL_H_
+
+#include <map>
+
+#include "base/memory/raw_ptr.h"
+#include "components/adblock/core/subscription/subscription_persistent_metadata.h"
+#include "components/prefs/pref_service.h"
+
+namespace adblock {
+
+// Stores persistent subscription metadata in PrefService.
+class SubscriptionPersistentMetadataImpl final
+ : public SubscriptionPersistentMetadata {
+ public:
+ explicit SubscriptionPersistentMetadataImpl(PrefService* prefs);
+ ~SubscriptionPersistentMetadataImpl() final;
+
+ void SetExpirationInterval(const GURL& subscription_url,
+ base::TimeDelta expires_in) final;
+ void SetVersion(const GURL& subscription_url, std::string version) final;
+ void IncrementDownloadSuccessCount(const GURL& subscription_url) final;
+ void IncrementDownloadErrorCount(const GURL& subscription_url) final;
+
+ bool IsExpired(const GURL& subscription_url) const final;
+ base::Time GetLastInstallationTime(const GURL& subscription_url) const final;
+ std::string GetVersion(const GURL& subscription_url) const final;
+ int GetDownloadSuccessCount(const GURL& subscription_url) const final;
+ int GetDownloadErrorCount(const GURL& subscription_url) const final;
+
+ void RemoveMetadata(const GURL& subscription_url) final;
+
+ private:
+ struct Metadata;
+ using MetadataMap = std::map<GURL, Metadata>;
+ void UpdatePrefs();
+ void LoadFromPrefs();
+
+ raw_ptr<PrefService> prefs_;
+ MetadataMap metadata_map_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_METADATA_IMPL_H_
diff --git a/components/adblock/core/subscription/subscription_persistent_storage.h b/components/adblock/core/subscription/subscription_persistent_storage.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_persistent_storage.h
@@ -0,0 +1,60 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_STORAGE_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_STORAGE_H_
+
+#include <memory>
+#include <vector>
+
+#include "base/functional/callback.h"
+#include "base/memory/scoped_refptr.h"
+#include "components/adblock/core/common/flatbuffer_data.h"
+#include "components/adblock/core/subscription/installed_subscription.h"
+
+namespace adblock {
+
+// Provides a persistent, disk-based storage for installed subscription files.
+class SubscriptionPersistentStorage {
+ public:
+ virtual ~SubscriptionPersistentStorage() = default;
+ using LoadCallback = base::OnceCallback<void(
+ std::vector<scoped_refptr<InstalledSubscription>>)>;
+ // Loads subscriptions from a directory on disk and returns them via
+ // |on_loaded|.
+ virtual void LoadSubscriptions(LoadCallback on_loaded) = 0;
+
+ using StoreCallback =
+ base::OnceCallback<void(scoped_refptr<InstalledSubscription>)>;
+ // Stores |raw_data| to disk and returns a Subscription created from
+ // flatbuffer parsed from |raw_data|.
+ // |on_finished| gets called after the store to disk and parsing has finished,
+ // nullptr argument signifies there was an error.
+ // |raw_data| is assumed to be valid against the current flatbuffer schema, it
+ // is not validated internally for performance reasons. Validate flatbuffers
+ // downloaded from the Internet externally.
+ virtual void StoreSubscription(std::unique_ptr<FlatbufferData> raw_data,
+ StoreCallback on_finished) = 0;
+
+ // Removes |subscription|'s file from disk.
+ virtual void RemoveSubscription(
+ scoped_refptr<InstalledSubscription> subscription) = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_STORAGE_H_
diff --git a/components/adblock/core/subscription/subscription_persistent_storage_impl.cc b/components/adblock/core/subscription/subscription_persistent_storage_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_persistent_storage_impl.cc
@@ -0,0 +1,229 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/subscription/subscription_persistent_storage_impl.h"
+
+#include <algorithm>
+#include <iterator>
+
+#include "base/files/file_enumerator.h"
+#include "base/files/file_path.h"
+#include "base/files/file_util.h"
+#include "base/functional/bind.h"
+#include "base/logging.h"
+#include "base/memory/scoped_refptr.h"
+#include "base/task/task_traits.h"
+#include "base/task/thread_pool.h"
+#include "base/trace_event/common/trace_event_common.h"
+#include "base/trace_event/trace_event.h"
+#include "base/unguessable_token.h"
+#include "components/adblock/core/schema/filter_list_schema_generated.h"
+#include "components/adblock/core/subscription/installed_subscription.h"
+#include "components/adblock/core/subscription/installed_subscription_impl.h"
+#include "components/adblock/core/subscription/subscription.h"
+#include "components/adblock/core/subscription/subscription_validator.h"
+
+namespace adblock {
+namespace {
+
+GURL UrlFromFlatbufferData(const FlatbufferData& flatbuffer) {
+ DCHECK(flat::GetSubscription(flatbuffer.data())->metadata());
+ DCHECK(flat::GetSubscription(flatbuffer.data())->metadata()->url());
+ return GURL(
+ flat::GetSubscription(flatbuffer.data())->metadata()->url()->str());
+}
+
+} // namespace
+
+SubscriptionPersistentStorageImpl::SubscriptionPersistentStorageImpl(
+ base::FilePath base_storage_dir,
+ std::unique_ptr<SubscriptionValidator> validator,
+ SubscriptionPersistentMetadata* persistent_metadata)
+ : base_storage_dir_(std::move(base_storage_dir)),
+ validator_(std::move(validator)),
+ persistent_metadata_(persistent_metadata) {}
+
+SubscriptionPersistentStorageImpl::~SubscriptionPersistentStorageImpl() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+}
+
+// static
+SubscriptionPersistentStorageImpl::LoadedBuffer
+SubscriptionPersistentStorageImpl::WriteSubscription(
+ const base::FilePath& storage_dir,
+ std::unique_ptr<FlatbufferData> raw_data,
+ SubscriptionValidator::StoreTrustedSignatureThreadSafeCallback
+ store_signature) {
+ // To avoid conflict between existing subscription files, generate a new
+ // unique path.
+ base::FilePath subscription_path = storage_dir.AppendASCII(
+ base::UnguessableToken::Create().ToString() + ".fb");
+ // UnguessableToken is a 128-bit, cryptographically-safe random number,
+ // conflicts are less likely than disk failure. The DCHECK is to express
+ // intent.
+ DCHECK(!base::PathExists(subscription_path));
+ if (base::WriteFile(subscription_path,
+ reinterpret_cast<const char*>(raw_data->data()),
+ raw_data->size()) == -1) {
+ // Disk write failed.
+ return std::make_pair(nullptr, base::FilePath{});
+ }
+ auto buffer = std::make_unique<MemoryMappedFlatbufferData>(subscription_path);
+ if (!buffer->data()) {
+ // Creating the memory-mapped region failed.
+ // TODO(DPD-1278) revert to in-memory buffer?
+ return std::make_pair(nullptr, base::FilePath{});
+ }
+ std::move(store_signature).Run(*buffer, subscription_path);
+ return std::make_pair(std::move(buffer), std::move(subscription_path));
+}
+
+// static
+std::vector<SubscriptionPersistentStorageImpl::LoadedBuffer>
+SubscriptionPersistentStorageImpl::ReadSubscriptionsFromDirectory(
+ const base::FilePath& storage_dir,
+ SubscriptionValidator::IsSignatureValidThreadSafeCallback
+ is_signature_valid) {
+ DLOG(INFO) << "[eyeo] Reading subscriptions from directory";
+ TRACE_EVENT0("eyeo", "ReadSubscriptionsFromDirectory");
+ // Does nothing if directory already exists:
+ base::CreateDirectory(storage_dir);
+
+ std::vector<SubscriptionPersistentStorageImpl::LoadedBuffer> result;
+ base::FileEnumerator enumerator(storage_dir, false /* recursive */,
+ base::FileEnumerator::FILES);
+ // Iterate through |storage_dir| and try to load all files within.
+ for (base::FilePath flatbuffer_path = enumerator.Next();
+ !flatbuffer_path.empty(); flatbuffer_path = enumerator.Next()) {
+ std::string contents;
+
+ TRACE_EVENT_BEGIN1("eyeo", "ReadFileToString", "path",
+ flatbuffer_path.AsUTF8Unsafe());
+ if (!base::ReadFileToString(flatbuffer_path, &contents)) {
+ // File could not be read.
+ base::DeleteFile(flatbuffer_path);
+ continue;
+ }
+ TRACE_EVENT_END1("eyeo", "ReadFileToString", "path",
+ flatbuffer_path.AsUTF8Unsafe());
+ TRACE_EVENT_BEGIN0("eyeo", "VerifySubscriptionBuffer");
+ if (!is_signature_valid.Run(InMemoryFlatbufferData(std::move(contents)),
+ flatbuffer_path)) {
+ // This is not a valid subscription file, remove it.
+ base::DeleteFile(flatbuffer_path);
+ continue;
+ }
+ TRACE_EVENT_END0("eyeo", "VerifySubscriptionBuffer");
+ auto buffer = std::make_unique<MemoryMappedFlatbufferData>(flatbuffer_path);
+ if (!buffer->data()) {
+ // Could not create mapped memory region to file content.
+ // TODO(mpawlowski) revert to in-memory buffer?
+ continue;
+ }
+ result.emplace_back(std::move(buffer), std::move(flatbuffer_path));
+ }
+ DLOG(INFO) << "[eyeo] Finished reading and validating subscriptions. Loaded "
+ << result.size() << " subscriptions.";
+ return result;
+}
+
+void SubscriptionPersistentStorageImpl::LoadSubscriptions(
+ LoadCallback on_loaded) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ TRACE_EVENT_ASYNC_BEGIN0(
+ "eyeo", "SubscriptionPersistentStorageImpl::LoadSubscription",
+ TRACE_ID_LOCAL(this));
+ base::ThreadPool::PostTaskAndReplyWithResult(
+ FROM_HERE, {base::MayBlock()},
+ base::BindOnce(&ReadSubscriptionsFromDirectory, base_storage_dir_,
+ validator_->IsSignatureValid()),
+ base::BindOnce(&SubscriptionPersistentStorageImpl::LoadComplete,
+ weak_ptr_factory.GetWeakPtr(), std::move(on_loaded)));
+}
+
+void SubscriptionPersistentStorageImpl::StoreSubscription(
+ std::unique_ptr<FlatbufferData> raw_data,
+ StoreCallback on_finished) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ base::ThreadPool::PostTaskAndReplyWithResult(
+ FROM_HERE, {base::MayBlock()},
+ base::BindOnce(&WriteSubscription, base_storage_dir_, std::move(raw_data),
+ validator_->StoreTrustedSignature()),
+ base::BindOnce(&SubscriptionPersistentStorageImpl::SubscriptionStored,
+ weak_ptr_factory.GetWeakPtr(), std::move(on_finished)));
+}
+
+void SubscriptionPersistentStorageImpl::RemoveSubscription(
+ scoped_refptr<InstalledSubscription> subscription) {
+ auto it = backing_file_mapping_.find(subscription);
+ DCHECK(it != backing_file_mapping_.end())
+ << "Attempted to remove subscription not governed by this "
+ "SubscriptionPersistentStorageImpl";
+ validator_->RemoveStoredSignature().Run(it->second);
+ backing_file_mapping_.erase(it);
+ subscription->MarkForPermanentRemoval();
+}
+
+void SubscriptionPersistentStorageImpl::LoadComplete(
+ LoadCallback on_loaded,
+ std::vector<LoadedBuffer> loaded_buffers) {
+ std::vector<scoped_refptr<InstalledSubscription>> loaded_subscriptions;
+ for (LoadedBuffer& loaded_buffer : loaded_buffers) {
+ const auto url = UrlFromFlatbufferData(*loaded_buffer.first);
+ const auto last_installation_time =
+ persistent_metadata_->GetLastInstallationTime(url);
+ auto installed_subscription =
+ base::MakeRefCounted<InstalledSubscriptionImpl>(
+ std::move(loaded_buffer.first),
+ Subscription::InstallationState::Installed, last_installation_time);
+ backing_file_mapping_[installed_subscription] =
+ std::move(loaded_buffer.second);
+ loaded_subscriptions.push_back(installed_subscription);
+ }
+ TRACE_EVENT_ASYNC_END0("eyeo",
+ "SubscriptionPersistentStorageImpl::LoadSubscription",
+ TRACE_ID_LOCAL(this));
+ std::move(on_loaded).Run(std::move(loaded_subscriptions));
+}
+
+void SubscriptionPersistentStorageImpl::SubscriptionStored(
+ StoreCallback on_finished,
+ LoadedBuffer storage_result) {
+ if (!storage_result.first) {
+ // There was an error storing the subscription.
+ std::move(on_finished).Run(nullptr);
+ return;
+ }
+
+ const auto url = UrlFromFlatbufferData(*storage_result.first);
+ const auto last_installation_time = base::Time::Now();
+ auto installed_subscription = base::MakeRefCounted<InstalledSubscriptionImpl>(
+ std::move(storage_result.first),
+ Subscription::InstallationState::Installed, last_installation_time);
+ persistent_metadata_->IncrementDownloadSuccessCount(url);
+ persistent_metadata_->SetExpirationInterval(
+ url, installed_subscription->GetExpirationInterval());
+ const auto parsed_version = installed_subscription->GetCurrentVersion();
+ if (!parsed_version.empty()) {
+ persistent_metadata_->SetVersion(url, parsed_version);
+ }
+ backing_file_mapping_[installed_subscription] =
+ std::move(storage_result.second);
+ std::move(on_finished).Run(installed_subscription);
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/subscription/subscription_persistent_storage_impl.h b/components/adblock/core/subscription/subscription_persistent_storage_impl.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_persistent_storage_impl.h
@@ -0,0 +1,80 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_STORAGE_IMPL_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_STORAGE_IMPL_H_
+
+#include <map>
+
+#include "base/files/file_path.h"
+#include "base/memory/raw_ptr.h"
+#include "base/memory/weak_ptr.h"
+#include "base/sequence_checker.h"
+#include "components/adblock/core/common/flatbuffer_data.h"
+#include "components/adblock/core/subscription/subscription_persistent_metadata.h"
+#include "components/adblock/core/subscription/subscription_persistent_storage.h"
+#include "components/adblock/core/subscription/subscription_validator.h"
+
+namespace adblock {
+
+class SubscriptionPersistentStorageImpl final
+ : public SubscriptionPersistentStorage {
+ public:
+ SubscriptionPersistentStorageImpl(
+ base::FilePath base_storage_dir,
+ std::unique_ptr<SubscriptionValidator> validator,
+ SubscriptionPersistentMetadata* persistent_metadata);
+ ~SubscriptionPersistentStorageImpl() final;
+
+ void LoadSubscriptions(LoadCallback on_loaded) final;
+ void StoreSubscription(std::unique_ptr<FlatbufferData> raw_data,
+ StoreCallback on_finished) final;
+ void RemoveSubscription(
+ scoped_refptr<InstalledSubscription> subscription) final;
+
+ private:
+ using SubscriptionFileMapping =
+ std::map<scoped_refptr<InstalledSubscription>, base::FilePath>;
+ using LoadedBuffer =
+ std::pair<std::unique_ptr<FlatbufferData>, base::FilePath>;
+ static LoadedBuffer WriteSubscription(
+ const base::FilePath& storage_dir,
+ std::unique_ptr<FlatbufferData> raw_data,
+ SubscriptionValidator::StoreTrustedSignatureThreadSafeCallback
+ store_signature);
+ static std::vector<LoadedBuffer> ReadSubscriptionsFromDirectory(
+ const base::FilePath& storage_dir,
+ SubscriptionValidator::IsSignatureValidThreadSafeCallback
+ is_signature_valid);
+ void LoadComplete(LoadCallback on_initialized,
+ std::vector<LoadedBuffer> loaded_buffers);
+ void SubscriptionStored(StoreCallback on_finished,
+ LoadedBuffer storage_result);
+
+ SEQUENCE_CHECKER(sequence_checker_);
+ base::FilePath base_storage_dir_;
+ std::unique_ptr<SubscriptionValidator> validator_;
+ raw_ptr<SubscriptionPersistentMetadata> persistent_metadata_;
+ // Maps Subscriptions to files that they access.
+ SubscriptionFileMapping backing_file_mapping_;
+ base::WeakPtrFactory<SubscriptionPersistentStorageImpl> weak_ptr_factory{
+ this};
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_STORAGE_IMPL_H_
diff --git a/components/adblock/core/subscription/subscription_service.h b/components/adblock/core/subscription/subscription_service.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_service.h
@@ -0,0 +1,87 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_SERVICE_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_SERVICE_H_
+
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "base/functional/callback.h"
+#include "base/memory/scoped_refptr.h"
+#include "base/observer_list_types.h"
+#include "components/adblock/core/configuration/filtering_configuration.h"
+#include "components/adblock/core/subscription/subscription.h"
+#include "components/adblock/core/subscription/subscription_collection.h"
+#include "components/adblock/core/subscription/subscription_persistent_metadata.h"
+#include "components/keyed_service/core/keyed_service.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+// Maintains a state of available Subscriptions needed for all installed
+// FilteringConfigurations.
+class SubscriptionService : public KeyedService {
+ public:
+ using Snapshot = std::vector<std::unique_ptr<SubscriptionCollection>>;
+ class SubscriptionObserver : public base::CheckedObserver {
+ public:
+ // Called only on successful installation or update of a subscription.
+ // TODO(mpawlowski) add error reporting.
+ virtual void OnSubscriptionInstalled(const GURL& subscription_url) {}
+ // Called on installation of new filtering configuration
+ virtual void OnFilteringConfigurationInstalled(
+ FilteringConfiguration* config) {}
+ };
+ // Returns currently available subscriptions installed for |configuration|.
+ // Includes subscriptions that are still being downloaded.
+ virtual std::vector<scoped_refptr<Subscription>> GetCurrentSubscriptions(
+ FilteringConfiguration* configuration) const = 0;
+ // Subscriptions and filters demanded by |configuration| will be installed and
+ // will become part of future Snapshots. SubscriptionService will maintain
+ // subscriptions required by the configuration, download and remove filter
+ // lists as needed.
+ virtual void InstallFilteringConfiguration(
+ std::unique_ptr<FilteringConfiguration> configuration) = 0;
+ // Removes configuration from the list of known configurations and reset its
+ // all persistent data. Use it only when configuration is no longer needed,
+ // otherwise prefer to disable configuration via FilteringConfiguration API.
+ // IMPORTANT: After calling this method any pointer pointing to uninstalled
+ // configuration becomes invalid.
+ virtual void UninstallFilteringConfiguration(
+ const std::string& configuration_name) = 0;
+ // Returns a list of FilteringConfigurations previously installed via
+ // InstallFilteringConfiguration.
+ virtual std::vector<FilteringConfiguration*>
+ GetInstalledFilteringConfigurations() = 0;
+ // Get default "adblock" filtering configuration.
+ virtual FilteringConfiguration* GetAdblockFilteringConfiguration() const = 0;
+ // Returns a snapshot of subscriptions as present at the time of calling the
+ // function that can be used to query filters.
+ // The result may be passed between threads, even called
+ // concurrently, and future changes to the installed subscriptions will not
+ // impact it.
+ virtual Snapshot GetCurrentSnapshot() const = 0;
+
+ virtual void AddObserver(SubscriptionObserver*) = 0;
+ virtual void RemoveObserver(SubscriptionObserver*) = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_SERVICE_H_
diff --git a/components/adblock/core/subscription/subscription_service_impl.cc b/components/adblock/core/subscription/subscription_service_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_service_impl.cc
@@ -0,0 +1,211 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/subscription/subscription_service_impl.h"
+
+#include <algorithm>
+#include <iterator>
+#include <memory>
+#include <set>
+
+#include "base/functional/bind.h"
+#include "base/logging.h"
+#include "base/memory/scoped_refptr.h"
+#include "base/memory/weak_ptr.h"
+#include "base/parameter_pack.h"
+#include "base/ranges/algorithm.h"
+#include "base/trace_event/common/trace_event_common.h"
+#include "base/trace_event/trace_event.h"
+#include "components/adblock/core/common/adblock_constants.h"
+#include "components/adblock/core/common/adblock_utils.h"
+#include "components/adblock/core/configuration/filtering_configuration_prefs.h"
+#include "components/adblock/core/subscription/filtering_configuration_maintainer.h"
+#include "components/adblock/core/subscription/subscription_collection.h"
+#include "components/adblock/core/subscription/subscription_service.h"
+
+namespace adblock {
+
+class EmptySubscription : public Subscription {
+ public:
+ EmptySubscription(const GURL& url) : url_(url) {}
+ GURL GetSourceUrl() const override { return url_; }
+ std::string GetTitle() const override { return ""; }
+ std::string GetCurrentVersion() const override { return ""; }
+ InstallationState GetInstallationState() const override {
+ return InstallationState::Unknown;
+ }
+ base::Time GetInstallationTime() const override {
+ return base::Time::UnixEpoch();
+ }
+ base::TimeDelta GetExpirationInterval() const override {
+ return base::TimeDelta();
+ }
+
+ private:
+ ~EmptySubscription() override {}
+ const GURL url_;
+};
+
+SubscriptionServiceImpl::SubscriptionServiceImpl(
+ FilteringConfigurationMaintainerFactory maintainer_factory,
+ FilteringConfigurationCleaner configuration_cleaner)
+ : maintainer_factory_(std::move(maintainer_factory)),
+ configuration_cleaner_(std::move(configuration_cleaner)) {}
+
+SubscriptionServiceImpl::~SubscriptionServiceImpl() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ for (auto& entry : maintainers_) {
+ entry.first->RemoveObserver(this);
+ }
+}
+
+std::vector<scoped_refptr<Subscription>>
+SubscriptionServiceImpl::GetCurrentSubscriptions(
+ FilteringConfiguration* configuration) const {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ auto it = base::ranges::find_if(maintainers_, [&](const auto& entry) {
+ return entry.first.get() == configuration;
+ });
+ DCHECK(it != maintainers_.end()) << "Cannot get Subscriptions from an "
+ "unregistered FilteringConfiguration";
+ if (!it->second) {
+ // Configuration is disabled
+ auto urls = it->first->GetFilterLists();
+ std::vector<scoped_refptr<adblock::Subscription>> result;
+ base::ranges::transform(
+ urls, std::back_inserter(result), [](const auto& url) {
+ return base::MakeRefCounted<EmptySubscription>(url);
+ });
+ return result;
+ }
+ return it->second->GetCurrentSubscriptions();
+}
+
+void SubscriptionServiceImpl::InstallFilteringConfiguration(
+ std::unique_ptr<FilteringConfiguration> configuration) {
+ VLOG(1) << "[eyeo] FilteringConfiguration installed: "
+ << configuration->GetName();
+ configuration->AddObserver(this);
+ std::unique_ptr<FilteringConfigurationMaintainer> maintainer;
+ if (configuration->IsEnabled()) {
+ // Only enabled configurations should be maintained. Disabled configurations
+ // are observed and added to the collection, but a Maintainer will be
+ // created in OnEnabledStateChanged.
+ maintainer = MakeMaintainer(configuration.get());
+ }
+ auto* ptr = configuration.get();
+ maintainers_.insert(
+ std::make_pair(std::move(configuration), std::move(maintainer)));
+ for (auto& observer : observers_) {
+ observer.OnFilteringConfigurationInstalled(ptr);
+ }
+}
+
+void SubscriptionServiceImpl::UninstallFilteringConfiguration(
+ const std::string& configuration_name) {
+ VLOG(1) << "[eyeo] FilteringConfiguration uninstalled: "
+ << configuration_name;
+ auto it = base::ranges::find_if(maintainers_, [&](const auto& entry) {
+ return entry.first.get()->GetName() == configuration_name;
+ });
+ if (it == maintainers_.end()) {
+ LOG(WARNING) << "[eyeo] Trying to uninstall not installed configuration "
+ << configuration_name;
+ return;
+ }
+ it->first->RemoveObserver(this);
+ it->second.reset();
+ configuration_cleaner_.Run(it->first.get());
+ maintainers_.erase(it);
+}
+
+std::vector<FilteringConfiguration*>
+SubscriptionServiceImpl::GetInstalledFilteringConfigurations() {
+ std::vector<FilteringConfiguration*> result;
+ base::ranges::transform(maintainers_, std::back_inserter(result),
+ [](const auto& pair) { return pair.first.get(); });
+ return result;
+}
+
+FilteringConfiguration*
+SubscriptionServiceImpl::GetAdblockFilteringConfiguration() const {
+ const auto it = base::ranges::find_if(maintainers_, [](const auto& pair) {
+ return pair.first->GetName() == kAdblockFilteringConfigurationName;
+ });
+ DCHECK(it != maintainers_.end());
+ return it->first.get();
+}
+
+SubscriptionService::Snapshot SubscriptionServiceImpl::GetCurrentSnapshot()
+ const {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ Snapshot snapshot;
+ for (const auto& entry : maintainers_) {
+ if (!entry.second) {
+ continue; // Configuration is disabled
+ }
+ snapshot.push_back(entry.second->GetSubscriptionCollection());
+ }
+ return snapshot;
+}
+
+void SubscriptionServiceImpl::AddObserver(SubscriptionObserver* o) {
+ observers_.AddObserver(o);
+}
+
+void SubscriptionServiceImpl::RemoveObserver(SubscriptionObserver* o) {
+ observers_.RemoveObserver(o);
+}
+
+void SubscriptionServiceImpl::OnEnabledStateChanged(
+ FilteringConfiguration* config) {
+ auto it = base::ranges::find_if(maintainers_, [&](const auto& entry) {
+ return entry.first.get() == config;
+ });
+ DCHECK(it != maintainers_.end()) << "Received OnEnabledStateChanged from "
+ "unregistered FilteringConfiguration";
+ VLOG(1) << "[eyeo] FilteringConfiguration " << config->GetName()
+ << (config->IsEnabled() ? " enabled" : " disabled");
+ if (config->IsEnabled()) {
+ // Enable the configuration by creating a new
+ // FilteringConfigurationMaintainer. This triggers installing missing
+ // subscriptions etc.
+ it->second = MakeMaintainer(config);
+ } else {
+ // Disable the configuration by removing its
+ // FilteringConfigurationMaintainer. This cancels all related operations and
+ // frees all associated memory.
+ it->second.reset();
+ }
+}
+
+void SubscriptionServiceImpl::OnSubscriptionUpdated(
+ const GURL& subscription_url) {
+ for (auto& observer : observers_) {
+ observer.OnSubscriptionInstalled(subscription_url);
+ }
+}
+
+std::unique_ptr<FilteringConfigurationMaintainer>
+SubscriptionServiceImpl::MakeMaintainer(FilteringConfiguration* configuration) {
+ return maintainer_factory_.Run(
+ configuration,
+ base::BindRepeating(&SubscriptionServiceImpl::OnSubscriptionUpdated,
+ weak_ptr_factory_.GetWeakPtr()));
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/subscription/subscription_service_impl.h b/components/adblock/core/subscription/subscription_service_impl.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_service_impl.h
@@ -0,0 +1,97 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_SERVICE_IMPL_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_SERVICE_IMPL_H_
+
+#include <map>
+#include <memory>
+#include <vector>
+
+#include "base/functional/callback.h"
+
+#include "base/functional/callback_forward.h"
+#include "base/memory/weak_ptr.h"
+#include "base/observer_list.h"
+#include "base/sequence_checker.h"
+#include "components/adblock/core/configuration/filtering_configuration.h"
+#include "components/adblock/core/subscription/filtering_configuration_maintainer.h"
+#include "components/adblock/core/subscription/installed_subscription.h"
+#include "components/adblock/core/subscription/preloaded_subscription_provider.h"
+#include "components/adblock/core/subscription/subscription_downloader.h"
+#include "components/adblock/core/subscription/subscription_persistent_metadata.h"
+#include "components/adblock/core/subscription/subscription_persistent_storage.h"
+#include "components/adblock/core/subscription/subscription_service.h"
+#include "components/adblock/core/subscription/subscription_updater.h"
+
+namespace adblock {
+
+class SubscriptionServiceImpl final : public SubscriptionService,
+ public FilteringConfiguration::Observer {
+ public:
+ // Used to notify this about updates to installed subscriptions.
+ using SubscriptionUpdatedCallback =
+ base::RepeatingCallback<void(const GURL& subscription_url)>;
+ // Used to create FilteringConfigurationMaintainers for newly installed
+ // FilteringConfigurations.
+ using FilteringConfigurationMaintainerFactory =
+ base::RepeatingCallback<std::unique_ptr<FilteringConfigurationMaintainer>(
+ FilteringConfiguration* configuration,
+ SubscriptionUpdatedCallback observer)>;
+ using FilteringConfigurationCleaner =
+ base::RepeatingCallback<void(FilteringConfiguration* configuration)>;
+ explicit SubscriptionServiceImpl(
+ FilteringConfigurationMaintainerFactory maintainer_factory,
+ FilteringConfigurationCleaner configuration_cleaner);
+ ~SubscriptionServiceImpl() final;
+
+ // SubscriptionService:
+ std::vector<scoped_refptr<Subscription>> GetCurrentSubscriptions(
+ FilteringConfiguration* configuration) const final;
+ void InstallFilteringConfiguration(
+ std::unique_ptr<FilteringConfiguration> configuration) final;
+ void UninstallFilteringConfiguration(
+ const std::string& configuration_name) final;
+ std::vector<FilteringConfiguration*> GetInstalledFilteringConfigurations()
+ final;
+ FilteringConfiguration* GetAdblockFilteringConfiguration() const final;
+ Snapshot GetCurrentSnapshot() const final;
+ void AddObserver(SubscriptionObserver*) final;
+ void RemoveObserver(SubscriptionObserver*) final;
+
+ // FilteringConfiguration::Observer:
+ void OnEnabledStateChanged(FilteringConfiguration* config) final;
+
+ private:
+ void OnSubscriptionUpdated(const GURL& subscription_url);
+ std::unique_ptr<FilteringConfigurationMaintainer> MakeMaintainer(
+ FilteringConfiguration* configuration);
+
+ SEQUENCE_CHECKER(sequence_checker_);
+ FilteringConfigurationMaintainerFactory maintainer_factory_;
+ FilteringConfigurationCleaner configuration_cleaner_;
+ using MaintainersCollection =
+ std::map<std::unique_ptr<FilteringConfiguration>,
+ std::unique_ptr<FilteringConfigurationMaintainer>>;
+ MaintainersCollection maintainers_;
+ base::ObserverList<SubscriptionObserver> observers_;
+ base::WeakPtrFactory<SubscriptionServiceImpl> weak_ptr_factory_{this};
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_SERVICE_IMPL_H_
diff --git a/components/adblock/core/subscription/subscription_updater.h b/components/adblock/core/subscription/subscription_updater.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_updater.h
@@ -0,0 +1,35 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_UPDATER_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_UPDATER_H_
+
+#include "base/functional/callback_forward.h"
+
+namespace adblock {
+
+// Periodically updates installed subscriptions.
+class SubscriptionUpdater {
+ public:
+ virtual ~SubscriptionUpdater() = default;
+ virtual void StartSchedule(base::RepeatingClosure run_update_check) = 0;
+ virtual void StopSchedule() = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_UPDATER_H_
diff --git a/components/adblock/core/subscription/subscription_updater_impl.cc b/components/adblock/core/subscription/subscription_updater_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_updater_impl.cc
@@ -0,0 +1,65 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/subscription/subscription_updater_impl.h"
+
+#include <string>
+#include <vector>
+
+#include "base/functional/bind.h"
+#include "base/functional/callback_helpers.h"
+#include "base/logging.h"
+#include "base/time/time.h"
+
+namespace adblock {
+
+SubscriptionUpdaterImpl::SubscriptionUpdaterImpl(base::TimeDelta initial_delay,
+ base::TimeDelta check_interval)
+ : initial_delay_(initial_delay), check_interval_(check_interval) {}
+
+SubscriptionUpdaterImpl::~SubscriptionUpdaterImpl() = default;
+
+void SubscriptionUpdaterImpl::StartSchedule(
+ base::RepeatingClosure run_update_check) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(!timer_.IsRunning());
+ run_update_check_ = std::move(run_update_check);
+ VLOG(1) << "[eyeo] Starting update schedule, first check scheduled for "
+ << base::Time::Now() + initial_delay_;
+ timer_.Start(FROM_HERE, initial_delay_,
+ base::BindOnce(&SubscriptionUpdaterImpl::RunUpdateCheck,
+ weak_ptr_factory_.GetWeakPtr()));
+}
+
+void SubscriptionUpdaterImpl::StopSchedule() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ VLOG(1) << "[eyeo] Stopping update schedule";
+ timer_.Stop();
+}
+
+void SubscriptionUpdaterImpl::RunUpdateCheck() {
+ VLOG(1) << "[eyeo] Running subscription update check";
+ run_update_check_.Run();
+ VLOG(1)
+ << "[eyeo] Subscription update check completed, next one scheduled for "
+ << base::Time::Now() + check_interval_;
+ timer_.Start(FROM_HERE, check_interval_,
+ base::BindOnce(&SubscriptionUpdaterImpl::RunUpdateCheck,
+ weak_ptr_factory_.GetWeakPtr()));
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/subscription/subscription_updater_impl.h b/components/adblock/core/subscription/subscription_updater_impl.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_updater_impl.h
@@ -0,0 +1,52 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_UPDATER_IMPL_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_UPDATER_IMPL_H_
+
+#include <string>
+#include <vector>
+
+#include "base/memory/weak_ptr.h"
+#include "base/sequence_checker.h"
+#include "base/timer/timer.h"
+#include "components/adblock/core/subscription/subscription_updater.h"
+
+namespace adblock {
+
+class SubscriptionUpdaterImpl final : public SubscriptionUpdater {
+ public:
+ SubscriptionUpdaterImpl(base::TimeDelta initial_delay,
+ base::TimeDelta check_interval);
+ ~SubscriptionUpdaterImpl() final;
+ void StartSchedule(base::RepeatingClosure run_update_check) final;
+ void StopSchedule() final;
+
+ private:
+ void RunUpdateCheck();
+
+ SEQUENCE_CHECKER(sequence_checker_);
+ base::RepeatingClosure run_update_check_;
+ const base::TimeDelta initial_delay_;
+ const base::TimeDelta check_interval_;
+ base::OneShotTimer timer_;
+ base::WeakPtrFactory<SubscriptionUpdaterImpl> weak_ptr_factory_{this};
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_UPDATER_IMPL_H_
diff --git a/components/adblock/core/subscription/subscription_validator.h b/components/adblock/core/subscription/subscription_validator.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_validator.h
@@ -0,0 +1,59 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_VALIDATOR_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_VALIDATOR_H_
+
+#include "base/files/file_path.h"
+#include "base/functional/callback_forward.h"
+#include "components/adblock/core/common/flatbuffer_data.h"
+
+namespace adblock {
+
+// Validates potentially untrusted Subscriptions read from disk.
+// Is thread-safe, returned callbacks can be called from a background thread.
+class SubscriptionValidator {
+ public:
+ virtual ~SubscriptionValidator() = default;
+ // Verifies if |data| has a signature that matches a previously stored
+ // signature for |path| and whether the schema version is supported. To avoid
+ // race conditions, only the state current for the time of retrieving the
+ // callback is considered, subsequent calls to |StoreTrustedSignature| will
+ // not affect the results. You need to recreate the callback to read new
+ // state.
+ using IsSignatureValidThreadSafeCallback =
+ base::RepeatingCallback<bool(const FlatbufferData& data,
+ const base::FilePath& path)>;
+ virtual IsSignatureValidThreadSafeCallback IsSignatureValid() const = 0;
+
+ // Asynchronously persistently store the signature of |data| associated with
+ // |path|.
+ using StoreTrustedSignatureThreadSafeCallback =
+ base::OnceCallback<void(const FlatbufferData& data,
+ const base::FilePath& path)>;
+ virtual StoreTrustedSignatureThreadSafeCallback StoreTrustedSignature() = 0;
+
+ // Asynchronously removes the signature of file |path| from persistent
+ // storage.
+ using RemoveStoredSignatureThreadSafeCallback =
+ base::OnceCallback<void(const base::FilePath& path)>;
+ virtual RemoveStoredSignatureThreadSafeCallback RemoveStoredSignature() = 0;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_VALIDATOR_H_
diff --git a/components/adblock/core/subscription/subscription_validator_impl.cc b/components/adblock/core/subscription/subscription_validator_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_validator_impl.cc
@@ -0,0 +1,145 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/subscription/subscription_validator_impl.h"
+
+#include "base/base64.h"
+#include "base/containers/span.h"
+#include "base/functional/bind.h"
+#include "base/logging.h"
+#include "base/task/bind_post_task.h"
+#include "base/task/sequenced_task_runner.h"
+#include "components/adblock/core/common/adblock_constants.h"
+#include "components/adblock/core/common/adblock_prefs.h"
+#include "components/adblock/core/schema/filter_list_schema_generated.h"
+#include "components/prefs/scoped_user_pref_update.h"
+#include "crypto/sha2.h"
+
+namespace adblock {
+namespace {
+
+std::string ComputeSubscriptionHash(const FlatbufferData& buffer) {
+ return base::Base64Encode(
+ crypto::SHA256Hash(base::make_span(buffer.data(), buffer.size())));
+}
+
+// When the schema version used to create installed subscriptions is different
+// from the schema version known by this browser, we should not attempt to read
+// the flatbuffers - we would misinterpret their content.
+// Clear the stored subscription signatures to indicate the files are invalid.
+void ClearSignaturesIfSchemaVersionChanged(
+ PrefService* pref_service,
+ const std::string& current_schema_version) {
+ if (pref_service->GetString(common::prefs::kLastUsedSchemaVersion) !=
+ current_schema_version) {
+ if (!pref_service->FindPreference(common::prefs::kSubscriptionSignatures)
+ ->IsDefaultValue()) {
+ LOG(INFO) << "[eyeo] Schema version has changed, invalidating stored "
+ "subscriptions.";
+ pref_service->ClearPref(common::prefs::kSubscriptionSignatures);
+ }
+ pref_service->SetString(common::prefs::kLastUsedSchemaVersion,
+ current_schema_version);
+ }
+}
+
+bool IsSignatureValidInternal(
+ const base::Value::Dict& initial_subscription_signatures,
+ const FlatbufferData& data,
+ const base::FilePath& path) {
+ const auto* expected_hash = initial_subscription_signatures.FindString(
+ path.BaseName().AsUTF8Unsafe());
+ if (!expected_hash) {
+ DLOG(WARNING) << "[eyeo] " << path << " has no matching signature in prefs";
+ return false;
+ }
+ if (*expected_hash != ComputeSubscriptionHash(data)) {
+ DLOG(WARNING) << "[eyeo] " << path << " has invalid signature in prefs";
+ return false;
+ }
+ return true;
+}
+
+void StoreTrustedSignatureInternal(
+ scoped_refptr<base::TaskRunner> main_task_runner,
+ base::OnceCallback<void(std::string signature, const base::FilePath& path)>
+ signature_receiver,
+ const FlatbufferData& data,
+ const base::FilePath& path) {
+ // Compute the hash on the current, background thread.
+ const auto hash = ComputeSubscriptionHash(data);
+ // Post the hash for storing into the main thread.
+ main_task_runner->PostTask(
+ FROM_HERE,
+ base::BindOnce(std::move(signature_receiver), std::move(hash), path));
+}
+
+} // namespace
+
+SubscriptionValidatorImpl::SubscriptionValidatorImpl(
+ PrefService* pref_service,
+ const std::string& current_schema_version)
+ : pref_service_(pref_service) {
+ ClearSignaturesIfSchemaVersionChanged(pref_service_, current_schema_version);
+}
+
+SubscriptionValidatorImpl::~SubscriptionValidatorImpl() = default;
+
+SubscriptionValidator::IsSignatureValidThreadSafeCallback
+SubscriptionValidatorImpl::IsSignatureValid() const {
+ return base::BindRepeating(
+ &IsSignatureValidInternal,
+ pref_service_->GetDict(common::prefs::kSubscriptionSignatures).Clone());
+}
+
+SubscriptionValidator::StoreTrustedSignatureThreadSafeCallback
+SubscriptionValidatorImpl::StoreTrustedSignature() {
+ return base::BindOnce(
+ &StoreTrustedSignatureInternal,
+ base::SequencedTaskRunner::GetCurrentDefault(),
+ base::BindOnce(
+ &SubscriptionValidatorImpl::StoreTrustedSignatureOnMainThread,
+ weak_ptr_factory_.GetWeakPtr()));
+}
+
+SubscriptionValidator::RemoveStoredSignatureThreadSafeCallback
+SubscriptionValidatorImpl::RemoveStoredSignature() {
+ return base::BindPostTask(
+ base::SequencedTaskRunner::GetCurrentDefault(),
+ base::BindOnce(
+ &SubscriptionValidatorImpl::RemoveStoredSignatureInMainThread,
+ weak_ptr_factory_.GetWeakPtr()));
+}
+
+void SubscriptionValidatorImpl::StoreTrustedSignatureOnMainThread(
+ std::string signature,
+ const base::FilePath& path) {
+ ScopedDictPrefUpdate pref_update(pref_service_,
+ common::prefs::kSubscriptionSignatures);
+ const auto key = path.BaseName().AsUTF8Unsafe();
+ pref_update->Set(key, base::Value(signature));
+}
+
+void SubscriptionValidatorImpl::RemoveStoredSignatureInMainThread(
+ const base::FilePath& path) {
+ ScopedDictPrefUpdate pref_update(pref_service_,
+ common::prefs::kSubscriptionSignatures);
+ const auto key = path.BaseName().AsUTF8Unsafe();
+ pref_update->Remove(key);
+}
+
+} // namespace adblock
diff --git a/components/adblock/core/subscription/subscription_validator_impl.h b/components/adblock/core/subscription/subscription_validator_impl.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_validator_impl.h
@@ -0,0 +1,53 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_VALIDATOR_IMPL_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_VALIDATOR_IMPL_H_
+
+#include "base/memory/raw_ptr.h"
+#include "base/memory/weak_ptr.h"
+#include "base/values.h"
+#include "components/adblock/core/subscription/subscription_validator.h"
+#include "components/prefs/pref_service.h"
+
+class PrefService;
+
+namespace adblock {
+
+// Stores the hash of FlatbufferData in a Tracked Pref.
+class SubscriptionValidatorImpl final : public SubscriptionValidator {
+ public:
+ SubscriptionValidatorImpl(PrefService* pref_service,
+ const std::string& current_schema_version);
+ ~SubscriptionValidatorImpl() final;
+
+ IsSignatureValidThreadSafeCallback IsSignatureValid() const final;
+ StoreTrustedSignatureThreadSafeCallback StoreTrustedSignature() final;
+ RemoveStoredSignatureThreadSafeCallback RemoveStoredSignature() final;
+
+ private:
+ void StoreTrustedSignatureOnMainThread(std::string signature,
+ const base::FilePath& path);
+ void RemoveStoredSignatureInMainThread(const base::FilePath& path);
+
+ raw_ptr<PrefService> pref_service_;
+ base::WeakPtrFactory<SubscriptionValidatorImpl> weak_ptr_factory_{this};
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_VALIDATOR_IMPL_H_
diff --git a/components/adblock/core/subscription/url_keyword_extractor.cc b/components/adblock/core/subscription/url_keyword_extractor.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/url_keyword_extractor.cc
@@ -0,0 +1,67 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "components/adblock/core/subscription/url_keyword_extractor.h"
+
+#include <algorithm>
+#include <cctype>
+
+#include "base/ranges/algorithm.h"
+#include "base/strings/string_util.h"
+#include "components/adblock/core/common/keyword_extractor_utils.h"
+
+namespace adblock {
+namespace {
+
+bool IsSeparatorCharacter(char c) {
+ return !(std::isalnum(c) || c == '%');
+}
+
+} // namespace
+
+absl::optional<base::StringPiece> UrlKeywordExtractor::GetNextKeyword() {
+ base::StringPiece current_keyword;
+ do {
+ const auto start_of_next_keyword = input_.find_first_not_of('\0');
+ if (start_of_next_keyword == base::StringPiece::npos) {
+ return absl::nullopt;
+ }
+ input_.remove_prefix(start_of_next_keyword);
+ const auto end_of_keyword = input_.find_first_of('\0');
+ current_keyword = input_.substr(0, end_of_keyword);
+ input_.remove_prefix(current_keyword.size());
+ } while (utils::IsBadKeyword(current_keyword));
+ return current_keyword;
+}
+
+UrlKeywordExtractor::UrlKeywordExtractor(base::StringPiece url)
+ : url_with_nulls_(url.data(), url.size()) {
+ // The keywords returned by GetNextKeyword() will be passed to
+ // flatbuffers::Vector::LookupByKey(const char* key) which assumes |key| is
+ // null-terminated. In order to avoid allocating a null-terminated
+ // std::string for every extracted keyword, we instead replace separator
+ // characters by nulls, so that a StringPiece referring to a keyword is also
+ // null-terminated.
+ // This isn't elegant, but it's a valid workaround for the limitations of
+ // the flatbuffers generated API.
+ base::ranges::replace_if(url_with_nulls_, &IsSeparatorCharacter, '\0');
+ input_ = url_with_nulls_;
+}
+
+UrlKeywordExtractor::~UrlKeywordExtractor() = default;
+
+} // namespace adblock
diff --git a/components/adblock/core/subscription/url_keyword_extractor.h b/components/adblock/core/subscription/url_keyword_extractor.h
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/url_keyword_extractor.h
@@ -0,0 +1,60 @@
+
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_URL_KEYWORD_EXTRACTOR_H_
+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_URL_KEYWORD_EXTRACTOR_H_
+
+#include <string>
+
+#include "absl/types/optional.h"
+
+#include "base/strings/string_piece.h"
+#include "url/gurl.h"
+
+namespace adblock {
+
+// Keywords allow selecting filters that could potentially match a URL faster
+// than an exhaustive search.
+// This is how it works:
+// 1. Each URL is split into keywords using
+// GetNextKeyword().
+// "https://content.adblockplus.com/advertisment" becomes:
+// "content", "adblockplus", "advertisment"
+// - "https" and "com" are skipped because they're common
+//
+// 2. The keyword index in the flatbuffer is queried only for filters that match
+// these keywords. A keyword may index multiple filters, a filter is only
+// indexed by one (or none) keywords.
+//
+// 3. If we fail to extract keywords from a filter, we index it under an empty
+// keyword. All filters without a keyword are checked for all URLs, as they
+// could match anything.
+class UrlKeywordExtractor {
+ public:
+ explicit UrlKeywordExtractor(base::StringPiece url);
+ ~UrlKeywordExtractor();
+ absl::optional<base::StringPiece> GetNextKeyword();
+
+ private:
+ std::string url_with_nulls_;
+ base::StringPiece input_;
+};
+
+} // namespace adblock
+
+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_URL_KEYWORD_EXTRACTOR_H_
diff --git a/components/adblock/docs/ad-filtering/README.md b/components/adblock/docs/ad-filtering/README.md
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/ad-filtering/README.md
@@ -0,0 +1,18 @@
+# Ad-filtering
+
+Eyeo Chromium SDK supports several ad-filtering techniques that apply in different stages of loading a web page:
+
+* [Resource filtering](resource-filtering.md): Blocking network resources from downloading
+* [Element hiding](element-hiding.md): Hiding content that couldn't be stopped by blocking requests
+* [Snippets](snippets.md): Specialized code snippets to deal with most complex scenarios (like video ads)
+
+In order to decide which requests should be blocked and which elements hidden, eyeo Chromium SDK consults
+[Adblock Plus filters](https://help.eyeo.com/adblockplus/how-to-write-filters), distributed within
+[filter lists](filter-lists.md).
+
+# Frame hierarchy
+
+Deciding whether to block a network request is much more complicated than just matching an URL against a list of
+filters. The SDK considers the filters that forbid blocking of specific categories of content at the website
+level. This means that a top-level page or one loaded in a parent iframe may have associated filters. The
+implementation operates with the URL of the current frame, as well as the URL of all parent frames.
diff --git a/components/adblock/docs/ad-filtering/element-hiding-sequence.png b/components/adblock/docs/ad-filtering/element-hiding-sequence.png
new file mode 100644
index 0000000000000000000000000000000000000000..6efb5794769b35d1317f6adf9172e75cab3f5eca
GIT binary patch
literal 177168
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%0Af`Hn(}ErAEk=~J^VfTE<F
zL~}a!fMSb_b&wZ(FuIQHg844E!6i@x`Ks>%QMtj_2nSx8g8*!SVpFI0R9*s}4*^=~
zS`y<X*&KpGFFbqojP-T~Hf^}UGU)ZpZb*H>F&ZGJ?q;&Wxdb+N>7|%b1c_IX0NcJR
zDtj}kd7FF`h1-7F+0u@ou$1XUr-L0lkbh(yF0DY9?#<Z^#AXBL7D0ganj{cTA|ls0
zHEW73${7H3O6M=p6=dfUgkcOOefag7pe%yJC1Du*e-%@I7&Mpy2A7jCF7byB|B&`S
zhz*}E*s}~zMx#^z`*Y8ki-2hzN^vFr?<nB^Z9t#VK5PU>|KYX&d6Ol?E}TUUuI_}r
z6(<8$wR#H8mr&m+gmh@;<_0DMw~sXAzex*ey_OOr3R6z{pk^+}iToi-GHvDx0R=KQ
zB(2T{3R<OPyD{U{4^Ook$P6J+0d(=l-B<}g4*YyRz@`V_4k5I2oAC`F1T~a#PDvk)
zXc|#lF9rFQVi<{rne|dOKzI_J5>=h_ep&oQS#b8)=(WWJXL-ZmM|x<0Z0Ml5NyKO^
z6xM+X+R8&REXrU#+tOrLGawhWoV*M|z--6iQXjqrQn*YF{q+S;268peA$A~AWo+pr
z^Dpp-P!C3Z5~`bs%7l#x<xo<wpk_<Ke`pO|TTYt+X*7qV;PYGmJdFo%V>op8kqiqj
z--y2d{X6IwI6Sp-4VdhyX`i+yjfVivckoL5-zxq8XPE8td0Z?+Cy^d;UHS1!Wl$;w
zry~0O_7Nih-s5Wl^Dbe4aRKa~sQ~#kp0#l+`TOmve+yS|YNpm6>*iGrdOY=J$G)BK
zMe;Vo2_UbvzO!Uq<H`PeP-6Ot2CkpcY0Vq8>!1{deKeQUMr>t*0%?1m9s9$%&A|Gt
zVmv;55Mq=zo{${*B=kpscrvolOh-^m0H`Y`!telpbJM)ZkUIMu??dP^L+k?=zg_ed
zh8p+!TjmktyaVX8Pp!pja`WTfTNx1j><e+gSuPD7D?jnJ7d3A3ZznDg`oLM`vV<Cq
zcq`rf3Mffc0LS`ix;~?S3}A6umyA0iV-EuGbg!IV0gYIZ`H$xwuW}c8iM(``N8XeB
zM3r+oRnz;Ne6LQ~AN(5mDl7o`$O3Q`Xi)FB4HX8q!<YGi+;QYAuO;R}(8KQ!s*uTW
z`y}nL9#_i_>!c7e-UYzq-IJFTN7;p1LnV}6IRF{m_oCoXkCMJ1lc2WY^&iQ#^c(2B
zi(~(xe^dw1)Bs^f`Jys@9CVc1a4J`!@g4fTHoIu@(*-RXuRo8JDLAcfTq&-k7WQQ=
zU#dxbg4=QNjhKX}5+r)ofel?JTV{GUp#Z?Gd@VyyTn!aLu5%RRFwL77B|@D-CRf*B
z4eI&CB+%#Fd}_z(Q!@wy>p-0Ar6q8Vu!{kl<DqMxUSwY9&)R?i@?}(~Y?A+t`^Fv|
z51|wh95}rvgtCr^^?+NuQjtcKiEcIT8bH7946H&vW%jUVe307y=|L32DfWp&3*p-k
z{bwQSKpYWd&Y2g%@4NIoXiLC+*vxJLeT5n$Io7gU`9edGL*HceT@Zfr^S5J=N4*cl
zavZ?}x<mQR<A+NgsF?_g)0i$kd{Vj}xvDL)$`<w%+XL#^z26~AN^u*fc89Y04ZIaL
zm&cEp&+qeE>YGAXDr<oMLd^l)t<K4<aq^7z-xuG7j(SXCD0_TIshrG9m;Nz0>+h4L
zq)(u;Mh#)kT3`_(aVPiD0q43h6rM<Lhh}^%6p0AMd>qXAJ^;TCy>bG;och-V*CE;w
z+T)9QyCrxQ4WVX2rGT|Gbngid*@H=wTVI*Q%GYLYFBL&p<L!~sk<;STs43nMbs4pp
z?<f0{W=4Kz-YK2%S{vB+_E#<hQvCpw_hefZ1WKy=q0ioKaK`8}eS2bLUtDKBL1^bn
zT|_atY(U-dmHAo3=Z@imh}nZ}>lAG-)UPxZaC%Zq+d<aY?pHC_FKl?<0t9$D)9c0(
z1GuPB2QS-w)y525DXvt#07A^y$?ss^wYt%F&qMgpBMrF|8$Gk;X2@tn=n(RgBf!Q}
zRC_QumjNu$(1<C5qU$GQSOj=O>oR2r{gcP8jom68;Oqms#_g4PanzJfrthr5w6!e6
zN&2_%_=LhPBb^t10Z5w4<p&JqAKR_By;Ct0?2?=4XxUNx8>NTA3BD_3@4+gwUo%gR
zXHM5neD*F9bHJ@b@Gx*bxs1*`@7^*gY2=AJIR;l1U3<Xvcc0lSmbZ5ZB}63rAlLt$
z{UC5YZ8IqhQQ(~7H^4T%_u%ny>3T4Fb>b_4(&#4e9g~0Mc7z<bz4#TtR5;9nW8T-D
zNC3>Quar;r3-B1uaPTr#en4IOrffO@NNs>XX@df{Nv!+acr<ylxkKr>*b?!W{ihw3
zTor@QQ%yf%l@uRmE&WCzdoPR9kg_~}<@2jc#dP_h^1qg*U|~)MS)v$661U%}@Vt}s
z7W9u7AxNpe^Idh>XLcWYuD~btd{0jb?sL1|fbilbUycVp+Fz{~r!w*lwc-GIFPoz}
z{zbL@ao=*6&{2jvY(tdK9+U3Y>AC`WE_*S!uMXww&q;#xiFLg9mHXH}uKu=|H2s#(
zHTyfvJBYy`DC)YQh~mx+XZ>}}U^~vPkSn={x+ezd3MfxRNMtC9M!nR0&#RT8be~@$
z(8M4Fqn_v_rFQtD`p30J&-Guu%U^F44gcy1nDq26?_G74<>ER#D{I_7TOy!6xorGI
z@w}fe^}C~Oq}#R^En}X(GB@sferM@sRXgAVz02T~Rq}}!VT$ttkk-s5>NMuP*fLo-
ztT!HQnZo!K;_VB&?PXZ!Y>1Lpz}Qh7(T3RWUB~2Sooj-af3j2mm?z|3ZP+6NhyJf$
zM)&ze^t8VR*>wrNhtZG@rhGG*`~qP6U)?WOxPx1zIP93iiVrzOAbugTu+0X){87S?
z#*844RWd46IG7jr=-sK-f_U#=#j8Hs{9aK<wl>KwbR;>gFD<WJT*_+3y!j0Q>d%)0
z_j#}7(0rb+BDr$q%IV)8he#;7Z<CPy=ReiwZ%;|8=hf@eDRA5Q)ZAx%?Wn@+f}heR
z#1?Stp8IY`KjwEHIxQGk4#t_@g!BGuyt;S_hC5Y)i}`}kaqX5_9iCLW^E?i-Qy5Gr
z^*5b~l6ryYqU?*4dh@SXhxlb?F_X=a^)?Oh9v~54-=2qdaW+Rk=BZq`V9cCDCQhM6
zeTrEOPo}5FW8mgi-0<{pm0y9)N~sVZh9d2PTC5d5T;-}Mb4I4N^UGkJ!>P&Nw1;y?
zWlbMFyHg8s#}3bwj41-)hIZNT{<!5RHlh%d_S1B{D#fS`zQ1+pXp<d=_)Za%_x1Iy
zTZ?X_&yLy0Ql#S*8zS^FQWOlOkca6J+)os~JliAQ4FG?g`M*jDM=n)U>KSA#E{uGv
zn(u@Bf?J76iW&sfs`gr{rQg42pfg^PgeEf`7vxX;O!BJKqj)fScPEo(nxL@`VG%6f
zfwo7B^AC&sZ<=J8mKiH#X|6&b)bUL&(aTV#8`IR@{suJWfkjn^i~>n{_p_Il@bj6)
z;909OHc#Jo^4ws;zK5FUva&4wGHl#Kf41+L8ETqrf8s@_#N#>J*4%8)DSgw??EXqr
z0?$8eDfev!966=gfW(tva#HdmbeeQ8-krwqxU03=P+uZYWJIwF2tL)y9+t$^3L0zi
zCq|J;`WfOw)odZr^JcrCGM4M1kgryDlIUfo0=%Mj({!c2?19c_S@;(i=0wBUVWD%{
zQ{9HztpkuqGeRbcp};?H!FFB17=0Dko{O*6!KCBquOtOsbXe^eYSODoZ|u_1Uc!sI
z5jb<&kJf_vuJkjqvGdEyh>gZisTmzT0Mt#$RFuVVrrC60sUKq+I&_!t#J1K}$(|&0
zBiOW`7FGVmL53LF15$oNdn_*vVzHjTKZbdIX4A!nVkD#Vr_(Q7^vjC!$Z~6aL_KwM
z$20#d>X*!1SW#h-){++e0~&F*pp!~HV&kVU1$akHQEW$kNX{J%46TQm_=+<KZ<|up
zh)hEx>TG5qZ1*)x4`7dmibkdu80)6Qu@RG__Q@)HHb*u`d4y=yQkO}pd#b&<u31xD
zsp-k-(QP$We0HB_{_IR!SbUban{asKEv(vXYLKy~XA7MI2`Tyi_=j7L%r|TLnaUaH
zx_FKHpt)Ay^Qps!Q?$*K@LCw|Q9W^0cL)$i$NWw;KR0|=z&}fRSPPSRPt7QFw4|+4
z&*YV;1+y<c=prT?kJq8Vw;wq%i}Cs9^p<nDGX8Rd%-LB8dE1pLTSbiqw*V|_!gP$`
ziBt`|ZmVuKb;r$QJpORE^j*Eav^%DlX?Hc!mv~RigOtcIy8!06AD+~~jL|(wPRY`<
zk{>H+%*vdEahQaRspC0<#(J$bCEdG(Q`%e#Ok0cvJ9JOyv|oNH8coQ|XTeycRY*;L
z&=XHlbs0))%fWkHNtn`UZK95F?nx^MSr~e&v4l_1Z7o4?dyL!svbuuw<-@;umZgw&
z$?VW&6~?s|yfd6kE#Pe1eP{&B<J4`D@v>m(?4;%r{=yB4&OJ%B-!ru2chy(wVI0Mc
z3eq=Z-lx3pFZZ1}x3+$IeU1n{g=WHels>J+-hWU3&kO$n7TzL`bH$&8OkDxvjhCM2
zE%#PGt;3&6r-i{$SC%FRohVZw4aI*eJ#_w5L}TGx6kd?IR`4-KThj8%m6vJ8I+*CF
z0?b#p;aCo(7embWk~4i-Li_}~ETMzU$A5gen01ALC{*-m;VtzKhPRQFPp>VF+D%03
zdv<kIFHxB>tEWa0+z5_Xt6QU-_>-8TNSp3Hu+*#k?whvkJ-EL?0H<cvZBeFS^;H0C
zDE!Pfi~1O|;=4CkQ-x>|97aElfVVMs5Vf|m<}kr@x%Z|0GBVqZtl5FQ==kL*+inXx
z`t&J%o_rv6qh+C|t?l>PwEOq8?v}THZ|!L(82GazCuy~hyu1&4#6y0US0U%Z?EK(~
z(v{J)pNqGvhsw^LDk#WkyrP|*AsSaUk#}R+HqH;}jc;ZOG6ExuZWAjCN`FZD2z_&W
z{n*&p*WG)7(7D&hR@_^AYlc=Pv#aE<yLUv9^a+oVk&-KlfAeD_0F&E@>!~rvb#>{S
zGM!Bp)ncapF|IecPQ9)}c$LR()ev<h>1>z_Ch+cd+UteFn%bBb1vRZKsls}h`H%?P
zYUho&y2jB0^#3)@E}(UHZ0s_aIFg++M>`9uN;Hg8N5>n7nlM*Vg=jI7siI-d{wYHH
zC(D0($;^I`Fqw*gjR={COfVOtIuxbM{G{XaQ0OW_GBYZEY90<#HzV??W0+Y|OY$Ip
zP_6N&YD~0FUs`4>dooy^p)!TKm@sMrbJQ3|ylthP-*@Q&mx|k@_QBxajp#n2YgK3p
zt$gf-tt8hIQwVke^Cx2Y(j`nKXw3*xH_zbPg2*rpsa_GDxl@?#DZIvR*}3pE<2I=x
z{P)jm*Jxe)(i-<imXR5(cM-69$Knkwdm_8>E^ShskiQ?@eMIk6sx7lin#0TjBPcZa
z{DdrK%!fGdU&}vb-QyMQJ?$G~PPAp2$y-I;pK8sz+mkAaXTFK0HS=Dd&r~$9dgE@S
zzPh|JLzFukvS+X{L(O(iQh{ltQD*c?`iajan|g#v-F#*4$IpO=3}HtP8aud3Y*`D+
zTIS;&IX?r|((w4_9iA(}3LmLH#LBdDdcQ2EN#;>ldbdY`#HX2toSsMobVsr9C|M5|
zOV=pM#Bg<s#|3?ugcr@Kr_%1QQHWDhGqdr>S&dTINLO9#3n<|0@&3JT5}2fk5j6ld
zSxnOu$eGbxJoqgdd{Jq$FK%m1+D#OXz9MSr@yFn~m?`n{_z{f4BekU!K!_^7@D{Sc
z-c#I$It3q@UhRlSfIItmEDe!<F@l2@v(?TX#$38;xQt&EdZ9OxaRc}I=8yi$i}QLB
zk2`&{+zZIm{o1K#m}<?Szp6dwh^4f=zM5zIicQ83ar424*Ou^B_)A9JyT@MrVA?(w
zK*E&IPh;jBMrPmeq@V($FAtpu3LBYtJz)3xTFbGo&F$`|nK4&_z;=%mI^mopR6D<o
zg1UF!xi9wX=rLSt9#aSYIcAoZ!|r3olyUb>;mZq#VwHO3yW(*(_iku5<M(ZE)@`6(
zAIuO<DT^E(Q)&MZz&Iy~pOVf=WzfaU8y+jR_suG18FT|fPT?xZvS-CktXuoE77zTE
zM(SftMMpe?CEocd+J|kfJh_jQJeP%%7pL}0yT0<pP?NQ&=Im-5Bv&@a)~CLc_dAep
zO?hzSE8w4g$uOV(lM7%Hn3Z9DZJM!JL-;3Tdx=%+)y1f{ME>adW$06^ctz4KC*#6F
zziw%j6BuphBB5za+0R$>#1*anJ)rHlT}dn3zlFGM+Z>q_D>p7=b*BWe2u4<GcP5Wx
zcOTZp>q`g;nHyc;jU~L}nPG=r>_@6&sgi{Z3|%R7EYhhpVx91Lo`k_nA#Z|bdVzHE
zX)^^(5uUCGY-JP41vph)esn;?rCa5g{Oi^xYl7@!y!(6=yG_>-LrhB-%NLE7wh`*(
zfZh9k3WcKHqf!ohxcQ`al4#+kVBy|y%x>RQ%>7~tOM4dCui~5-VVvE;SC4U3wvVqB
zagdVFaMKL~zebOapQXsc$9+B#oj*lw{o0JeN#%){vyq0dLd%JYRI;3@(7-rJ*5=M4
z=>x^d$+ehd{3yoAc`SHD@u*)G^-`;}%eZxwKW*N9v66#7qWEy4)gsgC@b-k4Xv;uE
zZdeGp%-pyJ-SAcVx-61DtXEmpFR9A*>?XQ(5V*oOm)<cU3*L|6+)lGHxqRkI1|o}1
zva2|(akI|tsR(ADE%UyUnvQr?xNe>DyB-+#<vkYO9DUdhtH57iE%pgxL3jrNlE@Sx
zgD!H4VEu%8+gTEyaM&4tTg8!Gn>$9&1S|3F#mB+tEZjKJ(H{<nT`Tq4U^{(HE7EYW
zCvFII&-i;4jBt}te!ut)P;ARQ!Chx3cO-|QKqFpGS4+!caB#4Ae0!53(iP{lVIXRU
z#LjLi4j&d+e-Uc(=lrnn8Oziqg}zy*Xl8NbbajRmG-i2Tbi0xA<`vMqc(K2cZK37n
z8M}a8oVL*K&Ns`eqG&rjl2Q{MsbI_nG=z5a0VN%grCwR$LkE1Qy()C$2wi1+%%K@N
zxbos{3A4MO2RkXb>8|<|6mTxAs10JDT7?sNZY$)#TCt3Mkg(s}f$IkpmZD@-;(Qh4
zz=WPn+#7ofc*!brM3C&Xu)>mIzIIau{XuuqMx5vhKMA~A8CG8MIpf*FO>=|t0c>2L
zz}-ylZ%VhPT6bKeH&I+NRDRT;Ngs%>z+=*Ef2}RIm3#kA+2!NK2fN8mmCr&H&@Hit
z#@A|bG7dc_$6C{#I8XM-CM`NKZcNRdd~|fwcDlc&t<a(O%gOLpTjw~C!k<5X*7x)*
zn}-bck=n-F^nuTB6HU|7(w1e$52~AzcnaWXNg~ej{y8KR(*fzoIFDYg3fNtEqw&Ps
zsDR93SJtL~w3JAE#wjSx@{WC{`g3Mf;3lIs!(y=}Bhn!E#y%#U<(}+I{PWi>;@kQf
z&H)nO%kdee&2<HlFiZyR&tAqtt8(AW6Hf+x{_#F?KA?zTVU5$9gz^uT^A-j10;`JV
zQdt#If_AEZ$S-BvaVT2WqrmycC;lL%geG{pf+_iS+C7((&V=N8t*;CYdX~a*2w2Y9
z=iR#tpkJOhL`l-{{xv>6AE?1Gbap1FJw3#ev|3CB+%KGM{)UX>#Pt_Hn#hg<K^SZU
z8glpXqhU3?b}dzAG5f`f{d4Ot@1nOQl9xD-U1erw)-^RXO%a<iMNjtmO|2R)_w`IL
zn}xHpv+G|caCWL-PMJ2p;}{Hv{cDpNC3m=)Pw|amLj!|nl1GnzU#uw=eGEL37{ekB
z#@9Xgn7#v^R{;_}P5wY8VyZj9nY4yahY=OQsJvmlmzoaq1wR1_EFF^Q{<tLsxao@E
zmv7ajaL*-PSl&nXF0;W6Zg4}L2G6$5%}@9S@1Te$lfJEB2%oMw)%?0t+1{aXc$+f!
z3jFXfUg-?HXqg@)RG5UrDR|gL5E;n~{j+~|`~q-71YP`DZezH<FDguN(SM52EK#va
zufPpr4ts%D481D`WDpH0;@|-I@%WIB>E^1?U4a1|Y~u11KLZ~w#ms-V6u@1Pg_Ruv
zI#iNBeUlC>Ni>0n_YycLxi#nDHK)tTNj4|IjfK0?soX%NASo(*YsBo#(w-H;=dd}O
z778i(8jN`5M!yiOB)2tOp5W&uw<+(Yk%s!cSEAAtX(+5*9w%)dw&2c}FcLB!8am>3
z^$#>~j{v;!@UwINAZQ<;8`hYPkf2>AC8q`zVmKw3u#NHs$h0UHy>W2?T*x|;gaY|<
zaTxOYiOb}$$@}1?YsY6<&;TM}_Ch>z@P>^AOa=1NrkZvmuS7yIbNS#+2TC&<*=?nu
zzAu81O5Wd32Deqf_;TqGWjTVN^S9(0q1e1%3&<g4X8hygB@o@BwFVk;SN}-t|KyK<
zQS9INgBed#%8K~oTRB-oM1+)6zjCxBmW69;cW*14Ap@(JFgj`z4dKBvi#I?xeb+O8
zbB99e`uB5-R-}7iank=Q!~XRL?j3O535D<Ue;)kra^sJvLVw-VRU7O3-~Xxefpy$P
z=SIG{4F4Zb{X+%+{aI)yuLHG2ZByogJ$^$iVqDaGK}98_prGx-g$s8)*)@;`;}vPn
zFgli&l9D|$Gea46Clj&YM^-4xD+yscTnW<pxjY-<mW{zs(6h<7q+@h-4T0HD^)#sf
zJIMZx*<ak^(|dancqg*uT>@R;Ci_162z2iVEA^(+f1+L~U>D)a`^ZjItKiyR`g=F@
zF&QhU+9k8!vsc&1Zm=>Lg!zFVlHf28Dg!V5!uLlS+j}OBiQG?mykf3*E-K26fwz_b
zeycCg_rzwAl@6UMLiR|$o0~2=R@q+EbZB7nQ1>s(tr+O2;pNr2_|seDTWt!1T+seN
z0uwk(RzpW@Yi~Dd&otqvfm4`lHzejyz<UcM8jn}O8RiLJL!~S<&XQYzlU4qR!f<1(
z-Qc^3p994^w`qrbc38qU&x1=l|L!j7gFpBrsLXytK(GT6R*XD{)|O}OApcN9(l=c`
z{@&u@w|fVMunXgzYCV&01t0AilLgP8>p+H~I7CpMO+Y+D3b*9Ah?Q33S%!#!6%C8X
zp^W;Q-B77w4Us4D^yK8^X{@fiNCFY1owb3SzqyY+b&Sf4PtxQj%LZxsXabM<UpE|K
zB0CS_#$fLsnM+v)^fmG-a2M}wg>&RVg1EA^nfDV=h?0*<)9nmqml%hJs04^@)Ifn%
zK1*JX`@GFqbE48IE5TT~gCiHMT?Qlcq<+joAY!nfPw)NyogbJg9F|6hm%&K|y%V!!
zA=6*fGzYe=8+`d=!>tA;kM7;dosvuo&3DRUCBFNCT8*FvVVUoiARbwO+@6^DIEdI2
z&EoBrq+O@XyP=E+Sw|t0#(7smQfC&S?u!6Uv*n*EOyc`-A^qtetu_VKmUKxtM)`t)
z8>hyvV;p|~Cz`o@HJ?%$5#hs@Gq30s5=h8um{1j2r~1k1>NA6=7fRbp6;=<(g*HBz
zM%{s$Ylyjide(<m`23b>1=afyUaCAP3F-vL(^rZD)0*_11m{d44aleV?t;TMR>^;7
z4u^fw8?b~&dR{rIoQnMQ`$ZE<OZ!=jdH`E`=l-}`*$y$l&Usk_tmw`dDZ3~WIKD0b
zbs03p$=Wq1oN|FixE)YH#J9*ce+@!OQU;)`-w>DjX;x7SB2;+c@c~-Q@OnT^OS(fZ
zQObE#hm|DF?f1T45as&$(_`qF)tA|~!2pU9d-I|tYqY~FVav`@IgCXd6h0N;malsN
z;YHiZ#Nd1JI8Vs18i)3ys-u1LS`iUPn!lv}23JkeL|&6zrqGIm_iD5qRK{fX-s347
z@`CuRONT{(q?{R6W%AK|!yA)2ScOHX$DL4HNt=DjEO+eI3iP#}7|&}efSQ^*;@XVL
zu|-3TZ98_^mYR)SY!@-iubV%AY7H9yUP1j^21@2C+rcG|V9vY0e?`6#Y*9%`7sV2E
z1-?7>9{Kq8dConEc>K77Ctz=X8-W;lbV0PB<9WS=``m~HG_OrfGi;rOoN{mIvg&yi
zsPtvp$@Y^3hu)sANlvz<)3uqSdQED!5bjG}AC~{^H2kEdn4Vbc=EBagDZTzu_}qFR
zjfx)zzr6vj<-=jYWIp<!7;D|#+4q7X&`fw*)ea=wL~&tusNn`r(j5^$46CVYBBSn-
zo~fz5N~DMrCb!!*FQi)?W0YWey`EnzM*C5po|)$rYIRfrR6ORr{NAj@TQB963ltwk
z3oW@oHXN%I0)iI%u9Hmw^z&kD?hhq_zA=zv<76^^NnNH35btxcczWkB#S_zbCUvaH
zN=&Af^AKu%qQ{?l!N|{@`n+?&*xlW7BR^+<$$v@H6K^pix%TCV=6uf1`Cgj_rPFq&
z(&;q%GL7eP6bVqNV`aHC`l|PbZ`NqiO6%)e4yzEsvxcPkn*-W)xC+u8Mb3$miN#&e
zc-godq}F=6&*g}$hFGR9;X^1eKHhk?3<|TyHN00IT~oOd`(QLfCBuPYrsNk4Iv;=@
z+8Y82UAn2w2quM<%@FvnSWaOu8Z#Ax(!+Z+I)mxo^f0wH^+INn!{8=O_b9*91<Uvb
zdcNv#$a|Hpx?j}(mf4K4SVcje@3)F!#BVWWc#Y*0L;IPTlfQQKVYzbLm^U}?Fjzt%
zKdO(UcYtuKb+M7y!`6pAWBbJy3^^p-Ur9|WlK32?VX|CWK`{--X<)}2iD+^|cQh!J
z@g#FX(>nEdO>Litcl5GSk6g59hwOu&a{HD1GVr1EQLHS2=L~^IjZApgSLP+wlNQsi
zv;<tXB1T3;Ncu<Ki+D;ss1uQ*Y49es{c^&TdTY>1>B=0yWXQ1krQ6_VFsFyWFF&5C
zrCl>r_khn11<cCJe(xR|Kz&^YW(kA|$U7ZWv?o++PWS%)RVZ_R9?DbmelN%Wc8dQE
z($H8k_s&;nX!Xf&&}$`j{DWRd9|XKLy554mG+6xk)x<eZ(KIXdxpvdsO6>Wit}b3{
z;`TM)tf<`>USTG^<KvPPwfHadWR4l{QRrN)Hql0#Vx;S$en!SrYxF*hBv!VtO@|^)
z!jQQd8~yVpIH%2aj(TBEr_~!7?Zp~R4XL%)T_DY^oGF5{dQqduz{Y`Bf!iC{WjSw1
zjq<x9h*j30X}9ftSlrOV2i$Z<U<G!li*8dQ@!3nm1hElKOyV;kP3B6$V4ZJyP%=^!
zt`*^l&jru3IAdX*+KYDG(h^fOf5^`y#)75~c>;{fVUM+-xFWy)L&M~oGlWo!M&<1?
z(nvIomhia?(BkU;Yw>8g{SbcZ-r@1a>C)1u-{tzqN36H;8Z#FqQ`++z(kt7cv3>cp
zrD^N)J9$v;oOKun&A~DEM=$x|SI#nr+1%?(+sj0bHM%NJ(k^-AlhkW!v-Jg|Q`fLo
zM4Mk_c%w-Vzah`h?#)XKN&|pT_ukLjbdx1W<@?4U7CqRONv7doggqfxr1KPi`;*ZV
zysd8dxTGE9I&^300QEc~_gDyrVa_iwU+~IS0I%l0lbX(j1ys6hnH7eZZ0h<)epxGq
zA9st6cv4TyZ=)M6FSxnT_5esv^7%e}>z>bM4L)AS6|l0IAybl>67P#PZM!-+CSiZ2
zyD^d#(*c?LUBbnkTG|s|e0e`*wJz*Nf%f|fu)yCUB_|ZP(%|4VP<aY-1b?v!+tZoc
zwW|XQ)p}_%!`iJeU3ZQf%r>@tE>19QS$<5tTsnn`2tw}0?iq|vWPv*7cCx5`*{!QB
z0XGXdbroLOT=Yxc!Ff~jQx2i+0L5kMWafM~HLD;StP#a^{M`I6`SelqvbR|38J)z`
z8)sV?s`O$9@Dit)-|<UPJj7RHmPQMEf7r@=DGiI2cD_E);!&0?mo{ly&b&)FT>T{M
zX1|cR8iZHkCBGfOVa{dTBCrrg19mX2rCl?z!D64etM#R=AoX9oo4`yInrf3M9d*RK
zw~;-#A9LCntToV@rZ*z8;w-=q&0N*xVqnCFjlQ(5d0X)d;7=46V_MdPr*t)=*@$B|
zdR9Ie<VD+;T>CV?XI=vwA)ecR$Zv`kKREx0uI+8!M*azoglcDnf3-6ZYrR9+A!p=Y
zN29t&3Wxo&z)e>G<*+%J&Njs}4jjf9O`FxW%WD48k8Xn3I^+pdMvF?>d_JgG^D5(p
zvrF<XO#<}0d5zUkD*;hjvf72{j^`_^d?7zSzZBRzx9qKRBb%mLInpYtAccyUqe4CA
zzA*j+JgMuuq;VK;CR>5b0~GnxEk-m@K{+mAhE?cG5=uhdU<I@vvRy1BOk_8D&o_=W
zNZ~O2g?KoIr=K_uVS=yadKir4!UQ1e-1JFhCE|lH^2P~yRs_HNcAa$`ieXFmmnGYk
zLwJ3<cB*x?X98-zohMansc{F?V@4Xch2G%9h0Km0k=iu4X27Enwa=>OjzT7!@NV$4
zhYf=)w&Y@`Aj?5Vw)wdu$HDKFNYXd<`%(eR5%+!V#gDt}UCP%NZnXMSM?zJ=HjZQV
zF|YOf@ogxFU;=vFOZlAz!CI3tb>UQ6r8K5wG#F#o>JIhpMNKGe%+5c{Yc(7~L0`=b
z4ZDgOati|I@07tt*2h}ngT5w(O24x!Pp4C}@)xl8OBan~6uxs8kHeTb`=_oPwyfQ$
zXD7l}yfE2YK0R(Izph>|k=>I60^;?A{UglqN-7SOlTJ3i!MLV)301T`D;)L4_NDbo
zI)bGeC6qaD94nh9bZP#;VO%Sl&XqN=--@x!MWcF{2pbPmRKfenVKA-d)vPOlGaIi5
zNjdf&BZ&d3MygmDOG$8yOJ;=|lcu#TC!D(bg{9hb37@sC(}v?`Usb^C(U}mbt~yW8
zYZIt)xlskHYPPSWEe$t6bVfcO<zpRPHu(u<XU?socIycWyS$A=I+EZVeWvODrh_gp
z1Vn>v@<Sh{d+_0bYJQUi198Q-{|GtV!I<0lGx-r;M?NNXe-X-cl>OcS2RMb}<V-@l
z_8xC`U;N1#x{IRu{>qAb;c1(ah^)~dye_lUXiNi`@lAG|rN}~=2xQjB3*s;eDR>16
zU1<%Mx^Nz`<2vCf$$6$t(qkgGdR|r@fL*w8#M#a$0=6k(3Nz`D(c0QtEGH1RJZkdl
zRxczAik;KeOuivQh{$9W8P1!*c;YiM2q*>?=RPW^cUs!Kg5=naE_+?{gbZMehZ&L-
zulMLl0rRI$;Nqd6w02o1BJWQ1<?dap2HU6)hRH7Idq7C}t4q7IhwkJxE~1T!x!qve
zd~!w{Mi7s`=qc(U8v9OflFP2X3`)v7dpss5DqD!2t5R|rn74*iUG@gp(-s*k$-e~b
zzoy%CKnlwTOe((LNMPlbtcHA1f@q<$SK3NU(L}cCi{7xK@+FPf60<jHioMmdcegEN
zJpUGEoNxUgEunoe>*ywHfCy$pzPPm1RHxq6tpK8hF6W#6b@r2MvdICbz--x``abVZ
zDA(sCb;>)nh;V#vi&TD3mXn;`;r7xDKjUJr9ZgCJY~;EbhJyt$x`PCKU~B$*PJu+*
zvz)))1qb&H?a(g-{+0G;SB$q@1)4X>y86#x?%+dJzx>js!?UREyd1qFf5m|!tmI7h
zC<_+6^=)u!I7K<4YOwD0V)VPe|8_mv)z`i2jdoe8f5k$#+zQ;8p!l6)4Qe-nrr-oP
zEt-&^)cwq6%*AitisW=}S(sb7O*AI<N@^R?)8kfw<?L-K1J|^PbKL|iD~&^CyS^&l
z-A$j?pCNBNnpyx{Oo!Y}ga0^8e9tPpNh9khAnU58(|eOiW-1x$j3?3Uvo&fZ^bG6x
zsr={AHXg?vipCd%sr6O(K+Z(28g;b(Oc<A4tjw*@&Ji}`{tuTSwfk|x@teXJWX=5K
ziu!&Y9XHZa>`YHZr@t#80(`=GNI<dv(%+%sJh7d_mTt+_l@#5m;&b{wOJ~f98(;ou
zk8={00<K<{Sp=SnqlgqSxYUxYmgh83JGk6XDi#c*vWQ_`0n=2CoJGvo`sK@)x<*E0
zLU`+qeafJ*e*YyXh+0@&d^hJuFkE^sjSUpwZ6P!9eeL0Nu$t^?E{mtAIlD}tqMMTG
z79QYeF@){X9Z1jjWp_&R)&`OIsFK%)a$>2?A)I-nIMxHmu!-!(a3di%H@DWLa%Rol
zl=TRhXyIy<Ur&+vM8e3@seyJX;uW4&>3Q=lm8U_ikjyHiHfqOV#wdy)$m%@M09A>Z
zSqZv4_F-JIs(oU#KyG!&?I|Yd#<Hn1YXo5jV`dvuk|30@=W8*|^I?d4q|B(om8o#0
z`Uy8SGRkUwZuLHFNlX6q!FMl=xR3Qx8~k1eB_~BxjL2;$lvmfi(w%3eVFcJ1EfZYr
zd=UEppCC)8uY~a?fs=vFv*GrqOMr*oE~3XB?Zc8E2odAcw1v6UNDTyoqwfgw!J#Qh
zlRRc&-6DL~kX2j3LJsmVjkcz7n0<t^Jd1^0ZbmqBe<q>L@P|v-7<hg9;dc6Xg_2F5
zr2-`=G^ImSH%WbvZ@i^K=#C1N*?see?7U=J$Oc&1`N<omhCEu1pCDt+%~G?w&494-
zWoGdG1b8tVW3RPm#yU@QwZ<C6jiwuVdJTjeD_EH5-f@gB4#?aMIh$!D#F4WZHmMEX
zo)c%fomB}ohfUpvMTr;JKo({M1Cxh8EjtZ~f?L}Y{^<C@LP_Z^jd`?Qt5ol=4jLz9
z0vLg3WUTa#9!0ht1>s)2c6QqBCy)fv2W}ABc3d;Z=Hfj+2wPKQkknKo0-N<AulM@+
zrtkgV{Xj7BBlOo?l-{HjNU5i%*rk;KU-U3d;eV_dG<eKPU?2Gvb{%;J&wqp5#||Gj
zHmNW0H7v##tEba7YG8-jOGJHjg&5210ED0F?!uqA!rj21TaAtkEG<v3({+8)@3X~E
zgq2+|igg$xgmTK1WJ|S5)tS1kChc24c*VO2*2WOTWUkO3`GZauwiLzteAeLSp>~;Z
zh<nnm?))fEPIstMj|DO6Hw}nQ#cSu75WrcLmXTqXLwh}U$_3nWA<AHO+Gt_MFr89a
znG>CPuYS1iA)|asPt2wM|M3ED+!b2n&6fignx~?ZK{Oe-KQd^r>$>eIc`~F4%CF|5
zV)VM(ItjAwbB8efpXdUUVBS!*dw4UKE!+&ozvezGMZOsgJ!HDbh&=M_v}8F<2{W5s
zQUz`jxQay6?eYau%sY3Zy$4oX({fvfnSZ*gb?+%;ZWi!T|D7pee~nW46f7lmp7Oq}
z_*@~ptY|o(ho{*XLZ*@rV7uSB|6SVplu~_eZ$Chbjdt)Wwe38z`fGKPV-=iVPguIS
z570OeWM{yY7g6Xm{a5JdUt(GT=rDcTCM9hy7v)O@AVp8myda;l@KT*X|4Tssb`X5B
z7n$fH<Yk(?E_v5gfX9|e*kVp(dTh$OE#<W7L{^Z3=XQ=bp-}JUFQ5Z_&-|zO$JE=y
z!BDWuP`nP4{ZG<A3TQD`U~3;YMxAhw0us%4=xId*|A~KSjjT5X=jGj0!-D-ZuciLv
z0ub<BZE^*G@y7J>@ZB^2n(pQ!I)M4_+tsrF+vqOuPnfl0u3q`NeHjW$ZE;}xqz^Qv
z%@>?dCos=|h>q9VheB+B9}GN>8U<PPy?a7|hRBhQKtXc=mNR-HW`g_jh9Bmy;6%N1
z&(XRwA$zWX&p}w7<V=V{9XXQ7h>~w`e6QwSOv@tL?0tjWslq9k!0x28yS0l{Xu=dA
ze@iXq_{XaaQOt4b9~rma9{9N8bE<X*c-90|pVFmzwHS~GVg5umTH-0JA<~k&9VE~k
z84asg{-;kD7oR*?p*aJL0mB(1>mnmOe_r|S{d*qprchD?u)(nfNHZ$v*nXmuy`ZEA
zi+?<iw~7AURr*fXBBMYpnc~19&y|}ThcEd?t86?3sr2xB6&*R2CV|=*Oho;}m%AYU
zSf0w<%7kEyfs&F^T<?dmN+g_W4H7jV;;#(kO94R&$|Z<|&JR~(D63B^bno#PZWW-h
zF0*_1MAYaizIr~YF+pwTmF}+X2JuGN3_^cp<n(dfbbSl2rl0({hNsUswrs0!zY%RP
z(FH~VgX9khkMuAQw~Kz51>yQvV2yIiW<FY_%&p|Jva-U0A=FnI`4OZCbTdp|yZjsp
z&>_vxb4u&I-&N=kZy{dg5nXUo9xyB>ApcvfxIv;1>pJ`(Zj;gJn1O{;J}|8-fAdBj
zcdCE(xNk_>o7;TYD6P}dp}M2A-i=^~X%{miegTK;z?sZ%&PgFsHk%R*^oI+nLr3>6
znQ?Of1WN{_Fc%jnvgro$h|YfxCI%pz2W%Kn3QO?PD*3Z>bUw<Y5Ghl74)LZjh)XJ>
zc->~)kd6U{7_LhGRUv_rf~i#Kww-W-T6!)fdo0%Pg=h$Kg;31Awh7p6?RO~Q)C~>|
z$4Om%9Q0G}fJ33(N?D;B7>{*K(-$`>?Gg&@rTw^k=rjbG49OqG)Y4Ib-t31z9}I?d
zxA@{F3@HU5oh99GoC%{psOtlDAa5uLsg3w~GNahSQNk`x>7t4}LP7x{Y+3ddA)|N+
zN;zx+T+Pnu-ij0a-w8>e?cZ;Jo-fH|Kej0_ih)ELV)-=`x%VMOsTtZRLur;Ip*P3m
z^Bi1+qFt$0-+%y<VF*#?#=v_I==ICo39W5y1;_KiIDHMKNNrBWrja$NiiFj%&dZEr
zz%?{apjr0kx#G)qkPC-e<-QiZ*Gg%|mzO_saP#Gf@CMq6&&`L)4dK%ji~UGjacyuD
z1i0gQr2|RGctF$B)+;yDLR8qV0-X2l&r24-$({$$z%LG0&sQ2@3f$G0Gw+dR{PF}3
zMgd?`=ARJrD@88mSnz>Lc`Vo>e)8Cj?5+)YUI!c^$@qWRd+%_n|NnnHqI5J=BuZ#V
zWRx`QG_;iB*c>98l9laLN<(Q#$V%2Zjw767k5oujwqr!fUS&r3-X908-|PK;e?Fh@
z^}D{;@A`fJ=@Mr=AM5_OkK65bmmD}4j_PRM$*bCfm*HOT7ajqt6NFAQA9@{1)6G0f
z!@#@DL=!D)2<z}x=dt~eL%ay(x|~+EX({6(woK4Jf*b9Y?drKPv7~@AUYw!8hic^?
zg2>^nCnva5#LEFl6A#-eS>Q7R6sWhtACK(*0O}S@-$cbBuHGPXC6P==l>-6p3<}4r
z8<H;M47B~cO2X4o)syibAzYeC#<x~%*jr-#5#2`dVTFrf0Qj`ut>K+sHZFt)Q(?n{
z8eKi4R3GK&G_K)w>56dt@wKoKss!gjcJ0}`5ybk<e4F2zY(6;)MsUQP1tu|H3}GL}
zO>Yzz7Y{i-*|Y?Kr1tL;`~9wjN%Kj{``#IL5z)%-@SEK+oc3#7w*6Ua*{!I#Q~vY1
z`dNgZTb;R&315MSpa3*QtC~0<v7F-{5RfTU2U1H*_x*h{{93Z#|6+EiHT>GjBy!GV
zF>`{_Cg&Hd2Ijxrk@VYgey#q#wpQR#ia6D#S$r;I`|Iz&&<c1()_847aYuRB#p$VW
zF?)?GDE-A|fp;G6&;n?GyzBTt#K86t6lr}DRngEey~8O+g`l~>J@)RZ`JD)C*|@lu
zkTvM7iaDcjvGpa2lo;Hz)ipGRo$AvM`wk_;fst{x=fR&}t(kTy!vDz=ZEI^1ly%tO
zCvt6vZ}g*j5t4+2gqpOj)8kou{;~yF3C8f}fE5H7jSBBkP()226n}Ocfapbr6(KcY
z4dWvs_{%SLI2c0We?@zI#dg^60H!FuidN$Pr@#m>5F@IGm%<%~jw*j3O9ou1N5KAT
zkDOdIkL*Z-BwcBc-%>t54Y&-lF5jHF@Y8I~10Mb_D(8QM$^mOD6fEzVGdlQ@cR4!L
z_`OUWrNO4zE~7~U&6(|x3II!{fX~Q~(#g8=a<soO)hoNTX8w4yUBCwgaTCepR5|y_
z!_MnRc<|3xSJYWLI7oWl)Y~J`GN!N$r^WKOG5F;_&;O*b5~XFminjc2mwwrT-+uxx
zf$lo|+kgBP!#3H-_l@OuGxe9zock||KfpXjaB61Q$0`5H!>n}o?B+v57sP*UFKo=i
zFD5w+ws`k24$@I^6Xd+-NA6fb=6qmE<2UaSIkz>{)%AcqkXXoSK-u*rNOv@(*|vZC
zVWQ88kX7Pk7<cef1r~f+@R}(PAFi>dkN+WyeQ#|kSep2(tc_dfi^BLjf{nS4nLHl=
zK-~~w*x2*bvDhQ?^Z%Q_`r&RMUI4NH7aYJx{!a)lzU>HH<RD-4^75Ax<5?ZEA&&y~
zxcU(KsGyIE_DDZCa0j!V*O>10yeKzii(I<LJ5>9Cfpp1T8qoRA(&bJc3ipFk>|Nd2
z%<=-xa8Qocvq8v0&{Ofh1K)nZ;n;@2A?vww>kcD(ENmo*#Au)2J?e+zl-0LrV175=
zgRJQkfLh{B%R>)zzXj!je(0-y(e25-I}KLJrB;A4prW)i?#@euyFoJA4Of|2;{o<U
zS~JpHS03s*Z~!H@`yeN6eOZ}5zYgVCK(wWuda4OR@5@rwsHM9VNdAa~#z|fVe8V1R
z;L_FHzaS8TEy@5IbG__%Q#--GI>i#tXjXbM$@%?fy{2ml88FuF+qSZd-pGTC_pEO@
zJ;6=oijarc0MZBkNB)QnU=1qZ4FIzJp~mQq!9n%HcIxYWPb<h>QFiQ9t(bywH6o`K
z(SQjyg#*KJjIZl(p3T^RP>;#(F#x$B_)+DXaJDu}zenLiqmUq$Bt3c)J!pu~)dIY%
zyWMIW{XTlmW;=9MyaKIMV+55D(a%bIH{}UT><0LV{<48ceicF3g^KTn^_g}fzqCXo
z!3iJ-4kqBa?1E&B?+4@EfEr~%z*-gkP2i2POn?m@RetNuu<XU!oEdmh$Ko9^^?$=3
z7^_6}GSW6B=x5WsV^C?6h*86m6c35*91+5C7+3@3N%^Rx%ZOPfh?&Miv<Jwp=1zV0
zQLM(7*y4Q0ep&-yH98X-Ks}CoaC)Nsem}r9QW2yCBBnOQ=ChGU({p;3zX6W-M>$}-
z7s&M-&DQbH$vC6@af2_HL;-W~Dw!cK*2a<L?lTDW1o_G-<em?;z8Z^>pMD3}m--10
z>w~Tzj&L@B)Ss9RDE?T7xsSbs<Y5{1IH4J0#{})+CptDSA(*Id=$@WT6LN?2>mei-
z6r?!<ghaXNk*b3GA&}yaPCthm(fw|n{^f~p7-UJJlbQf5fnpxZ`2E=W*hGz7C>O*H
z==Br|le0dR`CDyraq-+#*JNoGROq{}r9M5>zVf)QJ9Zl-bR48<U#oqm$1W&62e1nY
zDy!?o3}J`)f;%9zzKM-!eiHRDeG(86T^)Te3#lLv-vA1h#z;1?c@h8$ZjVGupB<=T
z&+`D*yUmO_3p?yZ3R_RsT6_sO#uBM_+CzS&pILB5dn1-FWnf~2jj-bGlcfkqXAarS
z=(lg*GO)m63u$J5et5F4E_a4vo%Bv%49aq8epawY9kI79FeICdZh<M#=<QKdWKKLI
zJNlS)cMVhvYdF0fK!y#k2c!<sV>Rko^fGx~<~$3xAFvMgvw~?;K&EeUBu}<<0Mpu5
zCy#L3zPmEYv1C`_3yvIuC*~e7=M3sheU;mi@^!79h!tnb)o^9|+n4VPMU?R9igWHr
zIZByf6l$uLAbfqdyF3QDv8<bw?rrRD0zH0pPDWVX22tI|hB2o@bi*E5OaFjV)&O$C
zJ$;kogBOwJv0gZduhudyUqk*$fWAu{;=qpT^!seNmk6MpTIPE_L>gerj1jj*XX(5A
zIz7jRx7MYN08ViVOQ>@!1`Z6-^#=8f`uZ8b@HCXB=8u5ZbvaUzj(@F@zBPG7S|ey2
z=;IZ@YFw$xG6UJ<4Ck6vYXmiCp!Qw$S@>*QF11YkQlGWb#=HQb`-j7oAtYYM!uSE5
z$67b$W}W<bu&l8NSXN1Xz~|#PL(nGj@RrF_@Q7XDNLQRW+b7-SO}1W<LXyB?nWygH
ze&k#8#zQ*sgeX9pMgnfb6@Kw+JrxLy@yUm##`=5nrM)jpol&c~segeaw3XwAkQsIn
z!IGUx=#836ZB~@(cS86mfEiA<Z($cA(#Bw)-JilLo3<98(%DMv{-Mnrk2JH|-7!6C
z9Pzi$GT(>A*I>>^bl*B>eDg`MY-1##OIwbMITd&wBxw9ML{3J8pJQkP%vozm4X{Q%
zc4GD7`Lu>fGek0>8q1czrZ=t8B?n0SeM&$zWKP38&#ndB5U0NIrBHMg0RUwTc1}hj
zR#_ht>IqWIdzRsJq=y{<hCZ;#yU*oGzItxs$`}a^7nAcBUXDAhxHUai5JS3^ZG8*k
z+0XT}p|2LbhFSo3nRA2&%U0O?7p(t7R1B1Z{JQ5jM&_kM@JLTFF>4y3%+d!MfcA#Z
zsCHP@ZS8RGO)#$zsEqTOhz_-c`5LBNO)s|i6!XKyOO_{s@Jb%mEdhWH12e#CV-&M)
zBo=E~D-kgo-dAr~19AOwO#)$ajU&0|JxKd}BwUbcBQ8%NCDiR%$((TuA1`FYv0wPQ
zYSs5h+R-#hw6*0IFb&u!jCgiO$QCHZ-p}ZvQNhrPuY~LzbA$yjfmsM&10bTi9|Z+`
zO~M(%K(!q}0bMoTYC&aZ`AEPUDJS(tW=mJS5Zj=gZZ%==vHZP~r7`*1)^$X?vm7cG
ztfpcWwGMP{?eQkZGzx4hWn!z;qoJBXUGp-vvmy0a6`BXLQnxvN>ZIgw_zAPe@T;((
z>m_#hG}CTyKT4ZK?>PZ7!B(AXE#oejYTt(IyEnr1atf{&aqUg0nl=a7=Hvt)zl{2t
zFs61SlDbY^JSP0K=?lOpy?W-fvbWe@xc}Dn&`bPZ04B5#rP6dY<4zRAR<=Gu96ZbJ
z0f+Jeim@}3l_{gv=K<A2@}XGw0~-|yZrIg4B}rP(_FCKZV#|A^yqyRIrvS}i7*}=+
zQgq+d3}T8^$=xo@*9n?fRTh^f+rsn{O+e%wmi)S0L(I*;8@#|rH^};3F+!i-B%X^%
zElaAwwGikN+j9WWgt4qNEQv6DRuYHt;0U)!;7D=B=7OzwLkTzS(GLkA*j)lFP40C6
z#pdK>*<lKpbBPdP--DK?unpQ(w8;Z6cO0wLB2VHONJ`v{-cUjkxh^$$n9mL-v!wsi
zmF@F6dNv98#ZzU$*AQFgf#<w9^2;lf1x1Mvb6Z>6MT`KQBVgPC3J^~q5MFLa8gQ(~
zgO}R0Fca?8jPqc`DHks4wDp1yWP}_9*PGNI%2aFu!HC20-uhjezffO;*vXB4K%$Ah
z0e{L`FO_|z@cvrIjD{Oz5Y8d%ez69U262fs>H9Jujwcm-v5xAMEo4;|77_}Q(e_Uw
zsMSuWMFk1DjT*&q7J24hUp5d((0uZ;Y{>od1Er=+dq<K+bKvobAhg&?$eqyf1GjQ`
z_OwZ0w{F~GnzklK9^u}T<L8G99;X#BPMrJlfF%XaYcb=&|8l}-K8twUeQ6bNemD0l
zSGN|44<ABU5$ppDZ}!kAxI+$MsuwH(7_HpcV?oqrR+DP1W~IAkPL4#v5{|7cfEOGC
z&#?hHW;B`x9Ur%|0%oPux;tb3Hq&F7KnROY;w<f|rs?CJ7Heul0lZT$6`Mres_q>}
z*pK}XCvn(eFKIGT#M*9k4uMhKKLqSwVs9#=6!tixVA`-6VHZy=!)cK9tpTMQ!Fmn*
zfGBYo+n)ig95NKtcr9CuBMDmWasW^&JXc;v%|Mq9>%-AOOak^R;r_dGb_oW$B9Df!
z<Ies?1l`*47vMZ*OBbq}zM27l;ZnJJUa<KDE$9p27C#gGB?5)Z-McCxY>55nLEfpw
zuK9s<7J47v03r<lHnx?!t}a4nR3bI41rX@J73_bdlvEz0-G=!Hkhz_~2kfF*mvV$!
z1nXl{fEInV0JLRZGZQc;u?OQ+E`tkJR>z8ywF>c1Uw}6-9t~L$RL?#Zw^_Y2$D*+r
z;a9yKFwEIwpgfhPqOQY3hUAZTF5JRYX&p7?SA&q%A1I5$*2j1aBmWLSO}l!FHDqxS
zp;uQ~yT=b}N^Y`V7B8+jIJ`Ee=Kx`It>b&bSQCg*>wSbGd;e8q*%;?c=m2C@`QrFM
ziPqrK18OzITA8~wg+DY2`Kpb>7R0VM$ySmA)(+3o94<$<5ep(6BEzw!i+g3XeYGq<
zG*<2p9->H|B!3Jn@$XC^B~xbXJL2<o$vf`WYM+!5OB3{zFszsldi@X?Z4U1FPhl`=
zncz?}Ks~J>b1SO3$`0vI#HXZGgNZelHnBbw&ns7v4p@!L+rmjS>=82W*5fi{DUI^Z
z1N2X8Lpj@W-HL@O%AYar=IuieHw96b)T$TIR%)3RBQUu>_+tekzOSVOy$vNyN-ovZ
zThMY`?ubw?HF8x!wcM*rzn1GgMxWA>((5Jkb}q5?6&dZ1&vyUJk^UZ%Gkp^X2a+fU
zg({*>i6!V$jwDk<qxrq^W--91?rgIT^q`r?oV`%G85NPwL)Ml%dD(^i|1=$QgIZ&@
zDaR$dDzJo}SqAsG_N7tbC5NCEdb+@PD|kPvH|zuApd2%x6uQcAarE%{p<7On6Uul#
zSW|K4w1%3Rrn9s2i%DfuD6int=*hYePE8FB&eVuqo8~hEMJjy2d6u;Sf##HxqUmo?
z+lfZ73f8|R@rHbxpoaXNeLk=bER&7-#kU5+g2!z{!Mu)A-CNfl+z0HoE@t+eP-tYc
z7aFTPPhGSySu+}~gPyaQzP$2s+X@j$qP@U38SL+CX7Y9Nj(2H`@G6K;be>zWY8kk4
zr<i%bz#D^6kB6N6U%WGw375W?g)~44T=U?7oHsqsiT7dY1DibtrM;;EQrYPiKr!`$
zGSXM*mJZa3Hgu>>c?<Tf&ADN#-UZ~LJ+OZ+97NMP1Am)7V2eP@Y$=NxS1zU3ozTbn
zgenlMZ)UFsf@7hzysn;JDfRV-U=tVJH}GUfWWJM@hYb0T!be2FRlj1I{lh`H*%7eo
zn7~yVxRpLYQET1wn)z7(+9^2MV)n8>hF&*kKl@(1S@FMX&k>sp*`LpPuyz@c^-d2T
zZN0Y2rgA&v2G6V(JIp5x_hbCTc_*lK^+i8s;AfMEUrdzl*aA5h0~qKv+b?nO8NcFp
z`UigHgncK#swWGRKS5r0biEk7>q@C9HIjdh5v;&>34W7z%NgqTZ_siJtbHdAMU-za
z5f8!?m!OA&Pc3848j{3zotOx+bJ^qr3`iic=5GuP0PLm-0V*<YQGGSbuDl3xp0e<P
zBUx$OFwZQAyC<j>dS~ua?3sZ)zpL&$aC3_4_+s5g-@Z8l^=5d@9@W*i@6q>37Z9#e
zAbnCii4Ok%p#*ZGefPQGJ?0O6H_6hZoCY>dGwebnIX=GMGiMCh_(D1bc4D<AAkaz!
zB?{eVPy7T&?Oq)lAD;rb#0`LH5=gaM1*@w?r_5Q?_5kuy_pi$9+)UFa>L31LI{>p<
zq|C+hcbR<QATFdC@#0Vin?DNksmOo$IP_(QPs7AtRy}%izEu17C((}|`iJii5EX#o
zE(~{;r_M}IZGmDkq=jzeWjPPW!xdkf?dtT5{va5^--;IN5;?QbZa@qAe5Z=4s?q4^
zXl=}yu*1gn?h9A|!By9Cwy5j@r4Ld<LdRg@9g~8_O@ecjPDQcAOKpn6A|ezTO<Q=!
zj%B|xnKsQCT1Sp}LxG3$H=-dFL{e98Ir>yl^S4AMDua`fk}AP{{0pA7+tSReXgJte
zZ#}Br{+m)Bi#AM|nPKQWQ0WJ}yj{NVuDCv&majqOR!WB^f=GPhfSp3LSNz&x*fl=L
zZk!T$Xb8vXGrVDoy!Z0Csm5PLX2cECwUC_Pn7XqJXC(i2IUBwU{&duHB^Mma&r0y6
z@?}}fFonn9WCWe?DW4<fdMOCOu255S+l0Ra*^L{Pa+u}~5TukZ8ia}=BKq#Qg@8P4
zs8YF;2`%MD_^IvbQWuoPg9myH4-_fmI+Be>e#f@<(fz>xj^X=Rl>Cf^XCya8cycX}
z+7?)rL%@9RDZfR8)yId!mt0%d@ttm(Sl-~^Ju`MCEbXX#P5xfuxChWEn9EQKWBOSX
z#6N}WqriAG*Am#Uh$#3?wP?}YUKd0O*H<xKEBX8oxIkO?W$x2?BB4(X{9>fjZ#4|j
z1KFzf5*_paYB2h^>k~3)>@WdyRJAvqt6311EUhE5BAee$WMuh}2h21$=0OjAfS$XE
z0ftblh<0y2T$0@PoWnWi-hWsN9;i53>EoTVkd0bzD*OE@)CN}l%v-GHISdL2=>9X_
z+yw(*N1VS8Vhr;GC_=l*QgIV7%3)%Li+LskRxez=zm*4<E=FeuN}9hF2lvyfpzJE)
z2?=HE#PqG)r^ZAK#I8ur5A3j3IH*PR^!Ab<V|;eg5_hF=Gp3PIZMf(@8giE2O_f!F
zJPhOftN*o`_-_{-=H}&Je&A;X81YgcnFV2rxrIbC`}a?9hXdjZ68wLGbre71P+^~i
z{e%JV_7J+iw~ma9$jEc0Td^5o6)i3EwcAgpKnk&KZj-~Sjkk&eVUL)QK!x(PvAsNU
zv^<#C?bI~bqIA#Rb6xl^=jTsq?ys*4*GaXRm!J5(WHQoSW&OryHPl>hE?t;TzX!h%
zHy@_ytSFA(Di|KPl14?8rYSa$P=y-oPpH`cq00`Q<o^{K`3q=YTw6;+^%Te_EiYWO
zKq+To2aFu0RaIdr+p&|dAw&}Dai=D@r*@clu^dK5VbZRM1#HzX^d&NMxoy3G?KA@d
zV@NY_f@=YM1px2kqh>#;?nj_psJ(S<skjkRdkBszd8Ys+xcs6+@L9*eQ1UrA?*%XC
zH)X<N<hXe!Xz1E{Bi*err2P|N19|W3<g=mnlc+`joA4f-PP^sB?QATX@NfpLKC+=h
zlIPbRby_VrCn?}i0O_7UIOitM3uMtd2ACg$4xM*GOXD(}o%|}9)$|Pxl`Syp&SPD!
zyWoyq*B-x}SK{AbgBIbRBkzsMkpY4%)0Y|MFAa5g8m;v#htbSw4|CXGTsCi0{U~5v
zYOl+{>u!T5M>!@CWC$K|7r1T?K&Ka>a-Obr76Qcs5>h-s<}eE(IsJnJ_~+mH(gi*t
zKKjusKDIOXZ6}}9CmO!C0)8~Yg<M(r@GLSq2iVr{G4n$d@5#~LfNL>d=><vrDP|#I
z;eJS8QX$p+4n#*b;O=*Sh`bqsLI#_rv~_j8M(`K&JNJ9VF0k5W7o-9eC$;PT%xq-2
z<VC|w{b@@e5fO(gD=I2_3ST?A&(2Jf;HEx;1GcGoRcBCYq8=|*GQ`F+pBi1&zY4c_
zcAVo}EIH7=PPabcj8iE`k4ve&ng{O8*lggId;9Y@U1?>&eLQ&ykTvY;3i4MDT>f07
zp35t0Rer^lAFc$}h%)KF9G~-ILy#-TyfgwOD2k+IZOVZbAid^;WGz=C)YP<fHNbV5
zjB&1_c&7ncy@fy|>WnDK3pRi&vyOLF<7kh8CI3sg7VS%11-)Oy>N=EXNYi;1^$DvQ
zgHET)8|qYbk8QteDb-AVmq_ZipL#S9#M(I8osh1m#~byr?veY7tyAu@V;>LiQb1Sr
zpQvd1Rz&}>+2A2QD8=TN1xX5<Gp}r1dDC@eH_w9cp}Uc-Akb4oX0Q7jE92+wMcqtK
z6hN6*Bvf%Ch<Rr!-G}{YviT8i`Gau<$Dbw{Kf(F~Xs9Vb<Jr?N`2;TR;WC!r=P!Ie
zOzIt@P_Au%Jc$=zDD88C6*awI0umy4V+P%2q(3D3#~6%X5dX$hu*WmM!SgMFkM-Sk
z*F}V&*(~szDuU1GvjOzHU)TJmir}`Q55=I$kO?p;d)D3SB07(}frmz=<o<_eu~?4T
zSGyIN&hv>o4d@CB3n$;Wabx}68~nx)xcmo~t#SqUYzFg@5F7xM{XMW_)nPsruqg`8
zTgETVd*<O2XbLWtaqWVEK}sMfa05MdPe)J>ieUL%Xz=q@wkdFuBV|3)2V~nU6OK4<
z0#^?Vqh#j`891Nk5uK#!)&)&i@jrckK6~(DB7)aQT~`Q3ew`m3XGqsjf_ML4;K~12
z<zRN|WmKc`Ht_MOWg*f_XXNzJ5jl)C_%ZQy?>uit?WRI596P)w3u5(mlmxctc>aRK
z1+u7t9*DBC?+PBNJ&zjGp#=JEXQJ`DHNhZy;Jaa;=wC>!fAYM3{mus@bu2$e-(5K$
zZTvJrKacOc)lm2?Zu;Ai`}J|?r_JC>bEof!eElCBMLxDaASED*MgbOS15oHlz^Lh>
zfA7}S>w&qxVva)ROGi*DFfgwZ(Kd!|wzeO0D;FLGh&gaMk-#Iqv63ff0RxR-kIKP&
zOACBA1a$5j&iE~E-t!k+E}U+({0{%-1FoNUz>%`yUXb+#aV+6K9B?FU7`=!}AP5z|
z4j*J;_swfcw<E>JmvD1)-!>^(z6T*PiQwA*BQ6--{ZJ~I(*i@I)dJVSM7d}&TM-c!
zML+$}>~2&UMG*!<8Kb3{V_&S*Ku>lMUOor2MqYzYF1+VQ=hM{%$Z60Y4(vArFe%4p
z2y<AF#kq7I?X+ExIP-mXcsF3Ce6rBW$M`XPK4{QW9cSY@;4iGv(PnKjDc5~lI3ZE>
z^nq>NQ}zj;k}kaO1M&RhE~QXXFfH6@ch?<677h%imN_<olV%O7WK^gbXC`l2J1gBO
z_G57I@Yj3B(=BkFHgWF<dC{hArL)pLUwZ<ffS0Kpxce<MXJsD0jQ{{ocNz6TfdWC3
znMSok?<ml~+L=GHUChXgpecf$UHSk`$=DHb2yzf~*2TYqrr0y1PzW51z0Ti^rN6#e
z8{FgpavY5y>tTrm5=Z+QB$|~{U8Z?whL+M5BEyESz7+?t-_Ptzh_mmsscpo3cJDkS
z`Gp$VD(kEI3}FqE^UHx|mOdmAU=2=^BXD?AuY3j%;vy<ExuW)DW<c5Y%ZzrO$oSq7
zoM}l5x^F*4{N8L5Y~2S49^1}u&elMnyo6f{LK!9*_dmP*LM*WPz!LDqKX4apvowym
zcW;Y|3=IFRMBQC>&|QSwb!plCOk@dkA@c7y@v!sr34qY_LQT-}zWmIUJN$xI5DG-(
zZX1zz5OhVc?~z~Y2%7Z`08_9+`W^^)?MoIpJkeuX5~$zqO-9<G*3b&V_kMSE+@t=)
z*DFOfZ7`-wVrmuM<FSV7f+IlTX`kNS3C_aFKfMGEv>T)cvy7nrUT$C1bW`Cpa+QnU
zy`JA!pN?h2_BvN}#B{abX}B#vJ##t=!g}4XJEJca@E}*24MqiAwGu0)%4IlD;Ebe7
z4gvzFKmQeg$52P%z8)f(iV!$9@qoYqpoUB)xQ>t{D#O-T1nXYR)W-_R0T*Db?Iy24
zzaub)Tb!VQTSf(}L@otL6`4Tg+aS!IEx(~h78Q@Ckskv9s1k2;=m~s3#I}G7nh#Hx
z?uC{RslI*YF(I`R9`0fGZQh(270Ry?ucjelGw6#;jSpIsrt&;_3mvx%pmX_6B%b34
z`h+^U9@DzpOg>Rx$4&M-oCm9%@M#oc35T|J=yLvvDn15EuvndT0`~|~nV3fenW7#P
zMo-g$s7!-K61AGn@rhr7{O1(W9v2hZqaW2%2FiAC!3oxGcGOfy)glqF`6z{o>crZb
z&X%o6kii|$@nzATvons+Oihvo^@$RI>NKvijDTXSL-y5*Hz;|YX&e1*to9wqCtLt6
zxv{X>AB9}d&{%Q|W}_((^7lFKk^{tW1Jvl+jJo}1EY}giX?d~&FWV4+-g-U~)+cOr
z6S<*fa+l>WvKgP&9vg>b??qTX=g5vDXesBskwgTh5>itYoB#j~Z7<;YIlXpRH9>f#
zXBHRTfBE79wuX8MyJ)If^-Q|KSt#%!QG3V<@-{->W!<#cMc9Lc{4?J12w_t?m28Og
z&IJ)PrH<1(2vbwtiEsyM=5gT^09-+doU?Abd)N!8V1I&&wqD|XknPI^aG9PNl)>C;
zq(^=LL#$@B7YcCpH4i|P^@34eSIoy27m#uCFq|EhpKYg3V4srMoLjP-ecx}xP7s_B
z;HgY;oUD~x;9Y}QA5$@K_c(S(1<*jA>6t%mwbDjIB&Nc;k;8}B51o`nPu0kzf`~#q
zyNu;Y3vYr8RZ)-mV5t8<4R;zS4(JZeAUH$0=hwHK2bSS#%4<P0vb~?QR?ECp=<ZnA
zy4qEkuA57sx%tPGiQP3B5ASq@+)!8#PUUNH))5AVS(xh?((SerAY=FRLV=IM8#rxS
z<nZ<&<@OEvoBJ&E5x8}(ro1fJi!+B>L#CFwVI{+_9>RJ$0)7s=S}3a;x0^~mVwnV}
zhlAbNyL-uQHC!(V23V}wCyAw?YzTz@IHJMGjMWu{hx}T|J9r~f;$)`N;K1Yyk{gH=
z*wm~71^G$2;~ZIp>XD$biN~d&X4EJ57<BUM)l_0GsUA$ITe50XU%vjujUJOESL}2g
zp%g59Bf?#3WXFm4aPHJ>6>>v38IVoCgvfCF)cJ|$hmj@~u}4jua9fi(D(DPW<b4MO
zm5%u5ir*jz%}~*c0QDtzfGi-$LGYDOXze`^nDo#W@H|Z*9J!CS5e}xP-?-Joknb*l
z=aT9L?8s;ZXgkZdv`Bs6Rt?MQaR2d^6SpViD=lkBT3vdf)T$@{o3l*N{)*t6mDvaE
zI?^uf0=*OO7ed?tJGDN65I1w2pDH#HwNURvN;A{YnmYyhs(f6se0?iH8S9YI;?kRL
zDm-G<U!s8x9RPCKKu|{;k@^vPsZLuOk(_vECzOmp>E15;wz?kKPL-p~1s^XLeFAH}
zy3bmSIQVFfhjn_dq_0jnc74nfSc6uz{REOTR<Z}_hef@s%|L6w!AM-A!I7`8x;~yy
zy<F`iM-GyvO2A+lEYDYIVkP4-ddy)M-_b!STq?LJAo@X4y1z+uXI*VJ&0_+QW&n*Q
z4a&tBZDyK23L^Uua77)ks-di>YgS>uxhM}-%a*>b>oCm`+SvjPf_4Kw=ZdT6%^^_c
z$rLgqmxjrIL=2VG6)!ojY?rc-OJSxc8gVlkB4+XHofS)&e!$HznJRQc7zn?HPq?-)
zt_C;AcY>+X9f+*Ka3i+FIwMc70yss&tXr)ZLDM9@xBwwYty77urw_J(`REYBWlQXn
zl(TLph@Zy3q;1l~k}w@==7I01uMy^l)s^!0Qc}lsgZN9{3@QMG_g*M|EYKNavEh8k
zVxojz&4_y?hlXxjS@LKQ<B<^aNxJOGHh{_G#m)#ejRdtsnqFau4D;wcrG~W?8afr<
z1FOu~2lsCMG~h$9Y4I3s>n+dftL44#dd>`oHQ$7rRYl`foV7g;+#5~-!d1;pK_{8J
z^(hyVtZz0ZeY48y(IShv%mSsHvDvZyzEhIJr%~yK^aO1Q%;@N~rF)q2f#|}0Lo0k0
z%LGix=tb;u4M+>U-YIeP&p;jAJwa`}JzV%V2uW%jVfs~jUt(s0ZicpWLL-Drs;^#9
zzm;xv%Lb)CJ>~=<X{;?x`@Jb>WWzi*0Ooj~qmqA!zIU7)m`7UA1XwjY|L26gquM|>
z1w{SFkdFjwcU5olJ1WnU04k6A5ZLtK?Wdl$3gNI1;_vsmsfX;Ef~K5^B-Fey4m9hd
zGy4-65sZxb_Hi`LQ4?Exxr!@Kf4DuwDx^pUATeHJ@mZZNMi0Nje$q_I)eyflKcpfg
zs$sLy8S`gK0Xe&DC(sz7(}Ud+3MEl78w9^<u*w9X8de-Y&a}r5V09b^ni`;;(%Dph
z64hb4q1@w%eWPKUS#a};eNBmPsjqQvU%kO9+t~D;m-U41P4=dbEp!Z+od6H1)=qu>
zJr<NpD5D8frLoDO5{dG9Xf7nIL$SabImCo{z^-qxxua+Owkc~z*CR@qhcZV_g67M7
z_&n)Od+>|WlQkR!NQ^ZAjC)_|9Yn3E87srMj1DHLy(P*;-_|Sb23Mvp0hXf19V5=s
zg>Vd|>9t;jk?O)4qDH2vt7(o2cMgH3jV+~})6OMebU5k)6V{F%uPL20#LuBy%=#@t
zKSu~%_*LaXGq%^IX|CY<N5FPnmoH=p+tviaR~JBcECt-^r)8bhdou}Uql#ykQ;<W0
zz~-Wh)V#mIZEbpO=_<!H1i~|<m@b516^-1`d<M(u3GLSsCb69rh${*5l~&-wid(OW
z_Yw;O?UMUD3qS>r@B=$h2e)-2V1Q6o&}KPKbySBTw#;ahI%9qB8(=sxL_#RpFA2Lj
zP7AX%LG+-r;wZ;6!WuPfiqs*E&JP4`H3njxT3b45`$7tr2P9y@{fpEFlYt-l2V6y}
zhOi984mY59jRESE2KRbjnQC@l(tF*sxF^;V1nYRpSjs?(LvrfOZoTb2k3x4ySdYfr
znPx|y&~!i58+t=Qg>iDSrq1vajkQNlhOST=o(LDL_h@JTKL)3V^%WSR%bsGlU3}UI
zNNy7ll5qU~B_PuVlH3`*d=*+5llxcT!<kZe(mbvlY78J+gs|-uG^f|T*`abp8M0GY
zwGfih^REm4_}t9{C%Qeq803Vt0KKY5NfHXBaJ(!dudqXcgQqy^TeOlecO^rip_xEQ
zbM(bsY|y(xBA})g=jpCkzrJM0ArxFcgh(K1FJul!7^QT~AbD%^{y8|#*K=~|317j-
zUS&obBrP6KofM~U7ywT|T-^MGm~2uiq`RH2%g+{`2LuJAs%UHa&O+EI<Os2!Fly=q
zZ%7gKTc6{i0RrI`u4ACrTICL$F_v7fvWs=AG`oHmGG-Xm<+WyhA>p~8vGE)EgATXB
z&yhb;rcLzp^cY-U5$7|Be5V*m-empREH?F5zGa^38$jWd)fPP9{5{Jjp{2=jrjD`@
zOK3b4om^)Q`SyAC^iSf{Z+y=MWb2~297Tm9bQ-D2OheWlL_If1nA`<w%&j4RhwBR0
z!Nc0JN6WcOXhA5!7|C^q@H#;u_bYtOx^i6!;4`wMdI2mmI~~%m-kFgjD`EX6Jo}ni
zpJB1n<6pzL<05WJ`30OHy?Ap&Q1X#l;;yO}MVB+4ZhIW}<thHW_KsG`cdW*Ee*r=L
zMD`TL;x}CWcPpMUW<~6J;{Un}Cv-gWVdwXR&W2(6jb(w!<<GLqwOsqlU9w#QC8pxD
zYo}7nScYXSt-&^i+c4@_Q~aAz^Q(avHl*n!k$oeC{IV#G1%Css(7jnq`YRv>OuQ_<
z9_|AKr^rA%<P+?Wf_b50YX)yJG|hRA;ve&mw`UfXU<)GxyqAVZr+zYvY$jv$f#u1c
zUw8Ywu9p|0`Fd2p3OEb5^tojP5N}^V)rgJA`<H?E?#gLhBv11~B=6;GbJnVPO|OQv
zvG#qJ+8(@i84xaaE7kYqvdw|F4eQN*YFJC>?B=;Lbd^^>TEGJ2YYd)z19Gr=YazFB
z2J;F5QpVw{({YUR%b6IckUr!9%!_0sUIg@d1B_ne(FugS(Sa8>5Hx6!+uW3Op2D!g
zP2kCbmUYAUFGGbW=#ip?G85Yn9LbugHS|<F{G~@!Wn<3Kh+bqJL2tFnq@CZ5<a#TO
zpHUL#to99O6O`t!3GY~|$cF|xWKnz<9*PHkwAbzCfSnKv0&o=VT?uorB|bO2pc{!j
z<LDYFx09EdtVb1U&Cz&=z1PVU%r_UPFY7@N<#65x5-)hzVoS~)i-ze8M9F2hWr6dS
z`xYxbL<4K7ogR|#cHdSv<t!$99|Z!8G47j5f*pWp{qHht@k3ysA2rXoV8hPBZl3Ba
zpcmX<z%)Nv7X=a>X!XCLU7Z^w(QXA>#3a+>_<g8jnV+2my}&ojKzcW7FT9`1%(|`~
z1hUo)hOLAhfmfkx+Mt3euvENvZ|gug7UOf_+1bs|h1C#%AmyJYxc1Cn(0lX^P`Rj~
z!CWfgDFDo7Sa-r5ftF`7bJ2>0L=_DAA1&<MN%aGPW=lpNd-O$fzxh|MpF96Buz$3w
zXvFXbJQK{vT7?&^|MperrSrVG7S?!NZp#ypIe<j$m`D6_R4g-lk@s-hNh?5>f=pcN
z(UsR+QBE|Sv#Y!NCEV7H;Oy94WLS9Oku%{$;`>^Xj_H=8ce`*)vw#NPBNRSvX==JX
z_jLj>BX=M4j7Z&kcR2&oOl}@vz)9)p4H=o4)}ZQ@Mj!O!)n*nJNstE9va}RFN}q@o
z>`(Vy425<#fxp38DtPhl9&Oigb<K3Jw;$>Jk_9~sdUhsW`Fh^c-25e^d~3g#HI*sB
z)bkSapRy?!pd+;oiCVKEIe^f)bfGy)$cUVpotyCMNU6ZXH_%WMwwYl~a%}^g0HGqJ
z)Z+mAtol|upi-C+H}e>OAix@o5iVnRoAJUXfb;;RZJWU&7Bw(D+8i1~oNIHI;LZ#9
zD2%~=OvW8Dfw>!nY$NHugcHI~3c(RmU-M~de!W$oLQ8qb_E9Mh&}tgFJs-M2bAE3I
zV-v)=LQt|)|4Xu*K^~TPI(Bj7+>-OXhsV}R*kn|W6ks+H^*zb}ZU{2>za9A@D3I1X
zQWS?=XAuHr3<NBi?_*bu^m!!sdH7TiFE`_|tEa?*Ihx-fEN>8U6e(kX)uZPme_FaW
zn8zD9qyOn~Uje7z`pUBPix{zJM&5G#cneD10Z*50_CxYReRY0Z@RjZ`+TQjOJ+!$`
zz)=0KPt2>$v#3Gwj<og7`061@^wyAF_P79~#y4TnIKY8!!%I2-f&=BPf(e%I$rGGA
zK}AV06;FtT^~0zvS4ap5o3Br2p^zizFggk{ux_I-*p@@)`Z8iePHkH>zwISq@U^Fo
zEoG?&Fc2l7spaF{1q-X0>yeGPBLG%j0UHJe!OMs^q==;7`s$i3y<TS)u5jkeeG(-3
zj^5kYkazZy<@}K?N>b3!2q5XCmO;OR2Vcy^9hoj~SvXB)%5SGa=W$|lqnJPV|4*}U
z453dL4%2VKfB#ar(-zNf#(!meU<`~fqs#az=Y{hB&FkU%<%XvkWUfunvqZi(s%1c)
zDw|hqG34)=xVMQTOd$9qpu-S<_E2jM{ljK83~C5iDnQ@HJAW~9;lz)PIrjGSBti0d
z^yi5O)PAsp={-oHN0m8sILg5}nbhPcfP7FeOT2D+Wl(T1DKoS2#&WK!^j<6qT=?i{
z0g&Q<LZMR6qqGrUg#sO7q@xo&Ix@275_{7EXfJ7}I3&(h7d3wPurU3<S(px!vQsHg
zFrZg6{&#oE9PS4Sys*jJ=dineRM?fY{E>Ok-2}{fTisKx8wfR~E^8SA9TiAdvo=9H
z1K6d?Ax}5J((u8H@azxG;l~cJITAQUfw_fLcn$yEpwGC(O92b7!P+u=?rO6f+GcW<
z#TY?PrX-D*07V)#RG8dv#|b+y{2_e(HvXK2h6?`hWWvk7x-<QN!!}CX<huzTAW}GQ
z8axfqda*q6SN(D5P&mleLJtos04#Z&@;W<zsr^r$L_xBx7h3)r1?V{j&gX((p3obH
z<OqG!7a^$OX-w&!Yj8+cL_fZD>iUr6>Z4Ksx!wcAuBwi@2wp70zr3*64P%3Y^=t?m
z(F=5EI<CgLKJgW>`&Pl`D*l$jB|UG@w<2r6C!oi#vJ|F8iqEub-E}gT(7HoM_{cDa
z&Lo-Pql@qs@C`(cc5rRLFT&?QvcE!-o1x88iW06d_k2lE(hjOA-ZenSolw3-bt=z^
zWDUYwv&B}Uvv3AxS9S-}Yp`uitdB9c_udJ}?-QN(`&2+n-rpOqK!ukjW63E>Cntia
z;?v;vl){rpuB}9PNwDpb+r3SKpd^;9U^t<@!+slBuV?g&96t93xLbR#hXik~xCq1X
zsAB%E2-u+a#V`J{3EVpp;ZS9cRGxGV>((~k32{*-xW#o~#IhTr`uqE9KYV!EPzR0A
zYW#Xft!R+^v)a3fCqxF|E~PmGjicPHAY^m$$>H2C(Hgf*5Ack}AiaNaZ}r;K`(L3}
z<@8tOkh(1j+Z%%t9A&bW&Wwvx#*Uw&SeB*s67}qSGxYt-ipxhY&xY(sJt{n%esz#u
zi`|2q&6hJxJbxNFJ_UT5w0>mVAS4kTA;}!DT#Vycx93~sgQjtb68*i>($f9HxbMX#
z?OdQ~qZ}sZo=l!{%wD1?^trZ<<I-b`96d45^mY5b6IZ@1P3^7Hk2D`2{P|=&=*ei7
zd-`YSPbPO#zV7|BQ*;yeilO_bPa(}MI@~+<@@}sA{kUL>!<atZNTf*;LJt0=nu(wH
zMDN1s{eAZN7Bl)QYUbB1XMe!|Cp={rEW8n)?Xvl;`O`r>&hnVma2f7VMbxT4J}LYw
z><eEq!xmV03?u6J*U@3pJ1{`yKXjv&E~Tk*G(0Zu9Y}XwAdyIOW!*h022cioxZXro
zR`!C@*^ST=Yj2{#f<0WtEN~{YFZ4*uhYxLSUF+8X!iaUJepbD<wzd_}A6oeg0F?pA
z-+$$Az@d{=Jjdb+&9oapasfCGo8D*hEcDSGLJqvvG8SW0tJN7j;hF+fPr8Tk(>3u@
zI1R6{J7*SsYY}4$tJ>O}qmMvwCS(OLB&X6BLK?Q%`(O^-pQW=h9tU?qU>ny_dGP0|
zA7~*u1hjDba^W(-50RMT)u;AoE~@z|!iFd}8W(h>*yzo$@}BRGq9b=jFV;NT;zkO(
z%L!&R8_sO6NZB-;b|Or%7HMNU7=a3Su0uq@;W=r=@EQ2a=)TT-EY%2_cSrvUd7Ik`
za&!p`z7<|b52pa93_q$~jnaX23qJuTQs`CM#`*2A7d)*CXZid@;MZ0)!u=m0n@D$4
zRg&SUORw95Q9l5-uJm|Bpa3Jw6;!EmzqOukZg;eRL*jzlyu>FDHQ3qdqX^Cp>NWP;
z%dWt4^&ID44^GKv<i(Ev)Mv2(&<-ikZzWqSD!A*VXXkRY5y!Wk_xjcL=g(+5zb?hQ
z8$49l$M_+boY&-C63fvV#=F!?0V-RY*;y7sV?Z_sN$uJPFH(SUFW#}W3VtksCpF2r
zeri5snGfNYFTxYxHN;OC)HA8|WC_#iA_Qz6vn*N;bA?*Hj@ovJB6n&VOwb8Mx4EzX
z&7q!vOR`5pmRpuPzwW4p*Ay7aBY4miqm=|opmHw2O7d>k*@4vr9U456^nj|n6{L=w
zw;8m+2YYcc64gmb(3mPi{x?9y3`<ICst!115MU(8i*-WtI~7wrK<4U!J&YQLIOIsA
z4g)B<rjQ^m@W+9i8{!|wy$In<I!+XL&8Hy#;U#mHB=1)o^DkdR{{x>L%uS#$*W&-g
zmSEt8m2!{A7y*k$nF$(QUVQ&VBpC`x^VEi$zlD7UbJPZI!HTLXBccYG`e2LF-aovg
zikg}Wy|tudpdJ`IbKm8`H?ee0(;6Dy4JO*De$Cl_Vh%<=$gG~AYhGGfTHD-g4VkvD
z9$9li=3@m_)kh%U_+DE_XM-fu0LtR3i6okR*o=h2PURXbkHW6a`Nr^Cg-|9lXD^Sb
zqfmVMyIE73?K{V&))p$wLKw+;Z;-**+*kO<h=ik_JXzP6W^42<q{^rRHk5?M?j?5t
zZwDzD4LcKnu1>=->kr#NhDj*ExDD8aC8KJoJ#E=f(K7`;D?BtYufMTkLw@Mi<o9#|
z+V}d7mH#fXiapUPJLr601aM8rt7wFD71707U99$jaqd*}VABv>ogA**jW(GiM9Y0i
z?o@=W!Y9lqmNj%W8}3~#F46YG;i8NYJks&2XtE;}hsy4S;2pFSn_iT`0y``j|KWI@
z9Lnj_#_#3D1r8`$d>;fcq7x4C#2^V1BIBHda3$ndQG2*~wp@WuDqr6hK6dM#@6W@=
zG-A4CIxr$Ka?ADZ`r91BRue;Q1!Z-7#qYMB08b%lCkD0%0`<2-pg3;<TEWpGZud5T
zerGDsZ%erRI>F-AC4l{*`)I)+nTW$PzIwd-!7VVp`Ny`y5u+>NWsCp>f*&mM4K?MC
ztH4iiTZThDA{wEMUmqm0_xSE8eNtUkr;*)*9fOi#-HK6g8&Z+tF#OdD#Z9O?={=cm
z$EKioZxuFK9n-YSQ>t=U=i}rPB;etGdJyiEWDtlbbZl`p1s%K2$`@wGJ_c1muw~s#
zN~J<a^7I6wdSGeBLr~B^^C8Icu(19X|AL|SxS7h9*_rW11YZFy5wfseOXs-fk9J-i
zOG~1A>tfzS5Mv(I*Xe(1!F^aB*95oZ$LRs5{)Z<;UqY2I6PL}dBVev06RthrU+wxC
zp*O@lzTO#odEdQ6Z3@YI1IVpfx*ApX$0qA?b8t_xSnx71)g2MVCA+qQCG#U_P3f}W
zEcd;DsQnlsSzIv4fDo3>bK9|P?Lm6enCXw-2}9Uf)x2F$>~{qv7;6v~NpcO1zpB|F
zWF-sgJyw84N<HH_S>*^)Ike1{(FD0V=v3lz@gOg_r;_K)spzzWyn3nk+d5r4<*4^l
zKRnWhD70NQdwe`{_V>0~N;;f^{?SWy_uNB$4MW|>w6?hQcb@-zAst;i%5i~abD_rW
z2y<9vrsMlyl|#Xtxll*oU>TxS#-1^`28_9fEVz9(O=gg5znoc_k&)52;^LKSsBPh1
z!+a)$FWyOGpn|L|0=f0y*kF?gwW+db<=_rS<LrLxi^-^S$=Ywh7jqiqpq3nc?#5Q9
z9Gm3Qy+|`+>|XMvr4a*mfK9O3eG@fN+6&n^<s7Qv>m^gg8ad~KhLK>vU5T<w{5EZ6
z8q>SG!Tpq+Zg9KF<CuuxEjiyyFVdiyeAlE4v@+@=;-(3%qRk-KaPgvhuTDRx%*2_y
z(Jm1DCQuPOb8HLmcb{gEgoI`~bw~zE_gEHi=IX*MhGDN}CZ3r=t(}k<?HH&5HRX(F
z4>o}Mj5%R^mB-NHDZtzG_hdsJy<uO@*A-K5w#&6m*3IUknzCKk)H5jUd)ke9Rt2}v
zwSG1X0{A9FOK%o-OVHI1`HoQ6&+zL4Wtqrq=nFj7u`jow|B4KVkO;LXN#CqtziYV@
zy|xd!awW5hWhIt}kZB?Dy`T}S?(`9{+)0+smOqe^OYkrh?0ReaS9wkxN<EoQ9^^Pf
zy%JzPGMGWGy~&sakL|t}0K?;QJ1Eks4m0qf1CB!jP!t^tEO#p?J>#IB35C>tMA}9T
z=tsYP5%X;LZqDgwSS59~9w!rx4vtN>d59oOwJwL^VawFYr*}GaCnOXyuYmSbe}NRp
zH%@ga$@hrPzUG~2b@aCEOmlo}8AEooC?0>TdfK*^oY*b<d~)61nxnm!Mtf?g9@8!w
z@}vM*8qY^zM?Q#tI!ATSu1o11v&2mWCD&<Jx{d-w@6zDX>5{7QWWYc*gUsMy6RXos
z&X2vGGo7A&thkA*uAwgq2;<&8k=p*Q_p=5Z$i2haG2;(fs&-f3JlHbTGM-_3R2sL1
z*kvl()@vevdx8=22w)BQ*osgpo7&?)W(FFg>!Lx4I~GnT#Y9mG9GPe67(-X)wIJdE
z8$Ne9WH2r9v|$@i@0uTEVi-nFdU~^;?c&QYx-VPX^6g1#{g(jTfT9euJSJmg5VL~g
znc#Klw(D#ALI&MTg=nJ~9BO{Fe=&0~t>2}H|7QL1?IE8X->uv0ZG+hfSe4I;Ik+F6
zILkI;a45L(TD<a-{x@jGp>zr-4Q$+g=;Y&A$d%j9Gk6KFYG;?ss!GXJK1kTfk+X8W
zcpm#Vf<G&cL+~E38EQ@%X{Zo*GU-wf`(G#=Cu1vSqQu<a0o8w+eU02`wd%ln9UjvS
z-sFsctKmq)2vH2Ap)RSH7jJZi<He4rbv8#Oy@O!Nrv*eY9f-%Rn3g*`Jt%5cmA1#J
zpRvDJ4ihSA<9$ZQ>ZLd91R`c<+6onkIQ1nuZvP04lB4}j9*oT2K{6*P)hHe8L@+R!
zJ=?u)Cshun51Pl=*$Q*!2*p=T($PeVHu0R*+ekCtM0gL!)uJ;-yEniW6D_%k8Q-Jy
zv2IFvxMo%(kE}3iDnAw24;Mnhlb{&Jfls@-9k_2^JwwU{aL8NlaR5SwW$w+$X`0)Z
zt$_MV2JBihX#;6jf1cV$fNzq6olc&-GgaYL5VvZJ42;+j#6HthbTf;ws-?Ku>ea>G
z%9e+C*H=inm0IezJ7Q+x7`zOWFwJOp66Rsn?aq!?QMJ?9pRmh!<AF*Ze>smIS2*7Y
z_tm&TLaeve9M?uv)U7%BstYOVPaW<(G5y%}eo;JmJai!DzyMU*QOT}q>3U;`_KQ7F
zbnT({dKBEPx*YL~V=vdra4l4LD#2}^EBo-V!%d<h^iBqp;uY3_G7YzPtW>31?q?0b
z2m_VORCc$+_?uVRr!y5(+waTgIHiUwro_t)Q^+A?myTXwEm<Mt>&<75U;QmGA?&dh
z<1ZY$cl=OgSr46;ec5G%%rbij#8a7TI0yjon6;O_!Ewyol#s8&jK$EZ+0_z&FqYg&
zd;%NHi?9yk#qmPuQuWFsvgPWTx|HN|c4x1|PYK?|vPC88;REzz68B(^$WOdlm9a>f
z|M69OW>uFZHceZw6di22H?}K2-69}7U#I^tb`iE)4s)C%quT)t@p$t<D_Bt9gxqs&
zmXJJUono&o#xkgXjvdk%tw<O^VqaW>O_c-6{RTV7v(Jr+a^_fUPgC5-qeaqd*JjmT
z`xYP3k+4WN^Dw1R%cv@$7Qc9D1|?$rVeO-<h0yJ6INPp5vmF#=D3z0yQ)+`6fr2SD
zOP8fcsP;+(9ZKKDSuP!PEnnST{E$P<Y~5t_Kojz0Y+@*KGU1oBlzG)v@<`$OhL@ii
z-5h0D>|UWDS$%U&ipQ5IKXu-3vFthOE@Y&8Bx)Am%cx#@(DH<I{-|7qtBU2J%mCr$
zlhV4Q9<>v4KiXDhE>bs4(@q~hh8sjEtC0j;Kdm-d_e-=m)Ua@~dZyHOaMuc$9zVlU
z4IPpxn~EFKp=X(+#oJ@6i%4LxY)+QHfehWR05gm2*k-qyl@iQ6n2qc!1r4giW@^~O
z%~PK_8t<q+Tl9Qg|74}@bIijYt{jViAVn@oX4`3NOfp!tNVXIF1V&l!GqiWyuorf5
z^c{|fEFc=FNPkH=sooYHDokt+p^-G}Pk8U=ovgUo^x)0g!j(!&o0T%<9jvTVbaqRf
z$1+@28$7>{*^671{kG7?>H%dQop_ZKh1-O!?rg{rdZV#EF8BUnC4t^hOv)(h*AwFh
zI-VL?0gY?GOov&|f|foBoVv%$ag=LnN|YY%ei>1ljF@{S_Z-=T1y$?g^-A5{$!TGi
z+lUs=n_m&`+_S2^r{kNu|IMA+LvaqokPN94nue6x2l*xW>$bbq{Gc>yN=I{u6Lv7w
zE)__rlAuk;c|O@-_qG1{0kcBFvznACb^bQcZ)=uP_uJ_GVlqe3j=5-3D?*QKo3Ak%
zlXq6$ZbV{-h19?g;7*a&`@p((cRqE@CWuWpozo<aM-{9iC3l%>M?tzVxi<FdWz-%m
zvqN`4wzAIk%%D4S+NAUIRZOwnht^IGF|}F7IkDmng`;xBg)IpRdD|g!4<me-cnO)i
zoF#X`%@<<n>e@2RtmSDq$9{OsSs}&`y}Wxow2mX5P10t+!xP;7ZZ%@F9E*<TP6)Pq
zC-4~2j>oiHbL{LsR$`VKm4DRx$fOp*YdcAOeb!NF=_yz8i~KsXPD^%U^VHaTSt9V3
z$PkX`F0N$E%nA6YmB#%)RIAD~n7wJMx%!!^6Eu0I;yW$Z-6UhKP;~au{NweUG5*i}
zBxu<i`g5wrNBfFmyEjSg-kYIs7?fY!m7aKZf-t1YfNMKj6lD>v7fmA(T9q^TY69|4
zPw&=cu!@>GEDgI$Q~Iz2PWDVnWtj#~TfF#z%XdSgCJ}_LPKd9{M!SC}*!A9CSMOoC
z4UW!C8hF*3rw>Wez7tIE9xZRc&Jrm1MzDEt3WG=r$WXs+V~UQ};8|}Uj7+5Z{^)#g
zhN1}ab!K(REyTCdxc9#4X`xY}B!b=xDHF{$q9eCuCsEEVd=-CecToojR_8i(TBa=4
z={<<Iid)BXO@z}sJcFE2XG@c^$vVdeb1X8hUllg|ytxmPK6=VXt2djlYJHbxuh~-9
zDA(?5ye{Q};&n>})r7qhCY`cPPi8Akx(vQMo%xs|tkKpBUW@j48?(E?)gel*{1<1v
z7Uq%Jb|Q5F3-D3Q-Ru~z6-z{SE^bomY<F%he~JHr&#DT88q@pyKN@x>&%8~BhR!@c
zQ-Sm#jAhR$zFROUdQoc^JqJ9Zu`CEHHrqy>Wr>J9Fv@z0rz(!e9ka~djpS%+Q5ber
z(tB&h(YD)HuW!|P_=;HIuLj-oPPRSC-^eWP(h->-E9h2ZW7uD$rm|Lc7>mb_G#&R&
zoV-A|$~&zp>5jTg75Z5yy=2_teM>4xlOd$9W^zN$(eepwt`xV1^m0#t^rm%Qv*0v{
zQc;U|bd}$`$R%6xG|B%{w9##jneOygm>%{SAqC$JIXy+%-c%RSxT^-!Q>fjfQ}E?-
zKorJy2KUtKF}Kp*l017fFOW|1km6TybS+*&3nY3-e!Toq)j+q&Vg)X;^Py09)qqO>
z4YftF3e$jzcQlN;s>IVztWa*jG;{PE&2+u+{DApQ;*6Gz0CY057=5+KJAL;D+J}2*
zvX$<T#a7-02XzO;JdE~Y{kmB3_?Nw}Suh@>5{iS&{m*MxUeqJ<5M0FAJyj0%9#>NB
zHM6cc*Ly<xTl)>Ne~V?1#z@<m=~=T>XZG7YmY6e?;oNf*1P78{vr9Qa&-N{c4YaA$
zBg#d!Z1Hb#ogBJW5M$axI11FzIM=Y%IRf8tYbF)>G9hwqAn|O0n6C$-Z{ogoj=5F+
zxyZ|wZC#y{1Kz)=ebugKv~AB@4@xs~JlPR`SCNI;hZY#q%N{NG^c-JoG!Gf0#KA|9
zXBPF&6tWDlsf6WyL|@**Pd$N;G0!NGXQgYOgThn>xH@_YM84w@cNG=BcXLa6(?R!*
z%`qWSn9CgcaqBQ8?3L#Gn!uOpwRkZDODt5Pnims9)W^)S^ToAbJ_vi0xyiL&j%+=e
zI{lv@05{zy{L&F?vGjT9TLRy4!**yg8(H5*l&W4Ymi~E7YIKT`TBd_TIT-5G(;rs9
z&$#c{EVM|yHA>~=!Qg!50~VaAii)zT>Plw<ra~R3)}?B{26G!EbiLNbwp1Da;;K^r
zH>|1`+31qP@|32O95qhKY|fOEdgV8<UU3GLE2l8&4%0kNO>OxK*_@*XG45%KBHe%j
zq!bXo_L|~5UW9RCbVnH&C2N#>H4f(9lc?i9SEO5?vWYT<%`_b~Tr{2ap{zWu&GOlJ
zkepTcWUo8%t9i+!^Y&qSW5!ks|9lNuX$?!&!poNXsB+hzkEeBL4#=MC&W>5ddUwOV
zvL~W?J@-WATfG*aD!jQi$7XErXI7Tas3UN|1=C8F&!}x;YLw}xKbBXaof)oK;nL^T
z38^Q@$G=UPGm*J*&{MIb`fM>K-Hc_cNI08bdAIB*pDiv<0|M@=Cg0!mx@zQ}hg91y
z8#<+&+{c@2`eY$hi<bf4pd*e}f`B>;MG45ypW+)Ck|ecCLf2FyW##h7XV7WewC2Ko
zEzSx%t<jQ7q;}bVxMp?D9;Qj*aJ@VlmRB;rZsx={DW)VO4^f)2%Yuom3w4E@ZMp(F
zL)B*$3i-MN)Lr&IzNhh=P7!;&uHvj4;AiZW8b6@aa6HTPjXBX=S%e%H>hpU_*eW}#
z(dBB~jK?t>q4OWTsRSHa8z8F4dh(uJv+t&R_myu5r{&b)B9IhHhW;z~N=BDZN@y}q
z@l7J6rn(~*P&TcbULOSKhc5pNFqU6cU)gK70gVI6Ds5EjkoAnGP&g0}k57Ve6w0Ca
z2aZEDp98jM=4U51%qx^cVvC84jP%&2{Pi^Gh<vJ~a57FB7(*P;&DD+iGNB6jze<TI
zu;<)^#UIIK3vwiMd0K3Lc1dw?c9o$`2{gi>uRsq_^tE|S2d*ldgR_48_>B*%+AP;Q
z7_Vbt0wqvxd*?uC|NFD>=%vui^n8e7voF5gmqowVr<63ejC8fd#H+hQTER+O6SKvx
z-RefVeFu8-g|CK>^;PK%g?!8r2n2Sj`|jG}m4_%Bpk<qiaKBV&ueX$;5|X({D!DHz
zKp%5n?$m-bMGw>xv_0(xd=y0BlPF!@<J$AEFBYVmllE{oKjfxREp?k_#u1PfVb1yH
zPp(IeyHVI)PFfjJ8oaNZMx&kL-}y6-+J#Cop4C@YF#1By)%scXeJ268(U(GZp?tO%
zGD;Wd!d1VD-}CwV^(*F5i!2i$RMDfvv!0pJ7Dn8D;!C?!ew|x&pw?zTa~S2Rfcvi?
z#m@tOo0}xQUGUpCg550h)6R(4-LX$kZR3PNr3>2i9S04|=ueP$HG2$C7Wp|Hy6qUF
z9#WPZMp-O;e5hoCssr@uc_N*&$cVRs<77hAH@^=&aBIU!u+l;Bjg|s0pheNo8uaRg
z#o?LXRmV_W7FDAGz6i<N$g(%Skc&Pmu;iA)930To1ZwPG(YSPMfki$6TcqcV$ohp^
z->?7M!uD$y{L%?UjUUxPft&rb=(UH5ukF_0A@4P-2rntShDViBb2<TB;Pf*y;O?E6
zQm2CmwhFMFpP;q0*Z`<G@%wP+_Kw3!^CR>V!=tW1rlv7a9hLRDMFvRsja9rhNa+-?
z8BDvj3*Z$Z@=&8C(0`21Wvu|}0#YhLr|aiG;Cs9oq8L7HTEAd#hCp??rYc{2C+wLc
zFby2)QgqSvU&hD>X;vuRvRtrFzn4Y{uvbWBcNS2x^b!aBvj$o&D6>6ESa=J=8JIg+
zk>#%;kFN$(q-q$YIzRXG--F)|GjIDi4M1XZZz@9A3Tkg*7n~R=*eX49x?R5>OM&ko
z{F-T3H|k_U|Mfo(1;6#Ln#S=Y%SnXlxw_^Tj?GeK`221Fo>3Ki+Io>>6p2*o;^LAo
zx+!^HH49(O1f^B0x!U>znru%4fHPz%=^9&@kjjmShzJ!xFGrg~U0s0h)T4C}H5Rmj
zl3FnVJ=?E>+&unCoO|J+!7SF?mlDS?eF9)ifq!wK12n9Ol}J9!R|QiND9U>ccCi%v
zt#);=4yX~Fhu_{hTS;dX!`d=|Kp(ftuD}zbFt2uJJL(^8b@K(~Z~)C9)$yb6>~OI4
zgJ3dig$k~$R`|1FmjS4qYN#_aHo)mCRnM;6B(eZ#`H7k0^8;XB-81$e^UZ8e;bRP#
zFGwxyNyG%*eAoUe7(qDKM?-FHSPe=er<Sk5yFuNsBXgz%%IBZp$AZ*PC*WEGy{MWn
zZSge=WB>X8PmrA}I9psU31g3wlsLkdjK(g)vlxvX-e1f0tP#e(8I4`Ma^c)DA$3E|
zgMp`q;P<Zr(g@4e05<LITNpc%#622o2lqx1g1)RH7Cc?OfTNsy`uWBAFQRhkdfoBi
zr+~Lk-)w8ZBr0EjaGEU^aeta)C2Y5Vk$ZgW;ATIB-EgZ5YXEcS20u=y>q0Gj1_n5(
z%6b%_;`Fco`G19t@S6Q6zNg;+DJ_agG>b8EJd&e~pg)m{Df~_9nw>P9%>@%Rcf{tD
zXoUr<mZ944#2O9BgZXuYv@|%@-291-{n|(z6m?iwvT|d+5C0`}fAXzmMExg0Cj+Uc
z?B1on1fGlK7#IYH{{on+CEEmekaUE)xPceK<79r_#m8j9p$T0Ek-}W`slaoV8d-Am
zK6ST?*nggVG-3aXy*H1ivVHqTOO!N;q%;vSl}bs-P%0TSt+mXODHh5sLnxY)3<()Z
zrnSs0v!y$g%o$gvMCN76Jog?a>F&Pw?|DDZyFdG%z4!B9MQgaO^E%Jt_#WTEE0Mu_
z7ul4w^YI?9i}Zs4tRM~p(iU@Cx2L*RMM$(%&V%;tu=ri%01nta4rytJz-cgfUXx|!
z49pFu>LQmiho_b2?gBiYq=yuu@Z-GXUdXBey|ypkW;Mq1P=idsUQ;L1vlWT}IMawy
zq$^y1?0_(m9!5_J&i2sYgSROji}?J`hXR)1WG#3Fr4<bUsJEOP1S1497yw!gJ|n}d
z$*CjZYqcr>XW?id$UT1=utwK)g@^B^fWh^f3~jPo?vq`|Upx73+Ict?#1J2`;46Fm
zX1UI(ka-XfT|+kc5-@8Vrq2CD$(xYZmX~PfQA`2FPP4skg0IvdP(Q*Qn@hp!$3VP0
zP<;^0%%A8{PJ;V&l(vBOfk_L7oc4ttkrpM9He=Xt3bQ4kb{#wsIs4dsw%j0@qLQ<X
zX4%lgVK(Fp&2j>kUTMg&KezwCugL6nK=f{XyM3BYm4U8(B37gc<m1~|*}j4wzo6&h
zLa)?;J#SJ*Ct*-w=Vfe&bS0L^G25UFKf|^m8+c<7ayNJzyZdsuSVIH0W3Dzvp>1n5
zm{`5fCFOsd9-Rab&?!-m=<>KG2&doQ=ww(o{|&kD#6`H2WkCS;7eQUH%lc!$YYBUt
zX@>RVRc_zP0-{IBkoSdz9&Fy&cheY+eDqSMAdR`G>l1*~Kbx^SR^8-jxR2#N&d6OE
zV%ZvfV&P2)?)?e|>BuH$XjH=)^92d6T41c$3NVQ-gL65lbCguOSpU@VI(Yz-l8&r!
zV=qTqd(5}A55mABRUGSB^ZLTnlk0B9ne%pCpPt2jcZULP`fCgIi<Y~A;Ty;4fz$11
zYB=;*W4_9XY=jI{-C^2Cf^jls2`*v2=l~Vz>?I&(d+M%8fnh*D8fcuLi)k2iJK``n
z3VN?^5zKL}7P3i>DYr)N9BA$O(jhMyN^$)<z8_d!^MigeTl?)y26FAuTvP%K0+RK?
zEY-md#&JV!RC%A2ApK~HIgWJBX>lB`a~hhg`b4@o#yE!V%)0E>$?OPbt2tCbXz6e=
zl?Gm9N%kl+GkiECqyNN3CF&J7HxTubki0$|{_7N6(XW%y!VVDB)gmi3r#dZmb1y_`
zow91qR2p7{a0ngX0knbi=akDt-{!(cyZLFF;H<ASZQBJ7ZxcY=CV5ydlgfFcioQ_;
z2y+S)pp#Oa&8!iP$5=tSNQG^MO?p^oomnQ-z<4jlVhV<cZF=XksV&mLoPOre4M>Z~
z9aa6S0Y-!TTQ8rDqiF$O`+B-SF^g$X95{A>!)<tvemkX#Vo^*vJzXaZ+rv}$KA8iy
zvip8crg%8yJFujqIen}s|Cz?&wrrSFf(2}Lu8kzjUIhIXnknQS8eN}?(BRv^amO{o
z4|~sHhqhu~%)?-<dOc{3&0gBvU7RVAa^x64)naKRw^v+uFWF)<!y1+x3qb}Z6n#!p
z{?3ey9aHT~yrCxLA(->+cDlHX@MWI?h7=b5a+T+<gK77|h}t$YY`wxT&$aWK0uix|
zIK)}BZC!?=hnq+Y(&hWa7f>j{lW77m*;ZJMoj?)rd*YkX*g8@$u8eyMYny8Q7&Lyw
zHnF95tmG?buGF@*5yHRTBh_+thK_jNB!?$3BS<2TkLXUw+}kQl_cl*t%i4C@=9ZSW
z>NSO|GS|T5NaLC41b39w(S8~EId+y+)r0fVs3KYs5s{LmZqI3EL?iN)mZzEPT1wQ)
zfObqcM*Q;;*hKsa{#hLPZ-|zqwb(H;XeLE<yf+||tg3#6b!efUA_)Wakj5V)x2DCj
z*QpyCbxe~UspgxKiZMyefOqw&tx3e@j0+Dh?s&)dx$by+%~rj_-ih8Q6bum?9&dqm
z_f2XrLMY1jp!_Id&?FU~v|zZx^0j|m5ktq0WBeM=pGMpv#!8Z0vEqkGEm>+a+R5je
zZT5o6`)N0fUn1uncyfln2ICc*P4@bv*tqXti*#tz64Y&UCau%V*Je>B_EUw_Ms=MF
zGH*{h6;k!ASyRXcyT~8ipPa+f<rcxj*~KYwrwgz=VKClDqbA{s5ywWywk782mmDG{
z46{WK?BB<n7@0wcd^dwev0*i`MVCK2Pduh{#sYqs60t!+=B>zD_gyk;EoEizU6-L!
zoI(8Z;o~DAt|+r4>K&=M5w^c?091@C<gh<jUn>#?R#r}x3{PM8#o1~PvfK>8%uI4=
z=6mvWpNwYFgtn&)<jm+)jk>fVmvC)TwOfPWCtmg=n+?8yz0C2_HyDW~UGK&2^M_$2
ztmLU%LolwkEtyIN8HxUQC?&^c;8Kg4Qpu2oh)HIC#%M7!q?&lNZmmTl^5i0UfLzUX
z9#BeDQ56>|_el}LeM#8&LA6eB4ooSA3On$+2MYB|n5p+oVES`x7KL97?OJTiCO3#L
z**@wAnnvn0%-6#pFz}^7;YE%~l#>?`qfH2c&odDx)wHL5<|6AE2z=}aYq;Ez-S~JQ
zS=b5mu9mfv&@r{8eQ6dw13rq`c&!89uyqTF%#k1dzJ|hJkmzDDo#^{Gmg5_gU&QMy
zhG*y}pgS*P;Dg=BL;~nxNR{<9`2O01o}N7L$A}%bk<IA}v)bl3jqoN7F-J|=j}|;p
z?{Gs=^%;63yUY~Xw_FZ`H(KW}z@^MM7aePaXBp(<dK~IFv)`d!b+}J!$Qk1qcSVKr
z9A9(7fHZ%?LUm>?AadcoMCU626T?GXlr0VG?5?v|z;JEyu%5*C2{Zs5DSwUd^Y3$k
zp<#}D1imx~n(eDh{QiPP`2b9WO^z@)k@;Uf9S=nWfE{-&!h<Yg;MDIC8=eU+T8L>m
zzJtVjhN7&URI29iG`Yc7%spQEY{ofVpQ7eP;w=BSqtm*$q4oPE-JF|x4^S5FMz5o_
zfaWi0?bG0cpHVrsKFZZi;T`Vjqhg2z|MnAl<a8!flsUtN`LP@Y`HM0B_>h~I6wI_@
zzh7tZ>+k#4iQPpW*qwl&b`;bzReJeW`e9#3EB-g=NOMg=)J}2vtWY!Z$3g>-VjO_E
zy=e}Pj-igj&n;};QFss6C(F;CSIXyc$h7fzhkK&5HZ3uF3WA(JNr(fug|0}jZ^I%i
zh9Tc|w|d3f`+Wy6?I4+UXv*6OE;mu%3u0^2P%KlSj=)j!%+(QhqNt;$gTUrCg)REk
z6AfuiE*Deg8U^um)ncJ}spiv}5&f=^DfQx=4I2#^zUdrx`^P)d?eI+#{r>kf%ij;2
z-+fQtUKoFJ>Q7c&mZ-**)Pq*F-hLt3QD$HlPM9vdS@<-lBE*69)s`&h<15DR2*kqS
z&}o>cXMuf7j*-XYWuN3`D}o3Agc`fn7f8v{VO>LH*)P6#`qttWgUJf4PkHke;=Wjh
z?#vTo5N6;|y{Dn7>U0Oum)r)WmSQ!R#B5hU+q3te_zMuv%PQ(1M)dQ_?n@y4D8<Qk
z4vZA5&ajpA;)>>iPDla0#1b-hY`l^qSX`?_dvm@!kjAm!3(*i*%45<&g6as&D#z;4
zLI9T(*CuEi&JaAFj<fmX3t=^pW;*|ddbN4bB+AMJ4wp?k<@hI;h}6b%@TnPzkRnEh
zbf=8qEBhzKl(oM<?$L*1P&PRtlK2@X%SzQMbWu)@pzPUqIq~K-2@7i<CF%?cs7y{4
zbm9_5M-b2$iS*ykMnPYM!(Ms?q%;&d`=8|)1SAteFxe$VX^u8jIQqVG2a;Ip3DrqO
zMY=GaaC`rGClUZ2IYutmb2`?uYLKT$DI`#7Q-<_4uEoW^Rg&%DFK`9@bDNZdV&XfB
zno<g-eZ2l5Dio;KX9)9ro|vdtj4ECk5vnf0xy$vt?D6~|Gno*HBB^|QP^!@ol)W(j
zz=IV^FXD~DynPBr9(A+*yOUhjUkB!Xscc8|ZN+^>L={yEmG=tW0K=nAG8c!~8<H>Y
zYa&Wx#a~E`J$pKFci;mg8ff+l=Uv1P0I|t|dKKz1dydq`&<IYVBh)duZ*{608isWy
z6ZGN<UXJqA+yWQV<i`3pasieoCm=-t<1|aXLrWmesUPt@-ASL1q~sFOlL_0l_BEw3
zlt#x=`td&1Ta^d5T$H5`WON31pt2?1!*n1z75eXrPXBCgM^&U>rAz8YnY9xfoSgF8
zC=6MX4s0}&jL6t<KGjQkOCR-Sd5tD?{HiR&UedPkY?W%={mk5fr^gs?U9m`Z_6h;l
zKrZC{vWt5kwC;Z+f563IxJJo}c(q3&cm{Zb_SN1JaHiSuzsuai5jE<7;!7Gg?03HM
zf${k$X*;Gff_?%7Fr=T39Ay7d;r9d~o)t5ym3CYWASk6L&wW7yh~U&6HvOv&M8S66
z%?8nDCs}|b@1icY{<idC_ytYH+}!)4!Xh!Iuj!4!jZ!$DWYh({wgLQX&czO5ST7;p
z_uaBCD^&3{Ym4Zh&UW`n1%)vspoT*Qba-W<y#LLEW~KEs)`&_O6%MTh8j0d7VuZTl
zOlZxy6N9bL^7Ld)aPugy$W4CXBFkvjwHHut5s!h5kEKqYy?L>2?k^T6{S0?1kZwcY
zg`7@0=KaLZeP^;(+Et$|2P9j;x#h~9Q<k6J`GG+Rpdc$Uk{^h?x`G=lqZeM<bmz7h
zfECz9okACfq%%mNwEPP++nomz;w*<-bJI+tmwUeqr0Z{-)XIS?wh43fF_eJ_jaBoX
z_@`SYy9!A<z60ODSg`s&w|Cxm9lUYv6<$N*9VIGQBmg?|gRlcUM+(p1cqAOj#jru_
zxmf+=7sWctm&V;E1#W+o>qn}p>^@A%_J(OJ@X058tl=AJ!d?0}XXo^fZ^TZ4C73HH
z74S>qEJ73Wj&jC3S=9?nZZqmbAeVUoZZGaR;Kj~Ik#+`x+X{|oroM$jziZKXH#@pm
zyj~D|(fs}avsHb(>Jv7aX@r9kcG4erv$}pgd-n;`FAKBd#3=yuS3W;uEJ%3Rc<jR^
zT(i)br_Xwh({0PEhZV1mdUclvw|H-4R`g(9HE;%v-Tx7{8h~IiNaVuf@fi^j5d;b6
zRjk{aFN$#z7>f_w3sQYKu=nd~YPQqTci<UKjG5f&|4@6J=6GAR?7ugI#0MTvc5wi5
z{TrpH*8n!Mb~r0;S+)cB;S?P*xN8B}!)O~YS5C389t0Um2a(le)Rb}1Z8CPpX4<v1
zWvF-nCx`!3Jgj233s8JaMsIyg<CO#V#U^IVW?u(ha-iby_D@LN5nEpJ4M1IA_?g4|
z9xN;=1S?(*v|pC`!O~a@@3CG(G1h+*+-%)I(J3zQo>#YlkAD(aRV3B1Rxrg#M_UW&
z;c<OhMn80<tgbu8FUW8Y^WPO>twM;)%0uW-xsVQ@o->?XMFieFPt~mRA^?%R%y-VS
zqZ(p1St<h{Nu>1qv2c)S+bS0zDTfInApjGcjNADbF4OYk^!x9>!0j<R(Bs{*s8rnk
zDG|Q0sY1zHxDG3P@m@!`4y$k~d=9k4ywG*Ps>CuQ&%;sfWQ*HK76`>F{YjKDxP71%
za<<cv1nvXjxGC*F@%}JCP1E`R`<zHnd;pyIYs>RG4-X}?;TvY!0l3WCA_I!8umLce
zT=k>x(zycM*;Bxi(@DMJ1-c&I_FV|&W$cqd#*(LOI?scX#|~xq2GXXq=QbO(w6s`(
z@yaQWrG<)mFRx#sDNh5M472L2sw(9$I8_YRQG2gJ<fLKoy=~dQ*!*)%n~uu7HTX}D
z(w`6i@-~StKK6TeWdD``t2WNZ5d3NV9>SI5Pqcsd>x!;ExhS{5mx=OwA8JBAxQ>gv
zKnC-#$71zA{yp&f^)C^yb-QTqx(l#I0${tb@8sitz543rwlWK{SsjqE`&q$?vZOq%
z0btkx7Er@Y8^BCXN?%!=o6NFo651o-V!v*<>IgD77^FX}mHr+~K`p@Rrm8AxHy@G#
zq1jDbTnT~}!5zNB-F@w^ZQW~WqrC%^%pm0i%lAd<+YH=xvI~~+Za|Lb*Oc(^@P)17
zHcgg}mwru#ZMjn+b{21Koi#jcy+_FSQgTm~F?wGM+R)HYOK@ChgglGN@*E^ZxEB9M
z<G<rw?dn<LwM4H7)<A$TB*8dV>ge<^p!Z*cyw`I7sq#P6dZNt)^ftneFh&*hT`1tn
zjLt0YABWR5r1V<%BNr~m@-1-&>*E0{^If}WxB<)6+T{aR>%W%C$D>VwUr=y0rFWI-
zdtw({?<?{lpU(eU%Z!)Q;oX(==0FbS2Mb(=aLDfLikCZ@Ijrm;E6+B1o)5sUxX0g?
zGWz{gm%)urKlwkKA8daAuiEhbe8MW-YtTu`nEr=;>YHC&X)6p!jv**AB4R(3MI_(@
z3#D2dUmX$02mhh;S5480b%|sVz<wF+D7JzyF;Fwy)fl<Z3mdca2n9B^Tld=N-L{R$
z%?uc-A{plIod)(KR`f0f^}aWM>ql26<~HDz?v1?E&as4m7Vyviq6#bd@lIdEUuQMA
zFu+R0dVPq2m%9l+s|fbn_{Z<V4%7rjw3XIFyF^!Ch!K^#$;fzJnjRh}ga!Wdf9z)Y
z<T^74dVw#%$}t3^;xsT^G0uFrdC#xojImD#PF5C}VBJL1LUmGz0L^X|&3wls6o8BT
zq1SELTG4lS7epDb`;p&fn%7xYyf}UeM0*opsfr#OZ*(BwAf{&%tDwEdts|5jc~w9~
z0OXX$b)rTVS<a>=CntMr^sm+u>4KlXejQ%2JO<L`#LFL^M6L`2Bxzxf`Yx#=YEri2
zCF3zL4uP8rrQJVvwfocGO_tHj=s$L~=6H@9FcFoGvVhxw^C4JSSvA(xWrWDu^s(u|
zSvOhR@vFe2J@VUIVEg+s;IYHY832dekIoN`wY66vC+Yo0s40=b@qbld`2~-XbRn8b
zyUnEo=s0Mz9z*p-u>6T?6|?~*7z>SG>BS5APQX>=gA*n8z5)dnC#tbkx{ZbCyDkC|
zh@^(%t-@le&ac$Szc;+74!DzBj(XwN!4^f>yBRK;JgUzG|Gh=g3%f~xOkfBA<^lIu
zJU6m{Z9|4tU?lT(u+~;~D+mn;92DxTol6A9rmm(mCPJYXbmG(hPwB+feun1)t7Qnd
zEa_mEiJdb#e~4V2R*XukL@;zEtuI((AV0%)MKy$p<`sO2yI9p8=rNYFk+~I$U`543
zhe0jniL`_c_z~(D(`Ep+7eRiH@^^z7fYZ|%8<nB)C1h$6PQ2JW78JDf1!7P{=JT#o
z@SZW}tljn2$|m%*OpXQPZ32o0R9fBgC5MDV9e*xM-HTnnd9-spajAY&c(HD{s9Bg2
zPtBOHE3Ef0+o26ueAN_qX_m}oc#p7dC(r3~e8eFEZqjYTLa3J$U4-_~-iD@dOM0Rr
zP!iOj98+2wB#5kOyi|%QSy`u$xEskAhi;)*&biF`WYtCgpk?|Ksu?bM8r{>{@ZVHd
zOJAYkxR(MV@MLY5VSEg9%EGBWl`E0<jPWS+=c2T}uXH$^pVZC6vqM0?ILcTIWCrkz
z!7gurzfE?a6uSvFV?W5CYsVEea!3D?NY}vPT6Spp#lJXL6bdH(3@4;$Y2dqUiMp={
zFwOvyPqUg@!}{I0sf*8TNWdH1t(*;Oe#JiQMz&GTYj@vT8M=;1@+kiAoD~SPW4p*Z
z@1~**RVA1#qLw6LR=c6B<Lb)u^A0MtE&1dM!4<D7?efP!@2UAtf(D)yHp0APc970U
zkL*-D4+_!I+VcAKj*?Pa(R_%Mnb~!N?wHB1>XCQFd+h%@|Nq@dpy#y=&8^j}fBhfW
z!j$O#Ri}PKm+LnASa}7C$a(GWR(ljS%!ZM<V`8iS$PPOOg=<GYSk$DWjUY(=xbo`H
zmfx0L8h&BTqq4x&SNYvDcOgR8<p$H_KMw{^Pcyhl5iH&vzxQ%JRE&Dc2gCFm#0A9c
z7{e?7_#e`!cR?;CzfT{it>9CC3V^j7L8#Q-{we-nzE8Wu>55TtRm=JZV`fg|J51O;
zrO(lD+)WwpsmwqNyuV-W(gW*XpB)^S19&cHAxoIPKKiQz;HDk;Om2eX4}+FYZ_n-I
zbV$?zo3&Lhqd%<GqELv~3aerHHEq!~1CzAM6}hF!L1vB>5{5Lp68z>#hkiJ#&LJXM
zLTCk@*8*IMp18&euq9vq@4tyCZm2<h#jy0)Yn6_|3mm7iT6E|BhpF@bBc{&34F}we
zj=92GiQ4w3;lOgDS;%(4f%HfgK}U3RJ}=Jxy=za%BAGj=W-USIzIZd&Ddk^a+^DtN
zW_p0!kc}Oxs`%7n>zi3pw*B6tRv&e=O2M%L9w)6NI<TzxwQ6f&Ju4|ZzXhg)|IuXN
zx3aNrlb6JFYaQ@92f-9};_8`6w)cZg8Epk%C;K5i+YKn+R*+Fef@x0sR>_%fE?bg%
z=C9#e^<9TdklJ{0y1giNsq=J${T*8U#C@Kiq<e`bGfGj}A02ImNEA2_b&a-3&P46`
z1W4G>OS`J$bQ;aOFUhc<gs1N_f0-Lxx}&Hj`W-m7(hL8__^7-$z!E;+FD4_S4p|zY
z(RN$SBZTTN>$icead7I|gtkwd%gA}FwmgTd@4n*C2fu?k`S2D(`Ytkr$p;{IYzyK!
zLaSS7rwb^=KD&zJSuT?nuH`yk(@R?~pZRg#^_$lQWM5)uK=~Od?v$+OKG|RrKEH=-
zp@<azr>MB675xH(PxM9^Sf_a0j+n8PBouwW1;Y@f>XiENQDk`+7w(vj1`Eof-8;mA
zyJO@Oc5#L<9s5<?<v;_`+^PWP#93fTUJCXqF4tY(uHEp(OmckpJosqqro6gw;1_se
zVGY36e%Om#RA}$6f&(ji@=7>iP<2TGnlnc<IH3#!R`MvF_&|L0vJ9KAukPq8!~)K{
zl6m^fphDa~IXSIWmq-P7Q*5w0M>?n=DYa(Rv#&Xn-2|fT#N1rbsw8~gq0&)Otk=Yk
zPGFEU(Isg=0;5rqNMXN{_4L5sq#ZJ8q=SkSp_=(vv#OWo;O`$ZKPqiF4=kZ8tOjmr
zsD8`>*!iPl$2r<`Xj4Lc_>Y6b^Ccv7<dd5NC#QPaiP9VUUY!JLNd55H5_CGy|7oTs
z^J1$VoS-l1;YgjDn8-1Re+o?&55_pOn>MpWE&t07@_z98<v!{PS?Vq_&tY*G2)?YH
zgm?^xSN$M4wJ?~g4Q?IQ^vPr}VQ7hdDrtdA!IoLVw~P6be-nDR|1+Vdr8FP>D&{|m
zkPVv~;wO_~xO@JhQc1$VJVO(j&^f&v0eVo6<3fTv3?kD&p8c5&OQjjeYWQWZ?7iT3
z4f(Jrb&D0tnnfubb`UH`HtoeHe78rls4yXuhxu`iDHgb%4Ir3Q^4;hAJ(@xW&A5{|
zzMQngX5khZ=cp)qMCjQNBKQcfkooJ8N?S=>H@nGnk2tba2Q^i8HhD71J@mP)n&xZ0
zSIsO$VQ1tL0LI^j*Iip$TKxb>?myRqO34N#BNPwU_9J)htykzkO4?VTC^>>0d17{*
zQPoRP>qK}MymcsuGlVw=(|o5Ccvq~;6a8tFfiTfQyQn^ryFwZot8>jvb?;=3Ohxir
zJ*QIc;2cu2!|QF5*W!j@9OdFfBxc#FMkNYI=@m9N%%Pa}CbLK@v}*LETt>n@mS(4F
zp5Cf&li#2I5-3B5rf&g{C<%D|pp@0WwV}3GzO+PyBuV1Tzd`YMZl*jF+C6Z5>NJf@
z(Lm81fT(=2GZd)&!KUy&n4`Tes^~v@99&3B7u;ST)Xnd?=PlI}_{PI{D=Q`H&Ix2f
z!X@|%D4%u%-BYI9rULjhPOmD#cb#d|xwBQF!uUZjNq1Nq<J*izs(RP#(a=qDu6b75
z3V1oU@_HceByAgzhlb<7BUcGT{>vZjgGR+xT#{5i4hq_WO<fR!aZ02LV*b9+SsBbX
zQ*=FnDz!wZR9O3R$rpuM<fba;?`P?`HR9TyarVyorrl;Q4N)SC-lxQG#~v8ndn9w=
z$=RY^m~Vt!UUo=wdA+HVA##?jgvWZO`9Sd!%(`<}?hoXc`gAiKB|XpFIxlp@aSq;N
zc+MG(#m`;xxo;Nk@Er9$!yaPVqI2_kzBP^8^NR0ov71!)OmHP5DS1c1J2{`{;2&_d
zDg2f8wz*NSbGLj(wDH<@h>Jv3Pde@PWSq_Yh0b3;|4l{OUG#4%5?;$IUjOK$zAx94
zo`DT?T~f;*RHPBX9g-eD9vRplNcLNV3HFfht|fTM4#~r>-ik38ZSs)rD-Im1D>R?o
z`MEm&R}n~ad$oPH&m`ZfqINN}K{blX&;RU5wc6=cy?DFK6;b0ieh})&bqkDOsEgCr
zfvab2MvT})V83i=lzBpf)!gYT4B_4Dw&F+@k+Xy~viX-AfL!shF!CKY9j3W5$q%D+
zK=AVh@)GRPFC1SJ^jwEXf|oE?;$pu)Wl6QTXI{VKEq`F`Ga^Iqj+cBIje_lcU0Wv;
z+JJ2n-<B2hj$*5DF8@rl8F}ZuhYbD>JBCpsJ#YI&F8^^fz$=$?&Bz16DTv9W_j6Hr
z@cN9l<?CGj8wD_09&{gZHPEWN$}@DMVb>DSaq_O{Dv6&UC9^0J9BbMs9uv_Ati}eh
zbob}Jd7hIK_MtLZlh$kCh5{Rtv4v9g6Anq-bQ26?(Xnf$^+sHRTZR%xSYhioh`wQP
zcKG_O@i6~toFEH%fVG$5(&Qj!Nb^akW5$5XzOcOwSfl!RPO(Fp2MTJ$aNh(+I(LSc
zpK<w!x2eNtQgMc-j;zi$s*yv;l*RL&`(UB4Y|8gH@z`rGs;8qqDQ@>#18wEH!~E(4
zET5m{HvfeKmdGWsefx;tF8vkm*uYnz5yiZ(PFpb^h!BV6mTyIyyQ;J{FsuqAZ_5lh
z7c3K#V!}Nb3|Pu8DE$@TJJeugv_eU;pj=Og4S&(hy=zGOa4Yu`%7YntyZ|owJ#)kz
zWDAPnkDB)k<(YM<x-$g57Ysi#qfc9a6_jns23bT&YDld=Vc?)>z2o&XB^7uRj{7{Q
zI_<W9#lKUddmz+Ub&c+4x8fs!exjN?2%Pseh4~(DEMSSh=wU#Sn$)Glo5v;4G`=%(
zaCn^ItI(*dK^IU2Q7pQriD?&&_@}?i7&*fuo-a4UHZ4r3{uiSu*H3FLQZ|yC#3=V@
zC%&p#O@1wa66RFD3nZlt&)gVF-48bBEp7WG)@hD=09SO#Q8(B{FtxGJv3lT>x%R5u
zBoalH4>laG+|EpnO;Biu&F}BwkSMe-m1m!Y9HdzbkkNWgjo5mD&y=)c)lbL(AU$&(
zR$SKMB|i6geOj^22&+VjM)h0ZFiG&Is?D$nOZ=RSkM^~dC0LXYZ}ZXV=Vj?WikKzn
zJyCt6duuEp@(cKE@!w5pwu$e3zw?yDG}cfrcN9}y+mIoS94My9hZ)9RqqW{@bdMzp
zhmU8}dgassm)tw$+yqjD^2UFUba<KmP8~cNUL=KsHjQwzWQzeyeHreMj}lN^4wB~v
zh_1!Bp$gxKbwoT1*#bxOl@_FA3h1oO>3PGMIO*au1MEiQCd!UsH_WlUy~5z99mco0
zVS7`IcETv;z~Rp}CC!D2dKIdVB#ooOGn>P;2Nt*M5jnBwpw5rd;z)jHFtqf<LUTAb
z*|zR@Rr3$!@@!bzWNP(b1~Qv242=;5>#~)W@i&=Yntj#3;r#DT+=b4*YZ#0ww8Ef_
zbf2q>{CYn2G-z%=K)u{<O`bKK@8Xft!m8$<VyT7FAf%9TO(e<pQc_Pyip>b6eH0@*
zKQK#T*vfKdg%U+uXMGk?qG<l4M8z7}O)7rob$db$Fr6XXP|x=!sf$^te$o?k!)UfN
zH(NBDu;miBYKt@{C61C_nxktk&#yu89qJpQE^ah%NKF39Ds~HJn0)(cgY>u{g`pT%
zc&~GrJSE1UJCcA(xaq70L}E=0X3LLoPwe%gYJD8g$**BKQ=Xb?9-Qmz-1w||j&be(
z-OZqx>ut@}^FD&8ns3=nh*tdB>#<aVyha@9ESz-gTT^c<58bU(O}e+=CB9`#{AX3!
zr~!Iy;h|U*JErRw>%ni|V6DEWZs<!>`YsE&N_l!uEqqG0Qro|`rXU7X6QS*CXolkp
ze#=^4seOMX_Fl6nxe7j^vUvkHV_X_zBRB|pFP9lp{-mM~JP<GK>Q&R&BHbM7iA%$~
z5f!uy47(`QOIi{<*+q9zZ3I-J3ZM538r^Xo7D|De3>*TJKEC<>f@G&zvQ?mhlINcd
zn|>^?cpME;vc_--v6++rh6*C2XicNKtwX0fs3?9T`_xnM;nOW3UeFy)G8>2hPo`mK
zy~(&d3)Y;au&5Mj$XmqEb#43saU-S-mm1&(ExNv>@U}K+2Nw6oMGn7Hl8D3L$AIvi
z1_8G@Bh+2SP5tgMM$sg7&HSg`u_NUwDU`GpHnYr&58>JQ6clsLps*ce?Gl$YtA%}i
zc^c15kQ-VV!Yqi<W%+q|tu<{>4y~wgBwgW{Z6a!gavpM1QV%8rD7hUrnDe{(VODL6
ziupSSPh6m-LGWd2yrTJuwG#6`kVZdWnk9$#O#O)i4u?ldB&UwITzzz;6%Ua9H^&_o
zC5gAQC_uj&77c9<iaRE+bk?8dq>tLsqJ{MNIA1Buj5eWva!x#GnE(yEx2+CRbg2y6
zc37M9#6}d}MBJ-Uc@OIczqwaen%CxySBZ!D@+EV-VIontoS+`pEcJ8ta&Mg3Q;T3*
zAY7El8iwC~uclP3)o=!XT%#{O7w?o2!69y5%f<Q@XqUoU_k|=n?C?osI6+d^UQ2FN
z7Om?X#ZdbDbPKU1r}5zfGHVf;ev@iLr*{g&0T$zd89kqewhgLp#q>2_xfp(mj}9SG
z)u%D+#C`b(W<SZgNV$Opzr|*t+T%|yA##7A2Pha6M3w|n3Th=}u|t{aDqas)xd4z$
zb6~SdB^Xn<^IJA*H~8906lqrPd>(1R2p$6sSgMA&HfgCLvT+bJpB<8xuO=A_pPD2X
zy`CIrw{Qt3V`m<B`#*Ygv<E34SWQg*SNISWw6TziyXK%Cv{iX<JNxHq!3NhGiSv|?
zglzm{D1#a=t|%3){OHL+9TH4<vla9Xtocka@7UP)<pzlyf!95a2gzvTniC9wPzn#u
zVa3JYQ7k^>z#M-7G;7*Uw$`A{*o|gL*E(RHBZ^SmS(+<z=%tnEGV}GS*?c3~6Wc0W
z4kh~X$NBIbbDy&hJ7#!$pYt~_YZ0eqK)S-=ZQ?t4jV;+(iy^yzsY_QqxLd(tUI>^}
zp&gya?P+b%pT2jVa9Ba=Y`GYHQfdMP5a&u%d#|D}l5??_z4*cfqul5>oX~b6|H>m;
zbD(ei?d-{Z04~e2bZ!Mp9ijQqu>y^c2;7}DThWdxI2Ej3J1+KAu&mO_vJ82$Uqa05
zYadeB(&Mgx7U-0Hp9-jfZsY_Qo5DQiB}~APi_I?!@ZGwFFBpFf*1%C;cZO{eC2gvI
zBlNB%I;;%h6%Dq%O8Tcp)B6~Ak0&^Ox)eD&I*y53Hu?Z{&4lAObi0BHEK4*oFXrgJ
zgOOJIF`PBHwJrbT*2Y!`iXM_;JiNod)lh)U&dCajnKvq%fd=yT5w?mOEyGH4oQxJT
zE-+ea0d>W^%)3<)C%d#4YWhGEQ}gA-e0`jxiAbBh`XJT4$Zxb^n&G%4Twx@Ims48S
zO8x;+#mlqT!?>OH_qhEV9sfS@y=$-aQc*My1Z^s+90I5}D4-P93LRoy(f_(szrN^i
zG-zd-g_uB4SgXiT?!Oo%`96ArM2^3`u-DK8p;6zT0TBFpRgmuoF3b!lLiv}1wk&Ba
zGZ1qIHv+bhm7U!JYG+G`_-qoO=Un9lXwa6e5X(>;v#;1dywb3^>y#yRaPVZIp!db)
zxvPu;O?mLqY>+X%SQ3=}kBW8hDewH7GWNGq`6&x}#7km~*G7uEzg>DUuA?+7tD2Es
zJ?gaE5!Sqm88~(#60vjAGop3<iEEBgv%onGCKO*F^ws9vTVOrV0)qcv`a0q<y1J|D
zVmHfuuvmR1(1E|WsUp>G#ri&V<A0B5yE3d`kEVIF^N1~{)YvCZqe@T6Yk84FzxFze
zC=2;~Sl4m5O}^f|8J><gz#>iD(S7_MA^88P5FB=}is!zd{r)wSs~Q5h_wQ49`4L;C
z;qo}cZ+}zJZJ^x<CcB+5`?}^0)hlOxE)R&PezR%d;9j=xUs+zKV3Rh%{6|aTw*Z4!
zLI;v{<u95&C$FhgF0POu2yemu&Z_hMgHsmu@hWkj3g9D2BYFb#>tV-@?m{e{)Z2&0
zxqq$S_<L^wP)-8y7L;=OPg`PcJ^dF6qJE@g3uAot|H#n)t*HMW8T$YCWax6w5GM!*
zBl?KGhXUmaCvN_G%97`61A`&tso(U|a76K2(q76>_dP;B2S1da5nwZ}*cD<T#-$#}
z$M^CiuaQrHTHq_cR}~@mjAQ*m<e7Z>&a?Ria>)D~cfa-1EV98msqia_GO?91K09+|
zWZL~M_10I6tHFr76c9NC`*T9pw^(LWCW62iB7Q`i<hp0+LQ<CYqtw49(cYKL4~4l+
zn9ffBxC59jGB)aOvTPs(Az7*1*+7SIP)LS{+m`Y9UY1mH{R!nqHvAG_q;-zSd0M{|
z4u<vWUear5K2g^AG1+e%6F&QwX#(SY{<U3r4bGARjx}Ct%+loNp{Ku}T|?u;?&)@f
z_Ji|uO{TdzQV$P;{o0lSl?N9d6nrgo4STQ85&GsM;D%PrhZK)h^0n{O(C!vj&YK5|
zN=Kc{YtO{(M6U@<%&C`P61SfIwg%-bw+25;IUDUi@8IKW<mbKsbF3CIYNC<*{1gdt
zncJ{>4j3Zj5)B6&9oy$)%50zai4yh3-)Y~N@Xh09A8HPHx;=4RV32U_!oPY@dw`Z*
z<pzA0+ng~n^wR9H@CA==Ib42Qx?&@{fzkeNG>22f#z<?51t}L^eNbdH$MiV>Fnj<D
zZXFg5I(?Hk;f-DRVGeD`YEMcp<JY==*naPwK_jUi$ni9O0=AuEC5o(vK{vDns#%MX
z4$F0{p-Ndl7N+4l$Z?N|b>YXZRy~YXS~JTwG{fRD^@(zhIYx?JI_evI5;|G=dyJma
zis+-TX+Ed(dI4AV<C(W~n))WQF0D2tP4WUs#z4MJMYt?#vCF2u0vQHdbjw}jYF>JA
zyW9Aa$-bK62#=+k>W3n@K7*9T9CB_FUvxv*EndQPDzi7jwQ4dSG7P^!$VOk;8|#7}
zAIlR>Avjv(0S^g<Lk4Yj2R~cO$p)O$`0mp;qO2gMn+2E@)e?ftxbe@S6AF{XTOph?
zy%?;6(>Dp`yoFJs@ce9Vq+UoTN<V`H`V7S)m^p?cE{6#-p&~uq8*Iq&S4r;}1itLl
zvFsq9GOOAf{DUy|Cc)&MLwIQ8JjmXgwn;5q0g-Wb8zi-7)m+>Y(xciir~a2N#3@ff
zE^`x1BU*!{X1kbMKn6WD^ZjWyWPs(Sm_H6s7Aw8A@I$tQsA6)D#b9wE-ao6E6S*%x
zP$C5G6}5eXk_f=N*mRF&s@Fac^(E{6(8ebP*<>RR0x`$IYoIcFZRGZGx7nBJc8}{2
z$lNW&t)DTu&v;~g)8!>I<Dmo~`-QwQjZ+Rs0pN~lFj>U4NrLTqM2itnc{7?xc(W%)
z$ESWA$!_iZ5|ag5hPTS6J7`^D{pg)aoVt{xO&WxWrek#_wAe#}Mg6g1x|Yc(8*~IY
zle)UyweR-CeE132vO{$@Pz+ImGx19p8g`+e(<kB8Cx&}nV3HaZvGzwh%=%i{LPf6Y
zA8&w9-2TA=&U5QCNd`aPJm1&Y8xZjWnMDEFiz**ajX>S2M770S-qKH)-6YvwHf^nU
z<79$0_l%x7z#9toE`czPpfzJbi)+@>dq=Dp6Q1C>dK(twC3<!P87BJJwQC{AWX)_S
zbMkrpm&#;GP%|svh}Rv02iFwlBRS0GPbKH#jWo2#@^1){NYdEGSu+l@?Pl<Iu!P^r
zLJkU3@WkfgCwlu~ru^Oeo=^vuDAz?HlMn6?TCS`?I9f_7TAC{_-MdkJ@o+{@C_e9}
zb<JxZ=Hvl|bVW7Xc;Y|>E=i$@;O_&-dUC%0yA-RIEbDN{Ex)7l^!$^qXX!K$3s3Fg
zP$haOctfmt15&^{J?%1t6wBa%lujFvn2Vl0Jj-dr*H5ss<954kN{5W0K=LNV<HGHU
z)G<7{K_uSi0}2P_(lv|TXb1$lHO!ILKlln0{4XJ95&fDEB16x=(A={B%$JSF<uLB+
zt@8R~r#^8$HFhH-7YCk)+)UK^gzw(TRmXyI#(VMW`*nVN%5u6h$n*0=df62P<5T#?
z3c1M!tWKq1(SofwRNs0FMKhh7vL%Ct8XYXUzm!DYnoDrix;oZXYAtBNR0xLYaV<ss
z7ZMAP*d&^Lj@%#+8(Ji<M!m49a5Sng_ahtrFe{OLfkos;O$4^W32Zc409$J<Uo)Ft
zGozPhZ!<Vqd)qiW0@7AKoK4e$**SCiT!Eh=wqhaUGc4hUplZDg2HhQ!vJ*7-<injH
zn7eWjnLyaFFiS-8b0k+Ee&8fgtj!FP&)%o<U3j;vrSkq~VLd!Py+MzAOqiE1`OX^J
zvWwDEQQP*3)#o{l>@Tx3EL(rqivt#v#=&D(-mVD_sY^AK`2uGN<NeKEr^|41k>E;_
zQ&dzt#^a|<z6EEfa@UL_c%+NlaF!CVTI8*}h2AF@ExGUr;&g33Je&`ljJMP>+2(Sb
zQ}tk}daj8-78=jT%!y^^CX{HfTKDEe;Tb>W_<p<WX}QD-x%LT(2f>6cqR>TPm}&;^
z#^suCE>(IUV6rI|?|+&}q%Q8VfoWS%`P_h*$$I%2ULy^q5ZAH__1IAmG4IkO6Bd%H
zrUMVxHFNs}JrQ^|0V%?o0f&?nO|U_K2^c0}d1v!V_Pd^L8Vuw50^1)%=>{1Rb1e3k
z=}s!SaUBi%@KSJ?$$?3`le39%Xo@MajQ4q8?avMUIxjPZ+Suny%PBxr)G)R&b*T-c
zBhD<&QB#t2uZvFEh|TiL@$F7vWp-2lIQ#0}{sDbu71KQLSmWpjv(j3{BfK7MDK@0)
z$=uhA@iPj6gzn;x)tI89&vps1igVyD@i}lP4_xGPgV%8BA;0RJ>dnH7H#s<xSa$?U
zq&x<vK0CR}mz3V%^m$kqw1p9Tl?F6AO4Z?0(Gf?w@E?<ya<BK9unl>*o0h!luO5Q#
zG{5@bkQN(l=S67`ay-KwePiGY&X(=>TtmwaHyGX1<v)6*Z@(Yyc4SY*i><Ir@Vkz|
zSOj8-jqlLbb$)oHht)NiC0MEljVe+C&mQ6<C|+Ky9jp{-S9H}obUZq}fGMay^!y_s
zW$p_T<#r~?vpq2im@$l&75@?b?Idu9L4gB<WnB10CPG<rz+Q>Is5`a3N1Ng*v`pT|
zWZ92lY@H|iYRYxvEU%jQ^G6@O)<YCi(b5b$_Pib&8{ZkdS+G*?9JV6RCQ;FtbgmQ!
zkI(E}4|g~0V0~o_3NK785)KMXvMn-A4rWw4j<p86HB2L3Nf-nj>V%mEBwaUHpGPR%
zV=NVutf1ABpcL}l-@dt=A9Lh*0#lt!g7kdq-uctvZb6zmWF$Dra*Wj3hVmVA5#F&8
z2TWpc4Y$W|2lx|`SXn+8Ltn<?s?uJ5?@4t*L&Ruh<mGwb@8pbCOBPei+~%oVc#OX8
z7^Zpw5<r6-a{+UNC;@Odu%4#zO7~PZIAq?IM=Jk(k&MmNn=#!DHA6Xl<SQu0{82f!
zS9IOE)qC>m_IUDmx|tj`=7dL0{#^VZ@wz@){uEzyV!B(<r)Q7-N6YK&*Y|_uddOQb
z@3~w>d;zh_Pa~mIQHlF;P)Hd6dUp>@DR?~&iiT6;H}eJ=VK(XpB?q~|R&O-~wZx51
zQN4gcVud^<CLrZ1&$F;*jRDQ>aJ!%sv1s*9OpG;mIM<s%_r%i)T&d>+(pBA`Tk&-f
z-$bO-d=RP&dDXwm)IUWmLxbirUhNd#k6ia5dhF|#^vD7?%+5C-Cza;U8Qm{BpDpC)
z5J8x_SCqAKnduuhZ7Z9Zs4T~M97>duZHP>I*+0urW-u*KhdnA3&zBW?=lX1_oCxly
z0ShZ8PBr&>(goLJB)J^w_}MW`Q?pCQIjsf$?Gfge2V8#0Te*~;U*t46acjr;6CrdJ
zMb~WJww69HaLpL$P0sGkzt;Hg<*o)7y=hw${f={FLTj8*AD6jM(9ue)qjOJ1$gqCU
zD@^I-b`3Snt4?q<E8EB7^De4=iOf&H2QKn%4^bk=PVv+b262@ay8Z72?%T?5!0ptK
zB6YdWtY@yGS&@1<Ti>7z*L0Kr2+>k;u~yH-i~AMVlZD)fydsq`5+S`<%uYQf>VvLX
z_Ij(cWm^@}>H5X*0}nY;s1z5ZiEYvj&!@KNIkj~Q2^P8?DUqy-8%z~4$|$8oEpV4l
z-h5qK?DD)JJN>o$MSDrh+n;dmTl)(P3-@*!ocY}J$>q7j&a^J#QNBSs`#kr7l<l}e
z&yKJ%Rso%TvuqRnJ$Zi={oPzp^z*oXy!+3+zz@~g-q$_XlppnW!!)UdQ~A>3Pe=g}
z@h$y0#@d;flw})pgL|X!b1v<oTZ^qXABk}~LMEA@xN^57zJXwZ%2fyj&pAO2+)WtY
zJKc;w>V%CE(s7uI6S{^%fSta^3o&yS2fD|P73C?LN%C`QFeUNN5;mU>R}lE?;9qaX
z+YY!69v9(xa`ahUwCpw>Yx^uje$u;}ShWSS-b64YMSqZx0`VbQP&Vj!FiG%dhnX+-
zpNpS=uc`>#p1TjpCwWW?1{TVy!o_i|+Pt#_QGUsXabM8HPtcL=@(>&eC*6A{1{%us
zGC+7Q#y1NkUY=TVNND;KOckcqv2e1{&diB_T-)rgIXkyI6Z_7Sp`Z-uBGN`xg{W6>
zv2u%LdQ8}Q2B*NW-`_<{|IA&E;cpK9-e4DF_W99lR7lF%t3(ODA1O>7Y&vO_6TE5E
zpHc@-o$Vq<Y%p0E*sBxNfo-}H?!Ex^aDI*)nP48-m#8l>GC!E{)K%;3(Y1Yc#gUxx
zgL+A4kJ|9cU|n@1=^(04n!J9-&PSn4X3ebj{^7?Au*~nlGC$M0n}vq)lh@nUTstdB
zmmR*Bu4v+9+vlr*&hhs^#W@>oz~8@DfDQJ2uXsk->@gp|!R)xT-N1a7nb+H`;V_q0
z;3DD6r8V+fhttaim7NEnj<tU6zlUiT(=#zCEDaHuUBeZZg-y0k4Yg1p=&ZX+Xma;W
zCR2Yteyzi=(mU?%X@&y7mn+#gJXHRryyX(GqXfm37Uc^xxDAApjR`#@7$xV=5-vY5
zZU-BLtvrT74MaO7Zdz`pAeOL4ZkW4?Z!*j16tMUu|0iPk4cYKCv6`5?klzgDLDInt
zm6-6LnmDx_w(@K^1U@K-L|%r7>GH$%&i-ot8f3Xp{&FoQX&N0N#m;7hBzyd`L2L-_
z0oLT0Ks3%(T1bi8<jxe_NJ5I`JYRrYP!vwiY@<t(Qd(U>OO}-mhe3JT)4EbzrA)1A
zwfFl`RPO7u?SfWn{yIswi<q3kpT++n(F}K0+l-soPq*2f%)2Dg?q;W7?aVk!So_s|
zT5r13OMWl4`-yV6Sgu+z|L(zVD&+m@?jDCyu%z%4$NrY<MTG*giNWjZ1CJ9~x%6+%
znh^E!v&5&hrsV_!W<!Vhe0wMpvnh(^K@XqG$dEsBJWPDWPvg=g=h03a7}>!Hr1dVm
z?bS+o4n{4Sr40&;H(nX|eO^Ay*(KI4+Tx0i0TomDKKhsQccu4sQ{z>mTaQvEAGvGa
zq@Ov#E)e-ZE27EUqh8Vf)WV6Q)tiGZK=6tYPeCA^0@Q-+Dw}Cs5@cykkpi8Mf8@hN
zexj&7Gks~h-5F?pts&GoSDGy}pKw#~n~W~7Q+&R6e<K`O92}l*TjbbZtfxf|gk5;$
zoSf5Z*2-Ns@#m{k3P~v26@!81SzGvk2@`?K3aT;7j(0xEZa<)3YP<PL%q(C%Y|l}<
zptJc9B_GMiyB}WT$Cry~W?lFl(H~!O_#H#L65Y#gc&`S)29i#R0a25->=L}_#hK&#
zw9UAHKvx$&G@xMr(LRArXXhBnB9PxGaoi2Fq%LHjmBRnC6}%#EfAI80mqr6#!{o9w
zyEeRI%|l$8*(0|jrwr%rt)U%*pH%MQ*ax-IM)*=nm!h-|(O$g>oqvXB`rg%&iQyc)
zG2>%<8ZZCtaN=xs;97r<eDR>7A`?w1ynvG9f|dkap_kB+ofb%jPx=m?Shfhw_YQ~3
zu&v<Ef}HCz!kxZ~V#`|r1!|pr2LxI>Dq-R0T>f7eoSq4o<SFwu>J85B$p2}3wiPIC
z$PhLSthF+~soxjK(3QsAvbN0)#&f7B!nL_t8*`n02Xug>QN`$1&N1P#8lz#xOZ0FZ
z&(Ty0L4i>K$KLqGOB<j&+zs7f`5FmBnVm9Z#QMvcY}7#t_(Vu<GvU<MVv~Ef|Hj+3
zh?<xq>Z6p%;wt%JxJcLQBH5JZsAwS&GhI6$@T42)_CGAER;t=}V;${7=rXmrQtdZ+
z9fS+AbED<?{0roZCvPb3p^-ZX7ep;nO90l!HuyY}6FICjjJ&My$J|dmX055^6c8CT
zM|v!o3tQBG66I|YntFGL^N~d4)#*q(PX_ySW5VK}+`8~nUvp__y5XiA+2(Z7N7@0t
z5K%!eVw%I?`)=^X^wNZP{>cCG@OpUlgYfFxJ8FetL7#-n^ZL~jr4j&B@)4qd636k0
zX?KOMeSSL(u3arq3$?Ko&Gzh})<oY!4)0R{SLpzFG>8&;Aj3OvBrYJOX}HE6oZONo
z2b=1EhA66&bK{j&dg&oY@bJ(EPLn0@f%Wf>Ks#_9oae&ln;{Rx8sS}FI{4lKPDTKm
zGPmqK{kc)!)oOYXagl>)$WzVuwjv<$_7689;O+J%!Bp_ns)XBOHV+g%Lu8IO*<Z(F
zblC2Q_yVLgXaXjagiF!4w(5*o8p$7#L{t}n>ed8x9u(MS<->ygWWG($V{y_EGFigX
zZ{u{VgaIsU(`|KoSs${L{93c$?2HL-a%Qc(<5($A3(P6ah>7VB_l!WRZ})TO2y{mk
zVDq%01yG$KK>bKhPBq7ui6;D15X^m#Z1<2qA~gdxW#6I^gZVcGMYpWCY8Oof>_YZ)
zEbc`=KJM|YM$j6dtl0v+i7!yHiK6%t@LCMp@}06lFjP|MRHr0Df~2pOiP<bLbrfWt
zMxj)K`GZ2)*RvsgF8ct2Noq#mR*YOd21@np>XXS!3Cc|!$KIcRJbC6Tyts9x!$5r+
zr|;=^AJm5+*(x(xFTWYUtnR78h;<)isza_nBqoOd)7N!B>AKo?lu6YLg2^;ROGu#W
zDYM#OSa~D0bCnC=m#piA`EDKsuw?f_LC=J=&2ic#1?ZPfc}j!%ok289%GK(fv)Y#L
zCZN9Tf(<QH<eV5ZP)x8Jg!)NmDAK=w3{Sl2+9RX3_R7Tffp5Now;8nzEbLM0D>Kgj
zHUGRoO<e6O|8V3)sRvyDDF88AATcZFrP~(U>dR7#U2{+mLyXvy0Du37Oo9GaLdv!l
z!2_BF7+_xROJKcQTW(~Z>@I&LpJm=oJd?_m{yvE|=uO`NkA)8JZpdt<4llydn*<=s
z?u4F$2EvWd<z7c(edfz&Y9{$=_!8QRJUm)#%a7>o?uJqgg(q19c&M*j6ZkD~1}kd%
zBR~`D;s4n`&7w2maQh>{yidMTOU^uXTveGDlUl0fj@Jtpx=uS<a$V!j-!V^klR8J4
z=C0xzsrLZHrfqJ)Wk1w;JQ`sq%{$-s0e;=r!{3w(G{XE{^+`IEDlzI|>X)?W{EK)^
zhX#y*_broS+P&12qG2wZp=OfOy!14RRr;Z!-kNXUe-+4OZ<wFvDUZ9MK&CP5<DG{!
zzfF<mYF=ixb6*8yZ@~LzvKjd<$04T1>*U$kM}X~t9kV!g>E%_q5fny=u)VH1#N|Pl
z(<28!K>4RC4LlZ2K%I~h&;@=>Ax2!syT6C>jSJJ?u^$s|afaT~xvCnkyln@o%(o&q
zCM?&{pML~*SNjM5l;yLO4~G<g!dChfesYuZ%{oA(IpB{QH=Zo_mac%sVzl!!&Cy=y
zqq9y_oh~-HCy&Kg13lU%#L7QVvRH+(7vM~U0IN^wbXQQ=r+JyxY1GsdZ8L4lxeT})
zxjqLL4ulC!ay<^bz$ePLk;m}OO+J}gkq1R6^2$UMnul&G%=f}StKGGNaj@<*9IC)U
z$3JtPR64``mTO_myl8PMET98CX%dHuel8^oEb5s6qH;samn?T)o&g@8=_~;2#5fi}
ziy+3AxLH=%M3H}!h87X|`Fu1__z8e<MX5_Wmm^C6IG>7rcW0WPlO61>3^RiSu?)n^
zx%#!CgWY@#pjGT3-2tbKZl!v{COA}s$68X5LFz_%Im%CP*Yx!XrA<#i8zd1*bW1uj
zqE^yXyiLlU$~0fEh?P3}bFnOu+x$a!jqHJ>FCt*`e%sa2P2DtYiu4r!IlZ`l*BjV=
zKN73PwZq-tORS!-?i1*tWX-r*wQE*eF>hkaTKXN{a00ReQ;LT1(i%7dXl_?9aWKlj
z39xHD$x}h?IYFqEyflXw2MFTj=`#?9qbsK`ypc7iLWvTnH3ycbf;<LyTB8*eN~KH&
zWAIS%bH%31bANW5pQIS*<r)X+HB58)X|Um%UL`1X2VsVBx3TGCU~TId@*HF0vi?~L
zn@)^g(8j}tU11;99nJExAY39pk!){;3|ZZ05rU4BpMq!NMoi%3c-VPDReI1Tjo74g
z&xQ#nmY`k?mUw-sSK`5G6MhA<ydRKVTtYfTzFb-76uGMbOddO3nF7kRCl?h$6?*0l
zH8yWx%Clf{EHlMU#hi~9vSHa|vftI5XsI<MFeD<UCFk&gTb)@z4sRl&5O1;cFuyB9
zf3J#qD@GZo=r(S)C<)GR%53wN=8I#eNOFw?E{8+2+QTn+qea^GYMjyzDJohRQ@Ai?
zH;@OuUi+Z~2si33KS!N^n4!sE+)#oU45S+j(~N(d^%Q?-md)58_Sbz1wORLL3%xPS
zl}zyesmfX|SXYq_ugA2VyapSc3^&Fv#GP+~5~nMjS88!W9Yxs(T=fs}f0H1TI@T9-
z0&b06tsIYNhxo09naoF}Tn5=+u5Q8|#A!Vw-<&0!xa58+yem<P^OVDy2jWRKU~!@>
zY5t^au$=44olm$RS<G&O2iQ{8_COo{XMBH!^PkALa9KC=P`ieyCXFM|R_%mzL(0nb
zCaFf>6(7NHdth9&j>Nk)G)0!#Dp^7CpP@Dx(h>8LoMQWyf78%BtBzCz`H)=Pppi*1
zfsa|ecSPQTcib7xU}#iA8u-r+wse&SwCxQH;=4IN;_<U392b_H;FempTOeOk$T^AB
zXxmf_2B1mzGo+{@!o&LHxe66I19t;gc2dILl*T|g@^kS+{we)EQFfY`TQ@<?Zr)8a
z&Ta&d&Z2riYa1H{z_V&~Klc!2vT2KKC@#4gpJn!FM23Bsb|SYK>iX&4V(36R$-0dj
z*3xsKdbDGYXSdAirC$L>czNJa5$%_?vkXeI`W)pYHyE!-6xzf6T}@#oHW{F%Ew-1l
z(u>PX>z&1dZQ-Oy-X(agsY7v0*x_s0fcg~iqgrX3{gL}_4Vq}|K~?BYMApR0J^Y+1
zcGGI7Bio`j%bNHOxM58y333k=E)pl~2yR={95u(ZsMyBj(4&O{y9t~76qRhV`OT+b
zXUI9MXA(OI1zYl-@Sg-bEP&$_lP>(gE-@KrFnmhh?2vaTB<iuHiNYN6WfQ$gHNis@
zRw(K`dL=k%NI_7+lIWc^R~0jOW7k#x%T0zG&BE^ypC3uiyQo!MW~^NKVryAc-k30@
zS2)t_u`37T2G}A_pMNF{W&c^IEARMsimlfAt810_G+d>>o_!?9lm<YFkh@tWNI%G1
z9ZN8Nkv^m$m<9i)T+3IiriL}q3rgU9)d;9|ciGkrxw2;717|c$ZcI@r)!`2ab|#o~
zY)BIS38H^GfF<@On4k~Q6^bU`<OK<t$wxVeBgCU7>4cbo8*_Q-Dh`mFd?9GNC?N55
zbHcH6mnpZ)aHRmi>h#78ENDHzhd(1S6^R9F7!5%&CAd!YoR*pI)Nq^lsDACuEbZtj
z+lHnHe(}V^29rsXv1Pb4W|0pUx$l8-o??lHiEG12o}&@mds&ZYcct@SK5D+pAqZ78
zafP2J0%}x;nZKab(5%3w(>ugJjydQ7BEIDM(L-UDo!${;Z5BWI_MFhGdx<=~`41!>
zz8a1pC@Ky;gJyXu+?!NIi#1I)o<iw^RRfqaw$D-wAC$rlKNPX4@N-m#F85o9Lt|*1
zsbV3e9CoTQ@WGJ|f``Bz&2I0Ym_&51deF#jTHaXzD|Q06xV|a4;aN&k1a3&c-7zLY
zYVV9!=Q;ZK0P_jQdYNd!VXO_E=_zPI|Ae*yA$bC4f@L4)@l>H5P@YiV5any+t1_)x
z8iOK(&S(U*s!b8)w=2xaz2L7?e=R>2YukhObG3g$`=+cyo|a%q5YofwPa$Oa`&X!y
zt*x03m&H!_E4@~%y#Zc>$puM52RCfp+qa~1B)|<*R5nwe!|y{BzO*1OXl9Z72{*~H
zJI2l!O7qM4P;Tfo##Ko*G==f+A&L&@YChmDt<epAA3Qg9H4ln<#022kqTWq>p$vZT
z54263<YN_X5!_Nk&&Q^lan}Y33uq-DZa|u^($55KM!7hqMlmT2w-L8|P#W<uw(`Ol
z=Eq=bZiayR;b$pd_*<~YHGcMo4nH#v&cO~M2L{}&)0Fh$0i9aa@5D@!H~D?a7x^Bj
z5*u*4uD%|>PTFAKlNPc4foh>K`zZ^tr<&D4Q+Fb4Z0g22AB^bu<;dTnW}NLkNes-Y
z&e{4dN(@S+asK|qT?2IM09zXMfEs9!7K$M`_=DWTQ+S_$qKk||@SOS4dG||4RnQi=
zDM@&cD%9l{M&EP&&{?yFkr(x=XCX5Hdgtx%oA+rSnxA7YrM1VZz@5_zNrrJP&u%(A
z^y%y>+-ps?$9sp#pQuGQ{Jal<9mI6jd%*aU_kn+c)NJ-S+wYi%#0PSGyeHPvKIe&I
z>O&DaW@k%YLC?r|p;3j!3)q7>M#m>I*8Bl$@YmJFt8#{&F!L4QxQIXz@TsTO@K@q)
z)R26NkP3EwbYem7ba&ZZf-&C~z}}v$d3{twKPD&iMc{2ABk3zQX~gEWn9P7qlJ@qF
z+mj2sw9d28+Uwr+b^0tic@hejrggAl`(Uq;IdJe0J&bRmbP?wAy21wktPEFAw4?Lt
z>K3%xU{rizgckQuAe|QdYMH}(2rk+2{#p^ZWISjSyAVK<W*3DQD1G3-glkUL6AzQ}
zAS2SOQ2Df!2O91}YEAy9iu^q0MX3A+5B!|DR|vw!Ea*Ei*<p{TS@M6LQ+9?-U^}gO
zKqUl>v(x$&dKnE|`eUXVa0Xh?>$cWhI;*Xl`xU}Q9f7YBGIcuXG`!`94*3*D-ktD?
z(mq|xFzCXc{QfbK!;cp}*Lk0?4*=fWgfGyu_Nfj4690?5HxGyU|Nh2HDq6&dD9Sdn
z3z40O7)!#~mn=is%36vvB_%3`v5T@~mwn4<kr+jhHEptFt!#zjK2N3h`~CTTzMtRy
z{r#@rKllAd*VQ#<UdwYi&vPE<aUQ1_Atze{9XG(e3-#(Qbc&byY;S`2#TB7s$w11_
z^vbe3j-qyE6Hw|mbCO?JxT6uKyQmoMo_1ZvYg#|qR&LOh|HczXQ#ZK;on_R66e%kv
zfBg=@VE0hsNe`5R4SR`7-u3}yVwWGFSP3m;M0;=t@<au4QBgM6wJklgCbPOVyg?4>
z^aHQo^Jn_&J?E96x63~5C+Vf{f|lQOnmcojy{;%sh8V0IU}Fo=R$C{!XMQIg^A2bq
z7(lT6cdpKV0+d+K$RQ`4Ils)MqgXj`VTENOsr}A>m@^lA5Z{ruj0e0Xg*9GUk4K;T
z^wdNY4i(RBikz=@Y{FO)$oQDeIxm)vC`{~+3YdU^iW9=`a)iTzpEw?Qcy|$mgf9u^
zqxb6}q0oW!NMmp3>|pYF4lb4>(z;)~8_~LDs-v$e5XwRCGWTNM?+KiV1QbT#?$d3+
z8W0oHNAIQZ|Khz!c_`$C_Fk^21l)Q2=jXa*Xga(Q&-V#H(~pvK(d@5l&z-ikyUfxT
zNF`bO50b58-a}*Y2?#Zcp(3>H%`~uAs=V%CL{K>-G;Da(B>wL0*)h>?fzO?hk2QD#
z%<gfpg&9cXzO&r@HDL%2-CahZZB)V)@QG&MmARTOLM-eKI@P6-yoVD8-k<_ucoa(W
znfp*69V2)t*Y^+ihV>S0gd`Vm%tsnbG6ytvSUV!Eebj%6FoINO*>!fGEbB0tL%lDg
zPLg-V95;N2!mE#bbBLh=K~Xcrwt3gaq&L!g(m$^99<G)<J^HFC|DjYN$Gw~(GnT{o
z=3hHnLv~g`)v1S@HtyZ_cVrWbrohiF3ZF|aZ-%NMC{Io7D73BXuSS^h*>95*bK1}e
z#M)#Q;31Qve%}l0mb}gl!#?!wdX;P18fg2mtHAp8?8hKYye+CPRnvE^gRoA-a(P6i
zi0u|)hz&x!<I+BCf3E)wFjAhI_PpwC9<g}g%>Sk~o3yWeiE&-i=&NU@O6r$3Z1u9W
zbhs`pWRLoWXC|k$n!R(3(nH1hB_RF%Q0X0TjdIWV1+MU8GDm={({J+t_1AdgT>*3b
z8lG-+?)$oJipNlnzh)58eNZ8;bzxv?C-O%FCw7$O+#&?NQ%OVG@xs{(-b1<y5Qe<z
zGD>Xd@Gb&~O-^p|TSx(u!khLI=Od?e80Qlv=I74ow^j_@8UG~jJ1X+c%0+C!%^&nn
zt(;~U6vp3o7DzTxM&`F$ex1>qCO39D-%bcJL21{$GqZVR$6r1|s#V|EBdMcHi=R)6
zKhjN6e&gBo0}!TLGIIeE2f#q}o$-{Wr6QDik}lX4;Ks`Shi+i`_k&$?+l(ynL$KPH
zJo|;f{#(I^AFdtlcH(8vaWmC64%H;o06W2EVd?sTx1acK)W`D?gX6`sg+ENg@~g=^
z80Zc;GW|2!lehsZ;2`P0P4;YHpUi6ql<d{kS;&u9DkH`0y{E9ld=L4svnA97*MbpR
z51@xZda08~P^gIaXvb~!jR$TxCNxC6=&)$Gx##mh9yJlihuc007Ttp*Gz+zpwq6EA
zNr5PAo<6JdK6@LzS^hUb4WF@f=1AJ2!u7oi##EC>Ph+cRGu)r373+!YzeRoTA}SPg
z?ydiD2B*|(4k^!9-!bDmkutZBz2y(S)M)nn%y~uN4gsYrR!$S6xk4RsRF1h8PfO~|
z=+;TNcC+Qnj57r%e_|_UniP(C)hkXi!+5wXIU5tyMqR;BdaD_4DV|MX2$wX$Quwy!
zy4V=#<ek`a*Y#jZyw5k2nBbAQE0V3V&rr9&+SD&VK$LsQuU!FiD9^BvP!Jic+qGSI
z!nRg~i%IPEdB80dHdLE>8IWGZTA9S#KG8C?Y9*?;;`@!h#*Q0><j|H);(tW5i=4>+
zeiI50fTWV5+FHC|cprb>9AisJmR8X=3)LX(aTU+Xey7&h#noEz&YRRkN`?|MAM=-I
zU#c&*sKk=eVe5H|pA<NMcK&_HE{{`IWk)(7=_>JRICQdWxI?N{@#C#swWTB>+n>Yn
z{aGm*J}EX_FTG28U2-o^+>CB~zHxqMRfGhzB3GsG2dp!;Q2yWJYUR1f5(02%g<SFR
z*@roOqoWjDNMh6r3V=;p$0VJk%11qm5;2VWG7lnG)_yU3xe2t_C3nDCV!7A+70Ru}
zKEZO|$;^|ZHzDj_$gI+u*#i8YrkmiJ*QeJ9rxz#C;s8gsZn)J-_v#zAfKQ@yh+93R
z8$gcFj(G!VC;L<L^z#qK#~NkodOCm1v@z<)%*Ii!T}qEVNi~dqVPf(IXnjevi@=vm
z2E@rbI`1ejs$$%4R7IbR`P8nWJY@e3##~NrD3OmGoP0AQI3s-=`be93UboNk_n%Mj
zcuSfGoGCSG=Iq)B%i%d&oXDH!@~eM_<<FJydE@mK^}Sj4k~vK1?X@)~_7HY2#!SRF
z?bl?Sx0tt?u&lkuB^RIY)4W4|doGA5bTyq@77?2E1_a(O{*Arpe7;mP_F142Sn)gJ
zKZVy8#%?Wr$Jakg3RV`LNfItGBH6GfQ}giJpSW6!AtigX=`A$sDYYL5{I&G>lyu|t
z#5b$a;b8u|v3xUamu~6gTc+$dJ7N!zSz%nwT+E@WAbRe^fQ~SRYZ*3<5mvL$V;l6z
zg=Cdhp&&ne)$MsF6R;?GS1Z@h+=lGOR=g}#nSH>uNBsfvCEdVy^w50`L^fslFyPDj
zfFa+3RMyTXS>*FAR7E5Hq~Z!bR-~u3cUQFbJgTbZE983>oj;UF9m=uF16gf0YycmN
z@zARSga(`yjss6Q3Fv^B6#k;2y?}MpkE#KZju)wrx+QAMl-?N0K%b?U6tL5>$I0T7
zxOO7I^(CDJTiyT+)g5Y2FvL-`j%BClLKa@=VUCExyXebVK_E~4zBAF{qHI|Z;fv6@
z{npJgPj!LSL#2AeaN%Xr25w4z;o~HGW@moK32E!kXO<XXrvgN<_sQ4u*uL}I<?A*W
z&kJ#jg^I{!wdIp;k-jTyf;ngsBXBOVmM&A>;Kxb{dX$AlV+#{QLoXZidsH7|6Li#A
zzVyYn>Sq2l;G7pK5*^77x13NQEaALH<C|Y?7uNprGVQRqcPQ|-w&up};hRNNpV$xM
zi9up~9kWV=z_3I~C#(gw37flr+Y_CB>v!$WM2iS#bAU=p=S*FMGXu6x1uQDv4O(<N
z`TR&m+3fu7VMFn&$AiL*M&}>f=eXI`CZ)#cQG{Z8Hv_dW<lInT)T`JZM^+|yX57_n
zxrgk@{N=hT%p-B1Cljq2O70~X1l#j8b{PZ{wP9ZI;M^9gpumKd7ZyN6Xf90rDflo%
zc=yrx>$vx$u}dUc7pg(j@#*1|QCDE~^l6WNm$Jp42#9(S^~Gqz-IK~S`fYkVMi^~&
z+iDr3X6!Uxas-^J+)vcaeA<pdZ!_wnTVn9+*2x_LFZr0VTytGu{v<@{Gl~nSLdGF>
z;JdfKH6aJ!Wo}c&7x|mgw#X+}3DT#PSYzM1bmqmkmuI`&h?f;gJTe@BJ0#F)&)bwf
zuDGYw=j-fL$5X?e+ZZp>QHtQ4(4KJ!NOQ$Q11I(p@VOlK_zIl+gEaG>31}^k9MfhM
zT8ftp$)(AAcJht5MBcMcx}vl3FPk@wSojX)E<`4=s(kJA-g{Ke=^0yWd{RMZq5U0^
zu2-3EHUvu?1?QN%y=Z76F}6@>HsBHc-bzp3$!zLJT;u5AI>Ljo&-J60<|CxbXOF6j
zHkORH2IvK9`kn-$-P!_a6Xj|AqH0gp!B#Y%&b{8*tr<3lj=!S>TFmFPuFF5D7ytDv
zJ$Ck)>6^Q)xWFX<2-}7+HI(e=qMY@{%G1(hGUe|0DVWUmE9-WMqm7vP?-M<$b&fB#
z(VR7sI?kSUe`5xK{cC8L_)^<0$ybQ9i&yhh@?~xTbnOC)KwH)tvul%U(^;-uI22YN
zUVo>BcZ-FenR$E_)s#%?Xyp@f%~@=h*51~n75d~=%;dAK(Z(+D2CLi@2?ZH3YWdd+
z24eW4gPnkr&~792FvEW=-1yx^t=)us*J@&qbzJuvl*{~>C1OV}^Ha@e*fmG+k~twB
z?{{Fwe2y6|Yq7+#BUX}dQ)TJ<rg<U%yLq<BCq`HJM7Vv<QH2K=jy$EN4CVy6+M0S$
z=kW1kx)TW57(7k>keHpJECu+T4lv`IyL=XTweqmzKFT>b)4Q&u!i6N`hN{+QbL@?z
zOi~jtmvT@3{Ant_Mqr(p_+Ei9bM^<lQjlXhJ$yUoP&w>2xgGPPm-BG(i_`A2?5VB1
z+8<MqUF968%F7wQXH#mRS&?9)`Eob{C%KrpLwIJ9wW-UB%3!*rs7~47uXfQkt!-$b
z#QDqnhYwF~`brksTzG90W(GQ5(0|p9-$|QuST$(q(|Vqt?1wJ_|5@pukPplcftT^{
zyoF4h1jlz^D*CV&pi1{BIgB&Lq4w;oSB5B7Wk#oO>E~iii3(Ofnm+T{k>n#e#gBR&
zTsocy;7^#&W|#1jC9+HG$n2SzB8)GU0Ur`qaI`b~P%DtQom}(FVwziw=Z$P_q?5bp
zN%J|FEac|g!MU=8`A-j3c|9g6Q@^x#VV&?BOeJvy6$QWXPdI5|@BP+BGIxh^+L{+C
z(j#ddAk8dvD6LLh`f<zjc4x9eM^zdX_sWd=ejHMzy<dx;OK={}*C^H!@vST7L_Xr_
z4F!CbVpDiEysHUoYJYZBPF_iU3}`uo?+>DP`Wh_~@jmK8E5Gff8Su7>P4Q>_05R1M
zarFR3AJ!ZDj4yRoateT~VaGc|K;EoA(vwMLC99hB^rW`xR{I;r6oM<JlGgFAa0~9a
zk@&LUV+#zvHP=4fR`ssyS=QM+0i&`bDaw->>nHH}hx_oXrmdIx3R*bG-#gj!sQew%
zSXRoLQ;)ZbmEemzoR5ui*eWfPLNQ&?gtf6GDJ+0|{8fA|@*vNB&}_ZX$z7EahBolV
z$U=*>xf@giVFl|)_+?h!+N^$+jrvNn#;51X4prO|CzJ}A2;s%%b23}43EOp!jVTA-
z64-3iGfBxiBX0s3o~46U53t;}o9Utoz}UV3mn%g1kS^mt`G2Yb0J(hJ^;#`YxBt*1
zz2W;fihxlj1g0x&hdfE!Ow)J^Og?74d<x$Ac+UO2`s+KyJIIALy;_P|45K1?p%Mf;
z7hM4SfxY3c--x@03)bGmilgKNg<=VHIZ0!{>;EjtO@4T0BqLT{j)w^W=G7Q#e-T7f
z^5%I}jxHF<e!lE1!>0=s1KNOEn`Lb;2~Ke=rP7Rv;F{E%-us9)a<qF!vypY%=W9tC
z@?&^{AC|^DvM`~&F_Jg=%OWIflU|W4qr#`A@MB$OkSAUgdMT_)-QBV>?SibBoA%jm
zM+w#1r?La`X*25M=1S|+gX89In+Y&mUNkE<O3A={LZ0_@mWXZp#LZWRuSV6`o6dec
z*oKdXI`JnsHM2qYcIjo2Q7lbpP}5<hBcu!2*hsvRY7yr2gm^MGx43KJ<U3=G#iIU}
z=%2a#^I1O&YsGIT_wpUfJsShhI%+D;kyTnWm!`aVrpgE6^_sjkM2oxiIduw;jVQZI
zrq4Sgz-+b!PwA_W^B$^H$}etO@^5p#rtEM(pkt|h_{yyvfkWD(LhV*XCUq{2UEzE3
z19;a#&4cASNbg|)Wg^{qZh;tXu-|_XnE^&a8F<IFcJk<hYr0%-!WcDnlO{K-st(su
zAdNnWT?5tw@#i>Q`qlw%2;~#fIgt);886)CbK+d(0{jEEv{!}m{SsF(0Gn%Q<Pd_j
zCRaCBD9W_wz0ltLElz~Ku~t`t%~-hIe{*RqM&gsO9W{o^K;hGRkz+1|+`vBiEZXFj
z<TiiH{ph+!xxrxN6qm>!IWo+$0%@uqGY2p7%jc^g($GfsG670)$$fZ*8n3>I*A?5A
z2ORdRlV96HU4X)vEW_6MomT{kLvrXo`FFfr`-34dkOvX9)~*n>mfV<=b?$gyKfW?d
z5w|Y1#J5$M%Wu5?7n<qYkV=)pJ^FQLG@h!ybe{tHQJalQ&yP9Y=RQpyq=bm^>1I8k
z^<g**B7}OwmF+0Qw+){DHqex}240Qhg4<!>sUv7Fo<M^I9?wv4SlBe*DWH4wAYv16
zV<7B^K2bV9lvp#W05wtG4Py|$Dy;O;1o^M$-X<?=Y9lz(D$Y8=v8tMiBJhk4&jc6+
zw!@s?)@n%GGvKP&-zdbz=nA(oyAt~ZirCg8J}Z}Q^~E)`IG}4;NWO~XJPt5nvB#V0
zs_6~W?g!I9fD+=HGr(Lxjh{q5MrcPA0_&(s_<+3KqhJEnhLz+%kr+IWX2TN;1!%60
z=B8H2T<q)_&EGt4q2$rG9`XqhkWUD{$G!;)BKE@rr9XZ;z#U-*Pf{PE{N<63sO=^F
zE%O$>8$1neSV7het~LS}>0xKQijdLLe*Ab3k8PM<+|oZ;S!w_;Fk_C#&=aBiEu}#u
zb-hgsG|VK}0!u`)7AS=se9FFlNs`9z&V1a8a5L0LstEN#3KTb*W={mWQwNCQ6U5K~
zn$y0(S~!L#%Y6t}0K5!@+LkE2B-xiTZ_hX&5OZ;F+4vU#!aM>OW{Un49qss4bo5-@
zdJ))5<9EWuim&WG+nCIBAAqe&!>3TWSWt;d>rOiaLJV$_Ya*%u;E((J2gGuKe`;KR
zBxr`S*;&{4m7zuJ*XMb77u0cyLVtwoh4Ze;6@6Y|s0NcIFbFE5I)UAL4)|w!(<fhL
zMIs1r@_sQ&t(9e#LnQi+>{h^Vc-cF-GiUKhF$_RwuBo`fSYC-xNIYueGT!~tCg7_E
zlo4hkG-VDnerkMCBgyq|?R?O{bKOTU&GoHPmsI7^UeJK@N8!b_G>mjgFcF{B>uF&I
zB49s<@G<IwO@XH4Q__2_Lhs934~;##yxCgLO1lA$h8`He3BG>Niy2yqEY<1a`w5jY
zleBlKo5osOptWjWleYF-C=7C!o3DnV?I>D6FKXZT7ojqJLp;W;|3%8LLO>8Y$O~Ft
zLeh-YhP9mXKBs=Bz$tQK*c%3=7ePnC`IC_s0-+(+1b{X^U8}?&`KAEW`l|||;svx{
zfXMTqK-)TMr~-<JDm^<)Z2So|-}}R?-;r`YKD~Jw;|-v^w1lw=l42UOwf_c6+;A~q
z;M{P>6Rvm<ehMmZ?W-)(K7YWi`^9em0Vdb>%<B#v>DtT(hLMUUD$9e4C}-@eJpo@1
zqE4(4g`q!akG*8n5`&@ha%iQdX@gOGUdiIx3GBnj3|rW!$6&bEt7{(y+wrR~^H|JA
zVjKn*^ZtA5txUje=icit4|pHqyzbKLiA;1W4z-5f!0d#(hk(9tXbe>uPPPZ>6yP3A
z0{^(V3Ax5{BMT@3?zHmOJKY*BXykT<)9;j;(Ufmny0*R}&IISP;0Itn;<ybRa<AqO
z&85sVSAznhXO+$k#VM_*AAvBuLKIXD*#mVsE(qjqHrA`)*M1HOx7Uzwb|XC+>6CM9
zWNiPz=V0_y85BM9VB(P+zR;j+0msi)-)!%;`{f8f3nP~;!UXp~dqx+4rwXF-U4U#C
z%RF&yM||P>fP0_7F#NT^?rniJw~Ob0P^6c$Jzvra?<HF%7-oc-fz*XwGwzOIe3r_O
zFX~Ue;TKMm@g_ykjky7U&wGOdxvjDt;;#%XA=;Y&_TZ_hS-}5nGkrWpeW}VFY$LrJ
z_XHe+fA^xQ5#*1kK>Qza#_`gjeTWa%Wc%*?&so!NfrOi*=SDiy!+TKYWA>);&(mYZ
zO^$@VOxKMZr!ELDTH=R(4aCAXbOVVzDwk^kG_*gJK|*b>K(6v#j9^EeuaGd?d_v>R
zHLP2S^)U7PGBYBIcVJ;KZMBNbydEHmF{_58;3f#SEM#M5Xn~%d2)pj>SAs9&Rbg0L
zR=k##zEF&Uxg!sKq`GWvow%Sfq8Z=R>+?JXpX03)xCq70`I^^v&dszRv4mt)OjIG9
zho^^=lz~0p?33-EO?z)3*Rin01TXkb7kg8R=_vb0==b~3CU6#SI(IsQY~mH4LaL$8
zDI$@{ko=Q2ca%ZS(+}cL<D|NTYJT$8PWEzYXNO`3-+t(CID5?(cRWY8xZwG#98w|X
zQPrs#m9BZIb3fxqg(%CR@Kh!$phF(=;5P$A`y4cmzy<(C5L;eGzDzpeb}&8V>i@f@
z$Bf3%-e{P#5R*OrB{R`ul*({=vQJJlcNF+5oV%gtbyP7X%>~q!JTv?kXGT6kot&BP
zjl3OqI<~%QRaqWyxsB%s=AXMYt6N0zW3t9^a4>zXy_&FMm(2Rwq{+UW-;5c|#-{V-
zIe-!a0oUna5WnSOJPhZTtR`9dNj%I(%gg71?f{9$dv1h8t3CV)v(8x-3~Dh<WaL&(
z<}0dq;7DWUTv82Ffsu2EtcbUB#OOOP&NoDD?sq4zgB+C9BIrB1BMvCaut4ppQKF2y
zMZ<XesFr%u5&C1vo;kL`P#*T#4}g5cmYr-#2DGBRCx>c-pYKDOH_^9+;<Lt$tYZsM
zEp3w?VNA%u1WQDr)MWd72`Njc31yL{2XFd9pen3_dM-EnxNhRHg;t4spB}-6OW%aH
zVU=wZp#ynRr(Tzy_(;We<=~so&W(?>5bz;iAm5ni_sosG9!fJhOJG0uLhSshICl2*
zF71BUHZPLb=T>D4@>al^R>0v6CY@%2R}7pCE=Fk>mn@C&dH!S=vJr)2J+r(}SOjzb
ziT=|L;f29<D#llojZpw1AVvK8@#$-5P5hC%{cq`N+8A6vE@8bpQsF8CS%Oc4q1F1>
zGx)crgD!aauGsu!MgQXFkdCTC;k<hnnQviyNmt`nV3jtGXg%SPz4P5b`!#hj8_qnt
zk`#>fJqJqA-B1ta?pjz|uJGE}yap3Lk}%|rf{^pr2uLqkq9zREkeDf~v?7_Zms?aU
ztPtTsZGKi*_zvby;(Lw}>Ta-0HBgq9&Y@E22`C8h&?D8k01YR0_E+@>0hqU*-;A#~
z7|hFqFwc&Yp(e?fbEgBP%lRsC>bc0(pdUk-AMKMXMJKWtgD2|)=SD6k%I^PJ^#-Ma
zcy2B|OFzivK|6DQ^s@j+%6dfRzdajK*zvK!dexl==V|4?2H=uK7alCqDjx|y5-Lhq
z7>UgTw;4QSomes7x;zy`=(D;Dejtqheps7n><65H5NLc8oVBxkm7D(r2*0nmNtG*f
z3g6}nu`x;tSG#FSlW%EISdXc{)EJ<@4_-t;pXcvF1wW+pj7q!Vq$uU|>*k&sb6ATW
zi-ZH>@2kcV4?4amSOf8%&K>{q;A#iCw5Oz#eP$1Wmtn6U8Oq3r+V)wE5NgBkp>mkK
zE;wh*L6cv7pF-xZP^JTX&wMetNnjrQMujDukr(;5OG|J^(9T<seKaTyj=UvXR{xp<
zJ}}`DeDyERJrC{}v<O5JSz~W&Yk)y0btm^&FS^vVBgdc{PG=5Y*tPqf-Per{E8)$0
z9tcC^p;HSY-}z4T`c_RnioX{*Z;`rH<G`;cAjUDWDfs2((!2n=wOJnB{LZj_#aD&s
zpnuF`%^Msiz`+h-rrk16<%hed9eEEsyBy4Q4>ae@v#C9MJ4KusDk8WH#Au+?=`Ez`
zXHnr{T_Ctm424BW^z}z6ql#UKn7m<^+c9u*&AIqz$GR$V3n}sw;%0}#**=_)G^&E!
z{Ru+Vd8pFsg!+NOp)@J^joWtL@9TQ(SIb`sX~c}{&G3_ixiPyMo7U%$uZT$;g9GIx
z5ZA3I;X`G&bMjsD!R|+f<@ekoE-Ud2o^|qi;|+i4QZg+VV;RW`D7d@mt;qu%WBEDA
z(a|o{9O@QVql74_JrlR3DZD>*4R&o?jF@%8Nz=YP>%bnc(MDobfqfTI=y`MB7|h@%
z4LIloNHY*>Mw3*n23_G|x-9eya}%yWK=w6B-{nzxdnJDj)P}(V{7~3ZcAt;CT!AU;
zjYFz~;Bh2okRQSuOt(ZwGLj3!>MBh<s5cBbgevY??<rSG9t(I>e%CvBTkC`6TM=GL
zQdN^x_pDRKZV7kI9(^}<Z4olEE~qzoXWijLA84SS=1x7wG-UOkU$OZy3F}8ZGmnm@
z2texV)>`I_FfDxW8a%`dOK|A2X#0h16;4mOp`H;Sbck9gS(_l<u~c#T_^G26?8(2W
zggl4eUlT4kC2o6t*8wpv?;{8723$oRHS*-30P$QpI0D6c{t3#^(ZgY{Me}e!nsd5(
zYsy(RsujDuPZn|rQ3JX`Hf~$*UKuMC1H$6JihTBQ^=C8=zlw2&syGH*Z>_1~1oNs4
zfBMQUMFU288$A7)`bfMg*9lq@k8Pk8P}>}VcwIzXx3Tx)`prU*t_SG#wm8@RUduTs
zG~@msgl1X^0ka>X&T#HO9)ZLJ_#7h(C0=)nZ2Yx7BM_Bx<*Bex2P7)-C1Tr^fUW))
z;&#(=9SaE{>_D$Vhu$EZ*%YkR2c8Jy`O&mgOudlC52z&Wh8{kTSvZ_vxvcDX)gJI8
znnP|8xeY|&&0OrlCiEJ+x<g_vALLSoRrWO$D@=sF3}p%yR+JeApg><yZ5zzJo1@ze
zWT_n+C2LnJiW%kL0*#l$K?WCW)rVcFZBvnj;~U{rpMeYA-o}J>r5cnn>?En~+X^2e
zI#JRoD1!J+s9UXva&m)ba$u%j6agEAilE@8VE)SDd`5P`JfZrpq&rO(ToD{_fr0u2
z@}DPIt%p)&gDX5{y!_?aT2vLaj~VW^3hZ1^MYUeXpwl%B6e<$>m52W|9&{Vw1KIuu
zBB<>W=oe%=T3rdy(@ZkQu0G`NX*Iw=jpJ7AaefHcR|XOliyZ@H21G(Y+!_c;)5E3g
zj-$Um0q{ap*+CP`)jzm{#4Ru|ZZH(TZ7*XGJlXfBaV+pc%dlez2Uh>Gib4G~U4K4l
zf>+fENg%>9XGEbU7o9Fdpnt!WDym41+Ueg3=heyuRY~xhsO|2ZP~Z8BDE7|>GmwGj
zD8B7{?9Y=KAYL8mwi6c&BrQBNHyw=;+#-kn3&iTElF1Fq<DeCx(y3o3<c7bS-mSdo
zI*|x}k_YO~7|;iS^CB+kdF;;Wa|VY!K#KODOkd{tvEj0-eMi#Psj`Ikm7<cgHvWSw
zu06#WqSn>>CB2>QJb{rB-EDam3X3<PsxYnyA6U)xNS$Pk+lk0{6$^7H@|b#Ob*!PA
z&6M<!3w;bk3@YDdJJWbYof4v`s=JMbai2P+c=NwcqdkK<ua#jWo<ifw%kYfmH+L7;
z;M>^cSRap9<7$J!h-BCk1&l!)Di&1h-U2IPJAi~`#{@>`R<FQ@5Ep?s5iApYKa|e<
zy#|l%x-_7ds-_~U#~@E@CHNJuU^dcNC5ASyrMn7Ahrrc2UIW}hSPiECQ<~KOr+UH%
z&0T;%_b@<M_(fObX1s2^<P&J!=>S=S*0dcS5M!;3FR&*YZg9Fn5JN6=?Gj^UL!HDB
zPsr6A8WoFl*7I;hfEPnOuLWKQK?N4Ve+%V(nUcPnSjqO+;^l%2=Bq3_NXmo`^u_O|
z&4FAuA?P=?F&zermqm;p1}i!ehCBQV`%W6hEEyuwGI|S@!Y=RjH0){$*y>;$$Nc+Q
zEol2==0`^gQE3`bO*Dkrp0R>;;j&$)ihF@|r0@%Li?GlfMcACnKpapW4P0Q|8!|g9
zq7^(sAC9D)ejQiqnEveLELLJ=^1Ov8T^}ux4klVtzziEFG*w0$!A=994|s^uD(CxP
z^YK9~wX|H3QwGd+CG5$^oO_&p0eFm8X<*T!qm%oK3dD1Me~agc!1L;Taa%qA+_y;+
zC@p%?8jDI|p~8^}-BHaTK+OXYqQL~3k1KZYK@h!xU!42u+EJy@_FMSL+KTmUBi_S6
zNp=V{Gi(Fi7iXuSWFZC)&KO1+^_5-wPb08;fj^&qMZ<E^&7A$ui~rro{Q26-o-t5^
zal<@v68K|5{>$Z7x4tSD1$MyK>!QLdOxQo>banUs^Co}WWX3lifOyDCp)0GXg>m7!
zNfb3jFwy`*RpDOV(=ghZpBTXcRdX<RANck`17*}+b^-_hACkCA(3jCe!RZ7N<ie<d
zt+adZ{uyt=MaByks)l{R@dK3m`Fms{=~kky06-=?e=~PG04toCM&AX?uW<|t`b%II
z%z^aMEWN&AWp@ylF>E04?mOAn!)JHm&-<pz(-u_rZ`uVeE;us<@)h3OV4>On-QBb3
zk7O4Mhheb`-{cJs8iQDp>hKzWKiU}uWMIt{(YLGoevu_KjyENQ!_ldBzd!!7OGM#3
zW&rT!)KBmyjl<8@z-#Ej`#4~<VnDj-5VDz5+>R@;2Am(o$UG|1>aODI!gD)#Z5{U5
zv(gbi!Jjl$Lh{hM+X|OIAuF{BZu<|e33@|Bx^?2M|HjQI1}osyleE5)gHU8b6Al%P
zj<A59U%R?uZe?MS%YZ)xq=i4mb!CJY3Gh3C!#At;!lsrEJ=%KT=|5tsT8i*A{S_#$
zva)pi;X#M4M=)?17{Y}}{R}^k{i!1VRad@-h;YP*vYssH_V)07*2H~3fBTvJN5DT>
zW-EDg23c(3Tk{1Q<`cvZPJ(^ErVsYrr+y3Eryg;s`H7C~FrEXjk$Ly1vHo7*0t)av
zD@2^%h3fV}5~~LjawBIP8aKghp>ZxHCPXR?&1oaJYYEpG-yzod%8J|t-;+@b*aO}h
zWIaq3sY<(`mYMg#cevdj;twoR<Rb8{tcpKw%de+63clfWubH@W7<BTp%|3J0{Ez-|
zJq!Z>`ORzKVbFGqH~<gumTqJX4Hl+MRB-aewvg5A3u@Q~=<~Nc(8qYNvNwrBbm4nc
z-XiQW*Rnz^Y2_VK!)b@0jt{hyDgf_G3okjg;t8S4-_d;!VN)?Q6g30(TiX3CLkz@v
z#uwA_P=kB^N^;y)(^><7H2=kkfnBEg-gbE*b}PGNy4y#oeZR&EJ+bNt9YooWV?@ji
ztJkvAqfdTSpeJ+xOY%<j{W9G+l+4Zn9rgkM@+;4eY`|Jr5%hGDI^d!Hjw^pJr(a(I
zF8P<KSpbYnKs}7?zB_}%Y_PG~XQV$Q01}Vuw$(!Rq8s>oY~Rm{1*`VaBQSk#I3=hd
zFg_2Qj0>tFE5WP2%1@t)7zidC?Da(8Xt<!tkJ1MJrlJIdKLB37JUjWO#%)?)@Bwm+
z0A0Uns~m%ocUZO71|};_^+1PdS9~F1>$*#@h_SF_M466<fYY9HMD=7t*~xcrZ=LC<
z2T0s+R-s=X8AFM^r(PXB+yk{S$00Lw@|h`h3YMfS6J1!q8(;yuQKJRt02i(@Y<%K&
znN)~Gh5-Mz^~ix<GDH-VKq^Ljm&*D3N&twWymmKGt{wK?I&-HM;I=uawC#l)j4L3<
zxnBNMem5xj>c}>FI@FqCtGk^rV(FS=Sy7N*J(>eRZyk#-!{u&MBtVJUa`}N2TMue2
zMqaLq*xcxx2i3Xt5Wc%3gc&-Td3W6EgaG3hxSYkiPC^G0IE_I<uNdLgvlWo{=!Ido
znV?iLq2Z0D3kO=av8Z|w<zGrNMr9Uil>b(e0ZjHHqz(WYJr2OL-uyElo(q`=FDA2-
zwX*=z+fD9B`JG1v^yGYxQj_UV?`F{oGw^j*I;kN%0Z9>xyF4)|E<1d4cR8rnzeX)e
zk>-lDYiAyHf(Y<!JG1XRC>d7t0%x9ps_&D5h>gD}7!!cfGI}b^OVEr-jl$~T+6Hb5
z<64@WO+2Ae(D9b;natvLC{SYe)F`FD4`rX7#RMIy%VCA^^@&QW?&j~}h&FNfDPkR0
zYDCYfa<S8H;<okmh_g|yf~@ES+J2A>>TZD|t#3o~NIp`$c7}xH+RH&8%p5?-anuM2
z=Aj*EddHw(KM#^0eu(8Ny6y+apzR~PXGvp`oc0A^wgfBzURO$b8vhaK-$C(MMPTxZ
zMeQp?S-DWrd~<OHq`9Zv2Ndw1k|Tiid1LZS@-6(Jk5#pZZnAnVDBp?1#%J3yuG9<z
zjiL9`%QU@dqnK>IuP`wm3X~uRIDv9ZhDU~fEGVTeZBGQ)p%-?s;#1qUBji)4d_0N{
z)Zkd&h?j<J+vBlPi2V&JG$xA=B2;$aTTi0A=_GLfy}rJKz6Hn%cu)TX1%x6iGw0S@
z?m)1AC}~@mvxl%D7yktNiE<WTv^*%8l7W2EB8UVe9|Kt8Zn96Cc5~idqaoMwpM|=w
zR#1P)5h_4cN1yi>D97%F9<%NsVkG$!^?o^j%De?6FRjVu<&fwiqOMr_Uvj}Yk;`N+
zUF8Be`N723_zORlFFUbKYrr)K$E66JojkTQ1=VuA0Lj$T^B`R?GMCt&C+)hd2<a1+
z_`>QT$P9RU@=lkrrD)C212F*+4e}!GY#6oR45POEKl|Gt%To(-lSz3|BF6N7<UX=)
z4OE?slXS$gBMK9`J)d$82e+plyp&WQg@hNb^eyWwXua2dgn%*Bi*KkjCUr+Fjsh9h
zlp7Br(f%>G3ldlEkjE@<CP6{#3E`Jnyvlrd>}dU?W>d0aALRKs#J@sP<cJmfp-@G7
zC9;$URK`U4=a{9%QJ{`PKmA$;lwr<$#1D)?ao!|uSSQA15|csgCMQ{fD0<ZCYSTN`
z=5d%D$U&6BIn+e~g+$X)lRGbUjPj3qnG#%3_FCb`m&eJ+CIOISuEI<Ux#l7Wwil#5
z%eKVkEJT{MG-QCN1aYn-f?FN6rA7ryJt!f|U(#8)M3zg;-+rq6=jV^FD^A+(?Zmcr
zECVm*O&qCy=V5m3o`znikspVAl;2a1yrPDk`j19kQR*vdT4>vS7|?3je9)`Z7jkX=
z#NHmZ4PxEXZB~-!drMDb#_7DrEx82c2)-4%JJHNA<_fB`DPky#UypLb`Y#<twE@x6
zQ;WV-$TYt*iNzFrdIB=(%x6NtspNsQ79xDx(W!!H0BmaVWr5I~;=5Ewe7s@kK>{@p
z@?<Q)qD@{1(ylPlmwQ4`!&Pg`vfNR0dvPHKM;U$A1&X_tDawIKKD%U39qSeJfV8cC
z*0n2=+aOzi-t<m)bJq<{1$l0Pqk`OXkO@=BUVs#IWw;%^EFlvYf_MTZ<^+}lH)!7h
z+!do>D;*UuTNJS-MvJ_r%m1`|tH~pM_85z>fue@UaC~N=V~wPvZwg=Lj;oMXjf*0Z
z;xHqCww`u=zd>nQ+ES&b67*?gU@qYHlPxLaKGyb<7WrmvdxDpaq%-rKp1EZt-9Xg~
zy9pJF2cbU16{#yHgPha7hL>l08eAaJtgveyio8zi&fY9;>}Vr%-U7{%sC(24oi>s8
zI@n0>s8o~A;<+2ejx0vf`G>oBY%iU^bBYseq$#qInlZjl(C#UK{6O_;en6ETd?y{c
z#M^KRXd&-cK0tRjO(@oYZeHki+PIE3cc>hFIY^f@N|3wHLIT*T$1aqIY>7vSa=rLa
z5ZJlVoGy|P5C~c}<8cl*Jf|a0<$4&+9fJ({C8{atPLXhTa0SqH;jma#N3*H6F1^0^
zI%(S`1wyotj)|AiFcs;VltKxIPyApybMj#h&tPF~tE%yP;-Mm6h1ZHayzA9S%`)Cl
zxT8_|ExBr*RBFTJH`e()*+18-9P=0|Mdd+gFMgq^LF1fQBc-jGhT724szlje(#h{x
zV0(XMbnE8giWA6$(USAz>p~AjfoIr)+Ilt{JeP@~YUHL@u;rXs7Mz|7muk@xwnglk
z1De&D=b{Dk*~a`0vhAcNctd>$Tzys8E5X&dx*1$YE1o8K64ES**4k*fcS@RVZvg}`
zzr~ccKp=eR8jQB#2m4~i3lEm}!ibJaE%Pn$dHfJp7J@1dRl#XI1~(Y$+nL!~9_<$G
z!vVgAaGFIP|IsQ`zC)iSF}vL14z3AMbk&SA{K=v@-gd&yl$_EMNdw=IyT$D71d7l)
zb8JXQ^nA{=BOJabRx(@z)NA;jVMvF0$pIBz*lxUpR2wj@_M+JoI>dd>bu2i!GY$Hm
zHq##p63dG%1eR-Be$8ZcbF`ZNj!RUYVlNfo^)l}ufLfcWe43f_P>$j~+~?78OTw4Y
z*h$R2p5WtfE|dwr#t(lLdTcDttyL<d6A+~*<2gJudU-uzgYzyOp03z2lMSZ<rx$9m
zBk${&-a8^9SU3dK?5kK)vhQS~eX7?>Y5?B<1UbjVC=~Ji_RL$n*|q^CZ0r#gJkg*y
zA{YV)e!drLV?zVB(p_tYMLGo$OUz9rUT^|mg2lLQaz9RVrDPV&1eO+`V3Kla>6xjv
zNwQ~lo^~>~5O*oa;#hzSo_xx1F8fdfE?FqdsO{(@9p@XPI|&Urx}MyYgs(#WSZ=E~
zAZjYKHlIYncncjohf;mTg*Fr+%QJAc`O<Wx%mcxR*0kKjJdt#d8b{V@uVXQ4l1diL
zd3HowD|w@E6F<A~oD0%dpqd6XWG~?39ks0qW;nG>;bcqm1l(>AJnq%!89PsS=2B?v
z(F5U+*r<3Tg*5Yu{fT^v*>DO@a%{XS6{>-kx)itDJ~7wp625`?<f80gww$a-8P&C}
zeU*C733`>Ha?WPA4!L`zyS;mb)bk`?fV^?Ocg(DP@LbqZWJCw$r5Sa1X9Bh!>(#Mc
zU0TvMcd_X~AUKOw5Ey^NXm>_JLcJ^fkbJj%<nJiaKodTZeB=xv43{B93Xz+3M1e70
zQX#4}b^+hvHT^E~wwU8aO?Kq{<a$!-%oN^U%lvM&zWq`55X?mv>KXTUlv?Jiqel#7
zq;n<TU0|`e@1hLL7jp-^Rf^Kg3w3?j+`K$$``P)NBE&h``^C7|yx(y6%C(e&qfuAK
z!1K@+&`H-G5Q;J>LIMzP<T3%6yTt5yEpj2ZAb_mc5r6wyRewevPTTg0WwBJ^{*HjM
zjnVi~DXBW}@dwp7(o@{5E{+RpI}=)4pyDvuE>{;hD6;ngo|i9|?F(WkUa}+^$7f=)
zsH&Zm*i)v>{I<SMd2^wTMJ?IxK<AIDf+GA(3ZI3q*ge`pD*ITSuSub#?W|$&TzGLa
z_R?(lh^_^JNqEuZYx~m6FviBN02SZLJzx{$!6v-oZTu010^L%G?`-~KNZ%N$%01v(
zzP2`Cmi=r`f%wd~Fm4;^!{WABDLl@+?ZyUTC6fW`J*s4`qMu8QM_*^tSro1Pk2Tl0
zCa22G`a7Dtkh=5)9oZV_52v2_ZEPl9sG7dw%TTm)ip&Wx2_HI|wO=~rd&1FtU48rJ
ziVXv<AIy+@4#_O2;5{{%>my^V>}=0+;;awgk*Zw#X?<Eiw#(*Ii*P!M)~;?M$~Je|
zUo(ATTKE2Fleu)VL#~v;3C63th}u#7RitMwLK69;Co2JlHrGDrAJqO1+dt*if%H8j
z)<R@*%K1S%a_K=K|DKq2b)|#saj*cz8~+if!mU%?XmLntu+l!P%PTKb;!gzpThHvq
zBA5yRfc-QjT%NK26#}mW(jYK(l)_`<P%LNuCn#Ny;C42gJXmlZ#8V}5Nob%T@=x%L
z$c*m?T{*hCfZk>57oH~7&t}~T#G92bsfxjdsd~|G0i!Ys|2=w>YkC#v_<a#ZI~q@N
z;ngm>lekPsF#Y=3LpXgm--u=a1|1`uz9F)*x=;qc8nCZCZ67^StMUUI)C0xHCqU6U
z^tl&MKyVGNZg-m0R!62W7N*bkVjmz-htN#oUfLHhY6%d5hta)L+Qkud7CSpTijAge
zMp~s2$qyhrbB3_41jt*?b#cPzLczfg>Xv53cS$;4MI5<FDG>&D03AB3yq!S>*oGtK
z@y^xz39KUu7gRptwA}|mn`F4nckal-%g(r)A9%ii+?yE?Tiv1V`a=R+i6A;G&F@JG
zz+KUQ#Y!t#fq5(m|0Sih_Hr{?gWdVma3lUVIK^e42p{wpWjNDqhpL1!HsiF{aJ*I*
zISess0T0a8UhTOW445K}-860E1Q<1QFlx;glMk*g13EeQTI0I<87>1D3$keB3N{bJ
zs)m5C1xAU3Fi(6iPu%ph?eMV|oFvcbckEbw0)SURD3LaS0J^SI(lWP28r6W4_fTsu
z+)Dy(8>SsgfhUkf=$T+b-g=rQfG+j)^UMWT@ftL-mrD9^biqWp!j_|StsFq23|%h;
zh=n9t($Z)k|7%s#|K;fzn4MpV%wL=45%L38KA?pG-l`@j*9Ax)v#ZG_Vk6qzGCsN-
z0M$ysY=;u1IKWb&iMx0#9a5pcuCS^(nbZy2t3kP5P88~(p&}pl0QKO%a5_pjjE=3q
z=#gAVvK?f2$<l7!`!Lf4655i7xNc1O0%#-yC0O6SnIb;UuWg*gKt%j*ptuo0crCYO
z;&zSmKXasfKGP0rjE%7mP>-&G#>mc^)1L!s`j^;XB{Xnd75NtwP}LZ*H#DVLpFt-0
zw=vibs%d3rjw2xYNXHBB%a-=&7Y6y;yuh>YA-tBG=oG*D8@>ei;N=JBuZ&t8@RNSE
zmW!)9<o8vBQLaX@=otU%PgGOQU|T%l(W!%_&IXJ4F&oR!s+C(sZvSYst$y$leiO=|
z5_UzkA9f=14lmX%#7|6d5T0!PC5Z0<$WZuOnmCjNCt{e`_8q$bVhz-tGHzyfnAlMY
zQgsQ5f!x)Nw|8g=_Y4ZkScU)A5Jy*tG60*Ib^=vqv~PFyImoncre_w~M`V|B>V~K_
z|Mcg#>nGzU|6=;^g+BoG3O8s=QVeAgW>Bq!DL)&ta%{;Gf&SkL+J#Q}mK6-=nNjqK
z$YrwBF6gOYKHQS*4!z6>nay8TN97QCC2@<n_p#x6*eE6@{=k$ptDPego)HPU=7BF=
z?lWR2d+-4yx@o|){2xID;6aUAM!rb+!*Lr76O0XhZUFOy>i0K?kX8g>(I&gf1WPOY
zVv`{TwM4kOZ=((0l=MC!F#wsVh_xd&6%M0*2;_sLU6>pw0O-R7dO$$+_u>JK7sv#z
zr@aGT-kE=f<y<*1p_wy-U>HxrX1>qV2E`YD46+)R6FiE<W`Slfq+UG8hd`Njs0b0b
zyGRQ73ecAeQY#sG=R4L}2CX+b%io<phoF2nfU9tlJ3Dtv!BykdM-TqarMH|Qt`am1
z7~oG{2F_pvxURu%j)w2_215a2Jn#Zn9w0pi<ai@i9;>*G+b;LgNNJD0?iL{KDtv!`
z35kYYZLwccXh)EQb}K-|Jj4FLYVP8fxMN$|5-;_%6Hv0fYg*-oIY6uOBh9yOprPFj
zBDStT>DPIGZj-;AFPn(jy$47nWtVb5Win`OUry3br9guE6vTJ&h~CfAbsEB73TVoK
zq{ma5*@qhcDX|K(^WSpxt+o)08O^GFvLUJ60xCAjs4id}y4;r`;1s|^g+!oEzJV@>
zGG}K#88~t-{q6^(nv}!4yW=a2@6aJvK&JDcl&$;;t7SLThD<<0-P7UpNE`OWce~0g
z`7KmIThzG56{-`S1G!D6$1!SCFv^(#2HJue(}4I0f$fFl#=q1+RkgwN=v-5nxx~Gy
z?6XSYxCn>thL81lSc;Xfk{+{cb6Q9Ap^c930r}~@wnyYg(n}+jmKIN1BAoQw`Q@Ld
z_hNm2B28~7mZ$(^rw7zaEF(E{>neNzvCRaN18mQvd`Oog-4nozQc-&&7Kd<1Ap`Ao
zAiWnc=#YSbH3)5%cUrhsxkeLm!Y%0yo*S8GQJpvscq9SX(>gPqJ_JzWx&wPd9i$0v
zZvk6u&LaS-F6J%$`Uln=YV1!#_w_C}SdJ}~C-xu6*KyD>5Vxv)fl>`nW$+r&<tHhi
zyYjQO4$(wUC{u^5KuIJIz}rqZWUdv}9~r#1S1-X4hQ2(p#NHbu-PRA8vaBP>hSl)h
zZTRNe4f<4~$pQJJXZ0*dHa*$Y8T@^KwD%k^r8knUo4f*rC?3@#{IS;7cl9~PI&x!~
zmnfl^&Q~E7BeAE}=G{nW64_J5M#ihq8)t=phC%IbQjcvk6Pl7<!zTuNkBYcbHcR2)
z${s?8h<uTKCc-(;=HALkr$U6?@`3_tz($>R5&R<pC%Ql_HTJSBgwSIzZeOy7CPRK8
zl~E-&^DPENCiF)1FM$F7EL68?L(p};q~H-yvB`(p8yVomwmUZfi`(U<;?&i#!wyQb
zuZ;8uY=DhD=?dpcDdNZS1tXc%^e;#zH9a3XE0}ah5(1qP>u?M@bAF%Sz9CbdN1w<&
zf9w3h38>C(PC8@UkcS(>@u&dk?!f>Gm6d{tW?oYuO5@Y!kLaw>NX2-iMo@^t|5oT{
z-e;YJob?}KZxCDbSv~_Q{d%R}P06e@h~i~im{Xi;Kq?M09_1j7`;y-CNd_cG#D*3Q
zf1OhKrjv?vb~~X1%nk>7|A{?Mj-o_^_i`T;cs9Fhkn3*A`{p3^sDtH#U68&j`nLPM
z7mM%vIRmxN*!>!+S9fY%^*MMVl3$BSos3CHUAsijqakm&g)`b9{ZPU|t_xaGqzn7k
z($~`J($cDDsnK3a_`KZm?fFlc#5Xn0pC{ic)hxD5f4@-WJpAl_UA*^W%J8?uK4t^T
zkn$l00~#qN14=d5CVBx|>us2b3$%P(Yw5LAX;%LGVn5A<fNkQ2_FX!u2WbU9UpvDq
zEFoRr2UP;?v&)foj^(6Kx#KTVzW|WkV!Sk)<lPd=p3*3>bILc?+As9tKIsAWi!64b
zan>%`8FwB)gQvinf`j#*Z}(zv&dXhlQb`+kquv+2vNp1DSs(W98EwI@alSu5<k)lj
z)o>s&c5MM*^!)bpQ@HCz+&h{Ubhj31`H8BLO!O&_a`t^>mT{z40cgScM?}8kjvaGK
zKA&D7-IL2;v<@)W8E#?h+J{W=W1cV($;~bH^A;m#C9Rq?MaOSS6c<3Qaz@~FR6s`I
zBPs92*|8l@l)RMk6G01^=i29fO)EKtZ}}B(U0&$lv!vHbWu;Nv?EmoM4inT1QpfbX
z2@H|yBn+GP9-fT?e~lR$zSKbY{PltImb^f^QxxI&h|5zfYf-93bN;GZ?fZ+H?b)rU
zt*p4mYMUU^a(=IC0&#er36<%t-!qA)!LYy-Vxl$Pl0?l5j#B(CZI!ut=Z5l0Xh#+=
zrqRzc*LX2~<}2#_{spuEFN5eveYn2G%E$%WGOUA*qV;SOoGa%(c1H#~CwXd)tB?<A
z3S|0$rK6P$y{nhV+B^>xA2U^8&3pqHvak9$GKB8Io@vU`o5+Z@xi&~#o{FujFMekJ
zoos)Bjem3emUmDAuIL8(UywZYqiYr^(Y=o^3dr|S;@Ls3_iWQH_PjjKLw=;fA5sK<
zZ&5-5(`(+tH^TQ|b!6yY_m@4ChAf~9M~WT|rg6{OLDwbw{;Pak#0FS;GB@&-bbc?l
z)s?5Zo`z}~dzE(TNNP>-V=cYnI8uN{dgR)$2=!>PE0kQUiCUikBQ|ZDa;862U`(Lu
z9H>(TgGO<&n+lzNx)|Z|=3PBmn?*|vL>$1vOCE&5_#D?1Um%LzU2>!D)dhirx+e(f
zSo7qJhM0jd@D({&&5jX^r)B{!y75RsS~5(~)=I#ZsWvGzp%)}-n4710Y?*3cJcMh*
zjSpK%+1Ov`u7z~9!_cX0DchQwTU$;@Muj!6<+T;m2shK8B0u}&!yq!PMj`1vGk>tZ
zW!qaQCcxbqyB1D?^hy8x0~vZPt{~dz!uhaJUeX2HorhKDdu7Y#ME<#uRB2e~U}N%N
z8dZq71=T|1aC&_W=tLVSbM21iE>J6ybaJzS)1oNvRF#P~rR^k$H$2u?nAkpORb_%Z
z1@#Auc3+?D*p^gV4!!T{Z+f)|43i5W{a`)CBB*5|;+&fq<NG6{L0#MKdqh<YoJC!H
zwt^M9<{w`*b`SPhr;BVo|7<;XLN9cE&jpX`s+r#zXadqyU%35}p*QbhbY5?>SWRAf
zfasF$hglHo<bBd)k9CmG4ba1ew#V09{x+!i26Vvo7Z@ed@<pi7P`iFSsb|twrMb?V
z8sN@hc`oLkHiwJ235G?CiGCmjMNIagZ=qKfZOiUAAQ@oqw3oy@f7rzS1A7KtF=Q-N
zVy>Y&`N!b-?bMm3fIOWwdl-2@*tjusko}<FFr-g8h9J*-#%UZmHF){T=m3pUF{p5q
zXlDu4HW`8q#3_5)50=k3sqk)+7f!_g9H1?iv9VT?PIq`jg|F{fiwhZp-T|za`BFaS
znKj6Pu=o>^qs2tmrhtrBQdW_bz+AZQoJ8tqsw&?9{ip}~!5XM2ZSW?1gVaCU-l2H1
zt>A|GXi}SF)uYQLPVvH9u58<*92P*ZdSiWrbw4&jE;qLLLH!la$Dty4$@CJcDRsZm
z`FL;ZVaTWyJbyeNnY30BNP-?2K})9-d81VqF$R?KlWxiJw0!%7*AC|9s=>BWLMYqi
z+v-<BAdxB;bF~;o7!1@2ngI60<?C#tdyri(-9+?@E`&H{GXUH++xcbaOPPtT1y%e`
z%KCBpxD8}Z7d>GO>xqpfYPhsOsf}m#)qRpXo8mHP#Rr4ro<@1qYZ+Ux&QpD(>G-`#
z;uA~>!uh3!-M~bw;q#~}ejHtifZnup^~p%N1?c{vVHXR^>j2K$fok^Eo^(33dQL)w
z@bwfo^K`M{`}(&O<!tKUKyH|7jHdj2w1dJpY!()var~BVr+E>r6ixK`&8<%_@1bEH
zIR}SpgFm+xQ=!)AE1|E#Pf{Vf`5`?@|5_VaR%(yz(YZ6==iH1h>stmA{nd+!TRu(}
zIE&QZoIWA<jqH0d+WCB=tA)w@wZ_A`H$liTVkBW_{5{7PpkzIE^ulYt7Ywv#dM*r4
z!2Wv8&>q@K1g?97vs|lQB5m*W2cU<~Vr$r6x84ngzIp?gu0Ce1WhNN{HQG$3iGO9!
zX3&4Zvf1vO8oUEmE<!bz@%Z6+oF5nF7zmu^V>Ub$TuVO?tSU!uu6W;Ys=6XGq9q3F
za0a~6&-t(Y-fUz7iRcgP#rJ71&}n{o%@<)xlXOCFY?5Q_QIWTkG{zaaX89)@;y)Tv
zOfENvSw^f8=LMRItbs&5KP&-PnCwO+u&k5n18cBc#3V*I-uW0A)M+qT*Dg$z30c{I
zWhs>-DmHh4Y(8H^hc{^cUIyj~pVLpV`(GZ_?q+IPmzge&y*I!38P+XlBO@Pk<-P5m
zh1;I(!llxzwc+3r_5gqLde0)6FK?;?izRmQzy{7gBYn1%+NH@{9t7u}6KwAUrd}c~
z-wSTo#hjSqcLj+uys1|`PC2Y{0Rr4hF35Ajm-%V@V+xU|EAm<$vfqQsJFgqG6qJ76
zu}vqnosMrlVaQth5tL83UzUAmvKQ_)OV@e&2eoTqs`LO{U@hEY>jjrs7;a0nCkSTA
z(X_p{;C(05$7!*@kCX3pwATh*vGlnCzCBv0WnfP&g>A0y&YvoK89ZSN0~8NGa0>Q=
zulvx!5MH6}J%LMo4&Qq%lB$3BmnXzUB+*ivx_rI@S%Bt|FQlMv2Bio1a%=w&E?Aly
zpahkEkD&+kYY~gTu6zpvT_Y6w{hyF6NcWP86aiD+2jbkgJtsm_RDfAy2c_Y+A;z*>
zm>Ch3aM~zHbb*J<z1^|YC1m?rrJ==uM)U|AA5+{uXyu8+sXB)_ev)@B{VTF+4Ydo{
zX}kfzVDKdnoL4=(Qn9ryI_KeFkUDY<2riq$M9br*q@^UpqgB1ZcS&qkIeFTYG9=1#
z0|p@O@`b4m4Q^QGT)SX^Wb|#Yu$aTpwSf?NIos&&(B|^A$lrE6^#rXDnNxoq@ANFZ
z*Jjl3cDn4u%c%xT7Mhx~P7^=q2VE5ocU5Vp>Y-8Qi_nL4dR!JR{g~<8x_?aUuWJt6
zP{qzCq>n+lF5}b5_`<5qx7U$WE6_O+p$5J}*CjYw&cWL2yVAH8r%EHoof`05n~Nia
zmd}6%E{m_cZ?-y*tXKnm3KSk!A1(EOH<x;@JKuYU=-17u14CGJTU^d_Fn8?Wf3c_{
z#f>~wdkWV@!xOy_p@B+iYc>h{L*1Z{kRVO_Sr~bJF34McdVSXpICk#u^BeEZ@&Eqk
zJnxNCErM=g*6rhkz-%%*8`oN<ehzHb;|Iib>OfX_1gx6ZcDR;<;E|*HwntDX<WO}g
z5ni(3&qY?9^W!^_A=kS!a(#7`H;NMZY=yPE`t(y9h=R7Rw4a`W9f(0&H2ajC*&mnw
z*QS`zfS0xT>Latd9-{eA!I99g#|@lJ&QPuS-blOCZJ1AHFs3)Q)-uQb^NfBG0G|&%
zeZaIDC~y%qA)t^+xc3u$Ie)n6bEEwnVgHCFxQGmJ;7{DUpkTfFF!Cf=54?{j)3Gm#
zkhRza{Vs`}-22>nOTR#I<rO%xD}6UiXrXu9Pkf-hO=<fAxal!gUQPUcZ!BS=F`wAc
zKp5TC-wLwCE5Sl*>UY6EH@NixvP+L4Mr4Cn{uQf8bfG(w=H8cE*UpVWvz{LeukjcZ
z_|U<&nWR?)TVx0Ie0G5I-UdJFZ_}+KQgjH2&c<w#j#?!l?*q{j8SABT4vqoc{LwwT
z$26GEU&jC%(6egq;qkYja~6o&pPQa~e`5#Jtk!>FRQEjqE1NHE+{OS&wJh&ezpiWW
z=J{;WPeuMdKB-UPQzgyejWCD&VA^DuC>5)I5*J$cRa>vGi&E8wwZB7?8xDY9D;Ade
ze>?zIrc3n-91eb3smV^S;Xmbi0%MX)gRa*5dP8AlYr({7ww0ZP)trp>reH#g22HX$
ztQNT<zs%Lu;t00*c?(q-8?h0-uXu=C#R1Nny-;pPgAsr)kG7#eGUED$Dd}B%3&Fje
zg7ubAct&>T>dZ_Xgb!}Y%5I`}#KN_3IZ_2i6hF<R<P2Ji1XvXrkB8sGyW8-=lF{gX
zivu%_OwSvG-pJKe<$egBO7o$Q5GP!#m&vY0QG3wU$=C*BvHf9i3G;#4LU<z=G`_47
zPhp3u!jsAW72=kl!(52(g$4QsOQGgXllk7`kLJX|ZtAMeTS%!Xz<1??;Zo`}6Z^3*
zoZx%ztOj?%u>KlIYZ#%ii!b&0Ubw=aYD22A9_az@q5I^t=zV11X`P?G>w*2y152!=
zWC{o7Qw6>^A9|U0)mHxXfhsGEq)4><@XkTk;riZqTq*&6W+~&tU<Iq30DrXEFgXF9
zM>R}Z=lZnd)vfpEvD)X*^X=)+;m-=l-xRw8?);n!w*Lm-&)|EM^1uTLYd)8NkHKL6
zwV&h2VBGQC|Nb-w>cnP9BA)3!^YOatWHZBx6DdUm97$kitV>)3G!iEi^@d^Tm;RTH
zn5fY_^5-EfY59-b;!p<C+CIPw-c}RTKTm^dS_rsVA)wkEJkoymz>JNb7}1IGSRMGH
z4?o{aT&r^Bn=xf*p8$jQZ{xi>@OP1O)hk%!eQR|^YH@)l>}q0Yvlkv^9sF0}&`Y`1
zyZ^FznBzxb6j`?>Jzm{Osx){QOp~?EI>=Na|6-m|{$FivJ~|hwi@XQ^|F~7D3K7Ih
z_FA3!aQOr1kZuDqTF~N=ZuS+^#!Uph<q%*}@&oC#?uycP3AFBNk07%HU)+OeZQs9j
zDV9R4uW%o{><>WlYkqtRcjH4v-B0)L54W9XMD(he1vXPNyUY84;`=2k<wttgXX}8+
zO;LNVKs}lSqG8%W8;wm*mQ%)ruYUsvcr!>+&>@+$@1v%5y)$yYZEF}5zdS%7PY8n7
z$4g_)>_fl6l@(99@3xGQ8}RHSHyFE!;}>+(&f63^PeJ!}_7v-sfGO>?5SKbVev~Hu
ze(r*FJA>YQFT+tEhBr)c`%f6MDV_C^1z}fOEHO2}7ab;5dm|`{agqewC*UPcJ{<#J
z7VYLWwnLE15!wR0cyskH6f_e#{4XFQ2gJs&o4<ksV)8t#W?R7b4_EAfUA+~k)+f3F
zB$fR36PU*G=jFDIot0iVWFnb)w$zDgI`nnoWRL<n>f-NS6bKmsY$Iu2%3SOaNoqHx
zRJ~Zpw!~m;UV8S11FL6tz=Z$(;`39RZNIDa9lqRpzrU7TR;X!Z3a^>6G;{Y9WTvh_
zd#5a>$EB?tjIuDC>uCJITbE<gn^1?X+VW!el-}R1e&aV)PU}KgcypVaPV#`UQ3GSM
zSxE&9ln(}0?p}@8Rk+mu#o3$3Q@wue<0TbQ8H&g}&)ZmJEMtgB<_O!YgcR9GWuDo_
z43#J+<Ca2(GH!FJNGX{slp(`5{?@HJ=X{>$`99z8>-X33dUy7FxbJnZd)?Q%*0ub>
zx0JOI9?Z$CvJ$NO_sw}j^k-94Io_u9^@i}I=ycoO6C`tgA0^PUefdB?TbI4yDhn{-
zN{+7GGn^|QI=Zln&S@LmZpWSXx#Y}RV8kjFqVLM*%6HxzkK=vm49+5x!D9lR`V$W>
z?!o9<26#(dSRzwDby`ib)&b}-z4K-k0DUHC@)J`6T<=hTLdtYRl7&1@o_q`#f-vG}
z+ki;hJ`@j$1XlsHb!G1tI8^V26Sd{%?9J7|&HBFD#qvvCaubbi9Y`1@FUU)uVB(y#
zvH|^E4#z01e7OYV;84(wm3D)G%mxIfBFtPqCb9ChPeOBXYSd?gWq;aTP#-j0{<Kuf
z_+u5A`%T#mLm+A6XbM<zLl`Z0Rok=rZy-8Pxwg~<>)|j86hM_H-mGoelQpd!?tVFA
zwQh6$M+p#NgQ3rdyd>}BGBCAoJ8u|e37pkfv>045HU+r79>7D!;tAO#Q1x$_%?8@*
z={2e5#u}pAUyl7lfWtTYtdqI}V-DUrpZLAiKdmpEKkE=oO!{*J3|`*BO?l;2Y&{S@
zjj!0$k3w6c7?0&)#=1j#N~F<u`?=;}D8sYcd#)yz-?mruhXINmIp>_4WXr&DFp;Po
zGU5CnlVPOO$FwdgaY18JEXJ&Pzm(}m$R^DCWPq;F(Q3f5hKd8%U7H9E%IjbCM=FRJ
z4&C1&tT;CrSqdk#b01?eU4^DYHM)iX5D)9lv~aJHL3Ld=FuIX$avNOb1+$`7P6hpg
zYvV^taq|lE9rTc!`nX)M(q>ZI<1OfA_wgL0Du!Tw{7gYQtKn+h>c>lPSO|rMEmsW~
zk(9R%<;4{tk*}RQu|x5kR64ycQEkXbT$}fUA6(G6d}XHHdP7ndK!s0}4|8Jn09F&&
zr|82JEMa)j6EXvluF(?~L#b4|jn;JY+_UQHR^ArZL)qHliAIIxd3W5%Vf!UpkNzR3
zx{yN5>>*&}hk2Meq}kU4oWo?N>WUp`+t<VX27&-{dL?C%AS>|S)83<%wRfQ>&5*|>
zy0~p%;ze+rfE^euCXYEG*nzF#V*iMNUM-hYyq;Drbl{TXSX-`VIIbbQpssA)oDCjs
zHgX+Oeex0A82_(2&<x;WSoToIEBAo;+cpm}uS8gnW8lO*gb5_+tVyyTHxQdYXm&c^
z{eCNxV+O4{rR^Bx^{5fxiQhRkD%>9hJ^!!=*eDvIv_KJlNM!?!pkl^8g5l?&&G7k;
z`q%o(irNgLdv8z+YK;K5e9^1|h>P`5JHo!n+HZ*q5$Z#ZY!5zG;|qt;lXtd}%ReX>
z%zL9wny!7nS{J!_O7#O+NCV9GAtt_FKnh(BjE8-{)@Cv)MVD1(7mv$09u;TLCVijR
zYqbdzKwG;uh6#mN6k3}JRgN0ba(&?AjiAEW_Xy`r*2n^t8B2LB!O@Ee#bzrZUb)Cv
zJuo~Rk~5CVt7a^ck_WzPt$>2QViBX&K9x%n#;I2sTSP`47|9SKYo1%`$&KMJLFvdX
z0CFDO!`WxDdo<E|1kMhVbEPse_pF>)^gg<%y~^o|^E<XXOQyQwc%=nF7X#tMB{-<I
zOzgrOzQ1lPSeu&_P+-<2Vg-#FhHLp83QjG`lO;7%G46+q=x8}~GH8-2>^J#3Fm9Mu
z+~gO@C|%J4RJR3zs-fru6HINJrmA0`g+Yv=@#;fe;AVw;e{ocJc~gdO3|EwIIQeXM
zwuBhDOTO{9GzHx94ASdwo*0H)0bQTe(g~gizKly}MXZ62J^B3o^>!$!V94gLrjD~p
zcE%29>%CDf_=6k-SwRpxeRiO-E^SU`iPQ5s>`-%WWl-GlA17vrhy4@)MmTq+pVvVv
z_sa9_yVdTlfR9w#Fc@N7C&uL_n+xqZD!E{&%ENJLV>ULhF`Ik)mzxExhGub4HIQ6O
z`!K^Ia#ZVHlmy3J$mHb_00sAI{lsJE4dQ^AJDK}kv{co0j$qy{D~9{1)iOLWoIBXB
zt>NSnmIBydb4T+|22+kQ9B<A(rhPii-D|CGswz_aqv9u4LDg#yO17LE6DAAk7<_XD
zT*(YD&RhKAog)i0PII3*!#zn8uaS2?KSY{c&J#Q32r0bi6ppKLx>!zb>$1gD3RM=*
z%zEidHSmN0e!YxCyslUG$~A8u5-!B6bxUp_uv+`V@Us`Y4mZ{c*qvGwHA_VBPrr@0
zyKS_%-rgaNU6;+RbCoP*!8Y#3dwmA&AwXM`Yr@<tFIJ8Xw;y<{Jv)8m^iJhbUP`MC
zj)v5l?C;(4h2pQDl+=mLB{}ZG(3B*{XG$;6_mE*O&5)f~5hIK5KBg00;A>^15;rH6
zl^eWnlx`tNYFqbVn~Ay;-@1P*Q$Hv6HeyT|b8zN{rukrS_Sfl(v$mhR%K%An7#TfF
zN2G#{)QT%U)<eL0o_4n;Kp~gWF=y_7I_4;{p;e!Rk36+^JL(^*>7gyWc8|SZ<B3US
zGM3JI<wtp+l>~RWkua}y+0RpH=8|rLlsb!!F8B{T4NoB9LDawX1zZTrPUah_)N;)B
z7OlfPhl?ynmU!w@sLSe&wQCca(g<HF7E!JySB>@%w#~j1XRkzb7-i<wYVFAt5$lP=
ze2L4z&LtQe1CoC4*;+%k)Q;gdG(S7C-A)Xfm>wyQ+dabJS7gM!3+spMEaPhn1-6&N
z72`VCnDY#+c21>u+o+U+*YzPY8u#L9!{2Z*bodkFI3;xAjfG%W>Ykvzh_4epQ2X<g
zbD#EHk_cAP`i#zI=j~pT<kG88*_q`+QN}{)i~y6BkAvhqXG3~{fqCw7@`ndu7kHF)
z<L<%<I1D3X2|aOaz~zN+s^Jnct;D#cBXPU|QAv(gHg?@Jwq$-snt}uK+?<PYg|?Ap
zGSU+7jO~o9Tc389;LezMjSwO0zXbZ)&T^m6$}hE&d$znka9MS^>uT*8!XsOf_JCk;
zrx&e3rw)&TmrqdMD-U6Lv%u5zFrTNE*GkB*WkT%J7eBEQ($;4g+VTQWbBN5UwhlU2
zz$-eNTOYxp3x_NrR#T3oZPrykuR(i0!%w^UK;cYe0Cq>3FE;)H#FF;zwFt`A)z{8X
zcKNkf4-mU-CA0!N?#h$eWMy;W=fzvEt8e29ZM`?9YrMkus0=0*D<KSNDeG3J5zCf0
zvV(ZKoVRTzO8SDQyWXC1?BIGRYsVO*DtJ~qFHdCbS~BZ**twG9q{Fz|9ywenpzO*~
z`_6b|yhX0Epr*h-B|>xPeJ3I7(2lu-HW^(kdLvvGm+l5LMDSM7ZeYI=7>S;`eaYa`
zo4YHU3rxtdHaW_K7S|-W@abcK(<lo~cfn2Y7~8ud_rOvUEgvT?j*`eVM+N$aDYUFC
zIV{-6u@3X~WW2?$@x@`5gxvV~;Ju_aDh9lf-k|zSg4(g&$*%p+uq%dKX&T8#)@iP0
z6^d6to@_*iE7!bI%GyjmpO^IhT!?!qZmdikON}^Hk{J>&ch8j@c(kvq%~XAZWA7u!
zasFSis6$WpU`^7WELjBX<LBs5_)qw=G~-liw<6^nwz(wCPg-U?NnH%@ngn^M^Kn-*
z+)V|jgcdq0Bd|9TBs3PyU9hLPqJ&!e>Sx)YC}q~tSbMLdsC>rRTF;C8b38JVUV=ln
z+v>S467#BIGZ5MpXIPt29I0|cIAIQi0mHJ@d*Z^|mF~PfQ=2R#A9aUMUN)(-=6lto
z?bpEqQJwyw0)LYPFS9-uL6SD#EVRO8D~mh|j2BtOUbeCL@CymWxx=aUYhRg%H7(Cr
zfaKdfr(z!KXTtKjq+t;|OpMtOnuIE0Yn^82W9=1&IGsW{?bt*`T@8s7nHn1MV;Rse
z>)@DcGNHk;dp=*>ug1qcNmxGWA-`R^fBM;4hVJ0y1i?VieMlNGkH!}V9|cEAuoev0
zHNH^k`Kr8GbaK97@-K*#3bWF(<5Z+ztZ$!G4qP&>9mnv+XaRZy*q!%D2$|@J8i3G5
zCz`;DAR$1HE%qAG<a@~SP5HD;fH%ETAyBd-S#-JRj+qLY>0V*9jq!YrrSdG|8}k$_
zJsBdXJkjp2eK{fM2^<O>zTGw~!@9*+Mo{~G4%$6zR)8fWB^G0k&oPbiI!baW(LTwD
z)q29}c4+t95)>gvPNaG=2##3@p45HBH=iW=1pCHQPpJP1;O^EP&8qi%h!h$OiNWoM
zWOqNYWUy*WSLd7kp~WO=)q3B)_Gj$l9GIc{@D7D8zF=Ceh(n3qI;!S~g<){(3|YEv
zGbDT!P%o=lkq*PX`IHuIk39G0TAS%mNQ_z^YdNYjXf|q@TyCyi%Vi#aM@vkSuT>X|
zYmAkWNW_V5g*gSnexXvzt!#Pjz0~%O!mTE~jJbvVfon@*lab!q>}JhY&dS(mcm0VH
z&@>G;vGV2pzP*ukQvnWZcKP#{m7J588Hyzqcdw?-Uy|!iN@4ZcRjMa=J5zEE0?*Y{
z#aI>I9ZBA;UObr|)gWKhv>sM6mR&vbqRI+*O(V>X`f&@VD6e!?@!e$m-njp6*Fcyv
z11Um0@4!)}JO!#OsKHDP@4hB1=8-l2L4Xu-$sut5#I|mR#Umpla$37QYKApVUK)Si
zE>dvSVg#1Y;g;Sk-j@_`_R~0h;iFPgap7TkO|hUDfYGN@Ps<ws8mIyP$h>{U1O605
zA#`b<POYcrDE%<mY)i@<HiA=nPwrtyPBvhr89cmH#M?t7*C==UF+`-YmO#Of$cfN>
z&+}MlA^L#I8u|!>C;&B-9r!(qJ?9Qq9_M4u#aFVY1yQJsa@B1*5f6@1o;Vb*v+MBK
z&Hb{UuP@KLj0&%#s#^oHPKg#4gFNx8*u&9=FW_;S9bD?e_Y0~GUyXKXcLm;O*IvwP
zuB_5}QE!;DfG^f!Bv{*o95}IfFl(=F2rp9ro|~6DnXV?oHT?PUJ;|<!E+IP_r+QCo
zoO&=(UrBDUGyBEu<lG+xo<%*^giNlaN|sd1sxTR=F*7A$Ptu1zHg0c{XkV6lmNNGg
z|9pImyq7zhyE$ppHFx2x^OV`5D)+?m$|sHK>$AX@Yf0JdlTT)oZr%$ME~O?mNq4*k
zjsPu=J2Cra+_dKw;3OKkxe2+_=+)4L=*#GQV0TratRgu@yCOMou0Rl9Y}qm&TkG5F
zAtr?3EOGSdeMKOe)H*4Dy`OmRa_~;cbjKatW%cvdsV4dbNNr^?o(&3Af@P>}SWAil
zO~>PFO&98KQI<+eVc1GG-TuzHt8k-<KVI&=YE=8=;uK3I`LPh#3++x!s{tCu44&b4
z4j~UV#3O9-{kJKe4@*fL4xH$%R+T&XA-&9b?O}Xe25ko^0W1CiHpx$%*B@$h9jtx+
zO8)AiSPe=sSlq9PCI1GYk~w?KbWh}5`8lqy3V)IqD0qSp`7sBA@O>$Fq`4yuA5N>@
z9UJ$l^9m(llU|Av*wl64NNdXAJ;}hIR)%*ymG&Y@&@UJ=J5<{jS^CHERQw+X`GSl&
zRGyF^m15VlcO%9&5pMmm3+!~7<s3pMkwg3aI4zC|xE@VKldCVt+ff;VPtLvd;Lo#4
zAs9(%_PQ##)Ye~z56m0*3zE4`3ftSty5S^>k^`kUdC7M4I6w=71>`hfJy^m07Py?1
z|9-;nhn<#z4|q#l`v+@vl7m&0OqI3+5J(reL*e!;_N0IQdFu^>-ow1Oj`Y3O2cqDo
zA)tEfMT(R9&t|;rDNZL}1xDczm}$7lfz3^YppgQieX<#!0x(b|ZkESi0P497G@YVG
zpsgts1G`kcrPXAitxWLu0|bUVi+lQ=F<^le$pLeT+1M;A{;BCt=1&JVH<lWJyw#7N
zCrmQ6R4d&qkc{)Sc-k4<*7t-mmmc71Nw5Nk>!ZB?^&?*%f=~KZvGG+ua1R9do?EFa
zM5swNcgZh-E@~l=+Y~DR{h2iR)rI0f*0J+t_Yd;A&}w&91v;EotT;_FXEv`Hodn7t
z4Jd1mJXbb>olzY0_MS|m9(?YBs~>FODA`d>SElvs)2BcM_tbXC=%o6xeLVM$a;}`e
z`wOt|WeR|{IlI&V`PnL(IlmDAEB7&;yKHc7+2lj({(zaA%d6u+z{>iX)7Iy5^2x?R
zTVHSNT`3ewK<3K9aV!aPK#3G62Q({^D0n9CR;~Z)5$6M+ws>9}lruY<9~$J;LpAlB
zvZ*HGdwt&I{tZD&SX_W4zjw5hwK-ze3_TlMzc>{LR0=BhT9U(Ow?1^J-Y7n6?%tk#
zLJY{S`+?eK(r{YPS|_J41*fhZPg((j(%S<KAU~@BdB6vGN^{FY*V_87O~Y=#m}J;q
zCBkoAHdrHJ@+1<MDPgDax%%TL+(nkawOJeJk7)yVV>Fc3F8zg@w*UO8sE=|07(zDC
z`6Fl|_|$K_|9?x6Ua_oOZo-gRHzpic6YTJe9^8%4KOZ=YH~e?}?-&CWbDL{VvULCn
zNzw;H^`<gz(qeEA;_a#6dwK@jivhn_CUk?CNuT&2Zax^A5lXULetG;{18GTcy`tg|
z7ocvFRZn5I@e(lo8VMzM@R_lJECD}r*n?r$6D<IEaR?4ex1E=_;AkMFvE;r7nGW`*
z1<+MzZhw8nggGsttd7*_PS#@sv?NMk-dvOg9&^1(?OamP#*ha{cQnop0tfsqB8)&0
z6=fh`ZVmc@E3YpB(Pw9K2URxq;C!xGWpf3f3NthB>|)h5tXFzc>bLJ^p^@@IaLjV4
z$Q)>;mm<Q+9sqw%m;zwmfZ&;tvX>{Qf)RGvwGKMCRG=rVI^_i@(H?-zehe>IufFda
z&fd!+E55<fD?NT0=zWc)@q4wIY*uc$x|p2vK8pbG;epmDJ4OEq`N4eCD;3XXdzJuP
zYTrWG*8qdx1L_oRQ`xff6NAgmM~A1W#)SLdH#z~tN)1mk?^|9bBq$F8N2wkVC<&cI
zNcih{``+MbDB#}*jVdocl-B5#opcA)<_NRv)dTHTwjU21#d1zMf&8~ebi*1n*o(D$
z)Ti`0t3bYY07m?9nkc9a%#Q6@WG$?i5_dgl6&2JiDK=aO;f(jGy9qear<-xwQ`>tf
zR#(#;v%*)C3qG7W($9mNd9m9jUY+4<)&6zVd)j03b(=&^$4>|gB<O9kG|{<jBpY>7
zB?Lh6ge^<BqO0?Zos0#}9}}iq-=(&IBdQ}NC@$6f@W(8+o1gD2Su(U!s(xATm6+VN
zFVUv+J)hTA1a*9^BrZT2%BiC<k9oU&H7wiiBL9=h;z+M$M|UOYH7G0fnchU$TeW7s
zw=YDUT}I4G)1|=Wk(qgR-BH-<82Ffa1Y5SO119Fd*JY%^p;KYhKcv0N+n$wWKZ0N0
zk!l5lDYbrUp=r(M$mW!zG8ODmQQh)Z5rP}%&N@dwk9V9w`0DGG(eBEt?@gLi+vh~|
zseKqq`9Pa=p~B%Ey;<)C2Bjn*avF1ucJszzz+d8;a{6-&YLCd1eL@5j0O!qV;~CK=
z6$X2W7&&Yz2Vny)(~QO>#vej@00*SUnCtd$094eBS&ElL<=qGJap8V2-Yv073B{;{
z0G~~iYeY<bwz`*^Ssc4z9me}oyh6miq1eDRJ3KE%sWcy!tY^>h=jHh4YeV}359x3}
zSWRiejZuB4606|QwonSauAUroNaEg<Wqc$BxAuhqsNJ8X^86lpU)OLi8-gZPn7PfD
zukx_Z(VFSV8IcRjBNlZ-POK7h?Z!fJN;SW~my(bItpSC8<2+R7jIcNZAuqfC{LQ_?
z{-~jy052_V6o1l~+7+aaV_+p|EVPYw$DxFUD4*j-@wCA{zR(t7B=wN;TDbBW?TN+<
zK|2}3HuWm4dbg)JX$ijb1PujTr=(T0+;7ZILt^J)t8Enk)ZTOAXJ|?*CJI#4ASz%Q
z7Uz62?Od;jgy>s=%n0l_Kp=!DTCpkC=HQvTob{j0-<kfPu)DvZarnZ4ouYwH0O?b|
zYuW98odTtja&Y$p$JIo7n2MX`k{Ib}!tsYR7rDjF=7G`@Hkte8lUP&9n+=`$8}eLk
z(K5YZUXB;eCKM;7Cbi@2KXSwZ+jfA+65sWM+{)$r^vi36i>++xZr`Dp+9R+&!m%DK
z_Tz%5x-sb*fJ7}5PS<94a&~6vb~gd(_}C?7TP+!~UO7x2&k*A7wD?HsXDMr4Toj$8
zHL$pN4y1T4Gm!QiUfkVnv3NP*22p24D1~IcrrSoaCQN-TsH>@J$MNo)YDMY8TJgqe
z-z&L;2a|d!>K?^)DbV}0^2uaHR_iwYcws2oUY6m<KVFRs>KG4L^UL+VopdU95?`D|
zLGl8Y4`7zovrdan_~Oo(>q|fc5rVY2vD)ZP6bV35`4JV6Wt`N(s;3N8AI>%@bKS&{
z1dn$xcHnRGKa-XTV2|S@GPdN$Gu?W(y#6DQee)q6w+_iemR!L!g0y7Fvf*vFXV6Wg
zK<5||SvPPwu-KV04sByk`+&w&j+z?T0SC*3yKNK1wR=ek${o=G%fmwU@eU8>H?6`=
z)$gN93kg-x^#C<$ZtFAL7EuzMC-?ja)<P@SZrr-JIb{TPs6f2hW9_+v$4~A$SC!Qr
z=N$U^co<hAt&5hE4`(mUBkb3WF-%~1nu*p?LKU%=*CLAA6idx?1t6ukCm?}i)4_Lh
zJC0^Ne^#pEDs073Ddiy|$M<m8IAQMr@7Qw)l0ab-bd2pLl7b{TChS)td9Ns0g5moy
zb3szNeUz5iEvkEeJzG!@nT1Tv;j)1}Qi`vAdIGb1tM-TSTE0sRdtg{-TAN(8>v+c|
z@!S2guqM;Lj|xv-Ev{MoR(0@RNdm60u>g;=_vb33xiF&_eTXxl_1)-%qS@2xiWl!E
z#-e|+2sosittIH2QGK=FXGQ(FiT=JwxBC5~OatM8L;k7Ut3fFuJ_h%VgrAB<j-)Og
zVygez1QgQ#?txAG8NF5!>$0g75x--TQUrOD_P8SE*!_^l<0N7&u}Xt@Y5ZD1;7cnA
zkBPa@Cd~6o8I{}VcVwNbrcr4>mRH~=bnXGJP>q<avz1^WMQE03=HM<|A+N53Ks_GL
z6<k~x6yDN+Tic@B2qP<Em$`rN#I}5OK6dNo#E%V(Ghdgso5^XFzaj29!N6haoI5IP
zTU61A=}*EoB)m=Cu+nR0w3j-g8sf1x?SWSE2?+~Xd2QZAP7Pt+Kw`-UK<MwOjjoyB
zr%bp`C>~?Z=3I>|_1GmKNjB>ValOV+yieR$B8#EwE{>x*GLr3kcG?fgM6o;Tga~=k
zI^Zcambsjqz*!kygUBHIhK$V0`7C_)m?L&Dfl_N+;@-i^_LP}R$Mq5f+q>gB!ubi+
zMk7ic*`CiDGpG9B#2v&NP3swAncUm-gcT-aGozP7mDf0vkBE7X3rpNMOi1b`h=u70
z-8|=_gy2Dm9{ySG2B2Jb2X08UeMehk{L%h;;sr@6=Y{vX3k(Rkn-DN3iTHQaAaMFL
zDg~FY3cGly>_=SR$@6c8tmEs0(*Ub*<#m7?w)KcGQnl?$<oxv7TW1%qYxpwf1K;Es
zTU8gcvB}5Iud5c#R@{VA+NFXk4Gc4DeH~`0b1uuRbFT<`by10ob&ZNW6@$bt4|hK?
zIGT~cC!nOL%%RqyA7i$7`RU>O&!Hb7E36sJ^hn{6&&J#{p-JYU{`w4A#w5?l#$d-i
z6OqZTW?5t6=M|<(-w<L1g>P&330e!&&P~t}8Q~yQJN#<u6~Ilb+kXJV#t4W#g<(W0
zbO2OCET$W9U_(@>a`nCa#FQ2M72ZgxbtRPw&M$_lwF&3KOLAeC%P<M!5pcu4^9*sk
zi_6t@Io6WsD)^{X26y~atC<?PWJp30T5oOTVLN#w2()P`3}V*x58T@7H{!CfcV?TE
z(!8)$3twOJXSJU^axPuDjy=+sL$-BJ-P8EBK<vq{CgV|$M=iA_Ia)b*&%^?qo-0w{
zYlm4jV3yjICfGgwXEQcWGCAB5IkEfr3(GLtv;v}cv#Kg}LSa~{a33)ygz}z3IS*Y`
zA^@tlyEJsEzbLo%;rq=1Na}`G&C|<d+nH+cTpG=EEuMvV*u<JI2RI&cef+GVft`<n
zh5TsRWeA%5@IGJb^j$yhE;y_`%(bMQDc`;f29QR`po)s)q>nB0?{CL`$@2vRXno>f
zo!cDA*70n)!=#sfPBxSDp0&(yPR2g2K1E7;vgYE~{iNmq&K(SQTYU4eaj%I1<G9Is
zDQns%6yM=LfLyH%n>8xXysb{%j_FmLOPVlfOAwW5@th>!ak)5&?udHBetc1gzs#IW
zdq6AUL79^Lv&7<$>qTu<8i#iGk7Oiunseu5&5`g<m_C9+yN<*|2VFDL<*S)<<!lG0
zRmo~lWrJUV#gJZGpK(}%9bP3A4qR83$u6zHi3<^iJ04b_2E36LjAZ)7o%`ZUR$64{
zg8ixLwOspXtOZ|7+pFgl6#iWDY;>SIG!R=LPY{bYAW9Q#6V*hH%Ga)G_T-g`>YNLu
zb`Zm*Wp(L`RPXbsuaUbMTVT$7BB@sJ@IWSR45uNPzRabVl-NNRj=0?-T9T1xRIk+w
zJi>Jv&L!3g21PyRd&YD!YKr$6lb}v7&zPCutZt69u-5}M4_gBT_9D(lsqgM<RK5dk
zuzWH5(0BpB>6?#}+^`4d!b%S~kf%hP6txevNrVmvgIA&GDAryV1J!0?B=bq7hfk)&
zdGo>*t)~okr8bj_GgPS>Tt;2<*Had+mO`b3C2jaXWU~%kn3xrZ)?B%~19prsNL6+u
ze!g1#ct^N%W$$ZmivjitPA_92%wI2w-y91KYUO3RKB{9G+xk51L)-1kxXgXcZa4y_
zQHEy~D;H}|Vhw-_QQK-~tUK2i-(8%^mHgdh!{5l8Ft@P2y8s|f7}CqT;$a`GUH6Dk
zL~A<ZN#3owIA);9dN5e_AZ1&*NcWs4HKE`G;b_s^?zTRmAm2*zbYRB4AKf-Owb<5|
zv9oaqV%Fa@I#|g6En%|TEQsRheHLDZ)@!^{u?1(yHIDr#>tTF9P--;pny@QOorluQ
zcVNd|?Yy%qesUAfJp(wIBC*130n0-YH={gW5l6YayrE=%R@YpzJZ?L5lGW(YxaVQa
z)gPc`xDiggtKYbtS3f=m|Hz&immF0$+)R2%)Ewn8)5o*&x#IoibA7KuX6js5lA83q
zy`pV2;VHI-GnFVJ`Zo2jeIV0eJA?w;jf+~(If6Wg5teNrjt+Y(;W*Kfn648&Wlkug
zxtQ-R=?2lrOM$RBCczysQ4VbvJTHo*6=o!z?6)LbZcXJ)j8Dk8r0MC&I(vsj++$j7
zUZ&lrEG!*z(j5mS8rNt=vF;`bLt8%I0TOkhXL^`8qhv>TZ+*P-L6qai9;xS(rTd9h
z*r}-tjqEoL_8)~Zn+obZuu2OlR2Riulif6%)tKDwpOKj>f3u-lWq9nVX)PV2_QXZd
z<P9oI=<lA=;R!&Yrw5z#WTGSWWQL-CuWZ`KwS6kdr4w5PFoBC_g>nWGz1wvT76|i<
zz=@B2X;0d4qf}DnC$DZrI|m`Uq?(Q@u3G#)F??}U+IoFi<OCNT(;^(SHYfTuLxc-_
zzQ4FhZ7x}X0^4Q6p6;{5ol;4R=L`iWU8Jm6mwvEU&RWV&KYm@m_vir4M9>%Y<~flQ
zVPy|0l;2VT13!5^!Ct>iqf&Y4WcQ|F_o=R&Tp_Z8@a>qOl3j$gqBep?1^?>JvP=EX
zstX!)<Ub<&Go=0^HJM7-yn+eL{r}@n7SGSvD_gH{NfN(tTI?|hK6JxQ=v?|3)wJPU
z(neeyg~2FKzc&Tt=uXk~8kSO(ae?|+Ob_W^-3+cDP?(mvr^NH*9QKBAPJb&Pn(*d6
zUflD*tNP0PHTrlQkd|7!HkP?q(}J|rL{eOFce`s6E~^a3or)Crs#n{?ej;(oL^6-&
zDOQRT-%2OO>qnxtp5m6FsmJ4hZR2gH;UZ%n`gON+bd=4fnd6Nd*`%d6(6Bm~7`>b~
z?=09&#h4n`Wb!U-xAmJcCE~8UpL`N(FH88Gax`OOmc}v+)Yv>3Dc@$oHu6d2US0-{
zcLRTF9M?VEQDNwTf!uPG#3S5T<m*JeV}jZygkr(?=#C-Y-P&(^z1YRC_6p_Zn#E4>
z^Ds<?8(UsUmE|1l-=t8LtZN;;uW<F3p|L=!FzV()7u$qY0q>&1iRc1@jT$<s6<I(V
zN7}blk3L^HH8Pe>bkrv2o+Y-a8|E>}z%i%)0Y1ZC|B|vA?^u7ooihex)p?b;<35J-
zc5fd(EnqFI$e6EiU3biWR~Ds$>N~IMfp})7*IK6c#e32^&W=jX7HQNb<lpXk$M>3*
zR;Mn*_4a#UD$@30sCyz0H~rp+zJ@w-V7hr6au-D~1tp;mV^mJA7^QKv{}5Vf2TO_>
z+_|<-pleN3CJ(tW5ZaeWs=6u@n1?G2N$%6WLxNDFGxm6v24uE=QPoca8U1bWe=Bl;
z;}82Rkt?q)iMO+bnnnE)oyrx?<@gn>_(V<R{yDb0i!9bxxk}8W#&a1ZU41D-Qq<Bv
z(yXDZLSO%QC!4<F_hMY(ZuQkTl^>9^Tx6Rxu1K6KKX`BS5bw(&cnj9rZ5g#dmIf|~
zjFb=t>I*!9)07^29#IWK^_X`u_23<NAyK5?Dt*cxKi_ejls@t0@sD?N0@kg}8a|%A
zm!+1zgLW)UyGo*rUb4j4#D`o#>kqsMT{&j}N|xvC=^xMklgQ?y`;22~6Z7Ds8@ukd
zh2@@3-{z<rFL8oW66*6ff{Zx<)I1ojCTOv-@m>h%nnLj|*&c@4csIGOcew?UW9Alj
z1+6VOwWp6ZE41}hpB~qBZBsgPBJ)Q~y5Nn;&RYq+c(;j%*RMF?8QDR7QADDPN*3zO
z4sX}4_i9wN`MP%HcFugO9(-bEk_qCuZlT`4A$pZe%EvjlLMg6i2*F4E8I}L2Z8-=7
zcJ}$4;eP=7aF2%=2p;@>j}VTweLyAb`**YXoL9YAR=-F17AjH6UK{1#`?c=vu?viB
zSht$rT-iwv3gVhMB%>OjzYZG|!xpkFz5dRQKl4oU9SJIX;H+XH9}r^&_m6=i%rPq~
z(cka+_se;sIF`F(*VVHa(#lQtH4Yqr7efeWc5c+_`-5G(&FGrvtQseRqU%C&j_f8-
zeI3a<vgzFyujwD2ORg0h+0AG{VZB_>$d!1a$kWpvKHHZMOw;Q!3(U%CcZia%(U&X#
z*Uu)xZk*0^_BF=sG48?&xz~~FSK^Cnf|KTVOr*OOeX2V5`o|gV+9Up__n~oCISQjE
zwjaQyL}V9&@4L>DiE5t*(azH9H$XTUxF>b#9h#17q5n~9@u~9eRYX`ny&KiHfT$lc
zACP-`0pB`ClU^AK@RTqMFfE6m>V+B&egoQEpoitFvwKo8M_NNxUuSO|aJYTpNeMtS
zA&7d3TX<w0&5E>+w^AzPQ_z?7Aj-&>40yH&LrFA0ZvOTlH5m1!3J^T5henPpF~`0=
zoXKHdf9Sf6*oT<6rTYoSs6?^^X0v4@@h8Bq&*~9-vX}%-(^!FYS{w}R`6Ljjv@{zy
z2pCI*<(-03N&}CzCPMrw^r5mD0;Di@ek=f`v}NZzq#P66fD`B|5=wm=`X)9_X?<S;
z4rjAmk}CphSym%4wTH%`<*8}cB2sT%Q9K59K9_n<@`Dtb59b`Jg&e72G<UlD4)6q0
zyU!p<OH0PgBf{qLN?#qDMl2gEO;Cv+C}!GL4j|&NtBBw(P{LL}{~dP`F(W+`p%GVA
zh(*VatdeR-pwz>w(XVbH<3Cgj!iOOJNx%6aKX7xSl)c##C}g)F8zNf(1XNxFqX;JU
z6@XCLN%Z<YWsB$iT6t4$fh6q_&krEz>hLYwbbaw@-CncyePs->ph8l?w+Um_1fY+Z
zrQT5qo)B@|c$y<uBqAgR)LJSR?Ct#yg)&vmD`3(gn1I>HEeIWoF|A^kDCTjXXE9tQ
z>{c)h2(^d;NHfgFA_TX^pZuzATL9_}*Z@inj_-4zotnR;U6ePFNMlz$HrJP8`w+T6
zYZV;rtpE()4#O-GVyjNh1GjfCC?b290zG2**n6-WhxZ@M7R_hL{`#rF6@ak*dQf*}
zZg~Q{i{^>0Eug=M7&YF_cPjnB(s6S;pjXsag$z~CcOC9yT}4Dx&#9ZstbbUf^A>+t
zq!UhwDv#(t_iM^*4|rOxdZzY?>VZtvtK{#B*FG)EyY*4RdO-wIjwSM*KvR9##(qwJ
zIJz|Ajre`!>FU=p`6Mz=;6!yY-&jI<ywfr$l?fU~;f^U>Hk18`;<>z2q}z{&er|7m
zP*@HgbHWXJPll7xY>#+;Vy+sH_t`*-=ATzxt$L3ybA0WR9f?9Y74_N2z&{B&b@Zcj
zM0)o6l;bSbeROJZzBGtd*iaaE42Ask<1_esM5FtM=Wd0F57)w=TuX(He>phS(>>jP
zJt|@@7Bsm61<wGwZ60o7lT4D^%F;k`4u@}i466o{ETlAsKXWftU4=8p8pLHTj!nXH
zVCR*&u`9o=8bsF_dAa9y4V59ro-5R<Wj|;9tR=ntz_T^16dJiHXj_bj$*v$AxkUze
zW+4CqAKSwvJAdOqf;W&{zej9WR=vU93_NP(5cnRkk}I{46=_zA@D)Eo{uY_jJB(!P
zDkn4j{uPxr#H!v0*}lQyccxUKES_5Zxv9Jk1E>X}zbp{Pxf4MnM8pkZ-Yv@cQE0<E
z^~|z=NCe1EQAT#>ID6tg!jiML74ZqWlYz6Zv4$wi1|hS#(bj-mU0luAs5O43X{roO
zQ%~Y%$>g+Ei|WI?HK^a^6matJu%z*0<V%d>nx{TK*6hCu2lfjCIiRwwYB|`LQKK%L
zL^A)@VY0YyHHdNBGIf2%!hWxc+?sRF#RoBWw7a>BG!wW|!s+|U^iy|Wq&e)E8jjY^
zMhiF{eeaZWNOdF1k(L@NB3dgZh8mc$Q3Zi&!Wl?(pkkjgutJup&D~0yhRtn?57tqi
zzOrL^2jyt$wz?laPoVLDQcF&UlJuDC6=SRZbn<0CLChJ@(#etG|NL-L8*&FG8CM|3
zEqw#_C|aZGGXTeG!iI4r>MySZl~t78jFm7;4?8mY-cUzWrhPX_&hslI(e_7*5VY1v
zkQ!qIhHyDW6<8rbKR!abEBw9-S=vpCrZ>c0JWANcSIdg3M=-WW%E9-^YV&@-Ng?<)
zPG~Jw#L!%3OXwrbSr_Y33m(>hyoUz!SQ#=4=brNA;41+MSN|+-U37e35&*3P#yExi
zc>hQuS3BKZa^Y0E*d$|fL8}m+5#EP`>))>$FuYop;|dosCFq}_jyo@y7(bbM_{3oY
z9btSi;_u_H5Et>YEizb!p8Y*QFXQgx6p6Rg!bti&y3izHCq{IymDS%X5f-N*(Bl$c
zJi}L{Wk>Ldv;fv#?<}A%Z@qnU1OAFHe*2xa)`_<ZBzG(he3x!KGMPzju-J`Q|8^lP
zqhq(;#EoNV=IPFvvj@9|O~$<-E<R>2BbtyOas3Wi+Gxz#`ym57BZ}c(&BieIE%$ro
zAHGRfeb1fo1L|F6*~Tk=)UI~@>=0TTK<vb9VXW+f=8du3DJo30_#S7gZ%B6hSr+DP
zk#}*5N)`ke^DL|_d_iUi8a)_{e9rDIp958X`{Pl;sV7v3q$jG#Qp46Q1T#BTAuy{m
z&drO}k>S~OBPyXGI9f#h7Rx>9^^eSHDU#-u$x*tE`gDXfrfk)E=!GMBrR4{cq+%=X
zl;}d}D5vZGppY->xP*8e4M8S%ij#y7PH%}OlDp#T^9=%iLjEWwAx2{n)BhCvHE-7r
z!pZhl6G?hnGra#t+<d1FLG2Pa-Xe)Jm~xc%ba=|eN@AKj$ONiOKdzorZ5Fvvb()yh
z%^6lVpZVi*({*ZPNnj33(LR~Ecd*T*(c$hxQ5I>lC)kbLkZRt@19G7PR+nF?>vT!1
z+a#xQTF2ib65fFC$SQ#h@Xna<ARPvh_SE?}=2CSnF0%NCh*#fQ3hE`!A9MGg{q}&F
z^gdCs{#vex)JQO+SFX{;gp30JHjNY)?4`u*nTrQDb^C`c^>xiGoRuBoi?wtlW6f>`
zPYe;dh@TybU%va01UpNruwraQR>xV%$uugA6UW1Ric5$F;<$G>tHYS^xIYr_tX7dQ
zt7{j7cNTm5?)H>lFKg~oUrw^S&p`I7u^`8guI@wh=l#5KsxUh&yPBXZ{4ju;DL@n+
z`@fZD%E*gJev3OGC`DLKBvLop&ZZ@588r%cV%9&V>$ZZ3$ogrr1K~j|+R;-LmutBK
zlhtbz>|4?v;%wG(G5&%P{G<ERD)1b6XSuCuMX)A$AvmCpi5N12yvIqio;L!D?UnIB
zNai(_)2E{iQxJJe#Hx$sQfm~Qq)U=~DyS1TyFS9c`Q_V<o>IJlKeXw*Cwnh`diQRE
zx16I?)3)%g@_d6m$%I<K;)hvY+$y+-yL>g8u485*>ynUyb=jK<LL)UPV)T^6{cIj<
zImg7QM)1c5RJY&IG+;dv7vw;a$5g4xNSNO`vd<$ofLNQ?cx5Q9cuG+1>TDX@QvJ?9
zT!3Q5e(s-5>1y}5^vrf(*&Z17X!%*)IiHDl9a|Lei&sn|l*1~t^11E`?8-{J#XZqm
zzBl%1&wQAhb(X}`RV!*vi*hKG_fRxECOhpaY1aR!fM3#<={4lR*{s)8>bb^z@8&#f
zu2~itGmCG-C9mgQpJuqN?6w`Ije#OT6|b@#CanD~V(%}&>0=ZM)_?Q)RrDZc_M)Q*
zg%hF?s%B+1$(77TdMC%@88cKZ9^s~ore=V<(ST^5-8N%WI?NMwh7sPG-o0Pxu4>s5
zY~_ADE=f8zU!FkYa;1OBd{me$Ldy3Hw|uHd9lqa^c$4}B0h_oi`qYJZEkto*l<U)%
z{jWkTF>i_QJL$@R-oDBiCik?g#9nT`+_3U<!Cbkaay7IG{{*YDh%?W#XCbcmvi2e`
zQ$<E+gus|pm@D%{LPFumX2Dg0QM-_}@9}M)GFWe$OFZ}vZ|yFacxo~nSNK!mglAcv
z+|rRw_Sue#Rssf>e=lxF_aUpSJ5y3U>D?UdXV{anQmc)QFA9(K31(hQR1t<P<%#D{
z7C(N-;astO)81`H`gRQ>B2Q2uNMEIqQvvtI4}MIJ@>T;}{tMAZV<M%r1le_W^`i*A
zdt-D;tF1X9_oOk8Bd!P<43y%8hv_Rd`I!2%u)4iM)`ISSqw$)}Wei^<6Y2(Tdx=yI
z_UK?(rOwetVjsuHw{^=VO4y%D_^8FlZyzY<msD_a^t}G4u(hW_QIZl9eSZYEMpW3m
zy4uB(7rS`3qoSVpy}8DSTxq&5si4wm?to1=`MnNF!lC>o-`g|%Wic9CQ({XY_Y^Vb
zAnp$?8D7&jm)KAKWqoOoy}ipb4{CYvVtk2s&nmpPJ&wYehue`fw@GVCEHV^z?H~~Q
zjJ_WtHTj2s1+MU+z8!Xg$<x6jccY}!GO-8PA^em$lP=}j8j&k<!I)&8&)%!Pxv`$p
zs6m~O-=;idiXmy|TQ_of(k}*2>`8nJ95`JmKk`;BCM!vM-;<ov!rEUL96vEQ)+Uti
zwX<zkZsl?i1(KF&Pr6q`+EKq4iCKL@fsJ~vR3ZOdIjo6<zJeWHVSFRE7f#~L8m3qe
zm41qUjs0s*<a39eq>JxGYIY?Bhl^6~<0|>s-W?Jn0F$Qkl`(AZ%;L;RmYkT{zcN;-
zl_#1@5WH}z-@WU0`N=y;um&sy&124zan@ef`s%k~<(vph1r@sdFH2=*bGQnrQKiTv
zF?;TG4*PuXmT<opA{YU)bH}hIkP7-!DMNkkkMbqNxXJVEFEl2#)yPrN-<51(@lrFm
zVL8@e$~>kT?}*>7zR2}Nb`$TKh*NJwZO$Yb=xs6xpRaLQSMoD?YMuUm($~H@Y)XBA
zr_v}w7`DHJ;4mH@`IM<sJT!YbBQn%)7-%y|L~4x;I+wSZkkgjhWDL;fpYy4`AhBOE
zvh}>icg{P9cIRG**GJ(s$7G_i=3lwGeE=tLIN0*_n?|T6r`pFC|MUmqg{DNvX{>Ie
zLL^Yx3(VTYq&856SCLsS1DWC@T;ZGj%KXiEb`7>UvK>9Qz0Cn2fK#AwEr`H4ERKMh
z(GmJ9ZAOXf+Ro>0@nFtyd=|{_yw;gc+QU!IH<{SeyOvl13Qy3efJ2G<U0GE4Y)KLA
zz5E5W+PQv+Hq|h$$tg!@vO$^92&Xhl*k(7O<6;|h+1`z4leM>CNAI@i^`Pq~z9*{d
z7)$hjtiE1f;kyX+S9W*b91$TgCERXi(;Ox6Rel04BdpI0xlVG%C;-_Z1*^M?3y`3H
zB;x3ZlmM^jkqwE%<-aH{6L7qfabAq^`zh$i6AQ19;SG6j#wAqwc3c+b?{mqnR76ac
zI2C!oyPlkp&eY+j0R<5Hdl~*Q5W4_T7XnmN=$iQ44+*P{A)^w*?gNDmkZL&w>fGmA
zqL}DWy<}>k2KUXgr1xc_9?eXSjfT(g=f>QO2%4?Qs0h)o*XE{jF7AT(`DaL<;w2xr
zoC|bX4_-;YAFTA>bm`C5I@FJ<!>jxvx)1t6@p~bX4bXn&Spb*0UY?vQ$6r3h0%8k;
z^cjy%wwksji`A{om5z#Ao1VEL9eawD-tthE4*@SER1RXT%Mwps1%G+_9{}%H#rD4r
z)D7IUUX_sbBXcn%zk^2Q3!+QLP?pnQpoc$>P+~Ll?&1pRwVnaM!mNp~m?2;d?}xrm
z9wQfRyU{uG{q_GqV~(UopMk5#f>q?(`k?YTB%Gc<1T<~kljrKkhF!*89~AgZK*2wH
z8d2l=2*sbGdpC9>=`5U}+ztUO_XSvpsY?FWx-=(ecup(+(ZhIl?eYZ@sIypvygj)k
zAO++43x%U|+KbR1&P_l=Lck#^qqA!oSt*pfgn;5H?-Y<#%Pa$d)D`k7N3(lw0t!e?
z&J<1P<PJ52c1vcVTEPr(!)0r}pNbr>qZ3$b#Q;$9c{df@`^wxwoAIkz^EDu;;@1+C
z-1{ajoHCKmsxJKM(lWxfy!lkGY*Dw|Rm{E5<k@(-w_^Ooq={>lgHmI?PI+~fqf=aC
zu3coqmtZzRU|NnGD9(hb{!eJ}D*1b;gK}AhnzsF0OjS^?7ZSSx_>!0<=nL}>;@OX0
zwEP^{6x}AC`&WbX$~8$3n(a+U*i}IA=KK}K5hbANX*b_LyTP(?N%SJoZ}{}U+!g<v
zKBt`3?holjR}{VnZ3c!)yLL-oi#}4d>C$IeR^%R9Zgnx*cr8+W9|klseu)`49Rl-j
zc=^8c@6m-BMFVZb^|EMArc?gWt@5c$xk<y_sQw+zq!UtrFpkNx155u4iVX{sQ~Ung
z7k;F8{0!GAWRq0vZDDwY=QmcVvJcj^*P#QUa6vi>&WJWn)3DYaGX95R7}B>{_|_YM
z-r_N95IU_xV=*qb$FDRl96ibpzkQ5B;0E4L0nz3_!^n}+vQpP{%yqTM!|^x8`U~ZD
z?Pf2li}~|!{Ccd*lz&k`0&^%4G-R_pGsGK9<@~c|TKQkfcM)5h+kfk>%ptImBS?}w
z8Ds{;0j?9r5^0!_IXW?IDeQoE00C!)JiScwBm0`@K(<3tr#I*~mV7PvIjkUd-mc}@
z5x=p3=-Titp{KfjayZ%4iu=rb76*XFVSm%=#C3@7b|1fl)L)j+v5N)`^?%d~A3Ix{
zC%|C?{n2_=u23ae{esNVoNPm^+8}asq%=}K{PxQ$A?w4Z-faMNJ{^YJRl{jF-1U#r
zN*?+9D3u58eMhJsyx#gaxWOGgc%(O(^HI7lyfC*`WFNVn8q_|~y2Fx3ehd|sCg%JY
zfZP4jdKxQ-+gX99oTsB~K}iZ^-6~n=!hyXlTtRJcvm_?(o`Y?DdJ#{&l2jsL89Z_N
z%<=>r<0SlJP0YYy7$I-OI^Uu8?6<vX-I<14d=R^@_plRQ`-8&svwHd@b6#-_*x9vg
zc#EYpKTUX98TeNVsf#h@WSIcnzyB)yob<>1PJ_VMTkrpafXM$W2lht-?AH?gh6E58
zqpolTSs{fWnKz;y++(gfw_1;D-zkIV%FAzb0R~U}CucxH`cC>HETCBPYkmB4fq;1G
zci+hM!SDEcyNt+0k$wl^uGeQ6FAVH$i;|bzK_ui2Xj+wv9hwHknys-wDrH-*mH7k-
zfvnP)$Q=J89ObkNmaEi5KYbVo#LKjhaEUP^L+&4>;C|1=^8#c+dng|>!2j#o^ypR2
z**|(nGW1(w7soC;RX}Sxq(y4z6^P`<wC<dvbOUm~O=B1>l09(g6Fi22t9wxr1ayTh
zWq&WV58}3Ze>6~nK5<+^UY3%c?-nF(pB}x~H{+-9Uu44e)@2`!Q*o#NBP6wBQ}q0w
zNNvk>{`Tvq5Q)9qS-j>SUqlpyPte;jQi8lGD*hmUl=<HhHNWI)sx|(0vX7DCjcZHy
zE3k{Vu=5+Yv_Jaez5ceg7-aLeoK61r%p4Ekirn6)2Bd)rcJQ92;EK@iA^rOu&A>*>
zPS5=<9>nwVJ^ZSWRap};iGW{X&Wb7iN7Uu_gdT$l>ZQ#)_xC;)lmS=9rN#H@fG0sp
zZ>lBl^8vKgCxeW(CCJjN{81iJeD(z9L51vs`uT9)WD4lSxJNaF+WC>M91~1W&DQit
zIp`h&1^d)v-Y$N-yZiq<<)t_o0$2~h>>W}Lz%_h-b(>Y#+As0RlFP0jgt=0KY9Gj!
z<S;#5%92ANg_#OV%)gWz<5Z4-J8;XW2F)WPBZzu|l5T%Vo6w_C*Gq~ldwWpRUK^m7
z{IJ;{p!>&o_4vho=SER;z7WV-l<$miew`PLB*?qe<=!%Idef=HfQg0wU$xTUagSEw
zkaW<W8G6hU^jn|j>F7Jw$G>AA6ez-a(m@fPQ3Xo@I2mAZ_3_m&^}^*?$^k&rhCl{n
zdUj%d`2}<UQW}872$Hzz9+_cD{IhIDRjwyAVC%j^>>w)seo8gNE=CTiK-^y6VI>&E
z0IU2$yvjn4cqeX}_vI(BwJ&loZQcE(lQ0csU={MhpSqwxgNWJQjq7xGV*yFbt#x&l
z;_-*H;==lm9@=-1g(>p(Wn}}t?`WBsME)KrA{N$v#e#kB0+TpGQ*;h}@k0cl?lHCc
zV}HNowL<=%ef)n&(4q1B=RDj2LFcy{0+1~9M!|6<xR_4=FqS)z_eF7F26?>=TxLZo
zezQ6%+kRW{-#f{dvuKBC%3QrI_(yK|*9`o-5Ed5DDfs;_1uL}3odV%ki?O9rZisWf
z7~xo0W>DL!{jwWAb}w>rvbOFpT8~k1f1A9=8GiFG9l@<VI1e1=5k+!HAD%@^I{48v
z#<=#0e^}-na&xphEZBXahEe>43I$oaKB<G*sG!|U`_@|JpGiiC#{V-7a0ar5w-7SQ
z0;C@sU^*B3)NC=~zZj8$gfR67x3W`T2I~SJa9#SeHKxZuLyBTQqRFkTK0;EPzud&n
zThA*zM(UB=8-TPQ6JuA=Qca=MO_vsof_j6DOZAjBI7jys1dS_bG)eqfuzwu*-`?iW
z9no+g?wTj3*Ykf}`#=4u!Uj9T{Go#_f8wtH>4txP{FnvCygj&M`@dEinzBER@<0Cc
z1+(e2GeXNooc_P*Mb%yYW%AVjR*SOM*t!)gN~kEpZ53b-T3`74_ILQnQE~@KaxKDW
zW#I<8;psKH=b;|N=I57J5a;TB8I$*Wrhq)Agis7@KB?i)VY^|3W~nrwnoqZ~I4uk!
zp75dqs{eM9@xS!hq~o9eR>rG;lYi#6>>l?&sdIpj{t-zkRM^{s>P#;|)4kvqH+P3Z
zOOMMP8JSML5MG&t!t(f^RUKc>!lGuaBPahodw*+q{=X@4Xx(`QzmMi~+x#^oL5pZP
zY#x$tSVU*xVxQh)hsRtC$=9pFv0Va#3E^Jc1*Ux)cEcwpIWj?4^5q=dL6rRj|L-?&
zItDZPTJ`g`KZ=v@H*CjTKZL%c)V{NTVg}`qE*PvYtZ=taLsRF_q#41(wn)>zr~7m`
zEGat9K(Q^ofpKBBPPXW|@_yQx4R|(U*hhp_qyJR}`4LVu_Qc)rRHfn10$Vl!hg(F?
zYkTE2m5BtO!VNIWj{hqF{ly3F8e>gH_S^9O7QRy{hM8X!`aUqI`v=kk55|oCw|~j{
z@w{|`-~ZBn-Fh*UZF&+Im1*OLb_Np#*G%{T;~N1GzWrO@^WU<cFw=d>`|r~KegkPF
z$ncf((zZXswHE?Qf9tuvT!A4kWLI^Bq5HWHKK#d}MKLsiLdZ9v;+j9!0N&O-JWe@f
zOB-PRV5~!|2I>72g%6UbMLKxuYF6lf<$!OjqCrD9dK2+{JT4vhZ4bskzPK><MQ%|K
zhI+d3VM=z{FGToXi}bS2XXpw-U0l23QZbR`m#*OgCq)Wqszs$tYSsUCEJS0$Vv+-i
zeaa4k=I(tr6O;$7muwfIXM;ManNIfrDP2%NE`VCOtwTSQYZ@1-Iz8&H``M#o1FG*7
zYhIAQr-svqu_-j4;C=-1OO=J=-(chV&k*TOC5%kx*pH8YMgYlKQZq{n6g+wFGK9qW
zn@j^iK}d7^5`+j{(pgZlAPIToO+i5l$lG>pRhl6VM~!4Cl7rsT<ba~#A&{AiJwZL&
zP+?+bpClWC^rnVJ6ZQA$D=ru<gT`e8WE2nfT6%R}8t`ZdMrVAhdC;B{ooSYLf2juv
za}f|LGC0Jkij=pyB^itCvjCW-K%(>?$IbO>CBLKNw`U-v9qIu$w|eTwaMh@g$KGG0
z>dQUemNLLKLP4)fbfe&XfNR=ksH0>7&PJ%X$8e+BEdX<;8T-gR#S8Z@4uHhC(PDDb
z+yWHLM!Qad0}Gq~%TdP;^OoPW@RMQn8~=^&O_DNFbD}_1nSHTkQ`};F<E{mz8UtSW
z661)PGX#w${^A!}g<$kQhB#;+_=oA4ou7aHGr+uLzK~DqK*164pulgbZEsx$RI2zo
z4iPx&jV&%59OEHSIRAXHo1L7e7kDp+p|eZo%*P)AM;(rGovjS%=-Da^{ef!0?|B0p
zu@6EvTPS--BJ)JxX5<o+5^h=d?#RYgJt8F7*aINH9fAfEiAWV4_@t|h;kQPj5U9PR
z5Bum<?wyw93DT`5*dz62B`*$e>OFcgsQbLl(kL3&>6vXyN*|L_tl^7ZM>GrTwP8lb
zZy_>zN1SskN^zZp*h8;jE2cp{9+4?fg=dis*9#=h6@o+zaPahtKWC6?^6%yPdp-Q4
zlKICnRrDzjw3{@t^(Xx;?ZwM(FHhRi_L@Bs)`QwCAY}j>D4mtq5ij{r@I#y{V#h$E
z`2qo@WT-VM0e);#0CZ%3@osloCbZDCz{g;>C6G=Y`3fB<q+T1LCL%K*1~-nh)rq75
z=YA3N;%-3<$rsTD0qD`>%ZkA0c}9N9R;8KUE&zgNq`lmLGTu-S%&tbN0^91mu?8is
zl>V!Wdr=LnE!2|Ox3-DCtyqE{d5mn(Fnp%a-T#s8GVv4lNRqD7ExMlg()-C>r}_D!
zvI{IF&&C2VNx<!lUDTHF8#Dl+Mf{)=NCG$ezH;~Iw~@TOMIQ#TK2LI^NI5<;a>f=1
zt$+hE+M(kJOYKZBrm?-Jq6qxJ^^P$mkOa5xFw{8zz*yj9E1f@tL_0i$+}23I$zj!L
z<s-GF4|TVf+mcp*)*;_^(UyXWXBx`;Mu<F}(ep_|A#YUw;%>0%PSpnuF4_H~B-9L`
z3pfViNVxuk3AeRQ5^F7V!RB&YWLZs+`I-3x_uvDeA!?zdVP9nRcc9IP1ME(|NIfYR
zEj%5LMB+RKs-;VSDc$mp@IWZK#wWV8yZ=M1(uxy~^cnU1@cRO&;67A?h`YNjK>XC+
zCsTJJ=T<w}9d;PQD}K>@%ea<VJUIQ<pxR|#r2RZ-S`YaRu3C+{{KNG7V^nXz8~-XE
z_;cm4L=Z4`3)-P`$`S3y>I`N)ZLB<Rprrx>(3P@G=N6GV3t428Bssz%5AQs<mlXQ>
z81Tz-N>ID#98*rO!~mx-dBW6}RU}}xCWZYBv?${<Q0!^v2b8@W4h7)qj2uE0mKtUe
z<mv~+N}iK>tVJz>d0nXhtkbUb{C(D83bR}I$s*3gB`6b?RVG;L$Y}55&O(L5ra}i_
z^qqrnwbRzwj;9Buxzv|HviQwHJda%bDeR*~(7PaLG#aePCLMFo>j<K@Yh;zAwb97C
z2(>IfM4!Clit`VDIWqMMaUp^{?(b4oiVSnK6n_t@e|DP`hPN!387FT^aL1r+M1x7$
zp(9lcI;`Sn4NovYGhHXViUW0l;Qe#@W5RZPstKu5eBT!u*f+%6+(tR~ib;<LKg3=r
zW23nn=1?@Tc6Rh=saEzQ^;*IP%{>Z}6@M7V;ecVKkC~)4Q?rHwx#ksM@wF_RQg*iN
zh+e-2`%q&F&jzT)HD(7wNvL8%@%qX_q-(NFbAW2~JlFQ_C`48&@>`U~Y`eb<Sqg`K
z%|>U?5R2Yay~X%+$39t(YUmmrfA^n|{m)){dOw5!*G@l1%*4Co%Vdx-zAIsI3$y$y
zU<HCIVGmQ;D~-c%4;l!PA|7)JizhMr0|(7E<O2}=XuCyu&&27<6FMCrla$tclj4Li
z*HhwOx}uaaST<$N8?%o1U7}Mty@ZC3(b1)+?=ig4PPTE0N{f1n&K+&qqr%iQ))XUe
zXxz2<2s+PPf40b`Qt^h;-adS>!Uicmo5)!z#SS2e1LiR%OQ5o?3-DHI+USg(u?FCH
z*;kUAiE&NfskTl6{c&?2E0KHDW?`cm3fzOTn)LBHw*h9yKi7J7f)ue$jUusBJ4ad~
zVIBCEQ_RduoFC!_$0*F1?Q-0vffRmF{Q@)NaIyFfM!{xgZL&&P)q}glId|M{?te%;
z-OH6w`wWT#ZeowT-m|JcPWUurY8sN<ajH4=eh#NJZ6P)SginYRYWJPm;?zr|VvwxE
zEa7|Csj&%bQkzLt7f!Sbr{0s86p^YIy+Azn7mxK-C>5`8ICE1Jqaa=c+e+Z<4-;%D
z_sSWav9d^LY$7JGoN{^dfX@HN-kZl$*>?TI5hX)WR7j~VC1a5aiA>3maoZVpLS!sL
z*v1kS4T{WDW!T$PZ1WT)Qz*7sl6j0|Ed17ihU@-a_x(J-_j%tx-p~8~ak+M!`#g{H
zIM!OnI@bEG?=pO#z&iZ6s$cZg3A(o>Y*Obl#?2)jrs>QwO<uHSt`%fhM!gs;eH}FG
zjse;06)?<itPByNc-2#Z$nessifW4jeRI(Fud1HQOZ{>VOL`^0yBFv<9TfVB1@QVN
zx4ZAa{O9)7!1D7=oIAOl?vxPCfHSR9S1$8;aIH9(@#aH5ulMtAy<Iu~+$8_uw7jU!
z>n0vzvWBDI*&lnyxqTJ;O^k?`BFE#$#$`nHsf?23ZyO2CJW%-YsHUX!mfF5Y*@1YK
z=x+M+LTnG4Ox9~;J+UeR`~8Bb_fqaqno>MBYcS9#I5BIRFvpiK58P#Sk7Bzj_4<Hl
zsC)ER)!IOn0K0UBP9W)(5A|ali1H~77kP6YGLwm~HZg@L?%S`!lw~q105w1_Trc_^
z=Hom5E?V;v8*8~oNc`0!lCNzo&c+`ohuY#7`$`^Jacv8B{_9n9XK0#9#lE@AK8r82
zXsNFlSsmK)&gI#Q=8EkSKvI(@U{u&(7W=^T9x7?Y=C;G)%25U$S%l>Hn^Sjzx(^Sm
zA@^og7(@fUrTm3!O{=JD1X8d47v&2ssBw4XZl0_&gIWyeS<_la^M$#()Zb(wj!&d6
zzBI7gB<^b*&B(o`ZP0f?^YWe}S+L_2@-}22PVHE3)Km=!EQkt7wyw1oz@KZ%@c88<
z#Vl@8yG?al7+Mz0L?;VBmSSi8)Hk(un9F=+6(OAh-YIG8w<$Qel)+Jm{ay<@=)Sdd
z%<(?nt%3C9#y~vRBO3q+-}b0+j;Gn(yNxoa=8Vaf0rx<;%Fwuo2Hn)X<BWz81G+6$
zfJKsi81Gk8DlgjRvt5@vO8jiRfs^rmnJq`oH0^mAudifQv|Z?vuIv=#(B22_)p_^f
zvt<3;$>-ssvzhw)Ew@ql9^K!tJ@+<^k7ev(uBS}%0TI2?L$ilk!zWZ3<`uUeGV`?C
zEXbN14GAgb?1R-oxd-O&%yI2MZkiE)w^CO28`o(C`fk-=OQZemPn4^r=NBNV<rK+U
zLwfAj7Y1ZTr<JorSQ{Uwa=FeyJ~%)qu<6muGMY2Bdl$jsW;MN-TW)B)rG!VMN$BbY
zxA=0Mr-zj+Ujn0--?eeydKLb{3bnIE+wZf?SBVn*p*~N@|6y~|-r|S85`g=-9-w|_
zmw=BMV@Cf6ovMyUBqit1P{x;pm%e2K>}pDH5*kl=bGYU;=BB>(`~LN_j70cXQq<8g
zh<GB0tv(c1B9hg~tTPWjq_F49`|HoQ(GX@JU)Tsd;H1<OV-Qm`H>Pxcl;)Gjbj5!Q
zMFwhSqqqU3!}(@)QW0y{_I(u(@_iU?do%Z)d|xUw?I-zqC#CP`>(AOJj#a(Z_!uOV
zYZAE6Ly2VfRV4CsrKD(kW{x@`H=k$o;~RYu9T1xg>MM0l`4&(Cs63K!JlDwzeZF0S
zTki-<i`qYS&j28WW5}qI;-~mq^?&KHJX9z)5eux;52>smL1C`Jt}T5bOc}2qWKScC
zg^+1wrPi?5)U6TaKC*Iy@$y;xLL7&bcx&-}bvaQ>57YcvH=wL}{JiiM#pz(ncMsB%
zmHrYlRtnhqVf3kPuO-RU_t4csAToX;t7#Je$^B%(zm5z{$KQ%E6$Ec--fHrcqG?ux
z^9P?BUEmUyA?6X`+L2Zu{dsm7x9XvI)uMA^O^*0T6C~%XJ6l99_98MZ5=t4Q!dyGN
zxoigF&%Uh!?8CFG{ey_6G~~2`=;s@o#khlO`yy%)0mG%(-42cFlk}LXz(D@D&ap{W
zmVjQowVT!6gsicZ^+g77sg+y3M+Yt1vkP+loC^<LR<OMM!RQ@SUheP>(Q~}vlToY;
z<WM+dR8<ow0%xp!2P(&93OHqlZj375Jp9>rRO{s)NCS^v-_6^a7r|dOz!+}gvajKU
z?e-ys4MV8Y5rWRkP0EX6`;URoDA!sMN_;FTue@C`H?xLGhemEZNUrFssG{t)Ew6XK
z*l)bE@^*!(|Jh4B=yXphH3?oFh*0X6r@y`JL%9F>o1!D0^FjiO@8YkjzYHDK`}}r5
zH2RUh>_RM*^S<82<bSO{;(cjN6+n{e0OxLCmz#qtSI#=tXD;gdgzrKVzr9lEBUrM>
z;XVHPFDrDg{=OeROn~1~8thOWRR9O&o+XpwucmugOOhJxoVXrU?lg;R-iJecAlHk8
zfsO6$T~-tMjNR3h&3xbe=G99@BRA@Yq`Y%3AGKB7=X9{$^{b`KeA_k)_n)Z@ueB)o
zf0f!pD|yZk=%**~SfP=MI9Yej?V3*`4u8F=@j^kiHuG7p`Br^E-bD{2tD0~R9Qt6!
zqk@=LHYyTM0h$@SlD_BkLK?!RWtUjlDT4*Y84HsN#twvA0nbslKAeq@z25hgnN?wi
z@9UkH2{Z~OTLYOU{YK+Fswnqwc^K@c{p_f8D4&k(k%64Rvv;^Z^I=|IXR3OfBUipJ
zhROJ>#&!WGlS8HB5QPtrwk+|aP`7)+D_&zJYRqxE%FRgLk!SV*UC@#rlMq|19$|0l
z!|umH=Z?tk-k-z0m;TIawimI_yQch_5X-lsoyl%{zLN==kMVs|6Q6|rw_J|U1unz#
ziqPziC)yo?_Ro8d9x;h}oZRnXA|^;%AGQ~lD`*<~um$*kia%FVM@-+%Oa^KK`PS%f
zbuMSdHOfQn%`52>xaM{59K3o_wQ(O#$LTSqpWdX2C$tWBFhf44$X?#>Q6Kt8H|hqv
zeOpd<61<>|nO=TdtY)~Cg;|!Lh3}2*rpHIi=r}KHGg}0N#d|y3Dwb5}ZTiT-&lxZo
z?A>q5N3C+m_Jn2}E7y+GDzZ{aK9k-%XqY0GzhwMKo2==M5dB^w`aQzUIc=bu$!w<8
zHKkeC^-@UPd}>M$bIeFl!<^R8aQH{Y*pwhlXv*=Uk29Exf;Au6@AX_qNyGWz97SpK
zwOa9~_tMsNTjB=<{G+xN-HNReWs-_Xro5SE+Sh9WS6%Q*FKwoJbR_cubsKH{;`1qL
z$J6=o{Jt!VM2leUQxradswXFJ(w%tv0X2EuQNECpcz3Az_3dp2riI=XUCf7}Ragi0
zNT1Ekw7%_qcp6Uh@Mo%?6C!T*wSGPPQgduy=6RjIY{FIZSIsj@#f+k7AMCpc&sKvG
z-aKdJ@5`b+M;N|{*)TGnO=!_Cxc-7@^^Bw{<xb1Baq}*74spj!2w&vTT4Bsa=99=a
z5Hc<xZpA7Ptg}ffb}y_u^Bin=F9)2#@q)XH$>w;G)mYncC#PkqUp#7pq#qcuk%Ed*
zYMs|NTE?Pyr*T&2lhic09#LDP>97eAKAqaT>nKgPapL*exeiLN^SVjLSabmIZG562
zy%dX)1bdSuAluMXb1>qHG`&MygQ<i#R?kop4(>A$tI8V~i~{V>F{p@DxMl}+BTf|g
zSq0iYQ%Fy4yOYS9N}DTGnK)$Ep)qiNg|~kgy-&<fikG4kyInSZT{rIt1qIbUL71rd
zLvc4~I2oB>TKtr$I$^|Gn+98JU7}t@$&Eyx`9Apcex8|7F~ppbUS3FFooY_CQ*ilL
z9lHZmJbR_)bT{?Q>ED<TIb|=W%A}A2D{qky<+a~a>LEN>&im>KBpEU#zDc~;)T4_A
zDzOBD7j%}){>TgcXG{VD0-Bzl*)r0aVOBjbP#0|rfv5xJYY+02%BP~iwZAF9%a|Aj
zHzp76cQz_*Ryao&3A3i`#ibOSWBmo1PudvdU87i;a?blD(0axS0`}v%0Y_KX;6AmT
zPZF&*(7(+cD{HKc6wk&RO5QjZapDCgr!Cl4M&^b}*wISpyIX#AMU>Ewv90w}L(}&D
z?i*tFdP;qx?ym_ohLoq!qMqk1m_N&vsr~(f^BCnRWsI+|$BWqGF`1Z9LXU7)L>$ii
zk~X1ygXg_{E9&v<hpaBh>W2oI0g#XtF<F%r6FQSyNelS|4YF2f81Js>_8-F`K)9AQ
z>MtD<HtJA1`1i|mXc&viP2&d-!u<ZaH7DbG3W+@qtuIYe6Q18pYP%?i<+7xw8Qk}`
zi#(<7fH-QNoTumb{e1Yu{nrE5_~9=LPq#l4B0;-Well^sR11?g97<T3%0Dj-<dm8V
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
literal 0
HcmV?d00001
diff --git a/components/adblock/docs/ad-filtering/element-hiding-sequence.txt b/components/adblock/docs/ad-filtering/element-hiding-sequence.txt
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/ad-filtering/element-hiding-sequence.txt
@@ -0,0 +1,32 @@
+# If changed, go to https://sequencediagram.org/ to regenerate diagram
+title eyeo Chromium SDK element hiding flow
+
+participant AdblockWebContentObserver (UI Thread)
+participant ElementHider (UI thread)
+participant ThreadPool
+participant SubscriptionCollection
+participant RenderFrameHost (UI thread)
+
+[ -> AdblockWebContentObserver (UI Thread): DidFinishLoad(RenderFrameHost*)
+AdblockWebContentObserver (UI Thread) -> ElementHider (UI thread): ApplyElementHidingEmulationOnPage()
+ElementHider (UI thread) ->(2) ThreadPool: PrepareElemhideEmulationData()
+ThreadPool -> SubscriptionCollection: HasDocumentAllowingFilter()
+SubscriptionCollection --> ThreadPool:
+ThreadPool -> SubscriptionCollection: HasElemhideAllowingFilter()
+SubscriptionCollection --> ThreadPool:
+opt if document and css injection not allowlisted
+ThreadPool -> SubscriptionCollection: GetElementHideSelectors()
+SubscriptionCollection --> ThreadPool:
+ThreadPool -> SubscriptionCollection: GetElementHideEmulationSelectors()
+SubscriptionCollection --> ThreadPool: Injected script will be generated for extended\nselectors like -abp-has and -abp-contains.\nSometimes the standard CSS it's powerful enough\nto hide something.
+end
+opt if document not allowlisted
+ThreadPool -> SubscriptionCollection: GenerateSnippetsJson()
+SubscriptionCollection --> ThreadPool: Injected script will be generated based on actions in json.\nSnippets are allowed only for special trusted subscription, they are\ncombating complex anti-circumvention cases.
+end
+ThreadPool -->(2) ElementHider (UI thread): InsertUserCSSAndApplyElemHidingEmuJS()
+ElementHider (UI thread) ->RenderFrameHost (UI thread): InsertAbpElemhideStylesheet()
+RenderFrameHost (UI thread) --> ElementHider (UI thread):
+ElementHider (UI thread) ->RenderFrameHost (UI thread): ExecuteJavaScriptInIsolatedWorld()
+RenderFrameHost (UI thread) --> ElementHider (UI thread): Script will be executed isolated from site and extensions scripts.
+ElementHider (UI thread) ->AdblockWebContentObserver (UI Thread): on_finished.Run()
diff --git a/components/adblock/docs/ad-filtering/element-hiding.md b/components/adblock/docs/ad-filtering/element-hiding.md
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/ad-filtering/element-hiding.md
@@ -0,0 +1,11 @@
+# Element hiding
+
+Intercepting network requests is not enough to filter some content.
+
+On some web pages, eyeo Chromium SDK hides content after it has loaded by injecting CSS or JavaScript code.
+
+This is implemented as follows:
+
+1. `TabHelpers::AttachTabHelpers` registers `AdblockWebContentObserver` to receive a notification that the page is loaded.
+2. `ElementHider` generates CSS and injects it via `RenderFrameHost::InsertAbpElemhideStylesheet`
+3. `ElementHider` generates JavaScript code and injects via `RenderFrameHost::ExecuteJavaScriptInIsolatedWorld`
diff --git a/components/adblock/docs/ad-filtering/filter-lists.md b/components/adblock/docs/ad-filtering/filter-lists.md
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/ad-filtering/filter-lists.md
@@ -0,0 +1,42 @@
+# Filter lists
+
+In order to decide which requests should be blocked and which elements hidden, eyeo Chromium SDK consults [Adblock Plus filter rules](https://help.eyeo.com/adblockplus/how-to-write-filters), distributed within filter lists.
+
+Filter lists are hosted online in plain text format. eyeo Chromium SDK downloads them, converts them to [FlatBuffer](https://google.github.io/flatbuffers/) format and stores them on disk. The [decision record](../adr/storing-filter-lists-in-flatbuffers-format.md) explains the reasoning for choosing FlatBuffers.
+
+
+## Default filter lists
+
+eyeo Chromium SDK comes with the following filter lists selected by default:
+* EasyList + language-specific rules based on system region (e.g. [EasyList Germany+EasyList](https://easylist-downloads.adblockplus.org/easylistgermany+easylist.txt) for a user based in Germany)
+* Acceptable Ads (maintained by eyeo)
+* ABP Filters (maintained by eyeo)
+
+
+## Bundled filter lists
+
+eyeo Chromium SDK aims to provide some level of ad-filtering on startup, but the following factors (among others) could delay or prevent it:
+
+* Network connectivity isn't available
+* Filter list downloads are restricted to certain networks
+* Conversion from the downloaded text files to FlatBuffers takes more time than loading the first page
+
+A collection of filter lists (known as "bundled filter lists") is always distributed with the browser. Bundled filter lists are the latest available at the time of release, and will be replaced by up-to-date ones downloaded from the Internet as soon as possible. Downloads will be retried in case of error.
+
+You can update the bundled filter lists at any time using the `components/resources/adblocking/update.sh` script.
+
+
+## Full versus minified filter lists
+
+Minified filter lists contain a subset of the entries from a (full) filter list, in order to optimize for very resource-constrained environments by reducing disk and memory usage.
+
+Bundled filter lists are minified, to reduce the Resource Bundle size while providing an acceptable browsing experience. Downloaded subscriptions are full ones.
+
+The [decision record](../adr/consuming-full-filter-lists.md) explains the decision to use full filter lists.
+
+
+## Implementation details
+
+`SubscriptionService` holds a collection of the active Subscriptions installed, which is used to create a `SubscriptionCollection`. A `SubscriptionCollection` can be asked whether to block or allow a network request, or what element hiding content should be injected to a page. It will check in all the lists individually and make a collective decision.
+
+All network requests are paused while `SubscriptionService` is initializing.
diff --git a/components/adblock/docs/ad-filtering/request-filter-matching-sequence.png b/components/adblock/docs/ad-filtering/request-filter-matching-sequence.png
new file mode 100644
index 0000000000000000000000000000000000000000..e11074c9a52c6041b406c4b5b662694d4b11cfbb
GIT binary patch
literal 140660
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%0AcGQoLp-xLY2qdI=nt>Rww2
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
literal 0
HcmV?d00001
diff --git a/components/adblock/docs/ad-filtering/request_filter_matching_sequence.txt b/components/adblock/docs/ad-filtering/request_filter_matching_sequence.txt
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/ad-filtering/request_filter_matching_sequence.txt
@@ -0,0 +1,28 @@
+# If changed, go to https://sequencediagram.org/ to regenerate diagram
+title eyeo Chromium SDK request filter matching flow
+
+participant AdblockURLLoaderFactory (Browser)
+participant ResourceClassificationRunner
+participant ThreadPool
+participant SubscriptionService
+participant ElementHider (Browser - UI thread)
+participant RenderFrameHost
+
+[ -> AdblockURLLoaderFactory (Browser) : InProgressRequest::InProgressRequest(request)
+AdblockURLLoaderFactory (Browser) ->(2) ResourceClassificationRunner : CheckRequestFilterMatch(request.url, ...)
+ResourceClassificationRunner ->(2) ThreadPool : CheckRequestFilterMatchInternal()
+ThreadPool ->SubscriptionService: Matches(url, ...)
+SubscriptionService -->ThreadPool:
+opt when filter match
+ThreadPool ->SubscriptionService: IsContentAllowlisted(url, ...)
+SubscriptionService -->ThreadPool:
+end
+ThreadPool -->(2) ResourceClassificationRunner : OnCheckRequestFilterMatchComplete()
+ResourceClassificationRunner -->AdblockURLLoaderFactory (Browser): OnFilterMatchResult(request.url, ..., result)
+AdblockURLLoaderFactory (Browser) --> [ : request->Resume() / request->CancelWithError()
+opt when request blocked
+note over AdblockURLLoaderFactory (Browser), ElementHider (Browser - UI thread): collapse whitespace left after blocked resource
+AdblockURLLoaderFactory (Browser) -> ElementHider (Browser - UI thread): HideBlockedElement()
+ElementHider (Browser - UI thread) -> ElementHider (Browser - UI thread): GenerateBlockedElemhideJavaScript()
+ElementHider (Browser - UI thread) -> RenderFrameHost: ExecuteJavaScriptInIsolatedWorld()
+end
diff --git a/components/adblock/docs/ad-filtering/resource-filtering.md b/components/adblock/docs/ad-filtering/resource-filtering.md
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/ad-filtering/resource-filtering.md
@@ -0,0 +1,28 @@
+# Request filtering
+
+The following two entry points in `AdblockURLLoaderFactory` are important for the resource filtering:
+
+* At the very beginning of network request lifetime (`AdblockURLLoaderFactory::InProgressRequest::InProgressRequest`). `AdblockURLLoaderFactory` may pause the request, and then cancel or resume it, depending on classification result. Or `AdblockURLLoaderFactory` may also rewrite url response if there is a rewrite filter which matches the resource request.
+* When receiving headers of HTTP responses (`AdblockURLLoaderFactory::InProgressRequest::OnReceiveResponse`) in order to apply CSP filters and header filters, and to extract a Sitekey.
+
+When classifying requests:
+
+* Request URL
+* Request type (content/script/image, etc.)
+* ID of the render frame that requested the resource
+
+When classifying response:
+
+* Response URL
+* Response headers
+* ID of the render frame that requested the resource
+
+Within the browser process, `ResourceClassificationRunner` receives the data, makes a blocking decision (`ResourceClassificationRunner::CheckRequestFilterMatch`/ `ResourceClassificationRunner::CheckRewriteFilterMatch` / `ResourceClassificationRunner::CheckResponseFilterMatch`) and sends the decision back.
+
+When validating and storing SiteKey, these are the forwarded pieces of data:
+
+* Response URL
+* User-Agent header of the request
+* `X-Adblock-Key` response header
+
+In this scenario, `SitekeyStorage` is the class that receives the data.
diff --git a/components/adblock/docs/ad-filtering/response-filter-matching-sequence.png b/components/adblock/docs/ad-filtering/response-filter-matching-sequence.png
new file mode 100644
index 0000000000000000000000000000000000000000..249326043b38c9c667995eba05cf42aa4553a801
GIT binary patch
literal 160751
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
Fe+Rfyu5JJT
literal 0
HcmV?d00001
diff --git a/components/adblock/docs/ad-filtering/response_filter_matching_sequence.txt b/components/adblock/docs/ad-filtering/response_filter_matching_sequence.txt
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/ad-filtering/response_filter_matching_sequence.txt
@@ -0,0 +1,30 @@
+# If changed, go to https://sequencediagram.org/ to regenerate diagram
+title eyeo Chromium SDK response filter matching flow
+
+participant AdblockURLLoaderFactory (Browser)
+participant ResourceClassificationRunner
+participant ThreadPool
+participant SubscriptionService
+participant ElementHider (Browser - UI thread)
+participant RenderFrameHost
+
+[ -> AdblockURLLoaderFactory (Browser) : InProgressRequest::OnReceiveResponse(response_url, response_head)
+AdblockURLLoaderFactory (Browser) ->(2) ResourceClassificationRunner : CheckResponseFilterMatch(response_url, headers ...)
+ResourceClassificationRunner ->(2) ThreadPool : CheckResponseFilterMatchInternal()
+ThreadPool ->SubscriptionService: Matches(url, ...)
+SubscriptionService -->ThreadPool:
+ThreadPool ->SubscriptionService: MatchesHeaders(headers, ...)
+SubscriptionService -->ThreadPool:
+opt when filter match
+ThreadPool ->SubscriptionService: IsHeaderAllowlisted(url, ...)
+SubscriptionService -->ThreadPool:
+end
+ThreadPool -->(2) ResourceClassificationRunner : OnCheckResponseFilterMatchComplete()
+ResourceClassificationRunner --> AdblockURLLoaderFactory (Browser) : OnProcessHeadersResult(response.url, ..., result)
+AdblockURLLoaderFactory (Browser) --> [ : response->Resume() / response->CancelWithError()
+opt when response blocked
+note over AdblockURLLoaderFactory (Browser), ElementHider (Browser - UI thread): collapse whitespace left after blocked resource
+AdblockURLLoaderFactory (Browser) -> ElementHider (Browser - UI thread): HideBlockedElement()
+ElementHider (Browser - UI thread) -> ElementHider (Browser - UI thread): GenerateBlockedElemhideJavaScript()
+ElementHider (Browser - UI thread) -> RenderFrameHost: ExecuteJavaScriptInIsolatedWorld()
+end
diff --git a/components/adblock/docs/ad-filtering/snippets.md b/components/adblock/docs/ad-filtering/snippets.md
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/ad-filtering/snippets.md
@@ -0,0 +1,7 @@
+# Snippets for advanced ad-filtering
+
+Snippet filters allow injecting some preexisting snippets of JavaScript code into websites.
+
+The browser comes with a repository of these eyeo-made snippets which can be referenced by filter authors. For additional safety, the browser only reads snippet filters from filter lists managed by eyeo.
+
+The [snippet filters tutorial](https://help.eyeo.com/adblockplus/snippet-filters-tutorial) describes usage and capabilities.
diff --git a/components/adblock/docs/adr/README.md b/components/adblock/docs/adr/README.md
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/adr/README.md
@@ -0,0 +1,3 @@
+This folder contains the Architectural Decision Records (ADRs) summarizing the most important software design choices made during the development of Eyeo Chromium SDK.
+
+These decisions address functional and non-functional requirements that are architecturally significant, like certain features, technology choices, etc.
diff --git a/components/adblock/docs/adr/consuming-full-filter-lists.md b/components/adblock/docs/adr/consuming-full-filter-lists.md
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/adr/consuming-full-filter-lists.md
@@ -0,0 +1,8 @@
+# Transitioning from minified to full filter lists
+
+The main reason for using minified filter lists in previous implementations of our ad-filtering core was to reduce memory consumption for mobile users. On the other hand, more recent implementations achieved this reduction by:
+
+* Adopting FlatBuffers as file format for filter lists
+* Moving away from depending on V8 to a native implementation
+
+It is now possible to use full filter lists, which include more filter rules. This improves user experience as more intrusive ads will be blocked. This also increases revenue for publishers, who are part of the Acceptable Ads program, as more acceptable ads will be allowed.
diff --git a/components/adblock/docs/adr/moving-user-counting-to-dedicated-service.md b/components/adblock/docs/adr/moving-user-counting-to-dedicated-service.md
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/adr/moving-user-counting-to-dedicated-service.md
@@ -0,0 +1,5 @@
+# Moving user counting to a dedicated service
+
+Having the user counting service coupled with the filter lists service prevents partners from serving and monetizing filter lists from their own servers, while still allowing us to understand how the SDK usage is distributed across Chromium, OS and platform versions, and to monitor the Acceptable Ads opt-out rate.
+
+By moving to a dedicated service, filter lists can be downloaded from any source, as the structure of the user counting "pings" and the URL they are directed to are completely independent from those for filter lists.
diff --git a/components/adblock/docs/adr/not-extending-subresource-filter.md b/components/adblock/docs/adr/not-extending-subresource-filter.md
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/adr/not-extending-subresource-filter.md
@@ -0,0 +1,13 @@
+# Implementing ad-filtering from scratch rather than extending Chromium's Subresource Filter
+
+Chromium already contains some ad-blocking functionality, named Subresource Filter, but it is limited, for instance:
+
+* Doesn't support element hiding via CSS
+* Doesn't support element hiding emulation via JavaScript
+* Doesn't support snippets
+
+These limitations could be patched, but that comes with significant trade-offs:
+
+* Bigger cost of Chromium updates, with more potential conflicts to solve
+* Less flexibility to introduce optimizations and new features
+* Potentially irreconcilable differences between what Chrome authors aim for and what we aim for. Chromium authors may have different ad-related business incentives, and evolve Subresource Filtering in an undesired direction
diff --git a/components/adblock/docs/adr/storing-filter-lists-in-flatbuffers-format.md b/components/adblock/docs/adr/storing-filter-lists-in-flatbuffers-format.md
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/adr/storing-filter-lists-in-flatbuffers-format.md
@@ -0,0 +1,17 @@
+# Storing filter lists in FlatBuffers format
+
+Filter lists aren't consumed in plain text format right after download. Instead, they are converted from plain text into FlatBuffers format due to the following advantages:
+
+* It greatly reduces memory consumption, down to approximately 15 MB
+* It greatly reduces startup time, from the order of seconds to milliseconds
+* Page load time isn't negatively affected except in certain sites with very long URLs
+* It provides facilities for multi-threading and synchronous pop-up blocking (which is a Chromium restriction)
+* It doesn't require deserialization, as it's a binary format that's ready to use.
+* It can be memory-mapped and accessed as memory directly from disk. Being allocated in a contiguous memory buffer also makes it a cache-friendly format.
+* Accessing data in a flatbuffer is as fast as dereferencing pointers to memory, there's very little additional "unwrapping" overhead.
+
+A FlatBuffers file contains only one filter list, instead of combining all selected ones into one file, for the following reasons:
+
+* Filter lists updated at different times can be downloaded independently
+* Less time consumed in conversion than if all selected filter lists had to be combined in one file
+* For potential long-term distribution of FlatBuffers files, having to provide a file containing all selected filter lists would cause an explosion of combinations
diff --git a/components/adblock/docs/data-collection/README.md b/components/adblock/docs/data-collection/README.md
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/data-collection/README.md
@@ -0,0 +1,11 @@
+# Data collection
+
+eyeo Chromium SDK collects some amount of user data, in order to increase our understanding of the usage across platforms, versions, etc, and help drive the development.
+
+One of eyeo's main principles is to respect users' privacy. This is why none of the requests sent to data collection services contain any personally identifiable information.
+
+The services in place are:
+
+* [User counting](user-counting.md)
+
+More information about the specific data gathered by a service can be found in the corresponding documentation.
diff --git a/components/adblock/docs/data-collection/user-counting.md b/components/adblock/docs/data-collection/user-counting.md
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/data-collection/user-counting.md
@@ -0,0 +1,38 @@
+# User counting
+
+Being able to count users with ad-blocking + Acceptable Ads enabled, and those only with ad-blocking enabled, is necessary for the following reasons:
+
+1. Understanding how users are distributed over different Chromium and SDK versions helps us decide which SDK versions continue maintaining and which ones could be put into an "End of Life" status.
+2. Understanding how users are distributed over different operating systems and platforms (mobile, desktop, gaming console, smart TV, set top box, etc) helps to focus the investments on automation and quality assurance resources on the most popular OS versions and platforms.
+3. Understanding how users perceive Acceptable Ads, as reflected by the opt-out rate from it, helps to continue updating the Acceptable Ads standard, to make sure that the user experience is not negatively impacted by the ads displayed to them.
+4. For partners choosing to monetize their Acceptable Ads users, user counting is used as a basis for calculating partner payouts.
+
+A ping request is sent automatically by the SDK to eyeo's dedicated service at least twice per day, if the browser is in use (including in the background) and ad-blocking is enabled. These pings don't contain any personally identifiable information, in order to respect the user's privacy.
+
+
+## Ping request payload
+
+The table below outlines the parameters sent with the ping.
+
+In order to track which clients are "active" while maintaining user privacy, the server combines the values of ping timestamps and a randomly-generated tag. Dates are truncated to further protect privacy.
+
+| Parameter | Type | Description |
+|---------------------|--------|-----------------------|
+| nonce | string | Number only used once, one of the algorithms that might be used to generate nonce is UUID4. This helps to anonymously distinguish between several ping requests with the same values for the rest of the parameters. |
+| addon_name | string | Identifier of the SDK integration. Example: 'eyeo-chromium-sdk' |
+| addon_version | string | Version corresponding to addon_name. Example: '2.0.0' |
+| application | string | Identifier of either hosting (partner's) application or product as sent by the client. Example: 'chrome' |
+| application_version | string | Version corresponding to application. Example: '86.0.4240.183' |
+| first_ping | string | Timestamp of the first ping sent by the client and acknowledged by the server (as measured by the server), extracted from the first 2xx response body. Example: 2022-02-28T19:50:00Z |
+| last_ping | string | Timestamp of the last ping sent by the client and acknowledged by the server (as measured by the server), extracted from 2xx response body. Example: 2022-02-28T19:50:00Z |
+| last_ping_tag | string | Number generated by the client using UUID4 when it receives a response with a last_ping. Empty in the first message. If a ping is retried, the same last_ping_tag number should be used; this helps to anonymously distinguish between several ping requests with the same value of last_ping. |
+| previous_last_ping | string | Timestamp of the previous to last ping sent by the client and acknowledged by the server (as measured by the server), copied from the last request. Example: 2022-02-28T19:50:00Z |
+| aa_active | bool | Whether the client opted into Acceptable Ads. |
+| platform | string | Client operating system. Example: 'android' |
+| platform_version | string | Respective version corresponding to the OS. Example: '10' |
+
+### Ping timestamps and tag fields
+
+All the `*_ping` fields are left unparsed by the client, and consumed as the server sends them. This avoids subtle parsing errors, for instance, if the conversion method is locale-dependent and the format is changed, no longer matching the schema.
+
+Additionally, the `fist_ping`, `last_ping` and `last_ping_tag` are not included in the first message since there are no values to provide from. They are sent once the client has received a ping response. For the same reason the `previous_last_ping` is being sent starting from the third message - to provide a meaningful value it requires at least two previous messages. In order to adhere to the schema, the fields with empty values must be completely absent.
diff --git a/components/adblock/docs/design-overview.md b/components/adblock/docs/design-overview.md
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/design-overview.md
@@ -0,0 +1,32 @@
+# Design overview
+
+This section describes the general design of eyeo Chromium SDK, and how it fits into Chromium's design (classes, services, processes, etc).
+
+## Services
+
+The SDK is composed of the following `KeyedService`s:
+
+* `AdblockController`: Allows to control ad-filtering settings.
+* `AdblockJNI`: Provides JNI bindings for Android components.
+* `AdblockTelemetryService`: Reports anonymous usage statistics to eyeo.
+* `ContentSecurityPolicyInjector`: Injecting a Content Security Policy header into a HTTP response.
+* `ElementHider`: Applies element hiding scripts and stylesheets on web pages.
+* `ResourceClassificationRunner`: Decides whether to block or allow network requests.
+* `SessionStats`: Stores statistics about blocked and allowed URLs in current session.
+* `SitekeyStorage`: Extracts SiteKeys from response headers, validates and stores them.
+* `SubscriptionPersistentMetadata`: Stores persistent subscription metadata in PrefService.
+* `SubscriptionService`: Maintains a state of available `Subscription`s and synchronizes it with persistent storage.
+* `SubscriptionUpdater`: Periodically updates installed subscriptions.
+
+Following classes are also important to understand workflow:
+
+* `AdblockURLLoaderFactory`: Processing network requests and responses.
+* `AdblockWebContentObserver`: Listens to page load events to trigger frame-wide element hiding.
+
+## Highlighted Chromium classes
+
+The Chromium classes that are particularly important for our implementation are:
+
+* `RenderFrameHost`: To find the [frame hierarchy](ad-filtering/README.md#frame-heirarchy), and to execute CSS and JavaScript.
+* `WebContentsObserver`: To receive page load events, as well as injecting element hiding. Parent of `AdblockWebContentsObserver`.
+* `ChromeContentBrowserClient`: For setup of URL loader factories for processing network requests, handle web sockets, popups, etc. Parent of `AdblockContentBrowserClient`.
diff --git a/components/adblock/docs/developer-notes.md b/components/adblock/docs/developer-notes.md
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/developer-notes.md
@@ -0,0 +1,117 @@
+# Developer notes
+
+This document includes general information that can be relevant for developers and doesn't fit in any other section.
+
+
+## Command-line options to enable/disable ad-blocking and Acceptable Ads
+
+In order to test scenarios where ad-blocking or Acceptable Ads need to be disabled by default, you can add certain options to the default Chromium command line:
+
+* Disable ad-blocking: `--disable-adblock`
+* Disable Acceptable Ads: `--disable-aa`
+
+These options can be used when testing a debug build.
+
+For more information about using these options on Android, please check the section below *Setting command-line options on Android*.
+
+
+## Logging
+
+Logging in Chromium is generally organized in modules, so you can enable verbose logs for some components and not others. The logging principles aren't described in the Chromium documentation, but a general description of the levels can be found [here](https://chromium.googlesource.com/chromium/src/base/+/refs/heads/main/logging.h).
+
+As in many *nix tools, the higher the verbosity level, the more detailed the logs: usually 0 is quiet, 1 is detailed, 2 is very detailed, and 3+ (if used at all) is very low-level debugging output.
+
+### Examples
+
+To enable very verbose logging for all modules:
+
+```sh
+--v=2
+```
+
+To enable verbose logging for modules related to subscriptions, ad-blocking and converters:
+
+```sh
+--vmodule="*subscription*=1,*adblock*=1,*converter*=1"
+```
+
+To enable very verbose Telemetry logs related to user counting:
+
+```sh
+--vmodule=*telemetry*=2,*activeping*=2
+```
+
+For more information about using these options on Android, please check the section below *Setting command-line options on Android*.
+
+### eyeo Chromium SDK logging policy
+
+For easy filtering, eyeo Chromium SDK uses the `[eyeo]` prefix for every log output, as in:
+
+```
+DLOG(INFO) << "[eyeo] Annoying ad filtered successfully";
+```
+
+The eyeo Chromium SDK policies when it comes to different logging options (release, debug, verbose) are described in detail below. In general, they are designed considering that SDK users prefer not to see a lot of data in their logs regarding content filtering.
+
+#### Release (LOG)
+
+For notifications that are necessary to understand the basics of what is happening in the application, for instance: startup, subscriptions management and user counting. This can be informational, warnings, errors, etc, and should be relevant to partners and QA engineers.
+
+Example:
+
+```
+LOG(INFO) << "[eyeo] I want to help with partner integration testing";
+```
+
+#### Release verbose (VLOG)
+
+For additional steps in the process. It is more of a step-by-step description that can help a manual QA follow what is happening or where does the application get stuck. Not so much intended for low-level debugging.
+
+:warning: **Note**: These messages are only visible when specifying one of the command line arguments `--v` (level) or `--vmodule` (specific modules). :warning:
+
+#### Debug (DLOG)
+
+For debugging purposes, for instance when an important method starts executing.
+
+#### Debug verbose (DVLOG)
+
+For extra information during debugging, like low-level tracing. This could be operations that support but don't belong to the main flow of the application, like interactions with the filesystem, or very low-level checks during resource filtering.
+
+Example:
+
+```
+DVLOG(3) << "[ABP] It is crucial for me to broadcast to everyone";
+```
+
+:warning: **Note**: These messages are only visible when specifying one of the command line arguments `--v` (level) or `--vmodule` (specific modules). :warning:
+
+
+## Setting command-line options on Android
+
+Given that the command line isn't a common interface to interact with an Android device, `adb` is required to add these options to the Chromium command line.
+
+For instance, to disable ad-blocking:
+
+```sh
+adb shell 'echo _ --disable-adblock > /data/local/tmp/chrome-command-line'
+```
+
+To verify which command line options are currently set:
+
+```sh
+adb shell 'cat /data/local/tmp/chrome-command-line'
+```
+
+If the options aren't correctly set after running these commands, follow these additional steps before trying to enable them:
+
+1. Install the APK file
+2. Open it and go to `chrome://flags`
+3. Enable the flag *enable commandline on non-rooted devices*
+4. Relaunch the application
+5. Kill the application
+
+In order to disable the custom options, just remove the file:
+
+```sh
+adb shell "rm /data/local/tmp/chrome-command-line"
+```
diff --git a/components/adblock/docs/initialization-sequence.png b/components/adblock/docs/initialization-sequence.png
new file mode 100644
index 0000000000000000000000000000000000000000..7d164ac06fafb0f4a9e03de02f081f12cc51bf4a
GIT binary patch
literal 129976
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%0DjohLnl%SheG=y?(b^O(1C#;TXqw9RR7NX+!
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
I+U<dV2Nr7P)c^nh
literal 0
HcmV?d00001
diff --git a/components/adblock/docs/initialization-sequence.txt b/components/adblock/docs/initialization-sequence.txt
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/initialization-sequence.txt
@@ -0,0 +1,27 @@
+# If changed, go to https://sequencediagram.org/ to regenerate diagram
+title eyeo Chromium SDK initialization sequence
+
+participant ProfileImpl (UI thread)
+participant BrowserContextDependencyManager (UI thread)
+participant AdblockControllerFactory (UI thread)
+participant AdblockController (UI thread)
+participant SubscriptionService (UI thread)
+participant SubscriptionPersistentStorage (ThreadPool)
+participant PreloadedSubscriptionProvider (UI Thread)
+
+ProfileImpl (UI thread)->BrowserContextDependencyManager (UI thread): CreateBrowserContextServices()
+note over BrowserContextDependencyManager (UI thread): Service created due to ServiceIsCreatedWithBrowserContext() = true
+BrowserContextDependencyManager (UI thread)->AdblockControllerFactory (UI thread): BuildServiceInstanceFor()
+AdblockControllerFactory (UI thread)->AdblockController (UI thread): create
+AdblockController (UI thread)->SubscriptionService (UI thread): Initialize()
+
+SubscriptionService (UI thread)->(2)SubscriptionPersistentStorage (ThreadPool): Load subscriptions
+SubscriptionPersistentStorage (ThreadPool)-->SubscriptionService (UI thread): StorageInitialized
+
+SubscriptionService (UI thread)->(2)SubscriptionPersistentStorage (ThreadPool): Remove duplicate subscriptions
+note over SubscriptionService (UI thread):Set as initialized. \nNow other services such as ResourceClassificationRunner\nand AdblockController can start using SubscriptionService \nfor their adblocking needs
+SubscriptionService (UI thread)-> PreloadedSubscriptionProvider (UI Thread): Update preloaded subscriptions from memory.
+
+AdblockController (UI thread)->SubscriptionService (UI thread): Install subscriptions from pref
+
+AdblockController (UI thread)->SubscriptionService (UI thread): Install custom filters from pref
diff --git a/components/adblock/docs/integration-how-to.md b/components/adblock/docs/integration-how-to.md
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/integration-how-to.md
@@ -0,0 +1,216 @@
+# Integration how-to guides
+
+This section provides guidance (including code snippets) on setting up ad-filtering in your browser.
+
+
+## How to set the application identifier?
+
+We recommend overriding the values returned from [version_info::GetProductName()](components/version_info/version_info.cc) and [version_info::GetVersionNumber()](components/version_info/version_info.cc) by setting the values of `PRODUCT_NAME` and `PRODUCT_VERSION` constants:
+
+* `PRODUCT_NAME` is derived from [chrome/app/theme/chromium/BRANDING](chrome/app/theme/chromium/BRANDING) file.
+* `PRODUCT_VERSION` is derived from [chrome/VERSION](chrome/VERSION) file.
+
+You can either modify those files or have the functions return different strings.
+
+If this is not convenient (changes of the above affect the whole application) this still can be overridden with the gn `eyeo_application_name` and `eyeo_application_version` variables:
+
+```sh
+gn gen --args='eyeo_application_name="My great browser" eyeo_application_version="99.99.0.1"...' ...
+```
+
+## How to set build arguments for user counting?
+
+These `gn` arguments are required for the SDK to correctly count active users and attribute usage to the product.
+
+* `eyeo_telemetry_client_id`
+* `eyeo_telemetry_activeping_auth_token`
+
+The values of these arguments shall be provided by eyeo. To set them, generate the project build files like this:
+
+```sh
+gn gen --args='eyeo_telemetry_client_id="mycompany" eyeo_telemetry_activeping_auth_token="peyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" ...' ...
+```
+
+If these arguments are not set, eyeo may not be able to correctly attribute users to your product.
+
+Always keep the auth token secret, do not embed it in open-source repositories or documents. If the auth token leaks out, contact eyeo and you will receive a new token.
+
+User counting does not transfer any user-identifiable data to eyeo, nor does it allow tracking or profiling users by eyeo.
+
+## How to disable ad-blocking on a specific domain?
+
+Call [AdblockController](chrome/android/java/src/org/chromium/chrome/browser/adblock/AdblockController.java)'s `addAllowedDomain()` method.
+
+The following example makes eyeo Chromium SDK cease blocking ads on the specified domain:
+
+```java
+import org.chromium.components.adblock.AdblockController;
+
+String domain = "example.com";
+AdblockController.getInstance().addAllowedDomain(domain);
+```
+
+To re-enable blocking ads on the specified domain:
+
+```java
+import org.chromium.components.adblock.AdblockController;
+
+String domain = "example.com";
+AdblockController.getInstance().removeAllowedDomain(domain);
+```
+
+Note: Pass a *domain* (`example.com`) as an argument, not a URL (`http://www.example.com/page.html`).
+
+
+## How to receive notifications about blocked or allowed network requests?
+
+Implement the `AdblockController.AdBlockedObserver` interface.
+
+Add your observer by calling `AdblockController.getInstance().addOnAdBlockedObserver()` and remove it by
+calling `AdblockController.getInstance().removeOnAdBlockedObserver()`. Do not add an `AdBlockedObserver` if you are not going to consume these notifications, as it has a small performance penalty.
+
+
+## How to add and remove subscription(s) to my filter lists?
+
+Call [AdblockController](chrome/android/java/src/org/chromium/chrome/browser/adblock/AdblockController.java)'s `installSubscription()` method.
+
+The following example makes eyeo Chromium SDK install (download and parse) the filter list:
+
+```java
+import org.chromium.components.adblock.AdblockController;
+
+URL myFilterList = new URL("http://example.com/my_list.txt");
+AdblockController.getInstance().installSubscription(myFilterList);
+```
+
+To remove a custom filter list:
+
+```java
+import org.chromium.components.adblock.AdblockController;
+
+URL myFilterList = new URL("http://example.com/my_list.txt");
+AdblockController.getInstance().uninstallSubscription(myFilterList);
+```
+
+
+## How to change the default filter lists?
+
+By default, the following filter lists are installed:
+
+* ABP Anti-circumvention filter list
+* EasyList + filters specific for the currently set device language (e.g. EasyList Italy)
+* Acceptable Ads
+
+To install different filter lists by default, modify `config::GetKnownSubscriptions` in `components/adblock/core/subscription_config.cc`. Here is a sample structure to add:
+
+```cpp
+static std::vector<SubscriptionInfo> recommendations = {
+ ...
+ {"https://domain.com/subscription.txt", // URL
+ "My custom filters", // Display name for settings
+ {}, // Supported languages list, considered for
+ // SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch
+ SubscriptionUiVisibility::Visible, // Should the app show a subscription in the settings
+ SubscriptionFirstRunBehavior::Subscribe // Should the app subscribe on first run
+ SubscriptionPrivilegedFilterStatus::Forbidden // Allow snippets and header filters or not
+ },
+```
+
+Consider adding filter lists also as bundled filter lists (see below).
+
+
+## How to bundle filter lists?
+
+Bundling filter lists allows the browser to use them without previously downloading them from a server. This is especially useful when the network is unreliable or slow.
+
+We provide the following bundled filter lists:
+
+* `components/resources/adblocking/anticv.txt`
+* `components/resources/adblocking/easylist.txt`
+* `components/resources/adblocking/exceptionrules.txt`
+
+In order to bundle more filter lists:
+1. Download the filter list and place it in `components/resources/adblocking`, e.g. `components/resources/adblocking/my_list.txt`.
+2. Add a target that converts the text-format list into a FlatBuffer in `components/resources/adblocking/BUILD.gn`:
+ ```
+ make_preloaded_subscription("make_my_list") {
+ input = "//components/resources/adblocking/my_list.txt"
+ url = "https://my.server.com/my_list.txt"
+ output = "${target_gen_dir}/my_list.fb"
+ }
+
+ group("make_all_preloaded_subscriptions") {
+ deps = [
+ ":make_anticv",
+ ":make_easylist",
+ ":make_exceptionrules",
+ ":make_my_list",
+ ]
+ }
+
+ ```
+3. Add the generated FlatBuffer file into the ResourceBundle via `components/resources/adblock_resources.grdp`:
+ ```
+ <include name="IDR_ADBLOCK_FLATBUFFER_MY_LIST" file="${root_gen_dir}/components/resources/adblocking/my_list.fb" use_base_dir="false" type="BINDATA" compress="gzip" />
+ ```
+4. Teach `PreloadedSubscriptionProviderImpl` at `components/adblock/core/subscription/preloaded_subscription_provider_impl.h` when to provide the bundled list:
+ ```cpp
+ class PreloadedSubscriptionProviderImpl final
+ : public PreloadedSubscriptionProvider {
+
+ ...
+ scoped_refptr<Subscription> preloaded_anticv_;
+ scoped_refptr<Subscription> preloaded_my_list_;
+ };
+ ```
+ And in `components/adblock/core/preloaded_subscription_provider_impl.cc`
+ ```cpp
+ std::vector<scoped_refptr<Subscription>>
+ PreloadedSubscriptionProviderImpl::GetCurrentPreloadedSubscriptions() const {
+ std::vector<scoped_refptr<Subscription>> result;
+ if (preloaded_easylist_)
+ result.push_back(preloaded_easylist_);
+ if (preloaded_exceptionrules_)
+ result.push_back(preloaded_exceptionrules_);
+ if (preloaded_anticv_)
+ result.push_back(preloaded_anticv_);
+ if (preloaded_my_list_)
+ result.push_back(preloaded_my_list_);
+ return result;
+ }
+
+ void PreloadedSubscriptionProviderImpl::UpdateSubscriptionsInternal() {
+ UpdatePreloadedSubscription(preloaded_easylist_, "*easylist.txt",
+ installed_subscriptions_, pending_subscriptions_,
+ IDR_ADBLOCK_FLATBUFFER_EASYLIST);
+ UpdatePreloadedSubscription(preloaded_exceptionrules_, "*exceptionrules.txt",
+ installed_subscriptions_, pending_subscriptions_,
+ IDR_ADBLOCK_FLATBUFFER_EXCEPTIONRULES);
+ UpdatePreloadedSubscription(preloaded_anticv_, "*abp-filters-anti-cv.txt",
+ installed_subscriptions_, pending_subscriptions_,
+ IDR_ADBLOCK_FLATBUFFER_ANTICV);
+ UpdatePreloadedSubscription(preloaded_my_list_, "*my_list.txt",
+ installed_subscriptions_, pending_subscriptions_,
+ IDR_ADBLOCK_FLATBUFFER_MY_LIST);
+ }
+ ```
+
+These steps have added a version of `https://my.server.com/my_list.txt` into the ResourceBundle. This bundled filter list will be used whenever:
+- `https://my.server.com/my_list.txt` has been requested to install but has yet to finish downloading
+- A website is loading and requires ad-filtering functions immediately
+
+The bundled filter list will be replaced by a version of the filter list downloaded from the Internet as soon as it becomes available.
+
+
+## How to test filters?
+
+Eyeo provides testing pages for eyeo Chromium SDK's ad-blocking features on https://abptestpages.org. You need to subscribe to the accompanying [test filter list](https://abptestpages.org/en/abp-testcase-subscription.txt) before loading them. To learn how to subscribe to a specific filter list, consult "How to add and remove subscription(s) to my filter lists" in this page.
+
+
+## How to find out what has changed between eyeo Chromium SDK releases?
+
+Differences across versions are listed in [the changelog](components/adblock/CHANGELOG.md).
+
+You can also use our [interdiff script](tools/eyeo/generate_interdiffs.sh) to compare two git revision ranges.
+
+To get a combined patch, execute the script to obtain the changes introduced by eyeo Chromium SDK compared to vanilla Chromium in the old branch, and the same for the new new branch. You can obtain the necessary hashes for the revision ranges from release announcements. To get help on how to use the script, run `./generate_interdiffs.sh --help`.
diff --git a/components/adblock/docs/settings/README.md b/components/adblock/docs/settings/README.md
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/settings/README.md
@@ -0,0 +1,46 @@
+# Settings
+
+eyeo Chromium SDK can be configured to provide the experience most adequate for the end-user.
+
+## Default settings
+By default eyeo Chromium SDK creates and uses a filtering configuration named "adblock" and populates it with
+the recommended subscriptions defined in `components/adblock/core/subscription/subscription_config.cc`.
+
+At the moment, the following settings are supported for this default configuration:
+
+| Setting | Type | Description |
+| ----------------------- | ------- | ----------- |
+| Ad-blocking | Boolean | Whether ad-blocking is enabled or disabled. |
+| Acceptable Ads | Boolean | Whether Acceptable Ads are displayed or hidden. |
+| Subscriptions | List | Subscriptions to filter lists. |
+| Allowed domains | List | Domains on which no ads will be blocked, even when ad-blocking is enabled. |
+| Custom filters | List | Additional filters implemented via [filter language](https://help.eyeo.com/adblockplus/how-to-write-filters) |
+
+### Implementation details
+
+Default settings can be configured via the C++ class `AdblockController` or its Java counterpart, `org.chromium.components.adblock.AdblockController`.
+
+The Browser Extension API defined and documented in `chrome/common/extensions/api/adblock_private.idl` uses the C++ implementation. Android UI fragments consume the Java one.
+
+The [user setting sequence diagram](user-setting-sequence.png) describes the flow of updating a setting, and how it varies depending on the API being used.
+
+## Advanced settings
+eyeo Chromium SDK allows to dynamically create multiple independent filtering configurations which can be managed separately.
+During resource filtering, each filtering configuration is queried for filters and the logic is as follows:
+- If `every` configuration contains a `$document` allowlisting filter then the whole page is allowlisted
+- If `any` configuration returns a blocking decision for the request then the request is blocked.
+
+At the moment, the following settings are supported for each filtering configuration:
+
+| Setting | Type | Description |
+| ----------------------- | ------- | ----------- |
+| Enabled | Boolean | Whether filtering configuration is enabled or disabled. Disabled configurations don't participate in resource filtering. |
+| Subscriptions | List | Subscriptions to filter lists. |
+| Allowed domains | List | Domains on which no requests will be blocked, even when filtering configuration is enabled. |
+| Custom filters | List | Additional filters implemented via [filter language](https://help.eyeo.com/adblockplus/how-to-write-filters) |
+
+### Implementation details
+
+Settings for each filtering configuration can be configured via the C++ instance of `FilteringConfiguration` class or its Java counterpart, `org.chromium.components.adblock.FilteringConfiguration`.
+
+The Browser Extension API defined and documented in `chrome/common/extensions/api/eyeo_filtering_private.idl` uses the C++ implementation.
diff --git a/components/adblock/docs/settings/user-setting-sequence.png b/components/adblock/docs/settings/user-setting-sequence.png
new file mode 100644
index 0000000000000000000000000000000000000000..259b06aa417b385ee262db42eabc6f01bf5ed6d8
GIT binary patch
literal 61104
zcmeFZby!sG+cqkKgyhhn#L$A2N;g9{C?VY-F?2{v&Co+ghop*1$4CkYLklY13@HuL
z@hzUm=Xv+>{oZ#U`_H}i@%=S(%-n0OyRPfJuIoJS1=rG0B)m&|_tvdjgvv?~om;o=
zxZk>kF^r21{L<|u(+7NDc<3m~-ug6nZ~fLS##_n|nWw&{n>qL=HoBJ$RPJ^HXi_Et
zcfw@Ow7UauVYKQXut|6iYw}}do(OQND$f&bo*9mw1Qg2;asgc)B;<__5>mpJYJ4@+
z7<B!lRigVew|eM!(_>K5zx9`&c>09hPVH>%(WGPZuj(<=HRNipKTkRfBL<$5^lj3_
z5Ul_GYkmzDr4IUaolAfEfBg5)6`@Mf2uHd9=HfpMwA^n;PbcXoP9*>5{r@z{N7WMk
z4?O@{aEM^YyYz6OHkJQ*<bU*63q6VbzxVyW8mDB3fa}o|)<^#|S$i1D`q}{8G=GN|
z_h4n<*H*;KfTM?X<KSt}@9GPm8n^HM`dDw8P`<Lx`pxXNzKPefaf_(??JkX5lr6tM
zLVq7GG8=DY&0W|EucTYGV-ky#j2hbIxOU(731?0a7q}OEvA1yeU6UAx-q)OS-+}F)
z=e{KZM&h+GlJsY=FEr;zji7{PXCrCtzsJlN=mU1Y?EcWzjCiJR^5jF~_U8qYotOIQ
z0yZkr)3&<LAlp2Ro1{U%%giDiKOxzgHf?yhyo`JghZQ?$?6N_L9>>!jnkVOT*YuP|
zPL&n=y<AavWNhKbt=E?egizm(+cpi$uZ`Mmvz(8b+#go=3oOX<zSO>G6ly&kuo#j!
z4luocP^haR!g}xJ+M9*I9e=ZvUj3Gl6yn9W0O#i4qx{h9#%GfO2Lm11A|CCvW2SU<
zGu~4mVtMiHmh<g}kI+EJhQkq6RTCj=m&d;!Wy+ekez~&{!5d)V+h;Ue)ixA-_C2qw
z4j3fP(6z_*x=-u*jKyk>PkfT+w{_m&Q&rz}RWsV$ptJRgZhHT4-~nRy{5LD3r)BhG
z$I|}ZJx_1ea*@Jm@6ViiG4A$18VXMcKr?HPN&pjJ(Vxz5u@om1FT0Zvd|{Om!E!}_
zi1bu`_W<l;ut75+=`d2XJJx#jBzkJB<*3%;D}_G6^+~r>`&RuN{fYkwyW}2xw?{L`
zJ*YAXCI1QRq`T+?fsn%0X3Fa(Utq{I07HHlQj~*|*sSPiUzI#YN?RZN)Hl2T+QfUJ
zPN|H;UC~I&+2V=F{8!!}w-0>^mGOryrz=?<(BSi_;p{rz)(jC3TVp3il@lDPlP?#J
zw1_FH3scD7_NQe87|Wzy^PPW&8`XBx%5^2fE)rNfo^0<)2mUj}7O9TxK4|8+kl~W!
zL(AEQ_SwVc!;!u67!stW<f*m6i+9EEF>9h&nI?a)N?rTK#$RsQNzqXnS|jd!@;+To
zi>hzE+~Uv7v>zjn$b#?;cMV`MwA1g!kQ;jr%Xbh5pLE=@cHu&t?<E9_XS=rJEj%lK
z`Aqs-B}pPXVHRrOy9O{uKVO>!<W9@ECEB+dcm2tz0keXAnjyN15kfAm-EMY1IYy4m
z5xkY~XCzAIPqE06h3zW|e^#zTIYfUPVK;ZV?bC62JjW0*cJ`~B!RBsxHE+{yd!>1~
z-+*KLP|#6z$kRRrsS+JCpBXRhB&I;yflP|)bbFM?pa^@m|2A>~SWGW+x2BgDb@j~;
z)$$~p-`!iffa!<dN2GFnsE}<sQj|Iy4q@p_ZjjW@iQ#SWZCHq;%WMf6@`Ft-|2{Um
zSfsM(ilwpGX+DlGRYdPkvFG}N6|DDtfN5Z8e^B;;boQi6Na0KU#eUz=kc#C2FnJFH
zfd7c*P6vJ3UmLm5n0?jcgd#~5i&lQT)9r|oJbZ&nZi;7+k_@;y$RjQfSms*F&1cW?
z)M+^1ZnQdl;MIO@XLbplW=@0Y$D4QzJhAG0VfFHR)-1UVJ0b!8B)~V~KIIQ)_j@wE
ze)AC=ffsw-R)+_v`ld7_VKsT0fE`&ZcEX*@V#dB%s4vno%Qx!~!zAlELLR=$L8((+
z_uEO5Ngh=uM5HyLSr=ygcXC<>+Lgd*0`~(ChY=VBdHR<JB`)&Y9mG=i;>ETbP)Q%9
z8yI?y(LKq`OHPf<ntT@5&#VvRh$YBRo6mlh6G6yYuYQ-CF;4kSI#`J`zGE0ntq+#@
z@g2v8EU-rmm<QKyGB^^%*TL84a|S|j{%G5sJmBWyM|3p~lN^W%|E*em;f=S2lm<T*
z&}LWrX&qFpCtt@UM@ETi=q53OH3D6OV^a+HGR1thZwC+je%pZnyCWHpUDp>w*PT}p
z5hZR*U0)@FiAB(fr&}opiNS*j{TlG|ln89nv4w_|@w;Jb-e-5?AN_+7S|)%YZH#_o
z{ewE((zo0qcOg|(#GK{z*T2lJqm2j|&q%xg_hWiNC`(z{ms<tv?F#o4|Mj7|eZns9
z{?Qb)^<+#b8K1X_k3_xOG+(KN0dN!xU3Ab`BU;AD>O~$rA!`ay&8Cei)~ry=Ufk|x
z^-x#9R>M-fv!mOXi4P%_S%6!Lq0)vPo?B$YK(FXk9<Ew=?{Uj<Ge->UlY9eXquKH2
zF?nPL>GXIMr3fK!ydAMA3+cOLcc$F>$rokR6WzJ_n>(L}73jW7=p)o|pQ1@glVFxu
zqy-rg5ISZIz}{hwbrktQeqXPecLJf(1=?(rxD4KBNA<1uZN$I~pvX@7TeE(vIofKq
zDyS>gG-H7az$3t4Q9EP^EmI(kt-h-Z5!TOm8-2)Q+023)TMPe=d|axrFr~bqfChgN
zny^kDUvbb?5+)t){lU9+i!<%W)3y@RFn-=j(-53`eOM}WN3!875(X)0*{}O<yS!Nv
zB)V?)sbMjCyqu&*rEz&yPR*U6689B>&72juSQ(~)<y?qTKPJ8;KPDE)@;)63zIqg}
zfNusv98XKtOr_}Lcnno*@p*5K`>IoF3QoIrjJK@U)7Gz`_6v5hB>cUNH}iRI5{%CT
zDLXUa#z)_mC0FS!E5kiJ%m5E;Q<>vZJs_z4l-cJPSjBM{2h3@^iGb=ETzqS@>$9<?
zC%OgKg$&_T_?T?}L_P0Sr4dFmpKGoE4uL}N;If=XJ4ut4tWEhHtjHsPpg`yj7XE(9
zngLh`<QWXuv{jLl3NCRGmn{6PG<r;)%7om8;5H#%MmV)4E{1Xn9Vk+XoD@+Edl0?>
z09zmRlT1?5I~Eb+G6B~0O7?oixOo7=aVz`=qeazW0-gMRij+*=N|5QQG@e({N~qe=
z=Ui8QNjXaF1$Ky!oL<j)SbU;|<xwC+I%!oDOb!cF1uah1iw>6m!F)|fbtU%G3IrCC
zUkA^Eo^gUn5IK@7^5`Wvd#<ol9;6lg^7PTwClkxikcitGc`z%q(bCb~fkA{m;Okhv
z8yX8=UmPs0)5>qZE6t^4&Ic7JO+Ve)+RwW@cY$mJTZWWMrOHojm2D)8_@!IFhS(N)
z;mkq=w_*@@Pgk~t>>ZridV#67TW_o884UmoIfuN)42bi1pQa^0Bd#K){jP_PVZKmu
z<ivSY9mLvSh1*~_z8bVX&AZtbLr@&ZJfeK)0Fm*y?x>vU{&k|xZp2j~-Eo`Z_sjhr
z_Msu>v6-Ort)<_vAgTEf%z`3$J~F?+PLN{1)NB9bAR5ko=*e3v6$i(RybCnDTje0j
zpXgB93y;IS%&7jg+TYO1mv?LNwsu6ie2bt87Zy)DOg|UC4F>g~6br}C7|%aHLRi7V
zH!C?+p1|k1UqUz*LCA9yb3$jUinb#}4m?9kHtYzQ+Pf>VO3%q;tK<352L1C;gAAO8
zt6jv2aGMAhmSqGLt7IrEdkgmYmoBS-?>cCB+9XvOvj+y0P0$x8H3OcOd6c#MX>v3<
zQuzTZCF+V?eTG^&D}4Iue21a1W{S0d6;7|l04p$I%zNu`CF3Mi)~x~I0lgO6Y4Q-~
zb&pA*K;jw{(FojA&NWf8PrKfn^I>*}uN1lT;51bO?yxR#Qf^W*d`+_s+d+*xi4oV3
zPiCXmvGilFaON3}`n66G%H|E;mx*x~*k}15_uy&{nNA6#=Ep(#1oRF=rdN$h2>hWM
zdF)HGrP2F`50#E<)Cr-4j9I6N&nG|KL8|4c8!cQdnVJuCu!7;I9(C6C^}9cn&yNiL
zv87%`z?ND>`4#`zQac{W$7s)&U%5;{W*Ja5$QbxX)vzOq02rwI@-gRD<4()olkFV<
zH})u?q)EgRQA+ld6DSei-x)BOqXBh+l(&L)7WQh8JyHZp4-a<$K|0(H*{<5z0HWF*
zZ8teIxPXMG=_pUVsYR{GNidIdM~SK6r0U&wcUD9n*N-NZ9Q7umpv}r|!8lL#k=L+g
z7N!_-B<ie70!sDV{tYT>?4+7gUS(h9M8Eay=d_pfghgMi@15MY-+#P@nM0!Ojxn|%
z=#sZCbzF@5NhuJXrtw1Z9>qqxR*OmZ+_&>x?Ox38@5GL%O13H`@N8^br)<IT5@AT<
z23{D8i&|5`P+-c8OW`xI0bS*sA4B$MX<&IC{98^lBkA^1hahe?CanqYkS#og$yerK
zgn}^VN+m?rwj20r9g~hMkPV!fz&jF^BurV^Z-h~!+N;1IBXNCo+?s&z=m28hN>IK0
z&Ytmaejy0t7q!2}M*g567(;S4*{;>FU=(J`%rxrTOmo^R8Q)Z*W=%a@2)PSZf`wS+
znH;4IB#&Pw!&I^8j2@79#e_Ji<(>T~T~v%#h#pt(X8uA_iKh56&S80ghR-n%B|&<w
zBK5QVeu{88Co{@@VodyNvU|eRSfU?iC81b*Q|-r`R7M2hZdadxv0UDI{+S1ywq}N<
zBgl%FYOsUSAFWfHmPWDbq$QYxOnN9WYSO$$4cX~O;V5|$=7nnGWYn@T<l{a_49xTn
z^D57NR6|z?oaU%)N~ti?y=FjSu@~;F0(-9Eo^j6TtUB@_0peCAaqHbPv8|fytqr@!
zm#PSG{lujl%|uv+l214X{<H5T>M{PS`@~Z(9<!Y(_1>64xie*xz2gKi*tT5#x<e5E
zu=r4svt4v13fKNjt}f96bbGkZw8bIV^=jrr-datrgz29YIdq>)3;nt^zW>eNIdQ(@
zZRI);Vb+XU^#uG>m}DeA#TtA&{B0YH6Aag??+z)V0{3Z9n3H{KgP{Ka+d@XC%Mw)b
zv`4cmfqYMfU$W%qgW|W1!`s9n&k<8<-rmo7<hKtTDMf}98%fr12cUt!jP~*YFW`@;
zvU^dN!-nXK`aNEr(&@Ol$s2QzPI<fbg}(!S;^rvbK)jvV)N#|Q#9m?0`sBJW7QJ)Y
zM>dkil;lq2L}S`fPhcB;=cev-!=>WUO9-9EeH~Kdz@&rFeU<7P=OBQK=%fE!gL$=p
z`63RFNloHV7H!MwzvKlv+Wf9=);o2_q4Ca{@tG-F646*g7;jaE4Q?0`UW#qN{W5wF
zNal7Hb7%hxRn-Acuyt1J`46hHP?x(Od?{*zE6Jd5F$h@^E3kmfo<dXPAdP#OqL$o&
zDP=#O=%DEsJSJ_@OmcnJLUHJ+S>;J-J`T#)JYcx$Ap`Z&r`qKOdZ#d~W4g#kPiyr3
zR7I#B(lfm3b4f!i!`h1ItGy;vt|%xFF}M(gFM&m!zqXoIG^XUV5c|=_*3{Zf5KG%*
z373m;!_R_7al4bEpqZL(Tcg0(6wM<z+pF}W<51!N^Ui%1&=gO5Hd%!ouXBccd`+!V
zuYdKWr{d=|d--kq4fdbv?3aCv5SQoamI&Cji<*;!$N5%0)dTm5@97U8DNK&C1y0A=
zI~`rH4M$ECL~@vdq3dQ7L1Es~1$h>Gp~RmnrFft!(;h<-evMuU{}e{dVE|%9HSG6)
z{(ECF@`fH(-n)v+UbYgQ2se-eGZFwGWDa?|*DGk2!G60=8=Lta3@kUOmLah0x5}8w
z9k?6SswP{!$F;p4#aZ=4Gv(pA2bgujG;}N-{@(F5huBCuah1(6idzTm{rr<@wDHk}
ziEV}r*r&)vkm=VrTWGV~Ij1`)6Vgjcqa41j1iyUsSA?3;r#PeJC(onZ;FKI9yd=c=
zIe-Pxhn!#rEO?mG-lL{f9R3xX@;=Fz3my}$b0f*R+S!-CzJ65t)OvMhz(cxt0^}fs
zSx!|w2Rx}qkmXcA2)$7v$(z0-HYbmf^l{2?XYCXA;$hhI@aT<;lz|x+G)?eCd{$_)
zBeP5qqFhsqjz!rtVr|Pvns>|UEYUAI{JL{y2(HjwT#DX&*VoN{+PGOj1?Bt}<py<4
z_=Y{9JN<7U@cSkZFzbG;^|t|&;Hl+^KG`l*db$M^z#4B+blzgXko9J|Q?-6^Fq8m#
zwV9^s$>JXqv}wg)G@l;B^O>UsJHZ~DL=u`#szU?{omVgKA@fo?r0-_pBH`fNv)~W^
z_4(H)y4L<#wfHA`oD5x}S0_tLjy>pvDqChrc-7Lg7g&UT5L0*VcS?vU2jojmcTPIQ
zk4+)fmba}bBi+>}*Fn+KEcO#d8FgJ(6&F5&l}c@tSh%Wn8}nh%B5!coooMEGVQ`Ri
zoM^Ezopa6bg>F45@?N-sf^`*2rujo<7p=2D5v3Fic2itglI+^FQnj{GLBsuVdZsuw
zPPFK6`>ph6Sd0`Y;~U2iXI4gWT~{n)x+ALEBAscgrV1Igk@Y8SbOpl7YrrD7Y?OY#
zija8Y17r>-U)nYmKPQgxL4rs>W^P~C1j>0g#_1gsOVb^rmQ4);fB!7pjkMYD8K1o!
zX&ffe4xlSKOfv0dA+d^f?S;sgWm#;N%V$nw--QUb#_$w-Rfy|>om2N0#eoqctZLhV
zyXApfj!S;0ZHxlGr8(X&rc5RNDcyxGu;-)hUy0UW{qZ5jSSRzuh%nq(psv+9<_)4&
z!oVW3OjT;@g7JfKPTOb@5dmldkq80@wE*M0@W@+BsUFq@<yZT~UPs?pEz|U4byWmF
zA~GrWKn1w^;BO>u_lBZ|_gTQvr_!|kzxL+>0^*buTd*{XOkQqLTSR&ez6Rh})l`gA
zzg*tsWpUoxQx?+SAw{xhdv>^wO)pC%63;4YZ~Jpq@31>3yp$H-w|E4GIT&#+rl4LF
zuqC@{g40A<^EmftMW=$kd6VQivC7;hE6!2hg79>2R}V?L{UWiJI{uo@Z#5|>wg0vI
z0}9ixP`oA(?8=G1Ty)=qq2i~!O28(xajPzdp<xoJLKcv)T|*43G`XA-hm{5Q=W5Kh
z<?4dRovH^cAx}t&weu(d2&{VcMga)Kk9fK7#?cA!1lhZmHy=g2r$(@mdZ7YU>GI1(
zfa;ayp+NR$5HeeAi?ffC&wr=c=fk6LQ7;9vPFbB{aGH|wWLx0z3>BM3HubS+Ni&&^
z>RdRaWUi0rdGQfZT3YMHGCstTImGOwovQ0d7Q86g=sQ|B{PN#2uN;t9iPb!_>tg-8
z!kk0K_$o0_2!yM2r+^7m4#Pszy5}3d1WE=BgCeWhtMU}K3G(@*>wQwV#^5_}7l<U2
zC9J|(4YCXh6!t&b<Pc0m!id0JS@-8Ybt>_Jf1KEpYbRwVzZEZ9KA$~q;kbnuo_Jb=
zTAudn`{{`2qrAI`)62CCVI~EjfqilZNX%o-N$kvyccM@c#4&iAT&hJ6wh}qi!XJV<
zv!E@0=GwPJGS!uxp44GTlFN(9-EBF@*@<m+W~<$Y8T*1n`d(o(lv>geL97}(1Ha;w
zCWa_Iv*vQo^j6F@cx&(E1IGl_!#bkqUvg+scCz~Clg8mEI4w>?hRDA5?ZIs8oEc@)
z{2z1ORwP4YeR`64wonf&5kw|0V85sG3NEammu%2!A!UvhCKw-G22uiE2zrDURGUy?
z$6!PG?k#hjybMRRZ{m!RU(shxDAD8Xft*<)^RlqbDMFOq29ZN-k-|6dj-j}D@N(Bt
zXb~$^Y2Ma|y+R%b-&M(CGC}#D0Olo$7J9TW_hIp$0EX)}E-w1Pei(;fGVn|2dysh+
zCM6ZE)QUl^`*Zq#Li@<H5U`K$ufc59zwPr(HUwAjNT2m{Du=%5kkC!cNiBH0=}B8R
z2<~Ldu;R36WewSpy4dY-gU;44Y*nNVU#R>sZ7pY@Jo93#y!a3Hd8&u#H%(lHT-u#7
zX5RF(t%B6N)$pj;=A7(kULD>XI-!`^>~v~g_|G6P@KO*!DLA&)GWSpTi^=ACJmb?X
z;dYuSdd|0R!HUK{@5#LRlYk53NFrC<&wV=i=>Cqc;xu!1!pPn#fMJ(z-@C6PYhzc8
z{+XK%QZ2Mzz01RlzvssM2Ua3Y05_aiYj2nn?0%~C`tRP6&0Bc~*vC0j(gPK>hPd13
zOZ#sGBtP3G{k!{ZSo2X29S72R|CzskqV)fwO0M%lz+)x<H}ne{D4DXBGgh<z2jlVY
zO%RTB|9<~7hW~2(|3dENKRe6e?u_}jfB&zJ|JR(TXaHg4{#^n8|G5b{vhKgT^3Qy;
z0vPhp?@orq|GW;-##8?;+kZSJH0dVXZ+g|A`}dCc2b}(|kCgx9{NMfj_Y<XifcQhz
zRK`~GKi22pVS>j5|NZ_SkI6@4DUc&?0^go$mm?M}_1ot=t-(+5^^$ZZ>Qjrr{gGHI
z(rs7X6{)*3J3&I?XKRIF1L68<ZMX0?f&AJ6Ay3(p6Q;_8WD(y-F(VU>rSX*VUt-k(
zAzH;=7u_n)xQWjU#Z9O--R+-`#iGS?dtil&IeHrS`H6AB-q+;^p-6=ES3D<x$XHm(
zf`0Pl#4&1$pnPs$L9@F-nkdbQ%MI`k7PC!$#VA#iN1>>|^Qk%0u|*>nyztVzpwCta
zF`HiU9>7IBVRM~wuJ_`07aBJYqa~|eBc(RI4Z!|$;kEp*T>V?}+q<LhM9LX~M0SVk
z8Dh%6%T(rehco~rC(m`zL@h-9U(A8&#Oa$WQ#Gf)iI*!!`>U}O6wQBteE^iiA2aqC
zSo^e54)`%+EZ^GgY>z>_=xO7I&!Qag=|_XY%=cW|Fidj#7yvKUp*Zi6cW!)wQj{bm
zM~0O*en17DEJSrgbA1v%QOm%@J4|njrFqm2)SsxzN8(U{Yj2|3Rk%L>SekzM5|~2*
ztQ#`I6sX~T{ou*$9(=LH5anDyQ%4{#Kn%<Z{%s(3wD$$L8(DpD8r>`qkRHaj0sLGL
zFt}YF*Od>b98s?qd7n0HfZkS-2%n;pDUhu1Vigc&DG!vtrpM)yp6sW!8mFU7{FYPw
zGxarj0Jj&`c0&NPLwG`80?AhXG?wY^D=H56J`?#BjoVBd?&o87$&r^<Td6Es3V@g0
z{}BzY7x%KzI0H&EQ&OX*%D0~}<)c2Ts6QvdLo?^22D*C+S@^VordJF4=%a*M{Um7`
zU}pPtxo)nG5LsscR^!^hpB3+E1mJQXJaG_VNlXX<3o)=KB(+HcP0ypu{@mJz1+X^F
zk2hCStrP_V{_F3aPyn}o|D$L*QCbrC7LYBjavKwHkXsDET>N$Gzr4A4Z2@q#NqX`X
zNb65ep5X$)yH4_Jx!b3}w*$9*4m^Sspcla>6#xGm<XZdszgmF*uMJow_=ltEL1x8P
z-BjdKyqJr*-^~X1MI#j3eSlc1WyNCjgW*DLd7v}ExL$!?8`@^Hm^SWN@&>M}b{wvM
z?}!1|I9DKriMrv4EFviM)<iX<r$2#KBxPtIE-w^s9G@`Y#5xj!4hvlYnpf~4W^n!G
z(Nt9M<u5Y}IO}Va$)GJxU89~p`_4f^wXyHFho9F97J9kL37`PM_IVI58{qdpOV2%e
z3s9X@5eb2tR+R~U0RJ#P=G1mDqRLAMRFQPe%Efeo8#{=^!u6Xso-O##otuuoDEs(%
zFd1C$7#@+6PXIm!$`iPbA8Yj*etl|efBEYp6*Y8k$WHPgqh#6X_}Fhj{POU7#F3F-
zdDgM;c|OSzKu7EXg-)?--$i)DkxU1Vd$ZmCto+A>zWAQ#d%q}>8&~sKHRq0}=B@-K
zOKB3C_fyL^pXp`h`T%L0#SKp*zJ!yZ)9Uu+4pryruM|$*c16j3#HZ?~PY_w95?+K`
z*LjQ*P`klw8hiGf5`lhv(E*R@rI;h-Yk*|=i>I6g!sJLmuTTNwUXjGnh(-2pPE>nb
zmr&sZZ8@67xB&i*{w`1}!#|$&hc;|h^~vrN&KOsdgQ*;3O1=B}yT!}7%RW@82m{%}
zqLk;=Qdb<l(6p=ExMj@4_T@A)dT$_OELjeo=rg5EC|CIm(8G)2ms`+a|L@?-4gJ=;
zeGlu6vz-XQChk3~3;AJ0cYUVa6#H?0_ec{>45!Zmd}<^>xqLliZbq~6!i9w5n)tO%
z+1#0nj{$mX@3{>b61M@9NSN^g7!lDNPzY`OL@MtxhU<}+PX#_slq16X3ro&7t2+Rv
zJtoL&Ly43EhF{n=KgXT>O|f+^4oYxC<8@>@ewwIr@*}!&&+RwF2ZL{+dNVolcrG{?
zSRnQrnS|ivrq}Pro5w6rl>5q?x53*si&_K68fPi4&c<3J%RYU6@$_;_zhysFOAw(N
zd=89MES_w;>0qz|m^|;V`iLot7TMrwE<~U86(IG<;k7fec{yJE<Ax$0&r7;Vt*EeR
z!rbyc0O-2_P|0{PfDR=9OHI%q*0!p0Q1q8LbaNmyE|7#Q^`@}5a3k5FSIPCC&N5E^
z@t*i>k*bxtJBhjYaUHKJLrQpmJs?n#J<k`2o_;X%Xf-c5=wu|Vh1{j}@~F)>tg;W-
z`?Qj0!wHc9ty7gK`C+E%;gEbZCGz8Tv-qilkDAyX_OAh<IdPy~POok3Jp$!BGXI2X
zSGMY%f~KgWN1(d_03)bw*(z?)9_|e@x(dvIYy)Z#OV<f?p&4>|K(4WdP4e=le%uZa
zrP*cKTa&t<lF{NYyRjRE%P-5#@k;05pTe4)FHJ)XB-e|Q+i$4TlP1>SL){yec(XJ*
zF=XJbVT~sE?G~UAF#(uFE=!|sT@&D6{u92e8?A{jJra;qSTPK*T~u}7EQQNd<Q3pj
zx~__yz{kL9MjzDOs7n^U$q_qG4Nl(I!b9|#2LRF#{FKzSvY&cJ&Y@ENfJH7{--r#i
z8dA1*G7PE;q)W}}Aa-?Mu<5YC?jXG)jZRrW1+i9`5P3uT?PU`*%<jLg?~J-1=0{2f
zDzFv>ApsU5*eXSpS4Xeya+x<6&#}DOyMG5*>zSX+<Vcf+Uu)g+G1KgM0Rl(z0RLm<
zRK|^}QMI8!qN)J7%A+f}EMte_)J5y-?|E0A4Z!MJ{&4*)G?iNUbME^XXbY}o|C)M!
zclSkVG%2!qlUJb+cIQJkL$J6)zW3x@T_$RI9qQMSPX-@R4VpN|B7%8QUK>1JW8-vh
ze51b!^=EQ73<nDYXF1ow3-<BNPGtMkh#OJG<$uY9Y#!ii86x^FV}&Jvm~r(HirJm+
zJYOSRtxOX3Rfg@7(;1LTEWnuKVMF(HXs6POiF>1`!RPr^@SEL*k}hK0igv?>3NU5G
zi*CHF*mz&oCFC5P&RmmOzZ}Rz$?E?7H}*q!xU>Y217eQgZ|5A+eT2Bo1{IParc~{|
zjYIi-Y(be{PhE5jAv{AQv!)Y3y`hlG{L}7y7;#sKgf-{yxi#m^)J8L~(9UK0fK{WP
ziqLNq6j4iM>T5A?7%~n)?{9Y1x)Kiyd1fl;4r-JmBywK{o%Wg02kpg}bt;_{KzNo<
zfT?|atrM&G`uU4@u4n6|L)X=SVn<?7T?~ZuTX|i$fQUmaANS9s%XJh^wI!>-rU7{j
z)UCMG&{9^h2E#q{r#@JLrXded!tBXtbh03D#K)yB7Kpob8QJ`7Qt4ocyFkZ<7_ICd
zt35DKmhRnsP7`MK;1#Y#0a3*-Sf)IsAq%kgn4JKkeJ`6>>cTbP=T(%{g~f%KiwYYt
zu9k}iS|BN0yfRvq+2-d9K!`#F(8Er`H&sMG`?nXD`+dBv(r$Ee3yKfsrjZ^U0G!?P
zO>bGczmpzJBpMEgT7)lFgj(UmWMJWjJrtdd*i!5xaJ?;j%!*Aj_ukib0N3slbE=>P
zy)!@Pm5kASpDX@I@s^63`L%Dzjflq0l32As{p4CRXg_%`RjGIGy@s%l7*R?Z-5%g5
z;pKwgDGdUP4p?PlJJDfBKR$-&qvK0{-J5{|zGD>#u`ixEgm2%7bsA{XbQ--oo0X?l
z=+CEDC8-Ps<Yd3)?cK5un2Gluxa>2BU&Z*(r|4?n0d-96CYG>w#6i1Zdp^_UuyQ~O
zaNwpj(@=X`JL}@|FX@N=yaC}XKnE-~r>IX`)p!+fquBk5<_a{e8Y#}=H3JsO_Uc)-
zDbCV_nidEb%FHfbNHZpBZmXU-&ekw)yb7g9Jc6KHP0yZU^Q$E`u(tpzmTn5iGsu~n
z-usN~;qE$8r1*y(;#CFL8@(OBCO0|4z}KQN`UWH1ShItx-tAF5DA?xYy=0$iObiBB
zte3A#Stv4OlKL@6p8`rLId105(VHPqFZAa}!R)SD48g6uFNb3m_tt-xYn)9rk%?fx
z8#puC?`#Y8z8ruCJpy=YDLk%E4VD2VY!f4~W{p>`tLhiOZA&tl)ey5SaTj<clOt!o
zaUIn+lOPYt4nc>UP21hVe2otY14*D7B)?_m<n!9IAQK-c);d7(O>vzk$yczt?t?<N
z{fYN^uPBqDvy$eOnL)9Y99AP;A1QR^G)?^;md{w~S*d^1{B~_8znx*1OVj-kvOq#8
z_k!I$>$gk}ZbnleiQgNk<sdby_fJb?4rOAO?eWEheCu?GI)#5Hb@|HwmH`0x8Pbkq
zgnK?4C=R;?rK<NYQ=9P(E}Gguc}+Xe6z3+h)KD;E@GceQ{9En5!)$W%u?`Kj&+u%z
z7=PV7QiHBE;Y}cO+{l!6IUr<QY6#<}vclTNJk#pZ95`#~l7!85Fgjz7E4K~<o7L2=
zC@8Gy(J0GY3S#xv7URQ}Cmz_`)b+Hy?pxj(Z%kS-{JY-79ZYHDmDqrgH90rn$4?UD
z=Bg5VU=MX-4UK7ws7Ox=WX`I;uxAk0^?P0Sa&-TLrDR6{j%G(-Op}$%@W#ZXQ?}+0
z4t!w;#|S;=9Hh*Wc!Y?$ci)q3VoFUsLF-TQQ&yiMS{=rM6I=I|y1V@&oc*idel&v|
zsR&%XZB1~#VfylrpDpRL>2YE$woY3voF8k+>5fS_T|b4(Zfs)VcX@DNzfPIs!SM;n
zN|OWK=K_e!QlJdoVlLG4VGT1l6x3Y9fA;7sxK~p`YiwZU^@YUo<5PLugF4V9<K>-q
zKeH2B?fSd3Nua3TFv*f_U02fItzEQ^o%zXKmFlI(0n73{i$q^~!y?~e(u!b0Wiyc=
zq_({^4CF#Y%RUl@A@V8-&Yk>%ZFxHUaS{uWp-sVoqAcII-B<Wr#U*C2Vt0FZNGB9|
z1gKakim@yyLuJ;4uQla&UEds7F%G@I4QQog)^7Qp2)t!b#<hitV|kSAH*YyZW5$*m
zQW9|peo#Lq!H_ZaeHKBX>~f2ZTWvh6_%R;JrSKcvz@7q;)jX?Y$@CK^3HP1c>Q^ou
zg3r3SYlptn-<Uw73E~d=>|4TZF>rb#2;-0R0Jj78>JqwSnY-o0+6gmF*l$o<HI8(b
zd-5^H*bl^aY1a1J<`)nYZ?+~u$1J3Yk|EbCGHs^@Y6Vb7awJUdjP{ev+!wEPN9rP1
z=&qJb)9?^Ksz7Sq%jm3OvnUiUfv=4#hHbJLIIu{plZ>NP*4dG@M8o&3eiy2@VtA<J
z@8?mzpI>+_O|UDf`@F%jEw{JVYt8@U{v~ao=yGB3a&9R@;q{6s+9E#WP5(y-53$dg
z4htwIKuNn-;VDsBmpIP6{Pmz09o1kJm<lg^ex=23m{?mjC~*=^@ri)jFTb>2Mshcl
zxD&4R+@v&sK+rdG_wM5%oWbu-J4V<fO01N8$pIThtpi-zlW^lR#axg$7m9aTZK%xl
zV)A#rTE3B+y-(gZjS<GZx+xdO^T}srM`ft{f!BtIyfKu>SQ`T^EA5;>+EeI;nDYHD
z@k6}Bz#516)gAjR0PBO91JXYT4CY^(@8$VF;&P`UtJ^4TNT5k35pNStt?PS5N``lp
zGc%Rt9})x)Vipq_>}$$E70;=~SO7L?CWe^$K)eA#p|`>~^tljIJCZOvCNkSeqDy*#
zM7KFW6TNb3bx?4YFYs50z@6x-DRBHkhz%<Adc$*ebQ3x5^5KUHy3W5uFzfj7tba;q
zP@*3};N7MBrf#;MRPq$i)CZg_L`i8aad+6e++&^BrPA3wpnNM16f(+Y-6A8xiRX>U
zL4_O$RcR_Kfv%QV=Jk#}jFje#M{O82w7hj$9;@p@=AnEgQVzAXYK<)|+~Blx{C6tn
z3YH0nO})(SMiP!0WZ$IrnygzojH7<>&#p8wF-sV|JMTIN@g`Crw<cdMiL;9Fw&Cw7
z@cf2jn#XtCgGolU-P38j3R`^=6m}F*_Tn|}pjA`*3C5d&Yv%hIbn~B;;x2EkIxmM*
zNy3{1%E81=F&Ji)Pkb@Sc80en#o3XqNpBg#Q8pT18wko3rExvX?-BaF5UgjRP8PX$
zpw|_O^_zcnWkRz;xlx3{IZvJ@fNYEGi{>1vz~tzm?nY=toZeJaUE`dtSi29usq?50
z_n~n$VYw{qz8EN*Jc+0x>&F&7@*~(iqoVp{n|kWeEh|<cuAvuNDw|`nk3st>0{r}|
z7;?8U++P#1bGiGCGjS@3@2=O_ql;L0)|7nhNeC71lsF0)N-KQ(!d|IjwFGeU@8s!y
zl>`g`^-CQW!>b5vEHV~>stk=+c(-%tbHF*$(VvPDUrHugAn4Se3}ABy2&WgA5{Ob^
zQ8jLozuPdeDidi%otd^evPw0cyXC95#eX5nVS_J$tRW372-PU*TpjeW{SFzxsP}kX
zH3G7j`@+Ohro1viq!YcE5l10Kec$7$?=hNuzf^(4MimzY40`UWVvA4ry_=gi(0fNC
zexS9mvlcTl8+9R3){u?kkjO^3{$?PIcWb>bnwu+yfP9j*x2y7<)Y8cztw*$0Nh@Ok
z%btSeuGSKAL|9rS=7~eF=V14Ih-A)^uIxNmH)&IeA=L3=oaUI5)E$V`vaXE=74xzv
zw@%cn1FcVGyxY1kQ$EYIvuXErkau0=3V>sLHCnd4%46`|xkvYm3-YYzl=KF^=Nca}
z|In}dU^wf#EE2v;qaK{4Ur<Aatcg0L#NW!2;ktalb)?2ueX)O7|52DkKC!el0w>IE
zQZ#I3nC)gdD6Sg|<atJt-YT<!4<%|W>cTB#@*th`pk?lwA}A5#BkEEc`R&CRUit`#
z3U?$(xzo}`&$i}QsX>t(Ip2zEpvCha7Nme!iOjPr^`g<uf|K{REg%rYcoejZlntKK
zKnwl~69ozQoiq0SR6!qA6I;d(8Kkw)g=UfBCsy=f8<G#>q$;EJ)^is+(qri+0~=pO
zZ0cEYQa<zT@)CeL2JnnTPR6AwkRoH<_WQZ259mLQsi8-3irwfvSZ0eBGc+te^^b>3
zCav-X(p?hEC~{UN%4D%8)u*D=1G%iSe?)nWK*?F%X;k?rHQ{ay2lAB3St4QHOJBV`
zwwo@otz6Hjx_ArK0a!=pt+MUM$ltoaGh!UkvuEa91|dJ@)=m$d++D#~C#1NzYqh60
zq({j>yVKp3kW=gU3vkLZjN*CeM#UT&MI8I-b`sjTTW7@6lpc87ij#Lv7mm3JN)z7d
zDy#^^s_Uo(Qq8q18NIPN5A`PE;Bq(Y50yH2K<c4)ad)#JYSJWYZiJUF2uvu8CbjMm
z=XOpDGyXcjKjbV}U)10KWmk+-J1-^6PaiPcCFbpg&8%!JADsk4glda$ypTwvaw-g^
zE~HF}6=uhF>#^xPzkxcQVF<kSY@=-H0bZD$D6QV(6AwM=xArUwDlkXU$PcLHdIu=J
z-ahq3=|htAw(noQt<eOO>PORY#q@~3Iev<jV|wOmM5|P)o(H5aTfI?<@*LkekVu2(
zf`e5CQcD>84jGLogjQVE6RVT~M+`!1>j!imoIa8(_JeHyQJ^tqOARI%U)gV?hyq9S
z4x2M7qb3l0Req(SAPeF`x<8`;1G2~U7148N1emHPp@#KUR3~N#j&L9$@tXJ+EL41p
zLL`f{Dnv5$U>G~Og5~|Imgv;hO~-m}NF}vg4d=1=VufLAPwiTidE5MxkM}%G3WnAg
z*3F)?ViRAyKF2`<8ou`^^@6drG$awJ2<tXYffi?n5?F{(?SwFy`s^86?lnFcH@3AQ
z4}e(V0Y$_#d?@r8flhk1-LX;cYowdw9c*1SB^|T`CLfF1OJ>H#@vk0HS4p2&Pcg{O
zG$;c{ENLzksuM60aj?6%TWqMb#MYq)Dk*@F;^$Qjh5XXNdxTl;RUHM+23Ru~pCMd8
zdv*p=%i%8e>yf{oCjy+tPXN{26E7xa137=O^n0oBNW&b&IHg!(RRvCKNl{j-3$~Kh
z2v_{e<{I)cd_gp$=_8#<z|=oGBctq8$O0?_jeye*N2jD#x|Aj4Jo(q&CjQu)rc~!a
zs*tiy?;znw9tB`-@@T!ST#I=5jFIlwil5UG?|<yliH#7=sed9#br5@FYyJEOf7x2^
zq#D|GH8&+@Ebe<dr4?zX9c{w5dZsT`=h2V63!z2Cj;!v8R)>p>t_dLJmWLZllE*-l
z;nFO*c>Q1La%4y+1}2sN2FooWTw8PcDfMvE3<ytu!<cVf5^t_qjnS*D#E|~61K70Q
z(DSbLSUJRcY_*>*VrxFp+lgOjq&l_f$!x*^#HFlmRt3G!ZKE22e%3&*lh#)2$y@tN
zN+-)oGSn4q+$4bl<B!>9CtW5wSkb9py&Vp&@sKt|;QI$WKgvk^^nH60Qe34a-zrUl
z??3`hbCW%qdOU%&B}GmkZO-1>F>Ah}OV)kyWOYgIIJU6LO7!-Hs~oT?MtS<5Rn1{h
z4~%~z2d8PI5P`H4)s-M^!wa`d_VB&MVSXIdy<-iAeD|?HuAaSdboV`Y=$}F)ieS&J
zS#mIl`3v~gwD1@-;T)nmdgu|qM<^D4RN-D}U@)-2sb=&I)8Z4nn09@WCkv4-5SPY%
zHxukb6n#r1484HS1%L}KpT!)J9!C#!@>fYJsyM*Vbeh8xY^a^wt7;dcWDz3s-~m|3
zh+zQ2vlXI`rL?tCbU%v4o=%>ptp7t7pq=uA3E!m9{<Qs205Zh`;GNd4iOoCfIBN$a
z)qay8Oh0T1g1b74E%Ky~e0vnofa)*LPHHr?N!nE)#D>3cZ|A!ok}^j7kk~lPpL|_O
z<?>e5D;!U&#q19)@sC9;^3}-k!qROo-RXhoyE_Yy)EcW?hPeU$+L02`=NL}FL-PJ2
zu=>Y#7&WjM%#>Hu+!elx=Q5sruD~&op1Z9JT<>w6>uStXGdmgc&K7?19Zgz?CSKH%
zB5NX?9-FgYI-9~rG|;x^-)+HZUr1yhYX(onV_Js4&G5c_xVmsk7%abSel}E4{=5jK
zz9azlt-?2)PJmeP3){J>U#C$Z#arP`{n5s3g^;D<PH#>%oi+VQ__UMMS8G@cSZqOc
zRgFxwi{ua~u1msQcu7LGY$?!ll7@%3Wc%vg$klq21}Z&E83&(zeITx@Qs`LUilH+-
z25uwR#*`Yy5Bgxx1YX_>6Rt}|ZP_t&Qs)K1R_(oYV$v5+bK_7C3y2@YpgvAY$W7U3
zhx^w~SbEcTvmnGq45I6UZwxM;YyU5U!@}_tEqC(XdGb0`gwLwCrqt#UqAx(?9GlHb
ztV<C6P8Tty+^U^|8i-dnAK`GX9%PK`ejZ0PHGn)gqKjQenx+DYo^OZ<F;u!bQRUF*
z5fHYL55?9fx|G>HTwOJcdt7+Q|7j&GLR@p=yJwLdSF2+aLl%5m&$(F_p_+d;RNO(P
z&g7bZ#Nh5}w~;)zK!r0VG^ivZ&9>Fy$l@E~9!cv^v~ib2L#0!j+Gp%jd#^3eor(ta
z$AX*#6zQ5JZC^cG$SV`DY)pR$Z`(hqbE;KzDa3SQbFcPLedTIEq7<4DH|8v~+QA?&
zHV|!mraI}Vhu*g(9x7CU8S82Kz6D=Z`BSpWAWYY(mC<!m&)-y%($s+2lRTGgrP;ub
z{9qtMRpv!Db-2u9p+kF!OY}<qm+H^Sq@Z%o-6C%xPxc#x>i+G^0b0hea(PZm<(~Ql
ze<Tx5s1uoj9#jHT@#B|o7DXzh9@>m-Qc@BalXQE|!z@PtZDpgVLpKKAV0hFQ@5$$(
zZ(Zma!<X0*F{l-puXFtTw9W!xpBl92wTU)34R(h<s0o~x!?(-F9-S46eJ)t<s5l)w
ztqJjGW9r9@lyIf1Cy}laP#WO5=gNDKiEBj57b3f2dz~8uZ%K0|X`l>ax?;fVmb6qG
zM=H{MJAi`QX>l^AiBsUjo*)wyv-S-uy^=k~(!BXxPFb`7oXMR#i;6PY7qvg>Stj95
z!y#~MF)ziy^G(2yXY7Cj@hP}H(iwH2tv8qq;lZRmliBaw5UhfQ%4VX96S#J#Qg#p!
zo-mBwbc*ww!+Jkf6+o|Sa$`XI%`<^X8z7Odj6x4vyk{}P$B!K7CMZsZv%BX!HS?7a
zea+o;3b0-$OHia_YCZcndzKJhl@S-q1dzJaJUW_GgUd6$!dbJc7AQ24lK&xf$uy=h
zga;whc7;7FdWi2ijj8rNu{e%F%0Yp~qVG1DyXYNm5<Z!^SS1%Wcle>j1ug^IOJ?}A
zZ6FDLvbdQ6izea>9plD4M6g}l$pvNT+=(GY&K%tcG@}!1fC^Niw75q#xE?0?mK$9E
z;+VjSuFIrfe|(28D^cy@{xJ@eqLx;*a@C^rpw4zF+S{ra82Kd`l+;t8yy(LK*u5Gb
z><8gFw)URlG(EQE>B|-w8oj%zn=u=`Q8Y&#j*2h@_`yaIpV=VHO8H%!sggLsR8|0>
zIo-LNPm>-JZ@pe+HR|HmTVcrMWLe>IaLi=6$?+yeW9w38r6JMUX0gpQX$gl;@)tLO
z<K#;&gzB|yM%9qlE8Ye+59tl$vuha|SC*#x>LhZ4{F3v|7~9O9Pk?|nIh$~5{fi_r
z%@*v#g45|$1r}=lnw?_@@`NA1`B>X1=(jkLK1**dF5R*gRi(XWEHvO{xV!8VMvAN`
zzE8TDq4P2<sX2FQ;4~fckpjx)V+dJ69$;m{0{RwNqb@ptoG62D#MPb;B2N<6X`cC3
zi~hX>Z!S==4zsc*#ME%X0vGvmRHd;Bu?a~M#zqddWzfMj@U;195vq6i`ISHwk1Zb%
z55r+HyR~#ABwJrF6C%HcP)nj&1MwvMmuk5fPMIv@;=?Zq;I~z?ESU!u+V0+!rL$;z
zVz31qdmSE5&uq5s{>21?f}es!At_qH1f=Hi^J@MqK)6^}Mn*|F>1M72S?zIDR{K0J
zZDi9J%i=!K^6KT0mEDY|?&YO32%Hv0K_+f(azs({loZ=r?JR?@#!=BB!B|gfoy?Ft
zU&<m_AL6*wJ=g$6mcn<@7AWcH^Yrrs43KO{@FQ)O$?$_+yXn;lWlS6C{;J7=TUZV%
z=e7%RC|!EnLnbBNGbMUYl-gBnfB+CkGS<Dfn3rK83myvmsevXX>{q1hc{GHHZB1}g
zRaS!1#I`y#IrM9i{d(O2$I#+J#F#7Ux$aaoD6|+%%T)-ZyWE@C76iK{`lqndA+jVR
zmFX9H=iDSIaS=GmgKcpw2|?LGVUl^cx3J%!g#sUDd~~4>-;Xt~_@4e2b0hYkG}P!X
z)C0~AIFHR$eft(K*LWW8NdEf`le|mt`Lv!smkL@SNT%IQ68%(gxV$3u7MW^YKGTcH
zmhhIWP$4Tw7ZCXLwG27PM4qQg;x4G<Wu($<opG||qGPU7T4Jt3TVRzO$$6XIgVbrm
z$IOuR!cQYrkbm9_@SJtlUT$6huSnvN;k@&m{eG|_07j?6ulIO|G7u1#YM^#15E(@l
z2)=x9d4GuF%&<Urd^9qpo_KK_s5gQFNvs+VDV!*Q+nxq*h{LCEsx+|a_p^_%lD-YX
zBUh3A=xh;+1G0_O^Ym5k#>%Iq2ZCK;al`prT`C_Xy+_xZswSF+GGWGN9FRMKELL*8
zUk!+n$*Wd&+&ZQDAH~*%uvy)w{zkt;I@h-&-Gk%7DPM`UpLCVQ?olg}g|v@ntzsNg
z4e7lig>|8Gty<Lh$cGkL+!bGrg2Vj0OMcBOH2C1@bga9Y0S3FAE)K4LW(3VH-JQ1L
zZaa~Z7@G*o+mjfQ72XwB#n1eBMqD8K9cR$My2NZTV^BQGgVY#hdDkkKQk%MdmwS==
z?8*KBb?y%}bUZplSn^l$uKDz8|FZ@8jCagkvi*;yOd2Ofv$#!lv03<5*?610dIKmU
z8^}lUAv~`#BaCK?iUxg&Moe8pP-EU6k_ByUX*E_|qOoxM)i?$*t2a4r211~dcR@H;
zm5&74A8?j)xjm}Rl#Wv9P%A$cD*I7WD_aUeLJC37AtCu70fW*4Y9(eh2Q^3%Mw-my
zvO36TrpNZ34w`XIMqG(LY?w~oYBhApJ}xQ+4|E#*8Zj_1eX)B`6!h7UQ-s;zPhY^G
z&7R+3k_z|N9jpO8SzTmX4uv-?WIldQ%eNo;(`<t+Ys6ID^C|8?3dbX%2gE0b{ES#6
z#9y5}H}d~R)6gn#)>}GjvaPgd!t|1yqzFN^oMD&G$_i+2x$^2cN+$R3y^fhDLMtH>
zE)HT4bvNSr7mA0W;!W@umNIz2kw`St7wKYc^hnz9l`rA_;cm<bNgn5@wg*hZ^#moS
z634=Ux36<@9w*wd9UML*AV_yjq`tSiM@H{`*bI5YtU!_osZ2yM1IIpvoLRrTBEmG)
z5d&EBFJURTG;GEn=7pk-2Rjt@2$I&bNR|%g(5WqDKxoZd`T^x~_Rty!YQ0;*`h;jV
zkr6_sYl|%c7?X5#)Dui$%2MiZk~i%lB(e^CsgmiC8EZ3DNL9z(*8yrQ583utFNDfE
zCLo@?VV1e96PG|}c7wRXe-L-8)g(B^z(Qa!@TWR(DnhP&d=4NkX<{lWRIbN1Q(tTc
zo*7O`=tSk;rnFoWqABC|R)z|=<_W+7<^7^42ol>pVx$l!Q20#h&cidyGX^#@T$^y7
zrRu}?>}0J!d`6D>XxMlUF+Y+HG4y^p$!vjNYcK@dS4Imk&1ZbEwg#e39R^72P<7}k
zooq7vNlZBRt36vC6`(Q`&kOWt3WsUbuzv}uU<g`@-SNFD>M_s`)B?0HsXH{3X@=JG
zk_9||x`}7jEolYklX1mB^vc9bEAP@+sRNW}KS>CY3Cly!U^|j${a>bj2gY5J#fWeN
zhfvvjrl15sA(rl@WO{I6KL-6aw*P^~;a63Y=Fch!I>~Gj$HNlxaLIZFhkMtJp@=wl
zFPjk+X2;2}vbd9I)6-q!KT0Z%s1sQ7>se$4Asi~bi|ib$-L903xMF{d(yekHQYoX|
zgQjo&9z2p4FEiYoKTU60{{HFOT%*kxucs&d^-@L|BUQ#~5%I_)Q;Q4fkb6*Pfotj4
zq)+8uj1upzGK=H`#Sr0@oF8}xGOw;V<en?J_&9gboxJaY-kOJ`;}k<%cLj+9p-0SL
z0nAOwh<Gp!oB-kXw%p6Qj)LZjFhFgKVNNR!4)NJ_+UC=3*{OEi2Y&-^Bd2tEP>h;_
zQ&DGr4h1Q#D-9W!(R9<m5&ybZ5X}km^F+CsP1W&V0Y~Q-1XTuvkPZHf^}k5<u?Z+}
z>N>|{xG*a2mQI$;^XkBd=h~D-WVb(0rA`N-YxBnDX$E>lV(!kc$h!y~MqfH>gX_nQ
z{RGeRSDf?TO1>okkLmG*D%}1Eb~*TFiHM4D>@;~<$T76@K8V0FJ_0!A)2M6%1X(GC
z1g%?jAJg6tgbiXA&?5&e1!QDOu36gz@qO<@+?Iq|L~Q^pl8wb7MBq1(cIU^!bisOt
z6Ut>uIj^>V?imCgQL*HGK<)BTLkhI3UUhMiKuR-Zo#Y@d+DfL1P+PCfujaVi531iU
zAs|)74~e52>J>W@m29x(3C`fTk0RR20w5lIG#lRLMSv<V26z!nDNmJ1CGpFkX7ULf
zPWQfv?O(ZNF3XhVL1aL&@V<xM_iGotuY&PS@~<!B2kpm!cVWnVJcWLC{`Ga)x?w0h
z4gC2vuJiZnpzMV6>>P|}SMTU)wvTs3dVgg!wM4S8zE9F$86PTe!qZl|@_h(XmM9k?
zegFavr3nXceAtHTGm%U+<)VIpXV~Oj>ah;4O%Yjn&+aFnw=i?@n`k@fy~0$QXnP%1
z5Ba^!#N{6F^I4upyUYdUOHv@iUi=(t{RFP}GpVR&C%Z<FmOnT;i^Dk2zb-WMWVjh0
zgSEz0f;7lI2HLUv5vwlNZ<))?(6LGBejTAzO!a2Bk0QQ2LhQNw(6tH3xw&DQU?*c-
zG{Q|}aiqRZjzHJ~pF&(4P)q#)9zyr>O7C_c7?3xTt&yzweAvuWcv=hS#@|u_LQ204
zBZN`zXFm2zKzq5x;8@NQ`X12Z>lL#-jKbOnbdM`bXl+tzjvLM8F5Ul;RkCRPAMNOk
z_V)jYK$aZro(8-GAwd6t15XJ!x&XW{sHy@`N=4nAZuzmg8?}YUf;fL&-&B10g`Nom
z?`hJl%dH!2$jU&Le$PIk>YFO?n53V<i-7=2nGi|XA@CNXD0x7=a?Ht#L?`jt^rrkT
z_TD_6%6AVNjTDk;Ng5E#T4b&yQ-)aPd06Hl8psqfWKJPNG7p(k!ZObhDMKxlNS2vO
zi_A)fB6+`${o8xD_j}&=^Lx+dbN)H!{P(2wO!sr&-|@Px`+C#5ma8-8@emCrwXGL`
zc0PD!{QBq7OF)2o(z^Gk^ZAzej5KPE^IxeD4Tv3ap7%O3!t9<s=el3_D1yw;=(Vn@
z2KaS2qQ&wRdx9EO$PANxNl+$oblj#>5X6x#@dEEFVBw<j;>T+j7%)A-lw%R2zrXYg
z0)ONZR}WNhlzw;JqQb=GJS)U4%K!cr`^)4j(SYd(;46=oHB6;f0K_Zo<b@YWXx+<s
zVw5J<zL)IfzfRw!0pKD72glNL5|0~bJiVYPj5#x0=oeOv<6y36S)eibM9t&T0>H}y
zLDsryvCrrwMwyJQeJ3kGGwaJ{h$^ejN5JANNuqr~F(&Lw8w&$<NW--+dlyI46M6So
zKM^M-K2zt*>T|~})?9f%OIy4*|0%$tT0?1BTK5T-=-uk=FONWAVD`)nt4c;ODEV*g
zEVh7&vwfQ>W&7*LH`4K>e1syQ#}y*GHpuhTc<JI}g~DtN;MPb}f~u2p8qiqM<N`N(
zCdc+`=H8{c+?~x4Mz1(<BTKq&*K47WFD$0Ov}=2FPpqvylBL6thmyy&RF7wGvH$^H
zZ$P?Y3s7@Tus3VF2n9(usKW08sb`w-X8!;ptTaXcY(g`a7QTjTMi{!@Zncb9Y8qzF
z4lr{!fNi(N`zgY_qCsHy6}@jfO5woCYU`jir8XSR4V^g9z*_91?AjsFHvwNU42Tm4
z@Ak34M^gfkFqzQg%PCF>D|l|U{wvUIhWAdvFN{l09`_J5zJE{^q`r`caC?{yOwB`z
za6|5r)76$vaA0oI5(f06finPHcRUIw)m|1(g;6>HkE)N6jithzcmr7THcS7h=DTp<
zRpJF>(N8sMem`5dJz_M9^aNgq)zKZ^z7?L8PIZ<R%N4>6XmyTO4YAj?FyTtQRxPg6
zo(5EUseK#rT;r_pI(pGO6to8r5{jgO?s4D}aZ@NSG8w0vm5IZ>ON&3W0?W<mXqqnk
zqVfft`?tmmVVt1r2`+FFDZSPb$O8KC)XMQIXMy^30!D@5+QPkcX&9vb%6{Q$DsvV$
zr!c=dCLS26rEa-R=O5p5w%Lu%ujE$%_7-2_iHu&H!a5ZvXpdF&DAI*hUU=ype5xB^
zm7G_jMTj4^o!Hd<ufZh5r95-i%(bS<_M0tw7Wf3_=U#Hm4z1}Hque25OZSe79~04Z
z4^-fh#0k#P0)J9n{$$bY=Yz3u>(6LN`Crjz9C7f54_?(3{!g@;zpnYr4c?K#zWJWh
zpBMg1A8m)hlZ!kCYw<jy_kgUBPY8ix(5;PL&{!JzHfp*4lt8(2Kt!)vzr8&6VXN~j
zm<IT`Sj1jcAmDJ&mkL(XJYR>^6Q!*G5ad4yh_Y7U`cV{uK=)%E?}aI<O?wBZk_fEH
zwz#w|K`#dA27<;zx@W)PexWu2<C@nazN4$~>?YOP;Dy)<kUG14SnP6y3NrF8w9b_s
z2W^+howge*Gqsn_KgXWX+F6{uT4_vEZ?leq!4T6jlPHHD$I=J^>eLot<bsToY~#%W
zVIG)Fhn@1H&qC|%#ur_fo8|~fFE3sAAr+=49Hu@mI^+|C6dYw6r|MDD)bM-x<EcwW
zfTBTCH<5x=A*>tWw1{)T96X1$z`?)>!;dU*oLnIW5LToRq~F}3(l`enB+7BxpZ7pR
zpz8Ptoq&h`>w#*73<EP*=9iZPEezcvERiSn(}yuVy0G|yde_WRhZx}KQ(-~gwIZT$
z`t*(N0wRaop6kAFn-%y#`Q>OaSRE@NFs&KmnnS7fAw&?SM+FHA%E&+(#B&@}iXY*w
zs5(|g6!xdTClB+o2Tr_IMo}&btQO?N{k7*g!KMSVL|!m9Nx=$EoHKY&mtqJ@%g+Q>
zq@wU$SoD(cTA$QpL4M&xC|p6w^vdOiemJNt3!)PZc?3tR&WED@57s=wK>H4_EZBbt
znQDJ?$s<;X9>^)?)hU`_x}x9(jwfWpIy`h4hRU`~_Pezz97y*!UP@7Lq6914eb5f)
z+A$jlJSk+Rd@8AayAL4r#ilbt@LtHUBVua^i-86}_;bH6W}kz(^(+pBkfT}ww9M-L
zA#j~rIAkbAp_vAe53rr>EBaLRT7*thxYnq7-_<KHaUN0CeF)lg>s99q>pC-{r6>-w
zrd0oug%R!ko6mrRz#-D|Yx$gI<JE!DD+O5_-om0lOfpJ+282_au~xHF|FIB3+ydcW
z_))@lW(|SZ0?TyH4Mel{fky&ArNZR~gsIysx@Yy}{%eV=zyzpuhm|ag{Yo%t78nKL
zKwIE`EzEfBbzcVmFCtVw>hbi|DViVFhLo&mw}sk)y~?g(0)2V^vHVrxd&*MIA#b*g
zjl(UTe96voS8ika)p;pchPy8*>haiW?L3RpN5EnSO9CDhgyurNT>X=9sV4^S5rzNp
zURR#O6;REGxF5ec_1Xvwr~SWKWSAaN_*GE+nsf}6Yr|wp1^DbxKnhz)!dGBo`uLz9
zBx1@ZRQIugk{&m)(hMA^pZ0m+wAem~ITLj?GJRGFaRZG(2!UX*^1_Z#;*W2i5mP00
z2VSJj)M?6$5;ct^0xfF(St@_}^hP(tYH^(as`Cke*PrlN96fRQP1?V2^eK#uLCpT`
zeilBR`PKZh!I7{)G>r}`UsR5_pi=JE$Akn$j{;Bd%-4|G;_|1`^8gV0<YcpH9^Y{<
zSft)~n$}oXAY>SfL4VmRO~dobu2%@HchtC$rxDTO#Dth5|3zs0!e;!h6(^{d2~d>0
z6zYDp8Bmf8+|g)cko)oR>%Hy(ULlAIW$zaf7yjmzSsU=BuF9@>C-3X8@u9>q_m>=P
zh<;|>sK;x!F7bi(?We#<+)>cmk<)}QPFMqpt-`=!d&`yZ8$JqM3iu);8&dFp_nwy+
zTLjCSPO-bUGrP;TAi^_<kR~0?IN0(~vF@{Ci{E@;m4)3t79<IR6}+E*e2!&AI5C<+
zl{npx{2u-{Nr@V{-iW~|UhX|$8gG$KIKhJ=Dl5ci&?Qo<=NcpbML=G&7*ah_I>)#N
zE5FA!pg=oZSdq#1qr<vR+Y}r|D=c9)U>0nLYKk_W)))toyRaR^C`74qhb5I=yL<fX
zX!{V;Vob6kv<i4=;yEs>P`ZGz8bL4bqV0q5t==2YNjJ~=&(N!evIBtLZ_~vEf59DN
za0$dMkbFDFAiL7D=lB)~!!0xrw}30bsU!I*^tx5(qP{8zJ|w-02Ie>yOepGeV@`??
z(#XU;bA#!?U=n!Gf_CK=+~-)*Yae=L*PpWwi`l_VwSI~9R{+|L4`R+>@iOd?p@8?&
zx`)k@sowfA1QBhYW97#U<Nd)%ymYWZjYw3C-P(yX9N-O9HQ#>lg6L^P_*}4P$ZrS)
z)>7+D5}%y_&&Qx7%$lRB?D|cM+D}D!QQ@2aH(n|~ZjXjH2>J0)j6c|*aJ;b@mL2%l
zpMdu2GkpmsG9WXVWN60^KD+%!-;TGQ2G@z?<8?=2WxG!QgjWIoQosGCIgjcU64k98
znbrP%prQGbbVap*2X**3U93VbO}xe4$B23>h}($S8K=9<=!Kt6rv{hx14ig}`CCH5
z1^B#<y&ioCBT_`%MGE^5zf~;2QA8{?a0zEZJW0>K0|oogKES@ALkMjbToC<Eg!e>H
z=rW}Ole!<K%B8|Ezo~Qa7TtdJeQk(jLX(&MTWpUYJg{}V@VYN+!(>^`-D~TJFf1ZQ
zG7mZiwjkoU^ke<E0;Mv`A@6uZ{XilBgkfV$-=6*c1{ki?2V#idclfqo{M{!RA5SAP
zwuo9sTli5|$&Z<c=jLJzL1gHHSnL4oMu(79vvaQB0T1g=i4ZK(PG2z?b?h-Z22Zll
zSBp)4ra-g5nm7g&7fMFeUWjKXTRRYym0UIW1^SAg$e*smC<8`jc-3hJbHa_%EdB}j
zqWx#(eZ|~>c5@pML;dE4_CPfHn&ej{krNwWN?d!e4CLg0bE*5X;Ua6=3cFCC*^BY;
z_fH<r%8D3;B(mCv?duzerT(3R{NaB%VB&g*zP<%MLkBY6C!nPm25ZY}<9i5a%l7Zh
zmx06`m*EF%c0{l$+hoU?{pBx6P?sq+&5{E)?kC`(Fy#Db=W7KPgjr>;S*9(<?PCaa
zI6@?@du^yI>vbsld^VzQv2q8V)ZRhX{U{~Sa{>@SjtOcHZFs_;v}eCQ+x-c?8Xa(<
z{Y-)S_BzM*8WJsK?)pqb)K+b`RtJ`T);1~l!t?^>Y#5mg;(at1Uf!j@HuZ+~^UGLK
za%MJ;atv06w^H{92v_kyYcKVqPpuF5BP;at6}$2loXF4rjy!n|Bcp2jhXYAc`76Lh
z+@iyts0YMS1*|zTC+%TQ$|}u8j=;@^ahMa9@b5Of&6F|a7Q~hd)RW6rN{GhWjDRYH
z248=E{v(|fK>Xi50(;|4SSDq!-nezaM|B$CCG?ak9f@bF&5)pa>Hl;0w5mYGLJsCO
z<~0yzR(%<t>m4on58-HYr&2f23JqKBw<!NgM{JRKxa8aI--<{|A_}Bmf#~@3Nn*_M
zfavw-bglWR)<?jE6zFH)x0E*|rxeT0CLL9F&2k*6GDafkeYFmUF?vGa&nwT~o^*yV
zw5TZarxAIIYSK24r$;m1A5s6!f+VNC$`Vm$Mg*ous<IIsUE!;~n%Cb&TlcLEx-ve7
zRkC}121t<o3q|I?f5)qG(n3h#X9{FBN)Jzv6u1}stI79!D+HfUo-L(X`^{7=HqM3b
z%w{O^+zH;{u_7rID0tF`&<4vJfP@auwzt>z=VRNFU_5vcIRPuSZJ?si7G(Q5rk!yy
zANb;U_BkRtgK)UQ5tZTxaz0OfJ$FU?3kV@Iwt{r)29ln}ZkUh#(u*IVmkkyS*@h)s
zE3S6_F=CyIpS~%j+JHP~gz?qnlW=r>fLAa6F2cq8{!*5!hcVtCDnBYi{b@+1dn4C5
zInD&=RRND@9%cBUD28`GY|!y-rR57nG`2?}K>4I;vte+3&f<ggwvReF2+G2=R|7sD
z{hWhP{}>@GF_WB#;AusKGJ$MmsUDvZmRhhFxk1i>v{RmK-I)3$#b--K*%iH=x9jA~
zVVB%Ss4926w-CkH4_r4bCa*&MN8dpnXn5LevWNusjf)Fj0tRG|`rD>QEOUAF=<+WW
zGQ)x3Qc<YNK&|4(zp59g>67rqV<}QsRzPaq_>Dt#7*W}J3%H@vzU?0zzE3aBD(4<U
zuY=XKFonQ2{pJ>2mg7b2v17_p1@c=n*WV!I%<-?`5}`RD6@9YmEAXFG@8~J_XL<Ij
zBa#ny^%EnCS&dD(IirssmGO4IzS!`ElJN~<$0?XKFql)*hB+HXgCHXG`De>oZFv}^
z1SeHm(P{B{1(_Zih|yE}T)ega6{F02#f>{E(z@xV`JYzZwR{SdwKmWoJ``~_TQ1P=
zIz$SebFPgUGv`G}q4{E^rqbMiG#m;Olut$fQ4($uk<U%5cOC|Q?}cN_F;@e4Qi)qI
zOvmm*!R#wA5O{?^+We&AM$LPjowP{Am>fH>g7Cv{Bhg+I8KI&>QB0vBJ|;;xe<z3l
z8Zrg9Hz=vU{2eR32~6c9`8@BsarTC(k@5){9%uRkdFbw1*hOMnA7!{634)OArL^Ra
zkGFQTvJXva1wH*5CK^hAW{~Um3L+4!--T%E{_@9lB9xjDT4#sYn#k|n^72iy`0{<n
zeto3A;2!|;rfrDk^~iDGt0^juCN)D4Ey?|+TC|MzzWJu0bcf_D3Pi@;>u6sdlcM^d
ze_{awL1`k^<?|&`f3pKyVwc}UEXZfb=k*!pHQ_dUy@}gMJOCl2O#52f)dHQYBTLM)
zA7SD6HN_IC2N3^l*WAied!^1kx9qX%c~8V6gVyuuR~PSo&V&@r%8(&q6w%iX_@41$
zzdT44+Q}O9A5b4JyNig1D9G>)Zy>qAFKXJYNZkN*KV9?@TtQ-s&@JoLQ6y?vZCapl
z6YY5c!rQTRGJP$e0j{BN!=1nT4a6HIS9U4URyiC5KPAVq69t3ZJ?od6M;nNTC@2#y
zqS~u?z6YJE$aA@V=yJyKAJz~%sq)vuxww1Db&P8MRd2IoBwm#w<bD0BZ`<>9QEzw*
zl0(%L8Bouo3Z;Q~|G?pr%<eqlp}XgiDhs?5J)+LhhLGkF8Gi<lCE9}%NnrjIWx0vS
zf9&a9e6qv|iYE7uHw~(;BN7Eoa(U6j=b&QCp|6A926VQ~+wUNHg-uyXE)Tf$17c1#
zYf$cgkyC?eAgWyC%4;0!-$&CbK42*p^#$RBo`nhWN&Bjw;l)i5l&=yNY(G=N>`k=c
z<t4h2N7ekvbwFpg!k|44pQL%OeP#%gohtu2YUM@a)feBfqQ2_Cw4;d1H9Vp5)#PI#
zQ75J>f61SX%Z!LergEig5j9TQAo*H;#3;gau6(0*86)@Q-1Xlxy1`Kk!Wo4v#tTux
zxVU(JG@JgbpYh2;7b_gjjXezETvf{OTk`*KltFqr*OV9MekM5PtN}(ZikP46@Y(YA
zcXx*2No1pe^>>qgG=A+eRh%c&hgZ07v!nJ%eo_2by@!Yhk-sK>aOcEbt8U+_2RZd{
zWSV}Hd&uA*KN@`H<U>5i$(}I20lsautHbp3PeB^;#ToTL_j2YU-Qahxq4$Wj>K6W^
ztQg`55u0(boNx@4hANn<`XTGAd7o%gE!uNo?13-~+2xbkpO)i(i@$0@Vy}H@oSg=e
zjOXp&go%CR5-U2gS%<m#AwtX5|Hxe$_YkMa6>Hch#9W2@mQaOej>nNjCPWr&H948J
zGZWR$;Y7YDTgFEm!ZDzqsc7K7l{L;1^w|@b8q{hJ)DCHp(G<+jfD!6+z>hcxxbae2
zA~i}RnUViGuya*x)f_wasq5el#b*S3yn{>nIx@aiSB4WYh%M9#m83OOCogoc*^DL=
zFJ(kQgW-78APkvQc1B~qHWPQ$GaLq$m4&vc_WE$#Bho>6FrmB#dv5KA^A`GmMQyQ4
z{ASMfFTTZ&%;nAoq`7ja_Ep~QiRJ2?E$0$><7M@jpH9v;F=z?(p?S_%xTn|TUL~O@
z*IVgC?<}9*nu2+JH(CJmO8N9DbVmDDry>=)$?PWUy0%^B+G2iCMA}unYK`#4vtQI)
zlAM@GuLHYpYHB2fZKkjF{f!Tksy6Z>)`#0MVnuTX;n^#)bVj5pv&VyaG@@y6{7ObX
z#$HOI^<<y}eWmI}k>GCexO+`ya!}9su}{L_w0dy~F^t|q;1>voX9Y_=6w%M6u`0Vo
z#1c*?#}=MzXFOGBrs$~e8ajmN>N84xe<OCG9rNxvZk0Da8mC2h&t!J!NJxYp`gXOm
zdEoqhkPg5eLAk#=!-iA0h8+UFv6q^1uQ7Q$YsW9ULyo9&WlS3<;?*{Ho1a-bx=+=}
zhXsIPxc)PmYWj6Vg_>iKD^)TK1*d&}e~=<3FDb&%+DWCcDvOdbdx0)}VJIrsnN)TJ
z=#}XUd}XlH!eCJ0QS`0I(_gv)+hYZFwuSG}V&?G~2PGw$QOT!xstxUm_tcr3ue`Cq
ze`MseekILTP0x+<${vPOmm|+8dj<@zartlScQ4F>*y@%pMwWj;_`|%p(61g>zk85|
zKAdYnvWb7DKzhQESvisl^5Yd|XjYWSb;CRo6rWhVsXig97LV(B%l#AK>B>Lzg!{4v
zKJ5EZnO~x&q5oLzJ@AXszuSK2!CYGy)&Z4dW1GO$<BIVaYN8L>6O#J?LFb}gW4Fe0
z73Yf@BhD>0iDctMMs{=6syP?jxTB+AVs?fn(h|p2PU0akUHz5P95(djw4eubZlq5N
zYp-`s;F_5NxvE~sg4+}A5lM47)+qGQ&4f8-*>nSd<Zj)F4^>+_&@o&R!*u1&9bDd{
z4LkSTd&iaSs$+J!gnFxE#O+$llB5QX6j_ObH0!Am|DNByXiEJ_VmHR)s8ozG`SOT8
z;H5|Go#@by8_HoY(d**nzS<=+2Alwz$*|*oXvOhvYDgqRHc&lckqta><x|t^Gd>37
zwT#CD{}fe4a>-{%w~68E*u87C`}c%YMOez^hB;uOQcS9R=`)&70xJJqallH%mQAA8
zXC)&dVI>_<qS0LF*4R=G1N5s@a1fcvpx7Wwg&ELbE@Hpspg4`P8i^!gXVcX5)_9aF
zF0=U8p$`SGJUCW6$|JFv;cX$PSC30ZZDpW-<_iJ9mC^+&{dCTyH-2C=d;tId^Cz_{
zrv2=(4`|B90bpj)@oYra=|q-t56-297EXP3;^$^({z3cz1tOmiS%;zi8;sNWF07``
z3L0&9PhDntS5i8Re?U|&T;{IAsQwgoxmEZH^jt9lBhD3|zC5a{7A)78T4zjr^#O==
zbSR<08o~pWcul!aZ{<k85>XZz&xFP@nrGcu8=BE`zW*`jWMR%lk*=gqe~*$Vm&m}J
zaG=~`YH-%Q@y1CDSBW-?*C1-+*jvM=-yvI)s3@TIO)Ok$4|Q}>zl&>DlUhS5-(>EJ
zinx?Bd|(pTF6cA9rI`bp@r^|3w;kTp0hR(Vi+twkqfJ$6<Ur!UJyvJA>vm4Mdbu%k
z!w1-EW8(I^xM%Y}?`a3D><d{%B081vD*SF=+*(W$a0I#oro`O0^<KUCdHksFqhmM4
zDN9%dLyx|DiJPmkIe|)weZ*WVl|Y<aD!OX@?#nOd-RCZT<1fhUtt7gX_z&YQn1h+P
za6r%kRlz1QaoCo@sr@%(BX*pFyp$(n6!NVq&nwgjTbMI-zRs@r70!77Iji-&+3UKa
zIDM9LU4p-GT0G&O60~uz>l{sv{dh)gcN9yRdM)05_|(87tLHJ_tH$<zaXi?N*>#MW
zz`yV8<b{W_9@PdZ$Is6u9(P&0bonUD?;JIs;p^qfBFx`PXK6aewaBe0%Iu4@7}=lX
z@$<#|XA_QJS(L3q@k{f2MDx!6Tt*?<LzMpKu3ZH=Ly(_7KT?Q@m49m(cOJF)jY?C3
ztlfdqx${LvV8DfroqA0a$!mBnmRh#_UHV_&k0+TqB<iEmp{m>b<vxj=*FT0F9~~S?
zmQ^p%x`%2p&?S>$n+UcRBV96jow>Z{`}vFV+M%LF$(iJ*JQK_mp=mgVs&)Q6lvE09
zL*^Wx{7>~elo&g<nKzZl#wP5!J^~(*6PTM!@q=lDSCdTU-xsecM_8f*BB`)9lcq1%
z;cu|!?Pres;Z#q*rvwQ~J4AbvT)3GQoGWikJ8SiEY?h+2%*AS7y8{=mg?NX*nZM|?
z=k1v3dd$G*QB@8vqdQf~{RRcM**(<QPcUOQqfDC6Q&P%3C|`}56ICg7ZK2WEdiKU|
z;BuC^Wvu7EEcF^6$c*0jWFC?HqWz{~vA42Jo=~5d{+OC&T`AYTlrY-iV<V?9I(;Ue
z`}f8Cyzq@D15`fm@=2#}((6A(*!6xO?5j2w6fx@U1t3!NSc8P<<BvBb&rR{zuTapq
zp`uSzJjjmHi5ks|^n2Pw^`nQ2?w}AasIkK*QtP&TVFSInfmEp^1$mkiPkG~RD(p23
zgalR4c;K)4$9v6q3yQM`p~+K->~Ym~^x3ZHav}#;fT(bYJ_N&eDbwW<-90$R`Z>=5
z-9L)*?8>ft1m2;+Psk!LqQmC8qkp$axPAi)1=M=7p#G_M7?%1gqsbmtT)d1Y{&Khz
zQWE{X_xv|(PbmB<yG!x^zvut6V;hWQfzPRrvF}Lez_k0{^rVoAeFc;$!a00K_5ab6
zf@MtI3PlPw9r>-53UY!b!@0X%dC)R;qJ*u6t|B!R)8MUD|3Ln38#H`u6h7Q6UV#;+
zRIzC>qGkF=-}2wmoFt^U7{p<rxTCe_ll!CjF-(^KtBu?g{^~(pR;I*5!>`n?)Ep5d
zJPx<YQ}g?mb}Uj_H9`vS8(z+|SP&ajCoeXykMHif&4%m`rDsfuXjMsqPEZ>ZK27_D
z(*IL7HJ1vCkl4adboI{uXh<16=&>EtvP75rvNb6mprJ8X7&O1Lw^Sc8b9q^<^6UV(
zlWe<6GGRodW+FW<8N<?yr#TC4!;nqyze?VPxyZAHBD?%(K}n*d>Xkt64j!pPVDrCf
zu;tLFeR~3h=+E6gIWpDIN+klSmy#5Ike^t7GBB^P#XK7zYD0G~1ldeZEBmYzvK^I8
z>WVa!f!Y4MCi}kQ-mfBfcUDTcxmz0S3YI46ZikP$DCGfbf9l3*t=mw|Dyn-^42^CY
zN|4r4HT9dxZv$tw*WI_AA1S;afMLlm+$+W%G73ix`o6hTjz|eMgJ7MTi+J(>7r|Z-
zqgmJye}iftqUg$A#D~C_;sCxxBiJQ0kPaWcpLF#Twg*v%%%+DD_20$}P=J2xc{#Aa
z9Y=2cO_&e@830AgIyedM)b9bE7G=m_4=VS52b0{U1znsswf5t40DH1{X<q*Z<)Hnn
zly!DU@eZ^WngziJ{0+R5f+4ITzcc&cxn{R!3UU}E#;;!(gx!eRPQ4Z~gl+`jvJ@!C
zSbl)05X+$zsI``DCi?D0{-~t!5!qP~+5hZ%r>6C(hu9M%06z@@alJ4L*9NRJbhi;*
z*dmip!lhs>lAe{ARkx}fbvXcOmlQ220>)4!*+u`)xbTm(ge&9|f}DEmCpPd$*X2JB
z6_ECVlhM#Y{GYv*KYwya2VU<}iNv)(3jzO5ec*O|$Ya<gck%v6<kMxa&+<w+wp?U7
zwu47IM9G)wrf7<k<N#?GC3W8(W(EQXVSsK+1ys{-k3k!k=GxU1te!k2vNK{DNKqo1
zhOGvg!g%>zDW;UD>zpC5?VnsG6gh2S*Qi9DKR`c+pvsvhX0LNdJ}96=!yb@h6tteY
z=VN8pXrNi^36kw9>wMq$BX1O*^bB@fWM<ng(9Mzi=THw-+wW|@2=KsgKqB@Pe@!u_
zL^)`j|Fa46Pn6N$oZC?4rhkLjX44A@K<#h9VUVc}bC9$Hoa-`&4&5KN`FtAqf!hsh
zZ~QsnV9s<d#f-9)_HnJEtVIO#Kl{ml1Ip*10k`N5zyE(Qw-GGg3B)1T#X#$`a$haD
zGlfrJ!@_u0LlLwElCjz5-<vcCFkFA*hHw-7-_B~=0nUj#HGnP8gDDn`p7Di4TLdvW
zH7vH|g?OP0r52ZIYj{8Q?^|`|R`~~%uTB5HDyQ$o$Izu{g~`4*`%{r&K{)&g19*ZD
zhp$`jy%&P$kRtf4opv^K-VR?h_6u4-;0K^?csdg*wz4h#4k9O9hHKoQ4ipZ(4<VtN
z9>oVz%CDi8^Y>7N{#cJ=;I=FJ&7H!a6nn-QkuBDH0`7XJ8te*P5d^bqa%cK`G?YKO
zL!r$m&Xtj#?;YHIbrIT^3RW(4Lzj0?dI6v>^cI8kaimLO3oH7lgY~jy=2~)c3DPkz
zy$~bb3Z0$9ccDLlv`oH8b!}f*(t741G_W1)6z9&SoG_)Qe?Nj(<A}rHk<h7gyU}?L
z7!M8pe1mtmBc2+GMo01uxRqE6&SCl8<C3_453K*p@!3wfw9wo?zG>yu()Oi6WI(FK
zM|No|VA1}{X31uAPSOB^I&sZD>iYP(fN_cGgzu}3m}5ad?vH^)>Z9!~C~=n<mzsOS
zGY@$USlOFDQ0Y-#9IkaLg}xXfA8J-^-5j7AMO@|JXHncm$&I-|q_^#*k?N;nYN*ta
zkG{PNohqxRuq*y(WmkpAq=r-P!^mcMyZ+pByFVD47^8i*HdgBZIP$ZOL7umlQ6IK*
z%oDb5lAQFMu@;>ZFSV$Di&4O4u8&-mHw1)5w(OQd;;IzJ1FtT9{@E^{a&f2r$D&M)
zK1;3urKzJoCKphB=+vZDts~wa8Uzafi56XxKKrO6=t1{YL_IX~PJcN-nFk&FOJ)Qt
z5SYi%ub<yxid?B1u=d|$P2Tq!;J>3sR(xVTK7Wa0FEc7i81r~79HjHwlIg}SDn(_5
z?dJDv{zxaOaDvyArak!?i2RiXZmyki>K7_D$k(tuS>Z~fz!jn}*68H|N`n1)%5;z0
zBX*%BR60ev45E2Fu+dP!6vz;>zv}`M;Zam<JdbK)lywZiK!@YFl`?aO06;T;lTM@p
zx_HA@GQP_fVKd8m{Rb*i&kI#su-6i9ld}Zu@L3IjmmC50&$%+vgFS#$e(>ZaY%Z(+
z^-S%l>(D1~0k8*eWdT8RD~#`(Rk^k76NpFW$%(q&1NF{By#UN|*aTN)Id_Xy(D-o!
zbcr~TcH8{JM4c*_x+BZW%cJb$n=9i+<;9I+zS`#gc1~gNg<AL0AGs*M{j0k6%KH~%
z53YWATIV@q!1f+K!PM{j`LBio*M?q}t`<JH>v0E>Xx)T{RjFz$=NdFnWbUG}A*WAe
zsXcO=!#gcw9c+3XOu6S<>8GzGL^};tT{3R)xa4D{|2-m0AObsR^r`5i+ed|$3hoi9
z0@WXaw*zG$@-%dnP+tUO^&n{Cj>)bv5@FM|_XLyjMMCpPor_a>({hxPd#>rqmj|k`
zB84mcji-I8Dw5+sVSUs2U7m8-;{DdOERTloZ)KjG)m)sRi-WCL+i53^{7cMh9eLd?
zo(A~(gA(#Qbkn>~UiqCjUhV!_rCuIuQTqrk@wV$hQx0^w?xqUpC$EEEXzxNLY$n`W
z>I9n_=xz?Zvo`K14SHr`8L6}$KZ?f^JVX{><>MYN7sx(1RAb+Czq@ea!22xk;m%Hv
zz%ua_UuK@bMNCVoklDl(%kDr<@!o}*Jky!2iF`*VJc{SA#`k)OrLbL8T)QY}6n0S}
z6On6INFkE~Sp}PDX07UuE4$bWUFeG-s2&6G1RI^-u>Yy(+H7&T^hrP1kaPs1){i)H
zs!h<$!~D>DI5PBBEa&#h8VH}`<;OInNMc5f@PjSE!E^nk87yuI&shbGPSoy`T<tTo
zVqF4I9NoBaOHiN;!1c5geZGEtz6L961nOO1rt~dQwa0>gRTi%$krNyOAk5DS?XMrF
z=J1Sb2FoaNxl_2y&{WxVd9J7*qdpaBsczmCyuGzP62@jdz4$&~lg;F0vA<efWD&WD
zPY@p{z`O=1KB>y$v<{6{%L!9E!<!4hh;VO7P5TW^_N+n{8(ITAc6L0f?dZ(ZyG=0d
z)|;>wP}WBo*m7_lHX^Qu?RQ#(wzquN)BCw7QqN*G`+|)(&s7;rR2mlOlu;8fWozM6
z`XXT1DNMvmnx+Hc8rd0TC*ozC2TvT8_AE?nDZ1XBDOF7jENH+FeFXq<L)56Jzt(`}
ztJ!bCtNo<Z1E^T#1<hvFO@mg$W*e-k>YYQM9@hFD&~(;}bNryOHcLl~*O(JS>t`=k
zKj3^hfmP3m3bvC=vJd3X)vyY*ZeIsgP4_&TO{J65Vuc@yTektu?e;6lX#pD;-fn@m
z*;H#lkSJOE`*ZR~-rxI*Z-S)jsT1S<Zh_r@O@M#T1tuTLh|$MOH}((Y6cLl-lHv@K
z@0&E&+qUiHYd(!h_a3yR=3{T>mO4H&-6_!76f3tuRPQrVI%U|ZhkAb$rHax?h)lSN
zQb65ENJCZnX`>BWOI2cyEN<Cn`(A#&iLJzF;=Ker^9h>xuYPSTaj2IatPR<@T9$?r
zw)Q9+^Oi&YN~er&nxRb+v^}%~y_#QX;q^6YB11y2wuRG=)g}ZVu@kA>{MyDSqhBDd
zj@D@RRU#!NJTtEjZ?|srJzZ|6zlT6B6bQoWXLRai!wx!UOuS0=>CsPW*nI_rjwhu-
zLn>x%_@+bFu<EOPl`3NLS<+K|Rzm*|5DjLf`GgyvS<9NzInXe(mNpnw5c&vLqVi}-
zKlsuD4}Gb{=39&EwMS%vNm!Yvg3+b1$_uLN$~gTTj!F_6Rl>uWaMPLU`=WwP_a#>*
zqXj;#PKNkN`fsWa6fRrfo6XDnO9Oe_7dccO$qLR8y0sf+vuFj!4E;6pEJ+{t|9d_D
z^*IzqX}LT;Kiz%GGWZeNBu{&J0ajwYwAbuo0R#0j_$tT32|TH+Q)$_UM8NMs=_vO5
z<79pg1I)3P<4lTUp$7hx0i}kA5z6rP`5E`%t!0K=nycg93&RaBH?R#xR)qq(SJkd-
zlobgps4Kfpq@$F}2&vdB_^oMr{1*b+%)>agxL5-p`_jKx3!k2lg=&y?*12OC1NfA&
zjuP>rg%AOSX6}a4m-APfzNxIM5)yPIV#^Yl*mA(H%R~}1rnSO3yG$07sjsTdI_9WN
zYuwQw6B^&oMG{_JaUU4(fzrP$sb4`!3zLdHRC}hmo8?Pn)B6RPuH@q$?-x#X+`o>O
z@(0*UgXyWjSaZX|eO5|8@t4ZhN;i(qJd;}3z4SeSC_Z+i#)c$gdP;n(CrD4+D=$=c
z^mDq>wPpa6iX0pENq9xLIgq1CcI1ep?k?JT-Wo<XW`BGv`)z1)e{PGW(YLwUL+bS+
z*0=x5CQ{Jg?t!DV8%pj=U{55jTueQtxe}VlNxP0ol2`(i=(JyjhKR;N$3g);QV!}|
z_MOB4(uK*{Tjqn@O4*@_Y62yZE$w$VuFbkHwT26Lkgggvt6+&3G12A~1HOFNLfwKb
z)$hflBMFuXmuHpc=;d+$_ym|z0Wp%zz)?qGE?eHkSoz<N6YrVF@_AsdcF45MKKv&Z
zz#MHtib7S)7MYvAH7r#}n=Bc&oTulAOLgV6D(K%MJr7II0FOSC7_ULr_*JA^H7rx8
zVS<*3Hx!63ex<jnP14)n7(5Yjy=YCZ5sVY)sq^}4ttb6DNEegP#HUXt2;VZdF054n
zJ1(J=?n=MmOsKNlJQtXgc$?r14f><&FK5;sKaJ3DnT=%OOCL^faA+w!R>S8}>%Dq*
zO(l=0U0)z(o9|n@PV(-!8ejZ#CFzF1(qY8oOlT;$1g=~v@%t?X&gUabPs^T_(@Af=
zzh-;y59-6wP|#dVyz#c^onh9!gC>{64o<!0puo8<ntmbcSa%c&Ok%8m9q|jb@-S^S
zOFWjJnq*W=xpkgfA0ve?HZHwsq4~pey61VMiY)p!SUTx*Wcp^^<fPfKj7TEBmOy^s
zSL0{rxH?PH+2t2|Q?qZ@-B0~wErp&|c1@94^`p6W1e@`m3tK1<Po2S-s0(_~u{0zk
z5ax~KEv^=-mT~%<jG`PJZ{@Z;l)WPDIx3k;7irn)zjUMQk#@$xH}~6W`cR5Ir1aAT
z7b{H0=J7u@64=hfdK5TXR=(#<yrJVfpw}1lK5%8aWqGRBIIhXq8P!P8cnh12O3w>@
zds?&>w`QZisk5YepyA$p<;8f5gmp}mCH^O2pH<!pY*FH-*=w&vy<HSsb1_KYsppI4
zrqb<I?0OQ3@i$=^AJ!yL@qWP_Ut4T$kz9Xd!(aK@99_H?&h;O*#svSuyyfZRuh*t~
zBxLvGHvIE*2$!t*G!LMUm$92lP_-&5*yPUHd$PXyx<|{jN+pwtC_)if#A6djU^@Q9
z=ki(=1n0t<8)lDv>TqR>qz7}eCIXQJ0o>~4WM?DYZi}nUB>da19QhBmXRgl{6<AJ|
zaR!=1@51|QyqK=^TQw!!H<;BIl;Zy+(22Q{7)c~CilUPIGOhE}(T1^(#odJ_+=YWH
zF13D-XWhLxZcfp!E+wn=KKQg@tG3=Je{tndy`2tUgVAKM>PxIOek{XMD)U#P-wH3?
ztM(|%t6g^J=a`=*QEHJ=k#e0frOGJFJ4WuMQL1=F|JzwJqORqXW~VG}&O%7z?ZSj1
z!Rq;G;2bH;(c8uIyimXr-y^_?dXDlZc<cBK-Xn049+>*8HJhdiTTHFp_@NEe!b^*W
zcybDSu@Rq6v_zt8ijarqa`wge;xk+cE7Fg(s8f7fEw`e@%x)1pyi7-E`7+NFZuCEW
zXK#?Bt8Tj>zGc=ZTXw6<Xsfilbors^!Ich$=!3$RPRxOeQJ|2wvu-jA8Eb|ee*_L5
zMoZ9bf3wwqM8Ferq5GPLDPCrRWtuvAV^WE04=jwc^?Sfj`F1}dvI?kcaCl&@5bnPm
z#S0HYrc0SX5W!F8;|e%e<;ihMnKxD#DtbTnqBIH5`W}!`NgK^&T{!Zr%1+$HV1zFm
zFW6m;Nyip7y{op@Wh=(S`AzyMd6=Q`&Gy(LPh#R!LP@V0UxVk@l#4Y4eNxall$blF
zrOb;B>#=Ix!LNd#<HkOJ>q-~DcGHqnd<0dHP?&IqP-FZn!Daly3hJhLIRnhWpys(?
zLR-1#ht~dw8s@bIOuIP(^7Z@9N_%SG)LS0#_q3t5n28hYw32NUtrYxpd??+qQ1}*^
z3>nhcb1TQ{lb+LhCipmk^`J=04uig@;8a-uy<VbWK}Nbl_+!ZKbt28gEX$QX>YO||
zx@b9f>!J0FVZ(%Wzj@w7*|GqFY$T>)vGmsLN`5r?D}ebX<m#0pN43^G8@nsADdXPs
zv#B=P>nquir=w}Dayk{rmlY$OkdT=LLT1^v5>ZF^DEhCD&xI(=fV<Z0K5<8k%cCu=
z7H#*oju>;O?3s{iDR-ZF>(N>65=XUKsh+q@{AA_8Zj-GL>`$Z8Le+N7Q%1EyouiPU
z-c<dmd5Uo<L_vUZX3bOD5!K<ycV9H1scmVWf9zTXVSe?J3a=tte8ye5a;06A?p!yB
zF-j?B7m{eWJRT%z_ft{?!_n5KLv?0M4YsdM)2}l(e9|o3_&%E}$l>-#wG)4-xSy54
zWL&O~=be34gk&1wjK^G27aMgvOt#!K#4xXoE)}V+lX!1ZP{`9f9C<&pc%R@~E31#M
zAh^7z*CqQ6%s>g+3O`bCBx2MP=gUFK6tNp7A$!%EBM)$pp65GP9i;i8v@3p&@nuEV
zO(MO;3#JC<*Mr+OZz1}3`S>iP%<Cq@1;Zz_s|VK@uEEysbxyV?uT5zU>^)b?f$>@$
z47hR|leSSn5Ea}_8N{qsUl83GJFGcPN5A^fxP07`$Bg`lrSbph=7(N~?4r`p%smlr
zk=CP3PDznm0)L-}R1?C4s=_6i70566M@m>J@4?aK7yOPU+#WnB`sRW-q5DGAluT-x
zTv<fzgN<98>pso-sxe2By<J6+)QJfX;d0^S6ffmuSdxT$m#mnMOTlP#4u$;$!1@V$
zQRVq;B8lhch90;&h$*sma(O^~9u}>(ZuTqtavCjh;i4tDJX{=H;imc}^>|+Rs-Avk
z>{J>so)&25`@t+|i531)Pl{|}Gt`U5D9m?)MSZ>#9%Qu)=pGDTnq9(i+&tqoYb4<D
zzITEWjKwT6FS}37MIV9Z={xnxk4w)F9=2C(|L6ViWS2`L(yo*;Rfblv!;ghSJWE;6
zhK$rYnMkn7db~$ZBA3_;mpG|*O7qSExWvQWPCKrTbQHKU(L+iSv}g%WenIJvNOHgU
z_%p*3D8-aQfrr_G0~u?s3aJp-uN$_1T@Y{+1>%|Z_-Wf#DnXm4O|?z~44Ft2V5j-<
zo$4|1+Vq`GDPP|RQ{vL13i>(8hR{Yzp%n1wjNi_C-lAr#gH1C>fCcAs{;%@K<s#$~
zd1_o{<b%9!4<38>Q~f)M`A2U1jT^>Mx6F(m$#B(BUjdCFkuY;f{~tN;zkmHzo-)F+
zj&dg@4o$y-bA?1h!s$NKtTOZ2|ICx&9Ii;HLkUy-`|LmSXypGt!kAI$>bbXluBe_s
zefEPtxl&2a3%MS)Z)Umy3mX985u|dPoVK@voJ=&d6bv$S>UlIQlv0@7wzshJi_pl0
zSXqzjCa!p-^mQqVB4?>3;HL*fHtAhyC)=R5G4Xv~iyFDtFDhxDMdxHelR7Bqgaw~0
zK@xfeTH4cB$48gHe=oIZ3BqQE)Suf$*?>6_xZ&wETvJqPTG<NK7!O~k#XS@>R68YX
zTd1?w^_N;upH^&rwHLninZlG$nGvI>Lc2@3cZKLdbs!wAO+^cF84?q}zHyI}QV#6j
z#{Q%kE+z_?RWz7NDoq7)$}aP`53uAtyd&r-nP@2CQcP6}`{AL?;O8k`dmqbFMXAE1
zK5K1BA0i3YeZl=YqnsIvdQCjA;`CB>Q_%d-0ox&Cz#9rRGBsGCtq++!O2D*U$O<~h
z7?K2o@@@1`#Aw7M2b{JueV;+nYWX4l6gMnLMR*z}-k7)x+HmUJO7(Rxh(o*gz*)>A
zFz+L<Nt00bc#1sz-6UFgJ0=vo-H9uq>`ri|X+cg0n6B5HVBEbJ!KkL2^}{gzP=-fh
zQ=fvF-KquGotkI%XGfB=G_U^sA$hbt=G@sbp;3STnI1v}74zi<+(l^V??2RW#NH2H
zM$XzXOJB2gp$B{(YJv3#MXX1tIuF?t-t2|+mJlZl$r@sl{NZ^?Z>mIS6rPE~-&)j8
zF~TrihL=5IA3OLN8R3^D)t6}wXy54H_idEh2zjQXXPhgPqYs*a8!rv`x%|&n4Ho2e
zig2~Z<SVmUN0Ns8VKJnJM8h8fh`25&`#L}XPCv7c<|ySibcOeV`TH+*kZ$t&wjs8%
z!tIk{vHpW_7ihUWi(rPiaVMe6fcw7|(7$R@Zpe2LyNaX#U#+$Oumt~6&-&{O1xffs
zZTBSd!vCk-?yu699pbPmFP2+2^uoHb6Mgz4Pu!u0%dYr>6k;VbbaPG0t&NKeuulN;
z^vCOhv_%&bdM_ZgTQw7fL8b^cL=VDzb8W!|XradW8p+p%vq@0L=BMo|wHN?;zPrpy
zj}rF*9vJrstpCsD$wkZ>P!A>VzedJpSBN&P=i=y)fJvG21C<!cm{_W}^4kHMu<_Xf
z)K%*wJ_Nj{&4bONUJDo%Rt#D7Hd|*_z}Ag^J}p<?KVtpj64K<2)W4wtHu6wCaURHv
z^=*vuqg##em)&ejfDUzq{}(i(<Xyb|Y)?+djV5-T?6X66rKS$iE&p~NZ)%wQ^5x0d
zQ#<(>2u(DKyA1b19pBd1*Y`PN8VxLz5*B2?FD?0NHLhdQbL$g(pM!y=*AW4zPy8I6
z3NI`Uv=)~ZdL7DfZX}5#&~VIGM_pluy{Xp#7CQ)BdaV!be0PzOE;L&%u-ODu27d37
zSX@P_NEnwWG2qOf2TBORYku$@qEb+EmA;C&1>}Agq)s^OR6aD(5nbxHItybg_5`%F
zvyQJiAsPqXfTkE>keS!Z<9`h}!1<x~I~8aENz8-HiT2T8b=)G7vOlc(y$%_51yp8-
zpm|~s44f?3w9fU)(!I_-`CaE4{imzNod+wDQmtT{xJ9}=*buE7I*SVH9e!2BF7JSu
z3EcpWcnfxOOS+IMKFESL*_kM)ZmPgEs<}hv<;1zVN`9Fai5ShiKcxa@PmMNIom^(!
zjL;S&HUT`pK$t=)FW%fkH-BR{Lj{Nu$Oxj>p(<E=MBMSQzo_Noo~`XX6+PueAlV?I
zCD#-;;k|1&R_A0MK>@lBshI<TV=2_@%1fx5f2M-b33g7H=~QYM0kl|DQ;ZGT2OQX<
z+{P!l#QTADP?xrVI`#t8|Euna**^-ja93UgzUu{~uezBpdKmf_SCF0J=7C|8iX?4#
zqa`SPURko}+cV>#N9f#MzZ^MgViQQ((%^*kT?=LQphS77kmbjSCdwLRilaTEm7<-v
z_0|x7m9ratL!k$Z?yZ#g(e_)!F8VK-V|(H=#QH{Qc1(qH<fu*X7RhgA+P1vqcVlrj
zo-_|Tj$YbasLxU7J>xn$Xf#RKhl>f>O+5_VR!jVXuKd<T2z$z#ft<uIh&$##f0C~S
zid6z$OHJQ(o<Qef0Z`CF#PDOR4Fq!X*S_spIlD)*_^WDa>QMr}p|LXvd_$LwrEaK8
zNn9!Y3T3nrARkQPD*8oz2|p4n1S7@(sXZfbSUjhULoVPk%z>UUgYRn#BLmq1%jyG9
zKM{FiYv38WF)WFKoOmyP*iI^AF|bcxbqHb@7YJ~oyRv0RUZsk*be1&(GJZ5?CRqGM
z%u#!#+YGfxoge61d`QuIR64mEcvvqZ--0?#hq_mXkbANC0)$aIp2e?>PU*_3lFSuj
zON$k&od(LhUvl_7W}iJakq{E4DlE71qj|Zop*M2$ul9}>Di|zKC7sCQXOqg`iU{~X
z7Oc{-fUoCFDgkBVZ@<Ei>}zV(QH7}qU8Fu1@KGS8xzc&)6x$}G=$A%ZpOlUPtYC2i
zC{Hg+#m9p5wuA7aj-o|qarY8vmvve#ocz}NWvZP;w}xW(-UF78URjOlo-E93w5WG=
zEmu>RyT)^PwCd99E{|NxgB|{$X`tgBJqMH$a(fk_2p>|`yamgzAyD{5v;VsHx8pv;
zEp}Os2l~y=edAqX?pO!Q*4RKoX`)PRavjPG(@kPE9t|rU#){tpt+m4n6DS%gq}ip=
z$#sB+Din^mB8l$c`q_7PuPrb&4Dr7C1#4`O_M#?PgQ(tqhh3@{oX|9bA=0tS+D}@-
zdi}Ge?*grwvUKC#Z?LUd1+;#~nt8dOfEs~oxMVUhx&8fp7gRn>%i3bMzOPDT4P$j7
zb!&}6fivo5;OrXw)qbhVshevy&c^NOcvoiiL>pHYRK6~#gP$jKgxF~xY(Qz)@pbYw
z@arG<247gpV!qKVV2>v?z;>AF!@H1PhR#jCs8P^xdDCgpQE)3W1v)g3k3WURM?JB$
z_-PF)rZINoy?`z%%26zLQ#VVRG^sI43Q}lx?w0(#--l6Mx;!RKz&!aDaN$iM7@UXQ
z2CJc)F;u$LEx%m@)Y$ix327-G=lhBhKMVAO`umuTd(l{Uf8lBl;2cC4Hz?1o>sbyf
znOM4qJ+W!rcb+kVTr|}yjb*?lvxF6g)?HV#(=-wcQol;;5IO3(c@95jw+cSw;pm6R
zNOeAsj%zc$`8rP>%N=sm>b9XxvPicZZ|yIo=NdIpx)~MEK=W?6MmJe(K|k;=YxUEB
znV$Q%Hcu%e)IUU<u)gf{#|4UD$2ZrPmdG_h<y-krd*QJIUdcW@v~}dKsKf&zuZ*K_
zNB2<LqQSEm*8PfRjh{RATH#G7ksf!1h7#<@i4f-qOT0Y6&xmvr6?4R|$?BALf@bXE
z+<F3Twv(VbfG-kcPU%#`dSF$a_$)0lNW_(_Yz(FtlL-@e{5`;i)ECzzpDwm~QpaLN
zI7QMU<q8;M)tc{T=MwH}ot@V@Ww>mpM0!DZNP=R8-?*(qf~$0<VP3_#TYDGH@#Y%o
zMO8*9{p34@MkD1%;SbX>RU7LB14BDg$~p*`ykT$BgDbEhQqjfa>za~m;yO~32TZbH
zW6JJ>mb{fkYjmhr*+lI-hWLzxbX0g}!rLcumGYGre}kgd)WZh^2XTxWUR<bC_)!>#
zH*e8#UeulOo&eN6)bK>^taC?#rLSdQqx?@Y%gY4_4SW*t$!{hIqDPGai(&CI-`~_Y
z<>;V$oDW*1EiBN%xYb{xVHf$zlP8NP`ze$qbJ{5TtbS>C%5Uz(%v+vKcv6X!(b&T3
z9^=~Drze;g>6g9;L=Gx3NVS{97jMpLq5}6e-52Fq@$E^K*|-)Mq|y6Xn!~>NF0m^V
zHK4#H3HJVZ=bm^4uH$fYt`kJh706R5KK)DK#4c$&SBUIFGZoH2UHksU&g+-~qmBY@
z?&F{MPYV3x<xcKA4uxs!nRmZo^TW5Y8#d<gf>Om%CY=VfXX){n*>ApMN=mK9!H?FM
z#(S1l+b-r2lZ{pwekU}Q7#7_1KWj75#nOOk_bVUf!x+aAstjUB*Jnwu!I{ep(3vI|
zb}E50NH@Y4lk?gOC5-SwCktN=thOlAM_$L18IGJT{CEnVrGY6nFsAlYClo~)<BN`%
z7n7F>_~L!64JZ%m4@QwbwMKD$YvC`I-8Gllcs-7aJCesU&Ke~XHo@R1AY`;eVZ2)m
zx#VGK`{VFsq31;c`uH_MSg83?%=dv*Y64{nRP&B`N~W1(3s-TC@j7Heeh5R7Asqwl
z#RcEmUZ(nsP|K-*YWgnw{cnBcs_+RT&E2)BJw0qkH`tHMH;&89zhU_nIrolD%<;i}
z)6=&JD=dO95<eTtFbCQuI68FCj$3yGc`S{2vWxk0#AncA%R&^~5a*jnhYnHDLyi(6
zM_+^xyM&iYKG4T!c(sor5xW#DqfrRJ-l;1@rsfg2@%ITYSFy1e59}GS!>9(UM$eP0
zETp*kWdV;>e|+(5r5}E;1Vn`RNR1PI6NQqjfeA7RYT50iUybGDViR$~OA=O+1^P#K
zYu9k`#p49Wm|SkN=~WwihYPgW(h_%l58rq)%jtMDS9J^TRXqEd%&q_E%)yEKoQ(<h
z92s-Jec1k8pX;%bpeZsm-;Ao+pfGJQh_u9iCSY%oAGK#cOuu+BSpYw3c`stLea<ja
zxpsG)B(Uv##_l_Z!S4=enmd*jh2zSe>h;L4h;d9j$c#{$cuJD%XQL#@8NVfcIAcZ@
z;3HJQPBit$`kaheyJuMe$k5!?YPg8d4R1DQjq;fEnyxPkRMj3My;WQ`OP=1a!+BUX
zKVq>EeE7NaY2$`aRK{WvcYJa4qbSE1BeaQ)T%i?iSx>o^kS503u#uq1`Y!vlPIh<k
ztj?&?y{R*ab4(5Q^d^qbPyu{JLb8DiJX#nW9lu9(VUHLcU4FYU#?)Y@`i36j?l=}=
zI1%4sP`f8CDPC<goS`d$+^ZLC1Y;mU5KzVv`*<WsdYZe{WjYA=3D)>U^^Gf-Xv;`R
z*}J8xE7-?<SF17T0sj(<*a1y4mI2SBF|3|RP;NzbXH|FFV^vOghl`(+y<6ssDK>H^
zcxg`iqD{7KmJ$bzFIB$ONN#e}<lakANjh&BRv1pec}1jQ${Fq?^dtuKbL%Gz6D(IT
z4OCeKBW!~##ayW-DcSJ}mpVUl`LXb3!Ud}bN<Elx5(7HfNU)5EXTV~xwarmF_~XSM
zh7EX&yREn~LQ3sz*!k8p?x4G#SH;F7D4-KoZwSO;H&_I<SfdF!SXHm-dxRjbLumu%
z=Saf|1&;N(vhl9+YT*LMPz8|zwM=-sIcsSuJ(rW1*Q=VDP0ewssb7Yj9dwIdS=caK
zCyh9M=Xxi|EE1m%{ljl5?IMvx;Z9roB0n-gJZvp(?G|6vD)x4J=^7<kg1lYH9YFH~
zviUhNy+^kcs9>$|#I>V@DB>+B9nJ;Op(Thz+-IQ5LPJ%>?NKX&kJivA5->uk<mnfT
z6=&V#)J_deDoJuPDA$v{D<V}ip4oXjYbR}Z=UgilH)wc?fJ-H~iYF+S{nkR6<r%rq
zG|hHQfFp9mD;g<E_^MU$bFMOw9xS77CqzltXgiUXSTE!eNg)?dZiF?X3@UX=^)_<b
zTcb$AW3L;@p(&hmsS5aCsATCk8ZHb*dy3@BviGNEY6o~)ZCSG35;%iZTWwo_)WVX{
zG}6{e(Cim9YKNxZJs1lyARJ6qW4)?wvvrSwm1XyqH9isW9opvcb9naRM#EMEQb{Lk
zQ^H-;M?zYECc#t=0BBj~`)!?+5icZguWZ)2S(Q{Un;}R$JNZD8wZRVivrKe9#xwCY
zxx}<s!0dMal|aXHxf(7U6}+w+H_ySuvgixy8Ev!{X6pNFoLrSqh$7dI`xUc%Pe|Di
z!)I%@7bl02tK^hWFQiZFQa42A$hFO05`11VYwF&U%G+pt?Yfj6)=R&M)kFjkADsF!
zOo8tnbcg>anzdRuSmT3n29NVYbnnUkof~>2=j->-XnR^8zwaMNhcj5N&Z6;}1pOce
z4$nv9RRo6QxWtcr+`0+AgoNa02En>Z?>spAF(<JN#j3Bd-q<<J1=4MNm1cs5hlZj)
zDU6^cq(z?X_Sy!>&dW#=e9hTxLRHd%6^0-U@&gTXXe7qR2_<WhE-XY@El^|jVhKj>
z{QO0#GuYplN9`)CZPIC)69Q&r4Gj&?;#0<G6MSw$G^ZfmQzJ-YaW=^A;jO&WCV51B
z6X77M|JXXnYhKgr*-G~LW^{)zom7~_Wt?0ifyu&Ry<*^cbyM#cJ7)wu#BaB+LV`Ez
z_gh1aH`>zb!P*hK0s-63OOZx+RzYZJST>uWttJdlS(Vaz9={hPs&73SWm%3grFO)c
z*vwg@zHBI-lMP@^{oP_`GPkR?uP3OF({LQ~HhP$m(?*@96u)Wd!cp^~MmLFiRiZ!c
z`T!dns+!PlJYLJU>Z>QWa=6#tB)KoDIB095EWzYE=8HlTM1^zL_&p3e3U>cAI$S0Y
zIH`|c<x#ogrr7uxZIYuMtHc{z&+h{oeuZAMef){98}?E%9lt=iv8);Rc(o%fyZt;;
zrRiaD-53%WyZ<yU>L8SiYL+`4|ETrYsVO9rf#{IRGS<P|coNr<@UME3f&)~4lrp3#
z|Lp8P+veknFXp2>ZRCEp=aT(jWgsxV(@^+V0nKs9QFm%phbdP1@S3+;!~I^)#`~z8
zrioi}AXiEjs~u<<-(+g+;3n4otB%a|0||t>nVF&9^RGXGI8G5xL@`wxDw==YCJ(BJ
zM@s`5Z^=Wa_;Sn<agT!YJ6!>V^M;h)r@F4)HgV^|$iP&MK!t#IzrcMN|21bHhjE0K
zjon|ehcX_Ut5oXs@d9)U*{8kP{)q(`Jy*C>D3?A|YugqM(1H;P9u;^dX3e$b$=737
zMy0n*`9lA7D-IcNPhl!R^&RU$o-AU22t=+!12(}~@BI2aY`;x(c*9=vrY%8Rr~DY%
zpn7~s^E?!6`fIKjT2$JFO-@cGyPOz>#t#h@1#1ED9fr*7T{$AI)1W2brVXF|M|*D`
z7xUh~k82E-B`qqXOw&fGtVM}wC25hSy^y_CqfLp%k`_ygB9ZKwYFcO+$sSWesI(!K
zr4>;j<$Jw4oa5a0Ip@AVkH>HQKEC%q_Z-dgp7*?7&)4&LJ+JF}9=ljXV{HjPDub8G
zE74+gcMNXRh2g2;Wy(zg#i2Jq+{zSUow&~P14Zi)ro3cz{2(h$qKS$FAd69qnjs%!
zh)0ueid19*P+uB8<s=$gsr<<(_zwLFl|^;Wa*zR_Ih)ezs1`)A6E6VbSbb&d7VsPw
zx7_hOk=^i~Ac@+6Mj~ua(%y;o%zk6sGE#R@$pMjAC(pH41aJ=~Vr`X+KVZp=N>KJh
zHmqg0zXXoDc1?CUpK#-p6Q)xsSMlnv;j?Tc<XMIZ+)p>?tS7UZM&X2bj<5aU!J_oN
z3>#s^=mrQxfV=93`5ObD)oz=Jp(;}s;{87)8NZZ`XqdWo=IXJ31^NyXeQ)Hg!;a>U
zW#kG8P?Ui7ste3{PGLs?(=}OeW6$()e+QIP7z{c{TH#%^**(|IwKrzQ91zViq}h{&
zStj_19Ab!<e1onv$k0=^+P;h6-&b{2#@3*dCKy{Wmny_qHJgHkRkoxt*vF_PH<Bi*
zfnQ+rtLTmLF{AOw*-GTO9^UVs=>@t$OX8?0KKL=+$jf&rUNpjOP{((4G;$usX5dDR
zRF$O;XESi~M$*U5A4iEz-qKQAEKk=i+LlC?&LTYd^A`Rn?7hdNH;^Jfn?XBF*3X&y
z#WYb7^3g4&@1~0Jwo9lte*v;|Y?${rbSzSEPv1|YGw^|ec>4UXa&=mx0@_jsXC#fH
zh>@nx5_&XmjFI<D_K1OQw43VCcg*yv&$lfO?n&KiwvFsjmc=S~C=$MKlHy2mI53=r
zuK;4SJ#Qf!$e4tG5n9MTYj(Jfps8SEU&<_auJc(y0xgCZe+rz&cFS%lpJ|IiJmW>Q
z%pd99?-AwqUH>CmO+z%Qo$z~j_$5;O_K<?Ehs=Abm>j_1e|_zbR~c!9{M*ZZe=_4b
zK45rCYEyVYaF2UCeCnSCHSf;{#39w!>5Lo4pmkHh#9R03-r)j(f|}hP>)7OtM=8u$
z%NO;iOpDc}9Y$k|dg3~A2u~ocT5h+6((QBH-Vawcz{}gIm;GAZfaK&8my16Ez-xhL
zqxm;CdFGn%xtku}K0H5(O77_)p`W0(_~oGp<*QWj+tw_=Nl_vx&>qf66M|am*-<So
zcQxCL>?>EUSe000<Fx@o#9CDgjAakdp98$FXRrw;e68bBx$*RZmX075?D}z7CP6Jp
zOhjH|tfE}Q|1B0R%gDQ8wh`9pFKsiLC>7t8ww67C7DGDBuQLk8DZXU2o1N2kQ6U77
z#s6Jjh^)kB-b~Vz*Tu_(*P+)D_6}R=s=_+*JMYFr`DK&j?;gcYt8U%!0ed)Ca1_ap
z^Cyx+Wh&|LZUg%Lk6e9RSsQ7i&Apg0nj-o>8m%hLxN@9^yU{}|c;BIJpM4#Yym9^D
z;dsJUptj?tU)J8OE6+p^+}D0_Nz1FQ=CXf#!&yL;c_7`C9#}N^+0RG4y4|HHAdmE$
z2EjC`2l|+StxXv7A)p!oyI)<+VXDb22+DRrUU2RRj#}G{FDqO!=E}nQk(g*Xyto=_
zrg!3n1P&DCvTY<3IjZemv{%VNK$53)QmV0UNlO=?_g=u0j=(gBPo8!XCz<F}84B>*
z15A!hsT_J5xx!&Z<iHmi#)joixy8aSYl~hV^`MBF2N=ePHh_1ZvHt#1Wnt1flG=L9
z@03<md%9g#K2E!5K=6HFHhG+xW_6?YS>Vbdm<o3S(EGTKeKZixH35K^`)94}Rz!Ts
z1tKA((?>vX(&>f1$O%2T&J#NZYmHjIO1^--kPpH1LO+y9lcT@(^udMhh;+GVyFYfX
zOk0g-^7^-w_O6ZX2Z~)7nz>_K!rG|?@HtG4zh$1RrCvJTA><+Cg&i@5BED|Anwpv(
zeXHHD5*AQDt*dL#y5_xjN~mAZPUXkeBvMb3m-us((^n!9gz){3O{hE^1mmZuEP5Zn
zeU{r6z^+>0+>_>4=euj)^9ktf_YTHe4PE%Y*3ASUUB*npxAVL3X6aluaK^W2hdk>L
zFMV$$d=*i`+{k-VQ+@X8T}3Z|r+dLvaW-?P#WRqkx>;$9(&qTZfQIbRWVsv)e)=@E
z3s3Y{7<11=bg6Axu(i9z&*!E8Zy6Zl0apH&1IJ{3&C`Za=raO3>{WD`!qb)qA@8XH
zXS{Pa)LO0^k&|5nhsu%1dgZL-hW?pXMXG)PBoz*K56E@`WDBf{-!oSDCIMeZj+xLX
zhxW;itHo$cB|CE$*}cjzdI<)E7vvzB$@LzYF<m`FfbHt82A*w!_cQa?w*D9DhNoHE
z_@)4&wXh9tW(&$~R;Ng5IKLfy3pK_?VD$GtSXHgtzWpi`DGlKwvhHxtjV>~=Oi25h
zw=_Z3V)7!?YTU7Gw`=G+WI#O9bvfDlaw%*KB|ILT+T&sR9zUStVGS3+W){`OA%WU^
zIgUMpU=bftVW})T(%6+egvfW#nZK|kD+qSgYt-zxm(XP69kH32?hETW-Z8?3x5zfT
z^!?4E@4kJuT;@P}pP6WuOHnm*boA*nK`f6wq*KOhA4EH<OQ&<(%qJ_Na8hV7FM8t#
zv#|2G>R!d+^@`%~3EZN(7rnT``h!vWIa1Y*yDT++JMvPe<L9{-x3KTmb}eI>@RABn
zK^s&DtKbH3C>^E(hl0rQ7QbVxjF#U`%TrA8ZoFSMRFb#E;%P|Q38rqflM|It`0dr<
zl^wX}Igm^7uMYG&)#K=T7NQueB>r0om#E>=_Bwgix+saQ;=#tnT)E3pIS?dS2uaNy
zZ?>Fn=W9w$7q>ZOojIm5s|RU-AB#Y_TFe{4l05fl`H@X3H!{ChIWj{#A}vf`k_J(x
zX|ZRONAGS4i_PjZ=(S|*^fI($;!4hn@ygb)wux6p_3+-LY#F0eL2!M$ne}PQ6;v#h
za+Nx&mg=8k7H?YA-!VG`z}9H1rB{}24gnU)1%RP?t?7+$4H4J$_r81a0+Dh3*W#;F
zt?EY$2aN4GY}2I}2f!t9MBNk^ekMdm|6r&HiQ}k<$<?3!YvK_hEMThFGfQ?pYweAw
zcbD5W`X&sZIooi;)P3pNrEyDdwmxL?l3Qa6Gk}usm(!~&Hm2J>ev~dZ0NVX={wK}~
z|NW}gmU=xlDpck~$I5nb9xlvJlGoPkSh)mD<$3->$2m*JE&RMnJHhDU+S4YvQxTZF
zo`ot+D?TYTj#EC=mO7iI$W_b_uhW}qYq~tk=N;+5aZ;4F4oLAhF{FRxGI-@=z7%9~
z$?>nFEJODYQH$!Dxi&M^&ILb{QIh027IkGU2sVr>gjA0k=hPGg2X~h5r}n2l@s$_c
zgU%lhICWzCxhZqFyHIruV;@6W`g+V<?VaSme$TNMP&j3kHylb04_2C~1{+otqW{ji
zrg8c0seJ;Fe)L(mbGq$1N6di)Z@Zl^$K9^Skm)4A%xRk$lJz}Zb(hSXjg8dQCbc$y
z)5UsaS&0InUq4NomG4KlQ<t_8;IvuEUaC50F4Nw?yO^F|h5AuER{X5He+7QRo&6kl
zhfD#RN2>bMre)?+o?AtaV$SjK9xGgqu0F3_FILSrqg{Nji1f!g`?tkSXXV4=u9r&k
zbiy1uM_cbFO#Z<eQI_AT;%>^sWw>W<Cf$c`4yMLj#U99DkIx!unP}FcI+D3iMT9Aw
zzSFMi_D~jv#3F`3!-vLBaeFk*oa0$BPG!H0cJFGFbENncRUbO&+BMU5OdTp3ZzqIt
zmNEU)?tZ-I{&oYCSsq-Kv!_JfcWUj_lWG?Zx5k{Y@eqhy?UQzsxi|hoUYP36s%t&y
z5WN7x*VcD^_&D4Qz4g(-E_A!@<=^`u8#_0~3)B+setp$gwVVu&W7cA>a?IM4dA_Im
z&pzRw2x<~;uQ+LFLhr+{^MFhR=mTX{mR5P|3!d3(xYL&T;O^ut`}$7<f$g6Ch3aS8
zg>C&bvU!;ix6UoiZQk-pDz{7}PuO$rW(79~pC%2c$7L_j0JVCX7|WMD4U<COcn{ET
z=Tc44Ih?}c%X61DcnHL{ZeX`#p==bdIK1iWJEQIwwU3<D(^WtFe7SSmyMME=p1`|$
zpMkxui-cwltsvCx9Ph`A+L*N^LpRQj61;n5!okvmhu%O~*MgI`b@y3qKiXkc=bk;u
z;lXKbA3{pCm{o04GU6&)!$s~s7I2Nb<|-rbPA~2$C;!l)ZRmo#7<;&RjOg)aN^*_5
zP8ml>ZF8a6omxJ5g{1WrXtB6a_FGz4X$sp!x@0AUxlPpeJ|@9y+tDt$E+~h?v5`z~
z3rTKp)R)ZSXjpVK2j3Q3Jn!XKXj>BOTM}EcFWTs_JfK(%e%^LiyRzASYwQFIB~}$W
zvMRQZ6Kz_S#+eDJ?G<mG)OI0b_#?<Q7x(o8yA7U*R{I0*?<3YN;ip?Wg-FNB9Lf+C
zq?RRyrKDCI-V$lK{*aeZgPt@sjemc{tI5xY$0i%rG>k%eq=X1G^@&LZlFWzHoirBF
z-34w;2+rpm<e*)ml)me3_*j|OB3kv(a=C;I8&Cjc#mB$cyQ+(^k}v5G3icW%bDBO!
ziW+IyZEL_RUacfqwZ%>{sqJA=&<D4`w4<DPN-L`#=A}KwH(Af9vI6QTP<h^#?y%Ew
zrWtsyTA7x6H@2p#_e3#AQ<;kC2KK)0Ub{w)WwkTwg?kR@wP##(4iOSAG1K7Pmi-LL
z!XP0ZK!5v6MC{2)S2S%iS}#asB^W^rV5Z7K|7Gr_wVc=SVK&ZRyBW+1@v|42p6CaP
zKQD{bo`ry&AD0z3SjOfYB>MBaR(;lU^KTbU2xgW6S)j=Ug!6m8XzKq5%$bzyl$l7h
z)|u0U=yqcWg-AuW>R~>izYy6`h@OUOt!gZ1*Mm7WIUK|5HnHiuGW;^17R*gLuew5M
zlafySUb!VUFC6j`V-zdp*C1`4+jA$=E-S_3F2)V06z-~0jC)ed{i5Wpv{NbO+LzZd
zcD`y8)qG**HdV?0xKW0xWtC>Y^)LahyUnTP-&dYmVc-zDNh#RBxNiKiq**0BEao>(
zMS>CR(bAty@{dW{o;AvadDp$gu|@eVI3oSEkPrI6%-Fwk*denXvBasG)2|{Ix}RrT
z(W7(3Twz6Qx<|=kH>axSbxvi+yDprUOpp-n6H_pm_cEQRR<b>&Ecw*FW7jOwT%`K`
zM0$-i6!cqO#|4OV?cv`SSnG|WZZ|1aDq9tTKyp)|=!@|ds_)%IH)zBL^cB4C-(Kw%
zpD4z2PH8DRbM<Tg$W24B&yCHPL84&nUgyPVkj?!t{l&Q0<aO7Vp;+EcP=-&_)(T+N
zjzc}Pkg+x@L)6M+ch|F`di2d+s>W`aFE!o1QRMQ9?`!jR2|WhRF-_(+g}sU(9tz`l
z2Y`5ZG&x+I@`EoaDx`;v@OA~Cg2*uipBoy+AMc=$8s#jz?fgPMZ&I6oM&e}mhcQ76
zCvMk?u7w~t?+%isd{96kwemq8Mo8T5KEU5^Z{Q$8r8VjT@OZZ*NfaAQ9`7p@Z^F+Z
zykY;Z4hyK(0KD#OS%ZQtF%T~kFJs{|Um&{*U0k*s!CwduqYuxK4JTH^wU~|2DdLvA
zU~8`KKJ{l6t5<@q!Zkmx<A2et=kxYtEw2uw^0}iVRXuwziv+4YD7G$P4Sso3w5wu#
z;PRX^PK&$SNvbD1suyGr2jt38{Q+D}0bG@E>IW$yBO+F464qF|6`0rGb2iK4dvRhE
z?JBsEl1W6A?WY|x9rG^5Z^IFM?!-eGZEt7K*dj=0aRFe!oN_ZQia9g7n(N|$gXAIr
zjfdD6%!Yz3p~ASiX2bRuFlbHq<-{y!(6!}+O<L|KJj@VB755uG`-27Q8y);T=~XvY
zNe)Ov4{c)WFK&2P{`}BOCNTBc$IkKZiL0>&j%fNG5SCD`0f)^~hn9gvcDv=nZKimw
zr!d}xFk(|eb`tVuC`3iorx%Yag7(Y{+_L>OZT9%F2*NdCuKS?`&6UrYVnZhfwBC?s
zXMna_o$pm&Nat^S7O!lc`|aB{r+m*OCfB((u3q-iugdEF-N><Opvhj1pmH#IQGE3%
z6nMEV{#DF;5G(C?y1}0|)&p0K3e_}y1A~ETlFB30=Md^Nb9j2N7BBB6w9U<|?`3LP
z1l?`8;Z~Jy7ubiX4!c}BP=Y66(8oHixWfnHED%7*O-Ktp@dIcx$F#qYA#Ay#1F<d?
z@z;csjg4ww5+!*tWcGUChz9zpW`{M-*=i#R_L<tGwB$D>0{>5$XBgwQP?}fR?sH!o
z+|j!1DLoGMzv&%L*;X+60xI+clQ>>Vdb2S-ye{wJ%UgS$K%`tIc?p&O=}?G~ORhcz
zA*Ewb|2vU?%YOsQQCC0XOFXK*k7A1_ua<V+%+`a{l`EY^{S>EU=Bz6i*@(>ZK8%Lv
z{S<6ljM;(e`iC<3WYG7|&EwF_c|%X!O325gvK3Os+MV&yz~<MaIgBw;Vjl2{<Ci|E
zdaj6c?kNLgv0*g*8LExrj83qpP3VDTho)I@+^>MA768e29q|KzaY#)|_H5JUQ(b56
z13>~)*<5_m^(v=Qby>@HY$M`d5Xe*ADp{bi#VOByU0XV_gpj_%J?{XbAS}B#A&*YI
zpRAp=Z+1!NkM70?LIhr%;-K_vB1^McMgdUbn<-hDzf1wFrs=X;p7uA&#jmx=*2AJ?
zpAq+VD@c-!&%XmRaKZ-f0I10_uuI4V|69w{c|f(zRXiU^d^V0hsoSSsr0;cGO%Hrk
zmM~(#%YT29Yo2?;ep%gWW;++`u(AZTH?R9ar91w~d^|7i8pqM~vfrkerL6fsFG>mM
zl)CWT=YMoSNYZ4K0*XC|vYi-6Fx94o^ECVG-Qd$`2@M1?H>IDH8i_S}G4%ZnK`e=j
z_l>-l_gO2wpa16A#Yny$5s|O_jC`byZgau9<e4sHiX1y@y8(Z_*z|yLaV3#-yQde9
z52tH)PZ=QvS~Px60m4#ULjN|(aFHhlpg)&&O&vb^Hy}29nn2Hp2GAy*H4R6SeOf3U
z1jljbR~x{fY>uLx_D^?Vx4a^$^xRlouev$9kWe*z6E7t7YkPdUmN1fWG}oB#IkJYx
z*-Y0JpT`$rUUw`K@qM!J(FEjX?eWP|S<J``LnEcF6Kj=d4%}OP7}l_?Ky&CCQjqHQ
zT{1za3lsZ|8|<X=q)lc3)ZinkLO(B)4X#O1{N0{$mOn1D;;@7J#EPty*M>p|N2^L;
zz0b9QfNG;I%=UTxwVcE1#grkIo;$G?KjbwzN}PuixoE81f*Q2oHwsSP9M=Et*!Ha9
z_oCETAahyTO$4cM@l!1W^(mF^F9~%Rx%&pL<IK%94kq;%Y^2Tq4ANTPFG&U`c%!IQ
z`{d9M)hK2*PLE)&1)n-u?A&{25VkD25#xtIvxtV=mk(U<<W;2mk~og3k)F4+Zi-EY
zeNGLl2Rpd{tgNS><}B&9@_z-#MmGuNW!Xf;ET!q%F>0n<=%?i?l6Tt-1Yrby+lKlA
zpOr&MAHseB_H7+NA(x_&k=3{D#~&22SIfxT>Bejr0>n^6YiJZ>gC7hOOh%-8c)u8M
z_~m?w!_F+z^$Z^8He$Gv$z2(FQ3qhF{B!yIJw*5Ow`b;TvpT}L75Ur-Z-e-wac4Ql
z2!UB)rGQfG6-eX@T*qd0?o!>{v-TcwN%;Df)Q=+s&#f~_NH=OEIE04F<wChz#5vJ%
zYDB}Oh{9o%9CE<Bls(%i_D_Ipl8X7w+>pL5ZplsjknO=4I}m-ieV#UZIbQ8gvwYf$
zbhmxp>{J|_cVYj|7Oq@#LPhl&B7eP_uDpKy32Zrl=+9&jVG?ZLg0TDWNZ?P2(B`(D
zfBe?S6qqe-V@3%#NLb9fk!Lv7j_dqES-7?ehh@H;UT_VD4!SrAmztP91HX2NSnD{Q
zR4TD=Vlpo&MLEBdGZuC+^3I=i<BF(|CSq&Q7Q3T-G2Ype(%1Xwtl>w-8=xeoknU)j
zpXeAW&5ATH*HKgI4H|b)t#R1z)_@f=!iXa9$2(gr|1q&KJTk}N!1&+#r_ucVHeVga
zP`4ol^o&^ZR$0F#Tw|TF;J&}iqu3ZpRDlyvS{IwfaDtw^Arv;m{h|NqwZVi(29>Or
z#PKB5&+a!~{KVpe(WF|$MVaVc+mk8scilOIB@B9CX`E6%z|Qa)!3N=s&%y|9cSz>E
zPx>*}MHeD2I)q?u&O+?B<n0#Sy<i)Gi+qkn@fUbI!($K8xF{IYkOnxu2cXoh>iaa)
zX#?O~;}#Ql>FfzYhYkQ{_xpD9tGAK2{cO7>4S&^g{9XJqjnZnwRoTqc%hEsCu;lEC
z62^6Ds6|%J2=^98+G=g<cOA>DfH3tZX?uGD1dse9xjCZklhV331wkNj`>gdtm9RC1
ztd6#-^rD44U=FlC>L>|bDdlOjC%g&>T2H`9;#tERcSIL>EL&j)#A_Zk*(bq-3}8p^
z56gv4C|NJRe9Z4i%}~jW^SNdpBbTqftZ}EvZ|(LNXjtxTCm;I<szV;O#DuA^#0ux{
zevmnI@Pr{#qnNH0{?oCJSBc6|R&M*SX8@;S07mHSR@q1&a!6s%A`JhJ<3<1Noqxx_
zq5UCk5yMLAqD6~dm>if~s=rX|o;qoee3K`rc)HceojqO8>Q4wKjUXK{Az@6PkPLWx
za<3!IPz{C_*>>vdhbMeUTLbenN>!Ph@r#CKOc?r}$i6+_R-Ek04l&t=v{oUp9SABm
zag`^syK3|%BQg)XV(iR28uF71fcrC5kDM1yIJdnj)0Uq-v2P;z`nwM?fM-8D{2e&<
z=pP!Le-VW><ptS}77#k4m|Y^}RMS!#pNY~*G>S-dZpZEa%RPfX{kirK<#n(rh^7%<
zBmb`S7}}w8@yd)R51X(v*Ab!BWkJXl?@w<>B=`pQZ%?%1N8IJrsA<M->5b4kfQaB*
zuHzBTctqWpDf&>>!1({#dg$LTYCLKDdqT|n-{{f=NOKlKD?J2r_w^3aDAA-*qODX+
zf_zkHHookUi;FvaiR^1lwZm*`lrr{kP?xCcKb<#!zNVNsQfbHx|NAI|3;2^*j$BkK
zS@mwotFaoeUL-=$CCUVs`4>eO=@p@qP>aEs)?Z7HfDJ)(D`aF<HE>Ie6250Zh#QP6
zLgmMGpVk%l_*`6nKNrjNw#SDIDTrfDQ*pTT;+U;JxmRw~$q6{-?@X<oF8SN;{PUh1
z%CA*$JLY{fsr=WC`17fZeOT*j4tXYy`t#nWc~YN;_PNN++q|mgrt<SSRL6YJO~Xfy
z36mJw`r~&Y;!VgdMB4G^V8AkC(EH#aW$^WtREX`nbI01A5@-SlP+42?k;&u>|4>lR
zCXFU_$4h*oiosSp_(zblM`4Br+yk`ZZ2!1T-%vu^=C~QBLsCSPV7~Om$Od4kcQ)0=
zx~AXWh6diTWA9#EyEb;>EXBv|>wHD|BiVaKOFM%8<C*N0UwY?L`9v%1moVjXXI87P
zyxLG2iQLZ~)!<T{vF`|QjpXFGZeTw0ZS)FG(~C@`M&h>6WZ9VB?1aWpPy18NXJ@a7
z{0vv0<q-CW%^4unT|JPnplj6DA9_TTvRwJsjlJAe*~1K5ZGTN77W&^Q3Zs4b5e;vZ
zUP$n?pZUe>q5Wa;x)%Wrn4MH{NiJPzEflfZW~+uTRHth<3afetMKt`bd&Qo;H?JMR
z)Ea9dSMw&3+nw`VC*=W}qwazvl-rgv3%3QWkKZgwbt43bhhuR)e|PF36s&&iHhC6Z
zJGj(RiWfPn00|LD3K4JBk4oxa-+=S#1Ur1Kj*<5g@q|rBA{v&N`pV+|+2QsUu21oY
zVm=aKq+{<4Tut~ir=*gjOIwu78iu-&P~em+H>(QWK16m|B<ZF9lQMIr$i!Hg;uf&N
zCDwJpHo%Q^J3dK0jG{G4VBcHP47JA6wbu%pNrMX{D^KiYn#dRIlfC{GMI5;u<NmlE
z%jw$7U%NtbrUhA4x$-Mq#y(uedg1RcSpS$7$}e-=XJ`WE+Lu-%?^ES^NaZ^rNZKz)
zwWYEN43sFoYRQWO{IQ#wMvaz1<oFxCtoj{!1=g+jZ|m+QIzTN(M2x){Jm-KqZN<nF
zk$m$*JktB#kMT_lXvpj5qX4}x&@${fC06G8nM2BoXwts@;EH7_LIO2^mIu_kkMS+f
zDco+?r^k53>aMvnhIHjgkCu46p|jbU0p6Jw^p*tqoo(;|byh8MNn*8Uxpe?4==G$a
z_i8Bgz4(+kY_&f*e-MR|>gkY#-czKJY@yS7#{Ap`bbblx1QU*=fOj}V`kXAQg|@yH
z9%Y;6x>shS%Drqu?r__NLX3k;n5Xqzh@FOuGf_XClqndSJn?*m^B(?KbB++HSV$Q*
zi}KJ570XW|Q+zl>%eV{TLoc8tITput9N-_AiS|B$USwvh3M1{RUd(-Ra&>jBn@r|g
zYC&&JRAR#wSlXU7jc&0Wrjt|n1L$Xrs_sQgwk~`1El&&w&<gBwu7@L{_ST2UpGGC*
zMoPPjlr}&db7jeTS7UGV`k&-hjWA1`o+BcwQ-i5l4pW==DL2uDjEFYMpmh2jYf)ZF
zm}IyaU<aQk<HU%r5=oZY7<mZ=Qq&$3KQd$WP69q5JwN=UpEaA5#rpL3U<24A8R!Jp
zVYIb9u**Z#+-a<p!L3SUo?-`)72#ZvZ1_$jlSFcc+HyVd286KuIR;ve><jvisFaC&
z9q`0lyA~s^JckR4_$6daI%-(O<7_scTylY5m4}2bnXo+~tATG}zZWty>>rt5C=4Gn
zvB~uXh!W0c-=XR5MFgWz0{U|^Z@7kZt|PdIX*KbSPQKj~+3+31p15CYWa9FOaINSm
z@#+}dzVXSq{lx(9dQq|#t~B-)oigC$2lU7mzKu^_%q9cI%8o5<QO!~!9gG9WoH&X;
zuk=JC#tZ0~ZmxFNPz!pz*aiQbBP5fnmH(HMgC=TEsU6RIvF+pjP5?*&m{nSXUU*St
zxjB`-`jmS;5wDm&ChEusXy-mXa1xMS07^66Qir;z2Gr!$s1-ecuLR_FV+<f`mP0~X
zTpn8Sd1OSUYtYLP@ne{yhv%8TeO6S^^Y+m#_<*ioksglvv4UIJG^!rLQ7^PL%a*io
zI(Hdy6}!>WCVY%b(^4>}=3WVX{_z9&cO$>cm;vUU54GAvdcm1bK~oU;MqnjRT^l=>
z9J;@ph!IoSo>9*7PoC(ApCrmfS+H3G&?hQX2_yrOD5u)`f&szmoNOD*?Cyf1CIFM&
zJ}a}7!mGZv04?^<*_dX$^QoMEcMyyhvtc<YbzA-sCtxJ3Q+-eM;6x0}6#7K9=EQQ)
zc`GHfZ;!0h>QQl3q-_^}J*&9a@y=vGvjd{J(-AUeAY`yjN3j3pGQ$|N*q+hO&n&Cb
z#7}}day6u7Wp_8GXy#&L*G5+2r#!oC-|np2X)7gpQHBYZ+@mW%QGHs+7#OG;Wo%e=
z4JF9)>4{jPMYkR+vQBJ$JyB)NXc_o%gj|u2Ey7P%7a^uV=tErxl~~Noj73l0KUiZr
zH|wrI?7cVABrOQQqPTePaP9A`;vb~|9JpEXtoU2~M4XHwzhH2n-{~pW#pNEG@DL)a
zY#_N}-WwsCc5d);+mz&amG63?!Pb(U_j+ueO~s8hUkUJ0k4EH6k$(4v!W@ZASIg%u
z_KK{k0DZwMNv#F3y11J=?JKq9d0AON?s8f(!rd%!WlmB1A2^ZgSqtiAvcQ=cE;m<i
zSY0NSgDPsBKI3~~EgV<pcVtX&++sO&b3aYU7x8GyzIgr2ZblR>#vDkQuujdgn_64v
zY^=B*=_EVIytv-Hy}lr;|J7Lh2Vp?+?R8?)Q*y*_5lOr*?Y<1>x>s%P*$X-WkI$HL
zA97V!RxP|CgBW}^Jv)>Tf6AFX8PqIo#W1D4{uPeCM&8}4H<Y&Hln&OD6*SVAvQDVw
zK-kraN2@nr8-;XvmmM!dU!b6TMWfHK=gk_k*OzB2n;-qGJO3h~T15;K&`U|%F&#;g
zDkXjOP{p>?grPU@;}2Jh<gh?}+FlZ_?m`UhDE;<g>R^F*n)qqruJH`VNiT>uJk15L
z7j4;|wf(aD)>Om0pC(S4y?&prX9q+^zJl9Kv)kV6vl-arzp<8RV}l>LAHeZfi&pZR
z*Oj54c$4*lFBKggTvnCc=C8K=A|iZ|VR_|OeZhmRjF~0rWiCDUt8Q#)^GWuCh6|A6
z-YH|eB||7}$1`_{K_Dv|BIQdV*-ZXl*YH2G8J3nYH=9!x<|vca*AXSDwoEYD^pY!3
z{SksG#Iu%&{4seiLn2$JB?CUw)v&odoCFc*5u;31Px#|O<nEoALqyK#n3KaYf7K0&
z$~H21keIY;&9Cu956?nW)AdTtkUDOuzTnXdne00VKwWF!gT?f&PTmiS`vKSPdG$zE
z1YyjuC~dml8*Iz@i{&C@0MW#b{Js<9=eu!91n@v!VKO@_1Kr)Ja!BPr1o`^ciu3dN
z>h)E=eNCbOh>jJbBg0iq5?~h&K{kT_0kXL?VJ|Ql-|qOt1N?QGjK=RM0GfF+|AC`8
zl>6M7_a(wPZXDYHTeX=t|9|ijQXZ|6K#Yv=68igE_2;FD@f4^0@YE<HrQWNKT&RPt
zgMsS2XzDCMgxdhTRrZD%t{)Uw%?a;L*_s`6?xj!%4-U(eY~snJ{Wpp2ol;9j9s1$o
zVYsageK_CUbn#LDn6<4rw#`VRbT8v1TJQVcye6sqe@tAPTNGHP3rQ}_HYcz`zPy%a
z%_`!<+gaFr!1n64FGIM(Z&(6Y&_}NpbHVRzRarBV<PP#mL!>e^f7C%1JflYI_~D>r
zoRv^Ls$+!Ew<+us+rO3)_95(Fhnf9-JvU@i)!Ss;vi_j@Y$WI}kywshoDzXf-7hCr
z7=v)b)+F^FiZ*G<l_p3%SyrKf+1ttW{PI)*Wz=8L*Q;D#F7BuyG}*s$`MJ;v)NIZT
z2SUhGg(l<HHd-4netFT*!$vVU1R2q2<Tn<;uZeP^A!6N*|8d=nA)W!{Gw;?QuaSBz
zDXK+nGF}D3U-i|{kmR`@iA=bOxJGY)dW5l*0(d14Ch_*5-P8VCYml)dr>ha)_?u;i
z6Z&{=KfII9S)T9)0GNkHp*`}@BL*tAH~`G3`895%NqaXBz8z+PtLkXjzawX=osAHV
zbs80P1$BA^v5}kpxSWohcMg_?r<l-g5O%elztA0pT6W@*^r2mW<BYuDv#dE0qP(*=
z?-KNX0uYirw9@Hf#32iZk(8J;gJwle^QD3}7+@^p(GtT4yFj~|yfwfFngflMq*r*;
z5{r6paxOfkQa|BIXE*T2i1G<hL}SwyO`+YW<FzMm?bcmt#C>6OFKD5W_e7PjdaMpM
z0J*W-qJ+@)=931q2yM$~q0fN-+7*_a+sQB@YdMbZrZGI$Y1u0MYm;MTK8+DWCS>))
zN~wzo2-tXcAqUz>p|vQ;lIN>&cQc$xxQS~ue;WB8Ht8>Z<oNl(J@<yr;J@z6|38Y2
zfpMuyyuOj1IRg7v$k!R_Z{mg{?{>qs%zj=Ra`+Ft_E}M20U<Jj89M&wx*h!Xr5cuC
zA+2W*XTXpAgX4m9Qp}5!tb44iP9>n=G5<H>J%8-%-SPO*j%`(N|CjCl`zEIS&^y5>
zg;=mxgH=f!)Nk9~CEN$0Ln+r`sN#7~z2Fk+iK0*OGl!FH6eE5F4QRqChVJ8d3^y!W
zUR0B!QyGjhl9;XcZ5czfA=fJ}tjPQeWfh81cP-Sl@S->U<C7R~9vsg^9<GJ(_t^3d
z+^^6bUz&;;9Em4R`1~LA^{?0{e?~e9B>ev&^tJcNHMHbOqy-kLVYc<6U)F|2H&;Dh
zjo)&}aS2Fy=aDrBa!A{B$Z=`c#Lc@;8MK&8O)9Y;MKH;mo2SvW$2ibU5b=JYIqx(;
zAUw28RFFCgUBLVMRx~m7LV7O|aVaLX2@qMp6N?y&%5xzu+7pnw>Vc_20E2!s_B>Hm
zUnGzKCeN-x$X_O7czN`kHvmz*K*zBNyx@}sE0`NtpZgAdByD@*Er&tPeH|cVUPAHY
zMQ7ckyS|W;+ZhSL#}aEP1EZGp0`3kLP)(bCZIHoPNsJvQ<Qnb6VU<rRA@d_&<Qqu`
z??VtVHNxD64IcIRnV}fAq=j<jlEfK_yjItD&x?x)ZJ3KXkLdm~4fc%cMWIx`U;Ft+
z=&|y_slQxS^>|F@@cYF<ADSL7TanSXv_%dxIlW~|LBE{@-~LzTgY$Ce1(!Z>>H<;!
zs@h)hy*wdS=Dg?k7mfrH>j#+82{a@JELaEdZhnbxpA0W;rycrDJ{qCM206GE3Q9N7
z#rLUEs>iae#OyEoT_7}l5b5q(-@9(5er5NKg_s4P74&|UinWs8qR)-P36ylhlh~b+
zDG!)`tX>Zeb0-Etv!152Y%?Vv7pF|FhWmX6s)ix-8*R9v(t8*Nmkoy)g6}lEC?bYQ
z#O?=?;uW_aHJ=xBA9>%uy;+oxf}$QXY&tmU+}!zFUe{m*PwV#eU}c{{2@)9a*i@w!
zTuCn&aB;u(q4B6y`uN9~g5x&KkX>X<!Ixpr7S9U#_W6VN{wU**7nbs1S7x!fT@Lp!
z_w)fBRV6Q26W4-BbADTKcJ(MkM$?J!07JB?MloLz<0LZj!2?sU_olyQhJ*v2kv@2&
z^<jdFiTjYo?Oq^49AhXmnV^(>_RqQr64y>yFuIpNUeRssW@Y^m!{Vpe_kyaihDc6|
zyUWxpGL{}YAfx?2*b0s^St=h_%;jFC^<xr3hBJ?~r-=;La6~yeM%u+MHolDLc%wT}
z-22j3N?wB=HB{fY3p5^2zz=>;KLN?M<vMQyZ-q5;NfRgRC9HgA<RulNrw==QsizqZ
zPfAdCx%3@%R46|>_Z~b<<anhYxG+3~uurocAUyJ|`=9!WUlLOj+3rVWd5s&PAQ#s{
zanxbt1Gdqrt1b>xs8Q%eJ56_X{`cNv7{f}KOz<YBL;qku#2qeyc?6GO&eBBNfce6^
zq3}^pIx`_%@l?2KN|kaWo)kFX7agouwR$6F7YzY%uG>D8&~whfSNa%-BRgkfO#H=3
zu-u!WXOI;;-9%{vv90g_^5%rgy3BBD7jc*(6evQ!hl5BP(av@GGg~;6&-j!7wH*+v
z9Q&3q$71eMjHF%K@*I4M0BrQj0n*PuL#~j49ncHAn4(2?SEhu160>|bqGz~?^E#wI
zPOqoYhW*8v`i(}LueOP-*P>Rx#ze<SX`_hubT)DB(u*R~6MP<9Fqj+;#S3bx*sSy7
zJkDSO&32E^asqthWjHE3!^)GWDFGNZJ1=mp-vxi<rK|F6f&iC{_Ex))-naBE=lGG^
zX{!Frtr;hyo|5E)V7Pt#ge0nXN^%DWRvS`dQkGd<G3gYW1fG3eXqx&?xsR3|vB{H%
z^a3ItW^*f9`d$j-v(9iizOb{t{u&8o2UNL#Bo99x8d$=ubRereGW}{MC#ENy`f_1^
zM|0h@G;3z(Xt*@gX^xpV>vqo}^|l@m%k@?Q>UDU!t2%w3`EK6&`;+R|Cwom#;13YS
z)0m#%mbOs$`Lr8fG4{QNFety?UK+NZ&XR_7=XMV;j&`@$2}4tF0HJCqVjJ4_P^<YM
z)$Fv(l#APY`{G((nEHoqWzNh@DY+2-bQFE&^9rA(Qo{sJAkv18bgX{T>h}Qjib4sc
zo(aMv4H-t&QcArg@oAS|xBmFeM8zPgLWz?kLh_ri>xFVNjC%5RJut0?HQ)DDQY+mV
zUc#R?Za-y}fSDZWs&=r~sFPj*Db@&Z#C8#DM((ql5IWhnv|oTf2avC|>4SPH^Ar#C
z92GhDn7#4qe4B2Yz1udW*<}uD^coQaTzmeNrJ3V&{N6Tlm{o7Ia~5;E&R=`TWOroR
z2^L<MW$R%ZA`B~gQxRP=u*x&l2u>`WHE$z-^^yjxgaae=LdAGVp*M^CTAM@;#Bbbi
zn^>c`@m#NN<LP!TKR7S#;ZV*+zH9|=%Z9#Nyxkf<1iER9Pl*g`dz!V<Sqy`5c1K<R
z)cPb7N(rv@Y}BDPId4?$^F~@#Wu8gf?cGi0^||E4?{+T==sdRU7$9(o=D5{x-;a9+
zOtmW;r}%lt_`!w6M1j^h9D@}70+&1`ZhGh_W)ByccRkM~#<NOb4H+a9z5J&2z$O)o
zV{eVPUtgkFu7E$`v_SiMVD`>Mf<4cfC+f-Y7TMkB467>N*(F?s>B`>r^XXBw1XIE}
z)ynZvidexcOgsa4maaYDHIG;E(sRg!&&{A+Qj@vV<KT)|rz@7xbuMXVjp4c<-DkoT
zA#L)sCk0#I|08>YSeJfk?NeRuzbe-wF?HB55h+t6eVatw2Esv$Pi>P=uO9vN`-*eR
zd=31F1@lo`^)Xi#UN$avwV&gjl{&l_s>5c*^fQ?$lobhFN70Q-u3RVpj_%>|Dzhuo
zwU9{RK(MWab6_*aQ^})Bt_f<v93;iO-qC1I_-2aPyi(hgv8(n{_|?$<I{0*Z0UX{;
z4*`9_;`8A=zPV&pOTdYRq0S$Ys?YDLwb{f?oZu_P`|75D;$yt!!ubR1zrT=-XxO*h
zxXpmL4Q~oZE%qPD&fCTaEqROMdKb4d_No<`GV_Ex36<z_MNNW)Wd6t7MjT)7?hfOW
zRGoJ)C_sCN+w}F)6ALxJo`{Acp8L+MqyN_(`ZXpD^=Xwlw<IpNDQqj7cHYxOAXet$
z{twq){SV$_=_()&UD;RQi@|5UC0ef@M(@b~S>u1o778HH0^RZN9_YTigmEx6rO%+J
zo$%kjOAs9z@-`f{Jo}5QK8QxlW`jLfkJ!IX-6{VPu*aX=5MLAVqC8^U3&k>_nGdcE
z=^N+RQ*}q+oBZI|X*X;}YdkhR`PNNwY7{Nfa8vYc{oOXcRz{-EM&(Usnp$W&5lN#g
zF3(%yQK~9*G&S8x`ed|{fWPP-);qHiD-BNZRQd)V%s)}ym-6D{wyWpIUvu>l5?!K^
z$~U)YV^FBG##^<lpKugs#OEyj0Bk8wUAuP8ee^wvwB?P>cMtl09~=mJ->C0dpRW#r
zLe-!RmtJtSK9#RNeT%X8YPRFvVeA&nB5XM$qR5~bVx(jE$%#C7ft8t7{@)U_>>E4l
z3p%r`H%b=Vx^>GJ=69b-4oko4c=AE?NxVs)ZEO*OPf%}%L;t<(0Z|$w?D`uDl%dgV
zHoMn{-D4OwjO{prG|LCa)<|o*W+YsHPR$iRa{Tyy6x+nUQ)1VyT@LrX?J3l&uBkmQ
zz7n&79qTvw>*5%RScwDlA{^WtBz6pb*|6`xf$amsuP8X-I`bb*JT^>#LKPyP`SU^Q
zcs6?2y2wAo0=pVENf&N-n6m%Y-f@R>Q}o0!F;9Y~v-9V3e}7Tfbru!vyQ;xYojXok
z*Mr!8GE{-{7jLzEi92(1c)r}feoPo+%LuuJ+iEm?oknzh{v5PLaIV9{5#xD!2d@wN
z^9B9*5PN4vY<u{xSNi*>r;-l|7yOjheE<Ia5@apX0Jyz&%*>xczT0Q#Mi@8DoH0YR
zz~_YtxtZ=G;K(VxS41`{T3XZAW0fyuzHs@22X|8RLYlyWm^p9Wktc80D=}8>p+XoS
zb5Kq%>d~V|lEFLIBu`D{d%3B~mRG8>_J)U_>RI&l<;#~M7Tvb^q(jqY%$)g1gLVGg
zxiaSpTk_Eqwyk{SSCOlwrKOrdd51-56&~!Qq@)QGCq{nxveno->(={il(AxO+uNgC
zTU#f{$awIL?!3h)<^q{Amu=zng6JAK<1j`dzTfmUv*!p<B5{i%^<@{Y+JgsbV>*H;
z6Gu&D%^stEgCEsEjWE|Sh^;>}r`#ZnA%Q2DFDqF_74map#MXQHK2)ek!W++C^iJ98
z6dv5RIsDu-w&>Dw+bpbq$-`)myk+Cx1>ee<hB2BkFmZqMZ3b0J(yHY$jVko*8vgb`
zm#o;pe_Hm&-c=u*Qm*gBCF^M78)P>~^7f2ym!(kSMo(qM$LqulV~@eLO$=Y(!omMD
z@A_<|L^%gG#^e37?~!d~)h<el!Oxw1tddO?T8n#rf5sdIJ9Ug^)Y*Oy6CE#Oc&ha~
zJil^nCvJ}_*0QSU8@%XZ7+w3#r*hZR_}iVz&Sk57$u@j5_CsXDO_p7YlvJAkU+;X(
z!<4=DN_aXxEAyipW-;D#iFLA1t(IrdczDnG7lsRq@~v=5t2df(9T~As*xD+oe1E}(
z7=1aqXbfuA=q+y^lmO&zLW->Esf+KxNZrEL4eYv&!yO%ZiQ`jVQ?X3eg4o+uRfC-5
z8yE^n-m5$*{=(ltB=SYXF5LQY{inXZr+HVrghlPG8i5%30zHHM>J*`&3CUAE)5U+;
ztv~lb%z0ep!-i$%KmXy64IRcX#%~dIGhg-J_8|80RxF>7<@YQ9YR}nV7^eF4j=py<
z?g9#^yH?l)osatOUkxp@yI^LX?vbe{Q7hG!jfr|CiRw;npnK$r*CaD+DWH}U!v%!{
za(a_c375JD+!Ci{&!Pmrd%hpyk2~NV*}WF9@H&GZEH-EQjx-*RH(}DGsM^}v3376-
zgZj@+v0)8HC@U+wty)DpckbM%XBCdPSbN9Rp2H5!&CN6C&*y!LF5Wqeoie(-y!<ww
zzoh)(!@G@*s~*0Yi7!|z{m1TVADE&1mW=xKsC>3HhF+liAO$<+DsIoVi?inoP+GC*
zTc;m4N|nJsc~1=)$tH6{F$UV*5i6`T{Mc!}*Ame?_^vs4!X1+}Gbq%{STddT{KaBR
zXgE;9-U?CnkR>tt)99zmTei#FXlSm0%Iwg5?5+fSvR!wISr{W8Z)?8v)^uv3lvRs{
zSBoUooeU~X{QSL_*&>yQvCG+vOv5k+3oDytEhtWlIf>u*R>eN&JiJHSXLZX}`uNjv
zY0N3M??Qy7<cSDSO0k_vO=XvaF~V_qV+?1rs__4u=7I&7<Es1K6w9_|9mWj*r(H0W
z^$c%*ArQ}Z&+Vl%Xt;3ggfm-&MEMTb0$YODXD!Fy*0cpEXBUQL*`|FA|7_&Fnuifb
zqbqf&LW<H>Ey^nXG=U$%={}!{t)G72MK@InXKnS?nHbdiiu>Q~^b@#Mdt65T=a3Ud
ze=2L$k{B$waNB25%ajF?V7uLc;rWWTqxcSC*K<dpHkg>XBm5G|_jM;;?#C+PyEK+W
zOXnb6tI1tw)|Gzb1VfVI^ZZKWn};Xv0@q#x0t~am)09G$k`DUz*|(!6M*&%T7>6!!
zf}i>S!d|RC+(<lgXU?4~34WE@?|bpyVa>b1teY{G?2j;mT%1f${D$)TN0_;^-J!kp
z$@yk<YY!s3xSUv^E<hPQYVy3zH15i4awu`=HnCV?+1YPizjoWWaq9XF8`cB`6=rv4
zkc0C9*@tyIhPe;yIZV#hO4V#+2NR}DIfw(!QMkjLruN72_GQB4$>l%yduV9rOg%l>
zHEY(WeH?aP%Ni#V-#&5CA$s7K0BmuFEEcK`D_==~5{;$uOq8+}o9JWNy-U=~^4MSD
ztdA)t`ChKdvgT*_oe>X{g+<dCSc3X|TSdkyQvu*RMy`z1<#-p9lGPI^`!NDtiyqD$
zcaq<!^QCN|Rcul2RSOjcZ3h<i;KaJ2?=qfuTt<h@(8jKLR@pn9vK86QNB*>)Ls1Qt
zr}P$D#@06vTaYr0eFs-0GbL64J9sDV&1k-yK8<Wg`E#d*#?uiZ75Q1thOzw#tIT)s
z=mo99Ne73qUGbuj<6&<kXcbg^riAs3;cQLpi|xDwJMlDQT)Wxh6Ynnk|ME2bB5f2Y
WoV%*#_^o01pQ*70rgyE{`M&^?ub>?O
literal 0
HcmV?d00001
diff --git a/components/adblock/docs/settings/user-setting-sequence.txt b/components/adblock/docs/settings/user-setting-sequence.txt
new file mode 100644
--- /dev/null
+++ b/components/adblock/docs/settings/user-setting-sequence.txt
@@ -0,0 +1,14 @@
+# If changed, go to https://sequencediagram.org/ to regenerate diagram
+
+title eyeo Chromium SDK User Setting flow
+participant UIFragment.java (UI Thread)
+
+ref over AdblockController.java (UI Thread): Extension API and unit tests start from here.
+
+UIFragment.java (UI Thread) -> AdblockController.java (UI Thread): User event trigger(ex: onPreferenceChange)
+
+AdblockController.java (UI Thread)->Adblock_JNI(UI Thread):ex:JNI_AdblockController_AddCustomFilter
+Adblock_JNI(UI Thread) ->AdblockControllerImpl (UI Thread): ex: AddCustomFilter(filter) \n (jni binding)
+note over AdblockControllerImpl (UI Thread): Set User Pref
+AdblockControllerImpl (UI Thread) ->> SubscriptionService(UI Thread): Add Custom Filter
+end
diff --git a/components/adblock/features.gni b/components/adblock/features.gni
new file mode 100644
--- /dev/null
+++ b/components/adblock/features.gni
@@ -0,0 +1,47 @@
+#
+# This file is part of eyeo Chromium SDK,
+# Copyright (C) 2006-present eyeo GmbH
+#
+# eyeo Chromium SDK is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3 as
+# published by the Free Software Foundation.
+#
+# eyeo Chromium SDK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+
+declare_args() {
+ # eyeo Chromium SDK telemetry client id, provided on per-partner basis by eyeo. Used to
+ # attribute usage reports to specific browsers.
+ eyeo_telemetry_client_id = ""
+
+ # eyeo Chromium SDK telemetry server address, by default evaluated to
+ # "https://${eyeo_telemetry_client_id}.telemetry.eyeo.com/".
+ # Override only for testing.
+ eyeo_telemetry_server_url = ""
+
+ # eyeo Chromium SDK telemetry authentication token, provided on per-partner basis by eyeo.
+ eyeo_telemetry_activeping_auth_token = ""
+
+ # eyeo Chromium SDK application name to be used in telemetry and
+ # filter list download requests. If not set the value returned by
+ # version_info::GetProductName() will be used instead.
+ eyeo_application_name = ""
+
+ # eyeo Chromium SDK application version to be used in telemetry and
+ # filter list download requests. If not set the value returned by
+ # version_info::GetVersionNumber() will be used instead.
+ eyeo_application_version = ""
+
+ # If true then requests to "adblock.test.data" domain will be intercepted
+ # in order to allow installing/removing/listing filter lists via navigating to
+ # special URLs. This is used for internal automated testing (see DPD-1407).
+ eyeo_intercept_debug_url = false
+
+ # If true then eyeo filtering is disabled by default (applies to 1st run scenario).
+ eyeo_disable_filtering_by_default = false
+}
diff --git a/components/resources/BUILD.gn b/components/resources/BUILD.gn
--- a/components/resources/BUILD.gn
+++ b/components/resources/BUILD.gn
@@ -78,6 +78,11 @@ grit("components_resources") {
if (is_android && safe_browsing_mode == 2) {
deps += [ "//components/safe_browsing/content/resources/real_time_url_checks_allowlist:make_real_time_url_allowlist_protobuf" ]
}
+
+ deps += [
+ "//components/resources/adblocking:copy_snippets_lib",
+ "//components/resources/adblocking:make_all_preloaded_subscriptions",
+ ]
}
grit("dev_ui_components_resources") {
diff --git a/components/resources/adblock_resources.grdp b/components/resources/adblock_resources.grdp
new file mode 100644
--- /dev/null
+++ b/components/resources/adblock_resources.grdp
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file is part of eyeo Chromium SDK,
+ Copyright (C) 2006-present eyeo GmbH
+
+ eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 3 as
+ published by the Free Software Foundation.
+
+ eyeo Chromium SDK is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+-->
+<grit-part>
+ <include name="IDR_ADBLOCK_ELEMHIDE_JS" file="adblocking/elemhide.js" type="BINDATA" />
+ <include name="IDR_ADBLOCK_ELEMHIDE_FOR_SELECTOR_JS" file="adblocking/elemhide_for_selector.jst" type="BINDATA" />
+ <include name="IDR_ADBLOCK_ELEMHIDE_EMU_JS" file="adblocking/elemhideemu.jst" type="BINDATA" />
+ <include name="IDR_ADBLOCK_SNIPPETS_JS" file="${root_gen_dir}/components/resources/adblocking/snippets.jst" use_base_dir="false" type="BINDATA" compress="gzip" />
+ <include name="IDR_ADBLOCK_SNIPPETS_XPATH3_DEP_JS" file="${root_gen_dir}/components/resources/adblocking/snippets-xpath3-dep.jst" use_base_dir="false" type="BINDATA" compress="gzip" />
+ <include name="IDR_ADBLOCK_FLATBUFFER_EASYLIST" file="${root_gen_dir}/components/resources/adblocking/easylist.fb" use_base_dir="false" type="BINDATA" compress="gzip" />
+ <include name="IDR_ADBLOCK_FLATBUFFER_EXCEPTIONRULES" file="${root_gen_dir}/components/resources/adblocking/exceptionrules.fb" use_base_dir="false" type="BINDATA" compress="gzip" />
+ <include name="IDR_ADBLOCK_FLATBUFFER_ANTICV" file="${root_gen_dir}/components/resources/adblocking/anticv.fb" use_base_dir="false" type="BINDATA" compress="gzip" />
+</grit-part>
diff --git a/components/resources/adblocking/.gitignore b/components/resources/adblocking/.gitignore
new file mode 100644
--- /dev/null
+++ b/components/resources/adblocking/.gitignore
@@ -0,0 +1 @@
+snippets
diff --git a/components/resources/adblocking/BUILD.gn b/components/resources/adblocking/BUILD.gn
new file mode 100644
--- /dev/null
+++ b/components/resources/adblocking/BUILD.gn
@@ -0,0 +1,82 @@
+#
+# This file is part of eyeo Chromium SDK,
+# Copyright (C) 2006-present eyeo GmbH
+#
+# eyeo Chromium SDK is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3 as
+# published by the Free Software Foundation.
+#
+# eyeo Chromium SDK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+
+import("//build/compiled_action.gni")
+
+# Converts text-format filter lists into flatbuffers using a standalone
+# converter tool.
+template("make_preloaded_subscription") {
+ compiled_action(target_name) {
+ tool = "//components/adblock/core/converter:adblock_flatbuffer_converter"
+ inputs = [ invoker.input ]
+ outputs = [ invoker.output ]
+ args = [
+ rebase_path(invoker.input, root_build_dir),
+ invoker.url,
+ rebase_path(invoker.output, root_build_dir),
+ ]
+ }
+}
+
+# Note, url is *not* used to download the list during build time, only to
+# identify the subscription. Consider it metadata.
+make_preloaded_subscription("make_easylist") {
+ input = "//components/resources/adblocking/easylist.txt.gz"
+ url = "https://easylist-downloads.adblockplus.org/easylist.txt"
+ output = "${target_gen_dir}/easylist.fb"
+}
+
+make_preloaded_subscription("make_exceptionrules") {
+ input = "//components/resources/adblocking/exceptionrules.txt.gz"
+ url = "https://easylist-downloads.adblockplus.org/exceptionrules.txt"
+ output = "${target_gen_dir}/exceptionrules.fb"
+}
+
+make_preloaded_subscription("make_anticv") {
+ input = "//components/resources/adblocking/anticv.txt.gz"
+ url = "https://easylist-downloads.adblockplus.org/abp-filters-anti-cv.txt"
+ output = "${target_gen_dir}/anticv.fb"
+}
+
+group("make_all_preloaded_subscriptions") {
+ deps = [
+ ":make_anticv",
+ ":make_easylist",
+ ":make_exceptionrules",
+ ]
+}
+
+action("prepare_snippets_deps") {
+ script = "//tools/eyeo/snippets_deps.py"
+ inputs = ["//components/resources/adblocking/snippets/dist"]
+ outputs = ["${target_gen_dir}/snippets-xpath3-dep.jst"]
+
+ args = rebase_path(inputs, root_build_dir) + rebase_path(outputs, root_build_dir)
+}
+
+copy("copy_snippets_lib") {
+ deps = [
+ ":prepare_snippets_deps",
+ ]
+
+ if (is_debug) {
+ sources = [ "//components/resources/adblocking/snippets/dist/isolated-first-xpath3.source.jst" ]
+ } else {
+ sources =
+ [ "//components/resources/adblocking/snippets/dist/isolated-first-xpath3.jst" ]
+ }
+ outputs = [ "${target_gen_dir}/snippets.jst" ]
+}
diff --git a/components/resources/adblocking/LICENSE b/components/resources/adblocking/LICENSE
new file mode 100644
--- /dev/null
+++ b/components/resources/adblocking/LICENSE
@@ -0,0 +1,14 @@
+// This file is part of eyeo Chromium SDK,
+// Copyright (C) 2006-present eyeo GmbH
+//
+// eyeo Chromium SDK is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 3 as
+// published by the Free Software Foundation.
+//
+// eyeo Chromium SDK is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
diff --git a/components/resources/adblocking/anticv.txt.gz b/components/resources/adblocking/anticv.txt.gz
new file mode 100644
index 0000000000000000000000000000000000000000..5c91292b46617894f6ec7977d9ce78a0d66c9216
GIT binary patch
literal 66744
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%0DbG*^|u
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
G2Lu4P?zKt)
literal 0
HcmV?d00001
diff --git a/components/resources/adblocking/easylist.txt.gz b/components/resources/adblocking/easylist.txt.gz
new file mode 100644
index 0000000000000000000000000000000000000000..8fb4be557105111afa2d989ac5804ea056b5a628
GIT binary patch
literal 124964
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
B__+W8
literal 0
HcmV?d00001
diff --git a/components/resources/adblocking/elemhide.js b/components/resources/adblocking/elemhide.js
new file mode 100644
--- /dev/null
+++ b/components/resources/adblocking/elemhide.js
@@ -0,0 +1,43 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+function hideElement(element)
+{
+ function doHide()
+ {
+ let propertyName = "display";
+ let propertyValue = "none";
+ if (element.localName == "frame")
+ {
+ propertyName = "visibility";
+ propertyValue = "hidden";
+ }
+
+ if (element.style.getPropertyValue(propertyName) != propertyValue ||
+ element.style.getPropertyPriority(propertyName) != "important")
+ element.style.setProperty(propertyName, propertyValue, "important");
+ }
+
+ doHide();
+
+ new MutationObserver(doHide).observe(
+ element, {
+ attributes: true,
+ attributeFilter: ["style"]
+ }
+ );
+}
diff --git a/components/resources/adblocking/elemhide_for_selector.jst b/components/resources/adblocking/elemhide_for_selector.jst
new file mode 100644
--- /dev/null
+++ b/components/resources/adblocking/elemhide_for_selector.jst
@@ -0,0 +1,53 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// {{filename_with_query}} and {{url}} will be replaced with actual variable values
+
+if (typeof(elemhideForSelector) !== typeof(Function))
+{
+ function elemhideForSelector(url, selector, attempt)
+ {
+ if (attempt == 50) // time-out = 50 attempts with 100 ms delay = 5 seconds
+ {
+ console.debug("Too many attempts for selector " + selector + " with url " + url + ", exiting");
+ return;
+ }
+
+ let elements = document.querySelectorAll(selector);
+
+ // for some reason it can happen that no elements are found by selectors (DOM not ready?)
+ // so the idea is to retry with some delay
+ if (elements.length > 0)
+ {
+ for (let element of elements)
+ {
+ if (element.src == url)
+ {
+ hideElement(element);
+ }
+ }
+ }
+ else
+ {
+ console.debug("Nothing found for selector " + selector + ", retrying elemhide in 100 millis");
+ setTimeout(elemhideForSelector, 100, url, selector, attempt + 1);
+ }
+ }
+}
+
+
+elemhideForSelector("{{url}}", "[src$='{{filename_with_query}}'], [srcset$='{{filename_with_query}}']", 0);
diff --git a/components/resources/adblocking/elemhideemu.jst b/components/resources/adblocking/elemhideemu.jst
new file mode 100644
--- /dev/null
+++ b/components/resources/adblocking/elemhideemu.jst
@@ -0,0 +1,1436 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+"use strict";
+
+
+/*
+ * This template is used for JavaScript code generation in element_hider_impl.cc
+ *
+ * Concatenated files from adblockpluscore
+ * (https://gitlab.com/eyeo/adblockplus/abc/adblockpluscore/-/tags/0.5.1):
+ *
+ * lib/common.js
+ * lib/patterns.js
+ * lib/content/elemHideEmulation.js
+ *
+ * The concatenation is an emulation of the `require` statement. All dependencies
+ * required by elemHideEmulation.js are pasted before it.
+ * The files were refined: commented out `require` statements and `export`-ing.
+ *
+ * The application of the element hiding emulation is at the end of this file.
+ */
+
+
+// common.js ------------------------------
+
+
+let textToRegExp =
+/**
+ * Converts raw text into a regular expression string
+ * @param {string} text the string to convert
+ * @return {string} regular expression representation of the text
+ * @package
+ */
+text => text.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&");
+
+const regexpRegexp = /^\/(.*)\/([imu]*)$/;
+
+/**
+ * Make a regular expression from a text argument.
+ *
+ * If it can be parsed as a regular expression, parse it and the flags.
+ *
+ * @param {string} text the text argument.
+ *
+ * @return {?RegExp} a RegExp object or null in case of error.
+ */
+function makeRegExpParameter(text) {
+ let [, source, flags] = regexpRegexp.exec(text) || [null, textToRegExp(text)];
+
+ try {
+ return new RegExp(source, flags);
+ }
+ catch (e) {
+ return null;
+ }
+};
+
+function splitSelector(selector) {
+ if (!selector.includes(","))
+ return [selector];
+
+ let selectors = [];
+ let start = 0;
+ let level = 0;
+ let sep = "";
+
+ for (let i = 0; i < selector.length; i++) {
+ let chr = selector[i];
+
+ // ignore escaped characters
+ if (chr == "\\") {
+ i++;
+ }
+ // don't split within quoted text
+ else if (chr == sep) {
+ sep = ""; // e.g. [attr=","]
+ }
+ else if (sep == "") {
+ if (chr == '"' || chr == "'") {
+ sep = chr;
+ }
+ // don't split between parentheses
+ else if (chr == "(") {
+ level++; // e.g. :matches(div,span)
+ }
+ else if (chr == ")") {
+ level = Math.max(0, level - 1);
+ }
+ else if (chr == "," && level == 0) {
+ selectors.push(selector.substring(start, i));
+ start = i + 1;
+ }
+ }
+ }
+
+ selectors.push(selector.substring(start));
+ return selectors;
+};
+
+function findTargetSelectorIndex(selector) {
+ let index = 0;
+ let whitespace = 0;
+ let scope = [];
+
+ // Start from the end of the string and go character by character, where each
+ // character is a Unicode code point.
+ for (let character of [...selector].reverse()) {
+ let currentScope = scope[scope.length - 1];
+
+ if (character == "'" || character == "\"") {
+ // If we're already within the same type of quote, close the scope;
+ // otherwise open a new scope.
+ if (currentScope == character)
+ scope.pop();
+ else
+ scope.push(character);
+ }
+ else if (character == "]" || character == ")") {
+ // For closing brackets and parentheses, open a new scope only if we're
+ // not within a quote. Within quotes these characters should have no
+ // meaning.
+ if (currentScope != "'" && currentScope != "\"")
+ scope.push(character);
+ }
+ else if (character == "[") {
+ // If we're already within a bracket, close the scope.
+ if (currentScope == "]")
+ scope.pop();
+ }
+ else if (character == "(") {
+ // If we're already within a parenthesis, close the scope.
+ if (currentScope == ")")
+ scope.pop();
+ }
+ else if (!currentScope) {
+ // At the top level (not within any scope), count the whitespace if we've
+ // encountered it. Otherwise if we've hit one of the combinators,
+ // terminate here; otherwise if we've hit a non-colon character,
+ // terminate here.
+ if (/\s/.test(character))
+ whitespace++;
+ else if ((character == ">" || character == "+" || character == "~") ||
+ (whitespace > 0 && character != ":"))
+ break;
+ }
+
+ // Zero out the whitespace count if we've entered a scope.
+ if (scope.length > 0)
+ whitespace = 0;
+
+ // Increment the index by the size of the character. Note that for Unicode
+ // composite characters (like emoji) this will be more than one.
+ index += character.length;
+ }
+
+ return selector.length - index + whitespace;
+}
+
+/**
+ * Qualifies a CSS selector with a qualifier, which may be another CSS selector
+ * or an empty string. For example, given the selector "div.bar" and the
+ * qualifier "#foo", this function returns "div#foo.bar".
+ * @param {string} selector The selector to qualify.
+ * @param {string} qualifier The qualifier with which to qualify the selector.
+ * @returns {string} The qualified selector.
+ * @package
+ */
+function qualifySelector(selector, qualifier) {
+ let qualifiedSelector = "";
+
+ let qualifierTargetSelectorIndex = findTargetSelectorIndex(qualifier);
+ let [, qualifierType = ""] =
+ /^([a-z][a-z-]*)?/i.exec(qualifier.substring(qualifierTargetSelectorIndex));
+
+ for (let sub of splitSelector(selector)) {
+ sub = sub.trim();
+
+ qualifiedSelector += ", ";
+
+ let index = findTargetSelectorIndex(sub);
+
+ // Note that the first group in the regular expression is optional. If it
+ // doesn't match (e.g. "#foo::nth-child(1)"), type will be an empty string.
+ let [, type = "", rest] =
+ /^([a-z][a-z-]*)?\*?(.*)/i.exec(sub.substring(index));
+
+ if (type == qualifierType)
+ type = "";
+
+ // If the qualifier ends in a combinator (e.g. "body #foo>"), we put the
+ // type and the rest of the selector after the qualifier
+ // (e.g. "body #foo>div.bar"); otherwise (e.g. "body #foo") we merge the
+ // type into the qualifier (e.g. "body div#foo.bar").
+ if (/[\s>+~]$/.test(qualifier))
+ qualifiedSelector += sub.substring(0, index) + qualifier + type + rest;
+ else
+ qualifiedSelector += sub.substring(0, index) + type + qualifier + rest;
+ }
+
+ // Remove the initial comma and space.
+ return qualifiedSelector.substring(2);
+};
+
+
+// end of common.js ------------------------------
+
+// patterns.js ------------------------------
+
+
+/**
+ * Regular expression used to match the `^` suffix in an otherwise literal
+ * pattern.
+ * @type {RegExp}
+ */
+let separatorRegExp = /[\x00-\x24\x26-\x2C\x2F\x3A-\x40\x5B-\x5E\x60\x7B-\x7F]/;
+
+let filterToRegExp =
+/**
+ * Converts filter text into regular expression string
+ * @param {string} text as in Filter()
+ * @return {string} regular expression representation of filter text
+ * @package
+ */
+function filterToRegExp(text) {
+ // remove multiple wildcards
+ text = text.replace(/\*+/g, "*");
+
+ // remove leading wildcard
+ if (text[0] == "*")
+ text = text.substring(1);
+
+ // remove trailing wildcard
+ if (text[text.length - 1] == "*")
+ text = text.substring(0, text.length - 1);
+
+ return text
+ // remove anchors following separator placeholder
+ .replace(/\^\|$/, "^")
+ // escape special symbols
+ .replace(/\W/g, "\\$&")
+ // replace wildcards by .*
+ .replace(/\\\*/g, ".*")
+ // process separator placeholders (all ANSI characters but alphanumeric
+ // characters and _%.-)
+ .replace(/\\\^/g, `(?:${separatorRegExp.source}|$)`)
+ // process extended anchor at expression start
+ .replace(/^\\\|\\\|/, "^[\\w\\-]+:\\/+(?:[^\\/]+\\.)?")
+ // process anchor at expression start
+ .replace(/^\\\|/, "^")
+ // process anchor at expression end
+ .replace(/\\\|$/, "$");
+};
+
+
+// end of patterns.js ------------------------------
+
+
+// elemHideEmulation.js ------------------------------
+
+
+//const {makeRegExpParameter, splitSelector,
+// qualifySelector} = require("../common");
+//const {filterToRegExp} = require("../patterns");
+
+const DEFAULT_MIN_INVOCATION_INTERVAL = 3000;
+let minInvocationInterval = DEFAULT_MIN_INVOCATION_INTERVAL;
+const DEFAULT_MAX_SYCHRONOUS_PROCESSING_TIME = 50;
+let maxSynchronousProcessingTime = DEFAULT_MAX_SYCHRONOUS_PROCESSING_TIME;
+
+let abpSelectorRegexp = /:(-abp-[\w-]+|has|has-text|xpath|not)\(/;
+
+let testInfo = null;
+
+function toCSSStyleDeclaration(value) {
+ return Object.assign(document.createElement("test"), {style: value}).style;
+}
+
+/**
+ * Creates a new IdleDeadline.
+ *
+ * Note: This function is synchronous and does NOT request an idle
+ * callback.
+ *
+ * See {@link https://developer.mozilla.org/en-US/docs/Web/API/IdleDeadline}.
+ * @return {IdleDeadline}
+ */
+function newIdleDeadline() {
+ let startTime = performance.now();
+ return {
+ didTimeout: false,
+ timeRemaining() {
+ let elapsed = performance.now() - startTime;
+ let remaining = maxSynchronousProcessingTime - elapsed;
+ return Math.max(0, remaining);
+ }
+ };
+}
+
+/**
+ * Returns a promise that is resolved when the browser is next idle.
+ *
+ * This is intended to be used for long running tasks on the UI thread
+ * to allow other UI events to process.
+ *
+ * @return {Promise.<IdleDeadline>}
+ * A promise that is fulfilled when you can continue processing
+ */
+function yieldThread() {
+ return new Promise(resolve => {
+ if (typeof requestIdleCallback === "function") {
+ requestIdleCallback(resolve);
+ }
+ else {
+ setTimeout(() => {
+ resolve(newIdleDeadline());
+ }, 0);
+ }
+ });
+}
+
+
+function getCachedPropertyValue(object, name, defaultValueFunc = () => {}) {
+ let value = object[name];
+ if (typeof value == "undefined")
+ Object.defineProperty(object, name, {value: value = defaultValueFunc()});
+ return value;
+}
+
+/**
+ * Return position of node from parent.
+ * @param {Node} node the node to find the position of.
+ * @return {number} One-based index like for :nth-child(), or 0 on error.
+ */
+function positionInParent(node) {
+ let index = 0;
+ for (let child of node.parentNode.children) {
+ if (child == node)
+ return index + 1;
+
+ index++;
+ }
+
+ return 0;
+}
+
+function makeSelector(node, selector = "") {
+ if (node == null)
+ return null;
+ if (!node.parentElement) {
+ let newSelector = ":root";
+ if (selector)
+ newSelector += " > " + selector;
+ return newSelector;
+ }
+ let idx = positionInParent(node);
+ if (idx > 0) {
+ let newSelector = `${node.tagName}:nth-child(${idx})`;
+ if (selector)
+ newSelector += " > " + selector;
+ return makeSelector(node.parentElement, newSelector);
+ }
+
+ return selector;
+}
+
+function parseSelectorContent(content, startIndex) {
+ let parens = 1;
+ let quote = null;
+ let i = startIndex;
+ for (; i < content.length; i++) {
+ let c = content[i];
+ if (c == "\\") {
+ // Ignore escaped characters
+ i++;
+ }
+ else if (quote) {
+ if (c == quote)
+ quote = null;
+ }
+ else if (c == "'" || c == '"') {
+ quote = c;
+ }
+ else if (c == "(") {
+ parens++;
+ }
+ else if (c == ")") {
+ parens--;
+ if (parens == 0)
+ break;
+ }
+ }
+
+ if (parens > 0)
+ return null;
+ return {text: content.substring(startIndex, i), end: i};
+}
+
+/**
+ * Stringified style objects
+ * @typedef {Object} StringifiedStyle
+ * @property {string} style CSS style represented by a string.
+ * @property {string[]} subSelectors selectors the CSS properties apply to.
+ */
+
+/**
+ * Produce a string representation of the stylesheet entry.
+ * @param {CSSStyleRule} rule the CSS style rule.
+ * @return {StringifiedStyle} the stringified style.
+ */
+function stringifyStyle(rule) {
+ let styles = [];
+ for (let i = 0; i < rule.style.length; i++) {
+ let property = rule.style.item(i);
+ let value = rule.style.getPropertyValue(property);
+ let priority = rule.style.getPropertyPriority(property);
+ styles.push(`${property}: ${value}${priority ? " !" + priority : ""};`);
+ }
+ styles.sort();
+ return {
+ style: styles.join(" "),
+ subSelectors: splitSelector(rule.selectorText)
+ };
+}
+
+let scopeSupported = null;
+
+function tryQuerySelector(subtree, selector, all) {
+ let elements = null;
+ try {
+ elements = all ? subtree.querySelectorAll(selector) :
+ subtree.querySelector(selector);
+ scopeSupported = true;
+ }
+ catch (e) {
+ // Edge doesn't support ":scope"
+ scopeSupported = false;
+ }
+ return elements;
+}
+
+/**
+ * Query selector.
+ *
+ * If it is relative, will try :scope.
+ *
+ * @param {Node} subtree the element to query selector
+ * @param {string} selector the selector to query
+ * @param {bool} [all=false] true to perform querySelectorAll()
+ *
+ * @returns {?(Node|NodeList)} result of the query. null in case of error.
+ */
+function scopedQuerySelector(subtree, selector, all) {
+ if (selector[0] == ">") {
+ selector = ":scope" + selector;
+ if (scopeSupported) {
+ return all ? subtree.querySelectorAll(selector) :
+ subtree.querySelector(selector);
+ }
+ if (scopeSupported == null)
+ return tryQuerySelector(subtree, selector, all);
+ return null;
+ }
+ return all ? subtree.querySelectorAll(selector) :
+ subtree.querySelector(selector);
+}
+
+function scopedQuerySelectorAll(subtree, selector) {
+ return scopedQuerySelector(subtree, selector, true);
+}
+
+class PlainSelector {
+ constructor(selector) {
+ this._selector = selector;
+ this.maybeDependsOnAttributes = /[#.:]|\[.+\]/.test(selector);
+ this.maybeContainsSiblingCombinators = /[~+]/.test(selector);
+ }
+
+ /**
+ * Generator function returning a pair of selector string and subtree.
+ * @param {string} prefix the prefix for the selector.
+ * @param {Node} subtree the subtree we work on.
+ * @param {Node[]} [targets] the nodes we are interested in.
+ */
+ *getSelectors(prefix, subtree, targets) {
+ yield [prefix + this._selector, subtree];
+ }
+}
+
+const incompletePrefixRegexp = /[\s>+~]$/;
+
+class NotSelector {
+ constructor(selectors) {
+ this._innerPattern = new Pattern(selectors);
+ }
+
+ get dependsOnStyles() {
+ return this._innerPattern.dependsOnStyles;
+ }
+
+ get dependsOnCharacterData() {
+ return this._innerPattern.dependsOnCharacterData;
+ }
+
+ get maybeDependsOnAttributes() {
+ return this._innerPattern.maybeDependsOnAttributes;
+ }
+
+ *getSelectors(prefix, subtree, targets) {
+ for (let element of this.getElements(prefix, subtree, targets))
+ yield [makeSelector(element), element];
+ }
+
+ /**
+ * Generator function returning selected elements.
+ * @param {string} prefix the prefix for the selector.
+ * @param {Node} subtree the subtree we work on.
+ * @param {Node[]} [targets] the nodes we are interested in.
+ */
+ *getElements(prefix, subtree, targets) {
+ let actualPrefix = (!prefix || incompletePrefixRegexp.test(prefix)) ?
+ prefix + "*" : prefix;
+ let elements = scopedQuerySelectorAll(subtree, actualPrefix);
+ if (elements) {
+ for (let element of elements) {
+ // If the element is neither an ancestor nor a descendant of one of the
+ // targets, we can skip it.
+ if (targets && !targets.some(target => element.contains(target) ||
+ target.contains(element))) {
+ yield null;
+ continue;
+ }
+
+ if (testInfo)
+ testInfo.lastProcessedElements.add(element);
+
+ if (!this._innerPattern.matches(element, subtree))
+ yield element;
+
+ yield null;
+ }
+ }
+ }
+
+ setStyles(styles) {
+ this._innerPattern.setStyles(styles);
+ }
+}
+
+class HasSelector {
+ constructor(selectors) {
+ this._innerPattern = new Pattern(selectors);
+ }
+
+ get dependsOnStyles() {
+ return this._innerPattern.dependsOnStyles;
+ }
+
+ get dependsOnCharacterData() {
+ return this._innerPattern.dependsOnCharacterData;
+ }
+
+ get maybeDependsOnAttributes() {
+ return this._innerPattern.maybeDependsOnAttributes;
+ }
+
+ *getSelectors(prefix, subtree, targets) {
+ for (let element of this.getElements(prefix, subtree, targets))
+ yield [makeSelector(element), element];
+ }
+
+ /**
+ * Generator function returning selected elements.
+ * @param {string} prefix the prefix for the selector.
+ * @param {Node} subtree the subtree we work on.
+ * @param {Node[]} [targets] the nodes we are interested in.
+ */
+ *getElements(prefix, subtree, targets) {
+ let actualPrefix = (!prefix || incompletePrefixRegexp.test(prefix)) ?
+ prefix + "*" : prefix;
+ let elements = scopedQuerySelectorAll(subtree, actualPrefix);
+ if (elements) {
+ for (let element of elements) {
+ // If the element is neither an ancestor nor a descendant of one of the
+ // targets, we can skip it.
+ if (targets && !targets.some(target => element.contains(target) ||
+ target.contains(element))) {
+ yield null;
+ continue;
+ }
+
+ if (testInfo)
+ testInfo.lastProcessedElements.add(element);
+
+ for (let selector of this._innerPattern.evaluate(element, targets)) {
+ if (selector == null)
+ yield null;
+ else if (scopedQuerySelector(element, selector))
+ yield element;
+ }
+
+ yield null;
+ }
+ }
+ }
+
+ setStyles(styles) {
+ this._innerPattern.setStyles(styles);
+ }
+}
+
+class XPathSelector {
+ constructor(textContent) {
+ this.dependsOnCharacterData = true;
+ this.maybeDependsOnAttributes = true;
+
+ let evaluator = new XPathEvaluator();
+ this._expression = evaluator.createExpression(textContent, null);
+ }
+
+ *getSelectors(prefix, subtree, targets) {
+ for (let element of this.getElements(prefix, subtree, targets))
+ yield [makeSelector(element), element];
+ }
+
+ *getElements(prefix, subtree, targets) {
+ let {ORDERED_NODE_SNAPSHOT_TYPE: flag} = XPathResult;
+ let elements = prefix ? scopedQuerySelectorAll(subtree, prefix) : [subtree];
+ for (let parent of elements) {
+ let result = this._expression.evaluate(parent, flag, null);
+ for (let i = 0, {snapshotLength} = result; i < snapshotLength; i++)
+ yield result.snapshotItem(i);
+ }
+ }
+}
+
+class ContainsSelector {
+ constructor(textContent) {
+ this.dependsOnCharacterData = true;
+
+ this._regexp = makeRegExpParameter(textContent);
+ }
+
+ *getSelectors(prefix, subtree, targets) {
+ for (let element of this.getElements(prefix, subtree, targets))
+ yield [makeSelector(element), subtree];
+ }
+
+ *getElements(prefix, subtree, targets) {
+ let actualPrefix = (!prefix || incompletePrefixRegexp.test(prefix)) ?
+ prefix + "*" : prefix;
+
+ let elements = scopedQuerySelectorAll(subtree, actualPrefix);
+
+ if (elements) {
+ let lastRoot = null;
+ for (let element of elements) {
+ // For a filter like div:-abp-contains(Hello) and a subtree like
+ // <div id="a"><div id="b"><div id="c">Hello</div></div></div>
+ // we're only interested in div#a
+ if (lastRoot && lastRoot.contains(element)) {
+ yield null;
+ continue;
+ }
+
+ lastRoot = element;
+
+ if (targets && !targets.some(target => element.contains(target) ||
+ target.contains(element))) {
+ yield null;
+ continue;
+ }
+
+ if (testInfo)
+ testInfo.lastProcessedElements.add(element);
+
+ if (this._regexp && this._regexp.test(element.textContent))
+ yield element;
+ else
+ yield null;
+ }
+ }
+ }
+}
+
+class PropsSelector {
+ constructor(propertyExpression) {
+ this.dependsOnStyles = true;
+ this.maybeDependsOnAttributes = true;
+
+ let regexpString;
+ if (propertyExpression.length >= 2 && propertyExpression[0] == "/" &&
+ propertyExpression[propertyExpression.length - 1] == "/")
+ regexpString = propertyExpression.slice(1, -1);
+ else
+ regexpString = filterToRegExp(propertyExpression);
+
+ this._regexp = new RegExp(regexpString, "i");
+
+ this._subSelectors = [];
+ }
+
+ *getSelectors(prefix, subtree, targets) {
+ for (let subSelector of this._subSelectors) {
+ if (subSelector.startsWith("*") &&
+ !incompletePrefixRegexp.test(prefix))
+ subSelector = subSelector.substring(1);
+
+ yield [qualifySelector(subSelector, prefix), subtree];
+ }
+ }
+
+ setStyles(styles) {
+ this._subSelectors = [];
+ for (let style of styles) {
+ if (this._regexp.test(style.style)) {
+ for (let subSelector of style.subSelectors) {
+ let idx = subSelector.lastIndexOf("::");
+ if (idx != -1)
+ subSelector = subSelector.substring(0, idx);
+
+ this._subSelectors.push(subSelector);
+ }
+ }
+ }
+ }
+}
+
+class Pattern {
+ constructor(selectors, text) {
+ this.selectors = selectors;
+ this.text = text;
+ }
+
+ get dependsOnStyles() {
+ return getCachedPropertyValue(
+ this, "_dependsOnStyles", () => this.selectors.some(
+ selector => selector.dependsOnStyles
+ )
+ );
+ }
+
+ get maybeDependsOnAttributes() {
+ // Observe changes to attributes if either there's a plain selector that
+ // looks like an ID selector, class selector, or attribute selector in one
+ // of the patterns (e.g. "a[href='https://example.com/']")
+ // or there's a properties selector nested inside a has selector
+ // (e.g. "div:-abp-has(:-abp-properties(color: blue))")
+ return getCachedPropertyValue(
+ this, "_maybeDependsOnAttributes", () => this.selectors.some(
+ selector => selector.maybeDependsOnAttributes ||
+ (selector instanceof HasSelector &&
+ selector.dependsOnStyles)
+ )
+ );
+ }
+
+ get dependsOnCharacterData() {
+ // Observe changes to character data only if there's a contains selector in
+ // one of the patterns.
+ return getCachedPropertyValue(
+ this, "_dependsOnCharacterData", () => this.selectors.some(
+ selector => selector.dependsOnCharacterData
+ )
+ );
+ }
+
+ get maybeContainsSiblingCombinators() {
+ return getCachedPropertyValue(
+ this, "_maybeContainsSiblingCombinators", () => this.selectors.some(
+ selector => selector.maybeContainsSiblingCombinators
+ )
+ );
+ }
+
+ matchesMutationTypes(mutationTypes) {
+ let mutationTypeMatchMap = getCachedPropertyValue(
+ this, "_mutationTypeMatchMap", () => new Map([
+ // All types of DOM-dependent patterns are affected by mutations of
+ // type "childList".
+ ["childList", true],
+ ["attributes", this.maybeDependsOnAttributes],
+ ["characterData", this.dependsOnCharacterData]
+ ])
+ );
+
+ for (let mutationType of mutationTypes) {
+ if (mutationTypeMatchMap.get(mutationType))
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Generator function returning CSS selectors for all elements that
+ * match the pattern.
+ *
+ * This allows transforming from selectors that may contain custom
+ * :-abp- selectors to pure CSS selectors that can be used to select
+ * elements.
+ *
+ * The selectors returned from this function may be invalidated by DOM
+ * mutations.
+ *
+ * @param {Node} subtree the subtree we work on
+ * @param {Node[]} [targets] the nodes we are interested in. May be
+ * used to optimize search.
+ */
+ *evaluate(subtree, targets) {
+ let selectors = this.selectors;
+ function* evaluateInner(index, prefix, currentSubtree) {
+ if (index >= selectors.length) {
+ yield prefix;
+ return;
+ }
+ for (let [selector, element] of selectors[index].getSelectors(
+ prefix, currentSubtree, targets
+ )) {
+ if (selector == null)
+ yield null;
+ else
+ yield* evaluateInner(index + 1, selector, element);
+ }
+ // Just in case the getSelectors() generator above had to run some heavy
+ // document.querySelectorAll() call which didn't produce any results, make
+ // sure there is at least one point where execution can pause.
+ yield null;
+ }
+ yield* evaluateInner(0, "", subtree);
+ }
+
+ /**
+ * Checks if a pattern matches a specific element
+ * @param {Node} [target] the element we're interested in checking for
+ * matches on.
+ * @param {Node} subtree the subtree we work on
+ * @return {bool}
+ */
+ matches(target, subtree) {
+ let targetFilter = [target];
+ if (this.maybeContainsSiblingCombinators)
+ targetFilter = null;
+
+ let selectorGenerator = this.evaluate(subtree, targetFilter);
+ for (let selector of selectorGenerator) {
+ if (selector && target.matches(selector))
+ return true;
+ }
+ return false;
+ }
+
+ setStyles(styles) {
+ for (let selector of this.selectors) {
+ if (selector.dependsOnStyles)
+ selector.setStyles(styles);
+ }
+ }
+}
+
+function extractMutationTypes(mutations) {
+ let types = new Set();
+
+ for (let mutation of mutations) {
+ types.add(mutation.type);
+
+ // There are only 3 types of mutations: "attributes", "characterData", and
+ // "childList".
+ if (types.size == 3)
+ break;
+ }
+
+ return types;
+}
+
+function extractMutationTargets(mutations) {
+ if (!mutations)
+ return null;
+
+ let targets = new Set();
+
+ for (let mutation of mutations) {
+ if (mutation.type == "childList") {
+ // When new nodes are added, we're interested in the added nodes rather
+ // than the parent.
+ for (let node of mutation.addedNodes)
+ targets.add(node);
+ if (mutation.removedNodes.length > 0)
+ targets.add(mutation.target);
+ }
+ else {
+ targets.add(mutation.target);
+ }
+ }
+
+ return [...targets];
+}
+
+function filterPatterns(patterns, {stylesheets, mutations}) {
+ if (!stylesheets && !mutations)
+ return patterns.slice();
+
+ let mutationTypes = mutations ? extractMutationTypes(mutations) : null;
+
+ return patterns.filter(
+ pattern => (stylesheets && pattern.dependsOnStyles) ||
+ (mutations && pattern.matchesMutationTypes(mutationTypes))
+ );
+}
+
+function shouldObserveAttributes(patterns) {
+ return patterns.some(pattern => pattern.maybeDependsOnAttributes);
+}
+
+function shouldObserveCharacterData(patterns) {
+ return patterns.some(pattern => pattern.dependsOnCharacterData);
+}
+
+function shouldObserveStyles(patterns) {
+ return patterns.some(pattern => pattern.dependsOnStyles);
+}
+
+/**
+ * @callback hideElemsFunc
+ * @param {Node[]} elements Elements on the page that should be hidden
+ * @param {string[]} elementFilters
+ * The filter text that caused the elements to be hidden
+ */
+
+/**
+ * @callback unhideElemsFunc
+ * @param {Node[]} elements Elements on the page that should be hidden
+ */
+
+
+/**
+ * Manages the front-end processing of element hiding emulation filters.
+ */
+class ElemHideEmulation {
+ /**
+ * @param {module:content/elemHideEmulation~hideElemsFunc} hideElemsFunc
+ * A callback that should be provided to do the actual element hiding.
+ * @param {module:content/elemHideEmulation~unhideElemsFunc} unhideElemsFunc
+ * A callback that should be provided to unhide previously hidden elements.
+ */
+ constructor(hideElemsFunc = () => {}, unhideElemsFunc = () => {}) {
+ this._filteringInProgress = false;
+ this._nextFilteringScheduled = false;
+ this._lastInvocation = -minInvocationInterval;
+ this._scheduledProcessing = null;
+
+ this.document = document;
+ this.hideElemsFunc = hideElemsFunc;
+ this.unhideElemsFunc = unhideElemsFunc;
+ this.observer = new MutationObserver(this.observe.bind(this));
+ this.hiddenElements = new Set();
+ }
+
+ isSameOrigin(stylesheet) {
+ try {
+ return new URL(stylesheet.href).origin == this.document.location.origin;
+ }
+ catch (e) {
+ // Invalid URL, assume that it is first-party.
+ return true;
+ }
+ }
+
+ /**
+ * Parse the selector
+ * @param {string} selector the selector to parse
+ * @return {Array} selectors is an array of objects,
+ * or null in case of errors.
+ */
+ parseSelector(selector) {
+ if (selector.length == 0)
+ return [];
+
+ let match = abpSelectorRegexp.exec(selector);
+ if (!match)
+ return [new PlainSelector(selector)];
+
+ let selectors = [];
+ if (match.index > 0)
+ selectors.push(new PlainSelector(selector.substring(0, match.index)));
+
+ let startIndex = match.index + match[0].length;
+ let content = parseSelectorContent(selector, startIndex);
+ if (!content) {
+ console.warn(new SyntaxError("Failed to parse Adblock Plus " +
+ `selector ${selector} ` +
+ "due to unmatched parentheses."));
+ return null;
+ }
+ if (match[1] == "-abp-properties") {
+ selectors.push(new PropsSelector(content.text));
+ }
+ else if (match[1] == "-abp-has" || match[1] == "has") {
+ let hasSelectors = this.parseSelector(content.text);
+ if (hasSelectors == null)
+ return null;
+ selectors.push(new HasSelector(hasSelectors));
+ }
+ else if (match[1] == "-abp-contains" || match[1] == "has-text") {
+ selectors.push(new ContainsSelector(content.text));
+ }
+ else if (match[1] === "xpath") {
+ try {
+ selectors.push(new XPathSelector(content.text));
+ }
+ catch ({message}) {
+ console.warn(
+ new SyntaxError(
+ "Failed to parse Adblock Plus " +
+ `selector ${selector}, invalid ` +
+ `xpath: ${content.text} ` +
+ `error: ${message}.`
+ )
+ );
+
+ return null;
+ }
+ }
+ else if (match[1] == "not") {
+ let notSelectors = this.parseSelector(content.text);
+ if (notSelectors == null)
+ return null;
+
+ // if all of the inner selectors are PlainSelectors, then we
+ // don't actually need to use our selector at all. We're better
+ // off delegating to the browser :not implementation.
+ if (notSelectors.every(s => s instanceof PlainSelector))
+ selectors.push(new PlainSelector(`:not(${content.text})`));
+ else
+ selectors.push(new NotSelector(notSelectors));
+ }
+ else {
+ // this is an error, can't parse selector.
+ console.warn(new SyntaxError("Failed to parse Adblock Plus " +
+ `selector ${selector}, invalid ` +
+ `pseudo-class :${match[1]}().`));
+ return null;
+ }
+
+ let suffix = this.parseSelector(selector.substring(content.end + 1));
+ if (suffix == null)
+ return null;
+
+ selectors.push(...suffix);
+
+ if (selectors.length == 1 && selectors[0] instanceof ContainsSelector) {
+ console.warn(new SyntaxError("Failed to parse Adblock Plus " +
+ `selector ${selector}, can't ` +
+ "have a lonely :-abp-contains()."));
+ return null;
+ }
+ return selectors;
+ }
+
+ /**
+ * Reads the rules out of CSS stylesheets
+ * @param {CSSStyleSheet[]} [stylesheets] The list of stylesheets to
+ * read.
+ * @return {CSSStyleRule[]}
+ */
+ _readCssRules(stylesheets) {
+ let cssStyles = [];
+
+ for (let stylesheet of stylesheets || []) {
+ // Explicitly ignore third-party stylesheets to ensure consistent behavior
+ // between Firefox and Chrome.
+ if (!this.isSameOrigin(stylesheet))
+ continue;
+
+ let rules;
+ try {
+ rules = stylesheet.cssRules;
+ }
+ catch (e) {
+ // On Firefox, there is a chance that an InvalidAccessError
+ // get thrown when accessing cssRules. Just skip the stylesheet
+ // in that case.
+ // See https://searchfox.org/mozilla-central/rev/f65d7528e34ef1a7665b4a1a7b7cdb1388fcd3aa/layout/style/StyleSheet.cpp#699
+ continue;
+ }
+
+ if (!rules)
+ continue;
+
+ for (let rule of rules) {
+ if (rule.type != rule.STYLE_RULE)
+ continue;
+
+ cssStyles.push(stringifyStyle(rule));
+ }
+ }
+ return cssStyles;
+ }
+
+ /**
+ * Processes the current document and applies all rules to it.
+ * @param {CSSStyleSheet[]} [stylesheets]
+ * The list of new stylesheets that have been added to the document and
+ * made reprocessing necessary. This parameter shouldn't be passed in for
+ * the initial processing, all of document's stylesheets will be considered
+ * then and all rules, including the ones not dependent on styles.
+ * @param {MutationRecord[]} [mutations]
+ * The list of DOM mutations that have been applied to the document and
+ * made reprocessing necessary. This parameter shouldn't be passed in for
+ * the initial processing, the entire document will be considered
+ * then and all rules, including the ones not dependent on the DOM.
+ * @return {Promise}
+ * A promise that is fulfilled once all filtering is completed
+ */
+ async _addSelectors(stylesheets, mutations) {
+ if (testInfo)
+ testInfo.lastProcessedElements.clear();
+
+ let deadline = newIdleDeadline();
+
+ if (shouldObserveStyles(this.patterns))
+ this._refreshPatternStyles();
+
+ let patternsToCheck = filterPatterns(
+ this.patterns, {stylesheets, mutations}
+ );
+
+ let targets = extractMutationTargets(mutations);
+
+ let elementsToHide = [];
+ let elementFilters = [];
+ let elementsToUnhide = new Set(this.hiddenElements);
+
+ for (let pattern of patternsToCheck) {
+ let evaluationTargets = targets;
+
+ // If the pattern appears to contain any sibling combinators, we can't
+ // easily optimize based on the mutation targets. Since this is a
+ // special case, skip the optimization. By setting it to null here we
+ // make sure we process the entire DOM.
+ if (pattern.maybeContainsSiblingCombinators)
+ evaluationTargets = null;
+
+ let generator = pattern.evaluate(this.document, evaluationTargets);
+ for (let selector of generator) {
+ if (selector != null) {
+ for (let element of this.document.querySelectorAll(selector)) {
+ if (!this.hiddenElements.has(element)) {
+ elementsToHide.push(element);
+ elementFilters.push(pattern.text);
+ }
+ else {
+ elementsToUnhide.delete(element);
+ }
+ }
+ }
+
+ if (deadline.timeRemaining() <= 0)
+ deadline = await yieldThread();
+ }
+ }
+ this._hideElems(elementsToHide, elementFilters);
+
+ // The search for elements to hide it optimized to find new things
+ // to hide quickly, by not checking all patterns and not checking
+ // the full DOM. That's why we need to do a more thorough check
+ // for each remaining element that might need to be unhidden,
+ // checking all patterns.
+ for (let elem of elementsToUnhide) {
+ if (!elem.isConnected) {
+ // elements that are no longer in the DOM should be unhidden
+ // in case they're ever readded, and then forgotten about so
+ // we don't cause a memory leak.
+ continue;
+ }
+ let matchesAny = this.patterns.some(pattern => pattern.matches(
+ elem, this.document
+ ));
+ if (matchesAny)
+ elementsToUnhide.delete(elem);
+
+ if (deadline.timeRemaining() <= 0)
+ deadline = await yieldThread();
+ }
+ this._unhideElems(Array.from(elementsToUnhide));
+ }
+
+ _hideElems(elementsToHide, elementFilters) {
+ if (elementsToHide.length > 0) {
+ this.hideElemsFunc(elementsToHide, elementFilters);
+ for (let elem of elementsToHide)
+ this.hiddenElements.add(elem);
+ }
+ }
+
+ _unhideElems(elementsToUnhide) {
+ if (elementsToUnhide.length > 0) {
+ this.unhideElemsFunc(elementsToUnhide);
+ for (let elem of elementsToUnhide)
+ this.hiddenElements.delete(elem);
+ }
+ }
+
+ /**
+ * Performed any scheduled processing.
+ *
+ * This function is asyncronous, and should not be run multiple
+ * times in parallel. The flag `_filteringInProgress` is set and
+ * unset so you can check if it's already running.
+ * @return {Promise}
+ * A promise that is fulfilled once all filtering is completed
+ */
+ async _processFiltering() {
+ if (this._filteringInProgress) {
+ console.warn("ElemHideEmulation scheduling error: " +
+ "Tried to process filtering in parallel.");
+ if (testInfo) {
+ testInfo.failedAssertions.push(
+ "Tried to process filtering in parallel"
+ );
+ }
+ return;
+ }
+ let params = this._scheduledProcessing || {};
+ this._scheduledProcessing = null;
+ this._filteringInProgress = true;
+ this._nextFilteringScheduled = false;
+ await this._addSelectors(
+ params.stylesheets,
+ params.mutations
+ );
+ this._lastInvocation = performance.now();
+ this._filteringInProgress = false;
+ if (this._scheduledProcessing)
+ this._scheduleNextFiltering();
+ }
+
+ /**
+ * Appends new changes to the list of filters for the next time
+ * filtering is run.
+ * @param {CSSStyleSheet[]} [stylesheets]
+ * new stylesheets to be processed. This parameter should be omitted
+ * for full reprocessing.
+ * @param {MutationRecord[]} [mutations]
+ * new DOM mutations to be processed. This parameter should be omitted
+ * for full reprocessing.
+ */
+ _appendScheduledProcessing(stylesheets, mutations) {
+ if (!this._scheduledProcessing) {
+ // There isn't anything scheduled yet. Make the schedule.
+ this._scheduledProcessing = {stylesheets, mutations};
+ }
+ else if (!stylesheets && !mutations) {
+ // The new request was to reprocess everything, and so any
+ // previous filters are irrelevant.
+ this._scheduledProcessing = {};
+ }
+ else if (this._scheduledProcessing.stylesheets ||
+ this._scheduledProcessing.mutations) {
+ // The previous filters are not to filter everything, so the new
+ // parameters matter. Push them onto the appropriate lists.
+ if (stylesheets) {
+ if (!this._scheduledProcessing.stylesheets)
+ this._scheduledProcessing.stylesheets = [];
+ this._scheduledProcessing.stylesheets.push(...stylesheets);
+ }
+ if (mutations) {
+ if (!this._scheduledProcessing.mutations)
+ this._scheduledProcessing.mutations = [];
+ this._scheduledProcessing.mutations.push(...mutations);
+ }
+ }
+ else {
+ // this._scheduledProcessing is already going to recheck
+ // everything, so no need to do anything here.
+ }
+ }
+
+ /**
+ * Schedule filtering to be processed in the future, or start
+ * processing immediately.
+ *
+ * If processing is already scheduled, this does nothing.
+ */
+ _scheduleNextFiltering() {
+ if (this._nextFilteringScheduled || this._filteringInProgress) {
+ // The next one has already been scheduled. Our new events are
+ // on the queue, so nothing more to do.
+ return;
+ }
+
+ if (this.document.readyState === "loading") {
+ // Document isn't fully loaded yet, so schedule our first
+ // filtering as soon as that's done.
+ this.document.addEventListener(
+ "DOMContentLoaded",
+ () => this._processFiltering(),
+ {once: true}
+ );
+ this._nextFilteringScheduled = true;
+ }
+ else if (performance.now() - this._lastInvocation <
+ minInvocationInterval) {
+ // It hasn't been long enough since our last filter. Set the
+ // timeout for when it's time for that.
+ setTimeout(
+ () => this._processFiltering(),
+ minInvocationInterval - (performance.now() - this._lastInvocation)
+ );
+ this._nextFilteringScheduled = true;
+ }
+ else {
+ // We can actually just start filtering immediately!
+ this._processFiltering();
+ }
+ }
+
+ /**
+ * Re-run filtering either immediately or queued.
+ * @param {CSSStyleSheet[]} [stylesheets]
+ * new stylesheets to be processed. This parameter should be omitted
+ * for full reprocessing.
+ * @param {MutationRecord[]} [mutations]
+ * new DOM mutations to be processed. This parameter should be omitted
+ * for full reprocessing.
+ */
+ queueFiltering(stylesheets, mutations) {
+ this._appendScheduledProcessing(stylesheets, mutations);
+ this._scheduleNextFiltering();
+ }
+
+ _refreshPatternStyles(stylesheet) {
+ let allCssRules = this._readCssRules(this.document.styleSheets);
+ for (let pattern of this.patterns)
+ pattern.setStyles(allCssRules);
+ }
+
+ onLoad(event) {
+ let stylesheet = event.target.sheet;
+ if (stylesheet)
+ this.queueFiltering([stylesheet]);
+ }
+
+ observe(mutations) {
+ if (testInfo) {
+ // In test mode, filter out any mutations likely done by us
+ // (i.e. style="display: none !important"). This makes it easier to
+ // observe how the code responds to DOM mutations.
+ mutations = mutations.filter(
+ ({type, attributeName, target: {style: newValue}, oldValue}) =>
+ !(type == "attributes" && attributeName == "style" &&
+ newValue.display == "none" &&
+ toCSSStyleDeclaration(oldValue).display != "none")
+ );
+
+ if (mutations.length == 0)
+ return;
+ }
+
+ this.queueFiltering(null, mutations);
+ }
+
+ apply(patterns) {
+ this.patterns = [];
+ for (let pattern of patterns) {
+ let selectors = this.parseSelector(pattern.selector);
+ if (selectors != null && selectors.length > 0)
+ this.patterns.push(new Pattern(selectors, pattern.text));
+ }
+
+ if (this.patterns.length > 0) {
+ this.queueFiltering();
+
+ let attributes = shouldObserveAttributes(this.patterns);
+ this.observer.observe(
+ this.document,
+ {
+ childList: true,
+ attributes,
+ attributeOldValue: attributes && !!testInfo,
+ characterData: shouldObserveCharacterData(this.patterns),
+ subtree: true
+ }
+ );
+ if (shouldObserveStyles(this.patterns)) {
+ let onLoad = this.onLoad.bind(this);
+ if (this.document.readyState === "loading")
+ this.document.addEventListener("DOMContentLoaded", onLoad, true);
+ this.document.addEventListener("load", onLoad, true);
+ }
+ }
+ }
+};
+
+
+// end of elemHideEmulation.js ------------------------------
+
+
+
+// elemHidingEmulatedPatterns array definition is generated in adblock_utils.cc
+
+let elemHidingEmulatedPatterns = [{{elemHidingEmulatedPatternsDef}}];
+
+// adopted from applyElemHideEmulation function in:
+// https://gitlab.com/eyeo/adblockplus/adblockpluscore/blob/master/test/browser/elemHideEmulation.js
+
+let elemHideEmulation = new ElemHideEmulation(
+ elems => {
+ for (let elem of elems) {
+ if (elem.style.display != "none")
+ elem.style.display = "none";
+ }
+ },
+ elems => {
+ for (let elem of elems) {
+ if (elem.style.display === "none")
+ elem.style.display = "";
+ }
+ }
+);
+
+elemHideEmulation.apply(elemHidingEmulatedPatterns);
diff --git a/components/resources/adblocking/exceptionrules.txt.gz b/components/resources/adblocking/exceptionrules.txt.gz
new file mode 100644
index 0000000000000000000000000000000000000000..dcfd516a6bbd13dcdcc7409240d9ca0b322e5270
GIT binary patch
literal 846414
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%0AKdFNI3IP
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
LDIkFN#;N}YR&K&K
literal 0
HcmV?d00001
diff --git a/components/resources/adblocking/update.sh b/components/resources/adblocking/update.sh
new file mode 100755
--- /dev/null
+++ b/components/resources/adblocking/update.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+# This file is part of eyeo Chromium SDK,
+# Copyright (C) 2006-present eyeo GmbH
+# eyeo Chromium SDK is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3 as
+# published by the Free Software Foundation.
+# eyeo Chromium SDK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+# You should have received a copy of the GNU General Public License
+# along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+
+# This script downloads filter lists that get bundled with the browser binary.
+# Bundled filter lists allow out-of-the-box ad-filtering and serve as backup in
+# case the browser needs to navigate to a website without having downloaded
+# the desired filter list from the Internet yet.
+#
+# The browser will replace these bundled filter lists by ones downloaded from
+# the Internet as soon as possible.
+
+# We use minified lists to reduce resource bundle size and speed up startup.
+# We don't care about perfect ad-filtering quality as we expect these to be
+# replaced very soon.
+wget https://easylist-downloads.adblockplus.org/easylist-minified.txt -O easylist.txt
+gzip -f easylist.txt
+
+wget https://easylist-downloads.adblockplus.org/exceptionrules-minimal.txt -O exceptionrules.txt
+gzip -f exceptionrules.txt
+
+wget https://easylist-downloads.adblockplus.org/abp-filters-anti-cv.txt -O anticv.txt
+gzip -f anticv.txt
diff --git a/components/resources/components_resources.grd b/components/resources/components_resources.grd
--- a/components/resources/components_resources.grd
+++ b/components/resources/components_resources.grd
@@ -1,4 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This source code is a part of eyeo Chromium SDK.
+ Use of this source code is governed by the GPLv3 that can be found in the
+ components/adblock/LICENSE file.
+-->
<!--
This file aggregates resource GRDPs for user-facing features under /components.
Resources for developer-facing chrome:// pages should be aggregated in
@@ -13,6 +18,7 @@ dev_ui_components_resources.grd.
</outputs>
<release seq="1">
<includes>
+ <part file="adblock_resources.grdp" />
<part file="about_ui_resources.grdp" />
<part file="commerce_resources.grdp" />
<part file="dom_distiller_resources.grdp" />
diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc
--- a/content/browser/loader/navigation_url_loader_impl.cc
+++ b/content/browser/loader/navigation_url_loader_impl.cc
@@ -2,6 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+// This source code is a part of eyeo Chromium SDK.
+// Use of this source code is governed by the GPLv3 that can be found in the
+// components/adblock/LICENSE file.
+
#include "content/browser/loader/navigation_url_loader_impl.h"
#include <map>
@@ -1093,7 +1097,7 @@ void NavigationURLLoaderImpl::OnReceiveRedirect(
LogQueueTimeHistogram("Navigation.QueueTime.OnReceiveRedirect",
resource_request_->is_outermost_main_frame);
net::Error error = net::OK;
- if (!bypass_redirect_checks_ &&
+ if (!bypass_redirect_checks_ && !redirect_info.bypass_redirect_checks &&
!IsSafeRedirectTarget(url_, redirect_info.new_url)) {
error = net::ERR_UNSAFE_REDIRECT;
} else if (--redirect_limit_ == 0) {
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -1,6 +1,10 @@
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+//
+// This source code is a part of eyeo Chromium SDK.
+// Use of this source code is governed by the GPLv3 that can be found in the
+// components/adblock/LICENSE file.
#include "content/browser/renderer_host/render_frame_host_impl.h"
@@ -2673,6 +2677,12 @@ void RenderFrameHostImpl::ExecuteJavaScriptMethod(
std::move(callback));
}
+// https://gitlab.com/eyeo/adblockplus/chromium/issues/35
+void RenderFrameHostImpl::InsertAbpElemhideStylesheet(
+ const std::string& stylesheet) {
+ GetAssociatedLocalFrame()->InsertAbpElemhideStylesheet(stylesheet);
+}
+
void RenderFrameHostImpl::ExecuteJavaScript(const std::u16string& javascript,
JavaScriptResultCallback callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
diff --git a/content/browser/renderer_host/render_frame_host_impl.h b/content/browser/renderer_host/render_frame_host_impl.h
--- a/content/browser/renderer_host/render_frame_host_impl.h
+++ b/content/browser/renderer_host/render_frame_host_impl.h
@@ -1,6 +1,10 @@
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+//
+// This source code is a part of eyeo Chromium SDK.
+// Use of this source code is governed by the GPLv3 that can be found in the
+// components/adblock/LICENSE file.
#ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_FRAME_HOST_IMPL_H_
#define CONTENT_BROWSER_RENDERER_HOST_RENDER_FRAME_HOST_IMPL_H_
@@ -439,6 +443,10 @@ class CONTENT_EXPORT RenderFrameHostImpl
const std::u16string& method_name,
base::Value::List arguments,
JavaScriptResultCallback callback) override;
+
+ // https://gitlab.com/eyeo/adblockplus/chromium/issues/35
+ void InsertAbpElemhideStylesheet(const std::string& stylesheet) override;
+
void ExecuteJavaScript(const std::u16string& javascript,
JavaScriptResultCallback callback) override;
void ExecuteJavaScriptInIsolatedWorld(const std::u16string& javascript,
diff --git a/content/public/browser/render_frame_host.h b/content/public/browser/render_frame_host.h
--- a/content/public/browser/render_frame_host.h
+++ b/content/public/browser/render_frame_host.h
@@ -1,6 +1,10 @@
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+//
+// This source code is a part of eyeo Chromium SDK.
+// Use of this source code is governed by the GPLv3 that can be found in the
+// components/adblock/LICENSE file.
#ifndef CONTENT_PUBLIC_BROWSER_RENDER_FRAME_HOST_H_
#define CONTENT_PUBLIC_BROWSER_RENDER_FRAME_HOST_H_
@@ -534,6 +538,9 @@ class CONTENT_EXPORT RenderFrameHost : public IPC::Listener,
virtual void AddMessageToConsole(blink::mojom::ConsoleMessageLevel level,
const std::string& message) = 0;
+ // https://gitlab.com/eyeo/adblockplus/chromium/issues/35
+ virtual void InsertAbpElemhideStylesheet(const std::string& stylesheet) = 0;
+
// Functions to run JavaScript in this frame's context. Pass in a callback to
// receive a result when it is available. If there is no need to receive the
// result, pass in a default-constructed callback. If provided, the callback
diff --git a/content/public/common/isolated_world_ids.h b/content/public/common/isolated_world_ids.h
--- a/content/public/common/isolated_world_ids.h
+++ b/content/public/common/isolated_world_ids.h
@@ -1,6 +1,10 @@
// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+//
+// This source code is a part of eyeo Chromium SDK.
+// Use of this source code is governed by the GPLv3 that can be found in the
+// components/adblock/LICENSE file.
#ifndef CONTENT_PUBLIC_COMMON_ISOLATED_WORLD_IDS_H_
#define CONTENT_PUBLIC_COMMON_ISOLATED_WORLD_IDS_H_
@@ -13,6 +17,10 @@ enum IsolatedWorldIDs : int32_t {
// The main world. Chrome cannot use ID 0 for an isolated world because 0
// represents the main world.
ISOLATED_WORLD_ID_GLOBAL = 0,
+
+ // Isolated world for eyeo ad blocking (element hiding)
+ ISOLATED_WORLD_ID_ADBLOCK,
+
// Custom isolated world ids used by other embedders should start from here.
ISOLATED_WORLD_ID_CONTENT_END,
// If any embedder has more than 10 custom isolated worlds that will be run
diff --git a/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc b/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc
--- a/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc
+++ b/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc
@@ -2,6 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+// This source code is a part of eyeo Chromium SDK.
+// Use of this source code is governed by the GPLv3 that can be found in the
+// components/adblock/LICENSE file.
+
#include "extensions/browser/api/web_request/web_request_proxying_url_loader_factory.h"
#include <memory>
@@ -463,6 +467,7 @@ void WebRequestProxyingURLLoaderFactory::InProgressRequest::OnReceiveRedirect(
TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT);
if (redirect_url_ != redirect_info.new_url &&
+ !redirect_info.bypass_redirect_checks &&
!IsRedirectSafe(request_.url, redirect_info.new_url,
info_->is_navigation_request)) {
OnNetworkError(CreateURLLoaderCompletionStatus(net::ERR_UNSAFE_REDIRECT));
diff --git a/net/url_request/redirect_info.h b/net/url_request/redirect_info.h
--- a/net/url_request/redirect_info.h
+++ b/net/url_request/redirect_info.h
@@ -2,6 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+// This source code is a part of eyeo Chromium SDK.
+// Use of this source code is governed by the GPLv3 that can be found in the
+// components/adblock/LICENSE file.
+
#ifndef NET_URL_REQUEST_REDIRECT_INFO_H_
#define NET_URL_REQUEST_REDIRECT_INFO_H_
@@ -83,6 +87,10 @@ struct NET_EXPORT RedirectInfo {
// True if this is a redirect from Signed Exchange to its fallback URL.
bool is_signed_exchange_fallback_redirect = false;
+ // True if this is redirect done by rewrite filter (adblocking). This allows
+ // redirecting ads served over https into empty media through data:// URLs.
+ bool bypass_redirect_checks = false;
+
// The new referrer policy that should be obeyed if there are
// subsequent redirects.
ReferrerPolicy new_referrer_policy =
diff --git a/services/network/public/cpp/net_ipc_param_traits.h b/services/network/public/cpp/net_ipc_param_traits.h
--- a/services/network/public/cpp/net_ipc_param_traits.h
+++ b/services/network/public/cpp/net_ipc_param_traits.h
@@ -2,6 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+// This source code is a part of eyeo Chromium SDK.
+// Use of this source code is governed by the GPLv3 that can be found in the
+// components/adblock/LICENSE file.
+
#ifndef SERVICES_NETWORK_PUBLIC_CPP_NET_IPC_PARAM_TRAITS_H_
#define SERVICES_NETWORK_PUBLIC_CPP_NET_IPC_PARAM_TRAITS_H_
@@ -269,6 +273,7 @@ IPC_STRUCT_TRAITS_BEGIN(net::RedirectInfo)
IPC_STRUCT_TRAITS_MEMBER(new_referrer)
IPC_STRUCT_TRAITS_MEMBER(insecure_scheme_was_upgraded)
IPC_STRUCT_TRAITS_MEMBER(is_signed_exchange_fallback_redirect)
+ IPC_STRUCT_TRAITS_MEMBER(bypass_redirect_checks)
IPC_STRUCT_TRAITS_MEMBER(new_referrer_policy)
IPC_STRUCT_TRAITS_MEMBER(critical_ch_restart_time)
IPC_STRUCT_TRAITS_END()
diff --git a/third_party/blink/public/mojom/frame/frame.mojom b/third_party/blink/public/mojom/frame/frame.mojom
--- a/third_party/blink/public/mojom/frame/frame.mojom
+++ b/third_party/blink/public/mojom/frame/frame.mojom
@@ -1,6 +1,10 @@
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+//
+// This source code is a part of eyeo Chromium SDK.
+// Use of this source code is governed by the GPLv3 that can be found in the components/adblock/LICENSE file.
+
module blink.mojom;
@@ -923,6 +927,10 @@ interface LocalFrame {
// the given point in the view coordinate space.
PluginActionAt(gfx.mojom.Point location, blink.mojom.PluginActionType action);
+ // https://gitlab.com/eyeo/adblockplus/chromium/issues/35
+ // Request for the renderer to insert user stylesheet.
+ InsertAbpElemhideStylesheet(string stylesheet);
+
// Request to continue running the sequential focus navigation algorithm in
// this frame. |source_frame_token| identifies the frame that issued this
// request. This message is sent when finding the next focusable element would
diff --git a/third_party/blink/public/web/web_document.h b/third_party/blink/public/web/web_document.h
--- a/third_party/blink/public/web/web_document.h
+++ b/third_party/blink/public/web/web_document.h
@@ -28,6 +28,10 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+// This source code is a part of eyeo Chromium SDK.
+// Use of this source code is governed by the GPLv3 that can be found in the
+// components/adblock/LICENSE file.
+
#ifndef THIRD_PARTY_BLINK_PUBLIC_WEB_WEB_DOCUMENT_H_
#define THIRD_PARTY_BLINK_PUBLIC_WEB_WEB_DOCUMENT_H_
@@ -141,6 +145,14 @@ class BLINK_EXPORT WebDocument : public WebNode {
WebCssOrigin = WebCssOrigin::kAuthor,
BackForwardCacheAware = BackForwardCacheAware::kAllow);
+ // Inserts the given CSS source code as a style sheet in the document and
+ // validates it have only expected rules.
+ WebStyleSheetKey InsertAbpElemhideStylesheet(
+ const WebString& source_code,
+ const WebStyleSheetKey* = nullptr,
+ WebCssOrigin = WebCssOrigin::kAuthor,
+ BackForwardCacheAware = BackForwardCacheAware::kAllow);
+
// Removes the CSS which was previously inserted by a call to
// InsertStyleSheet().
void RemoveInsertedStyleSheet(const WebStyleSheetKey&,
diff --git a/third_party/blink/renderer/core/exported/web_document.cc b/third_party/blink/renderer/core/exported/web_document.cc
--- a/third_party/blink/renderer/core/exported/web_document.cc
+++ b/third_party/blink/renderer/core/exported/web_document.cc
@@ -28,6 +28,10 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+// This source code is a part of eyeo Chromium SDK.
+// Use of this source code is governed by the GPLv3 that can be found in the
+// components/adblock/LICENSE file.
+
#include "third_party/blink/public/web/web_document.h"
#include "base/memory/scoped_refptr.h"
@@ -264,6 +268,54 @@ WebStyleSheetKey WebDocument::InsertStyleSheet(
return injection_key;
}
+bool IsValidAbpRule(StyleRuleBase* rule) {
+ if (!rule->IsStyleRule())
+ return false;
+ const auto& props = blink::To<StyleRule>(rule)->Properties();
+ if (props.PropertyCount() != 1)
+ return false;
+ const auto& ref = props.PropertyAt(0);
+ return ref.Id() == CSSPropertyID::kDisplay && ref.IsImportant();
+}
+
+// Should be same as WebDocument::InsertStyleSheet, excluding content
+// validation.
+WebStyleSheetKey WebDocument::InsertAbpElemhideStylesheet(
+ const WebString& source_code,
+ const WebStyleSheetKey* key,
+ WebCssOrigin origin,
+ BackForwardCacheAware back_forward_cache_aware) {
+ Document* document = Unwrap<Document>();
+ DCHECK(document);
+
+ auto* parsed_sheet = MakeGarbageCollected<StyleSheetContents>(
+ MakeGarbageCollected<CSSParserContext>(*document));
+ parsed_sheet->ParseString(source_code);
+ // Rule count is not validated because some selectors can be malformed for
+ // third-party lists. Checking body is valid for all the rules is enough.
+ for (unsigned n = 0; n < parsed_sheet->RuleCount();) {
+ if (IsValidAbpRule(parsed_sheet->RuleAt(n)))
+ ++n;
+ else {
+ parsed_sheet->SetMutable();
+ parsed_sheet->WrapperDeleteRule(n);
+ LOG(WARNING) << "[eyeo] Broken rule";
+ }
+ }
+
+ if (back_forward_cache_aware == BackForwardCacheAware::kPossiblyDisallow) {
+ document->GetFrame()->GetFrameScheduler()->RegisterStickyFeature(
+ SchedulingPolicy::Feature::kInjectedStyleSheet,
+ {SchedulingPolicy::DisableBackForwardCache()});
+ }
+
+ const WebStyleSheetKey& injection_key =
+ key && !key->IsNull() ? *key : GenerateStyleSheetKey();
+ DCHECK(!injection_key.IsEmpty());
+ document->GetStyleEngine().InjectSheet(injection_key, parsed_sheet, origin);
+ return injection_key;
+}
+
void WebDocument::RemoveInsertedStyleSheet(const WebStyleSheetKey& key,
WebCssOrigin origin) {
Unwrap<Document>()->GetStyleEngine().RemoveInjectedSheet(key, origin);
diff --git a/third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc b/third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc
--- a/third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc
@@ -1,6 +1,10 @@
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+//
+// This source code is a part of eyeo Chromium SDK.
+// Use of this source code is governed by the GPLv3 that can be found in the
+// components/adblock/LICENSE file.
#include "third_party/blink/renderer/core/frame/local_frame_mojo_handler.h"
@@ -354,6 +358,14 @@ LocalFrameMojoHandler::LocalFrameMojoHandler(blink::LocalFrame& frame)
WrapWeakPersistent(this)));
}
+void LocalFrameMojoHandler::InsertAbpElemhideStylesheet(
+ const WTF::String& stylesheet) {
+ WebLocalFrameImpl* web_frame = WebLocalFrameImpl::FromFrame(frame_);
+ DCHECK(web_frame);
+ web_frame->GetDocument().InsertAbpElemhideStylesheet(stylesheet, nullptr,
+ WebCssOrigin::kUser);
+}
+
void LocalFrameMojoHandler::Trace(Visitor* visitor) const {
visitor->Trace(frame_);
visitor->Trace(back_forward_cache_controller_host_remote_);
diff --git a/third_party/blink/renderer/core/frame/local_frame_mojo_handler.h b/third_party/blink/renderer/core/frame/local_frame_mojo_handler.h
--- a/third_party/blink/renderer/core/frame/local_frame_mojo_handler.h
+++ b/third_party/blink/renderer/core/frame/local_frame_mojo_handler.h
@@ -1,6 +1,10 @@
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+//
+// This source code is a part of eyeo Chromium SDK.
+// Use of this source code is governed by the GPLv3 that can be found in the
+// components/adblock/LICENSE file.
#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_LOCAL_FRAME_MOJO_HANDLER_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_LOCAL_FRAME_MOJO_HANDLER_H_
@@ -109,6 +113,7 @@ class LocalFrameMojoHandler
void AddMessageToConsole(mojom::blink::ConsoleMessageLevel level,
const WTF::String& message,
bool discard_duplicates) final;
+ void InsertAbpElemhideStylesheet(const WTF::String& stylesheet) final;
void SwapInImmediately() final;
void CheckCompleted() final;
void StopLoading() final;
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.cc
--- a/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.cc
@@ -2,6 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+// This source code is a part of eyeo Chromium SDK.
+// Use of this source code is governed by the GPLv3 that can be found in the
+// components/adblock/LICENSE file.
+
#include "third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.h"
#include <iterator>
@@ -388,7 +392,7 @@ void MojoURLLoaderClient::OnReceiveRedirect(
OnComplete(network::URLLoaderCompletionStatus(net::ERR_ABORTED));
return;
}
- if (!bypass_redirect_checks_ &&
+ if (!bypass_redirect_checks_ && !redirect_info.bypass_redirect_checks &&
!Platform::Current()->IsRedirectSafe(GURL(last_loaded_url_),
redirect_info.new_url)) {
OnComplete(network::URLLoaderCompletionStatus(net::ERR_UNSAFE_REDIRECT));
diff --git a/tools/eyeo/generate_interdiffs.sh b/tools/eyeo/generate_interdiffs.sh
new file mode 100755
--- /dev/null
+++ b/tools/eyeo/generate_interdiffs.sh
@@ -0,0 +1,150 @@
+#!/bin/bash
+
+# This file is part of eyeo Chromium SDK,
+# Copyright (C) 2006-present eyeo GmbH
+# eyeo Chromium SDK is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3 as
+# published by the Free Software Foundation.
+# eyeo Chromium SDK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+# You should have received a copy of the GNU General Public License
+# along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+
+if [ "$1" = "--help" ] || [ "$1" = "-h" ]; then
+ echo "
+ This script generates interdiffs between eyeo Chromium SDK releases, git diff
+ file will be saved in `eyeo_modules/` directory, created if needed.
+ No upstream changes included in diff file.
+ Module interdiffs supported since version 115.
+
+ Usage:
+ generate_interdiffs.sh <eyeo-release-tag> <eyeo-release-tag> <options>
+
+ Options:
+ --full-sdk Generates one diff includes whole eyeo Chromium SDK implementation (include testing & CI files)
+ --all-modules Generates diff files for each module: base, chrome, webview, android-api, android-settings and extension-api
+ --base Generates one diff for base module changes
+ --chrome Generates one diff for Chorme Integration module changes
+ --webview Generates one diff for Android Webview Integration module changes
+ --android-api Generates one diff for Android API module changes
+ --android-settings Generates one diff for Android UI module changes
+ --extension-api Generates one diff for Extension API module changes
+"
+ exit
+fi
+
+OLD_TAG=$1
+NEW_TAG=$2
+OPTIONS=${@:3}
+OPTIONS="${OPTIONS/--all-modules/ -- base --chrome --webview --android-api --android-settings --extension-api}"
+
+if [ -z "$OLD_TAG" ] || [ -z "$NEW_TAG" ]; then
+ echo "
+ Missing arguments!
+ Usage:
+ generate_interdiffs.sh <eyeo-release-tag> <eyeo-release-tag> <options>
+ or see help:
+ generate_interdiffs.sh --help
+"
+ exit
+fi
+
+# git has no diff support for binary files
+# also remove any internal CI files
+EXCLUDE_FILES=("components/resources/adblocking/easylist*"
+ "components/resources/adblocking/exceptionrules*"
+ "components/resources/adblocking/anticv*"
+ ".ci-scripts/*"
+ ".gitlab-ci.yml"
+)
+
+for module in $OPTIONS
+do
+ if [ "$module" = "--base" ]; then
+ SUFFIX="-base-module-branch"
+ elif [ "$module" = "--chrome" ]; then
+ SUFFIX="-base-chrome-module-branch"
+ elif [ "$module" = "--android-api" ]; then
+ SUFFIX="-base-chrome-android-api-module-branch"
+ elif [ "$module" = "--android-settings" ]; then
+ SUFFIX="-base-chrome-android-settings-module-branch"
+ elif [ "$module" = "--extension-api" ]; then
+ SUFFIX="-base-chrome-desktop-module-branch"
+ elif [ "$module" = "--webview" ]; then
+ SUFFIX="-base-webview-module-branch"
+ elif [ "$module" = "--full-sdk" ]; then
+ SUFFIX=""
+ else
+ echo "
+ Unknow option: $module
+ Avaiable options:
+ --full-sdk
+ --all-modules
+ --base
+ --chrome
+ --webview
+ --android-api
+ --android-settings
+ --extension-api
+"
+ exit
+ fi
+
+ repo_dir=$(git rev-parse --show-toplevel)
+ mkdir -p $repo_dir/eyeo_modules/interdiffs
+
+ OLD_TAG_HEAD=$(git rev-parse --verify origin/${OLD_TAG}${SUFFIX} 2>/dev/null)
+ OLD_TAG_PREV=$(git rev-parse --verify origin/${OLD_TAG}${SUFFIX}~1 2>/dev/null)
+ NEW_TAG_HEAD=$(git rev-parse --verify origin/${NEW_TAG}${SUFFIX} 2>/dev/null)
+ NEW_TAG_PREV=$(git rev-parse --verify origin/${NEW_TAG}${SUFFIX}~1 2>/dev/null)
+
+ if [ "$module" = "--full-sdk" ]; then
+ OLD_TAG_HEAD=$(git ls-remote --tags origin | grep -o -e ${OLD_TAG}$)
+ NEW_TAG_HEAD=$(git ls-remote --tags origin | grep -o -e ${NEW_TAG}$)
+ else
+ OLD_TAG_HEAD=$(git rev-parse --verify origin/${OLD_TAG}${SUFFIX} 2>/dev/null)
+ NEW_TAG_HEAD=$(git rev-parse --verify origin/${NEW_TAG}${SUFFIX} 2>/dev/null)
+ fi
+
+ if [ -z "$OLD_TAG_HEAD" ]; then
+ echo "Interdiff modules are not supported for version ${OLD_TAG}"
+ fi
+ if [ -z "$NEW_TAG_HEAD" ]; then
+ echo "Interdiff modules are not supported for version ${NEW_TAG}"
+ fi
+ if [ -z "$OLD_TAG_HEAD" ] || [ -z "$NEW_TAG_HEAD" ]; then
+ echo "Interdiff are supported since version 115"
+ exit
+ fi
+
+ if [ "$module" = "--full-sdk" ]; then
+ # Find lastest upstream commit for given version.
+ OLD_VERSION=$(echo ${OLD_TAG} | cut -d "-" -f3)
+ NEW_VERSION=$(echo ${NEW_TAG} | cut -d "-" -f3)
+ OLD_TAG_PREV=$(git log --no-decorate --all --grep="Publish DEPS for ${OLD_VERSION}" -n 1 --pretty=format:"%h")
+ NEW_TAG_PREV=$(git log --no-decorate --all --grep="Publish DEPS for ${NEW_VERSION}" -n 1 --pretty=format:"%h")
+ else
+ # Take advantage of modules test branches design,
+ # top commit always contain module changes only.
+ OLD_TAG_PREV=$(git rev-parse --verify origin/${OLD_TAG}${SUFFIX}~1 2>/dev/null)
+ NEW_TAG_PREV=$(git rev-parse --verify origin/${NEW_TAG}${SUFFIX}~1 2>/dev/null)
+ fi
+
+ # Create a list of changed files, it's important to create it for each version,
+ # some of files may renamed.
+ OLD_TAG_FILES=$(git diff --name-only $OLD_TAG_HEAD..$OLD_TAG_PREV)
+ NEW_TAG_FILES=$(git diff --name-only $NEW_TAG_HEAD..$NEW_TAG_PREV)
+ # Combine and uniquify.
+ COMBINED_FILES=(`for R in "${OLD_TAG_FILES[@]}" "${NEW_TAG_FILES[@]}" ; do echo "$R" ; done | sort -du`)
+ # Remove files not supported by git diff
+ for del in ${EXCLUDE_FILES[@]}
+ do
+ COMBINED_FILES=("${COMBINED_FILES[@]/$del}")
+ done
+
+ #Create diff in eyeo_modules/interdiffs/
+ git diff ${OLD_TAG_HEAD}..${NEW_TAG_HEAD} -- ${COMBINED_FILES[@]} > $repo_dir/eyeo_modules/interdiffs/${module:2}-$OLD_TAG-$NEW_TAG.diff
+
+done
diff --git a/tools/eyeo/generate_modules.sh b/tools/eyeo/generate_modules.sh
new file mode 100755
--- /dev/null
+++ b/tools/eyeo/generate_modules.sh
@@ -0,0 +1,209 @@
+#!/bin/bash
+
+# This file is part of eyeo Chromium SDK,
+# Copyright (C) 2006-present eyeo GmbH
+# eyeo Chromium SDK is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3 as
+# published by the Free Software Foundation.
+# eyeo Chromium SDK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+# You should have received a copy of the GNU General Public License
+# along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+
+if [ $# -eq 0 ]; then
+ echo "Please provide an eyeo tag argument." \
+ "It is needed to find vanila branch to generate module diffs for."
+ exit 1
+fi
+
+EYEO_RELEASE_TAG=$1
+
+CHROMIUM_TAG=$(echo ${EYEO_RELEASE_TAG} | cut -d "-" -f3)
+TOP_VANILLA_COMMIT=$(git rev-parse --short origin/chromium-${CHROMIUM_TAG}-vanilla-automated~1)
+
+if [[ $(git cat-file -t ${TOP_VANILLA_COMMIT} 2> /dev/null) != "commit" ]]; then
+ echo "Failed to find vanila branch."
+ exit 1
+fi
+
+INITIAL_BRANCH=$(git rev-parse --abbrev-ref HEAD)
+INITIAL_HASH=$(git rev-parse HEAD)
+
+### Remove CI & testing ###
+CI_AND_TESTING_FILES="
+.ci-scripts/
+.gitignore
+.gitlab-ci.yml
+.pre-commit-config.yaml
+.vpython
+build/install-build-deps.sh
+components/eyeo_testing/
+gclient/
+tools/perf/
+"
+
+sed -i '/CI & Testing module start/,/CI & Testing module end/d' components/adblock/core/BUILD.gn
+git add components/adblock/core/BUILD.gn
+
+for path in $CI_AND_TESTING_FILES
+do
+ git restore --source=$TOP_VANILLA_COMMIT --staged --worktree -- $path
+done
+
+git commit -n -m "Remove CI requirements"
+NEGATIVE_CI_TESTING=$(git rev-parse --short HEAD)
+
+### Android UI removal ###
+ANDROID_UI_FILES="
+chrome/android/java/res/xml/main_preferences.xml
+components/adblock/android/README.md
+components/adblock/android/adblock_strings.grd
+components/adblock/android/java/res/drawable-*
+components/adblock/android/java/res/layout/
+components/adblock/android/java/res/xml/
+components/adblock/android/java/src/org/chromium/components/adblock/settings/
+chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/AdblockFilterFragmentTest.java
+chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/AdblockPopupInfoBarTest.java
+chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/AdblockPopupMessageTest.java
+components/adblock/android/translations/
+"
+
+ANDROID_UI_SHARED_FILES="
+chrome/browser/adblock/android/BUILD.gn
+chrome/android/BUILD.gn
+components/adblock/android/BUILD.gn
+"
+
+for path in $ANDROID_UI_SHARED_FILES
+do
+ sed -i '/Android UI module start/,/Android UI module end/d' $path
+ git add $path
+done
+
+for path in $ANDROID_UI_FILES
+do
+ git restore --source=$TOP_VANILLA_COMMIT --staged --worktree -- $path
+done
+
+git commit -n -m "Negative Android UI module"
+NEGATIVE_ANDROID_UI_MODULE_HASH=$(git rev-parse --short HEAD)
+
+### Android Webview removal ###
+WEBVIEW_FILES="
+android_webview/
+components/adblock/android/
+"
+
+for path in $WEBVIEW_FILES
+do
+ git restore --source=$TOP_VANILLA_COMMIT --staged --worktree -- $path
+done
+
+git commit -n -m "Remove Android Webview integration"
+NEGATIVE_WEBVIEW_INTEGRATION=$(git rev-parse --short HEAD)
+
+### Restore components/adblock/android/ as this is shared part between Webview and Android API
+git restore --source=HEAD~1 --staged --worktree -- components/adblock/android/
+git commit -n -m "Restore jni_headers"
+
+### Android API removal ###
+ANDROID_API_FILES="
+components/adblock/android/
+chrome/browser/android/adblock/
+chrome/android/
+"
+
+ANDROID_API_SHARED_FILES="
+chrome/browser/BUILD.gn
+chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
+"
+
+for path in $ANDROID_API_SHARED_FILES
+do
+ sed -i '/Android API module start/,/Android API module end/d' $path
+ git add $path
+done
+
+for path in $ANDROID_API_FILES
+do
+ git restore --source=$TOP_VANILLA_COMMIT --staged --worktree -- $path
+done
+
+git commit -n -m "Negative Android API module"
+NEGATIVE_ANDROID_API_MODULE_HASH=$(git rev-parse --short HEAD)
+
+#### Extension API removal ###
+
+EXTENSION_API_FILES="
+chrome/browser/extensions/
+chrome/common/extensions/
+chrome/test/data/extensions/api_test/
+extensions/browser/extension_event_histogram_value.h
+extensions/browser/extension_function_histogram_value.h
+extensions/common/mojom/api_permission_id.mojom
+tools/metrics/histograms/enums.xml
+tools/typescript/definitions/adblock_private.d.ts
+tools/typescript/definitions/eyeo_filtering_private.d.ts
+"
+
+sed -i '/Extension API module start/,/Extension API module end/d' chrome/test/BUILD.gn
+git add chrome/test/BUILD.gn
+
+for path in $EXTENSION_API_FILES
+do
+ git restore --source=$TOP_VANILLA_COMMIT --staged --worktree -- $path
+done
+
+git commit -n -m "Negative Extension API module"
+NEGATIVE_EXTENSION_API_MODULE_HASH=$(git rev-parse --short HEAD)
+
+### Chrome removal ###
+git restore --source=$TOP_VANILLA_COMMIT --staged --worktree -- chrome
+
+git commit -n -m "Remove Chrome integration"
+NEGATIVE_CHROME_INTEGRATION=$(git rev-parse --short HEAD)
+
+### Create Base Module
+git reset $TOP_VANILLA_COMMIT --soft
+git commit -n -m "eyeo Browser Ad filtering Solution: Base Module" -m "Based on Chromium ${CHROMIUM_TAG}"
+BASE_MODULE_HASH=$(git rev-parse --short HEAD)
+
+### Generate modules
+repo_dir=$(git rev-parse --show-toplevel)
+mkdir -p $repo_dir/eyeo_modules
+
+git format-patch -1 HEAD --stdout > $repo_dir/eyeo_modules/base.patch
+
+git revert -n $NEGATIVE_CHROME_INTEGRATION
+git commit -n -m "eyeo Browser Ad filtering Solution: Chrome Integration Module" -m "Based on Chromium ${CHROMIUM_TAG}" -m "Pre-requisites: eyeo Browser Ad filtering Solution: Base Module"
+git format-patch -1 HEAD --stdout > $repo_dir/eyeo_modules/chrome_integration.patch
+
+git revert -n $NEGATIVE_WEBVIEW_INTEGRATION
+git commit -n -m "eyeo Browser Ad filtering Solution: Android Weview Integration Module" -m "Based on Chromium ${CHROMIUM_TAG}" -m "Pre-requisites: eyeo Browser Ad filtering Solution: Base Module"
+git format-patch -1 HEAD --stdout > $repo_dir/eyeo_modules/webview_integration.patch
+
+### Remove webview integration commit to aviod conflicts on shared files from Webview Integration and Android API
+git reset HEAD~1 --hard
+
+git revert -n $NEGATIVE_ANDROID_API_MODULE_HASH
+git commit -n -m "eyeo Browser Ad filtering Solution: Android API Module" -m "Based on Chromium ${CHROMIUM_TAG}" -m "Pre-requisites: eyeo Browser Ad filtering Solution: Base Module"
+git format-patch -1 HEAD --stdout > $repo_dir/eyeo_modules/android_api.patch
+
+git revert -n $NEGATIVE_ANDROID_UI_MODULE_HASH
+git commit -n -m "eyeo Browser Ad filtering Solution: Android Settings UI Module" -m "Based on Chromium ${CHROMIUM_TAG}" -m "Pre-requisites: eyeo Browser Ad filtering Solution: Base Module and Android API Module"
+git format-patch -1 HEAD --stdout > $repo_dir/eyeo_modules/android_settings.patch
+
+git revert -n $NEGATIVE_EXTENSION_API_MODULE_HASH
+git commit -n -m "eyeo Browser Ad filtering Solution: Extension API Module" -m "Based on Chromium ${CHROMIUM_TAG}" -m "Pre-requisites: eyeo Browser Ad filtering Solution: Base Module"
+git format-patch -1 HEAD --stdout > $repo_dir/eyeo_modules/extension_api.patch
+
+git revert -n $NEGATIVE_CI_TESTING
+git commit -n -m "eyeo Browser Ad filtering Solution: CI & testing module"
+git format-patch -1 HEAD --stdout > $repo_dir/eyeo_modules/ci_and_testing.patch
+
+### Recover HEAD & branch after script - usefull for local runs
+#git checkout $INITIAL_HASH
+#git branch -D $INITIAL_BRANCH
+#git checkout -b $INITIAL_BRANCH
diff --git a/tools/eyeo/snippets_deps.py b/tools/eyeo/snippets_deps.py
new file mode 100644
--- /dev/null
+++ b/tools/eyeo/snippets_deps.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env python3
+
+# This file is part of eyeo Chromium SDK,
+# Copyright (C) 2006-present eyeo GmbH
+#
+# eyeo Chromium SDK is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3 as
+# published by the Free Software Foundation.
+#
+# eyeo Chromium SDK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
+
+import argparse
+import os.path
+
+# This class reads the dependencies.jst file distributed with snippets library
+# and extracts from it the code which is required to support xpath3 snippet filters.
+# The extracted code is copied into the location pointed out by output_file argument.
+class PrepareXpath3Dep:
+ def __init__(self, args):
+ self.input_file = args.input_dir + "/dependencies.jst"
+ self.output_file = args.output_file
+
+ def run(self):
+ # Create file so it exists for sure
+ with open(self.output_file, 'w', encoding="utf8") as out_file:
+ out_file.writelines([])
+ if os.path.exists(self.input_file):
+ print("Copying xpath3 deps code from %s to %s"%(self.input_file, self.output_file))
+ lines_to_write = []
+ start_tag = "/**! Start hide-if-matches-xpath3 dependency !**/"
+ end_tag = "/**! End hide-if-matches-xpath3 dependency !**/"
+ between_tags = False
+ with open(self.input_file, encoding="utf8") as in_file:
+ for line in in_file:
+ if line.strip() == start_tag:
+ between_tags = True
+ continue
+ if line.strip() == end_tag:
+ between_tags = False
+ continue
+ if between_tags:
+ lines_to_write.append(line)
+ out_file.writelines(lines_to_write)
+ in_file.close()
+ out_file.close()
+
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser(
+ description='Prepares snippets xpath3 dependency')
+
+ parser.add_argument('input_dir', help='directory where dependencies.jst can be found')
+ parser.add_argument('output_file', help='output file where to copy content parsed from dependencies.jst')
+
+ main = PrepareXpath3Dep(parser.parse_args())
+ main.run()
diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ids.spec
--- a/tools/gritsettings/resource_ids.spec
+++ b/tools/gritsettings/resource_ids.spec
@@ -2,6 +2,10 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
+# This source code is a part of eyeo Chromium SDK.
+# Use of this source code is governed by the GPLv3 that can be found in the
+# components/adblock/LICENSE file.
+#
# This file is used to assign starting resource ids for resources and strings
# used by Chromium. This is done to ensure that resource ids are unique
# across all the grd files. If you are adding a new grd file, please add
@@ -731,6 +735,10 @@
"META": {"sizes": {"includes": [10]}},
"includes": [5460],
},
+ "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/adblock_internals/resources.grd": {
+ "META": {"sizes": {"includes": [10]}},
+ "includes": [5480],
+ },
# END chrome/ WebUI resources section
# START chrome/ miscellaneous section.
--