diff --git a/DEPS b/DEPS
index 4e0cce6..3a5ba7b 100644
--- a/DEPS
+++ b/DEPS
@@ -228,11 +228,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': 'd7437eec2e9718eda8c8f5cb94ddcef1005c0bfb',
+  'skia_revision': '6bf9189ae55401fcfaaadb8ee7bcc8103f87ddfe',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': 'd5bc1bb5517606fbd131b29cc36170c00d58da13',
+  'v8_revision': '4ca9099406f256e1582a6e7ddc17d3162d569fec',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
@@ -240,15 +240,15 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': 'a379730191b995d184997764db25dd686c8335ab',
+  'angle_revision': '61517a160f016bcc4922fe49255405986ccf8182',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
-  'swiftshader_revision': '44660405ea6ce02683617cc483aecc080499aa27',
+  'swiftshader_revision': 'dcfc0a6e2d8440695e44745126747e4c8aed6cf6',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
-  'pdfium_revision': '6c8cd905587809a0ff299d1edb34fc85bed4c976',
+  'pdfium_revision': 'fdbfb3c44434f3de59d2e23a8dbfeefe52608167',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling BoringSSL
   # and whatever else without interference from each other.
@@ -299,7 +299,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': '4360d3a81d9d484e96562f1291f273ffadcb0a7d',
+  'catapult_revision': '61f0e50fb92a3aea539bf5c22f3708e12e90dd17',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -347,11 +347,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'dawn_revision': 'ccc4766e76ecaf3424f6cb74aa8ccee80800464b',
+  'dawn_revision': '8975f1656de5af1044e5d15bb0a5f40d644ffe04',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'quiche_revision': 'e39688aa0c2ecbed7d2bd9a5ad10be5e2e8932fb',
+  'quiche_revision': '3a9a2464c5d09875d2214300fab53145df81ee47',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ios_webkit
   # and whatever else without interference from each other.
@@ -767,7 +767,7 @@
     'packages': [
       {
           'package': 'chromium/third_party/androidx',
-          'version': 'lo5p1oo8yhPj2rUylGmKm2aBBQvNarY6hgj1tYbctQkC',
+          'version': 'GpWCGdjX5wF8nbSbZY5hqlRfEA-DL6lRgj-iN2tjTXIC',
       },
     ],
     'condition': 'checkout_android',
@@ -1372,7 +1372,7 @@
     Var('chromium_git') + '/external/github.com/cisco/openh264' + '@' + '3dd5b80bc4f172dd82925bb259cb7c82348409c5',
 
   'src/third_party/openscreen/src':
-    Var('chromium_git') + '/openscreen' + '@' + '0a7aefe8037a448db69f9314b360e3e10f4cab74',
+    Var('chromium_git') + '/openscreen' + '@' + 'b9be95eef079e1c04520a05a3bd057bec59b77a3',
 
   'src/third_party/openxr/src': {
     'url': Var('chromium_git') + '/external/github.com/KhronosGroup/OpenXR-SDK' + '@' + 'bf21ccb1007bb531b45d9978919a56ea5059c245',
@@ -1389,7 +1389,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' + '70e408c9bc8610ab9a8484b2ed91461d8416166e',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' + '171e281775914c1c427b926666bf1c0f8070e762',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1478,7 +1478,7 @@
       'packages': [
           {
               'package': 'fuchsia/third_party/aemu/linux-amd64',
-              'version': 'pmyID7CW-4NsGYefh7NnE4xj3AbHD5lu9r5GLO3rzMYC'
+              'version': 'DxCnfY154Xn-UYrZ-GF8FewyGfo29cYHkKdDMgpEHJkC'
           },
       ],
       'condition': 'host_os == "linux" and checkout_fuchsia',
@@ -1618,10 +1618,10 @@
     Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + '827cad9e402b63bbe38787456115bcb681a8a152',
 
   'src/third_party/webgpu-cts/src':
-    Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + 'c53abb766db4f9a1369b084b985319379b74f1b7',
+    Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '6881e0cd401986aa80bdbf132ca4ab434bc1d7d7',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '53adc7b1c8b200bd3227fb06157a56bff09471bb',
+    Var('webrtc_git') + '/src.git' + '@' + 'bdf35afa3992d8208a1744d64559225d56718fe7',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1682,7 +1682,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@0373519cba23d48901497d77251cb5f7e9df5cfa',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@499fb7ba4c37e93cf8cbe4c1ade18d38e926578c',
     'condition': 'checkout_src_internal',
   },
 
diff --git a/WATCHLISTS b/WATCHLISTS
index d2757f7..7be716f 100644
--- a/WATCHLISTS
+++ b/WATCHLISTS
@@ -90,6 +90,9 @@
       'filepath': 'chrome/android/java/src/org/chromium/chrome/browser/toolbar/' \
                   '|chrome/browser/ui/android/toolbar/'
     },
+    'android_toolbar_deps': {
+      'filepath': 'chrome/android/java/src/org/chromium/chrome/browser/toolbar/DEPS'
+    },
     'android_uma_settings': {
       'filepath': 'chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferencesManager.java|'\
                   'chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java|'\
@@ -2115,8 +2118,8 @@
     'android_studio': ['wnwen+watch@chromium.org',
                        'nyquist+watch@chromium.org'],
     'android_tab': ['dtrainor+watch@chromium.org'],
-    'android_toolbar': ['jinsukkim+watch@chromium.org',
-                        'hanxi+watch@chromium.org'],
+    'android_toolbar': ['hanxi+watch@chromium.org'],
+    'android_toolbar_deps': ['jinsukkim+watch@chromium.org'],
     'android_uma_settings': ['asvitkine+watch@chromium.org',
                              'gayane+watch@chromium.org'],
     'android_webapk': ['dominickn+watch-webapk@chromium.org',
diff --git a/android_webview/test/BUILD.gn b/android_webview/test/BUILD.gn
index 6700b18..28b5c56b 100644
--- a/android_webview/test/BUILD.gn
+++ b/android_webview/test/BUILD.gn
@@ -2,6 +2,7 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import("//android_webview/system_webview_apk_tmpl.gni")
 import("//android_webview/variables.gni")
 import("//build/config/android/rules.gni")
 import("//build/config/python.gni")
@@ -27,6 +28,18 @@
   data = [ "//android_webview/tools/cts_config/" ]
 }
 
+script_test("crx_smoke_tests") {
+  script =
+      "//android_webview/test/components/run_webview_component_smoketest.py"
+  run_under_python2 = true
+  args = [ "--webview-package-name=$system_webview_package_name" ]
+  data = [ "//android_webview/test/components/crx_smoke_tests.py" ]
+  data_deps = [
+    "//android_webview:system_webview_apk",
+    "//android_webview/tools/system_webview_shell:system_webview_shell_apk",
+  ]
+}
+
 script_test("system_webview_wpt") {
   script = "//testing/scripts/run_android_wpt.py"
   args = [
diff --git a/android_webview/test/components/crx_smoke_tests.py b/android_webview/test/components/crx_smoke_tests.py
new file mode 100644
index 0000000..3484aa2
--- /dev/null
+++ b/android_webview/test/components/crx_smoke_tests.py
@@ -0,0 +1,161 @@
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import json
+import logging
+import os
+import posixpath
+import sys
+import time
+import zipfile
+
+from collections import namedtuple
+from py_utils.tempfile_ext import NamedTemporaryDirectory
+from telemetry.testing import serially_executed_browser_test_case
+
+logger = logging.getLogger(__name__)
+ComponentData = namedtuple('ComponentData', ['component_id', 'browser_args'])
+_SET_CONDITION_HTML = """
+var test_harness = {}
+test_harness.test_succeeded = true;
+window.webview_smoke_test_harness = test_harness;
+"""
+_COMPONENT_NAME_TO_DATA = {
+  'WebViewAppsPackageNamesAllowlist': ComponentData(
+      component_id = 'aemllinfpjdgcldgaelcgakpjmaekbai',
+      browser_args = [
+          '--enable-features=WebViewAppsPackageNamesAllowlist',
+          '--vmodule=*_allowlist_component_*=2'])
+}
+
+class WebViewCrxSmokeTests(
+    serially_executed_browser_test_case.SeriallyExecutedBrowserTestCase):
+
+  _device = None
+  _device_components_dir = None
+
+  @classmethod
+  def Name(cls):
+    return 'webview_crx_smoke_tests'
+
+  @classmethod
+  def SetBrowserOptions(cls, finder_options):
+    """Sets browser command line arguments
+
+    Args:
+      finder_options: Command line arguments for starting the browser"""
+    finder_options_copy = finder_options.Copy()
+    finder_options_copy.browser_options.AppendExtraBrowserArgs(
+        _COMPONENT_NAME_TO_DATA[finder_options.component_name].browser_args)
+
+    super(WebViewCrxSmokeTests, cls).SetBrowserOptions(finder_options_copy)
+    cls._device = cls._browser_to_create._platform_backend.device
+
+  @classmethod
+  def StartBrowser(cls):
+    """Start browser and wait for it's pid to appear in the processes list"""
+    super(WebViewCrxSmokeTests, cls).StartBrowser()
+
+    # Wait until the browser is up and running
+    for _ in range(60):
+      logger.info('Waiting 1 second for the browser to start running')
+      time.sleep(1)
+      if cls.browser._browser_backend.processes:
+        break
+
+    assert cls.browser._browser_backend.processes, 'Browser did not start'
+    logger.info('Browser is running')
+
+  @classmethod
+  def SetUpProcess(cls):
+    """Prepares the test device"""
+    super(WebViewCrxSmokeTests, cls).SetUpProcess()
+    assert cls._finder_options.crx_file, '--crx-file is required'
+    assert cls._finder_options.component_name, '--component-name is required'
+    assert cls._finder_options.webview_package_name, (
+        '--webview-package-name is required')
+
+    cls._device_components_dir = ('/data/data/%s/app_webview/components' %
+                                  cls._finder_options.webview_package_name)
+    cls.SetBrowserOptions(cls._finder_options)
+    cls._MaybeClearOutComponentsDir()
+    component_id = _COMPONENT_NAME_TO_DATA.get(
+        cls._finder_options.component_name).component_id
+    with zipfile.ZipFile(cls._finder_options.crx_file) as crx_archive, \
+        NamedTemporaryDirectory() as tmp_dir,                          \
+        crx_archive.open('manifest.json') as manifest:
+      crx_device_dir = posixpath.join(
+          cls._device_components_dir, 'cps',
+          component_id, '1_%s' % json.loads(manifest.read())['version'])
+
+      try:
+        # Create directory on the test device for the CRX files
+        logger.info('Creating directory %r on device' % crx_device_dir)
+        output = cls._device.RunShellCommand(
+            ['mkdir', '-p', crx_device_dir])
+        logger.debug('Recieved the following output from adb: %s' % output)
+      except Exception as e:
+        logger.exception('Exception %r was raised' % str(e))
+        raise
+
+      # Move CRX files to the device directory
+      crx_archive.extractall(tmp_dir)
+      cls._MoveNewCrxToDevice(tmp_dir, crx_device_dir)
+
+    # Start the browser after the device is in a clean state and the CRX
+    # files are loaded onto the device
+    cls.StartBrowser()
+
+  @classmethod
+  def _MoveNewCrxToDevice(cls, src_dir, crx_device_dir):
+    """Pushes the CRX files onto the test device
+
+    Args:
+      src_dir: Source directory containing CRX files
+      crx_device_dir: Destination directory for CRX files on the test device"""
+
+    for f in os.listdir(src_dir):
+      src_path = os.path.join(src_dir, f)
+      dest_path = posixpath.join(crx_device_dir, f)
+      assert os.path.isfile(src_path), '%r is not a file' % src_path
+      logger.info('Pushing %r to %r' % (src_path, dest_path))
+      cls._device.adb.Push(src_path, dest_path)
+
+  @classmethod
+  def _MaybeClearOutComponentsDir(cls):
+    """Clears out CRX files on test device so that
+    the test starts with a clean state """
+    try:
+      output = cls._device.RemovePath(cls._device_components_dir,
+                                      recursive=True,
+                                      force=True)
+      logger.debug('Recieved the following output from adb: %s' % output)
+    except Exception as e:
+      logger.exception('Exception %r was raised' % str(e))
+      raise
+
+  @classmethod
+  def AddCommandlineArgs(cls, parser):
+    """Adds test suite specific command line arguments"""
+    parser.add_option('--crx-file', action='store', help='Path to CRX file')
+    parser.add_option('--component-name', action='store', help='Component name',
+                      choices=_COMPONENT_NAME_TO_DATA.keys())
+    parser.add_option('--webview-package-name', action='store',
+                      help='WebView package name')
+
+  def Test_run_webview_smoke_test(self):
+    """Test waits for a javascript condition to be set on the WebView shell"""
+    browser_tab = self.browser.tabs[0]
+    browser_tab.action_runner.Navigate(
+        'about:blank', script_to_evaluate_on_commit=_SET_CONDITION_HTML)
+
+    # Wait 5 minutes for the javascript condition. If the condition is not
+    # set within 5 minutes then an exception will be raised which will cause
+    # the test to fail.
+    browser_tab.action_runner.WaitForJavaScriptCondition(
+        'window.webview_smoke_test_harness.test_succeeded', timeout=300)
+
+
+def load_tests(*_):
+  return serially_executed_browser_test_case.LoadAllTestsInModule(sys.modules[__name__])
diff --git a/android_webview/test/components/run_webview_component_smoketest.py b/android_webview/test/components/run_webview_component_smoketest.py
new file mode 100755
index 0000000..f4b8675f
--- /dev/null
+++ b/android_webview/test/components/run_webview_component_smoketest.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env vpython
+
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+""" Runs component smoketests for WebView """
+
+import argparse
+import os
+import sys
+
+SRC_DIR = os.path.join(os.path.dirname(__file__),
+                       os.pardir,
+                       os.pardir,
+                       os.pardir)
+PERF_DIR = os.path.join(SRC_DIR, 'tools', 'perf')
+PY_UTILS_DIR = os.path.join(
+    SRC_DIR, 'third_party', 'catapult', 'common', 'py_utils')
+
+if PERF_DIR not in sys.path:
+  sys.path.append(PERF_DIR)
+
+if PY_UTILS_DIR not in sys.path:
+  sys.path.append(PY_UTILS_DIR)
+
+from chrome_telemetry_build import chromium_config
+from core import path_util
+
+path_util.AddTelemetryToPath()
+
+from telemetry.testing import browser_test_runner
+
+def main(args):
+  config = chromium_config.ChromiumConfig(
+      top_level_dir=os.path.dirname(__file__),
+      benchmark_dirs=[os.path.dirname(__file__)])
+  return browser_test_runner.Run(config, args)
+
+
+if __name__ == '__main__':
+  sys.exit(main(sys.argv[1:]))
diff --git a/android_webview/test/components/run_webview_component_smoketest.pydeps b/android_webview/test/components/run_webview_component_smoketest.pydeps
new file mode 100644
index 0000000..82f68b7
--- /dev/null
+++ b/android_webview/test/components/run_webview_component_smoketest.pydeps
@@ -0,0 +1,361 @@
+# Generated by running:
+#   build/print_python_deps.py --output android_webview/test/components/run_webview_component_smoketest.pydeps --gn-paths android_webview/test/components/run_webview_component_smoketest.py
+//android_webview/test/components/run_webview_component_smoketest.py
+//build/android/pylib/__init__.py
+//build/android/pylib/constants/__init__.py
+//build/android/pylib/constants/host_paths.py
+//components/variations/service/generate_ui_string_overrider.py
+//third_party/catapult/common/py_trace_event/py_trace_event/__init__.py
+//third_party/catapult/common/py_trace_event/py_trace_event/trace_event.py
+//third_party/catapult/common/py_trace_event/py_trace_event/trace_event_impl/__init__.py
+//third_party/catapult/common/py_trace_event/py_trace_event/trace_event_impl/decorators.py
+//third_party/catapult/common/py_trace_event/py_trace_event/trace_event_impl/log.py
+//third_party/catapult/common/py_trace_event/py_trace_event/trace_event_impl/meta_class.py
+//third_party/catapult/common/py_trace_event/py_trace_event/trace_event_impl/multiprocessing_shim.py
+//third_party/catapult/common/py_trace_event/py_trace_event/trace_event_impl/perfetto_proto_classes.py
+//third_party/catapult/common/py_trace_event/py_trace_event/trace_event_impl/perfetto_trace_writer.py
+//third_party/catapult/common/py_trace_event/py_trace_event/trace_time.py
+//third_party/catapult/common/py_trace_event/third_party/protobuf/encoder.py
+//third_party/catapult/common/py_trace_event/third_party/protobuf/wire_format.py
+//third_party/catapult/common/py_utils/py_utils/__init__.py
+//third_party/catapult/common/py_utils/py_utils/atexit_with_log.py
+//third_party/catapult/common/py_utils/py_utils/binary_manager.py
+//third_party/catapult/common/py_utils/py_utils/camel_case.py
+//third_party/catapult/common/py_utils/py_utils/cloud_storage.py
+//third_party/catapult/common/py_utils/py_utils/cloud_storage_global_lock.py
+//third_party/catapult/common/py_utils/py_utils/constants/__init__.py
+//third_party/catapult/common/py_utils/py_utils/constants/exit_codes.py
+//third_party/catapult/common/py_utils/py_utils/dependency_util.py
+//third_party/catapult/common/py_utils/py_utils/discover.py
+//third_party/catapult/common/py_utils/py_utils/exc_util.py
+//third_party/catapult/common/py_utils/py_utils/file_util.py
+//third_party/catapult/common/py_utils/py_utils/lock.py
+//third_party/catapult/common/py_utils/py_utils/logging_util.py
+//third_party/catapult/common/py_utils/py_utils/modules_util.py
+//third_party/catapult/common/py_utils/py_utils/retry_util.py
+//third_party/catapult/common/py_utils/py_utils/tempfile_ext.py
+//third_party/catapult/common/py_utils/py_utils/ts_proxy_server.py
+//third_party/catapult/common/py_utils/py_utils/webpagereplay_go_server.py
+//third_party/catapult/dependency_manager/dependency_manager/__init__.py
+//third_party/catapult/dependency_manager/dependency_manager/archive_info.py
+//third_party/catapult/dependency_manager/dependency_manager/base_config.py
+//third_party/catapult/dependency_manager/dependency_manager/cloud_storage_info.py
+//third_party/catapult/dependency_manager/dependency_manager/dependency_info.py
+//third_party/catapult/dependency_manager/dependency_manager/dependency_manager_util.py
+//third_party/catapult/dependency_manager/dependency_manager/exceptions.py
+//third_party/catapult/dependency_manager/dependency_manager/local_path_info.py
+//third_party/catapult/dependency_manager/dependency_manager/manager.py
+//third_party/catapult/dependency_manager/dependency_manager/uploader.py
+//third_party/catapult/devil/devil/__init__.py
+//third_party/catapult/devil/devil/android/__init__.py
+//third_party/catapult/devil/devil/android/apk_helper.py
+//third_party/catapult/devil/devil/android/app_ui.py
+//third_party/catapult/devil/devil/android/battery_utils.py
+//third_party/catapult/devil/devil/android/constants/__init__.py
+//third_party/catapult/devil/devil/android/constants/chrome.py
+//third_party/catapult/devil/devil/android/constants/file_system.py
+//third_party/catapult/devil/devil/android/cpu_temperature.py
+//third_party/catapult/devil/devil/android/crash_handler.py
+//third_party/catapult/devil/devil/android/decorators.py
+//third_party/catapult/devil/devil/android/device_denylist.py
+//third_party/catapult/devil/devil/android/device_errors.py
+//third_party/catapult/devil/devil/android/device_signal.py
+//third_party/catapult/devil/devil/android/device_temp_file.py
+//third_party/catapult/devil/devil/android/device_utils.py
+//third_party/catapult/devil/devil/android/flag_changer.py
+//third_party/catapult/devil/devil/android/forwarder.py
+//third_party/catapult/devil/devil/android/install_commands.py
+//third_party/catapult/devil/devil/android/logcat_monitor.py
+//third_party/catapult/devil/devil/android/md5sum.py
+//third_party/catapult/devil/devil/android/ndk/__init__.py
+//third_party/catapult/devil/devil/android/ndk/abis.py
+//third_party/catapult/devil/devil/android/perf/__init__.py
+//third_party/catapult/devil/devil/android/perf/cache_control.py
+//third_party/catapult/devil/devil/android/perf/perf_control.py
+//third_party/catapult/devil/devil/android/perf/surface_stats_collector.py
+//third_party/catapult/devil/devil/android/perf/thermal_throttle.py
+//third_party/catapult/devil/devil/android/sdk/__init__.py
+//third_party/catapult/devil/devil/android/sdk/aapt.py
+//third_party/catapult/devil/devil/android/sdk/adb_wrapper.py
+//third_party/catapult/devil/devil/android/sdk/build_tools.py
+//third_party/catapult/devil/devil/android/sdk/bundletool.py
+//third_party/catapult/devil/devil/android/sdk/intent.py
+//third_party/catapult/devil/devil/android/sdk/keyevent.py
+//third_party/catapult/devil/devil/android/sdk/shared_prefs.py
+//third_party/catapult/devil/devil/android/sdk/split_select.py
+//third_party/catapult/devil/devil/android/sdk/version_codes.py
+//third_party/catapult/devil/devil/android/settings.py
+//third_party/catapult/devil/devil/android/tools/__init__.py
+//third_party/catapult/devil/devil/android/tools/provision_devices.py
+//third_party/catapult/devil/devil/android/tools/script_common.py
+//third_party/catapult/devil/devil/android/tools/system_app.py
+//third_party/catapult/devil/devil/android/tools/video_recorder.py
+//third_party/catapult/devil/devil/android/valgrind_tools/__init__.py
+//third_party/catapult/devil/devil/android/valgrind_tools/base_tool.py
+//third_party/catapult/devil/devil/base_error.py
+//third_party/catapult/devil/devil/constants/__init__.py
+//third_party/catapult/devil/devil/constants/exit_codes.py
+//third_party/catapult/devil/devil/devil_env.py
+//third_party/catapult/devil/devil/utils/__init__.py
+//third_party/catapult/devil/devil/utils/cmd_helper.py
+//third_party/catapult/devil/devil/utils/geometry.py
+//third_party/catapult/devil/devil/utils/host_utils.py
+//third_party/catapult/devil/devil/utils/lazy/__init__.py
+//third_party/catapult/devil/devil/utils/lazy/weak_constant.py
+//third_party/catapult/devil/devil/utils/logging_common.py
+//third_party/catapult/devil/devil/utils/lsusb.py
+//third_party/catapult/devil/devil/utils/parallelizer.py
+//third_party/catapult/devil/devil/utils/reraiser_thread.py
+//third_party/catapult/devil/devil/utils/reset_usb.py
+//third_party/catapult/devil/devil/utils/run_tests_helper.py
+//third_party/catapult/devil/devil/utils/timeout_retry.py
+//third_party/catapult/devil/devil/utils/watchdog_timer.py
+//third_party/catapult/devil/devil/utils/zip_utils.py
+//third_party/catapult/systrace/systrace/__init__.py
+//third_party/catapult/systrace/systrace/trace_result.py
+//third_party/catapult/systrace/systrace/tracing_agents/__init__.py
+//third_party/catapult/systrace/systrace/tracing_agents/atrace_agent.py
+//third_party/catapult/systrace/systrace/util.py
+//third_party/catapult/telemetry/telemetry/__init__.py
+//third_party/catapult/telemetry/telemetry/benchmark.py
+//third_party/catapult/telemetry/telemetry/compat_mode_options.py
+//third_party/catapult/telemetry/telemetry/core/__init__.py
+//third_party/catapult/telemetry/telemetry/core/android_action_runner.py
+//third_party/catapult/telemetry/telemetry/core/android_platform.py
+//third_party/catapult/telemetry/telemetry/core/cros_interface.py
+//third_party/catapult/telemetry/telemetry/core/debug_data.py
+//third_party/catapult/telemetry/telemetry/core/exceptions.py
+//third_party/catapult/telemetry/telemetry/core/fuchsia_interface.py
+//third_party/catapult/telemetry/telemetry/core/local_server.py
+//third_party/catapult/telemetry/telemetry/core/memory_cache_http_server.py
+//third_party/catapult/telemetry/telemetry/core/network_controller.py
+//third_party/catapult/telemetry/telemetry/core/os_version.py
+//third_party/catapult/telemetry/telemetry/core/platform.py
+//third_party/catapult/telemetry/telemetry/core/tracing_controller.py
+//third_party/catapult/telemetry/telemetry/core/util.py
+//third_party/catapult/telemetry/telemetry/decorators.py
+//third_party/catapult/telemetry/telemetry/internal/__init__.py
+//third_party/catapult/telemetry/telemetry/internal/actions/__init__.py
+//third_party/catapult/telemetry/telemetry/internal/actions/action_runner.py
+//third_party/catapult/telemetry/telemetry/internal/actions/drag.py
+//third_party/catapult/telemetry/telemetry/internal/actions/javascript_click.py
+//third_party/catapult/telemetry/telemetry/internal/actions/key_event.py
+//third_party/catapult/telemetry/telemetry/internal/actions/load_media.py
+//third_party/catapult/telemetry/telemetry/internal/actions/media_action.py
+//third_party/catapult/telemetry/telemetry/internal/actions/mouse_click.py
+//third_party/catapult/telemetry/telemetry/internal/actions/navigate.py
+//third_party/catapult/telemetry/telemetry/internal/actions/page_action.py
+//third_party/catapult/telemetry/telemetry/internal/actions/pinch.py
+//third_party/catapult/telemetry/telemetry/internal/actions/play.py
+//third_party/catapult/telemetry/telemetry/internal/actions/repaint_continuously.py
+//third_party/catapult/telemetry/telemetry/internal/actions/repeatable_scroll.py
+//third_party/catapult/telemetry/telemetry/internal/actions/scroll.py
+//third_party/catapult/telemetry/telemetry/internal/actions/scroll_bounce.py
+//third_party/catapult/telemetry/telemetry/internal/actions/scroll_to_element.py
+//third_party/catapult/telemetry/telemetry/internal/actions/seek.py
+//third_party/catapult/telemetry/telemetry/internal/actions/swipe.py
+//third_party/catapult/telemetry/telemetry/internal/actions/tap.py
+//third_party/catapult/telemetry/telemetry/internal/actions/utils.py
+//third_party/catapult/telemetry/telemetry/internal/actions/wait.py
+//third_party/catapult/telemetry/telemetry/internal/app/__init__.py
+//third_party/catapult/telemetry/telemetry/internal/app/android_app.py
+//third_party/catapult/telemetry/telemetry/internal/app/possible_app.py
+//third_party/catapult/telemetry/telemetry/internal/backends/__init__.py
+//third_party/catapult/telemetry/telemetry/internal/backends/android_app_backend.py
+//third_party/catapult/telemetry/telemetry/internal/backends/android_browser_backend_settings.py
+//third_party/catapult/telemetry/telemetry/internal/backends/app_backend.py
+//third_party/catapult/telemetry/telemetry/internal/backends/browser_backend.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/__init__.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/android_browser_backend.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/android_browser_finder.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/android_minidump_symbolizer.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/chrome_browser_backend.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/chrome_startup_args.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/cros_browser_backend.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/cros_browser_finder.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/cros_browser_with_oobe.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/cros_minidump_symbolizer.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/crx_id.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/desktop_browser_backend.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/desktop_browser_finder.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/desktop_minidump_symbolizer.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/extension_backend.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/fuchsia_browser_backend.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/fuchsia_browser_finder.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/gpu_compositing_checker.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/lacros_browser_backend.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/minidump_finder.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/minidump_symbolizer.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/misc_web_contents_backend.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/oobe.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome/tab_list_backend.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/__init__.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/devtools_client_backend.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/devtools_http.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend_list.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_console.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_log.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_memory.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_page.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_runtime.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_serviceworker.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_storage.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_websocket.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/memory_backend.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/system_info_backend.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/tracing_backend.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/ui_devtools_client_backend.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/websocket.py
+//third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/window_manager_backend.py
+//third_party/catapult/telemetry/telemetry/internal/browser/__init__.py
+//third_party/catapult/telemetry/telemetry/internal/browser/browser.py
+//third_party/catapult/telemetry/telemetry/internal/browser/browser_finder.py
+//third_party/catapult/telemetry/telemetry/internal/browser/browser_finder_exceptions.py
+//third_party/catapult/telemetry/telemetry/internal/browser/browser_info.py
+//third_party/catapult/telemetry/telemetry/internal/browser/browser_interval_profiling_controller.py
+//third_party/catapult/telemetry/telemetry/internal/browser/extension_dict.py
+//third_party/catapult/telemetry/telemetry/internal/browser/extension_page.py
+//third_party/catapult/telemetry/telemetry/internal/browser/extension_to_load.py
+//third_party/catapult/telemetry/telemetry/internal/browser/possible_browser.py
+//third_party/catapult/telemetry/telemetry/internal/browser/tab.py
+//third_party/catapult/telemetry/telemetry/internal/browser/tab_list.py
+//third_party/catapult/telemetry/telemetry/internal/browser/ui_devtools.py
+//third_party/catapult/telemetry/telemetry/internal/browser/user_agent.py
+//third_party/catapult/telemetry/telemetry/internal/browser/web_contents.py
+//third_party/catapult/telemetry/telemetry/internal/forwarders/__init__.py
+//third_party/catapult/telemetry/telemetry/internal/forwarders/android_forwarder.py
+//third_party/catapult/telemetry/telemetry/internal/forwarders/do_nothing_forwarder.py
+//third_party/catapult/telemetry/telemetry/internal/forwarders/forwarder_utils.py
+//third_party/catapult/telemetry/telemetry/internal/forwarders/fuchsia_forwarder.py
+//third_party/catapult/telemetry/telemetry/internal/image_processing/__init__.py
+//third_party/catapult/telemetry/telemetry/internal/image_processing/image_util_numpy_impl.py
+//third_party/catapult/telemetry/telemetry/internal/platform/__init__.py
+//third_party/catapult/telemetry/telemetry/internal/platform/android_device.py
+//third_party/catapult/telemetry/telemetry/internal/platform/android_platform_backend.py
+//third_party/catapult/telemetry/telemetry/internal/platform/cros_device.py
+//third_party/catapult/telemetry/telemetry/internal/platform/desktop_device.py
+//third_party/catapult/telemetry/telemetry/internal/platform/device.py
+//third_party/catapult/telemetry/telemetry/internal/platform/device_finder.py
+//third_party/catapult/telemetry/telemetry/internal/platform/fuchsia_device.py
+//third_party/catapult/telemetry/telemetry/internal/platform/fuchsia_platform_backend.py
+//third_party/catapult/telemetry/telemetry/internal/platform/gpu_device.py
+//third_party/catapult/telemetry/telemetry/internal/platform/gpu_info.py
+//third_party/catapult/telemetry/telemetry/internal/platform/linux_based_platform_backend.py
+//third_party/catapult/telemetry/telemetry/internal/platform/network_controller_backend.py
+//third_party/catapult/telemetry/telemetry/internal/platform/platform_backend.py
+//third_party/catapult/telemetry/telemetry/internal/platform/system_info.py
+//third_party/catapult/telemetry/telemetry/internal/platform/tracing_agent/__init__.py
+//third_party/catapult/telemetry/telemetry/internal/platform/tracing_agent/atrace_tracing_agent.py
+//third_party/catapult/telemetry/telemetry/internal/platform/tracing_agent/chrome_report_events_tracing_agent.py
+//third_party/catapult/telemetry/telemetry/internal/platform/tracing_agent/chrome_return_as_stream_tracing_agent.py
+//third_party/catapult/telemetry/telemetry/internal/platform/tracing_agent/chrome_tracing_agent.py
+//third_party/catapult/telemetry/telemetry/internal/platform/tracing_agent/chrome_tracing_devtools_manager.py
+//third_party/catapult/telemetry/telemetry/internal/platform/tracing_agent/cpu_tracing_agent.py
+//third_party/catapult/telemetry/telemetry/internal/platform/tracing_agent/display_tracing_agent.py
+//third_party/catapult/telemetry/telemetry/internal/platform/tracing_agent/perfetto_tracing_agent.py
+//third_party/catapult/telemetry/telemetry/internal/platform/tracing_agent/telemetry_tracing_agent.py
+//third_party/catapult/telemetry/telemetry/internal/platform/tracing_controller_backend.py
+//third_party/catapult/telemetry/telemetry/internal/results/__init__.py
+//third_party/catapult/telemetry/telemetry/internal/results/artifact_compatibility_wrapper.py
+//third_party/catapult/telemetry/telemetry/internal/results/artifact_logger.py
+//third_party/catapult/telemetry/telemetry/internal/results/gtest_progress_reporter.py
+//third_party/catapult/telemetry/telemetry/internal/results/page_test_results.py
+//third_party/catapult/telemetry/telemetry/internal/results/results_options.py
+//third_party/catapult/telemetry/telemetry/internal/results/story_run.py
+//third_party/catapult/telemetry/telemetry/internal/story_runner.py
+//third_party/catapult/telemetry/telemetry/internal/util/__init__.py
+//third_party/catapult/telemetry/telemetry/internal/util/binary_manager.py
+//third_party/catapult/telemetry/telemetry/internal/util/command_line.py
+//third_party/catapult/telemetry/telemetry/internal/util/exception_formatter.py
+//third_party/catapult/telemetry/telemetry/internal/util/external_modules.py
+//third_party/catapult/telemetry/telemetry/internal/util/file_handle.py
+//third_party/catapult/telemetry/telemetry/internal/util/format_for_logging.py
+//third_party/catapult/telemetry/telemetry/internal/util/global_hooks.py
+//third_party/catapult/telemetry/telemetry/internal/util/local_first_binary_manager.py
+//third_party/catapult/telemetry/telemetry/internal/util/path.py
+//third_party/catapult/telemetry/telemetry/internal/util/ts_proxy_server.py
+//third_party/catapult/telemetry/telemetry/internal/util/webpagereplay_go_server.py
+//third_party/catapult/telemetry/telemetry/page/__init__.py
+//third_party/catapult/telemetry/telemetry/page/cache_temperature.py
+//third_party/catapult/telemetry/telemetry/page/legacy_page_test.py
+//third_party/catapult/telemetry/telemetry/page/shared_page_state.py
+//third_party/catapult/telemetry/telemetry/page/traffic_setting.py
+//third_party/catapult/telemetry/telemetry/project_config.py
+//third_party/catapult/telemetry/telemetry/story/__init__.py
+//third_party/catapult/telemetry/telemetry/story/expectations.py
+//third_party/catapult/telemetry/telemetry/story/shared_state.py
+//third_party/catapult/telemetry/telemetry/story/story.py
+//third_party/catapult/telemetry/telemetry/story/story_filter.py
+//third_party/catapult/telemetry/telemetry/story/story_set.py
+//third_party/catapult/telemetry/telemetry/story/typ_expectations.py
+//third_party/catapult/telemetry/telemetry/testing/__init__.py
+//third_party/catapult/telemetry/telemetry/testing/browser_test_runner.py
+//third_party/catapult/telemetry/telemetry/testing/test_utils.py
+//third_party/catapult/telemetry/telemetry/timeline/__init__.py
+//third_party/catapult/telemetry/telemetry/timeline/atrace_config.py
+//third_party/catapult/telemetry/telemetry/timeline/chrome_trace_category_filter.py
+//third_party/catapult/telemetry/telemetry/timeline/chrome_trace_config.py
+//third_party/catapult/telemetry/telemetry/timeline/system_trace_config.py
+//third_party/catapult/telemetry/telemetry/timeline/tracing_config.py
+//third_party/catapult/telemetry/telemetry/util/__init__.py
+//third_party/catapult/telemetry/telemetry/util/cmd_util.py
+//third_party/catapult/telemetry/telemetry/util/color_histogram.py
+//third_party/catapult/telemetry/telemetry/util/image_util.py
+//third_party/catapult/telemetry/telemetry/util/js_template.py
+//third_party/catapult/telemetry/telemetry/util/rgba_color.py
+//third_party/catapult/telemetry/telemetry/util/screenshot.py
+//third_party/catapult/telemetry/telemetry/util/statistics.py
+//third_party/catapult/telemetry/telemetry/util/wpr_modes.py
+//third_party/catapult/telemetry/telemetry/web_perf/__init__.py
+//third_party/catapult/telemetry/telemetry/web_perf/story_test.py
+//third_party/catapult/telemetry/telemetry/web_perf/timeline_based_measurement.py
+//third_party/catapult/telemetry/telemetry/web_perf/timeline_interaction_record.py
+//third_party/catapult/telemetry/telemetry/wpr/__init__.py
+//third_party/catapult/telemetry/telemetry/wpr/archive_info.py
+//third_party/catapult/telemetry/third_party/png/png.py
+//third_party/catapult/telemetry/third_party/websocket-client/websocket/__init__.py
+//third_party/catapult/telemetry/third_party/websocket-client/websocket/_abnf.py
+//third_party/catapult/telemetry/third_party/websocket-client/websocket/_app.py
+//third_party/catapult/telemetry/third_party/websocket-client/websocket/_core.py
+//third_party/catapult/telemetry/third_party/websocket-client/websocket/_exceptions.py
+//third_party/catapult/telemetry/third_party/websocket-client/websocket/_handshake.py
+//third_party/catapult/telemetry/third_party/websocket-client/websocket/_http.py
+//third_party/catapult/telemetry/third_party/websocket-client/websocket/_logging.py
+//third_party/catapult/telemetry/third_party/websocket-client/websocket/_socket.py
+//third_party/catapult/telemetry/third_party/websocket-client/websocket/_ssl_compat.py
+//third_party/catapult/telemetry/third_party/websocket-client/websocket/_url.py
+//third_party/catapult/telemetry/third_party/websocket-client/websocket/_utils.py
+//third_party/catapult/third_party/typ/typ/__init__.py
+//third_party/catapult/third_party/typ/typ/arg_parser.py
+//third_party/catapult/third_party/typ/typ/artifacts.py
+//third_party/catapult/third_party/typ/typ/expectations_parser.py
+//third_party/catapult/third_party/typ/typ/fakes/__init__.py
+//third_party/catapult/third_party/typ/typ/fakes/host_fake.py
+//third_party/catapult/third_party/typ/typ/host.py
+//third_party/catapult/third_party/typ/typ/json_results.py
+//third_party/catapult/third_party/typ/typ/pool.py
+//third_party/catapult/third_party/typ/typ/printer.py
+//third_party/catapult/third_party/typ/typ/python_2_3_compat.py
+//third_party/catapult/third_party/typ/typ/result_sink.py
+//third_party/catapult/third_party/typ/typ/runner.py
+//third_party/catapult/third_party/typ/typ/stats.py
+//third_party/catapult/third_party/typ/typ/test_case.py
+//third_party/catapult/third_party/typ/typ/version.py
+//third_party/catapult/tracing/tracing/__init__.py
+//third_party/catapult/tracing/tracing/trace_data/__init__.py
+//third_party/catapult/tracing/tracing/trace_data/trace_data.py
+//third_party/catapult/tracing/tracing/value/__init__.py
+//third_party/catapult/tracing/tracing/value/diagnostics/__init__.py
+//third_party/catapult/tracing/tracing/value/diagnostics/reserved_infos.py
+//third_party/catapult/tracing/tracing_project.py
+//tools/json_comment_eater/json_comment_eater.py
+//tools/json_to_struct/element_generator.py
+//tools/json_to_struct/json_to_struct.py
+//tools/json_to_struct/struct_generator.py
+//tools/perf/chrome_telemetry_build/__init__.py
+//tools/perf/chrome_telemetry_build/chromium_config.py
+//tools/perf/core/__init__.py
+//tools/perf/core/path_util.py
+//tools/variations/fieldtrial_to_struct.py
+//tools/variations/fieldtrial_util.py
diff --git a/ash/BUILD.gn b/ash/BUILD.gn
index 06b5c94..5a70048 100644
--- a/ash/BUILD.gn
+++ b/ash/BUILD.gn
@@ -84,6 +84,10 @@
     "accessibility/chromevox/touch_exploration_manager.h",
     "accessibility/default_accessibility_delegate.cc",
     "accessibility/default_accessibility_delegate.h",
+    "accessibility/dictation_nudge.cc",
+    "accessibility/dictation_nudge.h",
+    "accessibility/dictation_nudge_controller.cc",
+    "accessibility/dictation_nudge_controller.h",
     "accessibility/magnifier/docked_magnifier_controller.cc",
     "accessibility/magnifier/docked_magnifier_controller.h",
     "accessibility/magnifier/docked_magnifier_controller.h",
@@ -2061,6 +2065,7 @@
     "accessibility/chromevox/touch_accessibility_enabler_unittest.cc",
     "accessibility/chromevox/touch_exploration_controller_unittest.cc",
     "accessibility/chromevox/touch_exploration_manager_unittest.cc",
+    "accessibility/dictation_nudge_controller_unittest.cc",
     "accessibility/magnifier/docked_magnifier_controller_unittest.cc",
     "accessibility/magnifier/fullscreen_magnifier_controller_unittest.cc",
     "accessibility/magnifier/magnifier_test_utils.cc",
diff --git a/ash/accessibility/accessibility_controller_impl.cc b/ash/accessibility/accessibility_controller_impl.cc
index d9babfb..a3e0e70 100644
--- a/ash/accessibility/accessibility_controller_impl.cc
+++ b/ash/accessibility/accessibility_controller_impl.cc
@@ -13,6 +13,7 @@
 #include "ash/accelerators/accelerator_controller_impl.h"
 #include "ash/accessibility/accessibility_observer.h"
 #include "ash/accessibility/autoclick/autoclick_controller.h"
+#include "ash/accessibility/dictation_nudge_controller.h"
 #include "ash/accessibility/sticky_keys/sticky_keys_controller.h"
 #include "ash/accessibility/switch_access/point_scan_controller.h"
 #include "ash/accessibility/ui/accessibility_highlight_controller.h"
@@ -748,6 +749,9 @@
   Shell::Get()->tablet_mode_controller()->RemoveObserver(this);
   Shell::Get()->session_controller()->RemoveObserver(this);
 
+  // Clean up any child windows and widgets that might be animating out.
+  dictation_nudge_controller_.reset();
+
   for (auto& observer : observers_)
     observer.OnAccessibilityControllerShutdown();
 }
@@ -1254,6 +1258,14 @@
   ToggleDictation();
 }
 
+void AccessibilityControllerImpl::ShowDictationLanguageUpgradedNudge(
+    const std::string& dictation_locale,
+    const std::string& application_locale) {
+  dictation_nudge_controller_ = std::make_unique<DictationNudgeController>(
+      dictation_locale, application_locale);
+  dictation_nudge_controller_->ShowNudge();
+}
+
 void AccessibilityControllerImpl::SilenceSpokenFeedback() {
   if (client_)
     client_->SilenceSpokenFeedback();
@@ -2015,6 +2027,8 @@
       UpdateAccessibilityHighlightingFromPrefs();
       break;
     case FeatureType::kDictation:
+      if (!enabled)
+        dictation_nudge_controller_.reset();
       break;
     case FeatureType::kFloatingMenu:
       if (enabled && always_show_floating_menu_when_enabled_)
diff --git a/ash/accessibility/accessibility_controller_impl.h b/ash/accessibility/accessibility_controller_impl.h
index 6678a4f2..376daa9 100644
--- a/ash/accessibility/accessibility_controller_impl.h
+++ b/ash/accessibility/accessibility_controller_impl.h
@@ -44,6 +44,7 @@
 class AccessibilityEventRewriter;
 class AccessibilityHighlightController;
 class AccessibilityObserver;
+class DictationNudgeController;
 class FloatingAccessibilityController;
 class PointScanController;
 class ScopedBacklightsForcedOff;
@@ -382,6 +383,9 @@
       int point_scan_speed_dips_per_second) override;
   void SetDictationActive(bool is_active) override;
   void ToggleDictationFromSource(DictationToggleSource source) override;
+  void ShowDictationLanguageUpgradedNudge(
+      const std::string& dictation_locale,
+      const std::string& application_locale) override;
   void HandleAutoclickScrollableBoundsFound(
       gfx::Rect& bounds_in_screen) override;
   std::u16string GetBatteryDescription() const override;
@@ -422,6 +426,9 @@
   bool enable_chromevox_volume_slide_gesture() {
     return enable_chromevox_volume_slide_gesture_;
   }
+  DictationNudgeController* GetDictationNudgeControllerForTest() {
+    return dictation_nudge_controller_.get();
+  }
 
  private:
   // Populate |features_| with the feature of the correct type.
@@ -514,6 +521,11 @@
   // Used to force the backlights off to darken the screen.
   std::unique_ptr<ScopedBacklightsForcedOff> scoped_backlights_forced_off_;
 
+  // Used to show the offline dictation language upgrade nudge. This is created
+  // with ShowDictationLanguageUpgradedNudge() and reset at Shutdown() or when
+  // the Dictation feature is disabled.
+  std::unique_ptr<DictationNudgeController> dictation_nudge_controller_;
+
   // True if ChromeVox should enable its volume slide gesture.
   bool enable_chromevox_volume_slide_gesture_ = false;
 
diff --git a/ash/accessibility/dictation_nudge.cc b/ash/accessibility/dictation_nudge.cc
new file mode 100644
index 0000000..28a304d
--- /dev/null
+++ b/ash/accessibility/dictation_nudge.cc
@@ -0,0 +1,71 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ash/accessibility/dictation_nudge.h"
+
+#include "ash/accessibility/dictation_nudge_controller.h"
+#include "ash/resources/vector_icons/vector_icons.h"
+#include "ash/strings/grit/ash_strings.h"
+#include "ash/style/ash_color_provider.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/compositor/layer.h"
+#include "ui/gfx/text_constants.h"
+#include "ui/views/controls/label.h"
+#include "ui/wm/core/coordinate_conversion.h"
+
+namespace ash {
+
+namespace {
+
+// The size of the clipboard icon.
+constexpr int kIconSize = 20;
+
+// The minimum width of the label.
+constexpr int kMinLabelWidth = 200;
+
+// The spacing between the icon and label in the nudge view.
+constexpr int kIconLabelSpacing = 16;
+
+// The padding which separates the nudge's border with its inner contents.
+constexpr int kNudgePadding = 16;
+
+constexpr char kDictationNudgeName[] = "DictationOfflineContextualNudge";
+
+}  // namespace
+
+DictationNudge::DictationNudge(DictationNudgeController* controller)
+    : SystemNudge(kDictationNudgeName), controller_(controller) {}
+
+DictationNudge::~DictationNudge() = default;
+
+std::unique_ptr<views::View> DictationNudge::CreateLabelView() const {
+  std::unique_ptr<views::Label> label = std::make_unique<views::Label>();
+  label->SetPaintToLayer();
+  label->layer()->SetFillsBoundsOpaquely(false);
+  label->SetPosition(
+      gfx::Point(kNudgePadding + kIconSize + kIconLabelSpacing, kNudgePadding));
+
+  label->SetHorizontalAlignment(gfx::HorizontalAlignment::ALIGN_LEFT);
+  label->SetEnabledColor(AshColorProvider::Get()->GetContentLayerColor(
+      AshColorProvider::ContentLayerType::kTextColorPrimary));
+  label->SetAutoColorReadabilityEnabled(false);
+
+  const std::u16string language_name = l10n_util::GetDisplayNameForLocale(
+      controller_->dictation_locale(), controller_->application_locale(),
+      /*is_for_ui=*/true);
+
+  const std::u16string label_text = l10n_util::GetStringFUTF16(
+      IDS_ASH_DICTATION_LANGUAGE_SUPPORTED_OFFLINE_NUDGE, language_name);
+  label->SetText(label_text);
+  label->SetMultiLine(true);
+  label->SizeToFit(kMinLabelWidth);
+
+  return std::move(label);
+}
+
+const gfx::VectorIcon& DictationNudge::GetIcon() const {
+  return kDictationOffNewuiIcon;
+}
+
+}  // namespace ash
diff --git a/ash/accessibility/dictation_nudge.h b/ash/accessibility/dictation_nudge.h
new file mode 100644
index 0000000..2ba5f69
--- /dev/null
+++ b/ash/accessibility/dictation_nudge.h
@@ -0,0 +1,41 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ASH_ACCESSIBILITY_DICTATION_NUDGE_H_
+#define ASH_ACCESSIBILITY_DICTATION_NUDGE_H_
+
+#include <string>
+
+#include "ash/ash_export.h"
+#include "ash/system/tray/system_nudge.h"
+
+namespace ash {
+
+class DictationNudgeController;
+class DictationNudgeControllerTest;
+
+// Implements a contextual nudge for Dictation informing the user
+// that their Dictation language now works offline.
+class ASH_EXPORT DictationNudge : public SystemNudge {
+ public:
+  DictationNudge(DictationNudgeController* controller);
+  DictationNudge(const DictationNudge&) = delete;
+  DictationNudge& operator=(const DictationNudge&) = delete;
+  ~DictationNudge() override;
+
+ protected:
+  // SystemNudge:
+  std::unique_ptr<views::View> CreateLabelView() const override;
+  const gfx::VectorIcon& GetIcon() const override;
+
+ private:
+  friend class DictationNudgeControllerTest;
+
+  // Unowned. The DictationNudgeController owns |this|.
+  const DictationNudgeController* const controller_;
+};
+
+}  // namespace ash
+
+#endif  // ASH_ACCESSIBILITY_DICTATION_NUDGE_H_
diff --git a/ash/accessibility/dictation_nudge_controller.cc b/ash/accessibility/dictation_nudge_controller.cc
new file mode 100644
index 0000000..cbb6380
--- /dev/null
+++ b/ash/accessibility/dictation_nudge_controller.cc
@@ -0,0 +1,23 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ash/accessibility/dictation_nudge_controller.h"
+
+#include "ash/accessibility/dictation_nudge.h"
+
+namespace ash {
+
+DictationNudgeController::DictationNudgeController(
+    const std::string& dictation_locale,
+    const std::string& application_locale)
+    : dictation_locale_(dictation_locale),
+      application_locale_(application_locale) {}
+
+DictationNudgeController::~DictationNudgeController() = default;
+
+std::unique_ptr<SystemNudge> DictationNudgeController::CreateSystemNudge() {
+  return std::make_unique<DictationNudge>(this);
+}
+
+}  // namespace ash
\ No newline at end of file
diff --git a/ash/accessibility/dictation_nudge_controller.h b/ash/accessibility/dictation_nudge_controller.h
new file mode 100644
index 0000000..b5d48491
--- /dev/null
+++ b/ash/accessibility/dictation_nudge_controller.h
@@ -0,0 +1,48 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ASH_ACCESSIBILITY_DICTATION_NUDGE_CONTROLLER_H_
+#define ASH_ACCESSIBILITY_DICTATION_NUDGE_CONTROLLER_H_
+
+#include <string>
+
+#include "ash/ash_export.h"
+#include "ash/system/tray/system_nudge_controller.h"
+
+namespace ash {
+
+// Class that manages showing a nudge explaining that Dictation language has
+// been upgraded in the background to work offline.
+class ASH_EXPORT DictationNudgeController : public SystemNudgeController {
+ public:
+  // Creates the Dictation nudge for the user's preferred recognition locale,
+  // |dictation_locale|. Uses the |application_locale| to get the human-readable
+  // name for the |dictation_locale|.
+  DictationNudgeController(const std::string& dictation_locale,
+                           const std::string& application_locale);
+  DictationNudgeController(const DictationNudgeController&) = delete;
+  DictationNudgeController& operator=(const DictationNudgeController&) = delete;
+  ~DictationNudgeController() override;
+
+  SystemNudge* GetDictationNudgeForTesting() const { return nudge_.get(); }
+
+  std::string dictation_locale() const { return dictation_locale_; }
+  std::string application_locale() const { return application_locale_; }
+
+ protected:
+  // SystemNudgeController:
+  std::unique_ptr<SystemNudge> CreateSystemNudge() override;
+
+ private:
+  // The locale in which the user's speech recognition is processed for
+  // Dictation.
+  const std::string dictation_locale_;
+
+  // The application locale for Chrome OS.
+  const std::string application_locale_;
+};
+
+}  // namespace ash
+
+#endif  // ASH_ACCESSIBILITY_DICTATION_NUDGE_CONTROLLER_H_
diff --git a/ash/accessibility/dictation_nudge_controller_unittest.cc b/ash/accessibility/dictation_nudge_controller_unittest.cc
new file mode 100644
index 0000000..bb8daeb0
--- /dev/null
+++ b/ash/accessibility/dictation_nudge_controller_unittest.cc
@@ -0,0 +1,163 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <string>
+
+#include "ash/accessibility/accessibility_controller_impl.h"
+#include "ash/accessibility/dictation_nudge.h"
+#include "ash/accessibility/dictation_nudge_controller.h"
+#include "ash/shell.h"
+#include "ash/system/tray/system_nudge.h"
+#include "ash/test/ash_test_base.h"
+#include "base/run_loop.h"
+#include "base/strings/utf_string_conversions.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "ui/compositor/layer.h"
+#include "ui/compositor/scoped_animation_duration_scale_mode.h"
+#include "ui/views/controls/label.h"
+#include "ui/views/widget/widget.h"
+#include "ui/views/widget/widget_observer.h"
+
+using ::testing::HasSubstr;
+
+namespace ash {
+namespace {
+
+class NudgeWigetObserver : public views::WidgetObserver {
+ public:
+  NudgeWigetObserver(views::Widget* widget) : widget_(widget) {
+    if (!widget_)
+      return;
+
+    widget_->AddObserver(this);
+  }
+
+  ~NudgeWigetObserver() override { CleanupWidget(); }
+
+  void WaitForClose() {
+    if (!widget_)
+      return;
+    run_loop_ = std::make_unique<base::RunLoop>();
+    run_loop_->Run();
+  }
+
+  // views::WidgetObserver:
+  void OnWidgetClosing(views::Widget* widget) override {
+    CleanupWidget();
+    if (run_loop_)
+      run_loop_->Quit();
+  }
+
+  void CleanupWidget() {
+    if (!widget_)
+      return;
+    widget_->RemoveObserver(this);
+    widget_ = nullptr;
+  }
+
+ private:
+  views::Widget* widget_;
+  std::unique_ptr<base::RunLoop> run_loop_;
+};
+}  // namespace
+
+// Tests for showing the Dictation Nudge from AccessibilityControllerImpl.
+class DictationNudgeControllerTest : public AshTestBase {
+ public:
+  DictationNudgeControllerTest() = default;
+  DictationNudgeControllerTest(const DictationNudgeControllerTest&) = delete;
+  DictationNudgeControllerTest& operator=(const DictationNudgeControllerTest&) =
+      delete;
+  ~DictationNudgeControllerTest() override = default;
+
+  // AshTestBase:
+  void SetUp() override {
+    AshTestBase::SetUp();
+    Shell::Get()->accessibility_controller()->dictation().SetEnabled(true);
+  }
+
+  void ShowDictationLanguageUpgradedNudge(std::string dictation_locale,
+                                          std::string application_locale) {
+    Shell::Get()
+        ->accessibility_controller()
+        ->ShowDictationLanguageUpgradedNudge(dictation_locale,
+                                             application_locale);
+  }
+
+  DictationNudgeController* GetDictationNudgeController() {
+    return Shell::Get()
+        ->accessibility_controller()
+        ->GetDictationNudgeControllerForTest();
+  }
+
+  std::unique_ptr<views::View> GetDictationNudgeLabel(DictationNudge* nudge) {
+    return nudge->CreateLabelView();
+  }
+
+  void WaitForWidgetClose(DictationNudgeController* controller,
+                          SystemNudge* nudge) {
+    views::Widget* nudge_widget = nudge->widget();
+    ASSERT_TRUE(nudge_widget);
+    EXPECT_FALSE(nudge_widget->IsClosed());
+
+    // Slow down the duration of the nudge.
+    ui::ScopedAnimationDurationScaleMode test_duration_mode(
+        ui::ScopedAnimationDurationScaleMode::SLOW_DURATION);
+
+    // Pretend the hide nudge timer has elapsed.
+    NudgeWigetObserver widget_close_observer(nudge_widget);
+    controller->FireHideNudgeTimerForTesting();
+
+    EXPECT_TRUE(nudge_widget->GetLayer()->GetAnimator()->is_animating());
+
+    widget_close_observer.WaitForClose();
+  }
+};
+
+TEST_F(DictationNudgeControllerTest, ShowsAndHidesNudge) {
+  EXPECT_FALSE(GetDictationNudgeController());
+
+  ShowDictationLanguageUpgradedNudge("en-US", "en-US");
+
+  DictationNudgeController* controller = GetDictationNudgeController();
+  ASSERT_TRUE(controller);
+
+  SystemNudge* nudge = controller->GetDictationNudgeForTesting();
+  ASSERT_TRUE(nudge);
+
+  WaitForWidgetClose(controller, nudge);
+}
+
+TEST_F(DictationNudgeControllerTest, SetsLabelBasedOnApplicationLocale) {
+  struct {
+    std::string locale;
+    std::string application_locale;
+    std::string label;
+  } kTestCases[] = {
+      {"en-US", "en-US", "English"},
+      {"es-ES", "en-US", "Spanish"},
+      {"en-US", "es-ES", "inglés"},
+      {"es-ES", "es-ES", "español"},
+  };
+  for (const auto& testcase : kTestCases) {
+    ShowDictationLanguageUpgradedNudge(testcase.locale,
+                                       testcase.application_locale);
+
+    DictationNudgeController* controller = GetDictationNudgeController();
+    ASSERT_TRUE(controller);
+
+    DictationNudge* nudge =
+        static_cast<DictationNudge*>(controller->GetDictationNudgeForTesting());
+    ASSERT_TRUE(nudge);
+
+    std::unique_ptr<views::View> label = GetDictationNudgeLabel(nudge);
+    std::string text =
+        base::UTF16ToUTF8(static_cast<views::Label*>(label.get())->GetText());
+    EXPECT_THAT(text, HasSubstr(testcase.label));
+
+    WaitForWidgetClose(controller, nudge);
+  }
+}
+
+}  // namespace ash
\ No newline at end of file
diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd
index 6df6fc6..3120c995 100644
--- a/ash/ash_strings.grd
+++ b/ash/ash_strings.grd
@@ -762,6 +762,9 @@
       <message name="IDS_ASH_DICTATION_CONFIRMATION_BODY" desc="The message shown the first time the user enables Dictation, explaining that the audio data will be sent to Google for transcription">
         Dictation sends your voice to Google to allow voice typing in any text field.
       </message>
+      <message name="IDS_ASH_DICTATION_LANGUAGE_SUPPORTED_OFFLINE_NUDGE" desc="The message shown for existing Dictation users when their Dictation language has been upgraded in the background to work offline.">
+        <ph name="language">$1<ex>English</ex></ph> speech is now processed locally and works offline. You can change your Dictation language in Settings > Accessibility.
+      </message>
       <message name="IDS_ASH_SWITCH_ACCESS_DISABLE_CONFIRMATION_TEXT" desc="The text for the modal dialog shown when the user disables Switch Access, to confirm they meant to disable the feature.">
         Are you sure you want to turn off Switch Access?
       </message>
diff --git a/ash/ash_strings_grd/IDS_ASH_DICTATION_LANGUAGE_SUPPORTED_OFFLINE_NUDGE.png.sha1 b/ash/ash_strings_grd/IDS_ASH_DICTATION_LANGUAGE_SUPPORTED_OFFLINE_NUDGE.png.sha1
new file mode 100644
index 0000000..73f2ec3
--- /dev/null
+++ b/ash/ash_strings_grd/IDS_ASH_DICTATION_LANGUAGE_SUPPORTED_OFFLINE_NUDGE.png.sha1
@@ -0,0 +1 @@
+81c8d75227cff8512f93d227e0f27e5546d36709
\ No newline at end of file
diff --git a/ash/public/cpp/accessibility_controller.h b/ash/public/cpp/accessibility_controller.h
index 015e4ab1..574f1382 100644
--- a/ash/public/cpp/accessibility_controller.h
+++ b/ash/public/cpp/accessibility_controller.h
@@ -111,6 +111,12 @@
   // Starts or stops dictation. Records metrics for toggling via SwitchAccess.
   virtual void ToggleDictationFromSource(DictationToggleSource source) = 0;
 
+  // Shows a nudge explaining that a user's dictation language was upgraded to
+  // work offline.
+  virtual void ShowDictationLanguageUpgradedNudge(
+      const std::string& dictation_locale,
+      const std::string& application_locale) = 0;
+
   // Called when the Automatic Clicks extension finds scrollable bounds.
   virtual void HandleAutoclickScrollableBoundsFound(
       gfx::Rect& bounds_in_screen) = 0;
diff --git a/ash/public/cpp/assistant/assistant_image_downloader.cc b/ash/public/cpp/assistant/assistant_image_downloader.cc
deleted file mode 100644
index 628c5c9..0000000
--- a/ash/public/cpp/assistant/assistant_image_downloader.cc
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/public/cpp/assistant/assistant_image_downloader.h"
-
-#include "base/check_op.h"
-
-namespace ash {
-namespace {
-AssistantImageDownloader* g_assistant_image_downloader = nullptr;
-}
-
-// static
-AssistantImageDownloader* AssistantImageDownloader::GetInstance() {
-  return g_assistant_image_downloader;
-}
-
-AssistantImageDownloader::AssistantImageDownloader() {
-  DCHECK(!g_assistant_image_downloader);
-  g_assistant_image_downloader = this;
-}
-AssistantImageDownloader::~AssistantImageDownloader() {
-  DCHECK_EQ(g_assistant_image_downloader, this);
-  g_assistant_image_downloader = nullptr;
-}
-
-}  // namespace ash
diff --git a/ash/webui/shimless_rma/resources/icons.html b/ash/webui/shimless_rma/resources/icons.html
index 7d5fe42..c76946d 100644
--- a/ash/webui/shimless_rma/resources/icons.html
+++ b/ash/webui/shimless_rma/resources/icons.html
@@ -4,6 +4,9 @@
       <g id="wifi" width="20" height="20" viewBox="0 0 20 20">
         <path fill-rule="evenodd" d="M7.99999976,4.4408921e-15 C11.7328,4.4408921e-15 14.4955,1.61135 15.6876,2.44135 C16.0317,2.68099 16.1038,3.16533 15.8425,3.49646 L15.8425,3.49646 L8.5554,12.7289 C8.2698,13.0905 7.72802,13.0905 7.44247,12.7281 L7.44247,12.7281 L0.15749,3.49646 C-0.10379,3.16533 -0.03169,2.68099 0.31239,2.44135 C1.50455,1.61135 4.26792,4.4408921e-15 7.99999976,4.4408921e-15 Z M7.9986,5 C9.23601,5 10.350948,5.2101302 11.3111193,5.50860386 L11.6254,5.6112 L11.6254,5.6112 C12.314,4.73885 13.3886,3.37739 13.3886,3.37739 C12.1425,2.71268 10.2788,2 8,2 C5.72159,2 3.85753,2.71277 2.61134,3.37751 C2.61134,3.37751 3.36107,4.32758 4.3736,5.61069 C5.40153,5.25916 6.62474,5 7.9986,5 Z" transform="translate(2 4)"/>
       </g>
+      <g id="info">
+        <path fill-rule="evenodd" clip-rule="evenodd" d="M9 14H11V10H9V14ZM10 2C5.584 2 2 5.584 2 10C2 14.416 5.584 18 10 18C14.416 18 18 14.416 18 10C18 5.584 14.416 2 10 2ZM10 16C6.6925 16 4 13.3075 4 10C4 6.6925 6.6925 4 10 4C13.3075 4 16 6.6925 16 10C16 13.3075 13.3075 16 10 16ZM9 8H11V6H9V8Z" />
+      </g>
     </defs>
   </svg>
 </iron-iconset-svg>
diff --git a/ash/webui/shimless_rma/resources/repair_component_chip.html b/ash/webui/shimless_rma/resources/repair_component_chip.html
index 70c603e..ca553c8 100644
--- a/ash/webui/shimless_rma/resources/repair_component_chip.html
+++ b/ash/webui/shimless_rma/resources/repair_component_chip.html
@@ -8,29 +8,43 @@
     background-color: lightskyblue;
   }
 
+  #condtainerDiv {
+    width: 180px;
+    height: 40px;
+  }
+
   #containerButton {
-    width:  180px;
+    width: 180px;
     height: 40px;
     border-radius: 10px;
     box-shadow: 0px 2px 2px 2px #bbb;
   }
 
-  .checkedBox {
-    background-color: lightblue;
-    position: absolute;
-    top: 5px;
-    right: 5px;
+  .icon-top-right {
+    position: relative;
+    top: -5px;
+    right: 20px;
     width: 15px;
-    height:  15px;
+    height: 15px;
   }
-
 </style>
 
-<div>
+<div id="containerDiv">
   <cr-button disabled$="[[disabled]]"
       id="containerButton" on-click="onComponentButtonClicked_">
     <span id="componentName">[[componentName]]</span>
-    <!-- TODO(joonbug): replace with iron-icon -->
-    <span hidden$="[[!checked]]" class="checkedBox"></span>
   </cr-button>
+
+  <!-- TODO(joonbug): Replace icon with checked icon -->
+  <iron-icon id="checkedIcon" icon="shimless-icon:wifi"
+    hidden$="[[!checked]]" class="icon-top-right">
+  </iron-icon>
+  <iron-icon id="infoIcon" icon="shimless-icon:info"
+    hidden$="[[!disabled]]" class="icon-top-right">
+  </iron-icon>
+
+  <!-- TODO(joonbug): i18n message -->
+  <paper-tooltip for="infoIcon" aria-hidden="true" id="additionalMessage">
+    This component couldn't be detected. Check that it's installed correctly.
+  </paper-tooltip>
 </div>
\ No newline at end of file
diff --git a/ash/webui/shimless_rma/resources/repair_component_chip.js b/ash/webui/shimless_rma/resources/repair_component_chip.js
index 5de86a6f..fba76766 100644
--- a/ash/webui/shimless_rma/resources/repair_component_chip.js
+++ b/ash/webui/shimless_rma/resources/repair_component_chip.js
@@ -2,8 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'chrome://resources/cr_elements/cr_button/cr_button.m.js';
 import './shimless_rma_shared_css.js';
+import './icons.js';
+
+import 'chrome://resources/cr_elements/cr_button/cr_button.m.js';
+import 'chrome://resources/cr_elements/icons.m.js';
+import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js';
+import 'chrome://resources/polymer/v3_0/paper-tooltip/paper-tooltip.js';
 
 import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
diff --git a/base/android/java/src/org/chromium/base/compat/ApiHelperForS.java b/base/android/java/src/org/chromium/base/compat/ApiHelperForS.java
index 13a01d6..11cbbe05 100644
--- a/base/android/java/src/org/chromium/base/compat/ApiHelperForS.java
+++ b/base/android/java/src/org/chromium/base/compat/ApiHelperForS.java
@@ -4,6 +4,7 @@
 
 package org.chromium.base.compat;
 
+import android.Manifest;
 import android.annotation.TargetApi;
 import android.app.PictureInPictureParams;
 import android.content.ClipData;
@@ -54,10 +55,8 @@
     }
 
     public static boolean hasBluetoothConnectPermission() {
-        // TODO(b/183501112): Replace the permission string with the actual Manfifest constant once
-        // Chrome starts compiling against the S SDK.
         return ApiCompatibilityUtils.checkPermission(ContextUtils.getApplicationContext(),
-                       "android.permission.BLUETOOTH_CONNECT", Process.myPid(), Process.myUid())
+                       Manifest.permission.BLUETOOTH_CONNECT, Process.myPid(), Process.myUid())
                 == PackageManager.PERMISSION_GRANTED;
     }
 
diff --git a/base/values.cc b/base/values.cc
index a01cdac7..3a64525 100644
--- a/base/values.cc
+++ b/base/values.cc
@@ -1367,20 +1367,6 @@
       key, const_cast<const ListValue**>(out_value));
 }
 
-bool DictionaryValue::RemoveWithoutPathExpansion(
-    StringPiece key,
-    std::unique_ptr<Value>* out_value) {
-  DCHECK(IsStringUTF8AllowingNoncharacters(key));
-  auto entry_iterator = dict().find(key);
-  if (entry_iterator == dict().end())
-    return false;
-
-  if (out_value)
-    *out_value = std::move(entry_iterator->second);
-  dict().erase(entry_iterator);
-  return true;
-}
-
 std::unique_ptr<DictionaryValue> DictionaryValue::DeepCopyWithoutEmptyChildren()
     const {
   std::unique_ptr<DictionaryValue> copy =
diff --git a/base/values.h b/base/values.h
index 2bd7aa7..89108a7b 100644
--- a/base/values.h
+++ b/base/values.h
@@ -749,13 +749,6 @@
   // DEPRECATED, use `Value::FindListKey(key)` instead.
   bool GetListWithoutPathExpansion(StringPiece key, ListValue** out_value);
 
-  // Like Remove(), but without special treatment of '.'.  This allows e.g. URLs
-  // to be used as paths.
-  // DEPRECATED, use `Value::RemoveKey(key)` or `Value::ExtractKey(key)`
-  // instead.
-  bool RemoveWithoutPathExpansion(StringPiece key,
-                                  std::unique_ptr<Value>* out_value);
-
   // Makes a copy of `this` but doesn't include empty dictionaries and lists in
   // the copy.  This never returns NULL, even if `this` itself is empty.
   std::unique_ptr<DictionaryValue> DeepCopyWithoutEmptyChildren() const;
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
index e6101b0..047439ef 100644
--- a/build/config/android/rules.gni
+++ b/build/config/android/rules.gni
@@ -3873,9 +3873,11 @@
   #     resource dependencies of the apk.
   #   shared_library: shared_library target that contains the unit tests.
   #   apk_name: The name of the produced apk. If unspecified, it uses the name
-  #             of the shared_library target suffixed with "_apk"
+  #             of the shared_library target suffixed with "_apk".
   #   use_default_launcher: Whether the default activity (NativeUnitTestActivity)
   #     should be used for launching tests.
+  #   allow_cleartext_traffic: (Optional) Whether to allow cleartext network
+  #     requests during the test.
   #   use_native_activity: Test implements ANativeActivity_onCreate().
   #
   # Example
@@ -3895,6 +3897,8 @@
     assert(_use_native_activity != "" && _android_manifest != "")
 
     if (!defined(invoker.android_manifest)) {
+      _allow_cleartext_traffic = defined(invoker.allow_cleartext_traffic) &&
+                                 invoker.allow_cleartext_traffic
       jinja_template("${target_name}_manifest") {
         _native_library_name = get_label_info(invoker.shared_library, "name")
         if (defined(invoker.android_manifest_template)) {
@@ -3908,6 +3912,7 @@
           "is_component_build=${is_component_build}",
           "native_library_name=${_native_library_name}",
           "use_native_activity=${_use_native_activity}",
+          "allow_cleartext_traffic=${_allow_cleartext_traffic}",
         ]
       }
     }
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index 67a395a..94e1dc8 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -1927,37 +1927,15 @@
 # Note that this can be applied regardless of platform and architecture to
 # clean up the call sites. This will only apply the flag when necessary.
 #
-# This config is just an alias to no_shorten_64_warnings and will
-# suppress a superset of warning 4267 and any 64-bit -> 32-bit implicit
-# conversions. Having both for a time means not having to go through and
-# update all references to no_size_t_to_int_warning throughout the codebase
-# atomically.
-#
-# Any new warning suppressions should use the no_shorten_64_warnings
-# config below and not this.
-#
-# TODO(jschuh): crbug.com/167187 fix this and delete this config.
-config("no_size_t_to_int_warning") {
-  configs = [ ":no_shorten_64_warnings" ]
-}
-
-# As part of re-enabling -Wconversion (see issue 588506) some code
-# will continue to generate warnings.
-# The first warning to be enabled will be -Wshorten-64-to-32.
-#
-# Code that currently generates warnings for this can include this
-# config to disable them.
+# TODO(crbug.com/879657): Fix all instances and delete this.
 config("no_shorten_64_warnings") {
   if (current_cpu == "x64" || current_cpu == "arm64") {
     if (is_clang) {
       cflags = [ "-Wno-shorten-64-to-32" ]
-    } else {
-      if (is_win) {
-        # MSVC does not have an explicit warning equivalent to
-        # -Wshorten-64-to-32 but 4267 warns for size_t -> int
-        # on 64-bit builds, so is the closest.
-        cflags = [ "/wd4267" ]
-      }
+    } else if (is_win) {
+      # MSVC does not have an explicit warning equivalent to -Wshorten-64-to-32
+      # but 4267 warns for size_t -> int on 64-bit builds, so is the closest.
+      cflags = [ "/wd4267" ]
     }
   }
 }
diff --git a/build/config/dcheck_always_on.gni b/build/config/dcheck_always_on.gni
index 76635fd..a868076 100644
--- a/build/config/dcheck_always_on.gni
+++ b/build/config/dcheck_always_on.gni
@@ -30,7 +30,7 @@
   # down to:
   # (build_with_chromium && !is_official_builds) || dcheck_is_configurable
   dcheck_always_on = (build_with_chromium && !is_official_build &&
-                      !is_fuchsia && !is_chromeos) || dcheck_is_configurable
+                      !is_fuchsia) || dcheck_is_configurable
 }
 
 declare_args() {
diff --git a/build/config/fuchsia/generate_runner_scripts.gni b/build/config/fuchsia/generate_runner_scripts.gni
index fc81931..f6180755 100644
--- a/build/config/fuchsia/generate_runner_scripts.gni
+++ b/build/config/fuchsia/generate_runner_scripts.gni
@@ -138,10 +138,15 @@
     }
 
     data += [
-      "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/ffx",
+      "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/device-finder",
       "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/fvm",
       "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/merkleroot",
       "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/pm",
+
+      # TODO(crbug.com/1162314) Remove "symbolize" when transition to
+      # "symbolizer" is complete.
+      "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/symbolize",
+
       "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/symbolizer",
       "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/zbi",
     ]
diff --git a/build/fuchsia/device_target.py b/build/fuchsia/device_target.py
index 06bc874..8d134e5 100644
--- a/build/fuchsia/device_target.py
+++ b/build/fuchsia/device_target.py
@@ -5,15 +5,19 @@
 """Implements commands for running and interacting with Fuchsia on devices."""
 
 import boot_data
+import filecmp
 import logging
 import os
 import pkg_repo
 import re
 import subprocess
+import sys
 import target
+import tempfile
 import time
+import uuid
 
-from common import EnsurePathExists, GetHostToolPathFromPlatform
+from common import SDK_ROOT, EnsurePathExists, GetHostToolPathFromPlatform
 
 # The maximum times to attempt mDNS resolution when connecting to a freshly
 # booted Fuchsia instance before aborting.
@@ -23,7 +27,11 @@
 CONNECT_RETRY_COUNT_BEFORE_LOGGING = 10
 
 # Number of seconds to wait for device discovery.
-BOOT_DISCOVERY_DELAY_SECS = 4
+BOOT_DISCOVERY_TIMEOUT_SECS = 2 * 60
+
+# The timeout limit for one call to the device-finder tool.
+_DEVICE_FINDER_TIMEOUT_LIMIT_SECS = \
+    BOOT_DISCOVERY_TIMEOUT_SECS / BOOT_DISCOVERY_ATTEMPTS
 
 # Time between a reboot command is issued and when connection attempts from the
 # host begin.
@@ -155,44 +163,64 @@
                       'set and that remote serving is set up.')
 
   def _Discover(self):
-    """Resolves device IP by the |_node_name|. If |_node_name|
-    isn't specified, and there is only one device on the network,
-    then returns the IP address of that advice.
+    """Queries mDNS for the IP address of a booted Fuchsia instance whose name
+    matches |_node_name| on the local area network. If |_node_name| isn't
+    specified, and there is only one device on the network, then returns the
+    IP address of that advice.
 
     Sets |_host_name| and returns True if the device was found,
-    or returns False if the device couldn't be found."""
+    or waits up to |timeout| seconds and returns False if the device couldn't
+    be found."""
 
-    ffx_command = ['target', 'list']
+    dev_finder_path = GetHostToolPathFromPlatform('device-finder')
+
     if self._node_name:
-      ffx_command.append(self._node_name)
-    ffx_command.extend(['--format', 'simple'])
-    proc = self.RunFFXCommand(ffx_command,
-                              stdout=subprocess.PIPE,
-                              stderr=open(os.devnull, 'w'))
+      command = [
+          dev_finder_path,
+          'resolve',
+          '-timeout',
+          "%ds" % _DEVICE_FINDER_TIMEOUT_LIMIT_SECS,
+          '-device-limit',
+          '1',  # Exit early as soon as a host is found.
+          self._node_name
+      ]
+    else:
+      command = [
+          dev_finder_path, 'list', '-full', '-timeout',
+          "%ds" % _DEVICE_FINDER_TIMEOUT_LIMIT_SECS
+      ]
 
-    output = proc.communicate()[0].strip().split('\n')
-    if proc.returncode != 0 or len(output[0]) == 0:
+    proc = subprocess.Popen(command,
+                            stdout=subprocess.PIPE,
+                            stderr=open(os.devnull, 'w'))
+
+    output = set(proc.communicate()[0].strip().split('\n'))
+    if proc.returncode != 0:
       return False
 
     if self._node_name:
-      # With ffx, it is possible to enter part of a name and the device will
-      # show up, so we need to get the full name.
-      self._host, self._node_name = output[0].split()
+      # Handle the result of "device-finder resolve".
+      self._host = output.pop().strip()
+
     else:
-      if len(output) > 1:
-        logging.info('More than one device was discovered on the network. '
-                     'Use --node-name <name> to specify the device to use.')
-        logging.info('List of devices:')
-        logging.info(output)
+      name_host_pairs = [x.strip().split(' ') for x in output]
+
+      # Handle the output of "device-finder list".
+      if len(name_host_pairs) > 1:
+        print('More than one device was discovered on the network.')
+        print('Use --node-name <name> to specify the device to use.')
+        print('\nList of devices:')
+        for pair in name_host_pairs:
+          print('  ' + pair[1])
+        print()
         raise Exception('Ambiguous target device specification.')
-      assert len(output) == 1
-      name_host_pairs = output[0].split()
-      if len(name_host_pairs) < 2:  # Check if device has both address and name.
-        return False
-      self._host, self._node_name = name_host_pairs
+
+      assert len(name_host_pairs) == 1
+      self._host, self._node_name = name_host_pairs[0]
 
     logging.info('Found device "%s" at address %s.' % (self._node_name,
                                                        self._host))
+
     return True
 
   def Start(self):
@@ -208,8 +236,8 @@
         self._pkg_repo = pkg_repo.ExternalPkgRepo(
             os.path.join(self._fuchsia_out_dir, 'amber-files'))
       else:
-        # Create an ephemeral package repository, then start both "pm serve" as well as
-        # the bootserver.
+        # Create an ephemeral package repository, then start both "pm serve" as
+        # well as the bootserver.
         self._pkg_repo = pkg_repo.ManagedPkgRepo(self)
 
     return self._pkg_repo
@@ -223,11 +251,11 @@
     self._node_name = m.groupdict()['nodename']
     logging.info('Booted device "%s".' % self._node_name)
 
-    # Repeatedly search for a device
+    # Repeatdly query mDNS until we find the device, or we hit the timeout of
+    # DISCOVERY_TIMEOUT_SECS.
     logging.info('Waiting for device to join network.')
     for _ in xrange(BOOT_DISCOVERY_ATTEMPTS):
       if self._Discover():
-        time.sleep(BOOT_DISCOVERY_DELAY_SECS)
         break
 
     if not self._host:
diff --git a/build/fuchsia/device_target_test.py b/build/fuchsia/device_target_test.py
deleted file mode 100755
index a6cf2a2..0000000
--- a/build/fuchsia/device_target_test.py
+++ /dev/null
@@ -1,110 +0,0 @@
-#!/usr/bin/env vpython3
-# Copyright 2021 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-"""Tests scenarios with number of devices and invalid devices"""
-
-import subprocess
-import unittest
-import unittest.mock as mock
-from argparse import Namespace
-from device_target import DeviceTarget
-from target import Target
-
-
-class TestDiscoverDeviceTarget(unittest.TestCase):
-  def setUp(self):
-    self.args = Namespace(out_dir='out/fuchsia',
-                          target_cpu='x64',
-                          host=None,
-                          node_name=None,
-                          port=None,
-                          ssh_config=None,
-                          fuchsia_out_dir=None,
-                          os_check='update',
-                          system_log_file=None)
-
-  def testNoNodeNameOneDeviceReturnNoneCheckNameAndAddress(self):
-    with (DeviceTarget.CreateFromArgs(self.args)) as device_target_instance:
-      with mock.patch.object(DeviceTarget, 'RunFFXCommand') as mock_ffx:
-        mock_spec_popen = mock.create_autospec(subprocess.Popen, instance=True)
-        mock_spec_popen.communicate.return_value = ('address device_name', '')
-        mock_spec_popen.returncode = 0
-        mock_ffx.return_value = mock_spec_popen
-        with mock.patch.object(Target,
-                               '_WaitUntilReady') as mock_waituntilready:
-          mock_waituntilready.return_value = True
-          self.assertIsNone(device_target_instance.Start())
-          self.assertEqual(device_target_instance._node_name, 'device_name')
-          self.assertEqual(device_target_instance._host, 'address')
-
-  def testNoNodeNameTwoDevicesRaiseExceptionAmbiguousTarget(self):
-    with (DeviceTarget.CreateFromArgs(self.args)) as device_target_instance:
-      with mock.patch.object(DeviceTarget, 'RunFFXCommand') as mock_ffx:
-        mock_spec_popen = mock.create_autospec(subprocess.Popen, instance=True)
-        mock_spec_popen.communicate.return_value = ('address1 device_name1\n'
-                                                    'address2 device_name2', '')
-        mock_spec_popen.returncode = 0
-        mock_spec_popen.stdout = ''
-        mock_ffx.return_value = mock_spec_popen
-        with self.assertRaisesRegex(Exception,
-                                    'Ambiguous target device specification.'):
-          device_target_instance.Start()
-          self.assertIsNone(device_target_instance._node_name)
-          self.assertIsNone(device_target_instance._host)
-
-  def testNoNodeNameDeviceDoesntHaveNameRaiseExceptionCouldNotFind(self):
-    with (DeviceTarget.CreateFromArgs(self.args)) as device_target_instance:
-      with mock.patch.object(DeviceTarget, 'RunFFXCommand') as mock_ffx:
-        mock_spec_popen = mock.create_autospec(subprocess.Popen, instance=True)
-        mock_spec_popen.communicate.return_value = ('address', '')
-        mock_spec_popen.returncode = 0
-        mock_ffx.return_value = mock_spec_popen
-        with self.assertRaisesRegex(Exception, 'Could not find device'):
-          device_target_instance.Start()
-          self.assertIsNone(device_target_instance._node_name)
-          self.assertIsNone(device_target_instance._host)
-
-  def testNodeNameDefinedDeviceFoundReturnNoneCheckNameAndHost(self):
-    self.args.node_name = 'device_name'
-    with (DeviceTarget.CreateFromArgs(self.args)) as device_target_instance:
-      with mock.patch.object(DeviceTarget, 'RunFFXCommand') as mock_ffx:
-        mock_spec_popen = mock.create_autospec(subprocess.Popen, instance=True)
-        mock_spec_popen.communicate.return_value = ('address device_name', '')
-        mock_spec_popen.returncode = 0
-        mock_ffx.return_value = mock_spec_popen
-        with mock.patch.object(Target,
-                               '_WaitUntilReady') as mock_waituntilready:
-          mock_waituntilready.return_value = True
-          self.assertIsNone(device_target_instance.Start())
-          self.assertEqual(device_target_instance._node_name, 'device_name')
-          self.assertEqual(device_target_instance._host, 'address')
-
-  def testNodeNameDefinedDeviceNotFoundRaiseExceptionCouldNotFind(self):
-    self.args.node_name = 'wrong_device_name'
-    with (DeviceTarget.CreateFromArgs(self.args)) as device_target_instance:
-      with mock.patch.object(DeviceTarget, 'RunFFXCommand') as mock_ffx:
-        mock_spec_popen = mock.create_autospec(subprocess.Popen, instance=True)
-        mock_spec_popen.communicate.return_value = ('address device_name', '')
-        mock_spec_popen.returncode = 2
-        mock_ffx.return_value = mock_spec_popen
-        with self.assertRaisesRegex(Exception, 'Could not find device'):
-          device_target_instance.Start()
-          self.assertIsNone(device_target_instance._node_name)
-          self.assertIsNone(device_target_instance._host)
-
-  def testNoDevicesFoundRaiseExceptionCouldNotFind(self):
-    with (DeviceTarget.CreateFromArgs(self.args)) as device_target_instance:
-      with mock.patch.object(DeviceTarget, 'RunFFXCommand') as mock_ffx:
-        mock_spec_popen = mock.create_autospec(subprocess.Popen, instance=True)
-        mock_spec_popen.communicate.return_value = ('', '')
-        mock_spec_popen.returncode = 0
-        mock_ffx.return_value = mock_spec_popen
-        with self.assertRaisesRegex(Exception, 'Could not find device'):
-          device_target_instance.Start()
-          self.assertIsNone(device_target_instance._node_name)
-          self.assertIsNone(device_target_instance._host)
-
-
-if __name__ == '__main__':
-  unittest.main()
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1
index 818d5ba..be95944 100644
--- a/build/fuchsia/linux.sdk.sha1
+++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-6.20210802.1.1
+6.20210802.2.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1
index 818d5ba..be95944 100644
--- a/build/fuchsia/mac.sdk.sha1
+++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@
-6.20210802.1.1
+6.20210802.2.1
diff --git a/build/fuchsia/target.py b/build/fuchsia/target.py
index a819389..55164b3 100644
--- a/build/fuchsia/target.py
+++ b/build/fuchsia/target.py
@@ -12,8 +12,6 @@
 import remote_cmd
 import runner_logs
 
-_FFX_PATH = os.path.join(common.SDK_ROOT, 'tools', 'x64', 'ffx')
-
 _SHUTDOWN_CMD = ['dm', 'poweroff']
 _ATTACH_RETRY_INTERVAL = 1
 _ATTACH_RETRY_SECONDS = 120
@@ -322,14 +320,3 @@
         if pkgctl_out != meta_far_merkel:
           raise Exception('Hash mismatch for %s after resolve (%s vs %s).' %
                           (package_name, pkgctl_out, meta_far_merkel))
-
-  def RunFFXCommand(self, ffx_args, **kwargs):
-    """Automatically gets the FFX path and runs FFX based on the
-    arguments provided. Extra args can be added to be used with Popen.
-
-    ffx_args: The arguments for a ffx command.
-    kwargs: A dictionary of parameters to be passed to subprocess.Popen().
-
-    Returns a Popen object for the command."""
-    command = [_FFX_PATH] + ffx_args
-    return subprocess.Popen(command, **kwargs)
\ No newline at end of file
diff --git a/chrome/android/features/start_surface/internal/BUILD.gn b/chrome/android/features/start_surface/internal/BUILD.gn
index cdecdd8..a8852c9 100644
--- a/chrome/android/features/start_surface/internal/BUILD.gn
+++ b/chrome/android/features/start_surface/internal/BUILD.gn
@@ -81,6 +81,7 @@
     "//chrome/browser/ui/android/layouts:java",
     "//chrome/browser/ui/android/layouts/third_party/float_property:java",
     "//chrome/browser/ui/android/omnibox:java",
+    "//chrome/browser/ui/android/toolbar:java",
     "//chrome/browser/ui/messages/android:java",
     "//chrome/browser/util:java",
     "//chrome/browser/version:java",
diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/ExploreSurfaceCoordinator.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/ExploreSurfaceCoordinator.java
index b707469..628ec96 100644
--- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/ExploreSurfaceCoordinator.java
+++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/ExploreSurfaceCoordinator.java
@@ -28,6 +28,7 @@
 import org.chromium.chrome.browser.share.ShareDelegate;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
+import org.chromium.chrome.browser.toolbar.top.Toolbar;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
 import org.chromium.chrome.start_surface.R;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
@@ -76,6 +77,9 @@
      * @param shareDelegateSupplier Supplies the {@link ShareDelegate}.
      * @param windowAndroid The current {@link WindowAndroid}.
      * @param tabModelSelector The current {@link TabModelSelector}.
+     * @param toolbarSupplier Supplies the {@link Toolbar}.
+     * @param feedLaunchReliabilityLoggingState Holds the state for feed surface creation.
+     * @param swipeRefreshLayout The layout to support pull-to-refresg.
      */
     ExploreSurfaceCoordinator(@NonNull Activity activity, @NonNull ViewGroup parentView,
             @NonNull PropertyModel containerPropertyModel, boolean hasHeader,
@@ -85,6 +89,7 @@
             @NonNull SnackbarManager snackbarManager,
             @NonNull Supplier<ShareDelegate> shareDelegateSupplier,
             @NonNull WindowAndroid windowAndroid, @NonNull TabModelSelector tabModelSelector,
+            @NonNull Supplier<Toolbar> toolbarSupplier,
             FeedLaunchReliabilityLoggingState feedLaunchReliabilityLoggingState,
             @Nullable FeedSwipeRefreshLayout swipeRefreshLayout) {
         mActivity = activity;
@@ -103,7 +108,8 @@
                     boolean isPlaceholderShown, @NewTabPageLaunchOrigin int launchOrigin) {
                 return internalCreateFeedSurfaceCoordinator(mHasHeader, isInNightMode,
                         isPlaceholderShown, bottomSheetController, scrollableContainerDelegate,
-                        launchOrigin, feedLaunchReliabilityLoggingState, swipeRefreshLayout);
+                        launchOrigin, toolbarSupplier, feedLaunchReliabilityLoggingState,
+                        swipeRefreshLayout);
             }
         };
     }
@@ -134,7 +140,7 @@
             boolean isInNightMode, boolean isPlaceholderShown,
             BottomSheetController bottomSheetController,
             ScrollableContainerDelegate scrollableContainerDelegate,
-            @NewTabPageLaunchOrigin int launchOrigin,
+            @NewTabPageLaunchOrigin int launchOrigin, @NonNull Supplier<Toolbar> toolbarSupplier,
             FeedLaunchReliabilityLoggingState feedLaunchReliabilityLoggingState,
             FeedSwipeRefreshLayout swipeRefreshLayout) {
         if (mExploreSurfaceNavigationDelegate == null) {
@@ -160,7 +166,7 @@
                 mSnackbarManager, mWindowAndroid, null, null, sectionHeaderView, isInNightMode,
                 this, mExploreSurfaceNavigationDelegate, profile, isPlaceholderShown,
                 bottomSheetController, mShareDelegateSupplier, scrollableContainerDelegate,
-                launchOrigin, PrivacyPreferencesManagerImpl.getInstance(),
+                launchOrigin, PrivacyPreferencesManagerImpl.getInstance(), toolbarSupplier,
                 feedLaunchReliabilityLoggingState, swipeRefreshLayout);
         feedSurfaceCoordinator.getView().setId(R.id.start_surface_explore_view);
         feedSurfaceCoordinator.getRecyclerView().setOverScrollMode(View.OVER_SCROLL_NEVER);
diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
index 2127c1b..7b64754 100644
--- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
+++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
@@ -42,6 +42,7 @@
 import org.chromium.chrome.browser.tasks.tab_management.TabManagementDelegate.TabSwitcherType;
 import org.chromium.chrome.browser.tasks.tab_management.TabManagementModuleProvider;
 import org.chromium.chrome.browser.tasks.tab_management.TabSwitcher;
+import org.chromium.chrome.browser.toolbar.top.Toolbar;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
 import org.chromium.chrome.browser.xsurface.FeedLaunchReliabilityLogger.SurfaceType;
 import org.chromium.chrome.start_surface.R;
@@ -87,6 +88,7 @@
     private final TabCreatorManager mTabCreatorManager;
     private final MenuOrKeyboardActionController mMenuOrKeyboardActionController;
     private final MultiWindowModeStateDispatcher mMultiWindowModeStateDispatcher;
+    private final Supplier<Toolbar> mToolbarSupplier;
 
     // Non-null in SurfaceMode.SINGLE_PANE mode.
     @Nullable
@@ -201,6 +203,7 @@
      * @param menuOrKeyboardActionController allows access to menu or keyboard actions.
      * @param multiWindowModeStateDispatcher Gives access to the multi window mode state.
      * @param jankTracker Measures jank while feed or tab switcher are visible.
+     * @param toolbarSupplier Supplies the {@link Toolbar}.
      */
     public StartSurfaceCoordinator(@NonNull Activity activity,
             @NonNull ScrimCoordinator scrimCoordinator,
@@ -221,7 +224,7 @@
             @NonNull TabCreatorManager tabCreatorManager,
             @NonNull MenuOrKeyboardActionController menuOrKeyboardActionController,
             @NonNull MultiWindowModeStateDispatcher multiWindowModeStateDispatcher,
-            @NonNull JankTracker jankTracker) {
+            @NonNull JankTracker jankTracker, @NonNull Supplier<Toolbar> toolbarSupplier) {
         mFeedLaunchReliabilityLoggingState =
                 new FeedLaunchReliabilityLoggingState(SurfaceType.START_SURFACE, System.nanoTime());
         mActivity = activity;
@@ -244,6 +247,7 @@
         mTabCreatorManager = tabCreatorManager;
         mMenuOrKeyboardActionController = menuOrKeyboardActionController;
         mMultiWindowModeStateDispatcher = multiWindowModeStateDispatcher;
+        mToolbarSupplier = toolbarSupplier;
 
         boolean excludeMVTiles = StartSurfaceConfiguration.START_SURFACE_EXCLUDE_MV_TILES.getValue()
                 || !mIsStartSurfaceEnabled;
@@ -369,12 +373,12 @@
 
         mIsInitializedWithNative = true;
         if (mIsStartSurfaceEnabled) {
-            mExploreSurfaceCoordinator =
-                    new ExploreSurfaceCoordinator(mActivity, mTasksSurface.getBodyViewContainer(),
-                            mPropertyModel, true, mBottomSheetController, mParentTabSupplier,
-                            new ScrollableContainerDelegateImpl(), mSnackbarManager,
-                            mShareDelegateSupplier, mWindowAndroid, mTabModelSelector,
-                            mFeedLaunchReliabilityLoggingState, mSwipeRefreshLayout);
+            mExploreSurfaceCoordinator = new ExploreSurfaceCoordinator(mActivity,
+                    mTasksSurface.getBodyViewContainer(), mPropertyModel, true,
+                    mBottomSheetController, mParentTabSupplier,
+                    new ScrollableContainerDelegateImpl(), mSnackbarManager, mShareDelegateSupplier,
+                    mWindowAndroid, mTabModelSelector, mToolbarSupplier,
+                    mFeedLaunchReliabilityLoggingState, mSwipeRefreshLayout);
         }
         mStartSurfaceMediator.initWithNative(
                 mIsStartSurfaceEnabled ? mOmniboxStubSupplier.get() : null,
diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceDelegate.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceDelegate.java
index f383b32..71132c2 100644
--- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceDelegate.java
+++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceDelegate.java
@@ -26,6 +26,7 @@
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tabmodel.TabCreatorManager;
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
+import org.chromium.chrome.browser.toolbar.top.Toolbar;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
 import org.chromium.components.browser_ui.widget.MenuOrKeyboardActionController;
@@ -61,13 +62,13 @@
             @NonNull TabCreatorManager tabCreatorManager,
             @NonNull MenuOrKeyboardActionController menuOrKeyboardActionController,
             @NonNull MultiWindowModeStateDispatcher multiWindowModeStateDispatcher,
-            @NonNull JankTracker jankTracker) {
+            @NonNull JankTracker jankTracker, @NonNull Supplier<Toolbar> toolbarSupplier) {
         return new StartSurfaceCoordinator(activity, scrimCoordinator, sheetController,
                 startSurfaceOneshotSupplier, parentTabSupplier, hadWarmStart, windowAndroid,
                 containerView, dynamicResourceLoaderSupplier, tabModelSelector,
                 browserControlsManager, snackbarManager, shareDelegateSupplier, omniboxStubSupplier,
                 tabContentManager, modalDialogManager, chromeActivityNativeDelegate,
                 activityLifecycleDispatcher, tabCreatorManager, menuOrKeyboardActionController,
-                multiWindowModeStateDispatcher, jankTracker);
+                multiWindowModeStateDispatcher, jankTracker, toolbarSupplier);
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/ExploreSurfaceViewBinderTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/ExploreSurfaceViewBinderTest.java
index 6e1d902..4d32708 100644
--- a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/ExploreSurfaceViewBinderTest.java
+++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/ExploreSurfaceViewBinderTest.java
@@ -85,8 +85,9 @@
                     mActivityTestRule.getActivity().getSnackbarManager(),
                     mActivityTestRule.getActivity().getShareDelegateSupplier(),
                     mActivityTestRule.getActivity().getWindowAndroid(),
-                    mActivityTestRule.getActivity().getTabModelSelector(),
-                    new FeedLaunchReliabilityLoggingState(SurfaceType.START_SURFACE, 0L), null);
+                    mActivityTestRule.getActivity().getTabModelSelector(), () -> {
+                        return null;
+                    }, new FeedLaunchReliabilityLoggingState(SurfaceType.START_SURFACE, 0L), null);
             mFeedSurfaceCoordinator =
                     mExploreSurfaceCoordinator.getFeedSurfaceController()
                             .createFeedSurfaceCoordinator(false, /* isPlaceholderShown= */ false,
diff --git a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceLayoutTest.java b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceLayoutTest.java
index fa1f632..28a20fb 100644
--- a/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceLayoutTest.java
+++ b/chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceLayoutTest.java
@@ -1089,8 +1089,9 @@
         @Override
         public void check(View view, NoMatchingViewException noMatchException) {
             if (noMatchException != null) throw noMatchException;
-            int tabListPadding =
-                    (int) TabUiThemeProvider.getTabCardPaddingDimension(view.getContext());
+            float tabListPadding = TabUiThemeProvider.getTabCardPaddingDimension(view.getContext());
+            float messageCardMargin =
+                    TabUiThemeProvider.getMessageCardMarginDimension(view.getContext());
 
             assertTrue(view instanceof RecyclerView);
             RecyclerView recyclerView = (RecyclerView) view;
@@ -1103,8 +1104,10 @@
             assertEquals(TabProperties.UiType.MESSAGE, messageItemViewHolder.getItemViewType());
             View messageItemView = messageItemViewHolder.itemView;
 
-            // The message card item width should always be recyclerView width minus padding.
-            assertEquals(recyclerView.getWidth() - 2 * tabListPadding, messageItemView.getWidth());
+            // The message card item width should always be recyclerView width minus padding and
+            // margin.
+            assertEquals(recyclerView.getWidth() - 2 * tabListPadding - 2 * messageCardMargin,
+                    (float) messageItemView.getWidth(), 1.0f);
         }
     }
 
diff --git a/chrome/android/features/tab_ui/BUILD.gn b/chrome/android/features/tab_ui/BUILD.gn
index f1abf08..3cc7480 100644
--- a/chrome/android/features/tab_ui/BUILD.gn
+++ b/chrome/android/features/tab_ui/BUILD.gn
@@ -41,10 +41,6 @@
     "java/res/drawable/ic_trending_down_blue.xml",
     "java/res/drawable/iph_drag_and_drop_animated_drawable.xml",
     "java/res/drawable/iph_drag_and_drop_drawable.xml",
-    "java/res/drawable/message_card_background.xml",
-    "java/res/drawable/message_card_background_incognito.xml",
-    "java/res/drawable/message_card_background_with_inset.xml",
-    "java/res/drawable/message_card_background_with_inset_incognito.xml",
     "java/res/drawable/price_card_background.xml",
     "java/res/drawable/price_card_scrim.xml",
     "java/res/drawable/selected_tab_background.xml",
diff --git a/chrome/android/features/tab_ui/java/res/drawable/message_card_background.xml b/chrome/android/features/tab_ui/java/res/drawable/message_card_background.xml
deleted file mode 100644
index b5deae2..0000000
--- a/chrome/android/features/tab_ui/java/res/drawable/message_card_background.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2020 The Chromium Authors. All rights reserved.
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
-
-<shape
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="rectangle" >
-    <solid android:color="@color/default_bg_color" />
-    <stroke android:width="@dimen/divider_height" android:color="@color/hairline_stroke_color"/>
-    <corners android:radius="@dimen/tab_list_card_radius" />
-</shape>
diff --git a/chrome/android/features/tab_ui/java/res/drawable/message_card_background_incognito.xml b/chrome/android/features/tab_ui/java/res/drawable/message_card_background_incognito.xml
deleted file mode 100644
index c6f2dd69..0000000
--- a/chrome/android/features/tab_ui/java/res/drawable/message_card_background_incognito.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2020 The Chromium Authors. All rights reserved.
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
-
-<shape
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="rectangle" >
-    <solid android:color="@color/default_bg_color_dark"/>
-    <stroke android:width="@dimen/divider_height" android:color="@color/hairline_stroke_color_dark"/>
-    <corners android:radius="@dimen/tab_list_card_radius" />
-</shape>
diff --git a/chrome/android/features/tab_ui/java/res/drawable/message_card_background_with_inset.xml b/chrome/android/features/tab_ui/java/res/drawable/message_card_background_with_inset.xml
deleted file mode 100644
index a21e3a6f..0000000
--- a/chrome/android/features/tab_ui/java/res/drawable/message_card_background_with_inset.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2020 The Chromium Authors. All rights reserved.
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
-
-<inset
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:drawable="@drawable/message_card_background"
-    android:inset="@dimen/tab_list_selected_inset"/>
diff --git a/chrome/android/features/tab_ui/java/res/drawable/message_card_background_with_inset_incognito.xml b/chrome/android/features/tab_ui/java/res/drawable/message_card_background_with_inset_incognito.xml
deleted file mode 100644
index 5fb529c..0000000
--- a/chrome/android/features/tab_ui/java/res/drawable/message_card_background_with_inset_incognito.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2020 The Chromium Authors. All rights reserved.
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
-
-<inset
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:drawable="@drawable/message_card_background_incognito"
-    android:inset="@dimen/tab_list_selected_inset"/>
diff --git a/chrome/android/features/tab_ui/java/res/layout/large_message_card_item.xml b/chrome/android/features/tab_ui/java/res/layout/large_message_card_item.xml
index b409854..3a7796d8 100644
--- a/chrome/android/features/tab_ui/java/res/layout/large_message_card_item.xml
+++ b/chrome/android/features/tab_ui/java/res/layout/large_message_card_item.xml
@@ -7,12 +7,13 @@
     android:id="@+id/large_message_card_item"
     android:layout_width="match_parent"
     android:layout_height="wrap_content">
-    <FrameLayout
+    <org.chromium.components.browser_ui.widget.MaterialCardViewNoShadow
         android:id="@+id/large_message_card_view"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        android:layout_margin="@dimen/tab_list_selected_margin"
         android:layout_gravity="center"
-        android:background="@drawable/message_card_background_with_inset">
+        style="@style/MaterialCardStyle">
         <LinearLayout
             android:id="@+id/large_message_linear_layout"
             android:layout_width="match_parent"
@@ -77,5 +78,5 @@
             android:layout_gravity="end"
             android:contentDescription="@string/close"
             android:tint="@color/default_icon_color" />
-    </FrameLayout>
+    </org.chromium.components.browser_ui.widget.MaterialCardViewNoShadow>
 </org.chromium.chrome.browser.tasks.tab_management.LargeMessageCardView>
diff --git a/chrome/android/features/tab_ui/java/res/layout/tab_grid_message_card_item.xml b/chrome/android/features/tab_ui/java/res/layout/tab_grid_message_card_item.xml
index 55a54be..29efb97 100644
--- a/chrome/android/features/tab_ui/java/res/layout/tab_grid_message_card_item.xml
+++ b/chrome/android/features/tab_ui/java/res/layout/tab_grid_message_card_item.xml
@@ -8,8 +8,9 @@
     android:id="@+id/tab_grid_message_item"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
+    android:layout_margin="@dimen/tab_list_selected_margin"
     android:orientation="horizontal"
-    android:background="@drawable/message_card_background_with_inset">
+    android:background="@drawable/card_with_corners_background">
     <org.chromium.ui.widget.ChromeImageView
         android:id="@+id/icon"
         android:layout_width="0dp"
diff --git a/chrome/android/features/tab_ui/java/res/values/dimens.xml b/chrome/android/features/tab_ui/java/res/values/dimens.xml
index beddece..8849d197 100644
--- a/chrome/android/features/tab_ui/java/res/values/dimens.xml
+++ b/chrome/android/features/tab_ui/java/res/values/dimens.xml
@@ -6,6 +6,7 @@
     <dimen name="tab_grid_favicon_size">18dp</dimen>
     <dimen name="tab_list_selected_inset">7dp</dimen>
     <dimen name="tab_list_selected_inset_low_end">6dp</dimen>
+    <dimen name="tab_list_selected_margin">7dp</dimen>
     <dimen name="tab_list_card_padding">8dp</dimen>
     <dimen name="tab_list_card_radius">4dp</dimen>
     <dimen name="tab_list_card_title_height">32dp</dimen>
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/MessageCardView.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/MessageCardView.java
index e7d19f9..8ea6c7f 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/MessageCardView.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/MessageCardView.java
@@ -8,11 +8,13 @@
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.drawable.Drawable;
+import android.graphics.drawable.GradientDrawable;
 import android.util.AttributeSet;
 import android.widget.LinearLayout;
 
 import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.chrome.tab_ui.R;
+import org.chromium.components.browser_ui.styles.ChromeColors;
 import org.chromium.components.browser_ui.widget.text.TemplatePreservingTextView;
 import org.chromium.ui.widget.ButtonCompat;
 import org.chromium.ui.widget.ChromeImageView;
@@ -152,6 +154,15 @@
      */
     private void setBackground(boolean isIncognito) {
         setBackgroundResource(TabUiThemeProvider.getMessageCardBackgroundResourceId(isIncognito));
+        // Incognito colors should follow baseline.
+        // Use the color defined in drawable.
+        if (isIncognito) {
+            return;
+        }
+        // Set dynamic color.
+        GradientDrawable gradientDrawable = (GradientDrawable) getBackground();
+        gradientDrawable.setColor(
+                ChromeColors.getSurfaceColor(getContext(), R.dimen.default_elevation_1));
     }
 
     /**
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegate.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegate.java
index e9a40ad..9bd9f37 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegate.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegate.java
@@ -37,6 +37,7 @@
 import org.chromium.chrome.browser.tasks.tab_groups.TabGroupModelFilter;
 import org.chromium.chrome.browser.tasks.tab_management.suggestions.TabSuggestions;
 import org.chromium.chrome.browser.theme.ThemeColorProvider;
+import org.chromium.chrome.browser.toolbar.top.Toolbar;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
 import org.chromium.chrome.features.start_surface.StartSurface;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
@@ -239,6 +240,7 @@
      * @param menuOrKeyboardActionController allows access to menu or keyboard actions.
      * @param multiWindowModeStateDispatcher Gives access to the multi window mode state.
      * @param jankTracker Measures jank while tab switcher is visible.
+     * @param toolbarSupplier Supplies the {@link Toolbar}.
      * @return the {@link StartSurface}
      */
     StartSurface createStartSurface(@NonNull Activity activity,
@@ -260,7 +262,7 @@
             @NonNull TabCreatorManager tabCreatorManager,
             @NonNull MenuOrKeyboardActionController menuOrKeyboardActionController,
             @NonNull MultiWindowModeStateDispatcher multiWindowModeStateDispatcher,
-            @NonNull JankTracker jankTracker);
+            @NonNull JankTracker jankTracker, @NonNull Supplier<Toolbar> toolbarSupplier);
 
     /**
      * Create a {@link TabGroupModelFilter} for the given {@link TabModel}.
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegateImpl.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegateImpl.java
index 9b5ddc4..b1fc7cf 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegateImpl.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegateImpl.java
@@ -43,6 +43,7 @@
 import org.chromium.chrome.browser.tasks.tab_management.suggestions.TabSuggestions;
 import org.chromium.chrome.browser.tasks.tab_management.suggestions.TabSuggestionsOrchestrator;
 import org.chromium.chrome.browser.theme.ThemeColorProvider;
+import org.chromium.chrome.browser.toolbar.top.Toolbar;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
 import org.chromium.chrome.features.start_surface.StartSurface;
 import org.chromium.chrome.features.start_surface.StartSurfaceDelegate;
@@ -179,14 +180,14 @@
             @NonNull TabCreatorManager tabCreatorManager,
             @NonNull MenuOrKeyboardActionController menuOrKeyboardActionController,
             @NonNull MultiWindowModeStateDispatcher multiWindowModeStateDispatcher,
-            @NonNull JankTracker jankTracker) {
+            @NonNull JankTracker jankTracker, @NonNull Supplier<Toolbar> toolbarSupplier) {
         return StartSurfaceDelegate.createStartSurface(activity, scrimCoordinator, sheetController,
                 startSurfaceOneshotSupplier, parentTabSupplier, hadWarmStart, windowAndroid,
                 containerView, dynamicResourceLoaderSupplier, tabModelSelector,
                 browserControlsManager, snackbarManager, shareDelegateSupplier, omniboxStubSupplier,
                 tabContentManager, modalDialogManager, chromeActivityNativeDelegate,
                 activityLifecycleDispatcher, tabCreatorManager, menuOrKeyboardActionController,
-                multiWindowModeStateDispatcher, jankTracker);
+                multiWindowModeStateDispatcher, jankTracker, toolbarSupplier);
     }
 
     @Override
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiThemeProvider.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiThemeProvider.java
index d457d278..6b35a5d 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiThemeProvider.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiThemeProvider.java
@@ -513,8 +513,7 @@
      * @return The background resource id for message card view.
      */
     public static int getMessageCardBackgroundResourceId(boolean isIncognito) {
-        return isIncognito ? R.drawable.message_card_background_with_inset_incognito
-                           : R.drawable.message_card_background_with_inset;
+        return isIncognito ? R.drawable.incognito_card_bg : R.drawable.card_with_corners_background;
     }
 
     /**
@@ -602,4 +601,13 @@
     static boolean themeRefactorEnabled() {
         return CachedFeatureFlags.isEnabled(ChromeFeatureList.THEME_REFACTOR_ANDROID);
     }
+
+    /**
+     * Return the size represented by dimension for margin around message cards.
+     * @param context {@link Context} to retrieve dimension.
+     * @return The margin around message cards in float number.
+     */
+    public static float getMessageCardMarginDimension(Context context) {
+        return context.getResources().getDimension(R.dimen.tab_list_selected_inset);
+    }
 }
diff --git a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridIphTest.java b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridIphTest.java
index a557ed8c..51410ba 100644
--- a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridIphTest.java
+++ b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridIphTest.java
@@ -240,6 +240,8 @@
         ActivityTestUtils.rotateActivityToOrientation(cta, Configuration.ORIENTATION_LANDSCAPE);
         CriteriaHelper.pollUiThread(
                 TabSwitcherCoordinator::hasAppendedMessagesForTesting);
+        onView(allOf(withParent(withId(R.id.compositor_view_holder)), withId(R.id.tab_list_view)))
+                .perform(RecyclerViewActions.scrollTo(withId(R.id.tab_grid_message_item)));
         onView(withId(R.id.tab_grid_message_item)).check(matches(isDisplayed()));
 
         mRenderTestRule.render(
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java
index 7cb7e2b..6e9bb74 100644
--- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java
+++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java
@@ -22,6 +22,7 @@
 import android.widget.ScrollView;
 
 import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
 import androidx.recyclerview.widget.RecyclerView;
@@ -54,6 +55,7 @@
 import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
 import org.chromium.chrome.browser.share.ShareDelegate;
 import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
+import org.chromium.chrome.browser.toolbar.top.Toolbar;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
 import org.chromium.chrome.browser.user_education.UserEducationHelper;
 import org.chromium.chrome.browser.xsurface.FeedLaunchReliabilityLogger;
@@ -149,6 +151,8 @@
     private FeedLaunchReliabilityLogger mLaunchReliabilityLogger;
     private final PrivacyPreferencesManagerImpl mPrivacyPreferencesManager;
 
+    private final Supplier<Toolbar> mToolbarSupplier;
+
     private FeedSwipeRefreshLayout mSwipeRefreshLayout;
 
     @IntDef({StreamTabId.FOR_YOU, StreamTabId.FOLLOWING})
@@ -248,6 +252,10 @@
      * @param bottomSheetController The bottom sheet controller.
      * @param shareDelegateSupplier The supplier for the share delegate used to share articles.
      * @param launchOrigin The origin of what launched the feed.
+     * @param privacyPreferencesManager Manages the privacy preferences.
+     * @param toolbarSupplier Supplies the {@link Toolbar}.
+     * @param FeedLaunchReliabilityLoggingState Holds the state for feed surface creation.
+     * @param swipeRefreshLayout The layout to support pull-to-refresh.
      */
     public FeedSurfaceCoordinator(Activity activity, SnackbarManager snackbarManager,
             WindowAndroid windowAndroid, @Nullable SnapScrollHelper snapScrollHelper,
@@ -259,6 +267,7 @@
             @Nullable ScrollableContainerDelegate externalScrollableContainerDelegate,
             @NewTabPageLaunchOrigin int launchOrigin,
             PrivacyPreferencesManagerImpl privacyPreferencesManager,
+            @NonNull Supplier<Toolbar> toolbarSupplier,
             FeedLaunchReliabilityLoggingState launchReliabilityLoggingState,
             @Nullable FeedSwipeRefreshLayout swipeRefreshLayout) {
         FeedSurfaceTracker.getInstance().initServiceBridge();
@@ -276,6 +285,7 @@
         mScrollableContainerDelegate = externalScrollableContainerDelegate;
         mLaunchReliabilityLoggingState = launchReliabilityLoggingState;
         mPrivacyPreferencesManager = privacyPreferencesManager;
+        mToolbarSupplier = toolbarSupplier;
         mSwipeRefreshLayout = swipeRefreshLayout;
 
         Resources resources = mActivity.getResources();
@@ -328,8 +338,13 @@
     @Override
     public void destroy() {
         if (mSwipeRefreshLayout != null) {
+            if (mSwipeRefreshLayout.isRefreshing()) {
+                mSwipeRefreshLayout.setRefreshing(false);
+                updateReloadButtonVisibility(/*isReloading=*/false);
+            }
             mSwipeRefreshLayout.removeOnRefreshListener(this);
             mSwipeRefreshLayout.disableSwipe();
+            mSwipeRefreshLayout = null;
         }
         stopIph();
         mMediator.destroy();
@@ -384,8 +399,20 @@
 
     @Override
     public void onRefresh() {
+        updateReloadButtonVisibility(/*isReloading=*/true);
         mLaunchReliabilityLogger.logManualRefresh(System.nanoTime());
-        mStream.triggerRefresh((Boolean v) -> { mSwipeRefreshLayout.setRefreshing(false); });
+        mStream.triggerRefresh((Boolean v) -> {
+            if (mSwipeRefreshLayout == null) return;
+            updateReloadButtonVisibility(/*isReloading=*/false);
+            mSwipeRefreshLayout.setRefreshing(false);
+        });
+    }
+
+    void updateReloadButtonVisibility(boolean isReloading) {
+        Toolbar toolbar = mToolbarSupplier.get();
+        if (toolbar != null) {
+            toolbar.updateReloadButtonVisibility(isReloading);
+        }
     }
 
     /**
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
index 462d8b0..ee101f8 100644
--- a/chrome/android/java/AndroidManifest.xml
+++ b/chrome/android/java/AndroidManifest.xml
@@ -37,10 +37,6 @@
         <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
     {% endif %}
 
-    <!--
-      TODO(b/183501112): Remove this condition when always building against the S SDK.
-    -->
-    {% if target_sdk_version == 'S' or target_sdk_version|int >= 31 %}
     <uses-permission-sdk-23 android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30"/>
     <uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30"/>
     <uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_CONNECT"/>
@@ -51,10 +47,6 @@
     -->
     <uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_SCAN"
                             android:usesPermissionFlags="neverForLocation"/>
-    {% else %}
-    <uses-permission-sdk-23 android:name="android.permission.BLUETOOTH"/>
-    <uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_ADMIN"/>
-    {% endif %}
 
     <uses-permission-sdk-23 android:name="android.permission.READ_CONTACTS"/>
     <uses-permission-sdk-23 android:name="android.permission.REORDER_TASKS"/>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
index d40d5f3..b28f56b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -665,7 +665,8 @@
                             /* chromeActivityNativeDelegate= */ this, getLifecycleDispatcher(),
                             getTabCreatorManagerSupplier().get(),
                             getMenuOrKeyboardActionController(),
-                            getMultiWindowModeStateDispatcher(), mJankTracker);
+                            getMultiWindowModeStateDispatcher(), mJankTracker,
+                            getToolbarManager()::getToolbar);
                 }
             }
 
@@ -1380,6 +1381,8 @@
             final String url = loadUrlParams.getUrl();
             boolean fromLauncherShortcut = IntentUtils.safeGetBooleanExtra(
                     intent, IntentHandler.EXTRA_INVOKED_FROM_SHORTCUT, false);
+            boolean fromAppWidget = IntentUtils.safeGetBooleanExtra(
+                    intent, IntentHandler.EXTRA_INVOKED_FROM_APP_WIDGET, false);
             boolean focus = false;
 
             TabModel tabModel = getCurrentTabModel();
@@ -1487,6 +1490,9 @@
                                     UrlConstants.NTP_URL, TabLaunchType.FROM_LAUNCHER_SHORTCUT);
                             recordLauncherShortcutAction(true);
                             reportNewTabShortcutUsed(true);
+                        } else if (fromAppWidget) {
+                            getTabCreator(true).launchUrl(
+                                    UrlConstants.NTP_URL, TabLaunchType.FROM_APP_WIDGET);
                         } else if (IncognitoTabLauncher.didCreateIntent(intent)) {
                             Tab tab = getTabCreator(true).launchUrl(UrlConstants.NTP_URL,
                                     TabLaunchType.FROM_LAUNCH_NEW_INCOGNITO_TAB);
@@ -1827,7 +1833,7 @@
                     this::getCompositorViewHolder, getModalDialogManagerSupplier(),
                     this::getSnackbarManager, getBrowserControlsManager(), getActivityTabProvider(),
                     getLifecycleDispatcher(), getWindowAndroid(), this::getLastUserInteractionTime,
-                    this::hadWarmStart, mJankTracker);
+                    this::hadWarmStart, mJankTracker, getToolbarManager()::getToolbar);
         }
         return mTabDelegateFactory;
     }
@@ -2239,6 +2245,9 @@
                 if (IntentUtils.safeGetBooleanExtra(
                             intent, IntentHandler.EXTRA_INVOKED_FROM_SHORTCUT, false)) {
                     launchType = TabLaunchType.FROM_LAUNCHER_SHORTCUT;
+                } else if (IntentUtils.safeGetBooleanExtra(
+                                   intent, IntentHandler.EXTRA_INVOKED_FROM_APP_WIDGET, false)) {
+                    launchType = TabLaunchType.FROM_APP_WIDGET;
                 } else if (IncognitoTabLauncher.didCreateIntent(intent)) {
                     launchType = TabLaunchType.FROM_LAUNCH_NEW_INCOGNITO_TAB;
                 } else {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java
index baebff6..3b2c327 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java
@@ -128,6 +128,12 @@
             "com.android.chrome.invoked_from_shortcut";
 
     /**
+     * An extra to indicate that the intent was triggered from am app widget.
+     */
+    public static final String EXTRA_INVOKED_FROM_APP_WIDGET =
+            "com.android.chrome.invoked_from_app_widget";
+
+    /**
      * An extra to indicate that the intent was triggered by the launch new incognito tab feature.
      * See {@link org.chromium.chrome.browser.incognito.IncognitoTabLauncher}.
      */
@@ -1061,7 +1067,11 @@
         // OMNIBOX_FOCUSED_ON_NEW_TAB is enabled, a new Tab with omnibox focused will be shown on
         // Startup.
         final boolean isCanonicalizedNTPUrl = UrlUtilities.isCanonicalizedNTPUrl(intentUrl);
-        return isCanonicalizedNTPUrl && IntentHandler.isTabOpenAsNewTabFromLauncher(intent)
+
+        final boolean isFromShortcutOrWidget = IntentHandler.isTabOpenAsNewTabFromLauncher(intent)
+                || IntentHandler.isTabOpenAsNewTabFromAppWidget(intent);
+
+        return isCanonicalizedNTPUrl && isFromShortcutOrWidget
                 && StartSurfaceConfiguration.OMNIBOX_FOCUSED_ON_NEW_TAB.getValue()
                 && IntentHandler.wasIntentSenderChrome(intent);
     }
@@ -1076,6 +1086,16 @@
                         intent, IntentHandler.EXTRA_INVOKED_FROM_SHORTCUT, false);
     }
 
+    /**
+     * @param intent The {@link Intent} to extract the info from.
+     * @return Whether the Intent specifies to create a new Tab from an app widget.
+     */
+    public static boolean isTabOpenAsNewTabFromAppWidget(Intent intent) {
+        return IntentUtils.safeGetBooleanExtra(intent, Browser.EXTRA_CREATE_NEW_TAB, false)
+                && IntentUtils.safeGetBooleanExtra(
+                        intent, IntentHandler.EXTRA_INVOKED_FROM_APP_WIDGET, false);
+    }
+
     /*
      * The default behavior here is to open in a new tab.  If this is changed, ensure
      * intents with action NDEF_DISCOVERED (links beamed over NFC) are handled properly.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java
index 53c53a1..995ebba 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java
@@ -30,6 +30,7 @@
 import org.chromium.chrome.browser.tab.TabWebContentsDelegateAndroid;
 import org.chromium.chrome.browser.tabmodel.TabCreatorManager;
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
+import org.chromium.chrome.browser.toolbar.top.Toolbar;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
 import org.chromium.chrome.browser.ui.native_page.NativePage;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
@@ -67,6 +68,7 @@
     private final Supplier<Long> mLastUserInteractionTimeSupplier;
     private final BooleanSupplier mHadWarmStartSupplier;
     private final JankTracker mJankTracker;
+    private final Supplier<Toolbar> mToolbarSupplier;
 
     private NativePageFactory mNativePageFactory;
 
@@ -85,7 +87,7 @@
             BrowserControlsManager browserControlsManager, Supplier<Tab> currentTabSupplier,
             ActivityLifecycleDispatcher lifecycleDispatcher, WindowAndroid windowAndroid,
             Supplier<Long> lastUserInteractionTimeSupplier, BooleanSupplier hadWarmStartSupplier,
-            JankTracker jankTracker) {
+            JankTracker jankTracker, Supplier<Toolbar> toolbarSupplier) {
         mActivity = activity;
         mAppBrowserControlsVisibilityDelegate = appBrowserControlsVisibilityDelegate;
         mShareDelegateSupplier = shareDelegateSupplier;
@@ -108,6 +110,7 @@
         mLastUserInteractionTimeSupplier = lastUserInteractionTimeSupplier;
         mHadWarmStartSupplier = hadWarmStartSupplier;
         mJankTracker = jankTracker;
+        mToolbarSupplier = toolbarSupplier;
     }
 
     @Override
@@ -148,7 +151,7 @@
                     mBrowserControlsManager, mCurrentTabSupplier, mSnackbarManagerSupplier,
                     mLifecycleDispatcher, mTabModelSelectorSupplier.get(), mShareDelegateSupplier,
                     mWindowAndroid, mLastUserInteractionTimeSupplier, mHadWarmStartSupplier,
-                    mTabCreatorManager, mJankTracker);
+                    mTabCreatorManager, mJankTracker, mToolbarSupplier);
         }
         return mNativePageFactory.createNativePage(url, candidatePage, tab);
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java
index 8fb000b..6edc1d2 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java
@@ -193,7 +193,8 @@
             if (type == TabLaunchType.FROM_RESTORE || type == TabLaunchType.FROM_REPARENTING
                     || type == TabLaunchType.FROM_EXTERNAL_APP
                     || type == TabLaunchType.FROM_LAUNCHER_SHORTCUT
-                    || type == TabLaunchType.FROM_STARTUP) {
+                    || type == TabLaunchType.FROM_STARTUP
+                    || type == TabLaunchType.FROM_APP_WIDGET) {
                 return;
             }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
index a5e552b..d966544 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
@@ -38,6 +38,7 @@
 import org.chromium.chrome.browser.tab.state.CriticalPersistedTabData;
 import org.chromium.chrome.browser.tabmodel.TabCreatorManager;
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
+import org.chromium.chrome.browser.toolbar.top.Toolbar;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
 import org.chromium.chrome.browser.ui.native_page.NativePage;
 import org.chromium.chrome.browser.ui.native_page.NativePage.NativePageType;
@@ -66,6 +67,7 @@
     private final BooleanSupplier mHadWarmStartSupplier;
     private final TabCreatorManager mTabCreatorManager;
     private final JankTracker mJankTracker;
+    private final Supplier<Toolbar> mToolbarSupplier;
     private NewTabPageUma mNewTabPageUma;
 
     private NativePageBuilder mNativePageBuilder;
@@ -81,7 +83,8 @@
             @NonNull WindowAndroid windowAndroid,
             @NonNull Supplier<Long> lastUserInteractionTimeSupplier,
             @NonNull BooleanSupplier hadWarmStartSupplier,
-            @NonNull TabCreatorManager tabCreatorManager, @NonNull JankTracker jankTracker) {
+            @NonNull TabCreatorManager tabCreatorManager, @NonNull JankTracker jankTracker,
+            @NonNull Supplier<Toolbar> toolbarSupplier) {
         mActivity = activity;
         mBottomSheetController = sheetController;
         mBrowserControlsManager = browserControlsManager;
@@ -95,14 +98,16 @@
         mHadWarmStartSupplier = hadWarmStartSupplier;
         mTabCreatorManager = tabCreatorManager;
         mJankTracker = jankTracker;
+        mToolbarSupplier = toolbarSupplier;
     }
 
     private NativePageBuilder getBuilder() {
         if (mNativePageBuilder == null) {
-            mNativePageBuilder = new NativePageBuilder(mActivity, this::getNewTabPageUma,
-                    mBottomSheetController, mBrowserControlsManager, mCurrentTabSupplier,
-                    mSnackbarManagerSupplier, mLifecycleDispatcher, mTabModelSelector,
-                    mShareDelegateSupplier, mWindowAndroid, mTabCreatorManager, mJankTracker);
+            mNativePageBuilder =
+                    new NativePageBuilder(mActivity, this::getNewTabPageUma, mBottomSheetController,
+                            mBrowserControlsManager, mCurrentTabSupplier, mSnackbarManagerSupplier,
+                            mLifecycleDispatcher, mTabModelSelector, mShareDelegateSupplier,
+                            mWindowAndroid, mTabCreatorManager, mJankTracker, mToolbarSupplier);
         }
         return mNativePageBuilder;
     }
@@ -130,6 +135,7 @@
         private final WindowAndroid mWindowAndroid;
         private final TabCreatorManager mTabCreatorManager;
         private final JankTracker mJankTracker;
+        private final Supplier<Toolbar> mToolbarSupplier;
 
         public NativePageBuilder(Activity activity, Supplier<NewTabPageUma> uma,
                 BottomSheetController sheetController,
@@ -137,7 +143,8 @@
                 Supplier<SnackbarManager> snackbarManagerSupplier,
                 ActivityLifecycleDispatcher lifecycleDispatcher, TabModelSelector tabModelSelector,
                 Supplier<ShareDelegate> shareDelegateSupplier, WindowAndroid windowAndroid,
-                TabCreatorManager tabCreatorManager, JankTracker jankTracker) {
+                TabCreatorManager tabCreatorManager, JankTracker jankTracker,
+                Supplier<Toolbar> toolbarSupplier) {
             mActivity = activity;
             mUma = uma;
             mBottomSheetController = sheetController;
@@ -150,6 +157,7 @@
             mWindowAndroid = windowAndroid;
             mTabCreatorManager = tabCreatorManager;
             mJankTracker = jankTracker;
+            mToolbarSupplier = toolbarSupplier;
         }
 
         protected NativePage buildNewTabPage(Tab tab, String url) {
@@ -161,7 +169,8 @@
                     mSnackbarManagerSupplier.get(), mLifecycleDispatcher, mTabModelSelector,
                     DeviceFormFactor.isWindowOnTablet(mWindowAndroid), mUma.get(),
                     ColorUtils.inNightMode(mActivity), nativePageHost, tab, url,
-                    mBottomSheetController, mShareDelegateSupplier, mWindowAndroid, mJankTracker);
+                    mBottomSheetController, mShareDelegateSupplier, mWindowAndroid, mJankTracker,
+                    mToolbarSupplier);
         }
 
         protected NativePage buildBookmarksPage(Tab tab) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
index cf19605..3d4691e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
@@ -70,6 +70,7 @@
 import org.chromium.chrome.browser.tab.TabObserver;
 import org.chromium.chrome.browser.tab.TabSelectionType;
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
+import org.chromium.chrome.browser.toolbar.top.Toolbar;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
 import org.chromium.chrome.browser.ui.native_page.NativePage;
 import org.chromium.chrome.browser.ui.native_page.NativePageHost;
@@ -141,6 +142,8 @@
 
     private final int mTabStripAndToolbarHeight;
 
+    private final Supplier<Toolbar> mToolbarSupplier;
+
     @Override
     public void onControlsOffsetChanged(int topOffset, int topControlsMinHeightOffset,
             int bottomOffset, int bottomControlsMinHeightOffset, boolean needsAnimate) {
@@ -302,6 +305,7 @@
      * @param shareDelegateSupplier Supplies the Delegate used to open SharingHub.
      * @param windowAndroid The containing window of this page.
      * @param jankTracker {@link JankTracker} object to measure jankiness while NTP is visible.
+     * @param toolbarSupplier Supplies the {@link Toolbar}.
      */
     public NewTabPage(Activity activity, BrowserControlsStateProvider browserControlsStateProvider,
             Supplier<Tab> activityTabProvider, SnackbarManager snackbarManager,
@@ -310,7 +314,7 @@
             NativePageHost nativePageHost, Tab tab, String url,
             BottomSheetController bottomSheetController,
             Supplier<ShareDelegate> shareDelegateSupplier, WindowAndroid windowAndroid,
-            JankTracker jankTracker) {
+            JankTracker jankTracker, Supplier<Toolbar> toolbarSupplier) {
         mConstructedTimeNs = System.nanoTime();
         TraceEvent.begin(TAG);
 
@@ -319,6 +323,7 @@
         mTab = tab;
         mNewTabPageUma = uma;
         mJankTracker = jankTracker;
+        mToolbarSupplier = toolbarSupplier;
         mMostVisitedTileClickObservers = new ObserverList<>();
         Profile profile = Profile.fromWebContents(mTab.getWebContents());
 
@@ -461,7 +466,7 @@
                 /* isPlaceholderShownInitially= */ false, bottomSheetController,
                 shareDelegateSupplier, /* externalScrollableContainerDelegate= */ null,
                 NewTabPageUtils.decodeOriginFromNtpUrl(url),
-                PrivacyPreferencesManagerImpl.getInstance(),
+                PrivacyPreferencesManagerImpl.getInstance(), mToolbarSupplier,
                 new FeedLaunchReliabilityLoggingState(SurfaceType.NEW_TAB_PAGE, mConstructedTimeNs),
                 FeedSwipeRefreshLayout.create(activity));
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider.java
index e3c98c4..46d475b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider.java
@@ -14,6 +14,7 @@
 
 import org.chromium.base.ContextUtils;
 import org.chromium.base.ThreadUtils;
+import org.chromium.chrome.browser.IntentHandler;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.ui.quickactionsearchwidget.QuickActionSearchWidgetProviderDelegate;
 import org.chromium.chrome.browser.ui.quickactionsearchwidget.QuickActionSearchWidgetType;
@@ -82,8 +83,9 @@
             ComponentName widgetReceiverComponent =
                     new ComponentName(context, QuickActionSearchWidgetReceiver.class);
 
-            mDelegate = new QuickActionSearchWidgetProviderDelegate(
-                    widgetType, widgetReceiverComponent);
+            mDelegate = new QuickActionSearchWidgetProviderDelegate(widgetType,
+                    widgetReceiverComponent,
+                    IntentHandler.createTrustedOpenNewTabIntent(context, /*incognito=*/true));
         }
         return mDelegate;
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/survey/ChromeSurveyController.java b/chrome/android/java/src/org/chromium/chrome/browser/survey/ChromeSurveyController.java
index d357a97..e322827 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/survey/ChromeSurveyController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/survey/ChromeSurveyController.java
@@ -46,7 +46,6 @@
 import org.chromium.components.messages.MessageBannerProperties;
 import org.chromium.components.messages.MessageDispatcher;
 import org.chromium.components.messages.MessageIdentifier;
-import org.chromium.components.messages.MessageScopeType;
 import org.chromium.ui.modelutil.PropertyModel;
 import org.chromium.url.GURL;
 
@@ -254,8 +253,7 @@
                                     this::recordSurveyPromptMetrics)
                             .build();
 
-            mMessageDispatcher.enqueueMessage(
-                    message, tab.getWebContents(), MessageScopeType.WINDOW, false);
+            mMessageDispatcher.enqueueWindowScopedMessage(message, false);
         } else {
             InfoBarContainer.get(tab).addAnimationListener(this);
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
index d5ed0fd3..5f782070 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
@@ -463,6 +463,7 @@
             case TabLaunchType.FROM_STARTUP:
             case TabLaunchType.FROM_LAUNCHER_SHORTCUT:
             case TabLaunchType.FROM_LAUNCH_NEW_INCOGNITO_TAB:
+            case TabLaunchType.FROM_APP_WIDGET:
                 transition = PageTransition.AUTO_TOPLEVEL;
                 break;
             case TabLaunchType.FROM_LONGPRESS_FOREGROUND:
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tasks/TasksUma.java b/chrome/android/java/src/org/chromium/chrome/browser/tasks/TasksUma.java
index 7096fc7..94556dae 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tasks/TasksUma.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tasks/TasksUma.java
@@ -76,7 +76,8 @@
             if (tabLaunchType == TabLaunchType.FROM_CHROME_UI
                     || tabLaunchType == TabLaunchType.FROM_START_SURFACE
                     || tabLaunchType == TabLaunchType.FROM_LONGPRESS_BACKGROUND
-                    || tabLaunchType == TabLaunchType.FROM_LAUNCHER_SHORTCUT) {
+                    || tabLaunchType == TabLaunchType.FROM_LAUNCHER_SHORTCUT
+                    || tabLaunchType == TabLaunchType.FROM_APP_WIDGET) {
                 manuallyCreatedCount++;
             } else if (tabLaunchType == TabLaunchType.FROM_LONGPRESS_FOREGROUND) {
                 targetBlankCreatedCount++;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
index b927bc6..b17b4f1 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
@@ -515,7 +515,7 @@
             mMessageDispatcher = MessagesFactory.createMessageDispatcher(container,
                     mMessageContainerCoordinator::getMessageMaxTranslation,
                     new ChromeMessageAutodismissDurationProvider(),
-                    mWindowAndroid::startAnimationOverContent);
+                    mWindowAndroid::startAnimationOverContent, mActivity.getWindowAndroid());
             mMessageQueueMediator = new ChromeMessageQueueMediator(mBrowserControlsManager,
                     mMessageContainerCoordinator, mActivityTabProvider,
                     mLayoutStateProviderOneShotSupplier, mActivity.getModalDialogManagerSupplier(),
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelBaseTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelBaseTest.java
index 5c562f8..49777ae 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelBaseTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelBaseTest.java
@@ -9,6 +9,7 @@
 import android.view.ViewGroup;
 
 import androidx.annotation.Nullable;
+import androidx.test.filters.LargeTest;
 import androidx.test.filters.MediumTest;
 
 import org.junit.After;
@@ -281,7 +282,7 @@
      * Tests that a panel is only maximized when desired height is far above the max.
      */
     @Test
-    @MediumTest
+    @LargeTest
     @Feature({"OverlayPanelBase"})
     @UiThreadTest
     public void testLargeDesiredHeightIsMaximized() {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelManagerTest.java
index 8588740..73d5211 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelManagerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelManagerTest.java
@@ -9,6 +9,7 @@
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
 
+import androidx.test.filters.LargeTest;
 import androidx.test.filters.MediumTest;
 
 import org.junit.After;
@@ -180,7 +181,7 @@
     }
 
     @Test
-    @MediumTest
+    @LargeTest
     @Feature({"OverlayPanel"})
     @UiThreadTest
     public void testPanelClosed() {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/tab/TabUmaTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/tab/TabUmaTest.java
index dbff47b..6250df3 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/tab/TabUmaTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/tab/TabUmaTest.java
@@ -88,7 +88,8 @@
                 cta.getModalDialogManagerSupplier(), cta::getSnackbarManager,
                 cta.getBrowserControlsManager(), cta.getActivityTabProvider(),
                 cta.getLifecycleDispatcher(), cta.getWindowAndroid(),
-                cta::getLastUserInteractionTime, cta::hadWarmStart, new DummyJankTracker());
+                cta::getLastUserInteractionTime, cta::hadWarmStart, new DummyJankTracker(),
+                rootUiCoordinator.getToolbarManager()::getToolbar);
         // clang-format on
     }
 
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinatorTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinatorTest.java
index 6542f30..0e590679 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinatorTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinatorTest.java
@@ -351,6 +351,8 @@
                 null, mSectionHeaderView, false, new TestSurfaceDelegate(), mPageNavigationDelegate,
                 mProfileMock, false, mBottomSheetController, mShareDelegateSupplier, null,
                 NewTabPageLaunchOrigin.UNKNOWN, mPrivacyPreferencesManager,
+                ()
+                        -> { return null; },
                 new FeedLaunchReliabilityLoggingState(SURFACE_TYPE, SURFACE_CREATION_TIME_NS),
                 null);
     }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/native_page/NativePageFactoryTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/native_page/NativePageFactoryTest.java
index 4a316bb..3e9a285 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/native_page/NativePageFactoryTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/native_page/NativePageFactoryTest.java
@@ -94,7 +94,7 @@
     private static class MockNativePageBuilder extends NativePageFactory.NativePageBuilder {
         private MockNativePageBuilder() {
             super(null, null, null, null, null, null, null, null, null, null, null,
-                    new DummyJankTracker());
+                    new DummyJankTracker(), null);
         }
 
         @Override
@@ -121,7 +121,7 @@
     @Before
     public void setUp() {
         mNativePageFactory = new NativePageFactory(null, null, null, null, null, null, null, null,
-                null, null, null, null, new DummyJankTracker());
+                null, null, null, null, new DummyJankTracker(), null);
         mNativePageFactory.setNativePageBuilderForTesting(new MockNativePageBuilder());
     }
 
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/survey/ChromeSurveyControllerFlowTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/survey/ChromeSurveyControllerFlowTest.java
index eb2020a..6b39dca 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/survey/ChromeSurveyControllerFlowTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/survey/ChromeSurveyControllerFlowTest.java
@@ -57,7 +57,6 @@
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
 import org.chromium.chrome.browser.tabmodel.TabModelSelectorObserver;
 import org.chromium.components.messages.MessageDispatcher;
-import org.chromium.components.messages.MessageScopeType;
 import org.chromium.content_public.browser.WebContents;
 
 import java.util.HashMap;
@@ -349,8 +348,7 @@
         Assert.assertNotNull(mMessageDispatcher);
         mTestSurveyController.onDownloadSuccessRunnable.run();
         assertSurveyInfoBarShown(false);
-        verify(mMessageDispatcher)
-                .enqueueMessage(any(), eq(mMockWebContent), eq(MessageScopeType.WINDOW), eq(false));
+        verify(mMessageDispatcher).enqueueWindowScopedMessage(any(), eq(false));
     }
 
     @Test
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 59902b4..1a6051c0 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -7264,6 +7264,9 @@
       <message name="IDS_TAB_SEARCH_TAB_COUNT" desc="Plural form of a message indicating the presence of a number of tabs greater than one.">
         <ph name="NUM">$1<ex>2</ex></ph> Tabs
       </message>
+      <message name="IDS_TAB_SEARCH_EXPAND_RECENTLY_CLOSED_ENTRIES" desc="The label for the button that toggles showing the recently closed entries list section.">
+        Toggle Recently Closed Entries
+      </message>
 
       <!-- Strings for Window Titles in Menus -->
       <if expr="not use_titlecase">
@@ -7839,6 +7842,9 @@
       <message name="IDS_SHARING_HUB_SHARE_LABEL" desc="The Label for the Third Party Targets in the Sharing Hub dialog.">
         Share link to
       </message>
+      <message name="IDS_SHARING_HUB_SHARE_LABEL_ACCESSIBILITY" desc="The acccessibility label spoken by screen readers when the label for a Third Party Sharing Target gets focus but not visually rendered.">
+        Share link to <ph name="SHARE_TARGET">$1<ex>Facebook</ex></ph>
+      </message>
 
       <!-- Desktop screenshot -->
       <message name="IDS_BROWSER_SHARING_SCREENSHOT_POST_CAPTURE_TITLE"
diff --git a/chrome/app/generated_resources_grd/IDS_SHARING_HUB_SHARE_LABEL_ACCESSIBILITY.png.sha1 b/chrome/app/generated_resources_grd/IDS_SHARING_HUB_SHARE_LABEL_ACCESSIBILITY.png.sha1
new file mode 100644
index 0000000..3b6baa7
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_SHARING_HUB_SHARE_LABEL_ACCESSIBILITY.png.sha1
@@ -0,0 +1 @@
+8f382708069e7656254c8ab0a726277a92bb72a0
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_TAB_SEARCH_EXPAND_RECENTLY_CLOSED_ENTRIES.png.sha1 b/chrome/app/generated_resources_grd/IDS_TAB_SEARCH_EXPAND_RECENTLY_CLOSED_ENTRIES.png.sha1
new file mode 100644
index 0000000..16b89b4b
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_TAB_SEARCH_EXPAND_RECENTLY_CLOSED_ENTRIES.png.sha1
@@ -0,0 +1 @@
+8bfc1266f52f663c0263de37e7b336e97f963b96
\ No newline at end of file
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index dbf5814..db9c9fb8 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -1600,6 +1600,7 @@
     {ntp_features::kNtpChromeCartModuleAbandonedCartDiscountParam, "true"}};
 const FeatureEntry::FeatureParam kNtpChromeCartModuleAbandonedCartDiscount[] = {
     {ntp_features::kNtpChromeCartModuleAbandonedCartDiscountParam, "true"},
+    {ntp_features::NtpChromeCartModuleAbandonedCartDiscountUseUtmParam, "true"},
     {"partner-merchant-pattern",
      "(electronicexpress.com|zazzle.com|wish.com|homesquare.com)"}};
 const FeatureEntry::FeatureParam kNtpChromeCartModuleHeuristicsImprovement[] = {
@@ -7717,6 +7718,11 @@
     {"enable-drdc", flag_descriptions::kEnableDrDcName,
      flag_descriptions::kEnableDrDcDescription, kOsAll,
      FEATURE_VALUE_TYPE(features::kEnableDrDc)},
+    {"autofill-fill-merchant-promo-code-fields",
+     flag_descriptions::kAutofillFillMerchantPromoCodeFieldsName,
+     flag_descriptions::kAutofillFillMerchantPromoCodeFieldsDescription, kOsAll,
+     FEATURE_VALUE_TYPE(
+         autofill::features::kAutofillFillMerchantPromoCodeFields)},
 
     // NOTE: Adding a new flag requires adding a corresponding entry to enum
     // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag
diff --git a/chrome/browser/android/cookies/cookies_fetcher_util.cc b/chrome/browser/android/cookies/cookies_fetcher_util.cc
index 9437a37..2a0b94b 100644
--- a/chrome/browser/android/cookies/cookies_fetcher_util.cc
+++ b/chrome/browser/android/cookies/cookies_fetcher_util.cc
@@ -13,6 +13,7 @@
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/storage_partition.h"
 #include "content/public/common/content_switches.h"
+#include "net/cookies/cookie_partition_key.h"
 #include "net/cookies/cookie_util.h"
 #include "services/network/public/mojom/cookie_manager.mojom.h"
 
@@ -41,8 +42,8 @@
 
   int index = 0;
   for (auto i = cookies.cbegin(); i != cookies.cend(); ++i) {
-    std::string pk = net::kEmptyCookiePartitionKey;
-    if (!i->SerializePartitionKey(pk))
+    std::string pk;
+    if (!net::CookiePartitionKey::Serialize(i->PartitionKey(), pk))
       continue;
     ScopedJavaLocalRef<jobject> java_cookie = Java_CookiesFetcher_createCookie(
         env, base::android::ConvertUTF8ToJavaString(env, i->Name()),
@@ -104,8 +105,8 @@
   std::string domain_str(base::android::ConvertJavaStringToUTF8(env, domain));
   std::string path_str(base::android::ConvertJavaStringToUTF8(env, path));
 
-  absl::optional<net::SchemefulSite> pk;
-  if (!net::CanonicalCookie::DeserializePartitionKey(
+  absl::optional<net::CookiePartitionKey> pk;
+  if (!net::CookiePartitionKey::Deserialize(
           base::android::ConvertJavaStringToUTF8(env, partition_key), pk)) {
     return;
   }
diff --git a/chrome/browser/android/send_tab_to_self/android_notification_handler.cc b/chrome/browser/android/send_tab_to_self/android_notification_handler.cc
index 88d1bb5..882d9a2 100644
--- a/chrome/browser/android/send_tab_to_self/android_notification_handler.cc
+++ b/chrome/browser/android/send_tab_to_self/android_notification_handler.cc
@@ -59,6 +59,10 @@
     const std::vector<const SendTabToSelfEntry*>& new_entries) {
   for (const SendTabToSelfEntry* entry : new_entries) {
     if (base::FeatureList::IsEnabled(send_tab_to_self::kSendTabToSelfV2)) {
+      // Only enqueue a single message at a time.
+      if (message_ != nullptr)
+        return;
+
       content::WebContents* web_contents = GetWebContentsForProfile(profile_);
 
       message_ = std::make_unique<messages::MessageWrapper>(
@@ -80,8 +84,8 @@
           ResourceMapper::MapToJavaDrawableId(IDR_SEND_TAB_TO_SELF));
 
       // TODO(crbug.com/1220129): A valid WebContents shouldn't be needed here.
-      messages::MessageDispatcherBridge::Get()->EnqueueMessage(
-          message_.get(), web_contents, messages::MessageScopeType::WINDOW,
+      messages::MessageDispatcherBridge::Get()->EnqueueWindowScopedMessage(
+          message_.get(), web_contents->GetTopLevelNativeWindow(),
           messages::MessagePriority::kNormal);
     } else {
       JNIEnv* env = AttachCurrentThread();
@@ -121,6 +125,7 @@
                                 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, false);
   params.should_replace_current_entry = false;
   GetWebContentsForProfile(profile_)->OpenURL(params);
+  message_.reset();
 }
 
 void AndroidNotificationHandler::OnMessageDismissed(
diff --git a/chrome/browser/ash/child_accounts/family_user_parental_control_metrics_unittest.cc b/chrome/browser/ash/child_accounts/family_user_parental_control_metrics_unittest.cc
index 7ba2e0b..d175c9a 100644
--- a/chrome/browser/ash/child_accounts/family_user_parental_control_metrics_unittest.cc
+++ b/chrome/browser/ash/child_accounts/family_user_parental_control_metrics_unittest.cc
@@ -375,6 +375,12 @@
       /*sample=*/
       SupervisedUserURLFilter::ManagedSiteList::kEmpty,
       /*expected_count=*/1);
+  histogram_tester_.ExpectUniqueSample(
+      SupervisedUserURLFilter::GetApprovedSitesCountHistogramNameForTest(),
+      /*sample=*/0, /*expected_count=*/1);
+  histogram_tester_.ExpectUniqueSample(
+      SupervisedUserURLFilter::GetBlockedSitesCountHistogramNameForTest(),
+      /*sample=*/0, /*expected_count=*/1);
 
   // Blocks `kExampleHost0`.
   {
@@ -389,6 +395,12 @@
       /*sample=*/
       SupervisedUserURLFilter::ManagedSiteList::kBlockedListOnly,
       /*expected_count=*/1);
+  histogram_tester_.ExpectBucketCount(
+      SupervisedUserURLFilter::GetApprovedSitesCountHistogramNameForTest(),
+      /*sample=*/0, /*expected_count=*/2);
+  histogram_tester_.ExpectBucketCount(
+      SupervisedUserURLFilter::GetBlockedSitesCountHistogramNameForTest(),
+      /*sample=*/1, /*expected_count=*/1);
 
   // Approves `kExampleHost0`.
   {
@@ -403,6 +415,12 @@
       /*sample=*/
       SupervisedUserURLFilter::ManagedSiteList::kApprovedListOnly,
       /*expected_count=*/1);
+  histogram_tester_.ExpectBucketCount(
+      SupervisedUserURLFilter::GetApprovedSitesCountHistogramNameForTest(),
+      /*sample=*/1, /*expected_count=*/1);
+  histogram_tester_.ExpectBucketCount(
+      SupervisedUserURLFilter::GetBlockedSitesCountHistogramNameForTest(),
+      /*sample=*/0, /*expected_count=*/2);
 
   // Blocks `kExampleURL1`.
   {
@@ -417,10 +435,22 @@
       /*sample=*/
       SupervisedUserURLFilter::ManagedSiteList::kBoth,
       /*expected_count=*/1);
+  histogram_tester_.ExpectBucketCount(
+      SupervisedUserURLFilter::GetApprovedSitesCountHistogramNameForTest(),
+      /*sample=*/1, /*expected_count=*/2);
+  histogram_tester_.ExpectBucketCount(
+      SupervisedUserURLFilter::GetBlockedSitesCountHistogramNameForTest(),
+      /*sample=*/1, /*expected_count=*/2);
 
   histogram_tester_.ExpectTotalCount(
       SupervisedUserURLFilter::GetManagedSiteListHistogramNameForTest(),
       /*expected_count=*/4);
+  histogram_tester_.ExpectTotalCount(
+      SupervisedUserURLFilter::GetApprovedSitesCountHistogramNameForTest(),
+      /*expected_count=*/4);
+  histogram_tester_.ExpectTotalCount(
+      SupervisedUserURLFilter::GetBlockedSitesCountHistogramNameForTest(),
+      /*expected_count=*/4);
 }
 
 }  // namespace ash
diff --git a/chrome/browser/ash/crosapi/browser_manager.cc b/chrome/browser/ash/crosapi/browser_manager.cc
index 401f298..f8fc0e5 100644
--- a/chrome/browser/ash/crosapi/browser_manager.cc
+++ b/chrome/browser/ash/crosapi/browser_manager.cc
@@ -783,8 +783,10 @@
     std::move(load_complete_callback_).Run(success);
   }
 
-  if (state_ == State::STOPPED && GetLaunchOnLoginPref())
+  if (state_ == State::STOPPED &&
+      (browser_util::IsLacrosPrimaryBrowser() || GetLaunchOnLoginPref())) {
     Start(mojom::InitialBrowserAction::kUseStartupPreference);
+  }
 }
 
 void BrowserManager::PrepareLacrosPolicies() {
diff --git a/chrome/browser/ash/crosapi/download_controller_ash.cc b/chrome/browser/ash/crosapi/download_controller_ash.cc
index 2b9a598..0212e638 100644
--- a/chrome/browser/ash/crosapi/download_controller_ash.cc
+++ b/chrome/browser/ash/crosapi/download_controller_ash.cc
@@ -20,21 +20,21 @@
 }
 
 void DownloadControllerAsh::OnDownloadCreated(
-    crosapi::mojom::DownloadEventPtr event) {
+    crosapi::mojom::DownloadItemPtr download) {
   for (auto& observer : observers_)
-    observer.OnLacrosDownloadCreated(*event);
+    observer.OnLacrosDownloadCreated(*download);
 }
 
 void DownloadControllerAsh::OnDownloadUpdated(
-    crosapi::mojom::DownloadEventPtr event) {
+    crosapi::mojom::DownloadItemPtr download) {
   for (auto& observer : observers_)
-    observer.OnLacrosDownloadUpdated(*event);
+    observer.OnLacrosDownloadUpdated(*download);
 }
 
 void DownloadControllerAsh::OnDownloadDestroyed(
-    crosapi::mojom::DownloadEventPtr event) {
+    crosapi::mojom::DownloadItemPtr download) {
   for (auto& observer : observers_)
-    observer.OnLacrosDownloadDestroyed(*event);
+    observer.OnLacrosDownloadDestroyed(*download);
 }
 
 void DownloadControllerAsh::AddObserver(DownloadControllerObserver* observer) {
diff --git a/chrome/browser/ash/crosapi/download_controller_ash.h b/chrome/browser/ash/crosapi/download_controller_ash.h
index b128a74..506885d 100644
--- a/chrome/browser/ash/crosapi/download_controller_ash.h
+++ b/chrome/browser/ash/crosapi/download_controller_ash.h
@@ -23,9 +23,9 @@
   // Allows ash classes to observe download events.
   class DownloadControllerObserver : public base::CheckedObserver {
    public:
-    virtual void OnLacrosDownloadCreated(const mojom::DownloadEvent& event) {}
-    virtual void OnLacrosDownloadUpdated(const mojom::DownloadEvent& event) {}
-    virtual void OnLacrosDownloadDestroyed(const mojom::DownloadEvent& event) {}
+    virtual void OnLacrosDownloadCreated(const mojom::DownloadItem&) {}
+    virtual void OnLacrosDownloadUpdated(const mojom::DownloadItem&) {}
+    virtual void OnLacrosDownloadDestroyed(const mojom::DownloadItem&) {}
   };
 
   DownloadControllerAsh();
@@ -40,9 +40,9 @@
   // mojom::DownloadController:
   void BindClient(
       mojo::PendingRemote<mojom::DownloadControllerClient> client) override;
-  void OnDownloadCreated(mojom::DownloadEventPtr event) override;
-  void OnDownloadUpdated(mojom::DownloadEventPtr event) override;
-  void OnDownloadDestroyed(mojom::DownloadEventPtr event) override;
+  void OnDownloadCreated(mojom::DownloadItemPtr download) override;
+  void OnDownloadUpdated(mojom::DownloadItemPtr download) override;
+  void OnDownloadDestroyed(mojom::DownloadItemPtr download) override;
 
   // Required for the below `base::ObserverList`:
   void AddObserver(DownloadControllerObserver* observer);
diff --git a/chrome/browser/ash/file_manager/file_tasks_browsertest.cc b/chrome/browser/ash/file_manager/file_tasks_browsertest.cc
index b19c3fa..5cc0bbc 100644
--- a/chrome/browser/ash/file_manager/file_tasks_browsertest.cc
+++ b/chrome/browser/ash/file_manager/file_tasks_browsertest.cc
@@ -341,7 +341,7 @@
 // The Media App will be preferred over a chrome app with a specific extension,
 // unless that app is set default via prefs.
 IN_PROC_BROWSER_TEST_P(FileTasksBrowserTest, MediaAppPreferredOverChromeApps) {
-  if (GetParam() == TestProfileType::kGuest) {
+  if (profile_type() == TestProfileType::kGuest) {
     // The provided file system can't install in guest mode. Just check that
     // MediaApp handles tiff.
     TestExpectationsAgainstDefaultTasks({{"tiff", kMediaAppId}});
@@ -355,7 +355,7 @@
       profile->GetPrefs(),
       TaskDescriptor(extension->id(), StringToTaskType("app"), "tiffAction"),
       {"tiff"}, {"image/tiff"});
-  if (GetParam() == TestProfileType::kIncognito) {
+  if (profile_type() == TestProfileType::kIncognito) {
     // In incognito, the provided file system can exist, but the file handler
     // preference can't be changed.
     TestExpectationsAgainstDefaultTasks({{"tiff", kMediaAppId}});
@@ -366,7 +366,7 @@
 
 // Test expectations for files coming from provided file systems.
 IN_PROC_BROWSER_TEST_P(FileTasksBrowserTest, ProvidedFileSystemFileSource) {
-  if (GetParam() == TestProfileType::kGuest) {
+  if (profile_type() == TestProfileType::kGuest) {
     // Provided file systems don't exist in guest. This test seems to work OK in
     // incognito mode though.
     return;
@@ -415,19 +415,11 @@
   EXPECT_EQ(remaining_expectations, 0);
 }
 
-INSTANTIATE_TEST_SUITE_P(All,
-                         FileTasksBrowserTest,
-                         ::testing::Values(TestProfileType::kRegular,
-                                           TestProfileType::kIncognito,
-                                           TestProfileType::kGuest),
-                         TestProfileTypeToString);
+INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_ALL_PROFILE_TYPES_P(
+    FileTasksBrowserTest);
 
-INSTANTIATE_TEST_SUITE_P(All,
-                         FileTasksBrowserTestWithPdf,
-                         ::testing::Values(TestProfileType::kRegular,
-                                           TestProfileType::kIncognito,
-                                           TestProfileType::kGuest),
-                         TestProfileTypeToString);
+INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_ALL_PROFILE_TYPES_P(
+    FileTasksBrowserTestWithPdf);
 
 }  // namespace file_tasks
 }  // namespace file_manager
diff --git a/chrome/browser/ash/full_restore/full_restore_app_launch_handler_browsertest.cc b/chrome/browser/ash/full_restore/full_restore_app_launch_handler_browsertest.cc
index ea2bd5c..429072ba 100644
--- a/chrome/browser/ash/full_restore/full_restore_app_launch_handler_browsertest.cc
+++ b/chrome/browser/ash/full_restore/full_restore_app_launch_handler_browsertest.cc
@@ -15,6 +15,7 @@
 #include "ash/shell.h"
 #include "ash/wm/window_state.h"
 #include "ash/wm/wm_event.h"
+#include "base/feature_list.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/timer/timer.h"
@@ -24,6 +25,7 @@
 #include "chrome/browser/apps/platform_apps/app_browsertest_util.h"
 #include "chrome/browser/ash/arc/arc_util.h"
 #include "chrome/browser/ash/arc/session/arc_session_manager.h"
+#include "chrome/browser/ash/crosapi/browser_util.h"
 #include "chrome/browser/ash/full_restore/arc_app_launch_handler.h"
 #include "chrome/browser/ash/full_restore/full_restore_arc_task_handler.h"
 #include "chrome/browser/ash/full_restore/full_restore_service.h"
@@ -40,6 +42,7 @@
 #include "chrome/browser/web_applications/components/web_app_id.h"
 #include "chrome/browser/web_applications/components/web_application_info.h"
 #include "chrome/browser/web_applications/test/web_app_install_test_utils.h"
+#include "chrome/common/chrome_features.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "components/arc/arc_service_manager.h"
 #include "components/arc/mojom/app.mojom.h"
@@ -2325,16 +2328,22 @@
   }
 
   void ModifyAppReadiness(apps::mojom::Readiness readiness) {
+    apps::mojom::AppType app_type = apps::mojom::AppType::kWeb;
+    if (crosapi::browser_util::IsLacrosEnabled() &&
+        base::FeatureList::IsEnabled(features::kWebAppsCrosapi)) {
+      app_type = apps::mojom::AppType::kSystemWeb;
+    }
+
     auto* proxy = apps::AppServiceProxyFactory::GetForProfile(profile());
     std::vector<apps::mojom::AppPtr> deltas;
     apps::AppRegistryCache& cache = proxy->AppRegistryCache();
     apps::mojom::AppPtr app = apps::mojom::App::New();
     app->app_id =
         *GetManager().GetAppIdForSystemApp(web_app::SystemAppType::HELP);
-    app->app_type = apps::mojom::AppType::kWeb;
+    app->app_type = app_type;
     app->readiness = readiness;
     deltas.push_back(std::move(app));
-    cache.OnApps(std::move(deltas), apps::mojom::AppType::kWeb,
+    cache.OnApps(std::move(deltas), app_type,
                  false /* should_notify_initialized */);
   }
 
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
index be44fe6..ddade7e 100644
--- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
@@ -1438,8 +1438,16 @@
   EXPECT_TRUE(tester.HistoryContainsURL(kOrigin2));
 }
 
+// TODO(crbug.com/1234803): Crashes on linux-ubsan-vptr
+#if defined(UNDEFINED_SANITIZER)
+#define MAYBE_RemoveMultipleTypesHistoryProhibited \
+  DISABLED_RemoveMultipleTypesHistoryProhibited
+#else
+#define MAYBE_RemoveMultipleTypesHistoryProhibited \
+  RemoveMultipleTypesHistoryProhibited
+#endif
 TEST_F(ChromeBrowsingDataRemoverDelegateTest,
-       RemoveMultipleTypesHistoryProhibited) {
+       MAYBE_RemoveMultipleTypesHistoryProhibited) {
   PrefService* prefs = GetProfile()->GetPrefs();
   prefs->SetBoolean(prefs::kAllowDeletingBrowserHistory, false);
 
@@ -1994,7 +2002,13 @@
       content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS, false);
 }
 
-TEST_F(ChromeBrowsingDataRemoverDelegateTest, RemovePasswordStatistics) {
+// TODO(crbug.com/1234803): Crashes on linux-ubsan-vptr
+#if defined(UNDEFINED_SANITIZER)
+#define MAYBE_RemovePasswordStatistics DISABLED_RemovePasswordStatistics
+#else
+#define MAYBE_RemovePasswordStatistics RemovePasswordStatistics
+#endif
+TEST_F(ChromeBrowsingDataRemoverDelegateTest, MAYBE_RemovePasswordStatistics) {
   RemovePasswordsTester tester(GetProfile());
   base::RepeatingCallback<bool(const GURL&)> empty_filter;
 
@@ -2047,7 +2061,13 @@
                               constants::DATA_TYPE_HISTORY, std::move(builder));
 }
 
-TEST_F(ChromeBrowsingDataRemoverDelegateTest, RemovePasswordsByTimeOnly) {
+// TODO(crbug.com/1234803): Crashes on linux-ubsan-vptr
+#if defined(UNDEFINED_SANITIZER)
+#define MAYBE_RemovePasswordsByTimeOnly DISABLED_RemovePasswordsByTimeOnly
+#else
+#define MAYBE_RemovePasswordsByTimeOnly RemovePasswordsByTimeOnly
+#endif
+TEST_F(ChromeBrowsingDataRemoverDelegateTest, MAYBE_RemovePasswordsByTimeOnly) {
   RemovePasswordsTester tester(GetProfile());
 
   ExpectRemoveLoginsByURLAndTime(tester.profile_store());
@@ -2072,6 +2092,12 @@
                               std::move(builder));
 }
 
+// TODO(crbug.com/1234803): Crashes on linux-ubsan-vptr
+#if defined(UNDEFINED_SANITIZER)
+#define MAYBE_DisableAutoSignIn DISABLED_DisableAutoSignIn
+#else
+#define MAYBE_DisableAutoSignIn DisableAutoSignIn
+#endif
 TEST_F(ChromeBrowsingDataRemoverDelegateTest, DisableAutoSignIn) {
   RemovePasswordsTester tester(GetProfile());
   base::RepeatingCallback<bool(const GURL&)> empty_filter =
@@ -2089,8 +2115,16 @@
                                 false);
 }
 
+// TODO(crbug.com/1234803): Crashes on linux-ubsan-vptr
+#if defined(UNDEFINED_SANITIZER)
+#define MAYBE_DisableAutoSignInAfterRemovingPasswords \
+  DISABLED_DisableAutoSignInAfterRemovingPasswords
+#else
+#define MAYBE_DisableAutoSignInAfterRemovingPasswords \
+  DisableAutoSignInAfterRemovingPasswords
+#endif
 TEST_F(ChromeBrowsingDataRemoverDelegateTest,
-       DisableAutoSignInAfterRemovingPasswords) {
+       MAYBE_DisableAutoSignInAfterRemovingPasswords) {
   RemovePasswordsTester tester(GetProfile());
   base::RepeatingCallback<bool(const GURL&)> empty_filter =
       BrowsingDataFilterBuilder::BuildNoopFilter();
@@ -3135,8 +3169,16 @@
   }
 };
 
+// TODO(crbug.com/1234803): Crashes on linux-ubsan-vptr
+#if defined(UNDEFINED_SANITIZER)
+#define MAYBE_RemovePasswordsByTimeOnly_WithAccountStore \
+  DISABLED_RemovePasswordsByTimeOnly_WithAccountStore
+#else
+#define MAYBE_RemovePasswordsByTimeOnly_WithAccountStore \
+  RemovePasswordsByTimeOnly_WithAccountStore
+#endif
 TEST_F(ChromeBrowsingDataRemoverDelegateEnabledPasswordsTest,
-       RemovePasswordsByTimeOnly_WithAccountStore) {
+       MAYBE_RemovePasswordsByTimeOnly_WithAccountStore) {
   RemovePasswordsTester tester(GetProfile());
 
   ExpectRemoveLoginsByURLAndTime(tester.profile_store());
@@ -3147,8 +3189,16 @@
                                 constants::DATA_TYPE_PASSWORDS, false);
 }
 
+// TODO(crbug.com/1234803): Crashes on linux-ubsan-vptr
+#if defined(UNDEFINED_SANITIZER)
+#define MAYBE_RemoveAccountPasswordsByTimeOnly_WithAccountStore \
+  DISABLED_RemoveAccountPasswordsByTimeOnly_WithAccountStore
+#else
+#define MAYBE_RemoveAccountPasswordsByTimeOnly_WithAccountStore \
+  RemoveAccountPasswordsByTimeOnly_WithAccountStore
+#endif
 TEST_F(ChromeBrowsingDataRemoverDelegateEnabledPasswordsTest,
-       RemoveAccountPasswordsByTimeOnly_WithAccountStore) {
+       MAYBE_RemoveAccountPasswordsByTimeOnly_WithAccountStore) {
   RemovePasswordsTester tester(GetProfile());
 
   EXPECT_CALL(*tester.profile_store(), RemoveLoginsByURLAndTime).Times(0);
@@ -3158,8 +3208,16 @@
                                 constants::DATA_TYPE_ACCOUNT_PASSWORDS, false);
 }
 
+// TODO(crbug.com/1234803): Crashes on linux-ubsan-vptr
+#if defined(UNDEFINED_SANITIZER)
+#define MAYBE_RemoveAccountPasswordsByTimeOnly_WithAccountStore_Failure \
+  DISABLED_RemoveAccountPasswordsByTimeOnly_WithAccountStore_Failure
+#else
+#define MAYBE_RemoveAccountPasswordsByTimeOnly_WithAccountStore_Failure \
+  RemoveAccountPasswordsByTimeOnly_WithAccountStore_Failure
+#endif
 TEST_F(ChromeBrowsingDataRemoverDelegateEnabledPasswordsTest,
-       RemoveAccountPasswordsByTimeOnly_WithAccountStore_Failure) {
+       MAYBE_RemoveAccountPasswordsByTimeOnly_WithAccountStore_Failure) {
   RemovePasswordsTester tester(GetProfile());
 
   EXPECT_CALL(*tester.profile_store(), RemoveLoginsByURLAndTime).Times(0);
diff --git a/chrome/browser/chrome_content_browser_client_receiver_bindings.cc b/chrome/browser/chrome_content_browser_client_receiver_bindings.cc
index 7a67afe..dbaf599 100644
--- a/chrome/browser/chrome_content_browser_client_receiver_bindings.cc
+++ b/chrome/browser/chrome_content_browser_client_receiver_bindings.cc
@@ -396,6 +396,15 @@
         render_frame_host);
     return true;
   }
+#if BUILDFLAG(ENABLE_EXTENSIONS)
+  if (interface_name == extensions::mojom::LocalFrameHost::Name_) {
+    extensions::ExtensionWebContentsObserver::BindLocalFrameHost(
+        mojo::PendingAssociatedReceiver<extensions::mojom::LocalFrameHost>(
+            std::move(*handle)),
+        render_frame_host);
+    return true;
+  }
+#endif
   if (interface_name == lite_video::mojom::LiteVideoService::Name_) {
     LiteVideoObserver::BindLiteVideoService(
         mojo::PendingAssociatedReceiver<lite_video::mojom::LiteVideoService>(
diff --git a/chrome/browser/chromeos/eche_app/eche_app_manager_factory.cc b/chrome/browser/chromeos/eche_app/eche_app_manager_factory.cc
index b30569a..9eaa736b 100644
--- a/chrome/browser/chromeos/eche_app/eche_app_manager_factory.cc
+++ b/chrome/browser/chromeos/eche_app/eche_app_manager_factory.cc
@@ -86,10 +86,9 @@
                                    params);
 }
 
-// TODO(b/195070217): Convert |package_name| to const reference type.
 void LaunchEcheApp(Profile* profile,
                    int64_t notification_id,
-                   std::string package_name) {
+                   const std::string& package_name) {
   LaunchSystemWebApp(profile, package_name, notification_id);
   base::UmaHistogramEnumeration("Eche.NotificationClicked",
                                 NotificationInteraction::kOpenAppStreaming);
diff --git a/chrome/browser/download/download_browsertest.cc b/chrome/browser/download/download_browsertest.cc
index cec6e12..9752c3f4 100644
--- a/chrome/browser/download/download_browsertest.cc
+++ b/chrome/browser/download/download_browsertest.cc
@@ -124,6 +124,7 @@
 #include "content/public/test/browser_test.h"
 #include "content/public/test/browser_test_utils.h"
 #include "content/public/test/download_test_observer.h"
+#include "content/public/test/prerender_test_util.h"
 #include "content/public/test/slow_download_http_response.h"
 #include "content/public/test/test_download_http_response.h"
 #include "content/public/test/test_file_error_injector.h"
@@ -1278,6 +1279,34 @@
         network::mojom::ReferrerPolicy::kSameOrigin,
         network::mojom::ReferrerPolicy::kStrictOrigin));
 
+class PrerenderDownloadTest : public DownloadTest {
+ public:
+  PrerenderDownloadTest()
+      : prerender_helper_(
+            base::BindRepeating(&PrerenderDownloadTest::GetWebContents,
+                                base::Unretained(this))) {}
+  ~PrerenderDownloadTest() override = default;
+
+  void SetUpOnMainThread() override {
+    DownloadTest::SetUpOnMainThread();
+    prerender_helper_.SetUpOnMainThread(embedded_test_server());
+    ASSERT_TRUE(test_server_handle_ =
+                    embedded_test_server()->StartAndReturnHandle());
+  }
+
+  content::WebContents* GetWebContents() {
+    return browser()->tab_strip_model()->GetActiveWebContents();
+  }
+
+  content::test::PrerenderTestHelper* prerender_helper() {
+    return &prerender_helper_;
+  }
+
+ private:
+  content::test::PrerenderTestHelper prerender_helper_;
+  net::test_server::EmbeddedTestServerHandle test_server_handle_;
+};
+
 namespace {
 
 class FakeDownloadProtectionService
@@ -1693,6 +1722,49 @@
   EXPECT_TRUE(base::PathExists(file_path2));
 }
 
+// Verify that non-active main frame downloads (e.g. prerendering) don't affect
+// the DownloadRequestLimiter state of the WebContents.
+IN_PROC_BROWSER_TEST_F(PrerenderDownloadTest,
+                       DownloadRequestLimiterIsUnaffectedByPrerendering) {
+  const GURL kInitialUrl = embedded_test_server()->GetURL("/empty.html");
+  const GURL kPrerenderingUrl =
+      embedded_test_server()->GetURL("/download_script.html");
+
+  ui_test_utils::NavigateToURL(browser(), kInitialUrl);
+
+  // Check the initial DownloadRequestLimiter state.
+  auto* web_contents = GetWebContents();
+  const DownloadRequestLimiter::TabDownloadState* tab_download_state =
+      g_browser_process->download_request_limiter()->GetDownloadState(
+          web_contents, true);
+  ASSERT_TRUE(tab_download_state);
+  EXPECT_EQ(tab_download_state->download_status(),
+            DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD);
+
+  // Create a prerendered page.
+  int host_id = prerender_helper()->AddPrerender(kPrerenderingUrl);
+  ASSERT_NE(host_id, content::RenderFrameHost::kNoFrameTreeNodeId);
+  content::test::PrerenderHostObserver host_observer(*web_contents, host_id);
+
+  // Try to start the download via Javascript in the prerendered page.
+  ASSERT_EQ(true, content::EvalJs(
+                      prerender_helper()->GetPrerenderedMainFrameHost(host_id),
+                      "startDownload();"));
+
+  // Navigations aren't allowed on prerendered pages.
+  host_observer.WaitForDestroyed();
+
+  // Check that the DownloadRequestLimiter state wasn't modified.
+  const DownloadRequestLimiter::TabDownloadState* new_tab_download_state =
+      g_browser_process->download_request_limiter()->GetDownloadState(
+          web_contents, false);
+  ASSERT_EQ(tab_download_state, new_tab_download_state);
+  EXPECT_EQ(new_tab_download_state->download_status(),
+            DownloadRequestLimiter::ALLOW_ONE_DOWNLOAD);
+
+  EXPECT_TRUE(VerifyNoDownloads());
+}
+
 // Download a 0-size file with a content-disposition header, verify that the
 // download tab opened and the file exists as the filename specified in the
 // header.  This also ensures we properly handle empty file downloads.
diff --git a/chrome/browser/download/download_request_limiter.cc b/chrome/browser/download/download_request_limiter.cc
index e10a14e..4de3285 100644
--- a/chrome/browser/download/download_request_limiter.cc
+++ b/chrome/browser/download/download_request_limiter.cc
@@ -127,9 +127,6 @@
 
 void DownloadRequestLimiter::TabDownloadState::DidStartNavigation(
     content::NavigationHandle* navigation_handle) {
-  // TODO(https://crbug.com/1218946): With MPArch there may be multiple main
-  // frames. This caller was converted automatically to the primary main frame
-  // to preserve its semantics. Follow up to confirm correctness.
   if (!navigation_handle->IsInPrimaryMainFrame())
     return;
 
@@ -177,9 +174,6 @@
 
 void DownloadRequestLimiter::TabDownloadState::DidFinishNavigation(
     content::NavigationHandle* navigation_handle) {
-  // TODO(https://crbug.com/1218946): With MPArch there may be multiple main
-  // frames. This caller was converted automatically to the primary main frame
-  // to preserve its semantics. Follow up to confirm correctness.
   if (!navigation_handle->IsInPrimaryMainFrame())
     return;
 
@@ -241,8 +235,12 @@
   permissions::PermissionRequestManager* permission_request_manager =
       permissions::PermissionRequestManager::FromWebContents(web_contents_);
   if (permission_request_manager) {
-    // TODO(https://crbug.com/1061899): We should pass the frame which initiated
-    // the action instead of assuming that it was the current main frame.
+    // The RFH is used to scope the lifetime of the request and scoping it to
+    // the initiator doesn't make sense for downloads as download navigation
+    // requests are never committed and don't update the omnibox url.
+    // Download requests should only be granted by checking `request_origin`,
+    // so we use the primary main RenderFrameHost here, to avoid discarding the
+    // request in the case that the initiator RFH is already gone.
     permission_request_manager->AddRequest(
         web_contents_->GetMainFrame(),
         new DownloadPermissionRequest(factory_.GetWeakPtr(), request_origin));
diff --git a/chrome/browser/download/download_request_limiter.h b/chrome/browser/download/download_request_limiter.h
index 9dfbe476..44999af6 100644
--- a/chrome/browser/download/download_request_limiter.h
+++ b/chrome/browser/download/download_request_limiter.h
@@ -260,6 +260,8 @@
   FRIEND_TEST_ALL_PREFIXES(ContentSettingBubbleControllerTest, Init);
   FRIEND_TEST_ALL_PREFIXES(ContentSettingImageModelBrowserTest,
                            CreateBubbleModel);
+  FRIEND_TEST_ALL_PREFIXES(PrerenderDownloadTest,
+                           DownloadRequestLimiterIsUnaffectedByPrerendering);
   friend class base::RefCountedThreadSafe<DownloadRequestLimiter>;
   friend class BackgroundFetchBrowserTest;
   friend class ContentSettingBubbleDialogTest;
diff --git a/chrome/browser/extensions/BUILD.gn b/chrome/browser/extensions/BUILD.gn
index 39c6c89..26d14bbd 100644
--- a/chrome/browser/extensions/BUILD.gn
+++ b/chrome/browser/extensions/BUILD.gn
@@ -377,8 +377,6 @@
     "api/system_indicator/system_indicator_manager_factory.h",
     "api/system_private/system_private_api.cc",
     "api/system_private/system_private_api.h",
-    "api/tab_capture/offscreen_tabs_owner.cc",
-    "api/tab_capture/offscreen_tabs_owner.h",
     "api/tab_capture/tab_capture_api.cc",
     "api/tab_capture/tab_capture_api.h",
     "api/tab_capture/tab_capture_registry.cc",
diff --git a/chrome/browser/extensions/api/automation/automation_apitest.cc b/chrome/browser/extensions/api/automation/automation_apitest.cc
index a11fcc5..b3a0471 100644
--- a/chrome/browser/extensions/api/automation/automation_apitest.cc
+++ b/chrome/browser/extensions/api/automation/automation_apitest.cc
@@ -451,7 +451,13 @@
       << message_;
 }
 
-IN_PROC_BROWSER_TEST_F(AutomationApiTest, DesktopHitTestIframe) {
+// TODO(http://crbug.com/1234340): flaky on ChromeOS.
+#if defined(OS_CHROMEOS)
+#define MAYBE_DesktopHitTestIframe DISABLED_DesktopHitTestIframe
+#else
+#define MAYBE_DesktopHitTestIframe DesktopHitTestIframe
+#endif
+IN_PROC_BROWSER_TEST_F(AutomationApiTest, MAYBE_DesktopHitTestIframe) {
   StartEmbeddedTestServer();
   ASSERT_TRUE(RunExtensionTest("automation/tests/desktop",
                                {.page_url = "hit_test_iframe.html"}))
diff --git a/chrome/browser/extensions/api/storage/settings_apitest.cc b/chrome/browser/extensions/api/storage/settings_apitest.cc
index d463a16f..b445271 100644
--- a/chrome/browser/extensions/api/storage/settings_apitest.cc
+++ b/chrome/browser/extensions/api/storage/settings_apitest.cc
@@ -344,9 +344,13 @@
 
 // TODO(crbug.com/1185226): Change parent class to `ExtensionSettingsApiTest`
 // when chrome.storage.session is released in stable.
-// Flaky across multiple platforms: https://crbug.com/1216449.
+// TODO(crbug.com/1229351): Service worker extension listener should receive an
+// event before the callback is made. Current workaround: wait for the event to
+// be received by the extension before checking for it. Potential solution: once
+// browser-side observation of SW lifetime work is finished, check if it fixes
+// this test.
 IN_PROC_BROWSER_TEST_F(ExtensionSettingsTrunkApiTest,
-                       DISABLED_OnChangedNotificationsBetweenBackgroundPages) {
+                       OnChangedNotificationsBetweenBackgroundPages) {
   // We need 2 ResultCatchers because we'll be running the same test in both
   // regular and incognito mode.
   ResultCatcher catcher;
@@ -357,24 +361,37 @@
 
   StorageAreaNamespace storage_areas[2] = {StorageAreaNamespace::kSync,
                                            StorageAreaNamespace::kSession};
-  LoadAndReplyWhenSatisfied(StorageAreaNamespace::kSync,
-                            "assertNoNotifications", "assertNoNotifications",
-                            "split_incognito");
+
   for (const StorageAreaNamespace& storage_area : storage_areas) {
-    ReplyWhenSatisfied(storage_area, "assertNoNotifications",
-                       "assertNoNotifications");
+    // We need to load the extension when it's the first reply.
+    // kSync is the first storage area to run.
+    if (storage_area == StorageAreaNamespace::kSync) {
+      LoadAndReplyWhenSatisfied(StorageAreaNamespace::kSync,
+                                "assertNoNotifications",
+                                "assertNoNotifications", "split_incognito");
+    } else {
+      ReplyWhenSatisfied(storage_area, "assertNoNotifications",
+                         "assertNoNotifications");
+    }
+
     ReplyWhenSatisfied(storage_area, "noop", "setFoo");
     ReplyWhenSatisfied(storage_area, "assertAddFooNotification",
                        "assertAddFooNotification");
     ReplyWhenSatisfied(storage_area, "clearNotifications",
                        "clearNotifications");
     ReplyWhenSatisfied(storage_area, "removeFoo", "noop");
-    ReplyWhenSatisfied(storage_area, "assertDeleteFooNotification",
-                       "assertDeleteFooNotification");
+
+    // We need to end the test with a final reply when it's the last reply.
+    // kSession is the last storage area to run.
+    if (storage_area == StorageAreaNamespace::kSession) {
+      FinalReplyWhenSatisfied(StorageAreaNamespace::kSession,
+                              "assertDeleteFooNotification",
+                              "assertDeleteFooNotification");
+    } else {
+      ReplyWhenSatisfied(storage_area, "assertDeleteFooNotification",
+                         "assertDeleteFooNotification");
+    }
   }
-  FinalReplyWhenSatisfied(StorageAreaNamespace::kSession,
-                          "assertDeleteFooNotification",
-                          "assertDeleteFooNotification");
 
   EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
   EXPECT_TRUE(catcher_incognito.GetNextResult()) << catcher.message();
@@ -490,9 +507,13 @@
   EXPECT_TRUE(catcher_incognito.GetNextResult()) << catcher.message();
 }
 
-// https://crbug.com/1216450: Flaky on multiple platforms.
+// TODO(crbug.com/1229351): Service worker extension listener should receive an
+// event before the callback is made. Current workaround: wait for the event to
+// be received by the extension before checking for it. Potential solution: once
+// browser-side observation of SW lifetime work is finished, check if it fixes
+// this test.
 IN_PROC_BROWSER_TEST_F(ExtensionSettingsApiTest,
-                       DISABLED_OnChangedNotificationsFromSync) {
+                       OnChangedNotificationsFromSync) {
   // We need 2 ResultCatchers because we'll be running the same test in both
   // regular and incognito mode.
   ResultCatcher catcher, catcher_incognito;
diff --git a/chrome/browser/extensions/api/tab_capture/offscreen_tabs_owner.cc b/chrome/browser/extensions/api/tab_capture/offscreen_tabs_owner.cc
deleted file mode 100644
index 4b60389..0000000
--- a/chrome/browser/extensions/api/tab_capture/offscreen_tabs_owner.cc
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/extensions/api/tab_capture/offscreen_tabs_owner.h"
-
-#include <algorithm>
-#include <utility>
-#include <vector>
-
-#include "base/bind.h"
-#include "chrome/browser/extensions/api/tab_capture/tab_capture_registry.h"
-#include "chrome/browser/profiles/profile.h"
-#include "content/public/browser/web_contents.h"
-#include "extensions/browser/extension_host.h"
-#include "extensions/browser/process_manager.h"
-#include "third_party/blink/public/mojom/mediastream/media_stream.mojom-shared.h"
-
-using content::WebContents;
-
-namespace {
-
-// Upper limit on the number of simultaneous off-screen tabs per extension
-// instance.
-const int kMaxOffscreenTabsPerExtension = 4;
-
-}  // namespace
-
-namespace extensions {
-
-OffscreenTabsOwner::OffscreenTabsOwner(WebContents* extension_web_contents)
-    : extension_web_contents_(extension_web_contents) {
-  DCHECK(extension_web_contents_);
-}
-
-OffscreenTabsOwner::~OffscreenTabsOwner() {}
-
-// static
-OffscreenTabsOwner* OffscreenTabsOwner::Get(
-    content::WebContents* extension_web_contents) {
-  // CreateForWebContents() really means "create if not exists."
-  CreateForWebContents(extension_web_contents);
-  return FromWebContents(extension_web_contents);
-}
-
-OffscreenTab* OffscreenTabsOwner::OpenNewTab(
-    const GURL& start_url,
-    const gfx::Size& initial_size,
-    const std::string& optional_presentation_id) {
-  if (tabs_.size() >= kMaxOffscreenTabsPerExtension)
-    return nullptr;  // Maximum number of offscreen tabs reached.
-
-  tabs_.emplace_back(std::make_unique<OffscreenTab>(
-      this, extension_web_contents_->GetBrowserContext()));
-  tabs_.back()->Start(start_url, initial_size, optional_presentation_id);
-  return tabs_.back().get();
-}
-
-void OffscreenTabsOwner::RequestMediaAccessPermission(
-    const content::MediaStreamRequest& request,
-    content::MediaResponseCallback callback) {
-  // This method is being called to check whether an extension is permitted to
-  // capture the page.  Verify that the request is being made by the extension
-  // that spawned this OffscreenTab.
-
-  // Find the extension ID associated with the extension background page's
-  // WebContents.
-  content::BrowserContext* const extension_browser_context =
-      extension_web_contents_->GetBrowserContext();
-  const extensions::Extension* const extension =
-      ProcessManager::Get(extension_browser_context)
-          ->GetExtensionForWebContents(extension_web_contents_);
-  const std::string extension_id = extension ? extension->id() : "";
-  LOG_IF(DFATAL, extension_id.empty())
-      << "Extension that started this OffscreenTab was not found.";
-
-  // If verified, allow any tab capture audio/video devices that were requested.
-  extensions::TabCaptureRegistry* const tab_capture_registry =
-      extensions::TabCaptureRegistry::Get(extension_browser_context);
-  blink::MediaStreamDevices devices;
-  if (tab_capture_registry &&
-      tab_capture_registry->VerifyRequest(
-          request.render_process_id, request.render_frame_id, extension_id)) {
-    if (request.audio_type ==
-        blink::mojom::MediaStreamType::GUM_TAB_AUDIO_CAPTURE) {
-      devices.push_back(blink::MediaStreamDevice(
-          blink::mojom::MediaStreamType::GUM_TAB_AUDIO_CAPTURE, std::string(),
-          std::string()));
-    }
-    if (request.video_type ==
-        blink::mojom::MediaStreamType::GUM_TAB_VIDEO_CAPTURE) {
-      devices.push_back(blink::MediaStreamDevice(
-          blink::mojom::MediaStreamType::GUM_TAB_VIDEO_CAPTURE, std::string(),
-          std::string()));
-    }
-  }
-
-  DVLOG(2) << "Allowing " << devices.size()
-           << " capture devices for OffscreenTab content.";
-
-  std::move(callback).Run(
-      devices,
-      devices.empty() ? blink::mojom::MediaStreamRequestResult::INVALID_STATE
-                      : blink::mojom::MediaStreamRequestResult::OK,
-      nullptr);
-}
-
-void OffscreenTabsOwner::DestroyTab(OffscreenTab* tab) {
-  for (auto iter = tabs_.begin(); iter != tabs_.end(); ++iter) {
-    if (iter->get() == tab) {
-      tabs_.erase(iter);
-      break;
-    }
-  }
-}
-
-WEB_CONTENTS_USER_DATA_KEY_IMPL(OffscreenTabsOwner)
-
-}  // namespace extensions
diff --git a/chrome/browser/extensions/api/tab_capture/offscreen_tabs_owner.h b/chrome/browser/extensions/api/tab_capture/offscreen_tabs_owner.h
deleted file mode 100644
index bfa850e..0000000
--- a/chrome/browser/extensions/api/tab_capture/offscreen_tabs_owner.h
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_EXTENSIONS_API_TAB_CAPTURE_OFFSCREEN_TABS_OWNER_H_
-#define CHROME_BROWSER_EXTENSIONS_API_TAB_CAPTURE_OFFSCREEN_TABS_OWNER_H_
-
-#include <stdint.h>
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "base/macros.h"
-#include "chrome/browser/media/offscreen_tab.h"
-#include "content/public/browser/web_contents_user_data.h"
-#include "ui/gfx/geometry/size.h"
-
-class OffscreenTab;
-
-namespace extensions {
-
-// Creates, owns, and manages all OffscreenTab instances created by the same
-// extension background page.  When the extension background page's WebContents
-// is about to be destroyed, its associated OffscreenTabsOwner and all of its
-// OffscreenTab instances are destroyed.
-//
-// Usage:
-//
-//   OffscreenTabsOwner::Get(extension_contents)
-//       ->OpenNewTab(start_url, size, std::string());
-//
-// This class operates exclusively on the UI thread and so is not thread-safe.
-class OffscreenTabsOwner final
-    : public OffscreenTab::Owner,
-      public content::WebContentsUserData<OffscreenTabsOwner> {
- public:
-  ~OffscreenTabsOwner() final;
-
-  // Returns the OffscreenTabsOwner instance associated with the given extension
-  // background page's WebContents.  Never returns nullptr.
-  static OffscreenTabsOwner* Get(content::WebContents* extension_web_contents);
-
-  // Instantiate a new offscreen tab and navigate it to |start_url|.  The new
-  // tab's main frame will start out with the given |initial_size| in DIP
-  // coordinates.  If too many offscreen tabs are already running, nothing
-  // happens and nullptr is returned.
-  //
-  // If |optional_presentation_id| is non-empty, the offscreen tab is registered
-  // for use by the Media Router (chrome/browser/media/router/...) as the
-  // receiving browsing context for the W3C Presentation API.
-  OffscreenTab* OpenNewTab(const GURL& start_url,
-                           const gfx::Size& initial_size,
-                           const std::string& optional_presentation_id);
-
- private:
-  friend class content::WebContentsUserData<OffscreenTabsOwner>;
-
-  explicit OffscreenTabsOwner(content::WebContents* extension_web_contents);
-
-  // OffscreenTab::Owner implementation.
-  void RequestMediaAccessPermission(
-      const content::MediaStreamRequest& request,
-      content::MediaResponseCallback callback) override;
-  void DestroyTab(OffscreenTab* tab) override;
-
-  content::WebContents* const extension_web_contents_;
-  std::vector<std::unique_ptr<OffscreenTab>> tabs_;
-
-  WEB_CONTENTS_USER_DATA_KEY_DECL();
-
-  DISALLOW_COPY_AND_ASSIGN(OffscreenTabsOwner);
-};
-
-}  // namespace extensions
-
-#endif  // CHROME_BROWSER_EXTENSIONS_API_TAB_CAPTURE_OFFSCREEN_TABS_OWNER_H_
diff --git a/chrome/browser/extensions/api/tab_capture/tab_capture_api.cc b/chrome/browser/extensions/api/tab_capture/tab_capture_api.cc
index 961f6c3..7b27626 100644
--- a/chrome/browser/extensions/api/tab_capture/tab_capture_api.cc
+++ b/chrome/browser/extensions/api/tab_capture/tab_capture_api.cc
@@ -17,7 +17,6 @@
 #include "base/cxx17_backports.h"
 #include "base/strings/string_util.h"
 #include "base/values.h"
-#include "chrome/browser/extensions/api/tab_capture/offscreen_tabs_owner.h"
 #include "chrome/browser/extensions/api/tab_capture/tab_capture_registry.h"
 #include "chrome/browser/extensions/extension_tab_util.h"
 #include "chrome/browser/media/webrtc/capture_policy_utils.h"
@@ -57,16 +56,6 @@
     "Extension has not been invoked for the current page (see activeTab "
     "permission). Chrome pages cannot be captured.";
 
-const char kNotAllowlistedForOffscreenTabApi[] =
-    "Extension is not allowlisted for use of the unstable, in-development "
-    "chrome.tabCapture.captureOffscreenTab API.";
-const char kInvalidStartUrl[] =
-    "Invalid/Missing/Malformatted starting URL for off-screen tab.";
-const char kTooManyOffscreenTabs[] =
-    "Extension has already started too many off-screen tabs.";
-const char kCapturingSameOffscreenTab[] =
-    "Cannot capture the same off-screen tab more than once.";
-
 const char kInvalidOriginError[] = "Caller tab.url is not a valid URL.";
 const char kInvalidTabIdError[] = "Invalid tab specified.";
 const char kTabUrlNotSecure[] =
@@ -81,10 +70,6 @@
   return (options.audio && *options.audio) || (options.video && *options.video);
 }
 
-bool IsAcceptableOffscreenTabUrl(const GURL& url) {
-  return url.is_valid() && (url.SchemeIsHTTPOrHTTPS() || url.SchemeIs("data"));
-}
-
 DesktopMediaID BuildDesktopMediaID(content::WebContents* target_contents,
                                    TabCapture::CaptureOptions* options) {
   content::RenderFrameHost* const target_frame =
@@ -151,15 +136,6 @@
 
 }  // namespace
 
-// Allowlisted extensions that do not check for a browser action grant because
-// they provide API's. If there are additional extension ids that need
-// allowlisting and are *not* the Media Router extension, add them to a new
-// kAllowlist array.
-const char* const kMediaRouterExtensionIds[] = {
-    "enhhojjnijigcajfphajepfemndkmdlo",  // Dev
-    "pkedcjkdefgpdelpbcmbmeomcjbeemfm",  // Stable
-};
-
 ExtensionFunction::ResponseAction TabCaptureCaptureFunction::Run() {
   std::unique_ptr<api::tab_capture::Capture::Params> params =
       TabCapture::Capture::Params::Create(*args_);
@@ -202,9 +178,7 @@
           sessions::SessionTabHelper::IdForTab(target_contents).id(),
           mojom::APIPermissionID::kTabCaptureForTab) &&
       base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
-          switches::kAllowlistedExtensionID) != extension_id &&
-      !SimpleFeature::IsIdInArray(extension_id, kMediaRouterExtensionIds,
-                                  base::size(kMediaRouterExtensionIds))) {
+          switches::kAllowlistedExtensionID) != extension_id) {
     return RespondNow(Error(kGrantError));
   }
 
@@ -247,113 +221,6 @@
       OneArgument(base::Value::FromUniquePtrValue(std::move(list))));
 }
 
-ExtensionFunction::ResponseAction TabCaptureCaptureOffscreenTabFunction::Run() {
-  std::unique_ptr<TabCapture::CaptureOffscreenTab::Params> params =
-      TabCapture::CaptureOffscreenTab::Params::Create(*args_);
-  EXTENSION_FUNCTION_VALIDATE(params);
-
-  // Make sure the extension is allowlisted for using this API, regardless of
-  // Chrome channel.
-  //
-  // TODO(miu): Use _api_features.json and extensions::Feature library instead.
-  // http://crbug.com/537732
-  const bool is_allowlisted_extension =
-      base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
-          switches::kAllowlistedExtensionID) == extension()->id() ||
-      SimpleFeature::IsIdInArray(extension()->id(), kMediaRouterExtensionIds,
-                                 base::size(kMediaRouterExtensionIds));
-  if (!is_allowlisted_extension)
-    return RespondNow(Error(kNotAllowlistedForOffscreenTabApi));
-
-  const GURL start_url(params->start_url);
-  if (!IsAcceptableOffscreenTabUrl(start_url))
-    return RespondNow(Error(kInvalidStartUrl));
-
-  if (!OptionsSpecifyAudioOrVideo(params->options))
-    return RespondNow(Error(kNoAudioOrVideo));
-
-  content::WebContents* const extension_web_contents = GetSenderWebContents();
-  EXTENSION_FUNCTION_VALIDATE(extension_web_contents);
-  OffscreenTab* const offscreen_tab =
-      OffscreenTabsOwner::Get(extension_web_contents)
-          ->OpenNewTab(
-              start_url, DetermineInitialSize(params->options),
-              (is_allowlisted_extension && params->options.presentation_id)
-                  ? *params->options.presentation_id
-                  : std::string());
-  if (!offscreen_tab)
-    return RespondNow(Error(kTooManyOffscreenTabs));
-
-  content::WebContents* target_contents = offscreen_tab->web_contents();
-  const std::string& extension_id = extension()->id();
-  DesktopMediaID source =
-      BuildDesktopMediaID(target_contents, &params->options);
-  TabCaptureRegistry* registry = TabCaptureRegistry::Get(browser_context());
-  std::string device_id = registry->AddRequest(
-      target_contents, extension_id, true, extension()->url(), source,
-      extension()->name(), extension_web_contents);
-  if (device_id.empty()) {
-    return RespondNow(Error(kCapturingSameOffscreenTab));
-  }
-  AddMediaStreamSourceConstraints(target_contents, &params->options, device_id);
-
-  // At this point, everything is set up in the browser process.  It's now up to
-  // the custom JS bindings in the extension's render process to complete the
-  // request.  See the comment at end of TabCaptureCaptureFunction::RunSync()
-  // for more details.
-  return RespondNow(
-      OneArgument(base::Value::FromUniquePtrValue(params->options.ToValue())));
-}
-
-// static
-gfx::Size TabCaptureCaptureOffscreenTabFunction::DetermineInitialSize(
-    const TabCapture::CaptureOptions& options) {
-  static const int kDefaultWidth = 1280;
-  static const int kDefaultHeight = 720;
-
-  if (!options.video_constraints)
-    return gfx::Size(kDefaultWidth, kDefaultHeight);
-
-  gfx::Size min_size;
-  int width = -1;
-  int height = -1;
-  const base::DictionaryValue& mandatory_properties =
-      options.video_constraints->mandatory.additional_properties;
-  if (mandatory_properties.GetInteger("maxWidth", &width) && width >= 0 &&
-      mandatory_properties.GetInteger("maxHeight", &height) && height >= 0) {
-    return gfx::Size(width, height);
-  }
-  if (mandatory_properties.GetInteger("minWidth", &width) && width >= 0 &&
-      mandatory_properties.GetInteger("minHeight", &height) && height >= 0) {
-    min_size.SetSize(width, height);
-  }
-
-  // Use optional size constraints if no mandatory ones were provided.
-  if (options.video_constraints->optional) {
-    const base::DictionaryValue& optional_properties =
-        options.video_constraints->optional->additional_properties;
-    if (optional_properties.GetInteger("maxWidth", &width) && width >= 0 &&
-        optional_properties.GetInteger("maxHeight", &height) && height >= 0) {
-      if (min_size.IsEmpty()) {
-        return gfx::Size(width, height);
-      } else {
-        return gfx::Size(std::max(width, min_size.width()),
-                         std::max(height, min_size.height()));
-      }
-    }
-    if (min_size.IsEmpty() &&
-        optional_properties.GetInteger("minWidth", &width) && width >= 0 &&
-        optional_properties.GetInteger("minHeight", &height) && height >= 0) {
-      min_size.SetSize(width, height);
-    }
-  }
-
-  // No maximum size was provided, so just return the default size bounded by
-  // the minimum size.
-  return gfx::Size(std::max(kDefaultWidth, min_size.width()),
-                   std::max(kDefaultHeight, min_size.height()));
-}
-
 ExtensionFunction::ResponseAction TabCaptureGetMediaStreamIdFunction::Run() {
   std::unique_ptr<api::tab_capture::GetMediaStreamId::Params> params =
       TabCapture::GetMediaStreamId::Params::Create(*args_);
diff --git a/chrome/browser/extensions/api/tab_capture/tab_capture_api.h b/chrome/browser/extensions/api/tab_capture/tab_capture_api.h
index a30fcc0..a39e60cd 100644
--- a/chrome/browser/extensions/api/tab_capture/tab_capture_api.h
+++ b/chrome/browser/extensions/api/tab_capture/tab_capture_api.h
@@ -14,14 +14,6 @@
 
 namespace extensions {
 
-// Extension ids for stable / beta cast extensions. Included in
-// |kChromecastExtensionIds|.
-extern const char* const kBetaChromecastExtensionId;
-extern const char* const kStableChromecastExtensionId;
-
-// Extension ids for the chromecast.
-extern const char* const kChromecastExtensionIds[6];
-
 class TabCaptureCaptureFunction final : public ExtensionFunction {
  public:
   DECLARE_EXTENSION_FUNCTION("tabCapture.capture", TABCAPTURE_CAPTURE)
@@ -45,23 +37,6 @@
   ResponseAction Run() final;
 };
 
-class TabCaptureCaptureOffscreenTabFunction final : public ExtensionFunction {
- public:
-  DECLARE_EXTENSION_FUNCTION("tabCapture.captureOffscreenTab",
-                             TABCAPTURE_CAPTUREOFFSCREENTAB)
-
-  // Examines the min/max width/height constraints in the |options| to determine
-  // a suitable initial off-screen tab size.
-  static gfx::Size DetermineInitialSize(
-      const extensions::api::tab_capture::CaptureOptions& options);
-
- private:
-  ~TabCaptureCaptureOffscreenTabFunction() final {}
-
-  // ExtensionFunction:
-  ResponseAction Run() final;
-};
-
 class TabCaptureGetMediaStreamIdFunction final : public ExtensionFunction {
  public:
   DECLARE_EXTENSION_FUNCTION("tabCapture.getMediaStreamId",
diff --git a/chrome/browser/extensions/api/tab_capture/tab_capture_apitest.cc b/chrome/browser/extensions/api/tab_capture/tab_capture_apitest.cc
index 430354e..94bb67c 100644
--- a/chrome/browser/extensions/api/tab_capture/tab_capture_apitest.cc
+++ b/chrome/browser/extensions/api/tab_capture/tab_capture_apitest.cc
@@ -81,75 +81,6 @@
   }
 };
 
-// Tests the logic that examines the constraints to determine the starting
-// off-screen tab size.
-TEST(TabCaptureCaptureOffscreenTabTest, DetermineInitialSize) {
-  using extensions::api::tab_capture::CaptureOptions;
-  using extensions::api::tab_capture::MediaStreamConstraint;
-
-  // Empty options --> 1280x720
-  CaptureOptions options;
-  EXPECT_EQ(gfx::Size(1280, 720),
-            TabCaptureCaptureOffscreenTabFunction::DetermineInitialSize(
-                options));
-
-  // Use specified mandatory maximum size.
-  options.video_constraints = std::make_unique<MediaStreamConstraint>();
-  base::DictionaryValue* properties =
-      &options.video_constraints->mandatory.additional_properties;
-  properties->SetInteger("maxWidth", 123);
-  properties->SetInteger("maxHeight", 456);
-  EXPECT_EQ(gfx::Size(123, 456),
-            TabCaptureCaptureOffscreenTabFunction::DetermineInitialSize(
-                options));
-
-  // Use default size if larger than mandatory minimum size.  Else, use
-  // mandatory minimum size.
-  options.video_constraints = std::make_unique<MediaStreamConstraint>();
-  properties = &options.video_constraints->mandatory.additional_properties;
-  properties->SetInteger("minWidth", 123);
-  properties->SetInteger("minHeight", 456);
-  EXPECT_EQ(gfx::Size(1280, 720),
-            TabCaptureCaptureOffscreenTabFunction::DetermineInitialSize(
-                options));
-  properties->SetInteger("minWidth", 2560);
-  properties->SetInteger("minHeight", 1440);
-  EXPECT_EQ(gfx::Size(2560, 1440),
-            TabCaptureCaptureOffscreenTabFunction::DetermineInitialSize(
-                options));
-
-  // Use specified optional maximum size, if no mandatory size was specified.
-  options.video_constraints = std::make_unique<MediaStreamConstraint>();
-  options.video_constraints->optional =
-      std::make_unique<MediaStreamConstraint::Optional>();
-  properties = &options.video_constraints->optional->additional_properties;
-  properties->SetInteger("maxWidth", 456);
-  properties->SetInteger("maxHeight", 123);
-  EXPECT_EQ(gfx::Size(456, 123),
-            TabCaptureCaptureOffscreenTabFunction::DetermineInitialSize(
-                options));
-  // ...unless a mandatory minimum size was specified:
-  options.video_constraints->mandatory.additional_properties.SetInteger(
-      "minWidth", 500);
-  options.video_constraints->mandatory.additional_properties.SetInteger(
-      "minHeight", 600);
-  EXPECT_EQ(gfx::Size(500, 600),
-            TabCaptureCaptureOffscreenTabFunction::DetermineInitialSize(
-                options));
-
-  // Use default size if larger than optional minimum size.  Else, use optional
-  // minimum size.
-  options.video_constraints = std::make_unique<MediaStreamConstraint>();
-  options.video_constraints->optional =
-      std::make_unique<MediaStreamConstraint::Optional>();
-  properties = &options.video_constraints->optional->additional_properties;
-  properties->SetInteger("minWidth", 9999);
-  properties->SetInteger("minHeight", 8888);
-  EXPECT_EQ(gfx::Size(9999, 8888),
-            TabCaptureCaptureOffscreenTabFunction::DetermineInitialSize(
-                options));
-}
-
 // Tests API behaviors, including info queries, and constraints violations.
 IN_PROC_BROWSER_TEST_F(TabCaptureApiTest, ApiTests) {
   AddExtensionToCommandLineAllowlist();
@@ -157,15 +88,6 @@
       << message_;
 }
 
-// Tests that there is a maximum limitation to the number of simultaneous
-// off-screen tabs.
-IN_PROC_BROWSER_TEST_F(TabCaptureApiTest, MaxOffscreenTabs) {
-  AddExtensionToCommandLineAllowlist();
-  ASSERT_TRUE(
-      RunExtensionTest("tab_capture", {.page_url = "max_offscreen_tabs.html"}))
-      << message_;
-}
-
 // Tests that tab capture video frames can be received in a VIDEO element.
 // Disabled due to flakes on multiple platforms; see https://crbug.com/1040894.
 IN_PROC_BROWSER_TEST_F(TabCaptureApiPixelTest, EndToEndWithoutRemoting) {
@@ -204,35 +126,6 @@
       << message_;
 }
 
-// Tests that tab capture video frames can be received in a VIDEO element from
-// an off-screen tab.
-IN_PROC_BROWSER_TEST_F(TabCaptureApiPixelTest, OffscreenTabEndToEnd) {
-  if (IsTooIntensiveForThisPlatform()) {
-    LOG(WARNING) << "Skipping this CPU-intensive test on this platform/build.";
-    return;
-  }
-  AddExtensionToCommandLineAllowlist();
-  ASSERT_TRUE(RunExtensionTest("tab_capture",
-                               {.page_url = "offscreen_end_to_end.html"}))
-      << message_;
-  // Verify that offscreen profile has been destroyed.
-  ASSERT_FALSE(profile()->HasPrimaryOTRProfile());
-}
-
-// Tests that off-screen tabs can't do evil things (e.g., access local files).
-IN_PROC_BROWSER_TEST_F(TabCaptureApiPixelTest, OffscreenTabEvilTests) {
-  if (IsTooIntensiveForThisPlatform()) {
-    LOG(WARNING) << "Skipping this CPU-intensive test on this platform/build.";
-    return;
-  }
-  AddExtensionToCommandLineAllowlist();
-  ASSERT_TRUE(RunExtensionTest("tab_capture",
-                               {.page_url = "offscreen_evil_tests.html"}))
-      << message_;
-  // Verify that offscreen profile has been destroyed.
-  ASSERT_FALSE(profile()->HasPrimaryOTRProfile());
-}
-
 // Tests that getUserMedia() is NOT a way to start tab capture.
 IN_PROC_BROWSER_TEST_F(TabCaptureApiTest, GetUserMediaTest) {
   ExtensionTestMessageListener listener("ready", true);
diff --git a/chrome/browser/extensions/content_script_apitest.cc b/chrome/browser/extensions/content_script_apitest.cc
index d320da0..947da68 100644
--- a/chrome/browser/extensions/content_script_apitest.cc
+++ b/chrome/browser/extensions/content_script_apitest.cc
@@ -1167,6 +1167,42 @@
   load_page_and_check_error("inject-script.example");
 }
 
+// Verifies how the storage API works with content scripts with default access
+// level.
+IN_PROC_BROWSER_TEST_F(ContentScriptApiTest, StorageApiDefaultAccessTest) {
+  // The extension verifies expectations in its background context and
+  // initializes state, which will be used by the content script below.
+  ASSERT_TRUE(StartEmbeddedTestServer());
+  ASSERT_TRUE(RunExtensionTest("content_scripts/storage_api_default_access"))
+      << message_;
+
+  // Open a url to run the content script. The content script
+  // then continues the test, so we need a separate ResultCatcher.
+  ResultCatcher catcher;
+  GURL url(embedded_test_server()->GetURL("/extensions/test_file.html"));
+  ui_test_utils::NavigateToURL(browser(), url);
+  ASSERT_TRUE(catcher.GetNextResult()) << catcher.message();
+}
+
+// Verifies how the storage API works with content scripts with untrusted access
+// level.
+IN_PROC_BROWSER_TEST_F(ContentScriptApiTest,
+                       StorageApiAllowUntrustedAccessTest) {
+  // The extension verifies expectations in its background context and
+  // initializes state, which will be used by the content script below.
+  ASSERT_TRUE(StartEmbeddedTestServer());
+  ASSERT_TRUE(
+      RunExtensionTest("content_scripts/storage_api_allow_untrusted_access"))
+      << message_;
+
+  // Open a url to run the content script. The content script
+  // then continues the test, so we need a separate ResultCatcher.
+  ResultCatcher catcher;
+  GURL url(embedded_test_server()->GetURL("/extensions/test_file.html"));
+  ui_test_utils::NavigateToURL(browser(), url);
+  ASSERT_TRUE(catcher.GetNextResult()) << catcher.message();
+}
+
 // A test suite designed for exercising the behavior of content script
 // injection into opaque URLs (like about:blank).
 class ContentScriptRelatedFrameTest : public ContentScriptApiTest {
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index 59ae710..14de9fe3 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -382,6 +382,11 @@
     "expiry_milestone": 94
   },
   {
+    "name": "autofill-fill-merchant-promo-code-fields",
+    "owners": [ "jsaul@google.com", "payments-autofill-team@google.com" ],
+    "expiry_milestone": 99
+  },
+  {
     "name": "autofill-fix-offer-in-incognito",
     "owners": [ "siyua" ],
     "expiry_milestone": 97
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 0309ecb..ee55be6 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -338,6 +338,12 @@
     "When enabled, if all requirements are met, Autofill will offer to use "
     "virtual credit cards in form filling.";
 
+const char kAutofillFillMerchantPromoCodeFieldsName[] =
+    "Enable Autofill of promo code fields in forms";
+const char kAutofillFillMerchantPromoCodeFieldsDescription[] =
+    "When enabled, Autofill will attempt to fill merchant promo/coupon/gift "
+    "code fields when data is available.";
+
 const char kAutofillFixOfferInIncognitoName[] =
     "Enable the fix for Autofill offer in Incognito mode";
 const char kAutofillFixOfferInIncognitoDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 5bab29b..caa1e810 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -202,6 +202,9 @@
 extern const char kAutofillEnableVirtualCardName[];
 extern const char kAutofillEnableVirtualCardDescription[];
 
+extern const char kAutofillFillMerchantPromoCodeFieldsName[];
+extern const char kAutofillFillMerchantPromoCodeFieldsDescription[];
+
 extern const char kAutofillFixOfferInIncognitoName[];
 extern const char kAutofillFixOfferInIncognitoDescription[];
 
diff --git a/chrome/browser/lacros/download_controller_client_lacros.cc b/chrome/browser/lacros/download_controller_client_lacros.cc
index 9d71d3c..b644642 100644
--- a/chrome/browser/lacros/download_controller_client_lacros.cc
+++ b/chrome/browser/lacros/download_controller_client_lacros.cc
@@ -16,7 +16,7 @@
 
 namespace {
 
-crosapi::mojom::DownloadState ConvertDownloadState(
+crosapi::mojom::DownloadState ConvertMojoDownloadState(
     download::DownloadItem::DownloadState value) {
   switch (value) {
     case download::DownloadItem::IN_PROGRESS:
@@ -33,26 +33,26 @@
   }
 }
 
-crosapi::mojom::DownloadEventPtr BuildDownloadEvent(
+crosapi::mojom::DownloadItemPtr ConvertToMojoDownloadItem(
     download::DownloadItem* item) {
   auto* profile = Profile::FromBrowserContext(
       content::DownloadItemUtils::GetBrowserContext(item));
 
-  crosapi::mojom::DownloadEventPtr dle = crosapi::mojom::DownloadEvent::New();
-  dle->guid = item->GetGuid();
-  dle->state = ConvertDownloadState(item->GetState());
-  dle->full_path = item->GetFullPath();
-  dle->target_file_path = item->GetTargetFilePath();
-  dle->is_from_incognito_profile = profile->IsIncognitoProfile();
-  dle->is_paused = item->IsPaused();
-  dle->has_is_paused = true;
-  dle->open_when_complete = item->GetOpenWhenComplete();
-  dle->has_open_when_complete = true;
-  dle->received_bytes = item->GetReceivedBytes();
-  dle->has_received_bytes = true;
-  dle->total_bytes = item->GetTotalBytes();
-  dle->has_total_bytes = true;
-  return dle;
+  auto download = crosapi::mojom::DownloadItem::New();
+  download->guid = item->GetGuid();
+  download->state = ConvertMojoDownloadState(item->GetState());
+  download->full_path = item->GetFullPath();
+  download->target_file_path = item->GetTargetFilePath();
+  download->is_from_incognito_profile = profile->IsIncognitoProfile();
+  download->is_paused = item->IsPaused();
+  download->has_is_paused = true;
+  download->open_when_complete = item->GetOpenWhenComplete();
+  download->has_open_when_complete = true;
+  download->received_bytes = item->GetReceivedBytes();
+  download->has_received_bytes = true;
+  download->total_bytes = item->GetTotalBytes();
+  download->has_total_bytes = true;
+  return download;
 }
 
 }  // namespace
@@ -261,7 +261,7 @@
     return;
 
   service->GetRemote<crosapi::mojom::DownloadController>()->OnDownloadCreated(
-      BuildDownloadEvent(item));
+      ConvertToMojoDownloadItem(item));
 }
 
 void DownloadControllerClientLacros::OnDownloadUpdated(
@@ -271,7 +271,7 @@
     return;
 
   service->GetRemote<crosapi::mojom::DownloadController>()->OnDownloadUpdated(
-      BuildDownloadEvent(item));
+      ConvertToMojoDownloadItem(item));
 }
 
 void DownloadControllerClientLacros::OnDownloadDestroyed(
@@ -281,5 +281,5 @@
     return;
 
   service->GetRemote<crosapi::mojom::DownloadController>()->OnDownloadDestroyed(
-      BuildDownloadEvent(item));
+      ConvertToMojoDownloadItem(item));
 }
diff --git a/chrome/browser/media/cast_mirroring_service_host.cc b/chrome/browser/media/cast_mirroring_service_host.cc
index ec1f36f1..0998b005 100644
--- a/chrome/browser/media/cast_mirroring_service_host.cc
+++ b/chrome/browser/media/cast_mirroring_service_host.cc
@@ -465,14 +465,6 @@
 }
 
 #if BUILDFLAG(ENABLE_EXTENSIONS)
-void CastMirroringServiceHost::RequestMediaAccessPermission(
-    const content::MediaStreamRequest& request,
-    content::MediaResponseCallback callback) {
-  // This should not be called when mirroring an OffscreenTab through the
-  // mirroring service.
-  NOTREACHED();
-}
-
 void CastMirroringServiceHost::DestroyTab(OffscreenTab* tab) {
   if (offscreen_tab_ && (offscreen_tab_.get() == tab))
     offscreen_tab_.reset();
diff --git a/chrome/browser/media/cast_mirroring_service_host.h b/chrome/browser/media/cast_mirroring_service_host.h
index 3748568..bd0ac76 100644
--- a/chrome/browser/media/cast_mirroring_service_host.h
+++ b/chrome/browser/media/cast_mirroring_service_host.h
@@ -127,9 +127,6 @@
 
 #if BUILDFLAG(ENABLE_EXTENSIONS)
   // OffscreenTab::Owner implementation.
-  void RequestMediaAccessPermission(
-      const content::MediaStreamRequest& request,
-      content::MediaResponseCallback callback) override;
   void DestroyTab(OffscreenTab* tab) override;
 
   // Creates and starts a new OffscreenTab.
diff --git a/chrome/browser/media/offscreen_tab.cc b/chrome/browser/media/offscreen_tab.cc
index 412e6b05..d6295d8 100644
--- a/chrome/browser/media/offscreen_tab.cc
+++ b/chrome/browser/media/offscreen_tab.cc
@@ -17,6 +17,7 @@
 #include "content/public/browser/presentation_receiver_flags.h"
 #include "content/public/browser/render_widget_host_view.h"
 #include "content/public/browser/web_contents.h"
+#include "third_party/blink/public/mojom/mediastream/media_stream.mojom-shared.h"
 
 #if defined(USE_AURA)
 #include "base/threading/thread_task_runner_handle.h"
@@ -331,18 +332,16 @@
     WebContents* contents,
     const content::MediaStreamRequest& request,
     content::MediaResponseCallback callback) {
-  DCHECK_EQ(offscreen_tab_web_contents_.get(), contents);
-  owner_->RequestMediaAccessPermission(request, std::move(callback));
+  std::move(callback).Run(blink::MediaStreamDevices(),
+                          blink::mojom::MediaStreamRequestResult::NOT_SUPPORTED,
+                          nullptr);
 }
 
 bool OffscreenTab::CheckMediaAccessPermission(
     content::RenderFrameHost* render_frame_host,
     const GURL& security_origin,
     blink::mojom::MediaStreamType type) {
-  DCHECK_EQ(offscreen_tab_web_contents_.get(),
-            content::WebContents::FromRenderFrameHost(render_frame_host));
-  return type == blink::mojom::MediaStreamType::GUM_TAB_AUDIO_CAPTURE ||
-         type == blink::mojom::MediaStreamType::GUM_TAB_VIDEO_CAPTURE;
+  return false;
 }
 
 void OffscreenTab::DidStartNavigation(
diff --git a/chrome/browser/media/offscreen_tab.h b/chrome/browser/media/offscreen_tab.h
index fb09bf2c..3fd38bcb 100644
--- a/chrome/browser/media/offscreen_tab.h
+++ b/chrome/browser/media/offscreen_tab.h
@@ -47,15 +47,12 @@
                            protected content::WebContentsDelegate,
                            protected content::WebContentsObserver {
  public:
+  // TODO(crbug.com/1234929): Hold the OffscreenTab by a WeakPtr, then Owner can
+  // be deleted.
   class Owner {
    public:
     virtual ~Owner() {}
 
-    // Checks whether capturing the |contents| is permitted.
-    virtual void RequestMediaAccessPermission(
-        const content::MediaStreamRequest& request,
-        content::MediaResponseCallback callback) = 0;
-
     // |tab| is no longer valid after this call.
     virtual void DestroyTab(OffscreenTab* tab) = 0;
   };
diff --git a/chrome/browser/media/router/providers/test/test_media_route_provider.cc b/chrome/browser/media/router/providers/test/test_media_route_provider.cc
index df83bde..21891ac 100644
--- a/chrome/browser/media/router/providers/test/test_media_route_provider.cc
+++ b/chrome/browser/media/router/providers/test/test_media_route_provider.cc
@@ -14,8 +14,6 @@
 #include "base/run_loop.h"
 #include "base/task/task_traits.h"
 #include "base/task/thread_pool.h"
-#include "chrome/browser/extensions/api/tab_capture/offscreen_tabs_owner.h"
-#include "chrome/browser/media/offscreen_tab.h"
 #include "components/media_router/common/media_source.h"
 #include "components/media_router/common/mojom/media_router.mojom.h"
 #include "components/media_router/common/route_request_result.h"
@@ -83,8 +81,8 @@
     std::move(callback).Run(absl::nullopt, nullptr, route_error_message_,
                             RouteRequestResult::ResultCode::UNKNOWN_ERROR);
   } else if (!delay_.is_zero()) {
-    base::ThreadPool::PostDelayedTask(
-        FROM_HERE, {base::TaskPriority::HIGHEST},
+    base::SequencedTaskRunnerHandle::Get()->PostDelayedTask(
+        FROM_HERE,
         base::BindOnce(&TestMediaRouteProvider::CreateRouteTimeOut,
                        GetWeakPtr(), std::move(callback)),
         delay_);
@@ -284,8 +282,21 @@
     content::WebContents* web_contents,
     GURL source_urn,
     std::string& presentation_id) {
-  extensions::OffscreenTabsOwner::Get(web_contents)
-      ->OpenNewTab(source_urn, gfx::Size(180, 180), presentation_id);
+  offscreen_tab_ =
+      std::make_unique<OffscreenTab>(this, web_contents->GetBrowserContext());
+  offscreen_tab_->Start(source_urn, gfx::Size(180, 180), presentation_id);
+}
+
+void TestMediaRouteProvider::TearDown() {
+  // An OffscreenTab observes its Profile*, and must be destroyed before
+  // Profiles.
+  if (offscreen_tab_)
+    offscreen_tab_.reset();
+}
+
+void TestMediaRouteProvider::DestroyTab(OffscreenTab* tab) {
+  if (offscreen_tab_ && offscreen_tab_.get() == tab)
+    offscreen_tab_.reset();
 }
 
 }  // namespace media_router
diff --git a/chrome/browser/media/router/providers/test/test_media_route_provider.h b/chrome/browser/media/router/providers/test/test_media_route_provider.h
index 5292284..2e15ae26 100644
--- a/chrome/browser/media/router/providers/test/test_media_route_provider.h
+++ b/chrome/browser/media/router/providers/test/test_media_route_provider.h
@@ -12,6 +12,7 @@
 
 #include "base/callback.h"
 #include "base/memory/weak_ptr.h"
+#include "chrome/browser/media/offscreen_tab.h"
 #include "components/media_router/common/media_route.h"
 #include "components/media_router/common/mojom/media_router.mojom.h"
 #include "content/public/test/browser_test_utils.h"
@@ -23,7 +24,8 @@
 namespace media_router {
 
 // The Test MediaRouteProvider class is used for integration browser test.
-class TestMediaRouteProvider : public mojom::MediaRouteProvider {
+class TestMediaRouteProvider : public mojom::MediaRouteProvider,
+                               public OffscreenTab::Owner {
  public:
   static const mojom::MediaRouteProviderId kProviderId;
   TestMediaRouteProvider(
@@ -105,12 +107,16 @@
   void CaptureOffScreenTab(content::WebContents* web_contents,
                            GURL source_urn,
                            std::string& presentation_id);
+  void TearDown();
 
  private:
   base::WeakPtr<TestMediaRouteProvider> GetWeakPtr() {
     return weak_ptr_factory_.GetWeakPtr();
   }
 
+  // OffscreenTab::Owner overrides
+  void DestroyTab(OffscreenTab* tab) override;
+
   std::vector<MediaRoute> GetMediaRoutes();
   void SetSinks();
   void CreateRouteTimeOut(CreateRouteCallback callback);
@@ -128,6 +134,8 @@
   // Mojo remote to the Media Router.
   mojo::Remote<mojom::MediaRouter> media_router_;
 
+  std::unique_ptr<OffscreenTab> offscreen_tab_;
+
   base::WeakPtrFactory<TestMediaRouteProvider> weak_ptr_factory_{this};
 };
 
diff --git a/chrome/browser/nearby_sharing/fast_initiation/fast_initiation_scanner.cc b/chrome/browser/nearby_sharing/fast_initiation/fast_initiation_scanner.cc
index ab88036..29c1e63 100644
--- a/chrome/browser/nearby_sharing/fast_initiation/fast_initiation_scanner.cc
+++ b/chrome/browser/nearby_sharing/fast_initiation/fast_initiation_scanner.cc
@@ -22,26 +22,41 @@
 
 }  // namespace
 
+// static
+FastInitiationScanner::Factory*
+    FastInitiationScanner::Factory::factory_instance_ = nullptr;
+
+// static
+std::unique_ptr<FastInitiationScanner> FastInitiationScanner::Factory::Create(
+    scoped_refptr<device::BluetoothAdapter> adapter) {
+  if (factory_instance_)
+    return factory_instance_->CreateInstance(adapter);
+
+  return std::make_unique<FastInitiationScanner>(adapter);
+}
+
+// static
+void FastInitiationScanner::Factory::SetFactoryForTesting(
+    FastInitiationScanner::Factory* factory) {
+  factory_instance_ = factory;
+}
+
 FastInitiationScanner::FastInitiationScanner(
-    scoped_refptr<device::BluetoothAdapter> adapter,
-    base::RepeatingClosure device_found_callback,
-    base::RepeatingClosure device_lost_callback,
-    base::OnceClosure scanner_invalidated_callback)
-    : adapter_(adapter),
-      device_found_callback_(std::move(device_found_callback)),
-      device_lost_callback_(std::move(device_lost_callback)),
-      scanner_invalidated_callback_(std::move(scanner_invalidated_callback)) {
+    scoped_refptr<device::BluetoothAdapter> adapter)
+    : adapter_(adapter) {
   DCHECK(adapter_ && adapter_->IsPresent() && adapter_->IsPowered());
-  StartScanning();
 }
 
 FastInitiationScanner::~FastInitiationScanner() {}
 
-bool FastInitiationScanner::AreFastInitiationDevicesDetected() const {
-  return !devices_attempting_to_share_.empty();
-}
+void FastInitiationScanner::StartScanning(
+    base::RepeatingClosure device_found_callback,
+    base::RepeatingClosure device_lost_callback,
+    base::OnceClosure scanner_invalidated_callback) {
+  device_found_callback_ = std::move(device_found_callback);
+  device_lost_callback_ = std::move(device_lost_callback);
+  scanner_invalidated_callback_ = std::move(scanner_invalidated_callback);
 
-void FastInitiationScanner::StartScanning() {
   std::vector<uint8_t> pattern_value;
   // Add the service UUID in reversed byte order.
   pattern_value.insert(pattern_value.begin(),
@@ -71,6 +86,10 @@
       std::move(filter), /*delegate=*/weak_ptr_factory_.GetWeakPtr());
 }
 
+bool FastInitiationScanner::AreFastInitiationDevicesDetected() const {
+  return !devices_attempting_to_share_.empty();
+}
+
 void FastInitiationScanner::OnSessionStarted(
     device::BluetoothLowEnergyScanSession* scan_session,
     absl::optional<device::BluetoothLowEnergyScanSession::ErrorCode>
diff --git a/chrome/browser/nearby_sharing/fast_initiation/fast_initiation_scanner.h b/chrome/browser/nearby_sharing/fast_initiation/fast_initiation_scanner.h
index e10927a..ddb10c2 100644
--- a/chrome/browser/nearby_sharing/fast_initiation/fast_initiation_scanner.h
+++ b/chrome/browser/nearby_sharing/fast_initiation/fast_initiation_scanner.h
@@ -15,22 +15,48 @@
 #include "device/bluetooth/bluetooth_adapter.h"
 #include "device/bluetooth/bluetooth_low_energy_scan_session.h"
 
+// FastInitiationScanner will scan for BLE advertisements using a
+// BluetoothLowEnergyScanSession. It will filter for advertisements containing
+// the Fast Initiation UUID 0xFE2C and service data 0xFC128E. Remote devices
+// will broacast these advertisements when they are attempting to share (see
+// FastInitiationAdvertiser). We use this as a signal to prompt the user to
+// enable high visibility mode.
 class FastInitiationScanner
     : public device::BluetoothLowEnergyScanSession::Delegate {
  public:
-  FastInitiationScanner(scoped_refptr<device::BluetoothAdapter> adapter,
-                        base::RepeatingClosure device_found_callback,
-                        base::RepeatingClosure device_lost_callback,
-                        base::OnceClosure scanner_invalidated_callback);
+  class Factory {
+   public:
+    Factory() = default;
+    Factory(const Factory&) = delete;
+    Factory& operator=(const Factory&) = delete;
+
+    static std::unique_ptr<FastInitiationScanner> Create(
+        scoped_refptr<device::BluetoothAdapter> adapter);
+
+    static void SetFactoryForTesting(Factory* factory);
+
+   protected:
+    virtual ~Factory() = default;
+    virtual std::unique_ptr<FastInitiationScanner> CreateInstance(
+        scoped_refptr<device::BluetoothAdapter> adapter) = 0;
+
+   private:
+    static Factory* factory_instance_;
+  };
+
+  explicit FastInitiationScanner(
+      scoped_refptr<device::BluetoothAdapter> adapter);
   ~FastInitiationScanner() override;
   FastInitiationScanner(const FastInitiationScanner&) = delete;
   FastInitiationScanner& operator=(const FastInitiationScanner&) = delete;
 
-  bool AreFastInitiationDevicesDetected() const;
+  virtual void StartScanning(base::RepeatingClosure device_found_callback,
+                             base::RepeatingClosure device_lost_callback,
+                             base::OnceClosure scanner_invalidated_callback);
+
+  virtual bool AreFastInitiationDevicesDetected() const;
 
  private:
-  void StartScanning();
-
   // device::BluetoothLowEnergyScanSession::Delegate:
   void OnSessionStarted(
       device::BluetoothLowEnergyScanSession* scan_session,
diff --git a/chrome/browser/nearby_sharing/fast_initiation/fast_initiation_scanner_unittest.cc b/chrome/browser/nearby_sharing/fast_initiation/fast_initiation_scanner_unittest.cc
index 89b59848..f4460281 100644
--- a/chrome/browser/nearby_sharing/fast_initiation/fast_initiation_scanner_unittest.cc
+++ b/chrome/browser/nearby_sharing/fast_initiation/fast_initiation_scanner_unittest.cc
@@ -51,8 +51,8 @@
     device::BluetoothAdapterFactory::SetAdapterForTesting(
         mock_bluetooth_adapter_);
 
-    scanner_ = std::make_unique<FastInitiationScanner>(
-        mock_bluetooth_adapter_,
+    scanner_ = FastInitiationScanner::Factory::Create(mock_bluetooth_adapter_);
+    scanner_->StartScanning(
         base::BindRepeating(
             &NearbySharingFastInitiationScannerTest::OnDevicesDetected,
             weak_ptr_factory_.GetWeakPtr()),
diff --git a/chrome/browser/nearby_sharing/nearby_sharing_service_impl.cc b/chrome/browser/nearby_sharing/nearby_sharing_service_impl.cc
index ac7242d5..b4363bc0 100644
--- a/chrome/browser/nearby_sharing/nearby_sharing_service_impl.cc
+++ b/chrome/browser/nearby_sharing/nearby_sharing_service_impl.cc
@@ -2174,8 +2174,9 @@
 void NearbySharingServiceImpl::StartFastInitiationScanning() {
   DCHECK(!fast_initiation_scanner_);
   NS_LOG(VERBOSE) << __func__ << ": Starting background scanning.";
-  fast_initiation_scanner_ = std::make_unique<FastInitiationScanner>(
-      bluetooth_adapter_,
+  fast_initiation_scanner_ =
+      FastInitiationScanner::Factory::Create(bluetooth_adapter_);
+  fast_initiation_scanner_->StartScanning(
       base::BindRepeating(
           &NearbySharingServiceImpl::OnFastInitiationDeviceFound,
           weak_ptr_factory_.GetWeakPtr()),
diff --git a/chrome/browser/nearby_sharing/nearby_sharing_service_impl_unittest.cc b/chrome/browser/nearby_sharing/nearby_sharing_service_impl_unittest.cc
index 379bd1bb..d866991 100644
--- a/chrome/browser/nearby_sharing/nearby_sharing_service_impl_unittest.cc
+++ b/chrome/browser/nearby_sharing/nearby_sharing_service_impl_unittest.cc
@@ -39,6 +39,7 @@
 #include "chrome/browser/nearby_sharing/fake_nearby_connection.h"
 #include "chrome/browser/nearby_sharing/fake_nearby_connections_manager.h"
 #include "chrome/browser/nearby_sharing/fast_initiation/fast_initiation_advertiser.h"
+#include "chrome/browser/nearby_sharing/fast_initiation/fast_initiation_scanner.h"
 #include "chrome/browser/nearby_sharing/local_device_data/fake_nearby_share_local_device_data_manager.h"
 #include "chrome/browser/nearby_sharing/local_device_data/nearby_share_local_device_data_manager_impl.h"
 #include "chrome/browser/nearby_sharing/nearby_connections_manager.h"
@@ -81,6 +82,8 @@
 using NearbyProcessShutdownReason =
     chromeos::nearby::NearbyProcessManager::NearbyProcessShutdownReason;
 
+namespace {
+
 class FakeFastInitiationAdvertiser : public FastInitiationAdvertiser {
  public:
   explicit FakeFastInitiationAdvertiser(
@@ -172,6 +175,81 @@
       this};
 };
 
+class FakeFastInitiationScanner : public FastInitiationScanner {
+ public:
+  FakeFastInitiationScanner(scoped_refptr<device::BluetoothAdapter> adapter,
+                            base::OnceClosure destructor_callback)
+      : FastInitiationScanner(adapter),
+        destructor_callback_(std::move(destructor_callback)) {}
+
+  ~FakeFastInitiationScanner() override {
+    std::move(destructor_callback_).Run();
+  }
+
+  void StartScanning(base::RepeatingClosure device_found_callback,
+                     base::RepeatingClosure device_lost_callback,
+                     base::OnceClosure scanner_invalidated_callback) override {
+    ++start_scanning_call_count_;
+    device_found_callback_ = std::move(device_found_callback);
+    device_lost_callback_ = std::move(device_lost_callback);
+    scanner_invalidated_callback_ = std::move(scanner_invalidated_callback);
+  }
+
+  bool AreFastInitiationDevicesDetected() const override {
+    return are_fast_initiation_devices_detected_;
+  }
+
+  void SetAreFastInitiationDevicesDetected(
+      bool are_fast_initiation_devices_detected) {
+    are_fast_initiation_devices_detected_ =
+        are_fast_initiation_devices_detected;
+  }
+
+  void DeviceFound() { device_found_callback_.Run(); }
+
+  void DeviceLost() { device_lost_callback_.Run(); }
+
+  void ScannerInvalidated() { std::move(scanner_invalidated_callback_).Run(); }
+
+ private:
+  base::OnceClosure destructor_callback_;
+  base::RepeatingClosure device_found_callback_;
+  base::RepeatingClosure device_lost_callback_;
+  base::OnceClosure scanner_invalidated_callback_;
+  bool are_fast_initiation_devices_detected_ = false;
+  size_t start_scanning_call_count_ = 0u;
+};
+
+class FakeFastInitiationScannerFactory : public FastInitiationScanner::Factory {
+ public:
+  std::unique_ptr<FastInitiationScanner> CreateInstance(
+      scoped_refptr<device::BluetoothAdapter> adapter) override {
+    ++scanner_created_count_;
+    auto scanner = std::make_unique<FakeFastInitiationScanner>(
+        adapter,
+        base::BindOnce(&FakeFastInitiationScannerFactory::OnScannerDestroyed,
+                       weak_ptr_factory_.GetWeakPtr()));
+    last_fake_fast_initiation_scanner_ = scanner.get();
+    return std::move(scanner);
+  }
+
+  FakeFastInitiationScanner* last_fake_fast_initiation_scanner() {
+    return last_fake_fast_initiation_scanner_;
+  }
+  size_t scanner_created_count() { return scanner_created_count_; }
+  size_t scanner_destroyed_count() { return scanner_destroyed_count_; }
+
+ private:
+  void OnScannerDestroyed() { ++scanner_destroyed_count_; }
+
+  FakeFastInitiationScanner* last_fake_fast_initiation_scanner_ = nullptr;
+  size_t scanner_created_count_ = 0u;
+  size_t scanner_destroyed_count_ = 0u;
+
+  base::WeakPtrFactory<FakeFastInitiationScannerFactory> weak_ptr_factory_{
+      this};
+};
+
 class MockTransferUpdateCallback : public TransferUpdateCallback {
  public:
   ~MockTransferUpdateCallback() override = default;
@@ -209,6 +287,8 @@
   bool callback_called = false;
 };
 
+}  // namespace
+
 namespace NearbySharingServiceUnitTests {
 
 constexpr base::TimeDelta kDelta = base::TimeDelta::FromMilliseconds(100);
@@ -445,6 +525,7 @@
               return mock_reference_ptr;
             });
 
+    SetFakeFastInitiationScannerFactory();
     service_ = CreateService();
     SetFakeFastInitiationAdvertiserFactory(/*should_succeed_on_start=*/true);
 
@@ -529,6 +610,13 @@
         fast_initiation_advertiser_factory_.get());
   }
 
+  void SetFakeFastInitiationScannerFactory() {
+    fast_initiation_scanner_factory_ =
+        std::make_unique<FakeFastInitiationScannerFactory>();
+    FastInitiationScanner::Factory::SetFactoryForTesting(
+        fast_initiation_scanner_factory_.get());
+  }
+
   bool IsBluetoothPresent() { return is_bluetooth_present_; }
   bool IsBluetoothPowered() { return is_bluetooth_powered_; }
 
@@ -1089,6 +1177,8 @@
   std::unique_ptr<base::ScopedDisallowBlocking> disallow_blocking_;
   std::unique_ptr<FakeFastInitiationAdvertiserFactory>
       fast_initiation_advertiser_factory_;
+  std::unique_ptr<FakeFastInitiationScannerFactory>
+      fast_initiation_scanner_factory_;
   std::unique_ptr<FakeArcNearbyShareSession> arc_nearby_share_session_;
   bool is_bluetooth_present_ = true;
   bool is_bluetooth_powered_ = true;
@@ -1183,6 +1273,12 @@
     on_start_advertising_failure_called_ = true;
   }
 
+  void OnFastInitiationDeviceFound() override { device_found_called_ = true; }
+  void OnFastInitiationDeviceLost() override { device_lost_called_ = true; }
+  void OnFastInitiationScanningStopped() override {
+    scanning_stopped_called_ = true;
+  }
+
   void OnShutdown() override {
     shutdown_called_ = true;
     service_->RemoveObserver(this);
@@ -1192,6 +1288,9 @@
   bool shutdown_called_ = false;
   bool process_stopped_called_ = false;
   bool on_start_advertising_failure_called_ = false;
+  bool device_found_called_ = false;
+  bool device_lost_called_ = false;
+  bool scanning_stopped_called_ = false;
   NearbySharingService* service_;
 };
 
@@ -4520,11 +4619,68 @@
   EXPECT_FALSE(IsProcessShutdownTimerRunning());
 }
 
-TEST_F(NearbySharingServiceImplTest, FastInitiationScanningStartAndStop) {
+TEST_F(NearbySharingServiceImplTest, FastInitiationScanning_StartAndStop) {
   SetConnectionType(net::NetworkChangeNotifier::CONNECTION_BLUETOOTH);
-  EXPECT_TRUE(mock_scan_session_);
+  EXPECT_EQ(1u, fast_initiation_scanner_factory_->scanner_created_count());
+  EXPECT_EQ(0u, fast_initiation_scanner_factory_->scanner_destroyed_count());
+
+  // Trigger a call to StopFastInitiationScanning().
   SetBluetoothIsPowered(false);
-  EXPECT_FALSE(mock_scan_session_);
+  EXPECT_EQ(1u, fast_initiation_scanner_factory_->scanner_created_count());
+  EXPECT_EQ(1u, fast_initiation_scanner_factory_->scanner_destroyed_count());
+
+  // Trigger a call to StartFastInitiationScanning().
+  SetBluetoothIsPowered(true);
+  EXPECT_EQ(2u, fast_initiation_scanner_factory_->scanner_created_count());
+  EXPECT_EQ(1u, fast_initiation_scanner_factory_->scanner_destroyed_count());
+}
+
+TEST_F(NearbySharingServiceImplTest,
+       FastInitiationScanning_MultipleReceiveSurfaces) {
+  SetConnectionType(net::NetworkChangeNotifier::CONNECTION_BLUETOOTH);
+  EXPECT_EQ(1u, fast_initiation_scanner_factory_->scanner_created_count());
+  EXPECT_EQ(0u, fast_initiation_scanner_factory_->scanner_destroyed_count());
+
+  // Registering a background receive surface should not create a scanner since
+  // we're already scanning.
+  MockTransferUpdateCallback callback;
+  service_->RegisterReceiveSurface(
+      &callback, NearbySharingService::ReceiveSurfaceState::kBackground);
+  EXPECT_EQ(1u, fast_initiation_scanner_factory_->scanner_created_count());
+  EXPECT_EQ(0u, fast_initiation_scanner_factory_->scanner_destroyed_count());
+}
+
+TEST_F(NearbySharingServiceImplTest, FastInitiationScanning_NotifyObservers) {
+  SetConnectionType(net::NetworkChangeNotifier::CONNECTION_BLUETOOTH);
+  TestObserver observer(service_.get());
+  ASSERT_EQ(1u, fast_initiation_scanner_factory_->scanner_created_count());
+
+  FakeFastInitiationScanner* scanner =
+      fast_initiation_scanner_factory_->last_fake_fast_initiation_scanner();
+  scanner->DeviceFound();
+  EXPECT_TRUE(observer.device_found_called_);
+  scanner->DeviceLost();
+  EXPECT_TRUE(observer.device_lost_called_);
+  scanner->ScannerInvalidated();
+  EXPECT_TRUE(observer.scanning_stopped_called_);
+
+  // Remove the observer before it goes out of scope.
+  service_->RemoveObserver(&observer);
+}
+
+TEST_F(NearbySharingServiceImplTest,
+       FastInitiationScanning_AreDevicesDetected) {
+  SetConnectionType(net::NetworkChangeNotifier::CONNECTION_BLUETOOTH);
+  ASSERT_EQ(1u, fast_initiation_scanner_factory_->scanner_created_count());
+
+  FakeFastInitiationScanner* scanner =
+      fast_initiation_scanner_factory_->last_fake_fast_initiation_scanner();
+  scanner->SetAreFastInitiationDevicesDetected(true);
+  EXPECT_EQ(scanner->AreFastInitiationDevicesDetected(),
+            service_->AreFastInitiationDevicesDetected());
+  scanner->SetAreFastInitiationDevicesDetected(false);
+  EXPECT_EQ(scanner->AreFastInitiationDevicesDetected(),
+            service_->AreFastInitiationDevicesDetected());
 }
 
 }  // namespace NearbySharingServiceUnitTests
diff --git a/chrome/browser/optimization_guide/browser_test_util.cc b/chrome/browser/optimization_guide/browser_test_util.cc
new file mode 100644
index 0000000..a9bf24f
--- /dev/null
+++ b/chrome/browser/optimization_guide/browser_test_util.cc
@@ -0,0 +1,51 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/optimization_guide/browser_test_util.h"
+
+#include "base/run_loop.h"
+#include "base/task/thread_pool/thread_pool_instance.h"
+#include "base/test/metrics/histogram_tester.h"
+#include "components/metrics/content/subprocess_metrics_provider.h"
+#include "content/public/test/browser_test_utils.h"
+
+namespace optimization_guide {
+
+namespace {
+
+// Fetch and calculate the total number of samples from all the bins for
+// |histogram_name|. Note: from some browertests run (such as chromeos) there
+// might be two profiles created, and this will return the total sample count
+// across profiles.
+int GetTotalHistogramSamples(const base::HistogramTester* histogram_tester,
+                             const std::string& histogram_name) {
+  std::vector<base::Bucket> buckets =
+      histogram_tester->GetAllSamples(histogram_name);
+  int total = 0;
+  for (const auto& bucket : buckets)
+    total += bucket.count;
+
+  return total;
+}
+
+}  // namespace
+
+int RetryForHistogramUntilCountReached(
+    const base::HistogramTester* histogram_tester,
+    const std::string& histogram_name,
+    int count) {
+  while (true) {
+    base::ThreadPoolInstance::Get()->FlushForTesting();
+    base::RunLoop().RunUntilIdle();
+
+    content::FetchHistogramsFromChildProcesses();
+    metrics::SubprocessMetricsProvider::MergeHistogramDeltasForTesting();
+
+    int total = GetTotalHistogramSamples(histogram_tester, histogram_name);
+    if (total >= count)
+      return total;
+  }
+}
+
+}  // namespace optimization_guide
diff --git a/chrome/browser/optimization_guide/browser_test_util.h b/chrome/browser/optimization_guide/browser_test_util.h
new file mode 100644
index 0000000..284cb58b
--- /dev/null
+++ b/chrome/browser/optimization_guide/browser_test_util.h
@@ -0,0 +1,25 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_OPTIMIZATION_GUIDE_BROWSER_TEST_UTIL_H_
+#define CHROME_BROWSER_OPTIMIZATION_GUIDE_BROWSER_TEST_UTIL_H_
+
+#include <string>
+
+namespace base {
+class HistogramTester;
+}  // namespace base
+
+namespace optimization_guide {
+
+// Retries fetching |histogram_name| until it contains at least |count| samples.
+// Returns the count of samples.
+int RetryForHistogramUntilCountReached(
+    const base::HistogramTester* histogram_tester,
+    const std::string& histogram_name,
+    int count);
+
+}  // namespace optimization_guide
+
+#endif  // CHROME_BROWSER_OPTIMIZATION_GUIDE_BROWSER_TEST_UTIL_H_
diff --git a/chrome/browser/optimization_guide/hints_fetcher_browsertest.cc b/chrome/browser/optimization_guide/hints_fetcher_browsertest.cc
index 843d98c..6a93079 100644
--- a/chrome/browser/optimization_guide/hints_fetcher_browsertest.cc
+++ b/chrome/browser/optimization_guide/hints_fetcher_browsertest.cc
@@ -18,6 +18,7 @@
 #include "base/test/scoped_feature_list.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
+#include "chrome/browser/optimization_guide/browser_test_util.h"
 #include "chrome/browser/optimization_guide/optimization_guide_keyed_service.h"
 #include "chrome/browser/optimization_guide/optimization_guide_keyed_service_factory.h"
 #include "chrome/browser/profiles/profile.h"
@@ -36,6 +37,7 @@
 #include "components/optimization_guide/core/optimization_guide_prefs.h"
 #include "components/optimization_guide/core/optimization_guide_store.h"
 #include "components/optimization_guide/core/optimization_guide_switches.h"
+#include "components/optimization_guide/core/optimization_guide_test_util.h"
 #include "components/optimization_guide/core/optimization_hints_component_update_listener.h"
 #include "components/optimization_guide/core/test_hints_component_creator.h"
 #include "components/optimization_guide/core/top_host_provider.h"
@@ -60,41 +62,6 @@
 
 namespace {
 
-// Fetch and calculate the total number of samples from all the bins for
-// |histogram_name|. Note: from some browertests run (such as chromeos) there
-// might be two profiles created, and this will return the total sample count
-// across profiles.
-int GetTotalHistogramSamples(const base::HistogramTester* histogram_tester,
-                             const std::string& histogram_name) {
-  std::vector<base::Bucket> buckets =
-      histogram_tester->GetAllSamples(histogram_name);
-  int total = 0;
-  for (const auto& bucket : buckets)
-    total += bucket.count;
-
-  return total;
-}
-
-// Retries fetching |histogram_name| until it contains at least |count| samples.
-int RetryForHistogramUntilCountReached(
-    const base::HistogramTester* histogram_tester,
-    const std::string& histogram_name,
-    int count) {
-  int total = 0;
-  while (true) {
-    base::ThreadPoolInstance::Get()->FlushForTesting();
-    base::RunLoop().RunUntilIdle();
-
-    total = GetTotalHistogramSamples(histogram_tester, histogram_name);
-    if (total >= count)
-      return total;
-
-    content::FetchHistogramsFromChildProcesses();
-    metrics::SubprocessMetricsProvider::MergeHistogramDeltasForTesting();
-    base::RunLoop().RunUntilIdle();
-  }
-}
-
 enum class HintsFetcherRemoteResponseType {
   kSuccessful = 0,
   kUnsuccessful = 1,
@@ -217,7 +184,7 @@
     optimization_guide::OptimizationHintsComponentUpdateListener::GetInstance()
         ->MaybeUpdateHintsComponent(component_info);
 
-    RetryForHistogramUntilCountReached(
+    optimization_guide::RetryForHistogramUntilCountReached(
         &histogram_tester,
         optimization_guide::kComponentHintsUpdatedResultHistogramString, 1);
   }
@@ -244,7 +211,7 @@
     // histogram) prior to the navigation that tests functionality.
     ui_test_utils::NavigateToURL(browser(), url);
 
-    RetryForHistogramUntilCountReached(
+    optimization_guide::RetryForHistogramUntilCountReached(
         &histogram_tester, optimization_guide::kLoadedHintLocalHistogramString,
         1);
   }
@@ -488,12 +455,12 @@
 
   // Expect that the browser initialization will record at least one sample
   // in each of the following histograms as One Platform Hints are enabled.
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount", 1),
             1);
 
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.Status", 1),
             1);
@@ -526,16 +493,16 @@
 
   // Expect that the browser initialization will record at least one sample
   // in each of the following histograms as One Platform Hints are enabled.
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount", 1),
             1);
 
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.Status", 1),
             1);
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.HintCount", 1),
             1);
@@ -561,14 +528,14 @@
 
   // Expect that the browser initialization will record at least one sample
   // in each of the following histograms as One Platform Hints are enabled.
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount", 1),
             1);
 
   // Wait until histograms have been updated before performing checks for
   // correct behavior based on the response.
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.Status", 1),
             1);
@@ -592,14 +559,14 @@
 
   // Expect that the browser initialization will record at least one sample
   // in each of the following histograms as One Platform Hints are enabled.
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount", 1),
             1);
 
   // Wait until histograms have been updated before performing checks for
   // correct behavior based on the response.
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.Status", 1),
             1);
@@ -622,14 +589,14 @@
 
   // Expect that the browser initialization will record at least one sample
   // in each of the following histograms as One Platform Hints are enabled.
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount", 1),
             1);
 
   // Wait until histograms have been updated before performing checks for
   // correct behavior based on the response.
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.Status", 1),
             1);
@@ -655,7 +622,7 @@
   ui_test_utils::NavigateToURL(browser(), GURL("https://unsuccessful.com/"));
 
   // We expect that we requested hints for 1 URL.
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.UrlCount", 1),
             1);
@@ -691,16 +658,16 @@
 
   // Expect that the browser initialization will record at least one sample
   // in each of the following histograms as OnePlatform Hints are enabled.
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount", 1),
             1);
 
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.Status", 1),
             1);
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.HintCount", 1),
             1);
@@ -746,7 +713,7 @@
 
   // Expect that the browser initialization will record at least one sample
   // in each of the following histograms as OnePlatform Hints are enabled.
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount", 1),
             1);
@@ -755,7 +722,7 @@
   histogram_tester->ExpectBucketCount(
       "OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount", 2, 1);
 
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.Status", 1),
             1);
@@ -801,12 +768,12 @@
 
   // Expect that the browser initialization will record at least one sample
   // in each of the following histograms as hints fetching is enabled.
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount", 1),
             1);
 
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.Status", 1),
             1);
@@ -830,19 +797,19 @@
     // Allowlist NoScript for https_url()'s' host.
     SetUpComponentUpdateHints(https_url());
 
-    RetryForHistogramUntilCountReached(
+    optimization_guide::RetryForHistogramUntilCountReached(
         &histogram_tester,
         optimization_guide::kComponentHintsUpdatedResultHistogramString, 1);
 
     // Expect that the browser initialization will record at least one sample
     // in each of the following histograms as One Platform Hints are enabled.
     EXPECT_GE(
-        RetryForHistogramUntilCountReached(
+        optimization_guide::RetryForHistogramUntilCountReached(
             &histogram_tester,
             "OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount", 1),
         1);
 
-    EXPECT_GE(RetryForHistogramUntilCountReached(
+    EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                   &histogram_tester,
                   "OptimizationGuide.HintsFetcher.GetHintsRequest.Status", 1),
               1);
@@ -876,7 +843,7 @@
     ui_test_utils::NavigateToURL(browser(), GURL(host_online));
 
     EXPECT_EQ(1u, count_hints_requests_received());
-    RetryForHistogramUntilCountReached(
+    optimization_guide::RetryForHistogramUntilCountReached(
         &histogram_tester, optimization_guide::kLoadedHintLocalHistogramString,
         1);
     // Navigate away so metrics are recorded.
@@ -916,7 +883,7 @@
     ui_test_utils::NavigateToURL(browser(), GURL(host_network_offline));
 
     EXPECT_EQ(0u, count_hints_requests_received());
-    RetryForHistogramUntilCountReached(
+    optimization_guide::RetryForHistogramUntilCountReached(
         &histogram_tester, optimization_guide::kLoadedHintLocalHistogramString,
         1);
 
@@ -966,7 +933,7 @@
     ui_test_utils::NavigateToURL(browser(), GURL(host_3g));
 
     EXPECT_EQ(1u, count_hints_requests_received());
-    RetryForHistogramUntilCountReached(
+    optimization_guide::RetryForHistogramUntilCountReached(
         &histogram_tester, optimization_guide::kLoadedHintLocalHistogramString,
         1);
 
@@ -1015,7 +982,7 @@
     // With URL-keyed Hints, every unique URL navigated to will result in a
     // hints fetch if racing is enabled and allowed.
     EXPECT_EQ(1u, count_hints_requests_received());
-    RetryForHistogramUntilCountReached(
+    optimization_guide::RetryForHistogramUntilCountReached(
         &histogram_tester, optimization_guide::kLoadedHintLocalHistogramString,
         1);
     // Navigate away so metrics are recorded.
@@ -1050,18 +1017,18 @@
   // Allowlist NoScript for https_url()'s' host.
   SetUpComponentUpdateHints(https_url());
 
-  RetryForHistogramUntilCountReached(
+  optimization_guide::RetryForHistogramUntilCountReached(
       histogram_tester,
       optimization_guide::kComponentHintsUpdatedResultHistogramString, 1);
 
   // Expect that the browser initialization will record at least one sample
   // in each of the following histograms as One Platform Hints are enabled.
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount", 1),
             1);
 
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.Status", 1),
             1);
@@ -1088,7 +1055,7 @@
     ui_test_utils::NavigateToURL(browser(), GURL(full_url));
 
     EXPECT_EQ(2u, count_hints_requests_received());
-    RetryForHistogramUntilCountReached(
+    optimization_guide::RetryForHistogramUntilCountReached(
         histogram_tester, optimization_guide::kLoadedHintLocalHistogramString,
         1);
     histogram_tester->ExpectUniqueSample(
@@ -1109,7 +1076,7 @@
     // With URL-keyed Hints, every unique URL navigated to will result in a
     // hints fetch if racing is enabled and allowed.
     EXPECT_EQ(2u, count_hints_requests_received());
-    RetryForHistogramUntilCountReached(
+    optimization_guide::RetryForHistogramUntilCountReached(
         histogram_tester, optimization_guide::kLoadedHintLocalHistogramString,
         2);
 
@@ -1134,7 +1101,7 @@
     ui_test_utils::NavigateToURL(otr_browser, GURL(full_url));
 
     // Make sure no additional hints requests were received.
-    RetryForHistogramUntilCountReached(
+    optimization_guide::RetryForHistogramUntilCountReached(
         &incognito_histogram_tester,
         optimization_guide::kLoadedHintLocalHistogramString, 1);
     EXPECT_EQ(2u, count_hints_requests_received());
@@ -1153,18 +1120,18 @@
   // Allowlist NoScript for https_url()'s' host.
   SetUpComponentUpdateHints(https_url());
 
-  RetryForHistogramUntilCountReached(
+  optimization_guide::RetryForHistogramUntilCountReached(
       histogram_tester,
       optimization_guide::kComponentHintsUpdatedResultHistogramString, 1);
 
   // Expect that the browser initialization will record at least one sample
   // in each of the following histograms as One Platform Hints are enabled.
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount", 1),
             1);
 
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.Status", 1),
             1);
@@ -1192,7 +1159,7 @@
     ui_test_utils::NavigateToURL(browser(), GURL(full_url));
 
     EXPECT_EQ(2u, count_hints_requests_received());
-    RetryForHistogramUntilCountReached(
+    optimization_guide::RetryForHistogramUntilCountReached(
         histogram_tester, optimization_guide::kLoadedHintLocalHistogramString,
         1);
     histogram_tester->ExpectUniqueSample(
@@ -1223,7 +1190,7 @@
     // With URL-keyed Hints, every unique URL navigated to will result in a
     // hints fetch if racing is enabled and allowed.
     EXPECT_EQ(3u, count_hints_requests_received());
-    RetryForHistogramUntilCountReached(
+    optimization_guide::RetryForHistogramUntilCountReached(
         histogram_tester, optimization_guide::kLoadedHintLocalHistogramString,
         2);
 
@@ -1244,18 +1211,18 @@
   // Allowlist NoScript for https_url()'s' host.
   SetUpComponentUpdateHints(https_url());
 
-  RetryForHistogramUntilCountReached(
+  optimization_guide::RetryForHistogramUntilCountReached(
       histogram_tester,
       optimization_guide::kComponentHintsUpdatedResultHistogramString, 1);
 
   // Expect that the browser initialization will record at least one sample
   // in each of the following histograms as One Platform Hints are enabled.
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount", 1),
             1);
 
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.Status", 1),
             1);
@@ -1282,7 +1249,7 @@
     ui_test_utils::NavigateToURL(browser(), GURL(full_url));
 
     EXPECT_EQ(2u, count_hints_requests_received());
-    RetryForHistogramUntilCountReached(
+    optimization_guide::RetryForHistogramUntilCountReached(
         histogram_tester, optimization_guide::kLoadedHintLocalHistogramString,
         1);
     histogram_tester->ExpectUniqueSample(
@@ -1311,7 +1278,7 @@
     // With URL-keyed Hints, every unique URL navigated to will result in a
     // hints fetch if racing is enabled and allowed.
     EXPECT_EQ(2u, count_hints_requests_received());
-    RetryForHistogramUntilCountReached(
+    optimization_guide::RetryForHistogramUntilCountReached(
         histogram_tester, optimization_guide::kLoadedHintLocalHistogramString,
         2);
 
@@ -1345,12 +1312,12 @@
 
   // Expect that the browser initialization will record at least one sample
   // in each of the following histograms as One Platform Hints are enabled.
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount", 1),
             1);
 
-  EXPECT_GE(RetryForHistogramUntilCountReached(
+  EXPECT_GE(optimization_guide::RetryForHistogramUntilCountReached(
                 histogram_tester,
                 "OptimizationGuide.HintsFetcher.GetHintsRequest.Status", 1),
             1);
diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service_browsertest.cc b/chrome/browser/optimization_guide/optimization_guide_keyed_service_browsertest.cc
index c88ef4b..86965e3 100644
--- a/chrome/browser/optimization_guide/optimization_guide_keyed_service_browsertest.cc
+++ b/chrome/browser/optimization_guide/optimization_guide_keyed_service_browsertest.cc
@@ -7,12 +7,12 @@
 #include "base/base64.h"
 #include "base/run_loop.h"
 #include "base/strings/stringprintf.h"
-#include "base/task/thread_pool/thread_pool_instance.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
 #include "chrome/browser/browser_process.h"
+#include "chrome/browser/optimization_guide/browser_test_util.h"
 #include "chrome/browser/optimization_guide/optimization_guide_hints_manager.h"
 #include "chrome/browser/optimization_guide/optimization_guide_keyed_service.h"
 #include "chrome/browser/optimization_guide/optimization_guide_keyed_service_factory.h"
@@ -26,6 +26,7 @@
 #include "components/optimization_guide/core/optimization_guide_prefs.h"
 #include "components/optimization_guide/core/optimization_guide_store.h"
 #include "components/optimization_guide/core/optimization_guide_switches.h"
+#include "components/optimization_guide/core/optimization_guide_test_util.h"
 #include "components/optimization_guide/core/optimization_hints_component_update_listener.h"
 #include "components/optimization_guide/core/test_hints_component_creator.h"
 #include "components/optimization_guide/proto/hints.pb.h"
@@ -46,37 +47,6 @@
 
 namespace {
 
-// Fetch and calculate the total number of samples from all the bins for
-// |histogram_name|. Note: from some browertests run, there might be two
-// profiles created, and this will return the total sample count across
-// profiles.
-int GetTotalHistogramSamples(const base::HistogramTester& histogram_tester,
-                             const std::string& histogram_name) {
-  std::vector<base::Bucket> buckets =
-      histogram_tester.GetAllSamples(histogram_name);
-  int total = 0;
-  for (const auto& bucket : buckets)
-    total += bucket.count;
-
-  return total;
-}
-
-// Retries fetching |histogram_name| until it contains at least |count| samples.
-int RetryForHistogramUntilCountReached(
-    const base::HistogramTester& histogram_tester,
-    const std::string& histogram_name,
-    int count) {
-  int total = 0;
-  while (true) {
-    base::ThreadPoolInstance::Get()->FlushForTesting();
-    base::RunLoop().RunUntilIdle();
-
-    total = GetTotalHistogramSamples(histogram_tester, histogram_name);
-    if (total >= count)
-      return total;
-  }
-}
-
 // A WebContentsObserver that asks whether an optimization type can be applied.
 class OptimizationGuideConsumerWebContentsObserver
     : public content::WebContentsObserver {
@@ -407,8 +377,8 @@
 
   ui_test_utils::NavigateToURL(browser(), url_with_hints());
 
-  EXPECT_GT(RetryForHistogramUntilCountReached(
-                histogram_tester, "OptimizationGuide.LoadedHint.Result", 1),
+  EXPECT_GT(optimization_guide::RetryForHistogramUntilCountReached(
+                &histogram_tester, "OptimizationGuide.LoadedHint.Result", 1),
             0);
   // There is a hint that matches this URL, so there should be an attempt to
   // load a hint that succeeds.
@@ -445,8 +415,8 @@
 
   ui_test_utils::NavigateToURL(browser(), url_with_hints());
 
-  EXPECT_GT(RetryForHistogramUntilCountReached(
-                histogram_tester, "OptimizationGuide.LoadedHint.Result", 1),
+  EXPECT_GT(optimization_guide::RetryForHistogramUntilCountReached(
+                &histogram_tester, "OptimizationGuide.LoadedHint.Result", 1),
             0);
   // There is a hint that matches this URL, so there should be an attempt to
   // load a hint that succeeds.
@@ -483,8 +453,8 @@
 
   ui_test_utils::NavigateToURL(browser(), url_that_redirects_to_hints());
 
-  EXPECT_EQ(RetryForHistogramUntilCountReached(
-                histogram_tester, "OptimizationGuide.LoadedHint.Result", 2),
+  EXPECT_EQ(optimization_guide::RetryForHistogramUntilCountReached(
+                &histogram_tester, "OptimizationGuide.LoadedHint.Result", 2),
             2);
   // Should attempt and succeed to load a hint once for the initial navigation
   // and redirect.
@@ -504,8 +474,8 @@
 
   ui_test_utils::NavigateToURL(browser(), GURL("https://nohints.com/"));
 
-  EXPECT_EQ(RetryForHistogramUntilCountReached(
-                histogram_tester, "OptimizationGuide.LoadedHint.Result", 1),
+  EXPECT_EQ(optimization_guide::RetryForHistogramUntilCountReached(
+                &histogram_tester, "OptimizationGuide.LoadedHint.Result", 1),
             1);
   // There were no hints that match this URL, but there should still be an
   // attempt to load a hint but still fail.
@@ -535,8 +505,8 @@
         {optimization_guide::proto::FAST_HOST_HINTS});
     // Wait until filter is loaded. This histogram will record twice: once when
     // the config is found and once when the filter is created.
-    RetryForHistogramUntilCountReached(
-        histogram_tester,
+    optimization_guide::RetryForHistogramUntilCountReached(
+        &histogram_tester,
         "OptimizationGuide.OptimizationFilterStatus.FastHostHints", 2);
 
     EXPECT_EQ(optimization_guide::OptimizationGuideDecision::kFalse,
@@ -557,8 +527,8 @@
         {optimization_guide::proto::LITE_PAGE_REDIRECT});
     // Wait until filter is loaded. This histogram will record twice: once when
     // the config is found and once when the filter is created.
-    RetryForHistogramUntilCountReached(
-        histogram_tester,
+    optimization_guide::RetryForHistogramUntilCountReached(
+        &histogram_tester,
         "OptimizationGuide.OptimizationFilterStatus.LitePageRedirect", 2);
 
     // The previously loaded filter should still be loaded and give the same
@@ -643,8 +613,8 @@
   // to have loaded.
   base::HistogramTester histogram_tester;
   ui_test_utils::NavigateToURL(otr_browser, url_with_hints());
-  RetryForHistogramUntilCountReached(histogram_tester,
-                                     "OptimizationGuide.LoadedHint.Result", 1);
+  optimization_guide::RetryForHistogramUntilCountReached(
+      &histogram_tester, "OptimizationGuide.LoadedHint.Result", 1);
 
   EXPECT_EQ(
       optimization_guide::OptimizationGuideDecision::kTrue,
@@ -672,8 +642,8 @@
       {optimization_guide::proto::FAST_HOST_HINTS});
   // Wait until filter is loaded. This histogram will record twice: once when
   // the config is found and once when the filter is created.
-  RetryForHistogramUntilCountReached(
-      histogram_tester,
+  optimization_guide::RetryForHistogramUntilCountReached(
+      &histogram_tester,
       "OptimizationGuide.OptimizationFilterStatus.FastHostHints", 2);
 
   EXPECT_EQ(optimization_guide::OptimizationGuideDecision::kFalse,
diff --git a/chrome/browser/optimization_guide/page_content_annotations_service_browsertest.cc b/chrome/browser/optimization_guide/page_content_annotations_service_browsertest.cc
index ad4c9eca..1485ffe 100644
--- a/chrome/browser/optimization_guide/page_content_annotations_service_browsertest.cc
+++ b/chrome/browser/optimization_guide/page_content_annotations_service_browsertest.cc
@@ -3,11 +3,11 @@
 // found in the LICENSE file.
 
 #include "base/path_service.h"
-#include "base/task/thread_pool/thread_pool_instance.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
 #include "build/build_config.h"
 #include "chrome/browser/history/history_service_factory.h"
+#include "chrome/browser/optimization_guide/browser_test_util.h"
 #include "chrome/browser/optimization_guide/optimization_guide_keyed_service.h"
 #include "chrome/browser/optimization_guide/optimization_guide_keyed_service_factory.h"
 #include "chrome/browser/optimization_guide/page_content_annotations_service_factory.h"
@@ -20,47 +20,13 @@
 #include "components/optimization_guide/content/browser/page_content_annotations_service.h"
 #include "components/optimization_guide/core/optimization_guide_enums.h"
 #include "components/optimization_guide/core/optimization_guide_features.h"
+#include "components/optimization_guide/core/optimization_guide_test_util.h"
 #include "components/optimization_guide/core/test_model_info_builder.h"
 #include "components/optimization_guide/machine_learning_tflite_buildflags.h"
 #include "components/optimization_guide/proto/page_topics_model_metadata.pb.h"
 #include "content/public/test/browser_test.h"
 #include "net/dns/mock_host_resolver.h"
 
-namespace {
-
-// Fetch and calculate the total number of samples from all the bins for
-// |histogram_name|. Note: from some browertests run, there might be two
-// profiles created, and this will return the total sample count across
-// profiles.
-int GetTotalHistogramSamples(const base::HistogramTester& histogram_tester,
-                             const std::string& histogram_name) {
-  std::vector<base::Bucket> buckets =
-      histogram_tester.GetAllSamples(histogram_name);
-  int total = 0;
-  for (const auto& bucket : buckets)
-    total += bucket.count;
-
-  return total;
-}
-
-// Retries fetching |histogram_name| until it contains at least |count| samples.
-int RetryForHistogramUntilCountReached(
-    const base::HistogramTester& histogram_tester,
-    const std::string& histogram_name,
-    int count) {
-  int total = 0;
-  while (true) {
-    base::ThreadPoolInstance::Get()->FlushForTesting();
-    base::RunLoop().RunUntilIdle();
-
-    total = GetTotalHistogramSamples(histogram_tester, histogram_name);
-    if (total >= count)
-      return total;
-  }
-}
-
-}  // namespace
-
 namespace optimization_guide {
 
 #if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
@@ -206,7 +172,7 @@
 
     if (expect_model_loaded) {
       RetryForHistogramUntilCountReached(
-          histogram_tester,
+          &histogram_tester,
           "OptimizationGuide.ModelExecutor.ModelLoadingResult.PageTopics", 1);
       histogram_tester.ExpectUniqueSample(
           "OptimizationGuide.ModelExecutor.ModelLoadingResult.PageTopics",
@@ -270,7 +236,7 @@
   int expected_count = 0;
 #endif
   RetryForHistogramUntilCountReached(
-      histogram_tester,
+      &histogram_tester,
       "OptimizationGuide.PageContentAnnotationsService.ContentAnnotated",
       expected_count);
 
@@ -296,7 +262,7 @@
 
 #if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
   RetryForHistogramUntilCountReached(
-      histogram_tester,
+      &histogram_tester,
       "OptimizationGuide.PageContentAnnotationsService."
       "ContentAnnotationsStorageStatus",
       1);
@@ -331,7 +297,7 @@
   service->Annotate(history_visit, "sometext");
 
   RetryForHistogramUntilCountReached(
-      histogram_tester,
+      &histogram_tester,
       "OptimizationGuide.PageContentAnnotationsService.ContentAnnotated", 1);
 
   histogram_tester.ExpectUniqueSample(
@@ -339,7 +305,7 @@
       1);
 
   RetryForHistogramUntilCountReached(
-      histogram_tester,
+      &histogram_tester,
       "OptimizationGuide.PageContentAnnotationsService."
       "ContentAnnotationsStorageStatus",
       1);
@@ -379,7 +345,7 @@
   ui_test_utils::NavigateToURL(browser(), url);
 
   RetryForHistogramUntilCountReached(
-      histogram_tester,
+      &histogram_tester,
       "OptimizationGuide.PageContentAnnotationsService.ContentAnnotated", 1);
 
   histogram_tester.ExpectUniqueSample(
@@ -422,7 +388,7 @@
   ui_test_utils::NavigateToURL(browser(), url);
 
   RetryForHistogramUntilCountReached(
-      histogram_tester,
+      &histogram_tester,
       "OptimizationGuide.ModelExecutor.ModelLoadingResult.PageTopics", 1);
   histogram_tester.ExpectUniqueSample(
       "OptimizationGuide.ModelExecutor.ModelLoadingResult.PageTopics",
@@ -431,7 +397,7 @@
       "OptimizationGuide.ModelExecutor.ModelLoadingDuration.PageTopics", 1);
 
   RetryForHistogramUntilCountReached(
-      histogram_tester,
+      &histogram_tester,
       "OptimizationGuide.PageContentAnnotationsService.ContentAnnotated", 1);
 
   histogram_tester.ExpectTotalCount(
@@ -448,7 +414,7 @@
   EXPECT_EQ(123, *model_version);
 
   RetryForHistogramUntilCountReached(
-      histogram_tester,
+      &histogram_tester,
       "OptimizationGuide.PageContentAnnotationsService."
       "ContentAnnotationsStorageStatus",
       1);
@@ -505,7 +471,7 @@
   ui_test_utils::NavigateToURL(browser(), url);
 
   RetryForHistogramUntilCountReached(
-      histogram_tester,
+      &histogram_tester,
       "OptimizationGuide.PageContentAnnotationsService.ModelAvailable", 1);
 
   histogram_tester.ExpectUniqueSample(
@@ -519,7 +485,7 @@
   ui_test_utils::NavigateToURL(browser(), url2);
 
   RetryForHistogramUntilCountReached(
-      histogram_tester,
+      &histogram_tester,
       "OptimizationGuide.PageContentAnnotationsService.ModelAvailable", 2);
 
   histogram_tester.ExpectBucketCount(
diff --git a/chrome/browser/optimization_guide/prediction/prediction_manager_browsertest.cc b/chrome/browser/optimization_guide/prediction/prediction_manager_browsertest.cc
index da0fd29a..708ff5ec 100644
--- a/chrome/browser/optimization_guide/prediction/prediction_manager_browsertest.cc
+++ b/chrome/browser/optimization_guide/prediction/prediction_manager_browsertest.cc
@@ -8,7 +8,6 @@
 #include "base/callback_helpers.h"
 #include "base/files/file_util.h"
 #include "base/run_loop.h"
-#include "base/task/thread_pool/thread_pool_instance.h"
 #include "base/test/bind.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
@@ -16,6 +15,7 @@
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
 #include "chrome/browser/browser_process.h"
+#include "chrome/browser/optimization_guide/browser_test_util.h"
 #include "chrome/browser/optimization_guide/optimization_guide_keyed_service.h"
 #include "chrome/browser/optimization_guide/optimization_guide_keyed_service_factory.h"
 #include "chrome/browser/optimization_guide/prediction/prediction_manager.h"
@@ -47,39 +47,6 @@
 
 namespace {
 
-// Fetch and calculate the total number of samples from all the bins for
-// |histogram_name|. Note: from some browertests run (such as chromeos) there
-// might be two profiles created, and this will return the total sample count
-// across profiles.
-int GetTotalHistogramSamples(const base::HistogramTester* histogram_tester,
-                             const std::string& histogram_name) {
-  std::vector<base::Bucket> buckets =
-      histogram_tester->GetAllSamples(histogram_name);
-  int total = 0;
-  for (const auto& bucket : buckets)
-    total += bucket.count;
-
-  return total;
-}
-
-// Retries fetching |histogram_name| until it contains at least |count| samples.
-void RetryForHistogramUntilCountReached(
-    const base::HistogramTester* histogram_tester,
-    const std::string& histogram_name,
-    int count) {
-  while (true) {
-    base::ThreadPoolInstance::Get()->FlushForTesting();
-    base::RunLoop().RunUntilIdle();
-
-    content::FetchHistogramsFromChildProcesses();
-    metrics::SubprocessMetricsProvider::MergeHistogramDeltasForTesting();
-
-    int total = GetTotalHistogramSamples(histogram_tester, histogram_name);
-    if (total >= count)
-      return;
-  }
-}
-
 std::unique_ptr<optimization_guide::proto::PredictionModel>
 GetValidDecisionTreePredictionModel() {
   std::unique_ptr<optimization_guide::proto::PredictionModel> prediction_model =
diff --git a/chrome/browser/policy/test/promotional_tabs_enabled_policy_browsertest.cc b/chrome/browser/policy/test/promotional_tabs_enabled_policy_browsertest.cc
index 9f8c9ff..21b0a49 100644
--- a/chrome/browser/policy/test/promotional_tabs_enabled_policy_browsertest.cc
+++ b/chrome/browser/policy/test/promotional_tabs_enabled_policy_browsertest.cc
@@ -17,6 +17,7 @@
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/browser/ui/ui_features.h"
 #include "chrome/browser/ui/webui/whats_new/whats_new_ui.h"
+#include "chrome/browser/ui/webui/whats_new/whats_new_util.h"
 #include "chrome/common/chrome_constants.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/chrome_version.h"
@@ -29,6 +30,7 @@
 #include "components/policy/policy_constants.h"
 #include "components/prefs/pref_service.h"
 #include "content/public/test/browser_test.h"
+#include "net/base/url_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 
@@ -49,6 +51,12 @@
       const PromotionalTabsEnabledPolicyTest&) = delete;
 
  protected:
+  static std::string GetWhatsNewAutoURL() {
+    GURL url(chrome::kChromeUIWhatsNewURL);
+    return net::AppendQueryParameter(url, "auto", "true")
+        .possibly_invalid_spec();
+  }
+
   PromotionalTabsEnabledPolicyTest() {
     const std::vector<base::Feature> kEnabledFeatures = {
       features::kChromeWhatsNewUI,
@@ -56,6 +64,7 @@
       welcome::kForceEnabled,
 #endif
     };
+    whats_new::g_force_enable_for_tests = true;
     scoped_feature_list_.InitWithFeatures(kEnabledFeatures, {});
   }
   ~PromotionalTabsEnabledPolicyTest() override = default;
@@ -130,7 +139,7 @@
       // One or more onboarding tabs should show.
       EXPECT_NE(url.possibly_invalid_spec(), chrome::kChromeUINewTabURL);
       // Welcome should override What's New.
-      EXPECT_NE(url.possibly_invalid_spec(), chrome::kChromeUIWhatsNewURL);
+      EXPECT_NE(url.possibly_invalid_spec(), GetWhatsNewAutoURL());
       EXPECT_FALSE(search::IsNTPOrRelatedURL(url, browser()->profile())) << url;
       break;
   }
@@ -211,8 +220,8 @@
       break;
     case BooleanPolicy::kNotConfigured:
     case BooleanPolicy::kTrue:
-      // Whats's New should show.
-      EXPECT_EQ(url.possibly_invalid_spec(), chrome::kChromeUIWhatsNewURL);
+      // Whats's New should show with auto=true query param.
+      EXPECT_EQ(url.possibly_invalid_spec(), GetWhatsNewAutoURL());
       break;
   }
 }
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index adff84d..bc25f20 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -251,6 +251,7 @@
 #include "chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.h"
 #include "chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.h"
 #include "chrome/browser/ui/webui/settings/settings_ui.h"
+#include "chrome/browser/ui/webui/tab_search/tab_search_prefs.h"
 #include "chrome/browser/ui/webui/whats_new/whats_new_ui.h"
 #include "chrome/browser/upgrade_detector/upgrade_detector.h"
 #include "components/ntp_tiles/custom_links_manager_impl.h"
@@ -1236,6 +1237,7 @@
       registry);
   signin::RegisterProfilePrefs(registry);
   StartupBrowserCreator::RegisterProfilePrefs(registry);
+  tab_search_prefs::RegisterProfilePrefs(registry);
   TaskModuleService::RegisterProfilePrefs(registry);
   UnifiedAutoplayConfig::RegisterProfilePrefs(registry);
   CartService::RegisterProfilePrefs(registry);
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/background_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/background_test.js
index 7dd29f4..d27e6fd 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/background_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/background_test.js
@@ -3349,8 +3349,8 @@
         .call(doCmd('nextObject'))
         .expectSpeech('Hello')
         .call(doCmd('nextObject'))
-        .expectSpeech('Separator content should be read')
-        .expectBraille('Separator content should be read')
+        .expectSpeech('Separator content should be read', 'Separator')
+        .expectBraille('Separator content should be read seprtr')
         .call(doCmd('nextObject'))
         .expectSpeech('World')
         .replay();
@@ -3629,18 +3629,42 @@
   const mockFeedback = this.createMockFeedback();
   const site = `
     <p>start</p>
-    <div tabindex=0 role="textbox" contenteditable>123</div>
+    <div tabindex=0 role="textbox" contenteditable><p>abc</p><p>123</p></div>
   `;
   this.runWithLoadedTree(site, function(root) {
     const contentEditable = root.find({role: RoleType.TEXT_FIELD});
 
     this.listenOnce(contentEditable, EventType.FOCUS, function() {
       mockFeedback.call(press(KeyCode.RIGHT))
+          .expectSpeech('b')
+          .call(press(KeyCode.RIGHT))
+          .expectSpeech('c')
+          .call(press(KeyCode.RIGHT))
+          .expectSpeech('\n')
+          .call(press(KeyCode.RIGHT))
+          .expectSpeech('1')
+          .call(press(KeyCode.RIGHT))
           .expectSpeech('2')
           .call(press(KeyCode.RIGHT))
           .expectSpeech('3')
           .call(press(KeyCode.RIGHT))
           .expectSpeech('End of text')
+
+          .call(press(KeyCode.LEFT))
+          .expectSpeech('3')
+          .call(press(KeyCode.LEFT))
+          .expectSpeech('2')
+          .call(press(KeyCode.LEFT))
+          .expectSpeech('1')
+          .call(press(KeyCode.LEFT))
+          .expectSpeech('\n')
+          .call(press(KeyCode.LEFT))
+          .expectSpeech('c')
+          .call(press(KeyCode.LEFT))
+          .expectSpeech('b')
+          .call(press(KeyCode.LEFT))
+          .expectSpeech('a')
+
           .replay();
     }.bind(this));
     contentEditable.focus();
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/editing_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/editing_test.js
index 05a5c682..23ea3b1 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/editing_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/editing_test.js
@@ -1768,11 +1768,13 @@
       mockFeedback.call(this.press(KeyCode.DOWN))
           .expectSpeech('Hello')
           .call(this.press(KeyCode.DOWN))
-          .expectSpeech('Separator content should be read')
+          .expectSpeech('Separator content should be read', 'Separator')
           .call(this.press(KeyCode.DOWN))
-          .expectSpeech('World')
+          .expectSpeech('World', 'Exited Separator.')
           .call(this.press(KeyCode.LEFT))
-          .expectSpeech('\n')
+          .expectNextSpeechUtteranceIsNot('\n')
+          .expectSpeech('Separator content should be read', 'Separator')
+
           .replay();
     });
     input.focus();
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/intent_handler.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/intent_handler.js
index 3e416dd..f06a5775 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/intent_handler.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/intent_handler.js
@@ -88,33 +88,50 @@
     switch (intent.textBoundary) {
       case IntentTextBoundaryType.CHARACTER: {
         const text = cur.text.substring(cur.startOffset, cur.startOffset + 1);
-        // Return false if |text| is empty. Do this to give the user more
-        // information than just "new line". For example, if moving by character
-        // moves us to the beginning/end of a separator, we want to include
-        // additional context.
+
+        // First, handle the case where there is no text to the right of the
+        // cursor.
         if (!text) {
+          // Detect cases where |cur| is immediately before an abstractSpan.
+          const nextCursor =
+              cur.end.move(Unit.CHARACTER, Movement.DIRECTIONAL, Dir.FORWARD);
+          const ancestors =
+              AutomationUtil.getUniqueAncestors(nextCursor.node, cur.end.node);
+
+          // Scan up only to a root or the editable root.
+          let ancestor;
+          while ((ancestor = ancestors.pop()) &&
+                 !AutomationPredicate.rootOrEditableRoot(ancestor)) {
+            const roleInfo = Output.ROLE_INFO[ancestor.role];
+            if (roleInfo && roleInfo['inherits'] === 'abstractSpan') {
+              // Let the caller handle this case.
+              return false;
+            }
+          }
+
+          // It is assumed to be a new line otherwise.
           ChromeVox.tts.speak('\n', QueueMode.CATEGORY_FLUSH);
-          return false;
+          return true;
         }
 
-        // Read character to the right of the cursor. It is assumed to be a new
-        // line if empty.
-        // TODO: detect when this is the end of the document; read "end of text"
-        // if so.
-        // Use the Output module for feedback so that we get contextual
-        // information e.g. if we've entered a suggestion, insertion, or
-        // deletion.
+        // Read character to the right of the cursor by building a character
+        // range.
         let prevRange = null;
         if (prev) {
           prevRange = prev.createCharRange();
         }
         const newRange = cur.createCharRange();
+
+        // Use the Output module for feedback so that we get contextual
+        // information e.g. if we've entered a suggestion, insertion, or
+        // deletion.
         new Output()
             .withContextFirst()
             .withRichSpeechAndBraille(
                 newRange, prevRange, OutputEventType.NAVIGATE)
             .go();
 
+        // Handled.
         return true;
       }
       case IntentTextBoundaryType.LINE_END:
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/output/output.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/output/output.js
index 16f961e..61a926a 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/output/output.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/output/output.js
@@ -646,10 +646,10 @@
       if (parent.role === RoleType.WINDOW) {
         break;
       }
-      if (Output.ROLE_INFO_[parent.role] &&
-          Output.ROLE_INFO_[parent.role].contextOrder) {
+      if (Output.ROLE_INFO[parent.role] &&
+          Output.ROLE_INFO[parent.role].contextOrder) {
         this.contextOrder_ =
-            Output.ROLE_INFO_[parent.role].contextOrder || this.contextOrder_;
+            Output.ROLE_INFO[parent.role].contextOrder || this.contextOrder_;
         break;
       }
     }
@@ -1195,7 +1195,7 @@
   formatRole_(node, token, buff, options, ruleStr) {
     options.annotation.push(token);
     let msg = node.role;
-    const info = Output.ROLE_INFO_[node.role];
+    const info = Output.ROLE_INFO[node.role];
     if (node.roleDescription) {
       msg = node.roleDescription;
     } else if (info) {
@@ -1709,8 +1709,8 @@
       return;
     }
 
-    if (Output.ROLE_INFO_[node.role] &&
-        Output.ROLE_INFO_[node.role].ignoreAncestry) {
+    if (Output.ROLE_INFO[node.role] &&
+        Output.ROLE_INFO[node.role].ignoreAncestry) {
       return;
     }
 
@@ -1726,7 +1726,7 @@
           contextFirst = [];
           rest = [];
         }
-        if ((Output.ROLE_INFO_[node.role] || {}).contextOrder ===
+        if ((Output.ROLE_INFO[node.role] || {}).contextOrder ===
             OutputContextOrder.FIRST) {
           contextFirst.push(node);
         } else {
@@ -1860,7 +1860,7 @@
 
       const secondaryRole = secondaryFormatNode.role;
       const parentRole =
-          (Output.ROLE_INFO_[secondaryFormatNode.role] || {}).inherits;
+          (Output.ROLE_INFO[secondaryFormatNode.role] || {}).inherits;
       if (secondaryRole && eventBlock[secondaryRole] &&
           eventBlock[secondaryRole][secondaryFormatName]) {
         rule.role = secondaryRole;
@@ -1897,7 +1897,7 @@
         continue;
       }
 
-      const parentRole = (Output.ROLE_INFO_[formatNode.role] || {}).inherits;
+      const parentRole = (Output.ROLE_INFO[formatNode.role] || {}).inherits;
       if (eventBlock[formatNode.role] &&
           eventBlock[formatNode.role][formatName]) {
         rule.role = formatNode.role;
@@ -1963,7 +1963,7 @@
     // Navigate is the default event.
     rule.event = Output.RULES[type] ? type : 'navigate';
     const eventBlock = Output.RULES[rule.event];
-    const parentRole = (Output.ROLE_INFO_[node.role] || {}).inherits || '';
+    const parentRole = (Output.ROLE_INFO[node.role] || {}).inherits || '';
     /**
      * Use Output.RULES for node.role if exists.
      * If not, use Output.RULES for parentRole if exists.
@@ -2451,7 +2451,7 @@
       }
 
       while (earconFinder = ancestors.pop()) {
-        const info = Output.ROLE_INFO_[earconFinder.role];
+        const info = Output.ROLE_INFO[earconFinder.role];
         if (info && info.earconId) {
           return new OutputEarconAction(
               info.earconId, node.location || undefined);
@@ -2540,9 +2540,8 @@
  * inherits: inherits rules from this role.
  * contextOrder: where to place the context output.
  * ignoreAncestry: ignores ancestry (context) output for this role.
- * @private
  */
-Output.ROLE_INFO_ = {
+Output.ROLE_INFO = {
   abbr: {msgId: 'tag_abbr', inherits: 'abstractContainer'},
   alert: {msgId: 'role_alert'},
   alertDialog:
@@ -2706,7 +2705,7 @@
     inherits: 'abstractRange',
     earconId: 'LISTBOX'
   },
-  splitter: {msgId: 'role_separator'},
+  splitter: {msgId: 'role_separator', inherits: 'abstractSpan'},
   status: {msgId: 'role_status', inherits: 'abstractNameFromContents'},
   suggestion: {
     msgId: 'role_suggestion',
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/output/output_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/output/output_test.js
index 023bfec..12a46c49 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/output/output_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/output/output_test.js
@@ -627,8 +627,8 @@
     'graphicsSymbol',
     'suggestion',
   ]);
-  for (const key in Output.ROLE_INFO_) {
-    const value = Output.ROLE_INFO_[key];
+  for (const key in Output.ROLE_INFO) {
+    const value = Output.ROLE_INFO[key];
     if (value.msgId) {
       Msgs.getMsg(value.msgId);
       if (!kNoBrailleMessageRequired.has(key)) {
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/testing/chromevox_next_e2e_test_base.js b/chrome/browser/resources/chromeos/accessibility/chromevox/testing/chromevox_next_e2e_test_base.js
index 19381eb..1e934bf 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/testing/chromevox_next_e2e_test_base.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/testing/chromevox_next_e2e_test_base.js
@@ -29,9 +29,9 @@
     DesktopAutomationHandler.announceActions = true;
 
     this.originalOutputContextValues_ = {};
-    for (const role in Output.ROLE_INFO_) {
+    for (const role in Output.ROLE_INFO) {
       this.originalOutputContextValues_[role] =
-          Output.ROLE_INFO_[role]['contextOrder'];
+          Output.ROLE_INFO[role]['contextOrder'];
     }
   }
 
@@ -126,8 +126,8 @@
    * rebaselining when changing context ordering for a specific role.
    */
   forceContextualLastOutput() {
-    for (const role in Output.ROLE_INFO_) {
-      Output.ROLE_INFO_[role]['contextOrder'] = OutputContextOrder.LAST;
+    for (const role in Output.ROLE_INFO) {
+      Output.ROLE_INFO[role]['contextOrder'] = OutputContextOrder.LAST;
     }
   }
 
@@ -135,15 +135,15 @@
    * Forces output to place context utterances at the beginning of output.
    */
   forceContextualFirstOutput() {
-    for (const role in Output.ROLE_INFO_) {
-      Output.ROLE_INFO_[role]['contextOrder'] = OutputContextOrder.FIRST;
+    for (const role in Output.ROLE_INFO) {
+      Output.ROLE_INFO[role]['contextOrder'] = OutputContextOrder.FIRST;
     }
   }
 
   /** Resets contextual output values to their defaults. */
   resetContextualOutput() {
-    for (const role in Output.ROLE_INFO_) {
-      Output.ROLE_INFO_[role]['contextOrder'] =
+    for (const role in Output.ROLE_INFO) {
+      Output.ROLE_INFO[role]['contextOrder'] =
           this.originalOutputContextValues_[role];
     }
   }
diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn
index be07226..d10716bf 100644
--- a/chrome/browser/resources/settings/BUILD.gn
+++ b/chrome/browser/resources/settings/BUILD.gn
@@ -125,9 +125,9 @@
     "extension_control_browser_proxy.js",
     "global_scroll_target_mixin.js",
     "hats_browser_proxy.js",
-    "i18n_setup.js",
+    "i18n_setup.ts",
     "incompatible_applications_page/incompatible_applications_browser_proxy.js",
-    "lazy_load.js",
+    "lazy_load.ts",
     "lifetime_browser_proxy.js",
     "metrics_browser_proxy.js",
     "on_startup_page/on_startup_browser_proxy.js",
@@ -142,14 +142,14 @@
     "prefs/pref_util.js",
     "privacy_page/privacy_page_browser_proxy.js",
     "privacy_page/security_keys_browser_proxy.js",
-    "reset_page/reset_browser_proxy.js",
+    "reset_page/reset_browser_proxy.ts",
     "route.js",
     "router.js",
     "safety_check_page/safety_check_browser_proxy.js",
     "search_engines_page/search_engines_browser_proxy.js",
     "search_settings.js",
-    "setting_id_param_util.js",
-    "settings.js",
+    "setting_id_param_util.ts",
+    "settings.ts",
     "settings_page/main_page_mixin.js",
     "settings_routes.js",
     "site_settings/constants.js",
@@ -236,7 +236,7 @@
     "controls/settings_textarea.js",
     "controls/settings_toggle_button.js",
     "downloads_page/downloads_page.js",
-    "icons.js",
+    "icons.ts",
     "settings_menu/settings_menu.js",
     "on_startup_page/on_startup_page.js",
     "on_startup_page/startup_url_dialog.js",
@@ -264,9 +264,9 @@
     "privacy_page/security_keys_reset_dialog.js",
     "privacy_page/security_keys_set_pin_dialog.js",
     "privacy_page/security_keys_subpage.js",
-    "reset_page/reset_page.js",
-    "reset_page/reset_profile_dialog.js",
-    "reset_page/reset_profile_banner.js",
+    "reset_page/reset_page.ts",
+    "reset_page/reset_profile_dialog.ts",
+    "reset_page/reset_profile_banner.ts",
     "safety_check_page/safety_check_child.js",
     "safety_check_page/safety_check_extensions_child.js",
     "safety_check_page/safety_check_page.js",
@@ -285,9 +285,9 @@
     "settings_page/settings_section.js",
     "settings_page/settings_subpage.js",
     "settings_ui/settings_ui.js",
-    "settings_page_css.js",
-    "settings_shared_css.js",
-    "settings_vars_css.js",
+    "settings_page_css.ts",
+    "settings_shared_css.ts",
+    "settings_vars_css.ts",
     "site_favicon.js",
     "site_settings/add_site_dialog.js",
     "site_settings/all_sites.js",
@@ -382,7 +382,6 @@
     "privacy_page:closure_compile",
     "privacy_page/privacy_review:closure_compile",
     "privacy_sandbox:closure_compile",
-    "reset_page:closure_compile",
     "safety_check_page:closure_compile",
     "search_engines_page:closure_compile",
     "search_page:closure_compile",
@@ -441,6 +440,8 @@
 }
 
 js_library("settings") {
+  sources =
+      [ "$root_gen_dir/chrome/browser/resources/settings/tsc/settings.js" ]
   deps = [
     ":hats_browser_proxy",
     ":lifetime_browser_proxy",
@@ -457,6 +458,7 @@
     "search_engines_page:search_engines_browser_proxy",
     "settings_ui:settings_ui",
   ]
+  extra_deps = [ ":build_ts" ]
 }
 
 js_library("base_mixin") {
@@ -471,7 +473,10 @@
 }
 
 js_library("i18n_setup") {
+  sources =
+      [ "$root_gen_dir/chrome/browser/resources/settings/tsc/i18n_setup.js" ]
   deps = [ "//ui/webui/resources/js:load_time_data.m" ]
+  extra_deps = [ ":build_ts" ]
 }
 
 js_library("global_scroll_target_mixin") {
@@ -487,6 +492,8 @@
 }
 
 js_library("lazy_load") {
+  sources =
+      [ "$root_gen_dir/chrome/browser/resources/settings/tsc/lazy_load.js" ]
   deps = [
     "autofill_page:autofill_section",
     "autofill_page:payments_section",
@@ -511,6 +518,7 @@
       "languages_page:languages_subpage",
     ]
   }
+  extra_deps = [ ":build_ts" ]
 }
 
 js_library("lifetime_browser_proxy") {
@@ -558,10 +566,12 @@
 }
 
 js_library("setting_id_param_util") {
+  sources = [ "$root_gen_dir/chrome/browser/resources/settings/tsc/setting_id_param_util.js" ]
   deps = [
     ":router",
     "//ui/webui/resources/js:load_time_data.m",
   ]
+  extra_deps = [ ":build_ts" ]
 }
 
 js_library("settings_routes") {
@@ -626,10 +636,10 @@
 
 html_to_js("web_components_local") {
   js_files = [
-    "icons.js",
-    "settings_vars_css.js",
-    "settings_page_css.js",
-    "settings_shared_css.js",
+    "icons.ts",
+    "settings_vars_css.ts",
+    "settings_page_css.ts",
+    "settings_shared_css.ts",
     "site_favicon.js",
   ]
 }
@@ -709,9 +719,9 @@
     "extension_control_browser_proxy.js",
     "global_scroll_target_mixin.js",
     "hats_browser_proxy.js",
-    "i18n_setup.js",
-    "icons.js",
-    "lazy_load.js",
+    "i18n_setup.ts",
+    "icons.ts",
+    "lazy_load.ts",
     "lifetime_browser_proxy.js",
     "metrics_browser_proxy.js",
     "on_startup_page/on_startup_browser_proxy.js",
@@ -752,10 +762,10 @@
     "privacy_page/security_keys_set_pin_dialog.js",
     "privacy_page/security_keys_subpage.js",
     "privacy_page/security_page.js",
-    "reset_page/reset_browser_proxy.js",
-    "reset_page/reset_page.js",
-    "reset_page/reset_profile_banner.js",
-    "reset_page/reset_profile_dialog.js",
+    "reset_page/reset_browser_proxy.ts",
+    "reset_page/reset_page.ts",
+    "reset_page/reset_profile_banner.ts",
+    "reset_page/reset_profile_dialog.ts",
     "route.js",
     "router.js",
     "safety_check_page/safety_check_browser_proxy.js",
@@ -774,19 +784,19 @@
     "search_engines_page/search_engines_page.js",
     "search_page/search_page.js",
     "search_settings.js",
-    "setting_id_param_util.js",
-    "settings.js",
+    "setting_id_param_util.ts",
+    "settings.ts",
     "settings_main/settings_main.js",
     "settings_menu/settings_menu.js",
-    "settings_page_css.js",
+    "settings_page_css.ts",
     "settings_page/main_page_mixin.js",
     "settings_page/settings_animated_pages.js",
     "settings_page/settings_section.js",
     "settings_page/settings_subpage.js",
     "settings_routes.js",
-    "settings_shared_css.js",
+    "settings_shared_css.ts",
     "settings_ui/settings_ui.js",
-    "settings_vars_css.js",
+    "settings_vars_css.ts",
     "site_favicon.js",
     "site_settings/add_site_dialog.js",
     "site_settings/all_sites_icons.js",
@@ -877,6 +887,8 @@
         [ "//ui/webui/resources/cr_components/certificate_manager:build_ts" ]
   }
 
+  definitions = [ "//tools/typescript/definitions/chrome_send.d.ts" ]
+
   extra_deps = [
     ":preprocess",
     ":preprocess_generated",
diff --git a/chrome/browser/resources/settings/chromeos/BUILD.gn b/chrome/browser/resources/settings/chromeos/BUILD.gn
index 1c08bba..3bcc926 100644
--- a/chrome/browser/resources/settings/chromeos/BUILD.gn
+++ b/chrome/browser/resources/settings/chromeos/BUILD.gn
@@ -16,6 +16,7 @@
 
 preprocess_v3_manifest = "preprocessed_manifest.json"
 preprocess_gen_v3_manifest = "preprocessed_gen_manifest.json"
+browser_settings_tsc_manifest = "browser_settings_tsc_manifest.json"
 preprocess_external_mojo_manifest = "preprocessed_external_mojo_manifest.json"
 preprocess_mojo_manifest = "preprocessed_mojo_manifest.json"
 
@@ -193,6 +194,7 @@
     ]
   } else {
     deps += [
+      ":copy_browser_settings_tsc",
       ":preprocess_gen_v3",
       ":preprocess_mojo_v3",
       ":preprocess_v3",
@@ -201,6 +203,7 @@
     grdp_files += [ "$root_gen_dir/chrome/browser/resources/nearby_share/shared/nearby_share_resources_v3.grdp" ]
     manifest_files += [
       "$target_gen_dir/$preprocess_gen_v3_manifest",
+      "$target_gen_dir/$browser_settings_tsc_manifest",
       "$target_gen_dir/$preprocess_v3_manifest",
       "$target_gen_dir/$preprocess_mojo_manifest",
     ]
@@ -233,6 +236,7 @@
     "chromeos/os_printing_page/cups_printers_browser_proxy.js",
     "chromeos/os_printing_page/cups_printers_entry_manager.js",
     "chromeos/bluetooth_page/bluetooth_page_browser_proxy.js",
+    "chromeos/os_about_page/device_name_browser_proxy.js",
     "chromeos/os_reset_page/os_reset_browser_proxy.js",
     "chromeos/os_settings.js",
     "chromeos/personalization_page/change_picture_browser_proxy.js",
@@ -241,7 +245,6 @@
     "controls/pref_control_behavior.js",
     "controls/settings_boolean_control_behavior.js",
     "extension_control_browser_proxy.js",
-    "i18n_setup.js",
     "languages_page/languages.js",
     "languages_page/languages_browser_proxy.js",
     "lifetime_browser_proxy.js",
@@ -258,7 +261,25 @@
     "privacy_page/privacy_page_browser_proxy.js",
     "router.js",
     "search_engines_page/search_engines_browser_proxy.js",
+  ]
+}
+
+# Since Browser Settings is migrating to TypeScript (crbug.com/1234307), and
+# some files are still shared with CrOS Settings, need to copy the transpiled
+# JS file from TS compiler's output.
+preprocess_if_expr("copy_browser_settings_tsc") {
+  defines = chrome_grit_defines
+  deps = [ "..:build_ts" ]
+  in_folder = "$root_gen_dir/chrome/browser/resources/settings/tsc"
+  out_folder = "$target_gen_dir/$preprocess_folder_v3"
+  out_manifest = "$target_gen_dir/$browser_settings_tsc_manifest"
+  in_files = [
+    "i18n_setup.js",
+    "icons.js",
     "setting_id_param_util.js",
+    "settings_page_css.js",
+    "settings_shared_css.js",
+    "settings_vars_css.js",
   ]
 }
 
@@ -384,12 +405,11 @@
     "chromeos/os_a11y_page/manage_a11y_page_browser_proxy.m.js",
     "chromeos/os_a11y_page/tts_subpage.m.js",
     "chromeos/os_a11y_page/tts_subpage_browser_proxy.m.js",
-    "chromeos/os_about_page/channel_switcher_dialog.m.js",
-    "chromeos/os_about_page/detailed_build_info.m.js",
-    "chromeos/os_about_page/device_name_browser_proxy.m.js",
-    "chromeos/os_about_page/edit_hostname_dialog.m.js",
-    "chromeos/os_about_page/os_about_page.m.js",
-    "chromeos/os_about_page/update_warning_dialog.m.js",
+    "chromeos/os_about_page/channel_switcher_dialog.js",
+    "chromeos/os_about_page/detailed_build_info.js",
+    "chromeos/os_about_page/edit_hostname_dialog.js",
+    "chromeos/os_about_page/os_about_page.js",
+    "chromeos/os_about_page/update_warning_dialog.js",
     "chromeos/os_apps_page/android_apps_browser_proxy.m.js",
     "chromeos/os_apps_page/android_apps_subpage.m.js",
     "chromeos/os_apps_page/app_notifications_page/app_notifications_subpage.js",
@@ -511,7 +531,6 @@
     "controls/settings_slider.js",
     "controls/settings_textarea.js",
     "controls/settings_toggle_button.js",
-    "icons.js",
     "people_page/signout_dialog.js",
     "people_page/sync_account_control.js",
     "people_page/sync_controls.js",
@@ -523,9 +542,6 @@
     "settings_page/settings_animated_pages.js",
     "settings_page/settings_section.js",
     "settings_page/settings_subpage.js",
-    "settings_page_css.js",
-    "settings_shared_css.js",
-    "settings_vars_css.js",
   ]
 }
 
@@ -708,7 +724,7 @@
     "nearby_share_page:polymer3_elements",
     "os_a11y_page:polymer3_elements",
     "os_a11y_page:web_components",
-    "os_about_page:polymer3_elements",
+    "os_about_page:web_components",
     "os_apps_page:polymer3_elements",
     "os_apps_page/app_management_page:polymer3_elements",
     "os_apps_page/app_management_page/borealis_page:polymer3_elements",
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/os_about_page/BUILD.gn
index b1b4c16..32c4417 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/BUILD.gn
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/BUILD.gn
@@ -3,39 +3,35 @@
 # found in the LICENSE file.
 
 import("//third_party/closure_compiler/compile_js.gni")
-import("//tools/polymer/polymer.gni")
-import("//ui/webui/resources/tools/js_modulizer.gni")
+import("//tools/polymer/html_to_js.gni")
 import("../os_settings.gni")
 
 js_type_check("closure_compile_module") {
   closure_flags = os_settings_closure_flags
   is_polymer3 = true
   deps = [
-    ":channel_switcher_dialog.m",
-    ":detailed_build_info.m",
-    ":device_name_browser_proxy.m",
-    ":edit_hostname_dialog.m",
-    ":os_about_page.m",
-    ":update_warning_dialog.m",
+    ":channel_switcher_dialog",
+    ":detailed_build_info",
+    ":device_name_browser_proxy",
+    ":edit_hostname_dialog",
+    ":os_about_page",
+    ":update_warning_dialog",
   ]
 }
 
-js_library("channel_switcher_dialog.m") {
-  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_about_page/channel_switcher_dialog.m.js" ]
+js_library("channel_switcher_dialog") {
   deps = [
     "../../about_page:about_page_browser_proxy",
     "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
     "//ui/webui/resources/js:assert.m",
     "//ui/webui/resources/js:load_time_data.m",
   ]
-  extra_deps = [ ":channel_switcher_dialog_module" ]
 }
 
-js_library("detailed_build_info.m") {
-  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_about_page/detailed_build_info.m.js" ]
+js_library("detailed_build_info") {
   deps = [
-    ":channel_switcher_dialog.m",
-    ":edit_hostname_dialog.m",
+    ":channel_switcher_dialog",
+    ":edit_hostname_dialog",
     "..:deep_linking_behavior.m",
     "..:os_route.m",
     "../..:router",
@@ -45,31 +41,25 @@
     "//ui/webui/resources/cr_elements/policy:cr_tooltip_icon.m",
     "//ui/webui/resources/js:i18n_behavior.m",
   ]
-  extra_deps = [ ":detailed_build_info_module" ]
 }
 
-js_library("device_name_browser_proxy.m") {
-  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_about_page/device_name_browser_proxy.m.js" ]
+js_library("device_name_browser_proxy") {
   deps = [ "//ui/webui/resources/js:cr.m" ]
   externs_list = [ "$externs_path/chrome_send.js" ]
-  extra_deps = [ ":modulize" ]
 }
 
-js_library("edit_hostname_dialog.m") {
-  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_about_page/edit_hostname_dialog.m.js" ]
+js_library("edit_hostname_dialog") {
   deps = [
     "../../about_page:about_page_browser_proxy",
     "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
     "//ui/webui/resources/js:assert.m",
     "//ui/webui/resources/js:load_time_data.m",
   ]
-  extra_deps = [ ":edit_hostname_dialog_module" ]
 }
 
-js_library("os_about_page.m") {
-  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_about_page/os_about_page.m.js" ]
+js_library("os_about_page") {
   deps = [
-    ":device_name_browser_proxy.m",
+    ":device_name_browser_proxy",
     "..:deep_linking_behavior.m",
     "..:os_route.m",
     "../..:i18n_setup",
@@ -83,75 +73,22 @@
     "//ui/webui/resources/js:parse_html_subset.m",
     "//ui/webui/resources/js:web_ui_listener_behavior.m",
   ]
-  extra_deps = [ ":os_about_page_module" ]
 }
 
-js_library("update_warning_dialog.m") {
-  sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/os_about_page/update_warning_dialog.m.js" ]
+js_library("update_warning_dialog") {
   deps = [
     "../../about_page:about_page_browser_proxy",
     "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
     "//ui/webui/resources/js:i18n_behavior.m",
   ]
-  extra_deps = [ ":update_warning_dialog_module" ]
 }
 
-group("polymer3_elements") {
-  public_deps = [
-    ":channel_switcher_dialog_module",
-    ":detailed_build_info_module",
-    ":edit_hostname_dialog_module",
-    ":modulize",
-    ":os_about_page_module",
-    ":update_warning_dialog_module",
+html_to_js("web_components") {
+  js_files = [
+    "channel_switcher_dialog.js",
+    "detailed_build_info.js",
+    "edit_hostname_dialog.js",
+    "os_about_page.js",
+    "update_warning_dialog.js",
   ]
 }
-
-polymer_modulizer("channel_switcher_dialog") {
-  js_file = "channel_switcher_dialog.js"
-  html_file = "channel_switcher_dialog.html"
-  html_type = "dom-module"
-  migrated_imports = os_settings_migrated_imports
-  namespace_rewrites = os_settings_namespace_rewrites
-  auto_imports = os_settings_auto_imports
-}
-
-polymer_modulizer("detailed_build_info") {
-  js_file = "detailed_build_info.js"
-  html_file = "detailed_build_info.html"
-  html_type = "dom-module"
-  migrated_imports = os_settings_migrated_imports
-  namespace_rewrites = os_settings_namespace_rewrites
-  auto_imports = os_settings_auto_imports
-}
-
-polymer_modulizer("edit_hostname_dialog") {
-  js_file = "edit_hostname_dialog.js"
-  html_file = "edit_hostname_dialog.html"
-  html_type = "dom-module"
-  migrated_imports = os_settings_migrated_imports
-  namespace_rewrites = os_settings_namespace_rewrites
-  auto_imports = os_settings_auto_imports
-}
-
-polymer_modulizer("os_about_page") {
-  js_file = "os_about_page.js"
-  html_file = "os_about_page.html"
-  html_type = "dom-module"
-  migrated_imports = os_settings_migrated_imports
-  namespace_rewrites = os_settings_namespace_rewrites
-  auto_imports = os_settings_auto_imports
-}
-
-polymer_modulizer("update_warning_dialog") {
-  js_file = "update_warning_dialog.js"
-  html_file = "update_warning_dialog.html"
-  html_type = "dom-module"
-  migrated_imports = os_settings_migrated_imports
-  namespace_rewrites = os_settings_namespace_rewrites
-  auto_imports = os_settings_auto_imports
-}
-
-js_modulizer("modulize") {
-  input_files = [ "device_name_browser_proxy.js" ]
-}
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/channel_switcher_dialog.html b/chrome/browser/resources/settings/chromeos/os_about_page/channel_switcher_dialog.html
index 36ccecd55..348b21d 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/channel_switcher_dialog.html
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/channel_switcher_dialog.html
@@ -1,73 +1,56 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
-
-<link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_button/cr_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_radio_button/cr_radio_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_radio_group/cr_radio_group.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-selector/iron-selector.html">
-<link rel="import" href="../../about_page/about_page_browser_proxy.html">
-<link rel="import" href="../../settings_shared_css.html">
-<link rel="import" href="chrome://resources/html/assert.html">
-<link rel="import" href="chrome://resources/html/load_time_data.html">
-
-<dom-module id="settings-channel-switcher-dialog">
-  <template>
-    <style include="settings-shared">
-      #warningSelector > :not(.iron-selected) {
-        display: none;
-      }
-    </style>
-    <cr-dialog id="dialog" close-text="$i18n{close}">
-      <div slot="title">$i18n{aboutChangeChannel}</div>
-      <div slot="body">
-        <!-- TODO(dbeam): this can be policy-controlled. Show this in the UI.
-             https://cloud.google.com/docs/chrome-enterprise/policies/?policy=ChromeOsReleaseChannel
-        -->
-        <cr-radio-group on-selected-changed="onChannelSelectionChanged_">
-          <cr-radio-button name="[[browserChannelEnum_.STABLE]]">
-            $i18n{aboutChannelDialogStable}
-          </cr-radio-button>
-          <cr-radio-button name="[[browserChannelEnum_.BETA]]">
-            $i18n{aboutChannelDialogBeta}
-          </cr-radio-button>
-          <cr-radio-button name="[[browserChannelEnum_.DEV]]">
-            $i18n{aboutChannelDialogDev}
-          </cr-radio-button>
-        </cr-radio-group>
-        <iron-selector id="warningSelector">
-          <div>
-            <h2>$i18n{aboutDelayedWarningTitle}</h2>
-            <div>[[substituteString_(
-                '$i18nPolymer{aboutDelayedWarningMessage}',
-                '$i18nPolymer{aboutOsProductTitle}')]]</div>
-          </div>
-          <div>
-            <h2>$i18n{aboutPowerwashWarningTitle}</h2>
-            <div>$i18n{aboutPowerwashWarningMessage}</div>
-          </div>
-          <div>
-            <h2>$i18n{aboutUnstableWarningTitle}</h2>
-            <div>[[substituteString_(
-                '$i18nPolymer{aboutUnstableWarningMessage}',
-                '$i18nPolymer{aboutOsProductTitle}')]]</div>
-          </div>
-        </iron-selector>
+<style include="settings-shared">
+  #warningSelector > :not(.iron-selected) {
+    display: none;
+  }
+</style>
+<cr-dialog id="dialog" close-text="$i18n{close}">
+  <div slot="title">$i18n{aboutChangeChannel}</div>
+  <div slot="body">
+    <!-- TODO(dbeam): this can be policy-controlled. Show this in the UI.
+         https://cloud.google.com/docs/chrome-enterprise/policies/?policy=ChromeOsReleaseChannel
+    -->
+    <cr-radio-group on-selected-changed="onChannelSelectionChanged_">
+      <cr-radio-button name="[[browserChannelEnum_.STABLE]]">
+        $i18n{aboutChannelDialogStable}
+      </cr-radio-button>
+      <cr-radio-button name="[[browserChannelEnum_.BETA]]">
+        $i18n{aboutChannelDialogBeta}
+      </cr-radio-button>
+      <cr-radio-button name="[[browserChannelEnum_.DEV]]">
+        $i18n{aboutChannelDialogDev}
+      </cr-radio-button>
+    </cr-radio-group>
+    <iron-selector id="warningSelector">
+      <div>
+        <h2>$i18n{aboutDelayedWarningTitle}</h2>
+        <div>[[substituteString_(
+            '$i18nPolymer{aboutDelayedWarningMessage}',
+            '$i18nPolymer{aboutOsProductTitle}')]]</div>
       </div>
-      <div slot="button-container">
-        <cr-button class="cancel-button" on-click="onCancelTap_"
-            id="cancel">$i18n{cancel}</cr-button>
-        <cr-button id="changeChannel" class="action-button"
-            on-click="onChangeChannelTap_"
-            hidden="[[!shouldShowButtons_.changeChannel]]">
-          $i18n{aboutChangeChannel}
-        </cr-button>
-        <cr-button id="changeChannelAndPowerwash" class="action-button"
-            on-click="onChangeChannelAndPowerwashTap_"
-            hidden="[[!shouldShowButtons_.changeChannelAndPowerwash]]">
-          $i18n{aboutChangeChannelAndPowerwash}
-        </cr-button>
+      <div>
+        <h2>$i18n{aboutPowerwashWarningTitle}</h2>
+        <div>$i18n{aboutPowerwashWarningMessage}</div>
       </div>
-    </cr-dialog>
-  </template>
-  <script src="channel_switcher_dialog.js"></script>
-</dom-module>
+      <div>
+        <h2>$i18n{aboutUnstableWarningTitle}</h2>
+        <div>[[substituteString_(
+            '$i18nPolymer{aboutUnstableWarningMessage}',
+            '$i18nPolymer{aboutOsProductTitle}')]]</div>
+      </div>
+    </iron-selector>
+  </div>
+  <div slot="button-container">
+    <cr-button class="cancel-button" on-click="onCancelTap_"
+        id="cancel">$i18n{cancel}</cr-button>
+    <cr-button id="changeChannel" class="action-button"
+        on-click="onChangeChannelTap_"
+        hidden="[[!shouldShowButtons_.changeChannel]]">
+      $i18n{aboutChangeChannel}
+    </cr-button>
+    <cr-button id="changeChannelAndPowerwash" class="action-button"
+        on-click="onChangeChannelAndPowerwashTap_"
+        hidden="[[!shouldShowButtons_.changeChannelAndPowerwash]]">
+      $i18n{aboutChangeChannelAndPowerwash}
+    </cr-button>
+  </div>
+</cr-dialog>
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/channel_switcher_dialog.js b/chrome/browser/resources/settings/chromeos/os_about_page/channel_switcher_dialog.js
index e39e438..3e30edc5 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/channel_switcher_dialog.js
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/channel_switcher_dialog.js
@@ -2,7 +2,19 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-(function() {
+import '//resources/cr_elements/cr_dialog/cr_dialog.m.js';
+import '//resources/cr_elements/cr_button/cr_button.m.js';
+import '//resources/cr_elements/cr_radio_button/cr_radio_button.m.js';
+import '//resources/cr_elements/cr_radio_group/cr_radio_group.m.js';
+import '//resources/polymer/v3_0/iron-selector/iron-selector.js';
+import '../../settings_shared_css.js';
+
+import {assert, assertNotReached} from '//resources/js/assert.m.js';
+import {loadTimeData} from '//resources/js/load_time_data.m.js';
+import {afterNextRender, flush, html, Polymer, TemplateInstanceBase, Templatizer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import {AboutPageBrowserProxy, AboutPageBrowserProxyImpl, AboutPageUpdateInfo, BrowserChannel, browserChannelToI18nId, ChannelInfo, isTargetChannelMoreStable, RegulatoryInfo, TPMFirmwareUpdateStatusChangedEvent, UpdateStatus, UpdateStatusChangedEvent, VersionInfo} from '../../about_page/about_page_browser_proxy.js';
+
 
 /**
  */
@@ -20,6 +32,7 @@
  * release channel to notify parents of this dialog.
  */
 Polymer({
+  _template: html`{__html_template__}`,
   is: 'settings-channel-switcher-dialog',
 
   properties: {
@@ -45,12 +58,12 @@
     },
   },
 
-  /** @private {?settings.AboutPageBrowserProxy} */
+  /** @private {?AboutPageBrowserProxy} */
   browserProxy_: null,
 
   /** @override */
   ready() {
-    this.browserProxy_ = settings.AboutPageBrowserProxyImpl.getInstance();
+    this.browserProxy_ = AboutPageBrowserProxyImpl.getInstance();
     this.browserProxy_.getChannelInfo().then(info => {
       this.currentChannel_ = info.currentChannel;
       this.targetChannel_ = info.targetChannel;
@@ -125,8 +138,7 @@
       return;
     }
 
-    if (settings.isTargetChannelMoreStable(
-            this.currentChannel_, selectedChannel)) {
+    if (isTargetChannelMoreStable(this.currentChannel_, selectedChannel)) {
       // More stable channel selected. For non managed devices, notify the user
       // about powerwash.
       if (loadTimeData.getBoolean('aboutEnterpriseManaged')) {
@@ -157,4 +169,3 @@
     return loadTimeData.substituteString(format, replacement);
   },
 });
-})();
\ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/detailed_build_info.html b/chrome/browser/resources/settings/chromeos/os_about_page/detailed_build_info.html
index 8c1d26fe..70c8d24 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/detailed_build_info.html
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/detailed_build_info.html
@@ -1,133 +1,108 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
+<style include="settings-shared">
+  cr-policy-indicator {
+    margin-inline-start: var(--cr-controlled-by-spacing);
+  }
 
-<link rel="import" href="chrome://resources/cr_elements/cr_button/cr_button.html">
-<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_indicator.html">
-<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_indicator_behavior.html">
-<link rel="import" href="chrome://resources/cr_elements/policy/cr_tooltip_icon.html">
-<link rel="import" href="chrome://resources/html/assert.html">
-<link rel="import" href="chrome://resources/html/cr/ui/focus_without_ink.html">
-<link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="../../about_page/about_page_browser_proxy.html">
-<link rel="import" href="../../i18n_setup.html">
-<link rel="import" href="../../router.html">
-<link rel="import" href="../../settings_shared_css.html">
-<link rel="import" href="../deep_linking_behavior.html">
-<link rel="import" href="../localized_link/localized_link.html">
-<link rel="import" href="../os_route.html">
-<link rel="import" href="channel_switcher_dialog.html">
-<link rel="import" href="device_name_browser_proxy.html">
-<link rel="import" href="edit_hostname_dialog.html">
+  /* The command line string can contain very long substrings that
+   * don't have any spaces, need to force a line break in such cases. */
+  #command-line {
+    overflow-wrap: break-word;
+    width: 100%;
+  }
 
-<dom-module id="settings-detailed-build-info">
-  <template>
-    <style include="settings-shared">
-      cr-policy-indicator {
-        margin-inline-start: var(--cr-controlled-by-spacing);
-      }
-
-      /* The command line string can contain very long substrings that
-       * don't have any spaces, need to force a line break in such cases. */
-      #command-line {
-        overflow-wrap: break-word;
-        width: 100%;
-      }
-
-      #managedEolTooltipIcon {
-        margin-inline-end: 54px;
-      }
-    </style>
-    <div class="settings-box two-line">
-      <div class="start">
-        <div role="heading" aria-level="2">$i18n{aboutChannelLabel}</div>
-        <div id="currentlyOnChannelText" aria-hidden="true" class="secondary">
-          [[currentlyOnChannelText_]]
-        </div>
-      </div>
-      <div class="separator"></div>
-      <cr-button on-click="onChangeChannelTap_"
-          aria-describedby="currentlyOnChannelText"
-          disabled="[[!canChangeChannel_]]"
-          deep-link-focus-id$="[[Setting.kChangeChromeChannel]]">
-        $i18n{aboutChangeChannel}
-      </cr-button>
-      <template is="dom-if" if="[[!canChangeChannel_]]">
-        <cr-policy-indicator
-            indicator-source-name="[[getChangeChannelIndicatorSourceName_(
-                canChangeChannel_)]]"
-            indicator-type="[[getChangeChannelIndicatorType_(
-                canChangeChannel_)]]">
-        </cr-policy-indicator>
-      </template>
-      <template is="dom-if" if="[[showChannelSwitcherDialog_]]" restamp>
-        <settings-channel-switcher-dialog
-            on-close="onChannelSwitcherDialogClosed_">
-        </settings-channel-switcher-dialog>
-      </template>
+  #managedEolTooltipIcon {
+    margin-inline-end: 54px;
+  }
+</style>
+<div class="settings-box two-line">
+  <div class="start">
+    <div role="heading" aria-level="2">$i18n{aboutChannelLabel}</div>
+    <div id="currentlyOnChannelText" aria-hidden="true" class="secondary">
+      [[currentlyOnChannelText_]]
     </div>
-    <div id="endOfLifeSectionContainer"
-        class="settings-box two-line single-column"
-        hidden="[[shouldHideEolInfo_]]">
-      <div role="heading" aria-level="2">$i18n{aboutEndOfLifeTitle}</div>
-      <settings-localized-link class="secondary"
-          localized-string="[[eolMessageWithMonthAndYear]]">
-      </settings-localized-link>
-    </div>
-    <template is="dom-if" if="[[isManaged_]]">
-      <div class="settings-box two-line">
-        <div class="start" aria-hidden="true">
-          <div role="heading">$i18n{aboutEndOfLifeTitle}</div>
-          <div class="secondary">
-            $i18n{aboutManagedEndOfLifeSubtitle}
-          </div>
-        </div>
-        <cr-tooltip-icon
-            id="managedEolTooltipIcon"
-            icon-class="cr20:domain"
-            tooltip-text="$i18n{aboutManagedEndOfLifeSubtitle}"
-            icon-aria-label="$i18n{aboutManagedEndOfLifeSubtitle}"
-            tooltip-position="bottom">
-        </cr-tooltip-icon>
-      </div>
-    </template>
-    <template is="dom-if" if="[[isHostnameSettingEnabled_]]">
-      <div class="settings-box two-line">
-        <div class="start">
-          <div role="heading">$i18n{aboutDeviceName}</div>
-          <div id="deviceName" aria-hidden="true" class="secondary">
-            [[deviceNameText_]]
-          </div>
-        </div>
-        <cr-icon-button class="icon-edit" on-click="onEditHostnameTap_">
-        </cr-icon-button>
-      </div>
-      <template is="dom-if" if="[[showEditHostnameDialog_]]" restamp>
-        <edit-hostname-dialog
-            on-close="onEditHostnameDialogClosed_">
-        </edit-hostname-dialog>
-      </template>
-    </template>
-    <div id="buildDetailsLinkContainer" class="settings-box">
-      <div class="start" id="aboutBuildDetailsTitle">
-        $i18n{aboutBuildDetailsTitle}
-      </div>
-      <cr-icon-button id="copyBuildDetailsButton" class="icon-copy-content"
-          aria-labelledby="copyBuildDetailsButtonToolTip"
-          on-click="onCopyBuildDetailsToClipBoardTap_"
-          disabled="[[!copyToClipBoardEnabled_(versionInfo_, channelInfo_)]]"
-          deep-link-focus-id$="[[Setting.kCopyDetailedBuildInfo]]">
-      </cr-icon-button>
-      <paper-tooltip id="copyBuildDetailsButtonToolTip"
-          for="copyBuildDetailsButton"
-          position="bottom" fit-to-visible-bounds>
-        $i18n{aboutBuildDetailsCopyTooltipLabel}
-      </paper-tooltip>
-      <div class="separator"></div>
-      <cr-icon-button on-click="onVisitBuildDetailsPageTap_"
-          aria-labelledby="aboutBuildDetailsTitle"
-          class="icon-external">
-      </cr-icon-button>
-    </div>
-    <div class="hr"></div>
+  </div>
+  <div class="separator"></div>
+  <cr-button on-click="onChangeChannelTap_"
+      aria-describedby="currentlyOnChannelText"
+      disabled="[[!canChangeChannel_]]"
+      deep-link-focus-id$="[[Setting.kChangeChromeChannel]]">
+    $i18n{aboutChangeChannel}
+  </cr-button>
+  <template is="dom-if" if="[[!canChangeChannel_]]">
+    <cr-policy-indicator
+        indicator-source-name="[[getChangeChannelIndicatorSourceName_(
+            canChangeChannel_)]]"
+        indicator-type="[[getChangeChannelIndicatorType_(
+            canChangeChannel_)]]">
+    </cr-policy-indicator>
   </template>
-  <script src="detailed_build_info.js"></script>
-</dom-module>
+  <template is="dom-if" if="[[showChannelSwitcherDialog_]]" restamp>
+    <settings-channel-switcher-dialog
+        on-close="onChannelSwitcherDialogClosed_">
+    </settings-channel-switcher-dialog>
+  </template>
+</div>
+<div id="endOfLifeSectionContainer"
+    class="settings-box two-line single-column"
+    hidden="[[shouldHideEolInfo_]]">
+  <div role="heading" aria-level="2">$i18n{aboutEndOfLifeTitle}</div>
+  <settings-localized-link class="secondary"
+      localized-string="[[eolMessageWithMonthAndYear]]">
+  </settings-localized-link>
+</div>
+<template is="dom-if" if="[[isManaged_]]">
+  <div class="settings-box two-line">
+    <div class="start" aria-hidden="true">
+      <div role="heading">$i18n{aboutEndOfLifeTitle}</div>
+      <div class="secondary">
+        $i18n{aboutManagedEndOfLifeSubtitle}
+      </div>
+    </div>
+    <cr-tooltip-icon
+        id="managedEolTooltipIcon"
+        icon-class="cr20:domain"
+        tooltip-text="$i18n{aboutManagedEndOfLifeSubtitle}"
+        icon-aria-label="$i18n{aboutManagedEndOfLifeSubtitle}"
+        tooltip-position="bottom">
+    </cr-tooltip-icon>
+  </div>
+</template>
+<template is="dom-if" if="[[isHostnameSettingEnabled_]]">
+  <div class="settings-box two-line">
+    <div class="start">
+      <div role="heading">$i18n{aboutDeviceName}</div>
+      <div id="deviceName" aria-hidden="true" class="secondary">
+        [[deviceNameText_]]
+      </div>
+    </div>
+    <cr-icon-button class="icon-edit" on-click="onEditHostnameTap_">
+    </cr-icon-button>
+  </div>
+  <template is="dom-if" if="[[showEditHostnameDialog_]]" restamp>
+    <edit-hostname-dialog
+        on-close="onEditHostnameDialogClosed_">
+    </edit-hostname-dialog>
+  </template>
+</template>
+<div id="buildDetailsLinkContainer" class="settings-box">
+  <div class="start" id="aboutBuildDetailsTitle">
+    $i18n{aboutBuildDetailsTitle}
+  </div>
+  <cr-icon-button id="copyBuildDetailsButton" class="icon-copy-content"
+      aria-labelledby="copyBuildDetailsButtonToolTip"
+      on-click="onCopyBuildDetailsToClipBoardTap_"
+      disabled="[[!copyToClipBoardEnabled_(versionInfo_, channelInfo_)]]"
+      deep-link-focus-id$="[[Setting.kCopyDetailedBuildInfo]]">
+  </cr-icon-button>
+  <paper-tooltip id="copyBuildDetailsButtonToolTip"
+      for="copyBuildDetailsButton"
+      position="bottom" fit-to-visible-bounds>
+    $i18n{aboutBuildDetailsCopyTooltipLabel}
+  </paper-tooltip>
+  <div class="separator"></div>
+  <cr-icon-button on-click="onVisitBuildDetailsPageTap_"
+      aria-labelledby="aboutBuildDetailsTitle"
+      class="icon-external">
+  </cr-icon-button>
+</div>
+<div class="hr"></div>
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/detailed_build_info.js b/chrome/browser/resources/settings/chromeos/os_about_page/detailed_build_info.js
index d77ddbd..3da862b 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/detailed_build_info.js
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/detailed_build_info.js
@@ -7,13 +7,36 @@
  * information for ChromeOS.
  */
 
+import '//resources/cr_elements/cr_button/cr_button.m.js';
+import '//resources/cr_elements/policy/cr_policy_indicator.m.js';
+import '//resources/cr_elements/policy/cr_tooltip_icon.m.js';
+import '../../settings_shared_css.js';
+import '../localized_link/localized_link.js';
+import './channel_switcher_dialog.js';
+import './edit_hostname_dialog.js';
+
+import {CrPolicyIndicatorType} from '//resources/cr_elements/policy/cr_policy_indicator_behavior.m.js';
+import {assert, assertNotReached} from '//resources/js/assert.m.js';
+import {focusWithoutInk} from '//resources/js/cr/ui/focus_without_ink.m.js';
+import {I18nBehavior} from '//resources/js/i18n_behavior.m.js';
+import {afterNextRender, flush, html, Polymer, TemplateInstanceBase, Templatizer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import {AboutPageBrowserProxy, AboutPageBrowserProxyImpl, AboutPageUpdateInfo, BrowserChannel, browserChannelToI18nId, ChannelInfo, isTargetChannelMoreStable, RegulatoryInfo, TPMFirmwareUpdateStatusChangedEvent, UpdateStatus, UpdateStatusChangedEvent, VersionInfo} from '../../about_page/about_page_browser_proxy.js';
+import {loadTimeData} from '../../i18n_setup.js';
+import {Route, RouteObserverBehavior, Router} from '../../router.js';
+import {DeepLinkingBehavior} from '../deep_linking_behavior.m.js';
+import {routes} from '../os_route.m.js';
+
+import {DeviceNameBrowserProxy, DeviceNameBrowserProxyImpl} from './device_name_browser_proxy.js';
+
 Polymer({
+  _template: html`{__html_template__}`,
   is: 'settings-detailed-build-info',
 
   behaviors: [
     DeepLinkingBehavior,
     I18nBehavior,
-    settings.RouteObserverBehavior,
+    RouteObserverBehavior,
   ],
 
   properties: {
@@ -86,7 +109,7 @@
 
   /** @override */
   ready() {
-    const browserProxy = settings.AboutPageBrowserProxyImpl.getInstance();
+    const browserProxy = AboutPageBrowserProxyImpl.getInstance();
     browserProxy.pageReady();
 
     browserProxy.getVersionInfo().then(versionInfo => {
@@ -101,12 +124,12 @@
   },
 
   /**
-   * @param {!settings.Route} route
-   * @param {!settings.Route} oldRoute
+   * @param {!Route} route
+   * @param {!Route} oldRoute
    */
   currentRouteChanged(route, oldRoute) {
     // Does not apply to this page.
-    if (route !== settings.routes.DETAILED_BUILD_INFO) {
+    if (route !== routes.DETAILED_BUILD_INFO) {
       return;
     }
 
@@ -123,7 +146,7 @@
 
   /** @private */
   updateChannelInfo_() {
-    const browserProxy = settings.AboutPageBrowserProxyImpl.getInstance();
+    const browserProxy = AboutPageBrowserProxyImpl.getInstance();
 
     // canChangeChannel() call is expected to be low-latency, so fetch this
     // value by itself to ensure UI consistency (see https://crbug.com/848750).
@@ -138,8 +161,7 @@
       // Display the target channel for the 'Currently on' message.
       this.currentlyOnChannelText_ = this.i18n(
           'aboutCurrentlyOnChannel',
-          this.i18n(
-              settings.browserChannelToI18nId(info.targetChannel, info.isLts)));
+          this.i18n(browserChannelToI18nId(info.targetChannel, info.isLts)));
     });
   },
 
@@ -238,14 +260,14 @@
   /** @private */
   onChannelSwitcherDialogClosed_() {
     this.showChannelSwitcherDialog_ = false;
-    cr.ui.focusWithoutInk(assert(this.$$('cr-button')));
+    focusWithoutInk(assert(this.$$('cr-button')));
     this.updateChannelInfo_();
   },
 
   /** @private */
   onEditHostnameDialogClosed_() {
     this.showEditHostnameDialog_ = false;
-    cr.ui.focusWithoutInk(assert(this.$$('cr-button')));
+    focusWithoutInk(assert(this.$$('cr-button')));
     // TODO(jhawkins): Verify hostname property updated at this point.
   },
 });
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/device_name_browser_proxy.js b/chrome/browser/resources/settings/chromeos/os_about_page/device_name_browser_proxy.js
index df0e1f1..f8cfff17 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/device_name_browser_proxy.js
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/device_name_browser_proxy.js
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 // clang-format off
-// #import {addSingletonGetter, sendWithPromise} from 'chrome://resources/js/cr.m.js';
+import {addSingletonGetter, sendWithPromise} from 'chrome://resources/js/cr.m.js';
 // clang-format on
 
 /**
@@ -11,10 +11,10 @@
  *   deviceName: string,
  * }}
  */
-/* #export */ let DeviceNameMetadata;
+export let DeviceNameMetadata;
 
 /** @interface */
-/* #export */ class DeviceNameBrowserProxy {
+export class DeviceNameBrowserProxy {
   /**
    * Queries the system for metadata about the device name.
    * @return {!Promise<!DeviceNameMetadata>}
@@ -25,13 +25,13 @@
 /**
  * @implements {DeviceNameBrowserProxy}
  */
-/* #export */ class DeviceNameBrowserProxyImpl {
+export class DeviceNameBrowserProxyImpl {
   /** @override */
   getDeviceNameMetadata() {
-    return cr.sendWithPromise('getDeviceNameMetadata');
+    return sendWithPromise('getDeviceNameMetadata');
   }
 }
 
 // The singleton instance_ is replaced with a test version of this wrapper
 // during testing.
-cr.addSingletonGetter(DeviceNameBrowserProxyImpl);
+addSingletonGetter(DeviceNameBrowserProxyImpl);
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/edit_hostname_dialog.html b/chrome/browser/resources/settings/chromeos/os_about_page/edit_hostname_dialog.html
index 8a64870..251350654 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/edit_hostname_dialog.html
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/edit_hostname_dialog.html
@@ -1,50 +1,32 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
+<style include="settings-shared">
+  cr-input {
+    --cr-input-error-display: none;
+  }
 
-<link rel="import" href="chrome://resources/cr_elements/cr_button/cr_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_input/cr_input.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_radio_button/cr_radio_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_radio_group/cr_radio_group.html">
-<link rel="import" href="chrome://resources/html/assert.html">
-<link rel="import" href="chrome://resources/html/load_time_data.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-selector/iron-selector.html">
-<link rel="import" href="../../about_page/about_page_browser_proxy.html">
-<link rel="import" href="../../settings_shared_css.html">
+  #input-subtext {
+    display: flex;
+  }
 
-<dom-module id="edit-hostname-dialog">
-  <template>
-    <style include="settings-shared">
-      cr-input {
-        --cr-input-error-display: none;
-      }
-
-      #input-subtext {
-        display: flex;
-      }
-
-      #input-subtext span:last-child {
-        margin-inline-start: auto;
-      }
-    </style>
-    <cr-dialog id="dialog" show-on-attach>
-      <div slot="title">$i18n{aboutEditDeviceName}</div>
-      <div slot="body">
-        <div>$i18n{aboutDeviceNameInfo}</div>
-        <cr-input></cr-input>
-        <div id="input-subtext">
-          <span>$i18n{aboutDeviceNameConstraints}</span>
-          <span>1/15</span>
-        </div>
-      </div>
-      <div slot="button-container">
-        <cr-button class="cancel-button" on-click="onCancelTap_">
-          $i18n{cancel}
-        </cr-button>
-        <cr-button class="action-button" on-click="onDoneTap_">
-          $i18n{done}
-        </cr-button>
-      </div>
-    </cr-dialog>
-  </template>
-  <script src="edit_hostname_dialog.js"></script>
-</dom-module>
+  #input-subtext span:last-child {
+    margin-inline-start: auto;
+  }
+</style>
+<cr-dialog id="dialog" show-on-attach>
+  <div slot="title">$i18n{aboutEditDeviceName}</div>
+  <div slot="body">
+    <div>$i18n{aboutDeviceNameInfo}</div>
+    <cr-input></cr-input>
+    <div id="input-subtext">
+      <span>$i18n{aboutDeviceNameConstraints}</span>
+      <span>1/15</span>
+    </div>
+  </div>
+  <div slot="button-container">
+    <cr-button class="cancel-button" on-click="onCancelTap_">
+      $i18n{cancel}
+    </cr-button>
+    <cr-button class="action-button" on-click="onDoneTap_">
+      $i18n{done}
+    </cr-button>
+  </div>
+</cr-dialog>
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/edit_hostname_dialog.js b/chrome/browser/resources/settings/chromeos/os_about_page/edit_hostname_dialog.js
index fa76e09..d27796e0 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/edit_hostname_dialog.js
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/edit_hostname_dialog.js
@@ -6,7 +6,22 @@
  * @fileoverview 'edit-hostname-dialog' is a component allowing the
  * user to edit the device hostname.
  */
+import '//resources/cr_elements/cr_button/cr_button.m.js';
+import '//resources/cr_elements/cr_dialog/cr_dialog.m.js';
+import '//resources/cr_elements/cr_input/cr_input.m.js';
+import '//resources/cr_elements/cr_radio_button/cr_radio_button.m.js';
+import '//resources/cr_elements/cr_radio_group/cr_radio_group.m.js';
+import '//resources/polymer/v3_0/iron-selector/iron-selector.js';
+import '../../settings_shared_css.js';
+
+import {assert, assertNotReached} from '//resources/js/assert.m.js';
+import {loadTimeData} from '//resources/js/load_time_data.m.js';
+import {afterNextRender, flush, html, Polymer, TemplateInstanceBase, Templatizer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import {AboutPageBrowserProxy, AboutPageBrowserProxyImpl, AboutPageUpdateInfo, BrowserChannel, browserChannelToI18nId, ChannelInfo, isTargetChannelMoreStable, RegulatoryInfo, TPMFirmwareUpdateStatusChangedEvent, UpdateStatus, UpdateStatusChangedEvent, VersionInfo} from '../../about_page/about_page_browser_proxy.js';
+
 Polymer({
+  _template: html`{__html_template__}`,
   is: 'edit-hostname-dialog',
 
   /** @private */
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/os_about_page.html b/chrome/browser/resources/settings/chromeos/os_about_page/os_about_page.html
index ea71d9f..e29a1478 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/os_about_page.html
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/os_about_page.html
@@ -1,260 +1,224 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
+<style include="settings-shared settings-page-styles">
+  :host {
+    --about-page-image-space: 10px;
+  }
 
-<link rel="import" href="chrome://resources/html/parse_html_subset.html">
-<link rel="import" href="../../about_page/about_page_browser_proxy.html">
-<link rel="import" href="../../i18n_setup.html">
-<link rel="import" href="../../icons.html">
-<link rel="import" href="../../lifetime_browser_proxy.html">
-<link rel="import" href="../../prefs/prefs.html">
-<link rel="import" href="../os_settings_page/main_page_behavior.html">
-<link rel="import" href="../../settings_page/settings_animated_pages.html">
-<link rel="import" href="../../settings_page/settings_section.html">
-<link rel="import" href="../../settings_page/settings_subpage.html">
-<link rel="import" href="../../settings_page_css.html">
-<link rel="import" href="../../settings_shared_css.html">
-<link rel="import" href="../deep_linking_behavior.html">
-<link rel="import" href="../metrics_recorder.html">
-<link rel="import" href="../os_icons.html">
-<link rel="import" href="../os_route.html">
-<link rel="import" href="../../router.html">
-<link rel="import" href="../os_reset_page/os_powerwash_dialog.html">
-<link rel="import" href="../localized_link/localized_link.html">
-<link rel="import" href="detailed_build_info.html">
-<link rel="import" href="update_warning_dialog.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_button/cr_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_link_row/cr_link_row.html">
-<link rel="import" href="chrome://resources/cr_elements/icons.html">
-<link rel="import" href="chrome://resources/html/assert.html">
-<link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html">
+  .info-section {
+    margin-bottom: 12px;
+  }
 
-<dom-module id="os-settings-about-page">
-  <template>
-    <style include="settings-shared settings-page-styles">
-      :host {
-        --about-page-image-space: 10px;
-      }
+  .padded {
+    padding-bottom: 10px;
+    padding-top: 10px;
+  }
 
-      .info-section {
-        margin-bottom: 12px;
-      }
+  .product-title {
+    font-size: 153.85%;  /* 20px / 13px */
+    font-weight: 400;
+    margin-bottom: auto;
+    margin-top: auto;
+  }
 
-      .padded {
-        padding-bottom: 10px;
-        padding-top: 10px;
-      }
+  img {
+    margin-inline-end: var(--about-page-image-space);
+  }
 
-      .product-title {
-        font-size: 153.85%;  /* 20px / 13px */
-        font-weight: 400;
-        margin-bottom: auto;
-        margin-top: auto;
-      }
+  .icon-container {
+    margin-inline-end: var(--about-page-image-space);
+    min-width: 32px;  /* The width of the product-logo img. */
+    text-align: center;
+  }
 
-      img {
-        margin-inline-end: var(--about-page-image-space);
-      }
+  /* TODO(crbug.com/986596): Don't use browser icons here. Fork them. */
+  iron-icon[icon='settings:check-circle'] {
+    fill: var(--cros-icon-color-prominent);
+  }
 
-      .icon-container {
-        margin-inline-end: var(--about-page-image-space);
-        min-width: 32px;  /* The width of the product-logo img. */
-        text-align: center;
-      }
+  iron-icon[icon='cr:error-outline'] {
+    fill: var(--cros-text-color-alert);
+  }
 
-      /* TODO(crbug.com/986596): Don't use browser icons here. Fork them. */
-      iron-icon[icon='settings:check-circle'] {
-        fill: var(--cros-icon-color-prominent);
-      }
+  .settings-box .start {
+    overflow-x: auto;
+  }
 
-      iron-icon[icon='cr:error-outline'] {
-        fill: var(--cros-text-color-alert);
-      }
+  cr-button {
+    white-space: nowrap;
+  }
 
-      .settings-box .start {
-        overflow-x: auto;
-      }
-
-      cr-button {
-        white-space: nowrap;
-      }
-
-      #regulatoryInfo img {
-        width: 330px;
-      }
-    </style>
-    <settings-section page-title="$i18n{aboutOsPageTitle}" section="about">
-      <settings-animated-pages id="pages" section="about"
-          focus-config="[[focusConfig_]]">
-        <div route-path="default">
-          <div class="settings-box two-line first">
-            <img id="product-logo" on-click="onProductLogoClick_"
-                srcset="chrome://theme/current-channel-logo@1x 1x,
-                        chrome://theme/current-channel-logo@2x 2x"
-                alt="$i18n{aboutProductLogoAlt}"
-                role="presentation">
-            <h1 class="product-title">$i18n{aboutOsProductTitle}</h1>
-          </div>
-          <div class="settings-box two-line">
-            <!-- Set the icon from the iconset (when it's obsolete/EOL and
-              when update is done) or set the src (when it's updating). -->
-            <div class="icon-container"
-                hidden="[[!shouldShowIcons_(showUpdateStatus_)]]">
-              <!-- TODO(crbug.com/986596): Don't use browser icons here. Fork them. -->
-              <iron-icon
-                  icon$="[[getUpdateStatusIcon_(
-                      hasEndOfLife_, currentUpdateStatusEvent_)]]"
-                  src="[[getThrobberSrcIfUpdating_(
-                      hasEndOfLife_, currentUpdateStatusEvent_)]]">
-              </iron-icon>
-            </div>
-            <div class="start padded">
-              <div id="updateStatusMessage" hidden="[[!showUpdateStatus_]]">
-                <div
-                    inner-h-t-m-l="[[getUpdateStatusMessage_(
-                        currentUpdateStatusEvent_, targetChannel_)]]"></div>
-                <a hidden$="[[!shouldShowLearnMoreLink_(
-                    currentUpdateStatusEvent_)]]" target="_blank"
-                    href="https://support.google.com/chrome?p=update_error">
-                  $i18n{learnMore}
-                </a>
-              </div>
-              <settings-localized-link
-                  id="endOfLifeMessageContainer" hidden="[[!hasEndOfLife_]]"
-                  localized-string="$i18n{endOfLifeMessage}">
-              </settings-localized-link>
-              <div class="secondary">$i18n{aboutBrowserVersion}</div>
-            </div>
-            <div class="separator" hidden="[[!showButtonContainer_]]"></div>
-            <span id="buttonContainer" hidden="[[!showButtonContainer_]]">
-              <cr-button id="relaunch" hidden$="[[!showRelaunch_]]"
-                         on-click="onRelaunchClick_">
-                  [[getRelaunchButtonText_(
-                                  currentUpdateStatusEvent_)]]
-              </cr-button>
-              <cr-button id="checkForUpdates" hidden="[[!showCheckUpdates_]]"
-                  on-click="onCheckUpdatesClick_"
-                  deep-link-focus-id$="[[Setting.kCheckForOsUpdate]]">
-                $i18n{aboutCheckForUpdates}
-              </cr-button>
-            </span>
-          </div>
-          <cr-link-row
-              id="aboutTPMFirmwareUpdate"
-              class="hr"
-              hidden$="[[!showTPMFirmwareUpdateLineItem_]]"
-              label="$i18n{aboutTPMFirmwareUpdateTitle}"
-              on-click="onTPMFirmwareUpdateClick_">
-            <div slot="sub-label">
-              $i18n{aboutTPMFirmwareUpdateDescription}
-              <a href="$i18n{aboutTPMFirmwareUpdateLearnMoreURL}"
-                  target="_blank" on-click="onLearnMoreClick_">
-                $i18n{learnMore}
-              </a>
-            </div>
-          </cr-link-row>
-          <template is="dom-if" if="[[hasInternetConnection_]]">
-            <cr-link-row class="hr" id="releaseNotesOnline"
-                on-click="onReleaseNotesTap_"
-                label="$i18n{aboutShowReleaseNotes}" external
-                deep-link-focus-id$="[[Setting.kSeeWhatsNew]]">
-            </cr-link-row>
-          </template>
-          <template is="dom-if" if="[[!hasInternetConnection_]]">
-            <cr-link-row class="hr" id="releaseNotesOffline"
-                on-click="onReleaseNotesTap_"
-                label="$i18n{aboutShowReleaseNotes}"
-                title="$i18n{aboutReleaseNotesOffline}" external
-                deep-link-focus-id$="[[Setting.kSeeWhatsNew]]">
-            </cr-link-row>
-          </template>
-          <cr-link-row class="hr" id="help" on-click="onHelpClick_"
-              label="$i18n{aboutGetHelpUsingChromeOs}" external
-              deep-link-focus-id$="[[Setting.kGetHelpWithChromeOs]]">
-          </cr-link-row>
-<if expr="_google_chrome">
-          <cr-link-row class="hr" id="reportIssue"
-              on-click="onReportIssueClick_"
-              hidden="[[!prefs.feedback_allowed.value]]"
-              label="$i18n{aboutReportAnIssue}" external
-              deep-link-focus-id$="[[Setting.kReportAnIssue]]">
-          </cr-link-row>
-</if>
-          <cr-link-row class="hr" id="diagnostics"
-              on-click="onDiagnosticsClick_"
-              hidden$="[[!showDiagnosticsApp_]]"
-              label="$i18n{aboutDiagnostics}" external
-              deep-link-focus-id$="[[Setting.kDiagnostics]]">
-          </cr-link-row>
-          <cr-link-row class="hr" id="detailed-build-info-trigger"
-              on-click="onDetailedBuildInfoClick_"
-              label="$i18n{aboutDetailedBuildInfo}"
-              role-description="$i18n{subpageArrowRoleDescription}">
-          </cr-link-row>
-          <cr-link-row class="hr" on-click="onManagementPageClick_"
-              start-icon="cr:domain" label="$i18n{managementPage}"
-              hidden$="[[!isManaged_]]" external>
-          </cr-link-row>
+  #regulatoryInfo img {
+    width: 330px;
+  }
+</style>
+<settings-section page-title="$i18n{aboutOsPageTitle}" section="about">
+  <settings-animated-pages id="pages" section="about"
+      focus-config="[[focusConfig_]]">
+    <div route-path="default">
+      <div class="settings-box two-line first">
+        <img id="product-logo" on-click="onProductLogoClick_"
+            srcset="chrome://theme/current-channel-logo@1x 1x,
+                    chrome://theme/current-channel-logo@2x 2x"
+            alt="$i18n{aboutProductLogoAlt}"
+            role="presentation">
+        <h1 class="product-title">$i18n{aboutOsProductTitle}</h1>
+      </div>
+      <div class="settings-box two-line">
+        <!-- Set the icon from the iconset (when it's obsolete/EOL and
+          when update is done) or set the src (when it's updating). -->
+        <div class="icon-container"
+            hidden="[[!shouldShowIcons_(showUpdateStatus_)]]">
+          <!-- TODO(crbug.com/986596): Don't use browser icons here. Fork
+            them. -->
+          <iron-icon
+              icon$="[[getUpdateStatusIcon_(
+                  hasEndOfLife_, currentUpdateStatusEvent_)]]"
+              src="[[getThrobberSrcIfUpdating_(
+                  hasEndOfLife_, currentUpdateStatusEvent_)]]">
+          </iron-icon>
         </div>
-        <template is="dom-if" route-path="/help/details">
-          <settings-subpage page-title="$i18n{aboutDetailedBuildInfo}">
-            <settings-detailed-build-info
-                eol-message-with-month-and-year=
-                    "[[eolMessageWithMonthAndYear_]]">
-            </settings-detailed-build-info>
-          </settings-subpage>
-        </template>
-      </settings-animated-pages>
-    </settings-section>
-
-    <settings-section>
-      <div class="settings-box padded block first">
-        <div class="info-section">
-          <div class="secondary">$i18n{aboutOsProductTitle}</div>
-          <div class="secondary">$i18n{aboutProductCopyright}</div>
-        </div>
-
-        <div class="info-section">
-          <div class="secondary">$i18nRaw{aboutProductLicense}</div>
-          <div class="secondary"
-              inner-h-t-m-l="[[getAboutProductOsLicense_(
-                  showCrostiniLicense_)]]">
+        <div class="start padded">
+          <div id="updateStatusMessage" hidden="[[!showUpdateStatus_]]">
+            <div
+                inner-h-t-m-l="[[getUpdateStatusMessage_(
+                    currentUpdateStatusEvent_, targetChannel_)]]"></div>
+            <a hidden$="[[!shouldShowLearnMoreLink_(
+                currentUpdateStatusEvent_)]]" target="_blank"
+                href="https://support.google.com/chrome?p=update_error">
+              $i18n{learnMore}
+            </a>
           </div>
+          <settings-localized-link
+              id="endOfLifeMessageContainer" hidden="[[!hasEndOfLife_]]"
+              localized-string="$i18n{endOfLifeMessage}">
+          </settings-localized-link>
+          <div class="secondary">$i18n{aboutBrowserVersion}</div>
         </div>
-<if expr="_google_chrome">
-        <div class="secondary">
-          <a id="aboutProductTos" href="$i18n{aboutTermsURL}" target="_blank"
-              deep-link-focus-id$="[[Setting.kTermsOfService]]">
-            $i18n{aboutProductTos}
+        <div class="separator" hidden="[[!showButtonContainer_]]"></div>
+        <span id="buttonContainer" hidden="[[!showButtonContainer_]]">
+          <cr-button id="relaunch" hidden$="[[!showRelaunch_]]"
+                     on-click="onRelaunchClick_">
+              [[getRelaunchButtonText_(
+                              currentUpdateStatusEvent_)]]
+          </cr-button>
+          <cr-button id="checkForUpdates" hidden="[[!showCheckUpdates_]]"
+              on-click="onCheckUpdatesClick_"
+              deep-link-focus-id$="[[Setting.kCheckForOsUpdate]]">
+            $i18n{aboutCheckForUpdates}
+          </cr-button>
+        </span>
+      </div>
+      <cr-link-row
+          id="aboutTPMFirmwareUpdate"
+          class="hr"
+          hidden$="[[!showTPMFirmwareUpdateLineItem_]]"
+          label="$i18n{aboutTPMFirmwareUpdateTitle}"
+          on-click="onTPMFirmwareUpdateClick_">
+        <div slot="sub-label">
+          $i18n{aboutTPMFirmwareUpdateDescription}
+          <a href="$i18n{aboutTPMFirmwareUpdateLearnMoreURL}"
+              target="_blank" on-click="onLearnMoreClick_">
+            $i18n{learnMore}
           </a>
         </div>
-</if>
-      </div>
-      <div class="settings-box padded block" id="regulatoryInfo"
-          hidden$="[[!shouldShowRegulatoryOrSafetyInfo_(regulatoryInfo_)]]">
+      </cr-link-row>
+      <template is="dom-if" if="[[hasInternetConnection_]]">
+        <cr-link-row class="hr" id="releaseNotesOnline"
+            on-click="onReleaseNotesTap_"
+            label="$i18n{aboutShowReleaseNotes}" external
+            deep-link-focus-id$="[[Setting.kSeeWhatsNew]]">
+        </cr-link-row>
+      </template>
+      <template is="dom-if" if="[[!hasInternetConnection_]]">
+        <cr-link-row class="hr" id="releaseNotesOffline"
+            on-click="onReleaseNotesTap_"
+            label="$i18n{aboutShowReleaseNotes}"
+            title="$i18n{aboutReleaseNotesOffline}" external
+            deep-link-focus-id$="[[Setting.kSeeWhatsNew]]">
+        </cr-link-row>
+      </template>
+      <cr-link-row class="hr" id="help" on-click="onHelpClick_"
+          label="$i18n{aboutGetHelpUsingChromeOs}" external
+          deep-link-focus-id$="[[Setting.kGetHelpWithChromeOs]]">
+      </cr-link-row>
 <if expr="_google_chrome">
-        <div class="secondary" hidden$="[[!shouldShowSafetyInfo_()]]">
-          <a target="_blank" href="$i18n{aboutProductSafetyURL}">
-            $i18nRaw{aboutProductSafety}
-          </a>
-        </div>
+      <cr-link-row class="hr" id="reportIssue"
+          on-click="onReportIssueClick_"
+          hidden="[[!prefs.feedback_allowed.value]]"
+          label="$i18n{aboutReportAnIssue}" external
+          deep-link-focus-id$="[[Setting.kReportAnIssue]]">
+      </cr-link-row>
 </if>
-        <img src="[[regulatoryInfo_.url]]" alt="[[regulatoryInfo_.text]]"
-            hidden$="[[!shouldShowRegulatoryInfo_(regulatoryInfo_)]]">
+      <cr-link-row class="hr" id="diagnostics"
+          on-click="onDiagnosticsClick_"
+          hidden$="[[!showDiagnosticsApp_]]"
+          label="$i18n{aboutDiagnostics}" external
+          deep-link-focus-id$="[[Setting.kDiagnostics]]">
+      </cr-link-row>
+      <cr-link-row class="hr" id="detailed-build-info-trigger"
+          on-click="onDetailedBuildInfoClick_"
+          label="$i18n{aboutDetailedBuildInfo}"
+          role-description="$i18n{subpageArrowRoleDescription}">
+      </cr-link-row>
+      <cr-link-row class="hr" on-click="onManagementPageClick_"
+          start-icon="cr:domain" label="$i18n{managementPage}"
+          hidden$="[[!isManaged_]]" external>
+      </cr-link-row>
+    </div>
+    <template is="dom-if" route-path="/help/details">
+      <settings-subpage page-title="$i18n{aboutDetailedBuildInfo}">
+        <settings-detailed-build-info
+            eol-message-with-month-and-year=
+                "[[eolMessageWithMonthAndYear_]]">
+        </settings-detailed-build-info>
+      </settings-subpage>
+    </template>
+  </settings-animated-pages>
+</settings-section>
+
+<settings-section>
+  <div class="settings-box padded block first">
+    <div class="info-section">
+      <div class="secondary">$i18n{aboutOsProductTitle}</div>
+      <div class="secondary">$i18n{aboutProductCopyright}</div>
+    </div>
+
+    <div class="info-section">
+      <div class="secondary">$i18nRaw{aboutProductLicense}</div>
+      <div class="secondary"
+          inner-h-t-m-l="[[getAboutProductOsLicense_(
+              showCrostiniLicense_)]]">
       </div>
-    </settings-section>
-    <template is="dom-if" if="[[showUpdateWarningDialog_]]" restamp>
-      <settings-update-warning-dialog update-info="[[updateInfo_]]"
-          on-close="onUpdateWarningDialogClose_">
-      </settings-update-warning-dialog>
-    </template>
-    <template is="dom-if" if="[[showTPMFirmwareUpdateDialog_]]"
-        restamp>
-      <os-settings-powerwash-dialog request-tpm-firmware-update
-          on-close="onPowerwashDialogClose_">
-      </os-settings-powerwash-dialog>
-    </template>
-  </template>
-  <script src="os_about_page.js"></script>
-</dom-module>
+    </div>
+<if expr="_google_chrome">
+    <div class="secondary">
+      <a id="aboutProductTos" href="$i18n{aboutTermsURL}" target="_blank"
+          deep-link-focus-id$="[[Setting.kTermsOfService]]">
+        $i18n{aboutProductTos}
+      </a>
+    </div>
+</if>
+  </div>
+  <div class="settings-box padded block" id="regulatoryInfo"
+      hidden$="[[!shouldShowRegulatoryOrSafetyInfo_(regulatoryInfo_)]]">
+<if expr="_google_chrome">
+    <div class="secondary" hidden$="[[!shouldShowSafetyInfo_()]]">
+      <a target="_blank" href="$i18n{aboutProductSafetyURL}">
+        $i18nRaw{aboutProductSafety}
+      </a>
+    </div>
+</if>
+    <img src="[[regulatoryInfo_.url]]" alt="[[regulatoryInfo_.text]]"
+        hidden$="[[!shouldShowRegulatoryInfo_(regulatoryInfo_)]]">
+  </div>
+</settings-section>
+<template is="dom-if" if="[[showUpdateWarningDialog_]]" restamp>
+  <settings-update-warning-dialog update-info="[[updateInfo_]]"
+      on-close="onUpdateWarningDialogClose_">
+  </settings-update-warning-dialog>
+</template>
+<template is="dom-if" if="[[showTPMFirmwareUpdateDialog_]]"
+    restamp>
+  <os-settings-powerwash-dialog request-tpm-firmware-update
+      on-close="onPowerwashDialogClose_">
+  </os-settings-powerwash-dialog>
+</template>
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/os_about_page.js b/chrome/browser/resources/settings/chromeos/os_about_page/os_about_page.js
index 3363fd3..a20cf221 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/os_about_page.js
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/os_about_page.js
@@ -7,14 +7,48 @@
  * information.
  */
 
+import '../../icons.js';
+import '../../prefs/prefs.js';
+import '../../settings_page/settings_animated_pages.js';
+import '../../settings_page/settings_section.js';
+import '../../settings_page/settings_subpage.js';
+import '../../settings_page_css.js';
+import '../../settings_shared_css.js';
+import '../os_icons.m.js';
+import '../os_reset_page/os_powerwash_dialog.js';
+import '../localized_link/localized_link.js';
+import './detailed_build_info.js';
+import './update_warning_dialog.js';
+import '//resources/cr_elements/cr_button/cr_button.m.js';
+import '//resources/cr_elements/cr_icon_button/cr_icon_button.m.js';
+import '//resources/cr_elements/cr_link_row/cr_link_row.js';
+import '//resources/cr_elements/icons.m.js';
+import '//resources/polymer/v3_0/iron-icon/iron-icon.js';
+
+import {assert, assertNotReached} from '//resources/js/assert.m.js';
+import {I18nBehavior} from '//resources/js/i18n_behavior.m.js';
+import {parseHtmlSubset} from '//resources/js/parse_html_subset.m.js';
+import {WebUIListenerBehavior} from '//resources/js/web_ui_listener_behavior.m.js';
+import {afterNextRender, flush, html, Polymer, TemplateInstanceBase, Templatizer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import {AboutPageBrowserProxy, AboutPageBrowserProxyImpl, AboutPageUpdateInfo, BrowserChannel, browserChannelToI18nId, ChannelInfo, isTargetChannelMoreStable, RegulatoryInfo, TPMFirmwareUpdateStatusChangedEvent, UpdateStatus, UpdateStatusChangedEvent, VersionInfo} from '../../about_page/about_page_browser_proxy.js';
+import {loadTimeData} from '../../i18n_setup.js';
+import {LifetimeBrowserProxy, LifetimeBrowserProxyImpl} from '../../lifetime_browser_proxy.js';
+import {Route, RouteObserverBehavior, Router} from '../../router.js';
+import {DeepLinkingBehavior} from '../deep_linking_behavior.m.js';
+import {recordClick, recordNavigation, recordPageBlur, recordPageFocus, recordSearch, recordSettingChange, setUserActionRecorderForTesting} from '../metrics_recorder.m.js';
+import {routes} from '../os_route.m.js';
+import {MainPageBehavior} from '../os_settings_page/main_page_behavior.m.js';
+
 Polymer({
+  _template: html`{__html_template__}`,
   is: 'os-settings-about-page',
 
   behaviors: [
     DeepLinkingBehavior,
     WebUIListenerBehavior,
-    settings.MainPageBehavior,
-    settings.RouteObserverBehavior,
+    MainPageBehavior,
+    RouteObserverBehavior,
     I18nBehavior,
   ],
 
@@ -127,10 +161,9 @@
       type: Object,
       value() {
         const map = new Map();
-        if (settings.routes.DETAILED_BUILD_INFO) {
+        if (routes.DETAILED_BUILD_INFO) {
           map.set(
-              settings.routes.DETAILED_BUILD_INFO.path,
-              '#detailed-build-info-trigger');
+              routes.DETAILED_BUILD_INFO.path, '#detailed-build-info-trigger');
         }
         return map;
       },
@@ -190,19 +223,18 @@
     'handleCrostiniEnabledChanged_(prefs.crostini.enabled.value)',
   ],
 
-  /** @private {?settings.AboutPageBrowserProxy} */
+  /** @private {?AboutPageBrowserProxy} */
   aboutBrowserProxy_: null,
 
-  /** @private {?settings.LifetimeBrowserProxy} */
+  /** @private {?LifetimeBrowserProxy} */
   lifetimeBrowserProxy_: null,
 
   /** @override */
   attached() {
-    this.aboutBrowserProxy_ = settings.AboutPageBrowserProxyImpl.getInstance();
+    this.aboutBrowserProxy_ = AboutPageBrowserProxyImpl.getInstance();
     this.aboutBrowserProxy_.pageReady();
 
-    this.lifetimeBrowserProxy_ =
-        settings.LifetimeBrowserProxyImpl.getInstance();
+    this.lifetimeBrowserProxy_ = LifetimeBrowserProxyImpl.getInstance();
 
     this.addEventListener('target-channel-changed', e => {
       this.targetChannel_ = e.detail;
@@ -228,22 +260,21 @@
       this.hasInternetConnection_ = result;
     });
 
-    if (settings.Router.getInstance().getQueryParameters().get(
-            'checkForUpdate') === 'true') {
+    if (Router.getInstance().getQueryParameters().get('checkForUpdate') ===
+        'true') {
       this.onCheckUpdatesClick_();
     }
   },
 
   /**
-   * @param {!settings.Route} newRoute
-   * @param {settings.Route} oldRoute
+   * @param {!Route} newRoute
+   * @param {Route} oldRoute
    */
   currentRouteChanged(newRoute, oldRoute) {
-    settings.MainPageBehavior.currentRouteChanged.call(
-        this, newRoute, oldRoute);
+    MainPageBehavior.currentRouteChanged.call(this, newRoute, oldRoute);
 
     // Does not apply to this page.
-    if (newRoute !== settings.routes.ABOUT_ABOUT) {
+    if (newRoute !== routes.ABOUT_ABOUT) {
       return;
     }
 
@@ -259,9 +290,9 @@
     });
   },
 
-  // Override settings.MainPageBehavior method.
+  // Override MainPageBehavior method.
   containsRoute(route) {
-    return !route || settings.routes.ABOUT.contains(route);
+    return !route || routes.ABOUT.contains(route);
   },
 
   /** @private */
@@ -313,12 +344,12 @@
   onDiagnosticsClick_() {
     assert(this.showDiagnosticsApp_);
     this.aboutBrowserProxy_.openDiagnostics();
-    settings.recordSettingChange(chromeos.settings.mojom.Setting.kDiagnostics);
+    recordSettingChange(chromeos.settings.mojom.Setting.kDiagnostics);
   },
 
   /** @private */
   onRelaunchClick_() {
-    settings.recordSettingChange();
+    recordSettingChange();
     this.lifetimeBrowserProxy_.relaunch();
   },
 
@@ -409,8 +440,8 @@
         if (this.currentChannel_ !== this.targetChannel_) {
           return this.i18nAdvanced('aboutUpgradeUpdatingChannelSwitch', {
             substitutions: [
-              this.i18nAdvanced(settings.browserChannelToI18nId(
-                  this.targetChannel_, this.isLts_)),
+              this.i18nAdvanced(
+                  browserChannelToI18nId(this.targetChannel_, this.isLts_)),
               progressPercent
             ]
           });
@@ -524,8 +555,7 @@
 
   /** @private */
   onDetailedBuildInfoClick_() {
-    settings.Router.getInstance().navigateTo(
-        settings.routes.DETAILED_BUILD_INFO);
+    Router.getInstance().navigateTo(routes.DETAILED_BUILD_INFO);
   },
 
   /**
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/update_warning_dialog.html b/chrome/browser/resources/settings/chromeos/os_about_page/update_warning_dialog.html
index 3080573a..bcb0f7d9 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/update_warning_dialog.html
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/update_warning_dialog.html
@@ -1,28 +1,15 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
-
-<link rel="import" href="chrome://resources/cr_elements/cr_button/cr_button.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html">
-<link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="../../about_page/about_page_browser_proxy.html">
-<link rel="import" href="../../settings_shared_css.html">
-
-<dom-module id="settings-update-warning-dialog">
-  <template>
-    <style include="settings-shared"></style>
-    <cr-dialog id="dialog" close-text="$i18n{close}">
-      <div slot="title">$i18n{aboutUpdateWarningTitle}</div>
-      <div slot="body">
-        <div id="update-warning-message"></div>
-      </div>
-      <div slot="button-container">
-        <cr-button id="cancel" class="cancel-button"
-            on-click="onCancelTap_">$i18n{cancel}</cr-button>
-        <cr-button id="continue" class="action-button"
-            on-click="onContinueTap_">
-          $i18n{continue}
-        </cr-button>
-      </div>
-    </cr-dialog>
-  </template>
-  <script src="update_warning_dialog.js"></script>
-</dom-module>
+<style include="settings-shared"></style>
+<cr-dialog id="dialog" close-text="$i18n{close}">
+  <div slot="title">$i18n{aboutUpdateWarningTitle}</div>
+  <div slot="body">
+    <div id="update-warning-message"></div>
+  </div>
+  <div slot="button-container">
+    <cr-button id="cancel" class="cancel-button"
+        on-click="onCancelTap_">$i18n{cancel}</cr-button>
+    <cr-button id="continue" class="action-button"
+        on-click="onContinueTap_">
+      $i18n{continue}
+    </cr-button>
+  </div>
+</cr-dialog>
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/update_warning_dialog.js b/chrome/browser/resources/settings/chromeos/os_about_page/update_warning_dialog.js
index e679770..e0e90a3 100644
--- a/chrome/browser/resources/settings/chromeos/os_about_page/update_warning_dialog.js
+++ b/chrome/browser/resources/settings/chromeos/os_about_page/update_warning_dialog.js
@@ -7,7 +7,17 @@
  * user about update over mobile data. By clicking 'Continue', the user
  * agrees to download update using mobile data.
  */
+import '//resources/cr_elements/cr_button/cr_button.m.js';
+import '//resources/cr_elements/cr_dialog/cr_dialog.m.js';
+import '../../settings_shared_css.js';
+
+import {I18nBehavior} from '//resources/js/i18n_behavior.m.js';
+import {afterNextRender, flush, html, Polymer, TemplateInstanceBase, Templatizer} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+
+import {AboutPageBrowserProxy, AboutPageBrowserProxyImpl, AboutPageUpdateInfo, BrowserChannel, browserChannelToI18nId, ChannelInfo, isTargetChannelMoreStable, RegulatoryInfo, TPMFirmwareUpdateStatusChangedEvent, UpdateStatus, UpdateStatusChangedEvent, VersionInfo} from '../../about_page/about_page_browser_proxy.js';
+
 Polymer({
+  _template: html`{__html_template__}`,
   is: 'settings-update-warning-dialog',
 
   behaviors: [I18nBehavior],
@@ -20,12 +30,12 @@
     },
   },
 
-  /** @private {?settings.AboutPageBrowserProxy} */
+  /** @private {?AboutPageBrowserProxy} */
   browserProxy_: null,
 
   /** @override */
   ready() {
-    this.browserProxy_ = settings.AboutPageBrowserProxyImpl.getInstance();
+    this.browserProxy_ = AboutPageBrowserProxyImpl.getInstance();
   },
 
   /** @override */
diff --git a/chrome/browser/resources/settings/chromeos/os_settings.gni b/chrome/browser/resources/settings/chromeos/os_settings.gni
index 7366cba..814c999 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings.gni
+++ b/chrome/browser/resources/settings/chromeos/os_settings.gni
@@ -332,6 +332,12 @@
                                  "chrome/browser/resources/settings/chromeos/internet_page/tether_connection_dialog.html",
                                  "chrome/browser/resources/settings/chromeos/localized_link/localized_link.html",
                                  "chrome/browser/resources/settings/chromeos/on_startup_page/on_startup_page.html",
+                                 "chrome/browser/resources/settings/chromeos/os_about_page/channel_switcher_dialog.html",
+                                 "chrome/browser/resources/settings/chromeos/os_about_page/detailed_build_info.html",
+                                 "chrome/browser/resources/settings/chromeos/os_about_page/device_name_browser_proxy.html",
+                                 "chrome/browser/resources/settings/chromeos/os_about_page/edit_hostname_dialog.html",
+                                 "chrome/browser/resources/settings/chromeos/os_about_page/os_about_page.html",
+                                 "chrome/browser/resources/settings/chromeos/os_about_page/update_warning_dialog.html",
                                  "chrome/browser/resources/settings/chromeos/os_a11y_page/change_dictation_locale_dialog.html",
                                  "chrome/browser/resources/settings/chromeos/os_apps_page/app_notifications_page/app_notifications_subpage.html",
                                  "chrome/browser/resources/settings/chromeos/os_bluetooth_page/os_bluetooth_page.html",
diff --git a/chrome/browser/resources/settings/chromeos/os_settings.js b/chrome/browser/resources/settings/chromeos/os_settings.js
index 8bbeb4c..a4749294 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings.js
+++ b/chrome/browser/resources/settings/chromeos/os_settings.js
@@ -43,10 +43,10 @@
 import './personalization_page/dark_mode_subpage.m.js';
 import './personalization_page/personalization_page.m.js';
 import './os_a11y_page/change_dictation_locale_dialog.js';
-import './os_about_page/channel_switcher_dialog.m.js';
-import './os_about_page/detailed_build_info.m.js';
-import './os_about_page/os_about_page.m.js';
-import './os_about_page/update_warning_dialog.m.js';
+import './os_about_page/channel_switcher_dialog.js';
+import './os_about_page/detailed_build_info.js';
+import './os_about_page/os_about_page.js';
+import './os_about_page/update_warning_dialog.js';
 import './os_apps_page/android_apps_subpage.m.js';
 import './os_apps_page/app_notifications_page/app_notifications_subpage.js';
 import './os_apps_page/app_management_page/app_item.m.js';
@@ -121,7 +121,7 @@
 export {OsA11yPageBrowserProxy, OsA11yPageBrowserProxyImpl} from './os_a11y_page/os_a11y_page_browser_proxy.m.js';
 export {SwitchAccessSubpageBrowserProxy, SwitchAccessSubpageBrowserProxyImpl} from './os_a11y_page/switch_access_subpage_browser_proxy.m.js';
 export {TtsSubpageBrowserProxy, TtsSubpageBrowserProxyImpl} from './os_a11y_page/tts_subpage_browser_proxy.m.js';
-export {DeviceNameBrowserProxy, DeviceNameBrowserProxyImpl} from './os_about_page/device_name_browser_proxy.m.js';
+export {DeviceNameBrowserProxy, DeviceNameBrowserProxyImpl} from './os_about_page/device_name_browser_proxy.js';
 export {AndroidAppsBrowserProxyImpl} from './os_apps_page/android_apps_browser_proxy.m.js';
 export {addApp, changeApp, removeApp, updateSelectedAppId} from './os_apps_page/app_management_page/actions.m.js';
 export {BrowserProxy} from './os_apps_page/app_management_page/browser_proxy.m.js';
diff --git a/chrome/browser/resources/settings/i18n_setup.js b/chrome/browser/resources/settings/i18n_setup.ts
similarity index 100%
rename from chrome/browser/resources/settings/i18n_setup.js
rename to chrome/browser/resources/settings/i18n_setup.ts
diff --git a/chrome/browser/resources/settings/icons.js b/chrome/browser/resources/settings/icons.ts
similarity index 100%
rename from chrome/browser/resources/settings/icons.js
rename to chrome/browser/resources/settings/icons.ts
diff --git a/chrome/browser/resources/settings/lazy_load.js b/chrome/browser/resources/settings/lazy_load.ts
similarity index 100%
rename from chrome/browser/resources/settings/lazy_load.js
rename to chrome/browser/resources/settings/lazy_load.ts
diff --git a/chrome/browser/resources/settings/reset_page/BUILD.gn b/chrome/browser/resources/settings/reset_page/BUILD.gn
index ee5edd8..c1c9d9c 100644
--- a/chrome/browser/resources/settings/reset_page/BUILD.gn
+++ b/chrome/browser/resources/settings/reset_page/BUILD.gn
@@ -2,62 +2,12 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-import("//third_party/closure_compiler/compile_js.gni")
 import("//tools/polymer/html_to_js.gni")
-import("../settings.gni")
-
-js_type_check("closure_compile") {
-  is_polymer3 = true
-  closure_flags = settings_closure_flags
-  deps = [
-    ":reset_browser_proxy",
-    ":reset_page",
-    ":reset_profile_banner",
-    ":reset_profile_dialog",
-  ]
-}
-
-js_library("reset_browser_proxy") {
-  deps = [ "//ui/webui/resources/js:cr.m" ]
-}
-
-js_library("reset_page") {
-  deps = [
-    ":reset_profile_dialog",
-    "..:route",
-    "..:router",
-    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
-    "//ui/webui/resources/cr_elements/cr_lazy_render:cr_lazy_render.m",
-    "//ui/webui/resources/js:assert",
-    "//ui/webui/resources/js:load_time_data.m",
-  ]
-}
-
-js_library("reset_profile_banner") {
-  deps = [
-    ":reset_browser_proxy",
-    "..:route",
-    "..:router",
-    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
-    "//ui/webui/resources/cr_elements/cr_dialog:cr_dialog.m",
-  ]
-}
-
-js_library("reset_profile_dialog") {
-  deps = [
-    ":reset_browser_proxy",
-    "..:route",
-    "..:router",
-    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
-    "//ui/webui/resources/js:i18n_behavior.m",
-    "//ui/webui/resources/js:load_time_data.m",
-  ]
-}
 
 html_to_js("web_components") {
   js_files = [
-    "reset_page.js",
-    "reset_profile_banner.js",
-    "reset_profile_dialog.js",
+    "reset_page.ts",
+    "reset_profile_banner.ts",
+    "reset_profile_dialog.ts",
   ]
 }
diff --git a/chrome/browser/resources/settings/reset_page/reset_browser_proxy.js b/chrome/browser/resources/settings/reset_page/reset_browser_proxy.js
deleted file mode 100644
index 839f5514..0000000
--- a/chrome/browser/resources/settings/reset_page/reset_browser_proxy.js
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// clang-format off
-import {addSingletonGetter, sendWithPromise} from 'chrome://resources/js/cr.m.js';
-// clang-format on
-
-/** @interface */
-export class ResetBrowserProxy {
-  /**
-   * @param {boolean} sendSettings Whether the user gave consent to upload
-   *     broken settings to Google for analysis.
-   * @param {string} requestOrigin The origin of the reset request.
-   * @return {!Promise} A promise firing once resetting has completed.
-   */
-  performResetProfileSettings(sendSettings, requestOrigin) {}
-
-  /**
-   * A method to be called when the reset profile dialog is hidden.
-   */
-  onHideResetProfileDialog() {}
-
-  /**
-   * A method to be called when the reset profile banner is hidden.
-   */
-  onHideResetProfileBanner() {}
-
-  /**
-   * A method to be called when the reset profile dialog is shown.
-   */
-  onShowResetProfileDialog() {}
-
-  /**
-   * Shows the settings that are about to be reset and which will be reported
-   * to Google for analysis, in a new tab.
-   */
-  showReportedSettings() {}
-
-  /**
-   * Retrieves the triggered reset tool name.
-   * @return {!Promise<string>} A promise firing with the tool name, once it
-   *     has been retrieved.
-   */
-  getTriggeredResetToolName() {}
-}
-
-/**
- * @implements {ResetBrowserProxy}
- */
-export class ResetBrowserProxyImpl {
-  /** @override */
-  performResetProfileSettings(sendSettings, requestOrigin) {
-    return sendWithPromise(
-        'performResetProfileSettings', sendSettings, requestOrigin);
-  }
-
-  /** @override */
-  onHideResetProfileDialog() {
-    chrome.send('onHideResetProfileDialog');
-  }
-
-  /** @override */
-  onHideResetProfileBanner() {
-    chrome.send('onHideResetProfileBanner');
-  }
-
-  /** @override */
-  onShowResetProfileDialog() {
-    chrome.send('onShowResetProfileDialog');
-  }
-
-  /** @override */
-  showReportedSettings() {
-    sendWithPromise('getReportedSettings').then(function(settings) {
-      const output = settings.map(function(entry) {
-        return entry.key + ': ' + entry.value.replace(/\n/g, ', ');
-      });
-      const win = window.open('about:blank');
-      const div = win.document.createElement('div');
-      div.textContent = output.join('\n');
-      div.style.whiteSpace = 'pre';
-      win.document.body.appendChild(div);
-    });
-  }
-
-  /** @override */
-  getTriggeredResetToolName() {
-    return sendWithPromise('getTriggeredResetToolName');
-  }
-}
-
-addSingletonGetter(ResetBrowserProxyImpl);
diff --git a/chrome/browser/resources/settings/reset_page/reset_browser_proxy.ts b/chrome/browser/resources/settings/reset_page/reset_browser_proxy.ts
new file mode 100644
index 0000000..dd2c6d4
--- /dev/null
+++ b/chrome/browser/resources/settings/reset_page/reset_browser_proxy.ts
@@ -0,0 +1,92 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// clang-format off
+import {sendWithPromise} from 'chrome://resources/js/cr.m.js';
+// clang-format on
+
+export interface ResetBrowserProxy {
+  /**
+   * @param sendSettings Whether the user gave consent to upload broken settings
+   *     to Google for analysis.
+   * @param requestOrigin The origin of the reset request.
+   * @return A promise firing once resetting has completed.
+   */
+  performResetProfileSettings(sendSettings: boolean, requestOrigin: string):
+      Promise<void>;
+
+  /**
+   * A method to be called when the reset profile dialog is hidden.
+   */
+  onHideResetProfileDialog(): void;
+
+  /**
+   * A method to be called when the reset profile banner is hidden.
+   */
+  onHideResetProfileBanner(): void;
+
+  /**
+   * A method to be called when the reset profile dialog is shown.
+   */
+  onShowResetProfileDialog(): void;
+
+  /**
+   * Shows the settings that are about to be reset and which will be reported
+   * to Google for analysis, in a new tab.
+   */
+  showReportedSettings(): void;
+
+  /**
+   * Retrieves the triggered reset tool name.
+   * @return A promise firing with the tool name, once it has been retrieved.
+   */
+  getTriggeredResetToolName(): Promise<string>;
+}
+
+export class ResetBrowserProxyImpl implements ResetBrowserProxy {
+  performResetProfileSettings(sendSettings: boolean, requestOrigin: string) {
+    return sendWithPromise(
+        'performResetProfileSettings', sendSettings, requestOrigin);
+  }
+
+  onHideResetProfileDialog() {
+    chrome.send('onHideResetProfileDialog');
+  }
+
+  onHideResetProfileBanner() {
+    chrome.send('onHideResetProfileBanner');
+  }
+
+  onShowResetProfileDialog() {
+    chrome.send('onShowResetProfileDialog');
+  }
+
+  showReportedSettings() {
+    sendWithPromise('getReportedSettings')
+        .then(function(settings: Array<{key: string, value: string}>) {
+          const output = settings.map(function(entry) {
+            return entry.key + ': ' + entry.value.replace(/\n/g, ', ');
+          });
+          const win = window.open('about:blank')!;
+          const div = win.document.createElement('div');
+          div.textContent = output.join('\n');
+          div.style.whiteSpace = 'pre';
+          win.document.body.appendChild(div);
+        });
+  }
+
+  getTriggeredResetToolName(): Promise<string> {
+    return sendWithPromise('getTriggeredResetToolName');
+  }
+
+  static getInstance(): ResetBrowserProxy {
+    return instance || (instance = new ResetBrowserProxyImpl());
+  }
+
+  static setInstance(obj: ResetBrowserProxy) {
+    instance = obj;
+  }
+}
+
+let instance: ResetBrowserProxy|null = null;
diff --git a/chrome/browser/resources/settings/reset_page/reset_page.js b/chrome/browser/resources/settings/reset_page/reset_page.ts
similarity index 77%
rename from chrome/browser/resources/settings/reset_page/reset_page.js
rename to chrome/browser/resources/settings/reset_page/reset_page.ts
index 7f37e97a..ea1e826c 100644
--- a/chrome/browser/resources/settings/reset_page/reset_page.js
+++ b/chrome/browser/resources/settings/reset_page/reset_page.ts
@@ -10,12 +10,14 @@
 import 'chrome://resources/cr_elements/cr_lazy_render/cr_lazy_render.m.js';
 import '../settings_page/settings_animated_pages.js';
 import '../settings_shared_css.js';
+import './reset_profile_dialog.js';
 
 // <if expr="_google_chrome and is_win">
 import '../chrome_cleanup_page/chrome_cleanup_page.js';
 import '../incompatible_applications_page/incompatible_applications_page.js';
 // </if>
 
+import {CrLazyRenderElement} from 'chrome://resources/cr_elements/cr_lazy_render/cr_lazy_render.m.js';
 import {assert} from 'chrome://resources/js/assert.m.js';
 import {focusWithoutInk} from 'chrome://resources/js/cr/ui/focus_without_ink.m.js';
 import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
@@ -26,13 +28,15 @@
 
 import {SettingsResetProfileDialogElement} from './reset_profile_dialog.js';
 
+interface SettingsResetPageElement {
+  $: {
+    resetProfileDialog: CrLazyRenderElement<SettingsResetProfileDialogElement>,
+    resetProfile: HTMLElement,
+  };
+}
 
-/**
- * @constructor
- * @extends {PolymerElement}
- * @implements {RouteObserverMixinInterface}
- */
-const SettingsResetPageElementBase = RouteObserverMixin(PolymerElement);
+const SettingsResetPageElementBase = RouteObserverMixin(PolymerElement) as
+    {new (): PolymerElement & RouteObserverMixinInterface};
 
 /** @polymer */
 class SettingsResetPageElement extends SettingsResetPageElementBase {
@@ -65,43 +69,36 @@
    * RouteObserverMixin
    * @override
    */
-  currentRouteChanged(route) {
-    const lazyRender =
-        /** @type {!CrLazyRenderElement} */ (this.$.resetProfileDialog);
+  currentRouteChanged(route: Route) {
+    const lazyRender = this.$.resetProfileDialog;
 
     if (route === routes.TRIGGERED_RESET_DIALOG ||
         route === routes.RESET_DIALOG) {
-      /** @type {!SettingsResetProfileDialogElement} */ (lazyRender.get())
-          .show();
+      lazyRender.get().show();
     } else {
-      const dialog = /** @type {?SettingsResetProfileDialogElement} */ (
-          lazyRender.getIfExists());
+      const dialog = lazyRender.getIfExists();
       if (dialog) {
         dialog.cancel();
       }
     }
   }
 
-  /** @private */
-  onShowResetProfileDialog_() {
+  private onShowResetProfileDialog_() {
     Router.getInstance().navigateTo(
         routes.RESET_DIALOG, new URLSearchParams('origin=userclick'));
   }
 
-  /** @private */
-  onResetProfileDialogClose_() {
+  private onResetProfileDialogClose_() {
     Router.getInstance().navigateToPreviousRoute();
     focusWithoutInk(assert(this.$.resetProfile));
   }
 
   // <if expr="_google_chrome and is_win">
-  /** @private */
-  onChromeCleanupTap_() {
+  private onChromeCleanupTap_() {
     Router.getInstance().navigateTo(routes.CHROME_CLEANUP);
   }
 
-  /** @private */
-  onIncompatibleApplicationsTap_() {
+  private onIncompatibleApplicationsTap_() {
     Router.getInstance().navigateTo(routes.INCOMPATIBLE_APPLICATIONS);
   }
   // </if>
diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_banner.js b/chrome/browser/resources/settings/reset_page/reset_profile_banner.ts
similarity index 79%
rename from chrome/browser/resources/settings/reset_page/reset_profile_banner.js
rename to chrome/browser/resources/settings/reset_page/reset_profile_banner.ts
index bf91555..f786d9e 100644
--- a/chrome/browser/resources/settings/reset_page/reset_profile_banner.js
+++ b/chrome/browser/resources/settings/reset_page/reset_profile_banner.ts
@@ -10,6 +10,7 @@
 import 'chrome://resources/cr_elements/cr_button/cr_button.m.js';
 import 'chrome://resources/cr_elements/cr_dialog/cr_dialog.m.js';
 
+import {CrDialogElement} from 'chrome://resources/cr_elements/cr_dialog/cr_dialog.m.js';
 import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {routes} from '../route.js';
@@ -17,6 +18,12 @@
 
 import {ResetBrowserProxyImpl} from './reset_browser_proxy.js';
 
+interface SettingsResetProfileBannerElement {
+  $: {
+    dialog: CrDialogElement,
+  };
+}
+
 /** @polymer */
 class SettingsResetProfileBannerElement extends PolymerElement {
   static get is() {
@@ -27,25 +34,21 @@
     return html`{__html_template__}`;
   }
 
-  /** @override */
   connectedCallback() {
     super.connectedCallback();
 
-    /** @type {!CrDialogElement} */ (this.$.dialog).showModal();
+    this.$.dialog.showModal();
   }
 
-  /** @private */
-  onOkTap_() {
-    /** @type {!CrDialogElement} */ (this.$.dialog).cancel();
+  private onOkTap_() {
+    this.$.dialog.cancel();
   }
 
-  /** @private */
-  onCancel_() {
+  private onCancel_() {
     ResetBrowserProxyImpl.getInstance().onHideResetProfileBanner();
   }
 
-  /** @private */
-  onResetTap_() {
+  private onResetTap_() {
     this.$.dialog.close();
     Router.getInstance().navigateTo(routes.RESET_DIALOG);
   }
diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.js b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.ts
similarity index 80%
rename from chrome/browser/resources/settings/reset_page/reset_profile_dialog.js
rename to chrome/browser/resources/settings/reset_page/reset_profile_dialog.ts
index a9dd583..d32bff6 100644
--- a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.js
+++ b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.ts
@@ -18,7 +18,9 @@
 import 'chrome://resources/polymer/v3_0/paper-spinner/paper-spinner-lite.js';
 import '../settings_shared_css.js';
 
-import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/js/i18n_behavior.m.js';
+import {CrCheckboxElement} from 'chrome://resources/cr_elements/cr_checkbox/cr_checkbox.m.js';
+import {CrDialogElement} from 'chrome://resources/cr_elements/cr_dialog/cr_dialog.m.js';
+import {I18nBehavior} from 'chrome://resources/js/i18n_behavior.m.js';
 import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {loadTimeData} from '../i18n_setup.js';
@@ -27,14 +29,16 @@
 
 import {ResetBrowserProxy, ResetBrowserProxyImpl} from './reset_browser_proxy.js';
 
+export interface SettingsResetProfileDialogElement {
+  $: {
+    dialog: CrDialogElement,
+    sendSettings: CrCheckboxElement,
+  };
+}
 
-/**
- * @constructor
- * @extends {PolymerElement}
- * @implements {I18nBehaviorInterface}
- */
 const SettingsResetProfileDialogElementBase =
-    mixinBehaviors([I18nBehavior], PolymerElement);
+    mixinBehaviors([I18nBehavior], PolymerElement) as
+    {new (): PolymerElement & I18nBehavior};
 
 /** @polymer */
 export class SettingsResetProfileDialogElement extends
@@ -52,22 +56,18 @@
       // TODO(dpapad): Evaluate whether this needs to be synced across different
       // settings tabs.
 
-      /** @private */
       isTriggered_: {
         type: Boolean,
         value: false,
       },
 
-      /** @private */
       triggeredResetToolName_: {
         type: String,
         value: '',
       },
 
-      /** @private */
       resetRequestOrigin_: String,
 
-      /** @private */
       clearingInProgress_: {
         type: Boolean,
         value: false,
@@ -75,18 +75,14 @@
     };
   }
 
-  constructor() {
-    super();
+  private isTriggered_: boolean;
+  private triggeredResetToolName_: string;
+  private resetRequestOrigin_: string;
+  private clearingInProgress_: boolean;
+  private browserProxy_: ResetBrowserProxy =
+      ResetBrowserProxyImpl.getInstance();
 
-    /** @private {!ResetBrowserProxy} */
-    this.browserProxy_ = ResetBrowserProxyImpl.getInstance();
-  }
-
-  /**
-   * @private
-   * @return {string}
-   */
-  getExplanationText_() {
+  private getExplanationText_(): string {
     if (this.isTriggered_) {
       return loadTimeData.getStringF(
           'triggeredResetPageExplanation', this.triggeredResetToolName_);
@@ -94,6 +90,7 @@
 
     if (loadTimeData.getBoolean('showExplanationWithBulletPoints')) {
       return this.i18nAdvanced('resetPageExplanationBulletPoints', {
+        attrs: [],
         substitutions: [],
         tags: ['LINE_BREAKS', 'LINE_BREAK'],
       });
@@ -102,11 +99,7 @@
     return loadTimeData.getStringF('resetPageExplanation');
   }
 
-  /**
-   * @private
-   * @return {string}
-   */
-  getPageTitle_() {
+  private getPageTitle_(): string {
     if (this.isTriggered_) {
       return loadTimeData.getStringF(
           'triggeredResetPageTitle', this.triggeredResetToolName_);
@@ -114,7 +107,6 @@
     return loadTimeData.getStringF('resetDialogTitle');
   }
 
-  /** @override */
   ready() {
     super.ready();
 
@@ -122,12 +114,11 @@
       this.browserProxy_.onHideResetProfileDialog();
     });
 
-    this.shadowRoot.querySelector('cr-checkbox a')
-        .addEventListener('click', this.onShowReportedSettingsTap_.bind(this));
+    this.shadowRoot!.querySelector('cr-checkbox a')!.addEventListener(
+        'click', this.onShowReportedSettingsTap_.bind(this));
   }
 
-  /** @private */
-  showDialog_() {
+  private showDialog_() {
     if (!this.$.dialog.open) {
       this.$.dialog.showModal();
     }
@@ -155,8 +146,7 @@
     }
   }
 
-  /** @private */
-  onCancelTap_() {
+  private onCancelTap_() {
     this.cancel();
   }
 
@@ -166,8 +156,7 @@
     }
   }
 
-  /** @private */
-  onResetTap_() {
+  private onResetTap_() {
     this.clearingInProgress_ = true;
     this.browserProxy_
         .performResetProfileSettings(
@@ -184,10 +173,8 @@
 
   /**
    * Displays the settings that will be reported in a new tab.
-   * @param {!Event} e
-   * @private
    */
-  onShowReportedSettingsTap_(e) {
+  private onShowReportedSettingsTap_(e: Event) {
     this.browserProxy_.showReportedSettings();
     e.stopPropagation();
   }
diff --git a/chrome/browser/resources/settings/router.js b/chrome/browser/resources/settings/router.js
index da457105..c74c062 100644
--- a/chrome/browser/resources/settings/router.js
+++ b/chrome/browser/resources/settings/router.js
@@ -431,4 +431,10 @@
   }
 
   /** @interface */
-  export const RouteObserverMixinInterface = RouteObserverBehaviorInterface;
+  export class RouteObserverMixinInterface {
+    /**
+     * @param {!Route} newRoute
+     * @param {!Route=} opt_oldRoute
+     */
+    currentRouteChanged(newRoute, opt_oldRoute) {}
+  }
diff --git a/chrome/browser/resources/settings/setting_id_param_util.js b/chrome/browser/resources/settings/setting_id_param_util.ts
similarity index 85%
rename from chrome/browser/resources/settings/setting_id_param_util.js
rename to chrome/browser/resources/settings/setting_id_param_util.ts
index dc5930b..e4acc90 100644
--- a/chrome/browser/resources/settings/setting_id_param_util.js
+++ b/chrome/browser/resources/settings/setting_id_param_util.ts
@@ -10,15 +10,13 @@
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 import {Router} from './router.js';
 
-/** @type {string} */
-const SETTING_ID_URL_PARAM_NAME = 'settingId';
+const SETTING_ID_URL_PARAM_NAME: string = 'settingId';
 
 /**
  * Retrieves the setting ID saved in the URL's query parameter. Returns null if
  * setting ID is unavailable.
- * @return {?string}
  */
-export function getSettingIdParameter() {
+export function getSettingIdParameter(): string|null {
   // This flag must be enabled for the setting ID to be available.
   if (!loadTimeData.valueExists('isDeepLinkingEnabled') ||
       !loadTimeData.getBoolean('isDeepLinkingEnabled')) {
diff --git a/chrome/browser/resources/settings/settings.gni b/chrome/browser/resources/settings/settings.gni
index 9dcf9e0..e79fef2 100644
--- a/chrome/browser/resources/settings/settings.gni
+++ b/chrome/browser/resources/settings/settings.gni
@@ -8,4 +8,5 @@
     default_closure_args + [
       "js_module_root=../../chrome/browser/resources/settings/",
       "js_module_root=./gen/chrome/browser/resources/settings/",
+      "js_module_root=./gen/chrome/browser/resources/settings/tsc/",
     ]
diff --git a/chrome/browser/resources/settings/settings.js b/chrome/browser/resources/settings/settings.ts
similarity index 100%
rename from chrome/browser/resources/settings/settings.js
rename to chrome/browser/resources/settings/settings.ts
diff --git a/chrome/browser/resources/settings/settings_page_css.js b/chrome/browser/resources/settings/settings_page_css.ts
similarity index 100%
rename from chrome/browser/resources/settings/settings_page_css.js
rename to chrome/browser/resources/settings/settings_page_css.ts
diff --git a/chrome/browser/resources/settings/settings_shared_css.js b/chrome/browser/resources/settings/settings_shared_css.ts
similarity index 100%
rename from chrome/browser/resources/settings/settings_shared_css.js
rename to chrome/browser/resources/settings/settings_shared_css.ts
diff --git a/chrome/browser/resources/settings/settings_vars_css.js b/chrome/browser/resources/settings/settings_vars_css.ts
similarity index 100%
rename from chrome/browser/resources/settings/settings_vars_css.js
rename to chrome/browser/resources/settings/settings_vars_css.ts
diff --git a/chrome/browser/resources/tab_search/BUILD.gn b/chrome/browser/resources/tab_search/BUILD.gn
index 20a9d52..eb2bbc2 100644
--- a/chrome/browser/resources/tab_search/BUILD.gn
+++ b/chrome/browser/resources/tab_search/BUILD.gn
@@ -192,6 +192,7 @@
     ":title_item",
     "//third_party/polymer/v3_0/components-chromium/iron-a11y-announcer",
     "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
+    "//ui/webui/resources/cr_elements/cr_expand_button:cr_expand_button.m",
     "//ui/webui/resources/js:cr.m",
     "//ui/webui/resources/js:load_time_data.m",
     "//ui/webui/resources/js:util.m",
diff --git a/chrome/browser/resources/tab_search/app.html b/chrome/browser/resources/tab_search/app.html
index a0bbb21..3185012 100644
--- a/chrome/browser/resources/tab_search/app.html
+++ b/chrome/browser/resources/tab_search/app.html
@@ -43,13 +43,23 @@
     color: var(--cr-secondary-text-color);
     display: flex;
     font-size: var(--mwb-list-section-title-font-size);
+    font-weight: bolder;
     height: var(--mwb-list-section-title-height);
-    padding-inline-start: 8px;
+    padding-inline-end: 24px;
+    padding-inline-start: 16px;
     position: sticky;
     text-transform: uppercase;
     top: 0;
+    user-select: none;
     z-index: 1000;
   }
+
+  cr-expand-button {
+    --cr-expand-button-size: 28px;
+    --cr-expand-button-icon-size: 16px;
+    --cr-section-vertical-padding: 0;
+    flex-grow: 1;
+  }
 </style>
 <tab-search-search-field id="searchField" autofocus
     clear-label="$i18n{clearSearch}" label="$i18n{searchTabs}"
@@ -61,7 +71,16 @@
   <infinite-list id="tabsList" max-height="[[listMaxHeight_(availableHeight_)]]"
       items="[[filteredItems_]]">
     <template data-type="TitleItem">
-      <div class="list-section-title">[[item.title]]</div>
+      <div class="list-section-title">
+        <div>[[item.title]]</div>
+        <template is="dom-if" if="[[item.expandable]]">
+          <cr-expand-button aria-label="$i18n{recentlyClosedExpandA11yLabel}"
+              expand-icon="cr:arrow-drop-down" collapse-icon="cr:arrow-drop-up"
+              expanded="[[item.expanded]]"
+              on-expanded-changed="onTitleExpandChanged_" no-hover>
+          </cr-expand-button>
+        </template>
+      </div>
     </template>
     <template data-type="TabData" data-selectable>
       <tab-search-item id="[[item.tab.tabId]]" aria-label="[[ariaLabel_(item)]]"
diff --git a/chrome/browser/resources/tab_search/app.js b/chrome/browser/resources/tab_search/app.js
index fc655cdc..7ace13d 100644
--- a/chrome/browser/resources/tab_search/app.js
+++ b/chrome/browser/resources/tab_search/app.js
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+import 'chrome://resources/cr_elements/cr_expand_button/cr_expand_button.m.js';
 import 'chrome://resources/cr_elements/shared_vars_css.m.js';
 import 'chrome://resources/cr_elements/mwb_shared_style.js';
 import 'chrome://resources/cr_elements/mwb_shared_vars.js';
@@ -11,6 +12,7 @@
 import './tab_search_group_item.js';
 import './tab_search_item.js';
 import './tab_search_search_field.js';
+import './title_item.js';
 import './strings.m.js';
 
 import {assert} from 'chrome://resources/js/assert.m.js';
@@ -141,8 +143,9 @@
     this.openTabsTitleItem_ = new TitleItem(loadTimeData.getString('openTabs'));
 
     /** @private {!TitleItem} */
-    this.recentlyClosedTitleItem_ =
-        new TitleItem(loadTimeData.getString('recentlyClosed'));
+    this.recentlyClosedTitleItem_ = new TitleItem(
+        loadTimeData.getString('recentlyClosed'), true /*expandable*/,
+        true /*expanded*/);
   }
 
   /** @override */
@@ -233,8 +236,7 @@
 
   /** @private */
   onDocumentHidden_() {
-    this.$.tabsList.scrollTop = 0;
-    this.$.tabsList.selected = NO_SELECTION;
+    this.filteredItems_ = [];
 
     this.$.searchField.setValue('');
     this.$.searchField.getSearchInput().focus();
@@ -456,6 +458,8 @@
               loadTimeData.getString('a11yRecentlyClosedTabGroup');
           return tabGroupData;
         });
+    this.recentlyClosedTitleItem_.expanded =
+        profileData.recentlyClosedSectionExpanded;
 
     this.updateFilteredTabs_();
 
@@ -479,6 +483,25 @@
         /** @type {number} */ (e.model.index);
   }
 
+  /**
+   * @param {CustomEvent} e
+   * @private
+   */
+  onTitleExpandChanged_(e) {
+    // Instead of relying on two-way binding to update the `expanded` property,
+    // we update the value directly as the `expanded-changed` event takes place
+    // before a two way bound property update and we need the TitleItem
+    // instance to reflect the updated state prior to calling the
+    // updateFilteredTabs_ function.
+    const expanded = e.detail.value;
+    const titleItem = /** @type {TitleItem} */ (e.model.item);
+    titleItem.expanded = expanded;
+    this.apiProxy_.saveRecentlyClosedExpandedPref(expanded);
+
+    this.updateFilteredTabs_();
+    e.stopPropagation();
+  }
+
   /** @private */
   onSearchFocus_() {
     const tabsList = /** @type {!InfiniteList} */ (this.$.tabsList);
@@ -654,7 +677,11 @@
       [this.recentlyClosedTitleItem_, filteredRecentlyClosedItems],
     ].reduce((acc, [sectionTitle, sectionItems]) => {
       if (sectionItems.length !== 0) {
-        acc.push(sectionTitle, ...sectionItems);
+        acc.push(sectionTitle);
+        if (!sectionTitle.expandable ||
+            sectionTitle.expandable && sectionTitle.expanded) {
+          acc.push(...sectionItems);
+        }
       }
       return acc;
     }, []);
diff --git a/chrome/browser/resources/tab_search/tab_search_api_proxy.js b/chrome/browser/resources/tab_search/tab_search_api_proxy.js
index f22e7ff..5afe9093 100644
--- a/chrome/browser/resources/tab_search/tab_search_api_proxy.js
+++ b/chrome/browser/resources/tab_search/tab_search_api_proxy.js
@@ -55,6 +55,9 @@
   /** @return {!PageCallbackRouter} */
   getCallbackRouter() {}
 
+  /** @param {boolean} expanded */
+  saveRecentlyClosedExpandedPref(expanded) {}
+
   showUI() {}
 }
 
@@ -120,6 +123,11 @@
   }
 
   /** @override */
+  saveRecentlyClosedExpandedPref(expanded) {
+    this.handler.saveRecentlyClosedExpandedPref(expanded);
+  }
+
+  /** @override */
   showUI() {
     this.handler.showUI();
   }
diff --git a/chrome/browser/resources/tab_search/title_item.js b/chrome/browser/resources/tab_search/title_item.js
index 2dd9c05..cc34631 100644
--- a/chrome/browser/resources/tab_search/title_item.js
+++ b/chrome/browser/resources/tab_search/title_item.js
@@ -3,9 +3,19 @@
 // found in the LICENSE file.
 
 export class TitleItem {
-  /** @param {string} title */
-  constructor(title) {
+  /**
+   * @param {string} title
+   * @param {boolean} expandable
+   * @param {boolean} expanded
+   */
+  constructor(title, expandable = false, expanded = false) {
     /** @type {string} */
     this.title = title;
+
+    /** @type {boolean} */
+    this.expandable = expandable;
+
+    /** @type {boolean} */
+    this.expanded = expanded;
   }
 }
diff --git a/chrome/browser/resources/whats_new/whats_new_app.html b/chrome/browser/resources/whats_new/whats_new_app.html
index 8da8c54..729dd10 100644
--- a/chrome/browser/resources/whats_new/whats_new_app.html
+++ b/chrome/browser/resources/whats_new/whats_new_app.html
@@ -1,4 +1,12 @@
-<style include="cr-hidden-style"></style>
-<template is="dom-if" if="[[loadFailed_]]">
+<style include="cr-hidden-style">
+  #content {
+    height: 100%;
+    width: 100%;
+  }
+</style>
+<template is="dom-if" if="[[showErrorPage_]]">
   <whats-new-error-page></whats-new-error-page>
 </template>
+<template is="dom-if" if="[[url_]]">
+  <iframe id="content" src="[[url_]]"></iframe>
+</template>
diff --git a/chrome/browser/resources/whats_new/whats_new_app.ts b/chrome/browser/resources/whats_new/whats_new_app.ts
index 6e76fe14..bffd70e 100644
--- a/chrome/browser/resources/whats_new/whats_new_app.ts
+++ b/chrome/browser/resources/whats_new/whats_new_app.ts
@@ -6,7 +6,9 @@
 import './whats_new_error_page.js';
 import './strings.m.js';
 
-import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {sendWithPromise} from 'chrome://resources/js/cr.m.js';
+import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+import {html, microTask, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 export class WhatsNewAppElement extends PolymerElement {
   static get is() {
@@ -15,12 +17,28 @@
 
   static get properties() {
     return {
-      loadFailed_: Boolean,
+      showErrorPage_: Boolean,
+      url_: String,
     };
   }
 
-  // Temporarily default to true while there's no other content.
-  private loadFailed_: boolean = true;
+  private showErrorPage_: boolean = false;
+  private url_: string = '';
+
+  connectedCallback() {
+    super.connectedCallback();
+
+    const queryParams = new URLSearchParams(window.location.search);
+    const isAutoOpen = queryParams.has('auto');
+    sendWithPromise('initialize', isAutoOpen).then(url => {
+      if (!url) {
+        this.showErrorPage_ = true;
+        return;
+      }
+
+      this.url_ = isAutoOpen ? url.concat('?latest=true') : url;
+    });
+  }
 
   static get template() {
     return html`{__html_template__}`;
diff --git a/chrome/browser/supervised_user/supervised_user_url_filter.cc b/chrome/browser/supervised_user/supervised_user_url_filter.cc
index 1a7e292..7ade8cb 100644
--- a/chrome/browser/supervised_user/supervised_user_url_filter.cc
+++ b/chrome/browser/supervised_user/supervised_user_url_filter.cc
@@ -137,6 +137,18 @@
 // Reports ManualSiteListType which indicates approved list and blocked list
 // usage for current Family Link user on Chrome OS.
 constexpr char kManagedSiteListHistogramName[] = "FamilyUser.ManagedSiteList";
+
+// UMA histogram FamilyUser.ManagedSiteListCount.Approved
+// Reports the number of approved urls and domains for current Family Link user
+// on Chrome OS.
+constexpr char kApprovedSitesCountHistogramName[] =
+    "FamilyUser.ManagedSiteListCount.Approved";
+
+// UMA histogram FamilyUser.ManagedSiteListCount.Blocked
+// Reports the number of blocked urls and domains for current Family Link user
+// on Chrome OS.
+constexpr char kBlockedSitesCountHistogramName[] =
+    "FamilyUser.ManagedSiteListCount.Blocked";
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
 // This class encapsulates all the state that is required during construction of
@@ -266,6 +278,18 @@
   return kManagedSiteListHistogramName;
 }
 
+// static
+const char*
+SupervisedUserURLFilter::GetApprovedSitesCountHistogramNameForTest() {
+  return kApprovedSitesCountHistogramName;
+}
+
+// static
+const char*
+SupervisedUserURLFilter::GetBlockedSitesCountHistogramNameForTest() {
+  return kBlockedSitesCountHistogramName;
+}
+
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
 // static
@@ -737,40 +761,42 @@
   if (url_map_.empty() && host_map_.empty()) {
     base::UmaHistogramEnumeration(kManagedSiteListHistogramName,
                                   ManagedSiteList::kEmpty);
+    base::UmaHistogramCounts1000(kApprovedSitesCountHistogramName, 0);
+    base::UmaHistogramCounts1000(kBlockedSitesCountHistogramName, 0);
     return;
   }
 
   ManagedSiteList managed_site_list = ManagedSiteList::kMaxValue;
-  bool approved_list = false;
-  bool blocked_list = false;
+  int approved_count = 0;
+  int blocked_count = 0;
   for (const auto& it : url_map_) {
-    if (approved_list && blocked_list)
-      break;
     if (it.second) {
-      approved_list = true;
+      approved_count++;
     } else {
-      blocked_list = true;
+      blocked_count++;
     }
   }
 
   for (const auto& it : host_map_) {
-    if (approved_list && blocked_list)
-      break;
     if (it.second) {
-      approved_list = true;
+      approved_count++;
     } else {
-      blocked_list = true;
+      blocked_count++;
     }
   }
 
-  if (approved_list && blocked_list) {
+  if (approved_count > 0 && blocked_count > 0) {
     managed_site_list = ManagedSiteList::kBoth;
-  } else if (approved_list) {
+  } else if (approved_count > 0) {
     managed_site_list = ManagedSiteList::kApprovedListOnly;
   } else {
     managed_site_list = ManagedSiteList::kBlockedListOnly;
   }
 
+  base::UmaHistogramCounts1000(kApprovedSitesCountHistogramName,
+                               approved_count);
+  base::UmaHistogramCounts1000(kBlockedSitesCountHistogramName, blocked_count);
+
   base::UmaHistogramEnumeration(kManagedSiteListHistogramName,
                                 managed_site_list);
 }
diff --git a/chrome/browser/supervised_user/supervised_user_url_filter.h b/chrome/browser/supervised_user/supervised_user_url_filter.h
index eb7bdf8..73e4d85 100644
--- a/chrome/browser/supervised_user/supervised_user_url_filter.h
+++ b/chrome/browser/supervised_user/supervised_user_url_filter.h
@@ -131,6 +131,8 @@
 #if BUILDFLAG(IS_CHROMEOS_ASH)
   static const char* GetWebFilterTypeHistogramNameForTest();
   static const char* GetManagedSiteListHistogramNameForTest();
+  static const char* GetApprovedSitesCountHistogramNameForTest();
+  static const char* GetBlockedSitesCountHistogramNameForTest();
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
   // Returns true if the parental allowlist/blocklist should be skipped in
diff --git a/chrome/browser/sync/test/integration/enable_disable_test.cc b/chrome/browser/sync/test/integration/enable_disable_test.cc
index dde89a5..3f7369b 100644
--- a/chrome/browser/sync/test/integration/enable_disable_test.cc
+++ b/chrome/browser/sync/test/integration/enable_disable_test.cc
@@ -127,7 +127,13 @@
   DISALLOW_COPY_AND_ASSIGN(EnableDisableSingleClientTest);
 };
 
-IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, EnableOneAtATime) {
+// TODO(crbug.com/1235713): Possibly fails/flaky on Linux. 
+#if defined(OS_LINUX)
+#define MAYBE_EnableOneAtATime DISABLED_EnableOneAtATime
+#else
+#define MAYBE_EnableOneAtATime EnableOneAtATime
+#endif
+IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, MAYBE_EnableOneAtATime) {
   // Setup sync with no enabled types.
   SetupTest(/*all_types_enabled=*/false);
 
diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabData.java b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabData.java
index e1e45159..cdb4a89 100644
--- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabData.java
+++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabData.java
@@ -281,6 +281,8 @@
                 return TabLaunchType.FROM_TAB_GROUP_UI;
             case FROM_LONGPRESS_BACKGROUND_IN_GROUP:
                 return TabLaunchType.FROM_LONGPRESS_BACKGROUND_IN_GROUP;
+            case FROM_APP_WIDGET:
+                return TabLaunchType.FROM_APP_WIDGET;
             case SIZE:
                 return TabLaunchType.SIZE;
             default:
@@ -331,6 +333,8 @@
             case TabLaunchType.FROM_LONGPRESS_BACKGROUND_IN_GROUP:
                 return CriticalPersistedTabDataProto.LaunchTypeAtCreation
                         .FROM_LONGPRESS_BACKGROUND_IN_GROUP;
+            case TabLaunchType.FROM_APP_WIDGET:
+                return CriticalPersistedTabDataProto.LaunchTypeAtCreation.FROM_APP_WIDGET;
             case TabLaunchType.SIZE:
                 return CriticalPersistedTabDataProto.LaunchTypeAtCreation.SIZE;
             default:
diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/proto/critical_persisted_tab_data.proto b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/proto/critical_persisted_tab_data.proto
index ebc21375..1b3d2d0 100644
--- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/proto/critical_persisted_tab_data.proto
+++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/proto/critical_persisted_tab_data.proto
@@ -48,8 +48,9 @@
     FROM_START_SURFACE = 12;
     FROM_TAB_GROUP_UI = 13;
     FROM_LONGPRESS_BACKGROUND_IN_GROUP = 14;
-    SIZE = 15;
-    UNKNOWN = 16;
+    FROM_APP_WIDGET = 15;
+    SIZE = 16;
+    UNKNOWN = 17;
   }
   optional LaunchTypeAtCreation launch_type_at_creation = 8;
 }
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index f975bd3c..7566fd8 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -1569,6 +1569,8 @@
       "webui/system_info_ui.h",
       "webui/tab_search/tab_search_page_handler.cc",
       "webui/tab_search/tab_search_page_handler.h",
+      "webui/tab_search/tab_search_prefs.cc",
+      "webui/tab_search/tab_search_prefs.h",
       "webui/tab_search/tab_search_ui.cc",
       "webui/tab_search/tab_search_ui.h",
       "webui/theme_handler.cc",
@@ -1581,8 +1583,12 @@
       "webui/web_app_internals/web_app_internals_source.h",
       "webui/web_footer_experiment_ui.cc",
       "webui/web_footer_experiment_ui.h",
+      "webui/whats_new/whats_new_handler.cc",
+      "webui/whats_new/whats_new_handler.h",
       "webui/whats_new/whats_new_ui.cc",
       "webui/whats_new/whats_new_ui.h",
+      "webui/whats_new/whats_new_util.cc",
+      "webui/whats_new/whats_new_util.h",
       "window_sizer/window_sizer.cc",
       "window_sizer/window_sizer.h",
       "zoom/chrome_zoom_level_otr_delegate.cc",
diff --git a/chrome/browser/ui/android/layouts/test/java/src/org/chromium/chrome/browser/layouts/LayoutTestUtils.java b/chrome/browser/ui/android/layouts/test/java/src/org/chromium/chrome/browser/layouts/LayoutTestUtils.java
index 58bc024..a7bf7b3 100644
--- a/chrome/browser/ui/android/layouts/test/java/src/org/chromium/chrome/browser/layouts/LayoutTestUtils.java
+++ b/chrome/browser/ui/android/layouts/test/java/src/org/chromium/chrome/browser/layouts/LayoutTestUtils.java
@@ -21,8 +21,6 @@
      */
     public static void waitForLayout(LayoutManager layoutManager, @LayoutType int type)
             throws TimeoutException {
-        if (layoutManager.isLayoutVisible(type)) return;
-
         CallbackHelper finishedShowingCallbackHelper = new CallbackHelper();
         LayoutStateObserver observer = new LayoutStateObserver() {
             @Override
@@ -30,7 +28,13 @@
                 finishedShowingCallbackHelper.notifyCalled();
             }
         };
-        TestThreadUtils.runOnUiThreadBlocking(() -> layoutManager.addObserver(observer));
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            if (layoutManager.isLayoutVisible(type)) {
+                finishedShowingCallbackHelper.notifyCalled();
+                return;
+            }
+            layoutManager.addObserver(observer);
+        });
 
         finishedShowingCallbackHelper.waitForFirst();
         TestThreadUtils.runOnUiThreadBlocking(() -> layoutManager.removeObserver(observer));
diff --git a/chrome/browser/ui/android/quickactionsearchwidget/BUILD.gn b/chrome/browser/ui/android/quickactionsearchwidget/BUILD.gn
index 3b68c53..47a32aa 100644
--- a/chrome/browser/ui/android/quickactionsearchwidget/BUILD.gn
+++ b/chrome/browser/ui/android/quickactionsearchwidget/BUILD.gn
@@ -42,6 +42,7 @@
     "//chrome/android:chrome_java",
     "//chrome/browser/flags:java",
     "//chrome/browser/tab:java",
+    "//chrome/browser/tabmodel:java",
     "//chrome/browser/ui/android/searchactivityutils:java",
     "//chrome/test/android:chrome_java_test_support",
     "//components/embedder_support/android:util_java",
diff --git a/chrome/browser/ui/android/quickactionsearchwidget/java/src/org/chromium/chrome/browser/ui/quickactionsearchwidget/QuickActionSearchWidgetProviderDelegate.java b/chrome/browser/ui/android/quickactionsearchwidget/java/src/org/chromium/chrome/browser/ui/quickactionsearchwidget/QuickActionSearchWidgetProviderDelegate.java
index 72b0e11d..921bd33 100644
--- a/chrome/browser/ui/android/quickactionsearchwidget/java/src/org/chromium/chrome/browser/ui/quickactionsearchwidget/QuickActionSearchWidgetProviderDelegate.java
+++ b/chrome/browser/ui/android/quickactionsearchwidget/java/src/org/chromium/chrome/browser/ui/quickactionsearchwidget/QuickActionSearchWidgetProviderDelegate.java
@@ -21,6 +21,7 @@
 public class QuickActionSearchWidgetProviderDelegate {
     private final @QuickActionSearchWidgetType int mWidgetType;
     private final ComponentName mWidgetReceiverComponent;
+    private final Intent mStartIncognitoTabIntent;
 
     /**
      * Constructor for the {@link QuickActionSearchWidgetProviderDelegate}
@@ -30,11 +31,15 @@
      *         android.content.BroadcastReceiver} that will receive the intents that are broadcast
      *         when the user interacts with the widget. Generally this component is {@link
      *         QuickActionSearchWidgetReceiver}.
+     * @param startIncognitoIntent A trusted intent starting a new Incognito tab.
      */
-    public QuickActionSearchWidgetProviderDelegate(
-            @QuickActionSearchWidgetType int widgetType, ComponentName widgetReceiverComponent) {
+    public QuickActionSearchWidgetProviderDelegate(@QuickActionSearchWidgetType int widgetType,
+            ComponentName widgetReceiverComponent, Intent startIncognitoTabIntent) {
         mWidgetType = widgetType;
         mWidgetReceiverComponent = widgetReceiverComponent;
+        mStartIncognitoTabIntent = startIncognitoTabIntent;
+        mStartIncognitoTabIntent.addFlags(
+                Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
     }
 
     /**
@@ -95,33 +100,39 @@
 
         // Search Bar Intent
         PendingIntent textSearchPendingIntent = createPendingIntentForAction(
-                QuickActionSearchWidgetReceiverDelegate.ACTION_START_TEXT_QUERY, context);
+                context, QuickActionSearchWidgetReceiverDelegate.ACTION_START_TEXT_QUERY);
         remoteViews.setOnClickPendingIntent(
                 R.id.quick_action_search_widget_search_bar_container, textSearchPendingIntent);
 
         // Voice Search Intent
         PendingIntent voiceSearchPendingIntent = createPendingIntentForAction(
-                QuickActionSearchWidgetReceiverDelegate.ACTION_START_VOICE_QUERY, context);
+                context, QuickActionSearchWidgetReceiverDelegate.ACTION_START_VOICE_QUERY);
         remoteViews.setOnClickPendingIntent(
                 R.id.voice_search_quick_action_button, voiceSearchPendingIntent);
 
+        // Incognito Tab Intent
+        PendingIntent incognitoTabPendingIntent =
+                createPendingIntent(context, mStartIncognitoTabIntent);
+        remoteViews.setOnClickPendingIntent(
+                R.id.incognito_quick_action_button, incognitoTabPendingIntent);
+
         // Dino Game intent
         PendingIntent dinoGamePendingIntent = createPendingIntentForAction(
-                QuickActionSearchWidgetReceiverDelegate.ACTION_START_DINO_GAME, context);
+                context, QuickActionSearchWidgetReceiverDelegate.ACTION_START_DINO_GAME);
         remoteViews.setOnClickPendingIntent(R.id.dino_quick_action_button, dinoGamePendingIntent);
 
         return remoteViews;
     }
 
     /**
-     * Creates a {@link PendingIntent} that will broadcast a trusted intent for a specified action.
+     * Creates a {@link PendingIntent} that will send a trusted intent with a specified action.
      *
      * @param context The Context from which the PendingIntent will perform the broadcast.
      * @param action A String specifying the action for the intent.
      * @return A {@link PendingIntent} that will broadcast a trusted intent for the specified
      *         action.
      */
-    private PendingIntent createPendingIntentForAction(final String action, final Context context) {
+    private PendingIntent createPendingIntentForAction(final Context context, final String action) {
         Intent intent = createTrustedIntentForAction(action);
         return PendingIntent.getBroadcast(context, /*requestCode=*/0, intent,
                 PendingIntent.FLAG_UPDATE_CURRENT
@@ -129,6 +140,20 @@
     }
 
     /**
+     * Creates a {@link PendingIntent} that will send a trusted intent with a specified action.
+     *
+     * @param context The Context from which the PendingIntent will perform the broadcast.
+     * @param intent An intent to execute.
+     * @return A {@link PendingIntent} that will broadcast a trusted intent for the specified
+     *         action.
+     */
+    private PendingIntent createPendingIntent(final Context context, final Intent intent) {
+        return PendingIntent.getActivity(context, /*requestCode=*/0, intent,
+                PendingIntent.FLAG_UPDATE_CURRENT
+                        | IntentUtils.getPendingIntentMutabilityFlag(false));
+    }
+
+    /**
      * Creates a trusted intent corresponding to a specified action.
      *
      * @param action a String specifying the action for the trusted intent.
@@ -167,4 +192,4 @@
                 return R.layout.quick_action_search_widget_small_layout;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/browser/ui/android/quickactionsearchwidget/java/src/org/chromium/chrome/browser/ui/quickactionsearchwidget/QuickActionSearchWidgetProviderDelegateTest.java b/chrome/browser/ui/android/quickactionsearchwidget/java/src/org/chromium/chrome/browser/ui/quickactionsearchwidget/QuickActionSearchWidgetProviderDelegateTest.java
index dd1a5f3..a331b2c7 100644
--- a/chrome/browser/ui/android/quickactionsearchwidget/java/src/org/chromium/chrome/browser/ui/quickactionsearchwidget/QuickActionSearchWidgetProviderDelegateTest.java
+++ b/chrome/browser/ui/android/quickactionsearchwidget/java/src/org/chromium/chrome/browser/ui/quickactionsearchwidget/QuickActionSearchWidgetProviderDelegateTest.java
@@ -7,6 +7,7 @@
 import android.app.Activity;
 import android.appwidget.AppWidgetManager;
 import android.content.ComponentName;
+import android.content.Intent;
 import android.support.test.InstrumentationRegistry;
 import android.view.View;
 import android.widget.FrameLayout;
@@ -25,6 +26,7 @@
 import org.chromium.base.test.util.ApplicationTestUtils;
 import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.DisabledTest;
+import org.chromium.chrome.browser.IntentHandler;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.flags.ChromeSwitches;
 import org.chromium.chrome.browser.quickactionsearchwidget.QuickActionSearchWidgetReceiver;
@@ -52,8 +54,8 @@
 
     private static final class TestDelegate extends QuickActionSearchWidgetProviderDelegate {
         public TestDelegate(@QuickActionSearchWidgetType int widgetType,
-                ComponentName widgetReceiverComponent) {
-            super(widgetType, widgetReceiverComponent);
+                ComponentName widgetReceiverComponent, Intent startIncognitoTab) {
+            super(widgetType, widgetReceiverComponent, startIncognitoTab);
         }
 
         public final List<RemoteViews> mRemoteViews = new ArrayList<>();
@@ -87,7 +89,9 @@
 
         ComponentName widgetReceiverComponent =
                 new ComponentName(mContext, QuickActionSearchWidgetReceiver.class);
-        mDelegate = new TestDelegate(QuickActionSearchWidgetType.SMALL, widgetReceiverComponent);
+
+        mDelegate = new TestDelegate(QuickActionSearchWidgetType.SMALL, widgetReceiverComponent,
+                IntentHandler.createTrustedOpenNewTabIntent(mContext, /*incognito=*/true));
 
         setUpViews();
     }
@@ -114,6 +118,19 @@
 
     @Test
     @SmallTest
+    public void testIncognitoTabClick() throws Exception {
+        for (View view : mWidgetViews) {
+            QuickActionSearchWidgetTestUtils.assertIncognitoModeLaunchedAfterAction(
+                    mActivityTestRule, () -> {
+                        QuickActionSearchWidgetTestUtils.clickOnView(
+                                view, R.id.incognito_quick_action_button);
+                    });
+            ApplicationTestUtils.finishActivity(mActivityTestRule.getActivity());
+        }
+    }
+
+    @Test
+    @SmallTest
     public void testVoiceButtonClick() throws Exception {
         for (View view : mWidgetViews) {
             // clang-format off
diff --git a/chrome/browser/ui/android/quickactionsearchwidget/java/src/org/chromium/chrome/browser/ui/quickactionsearchwidget/QuickActionSearchWidgetTestUtils.java b/chrome/browser/ui/android/quickactionsearchwidget/java/src/org/chromium/chrome/browser/ui/quickactionsearchwidget/QuickActionSearchWidgetTestUtils.java
index 4455a98..3c178b0 100644
--- a/chrome/browser/ui/android/quickactionsearchwidget/java/src/org/chromium/chrome/browser/ui/quickactionsearchwidget/QuickActionSearchWidgetTestUtils.java
+++ b/chrome/browser/ui/android/quickactionsearchwidget/java/src/org/chromium/chrome/browser/ui/quickactionsearchwidget/QuickActionSearchWidgetTestUtils.java
@@ -6,6 +6,7 @@
 
 import android.app.Activity;
 import android.content.Intent;
+import android.support.test.InstrumentationRegistry;
 import android.support.test.runner.lifecycle.Stage;
 import android.view.View;
 
@@ -32,6 +33,7 @@
      * Asserts that {@link SearchActivity} is launched in the correct mode after a given {@link
      * Runnable} is ran.
      *
+     * @param testRule BaseActivityTestRule used to start an action and monitor for changes.
      * @param action The runnable such that after it is ran, {@link SearchActivity} is expected to
      *         be launched.
      * @param shouldActivityLaunchVoiceMode Whether the search activity is expected to launched in
@@ -50,6 +52,7 @@
      * Asserts that {@link ChromeTabbedActivity} is launched with the URL chrome://dino after a
      * given {@link Runnable} is ran.
      *
+     * @param testRule BaseActivityTestRule used to start an action and monitor for changes.
      * @param action the runnable such that after running {@link ChromeTabbedActivity} is expected
      *         to be launched.
      */
@@ -86,4 +89,28 @@
                 intent, SearchActivityConstants.EXTRA_SHOULD_START_VOICE_SEARCH, false);
         Assert.assertEquals(shouldActivityLaunchVoiceMode, isVoiceMode);
     }
+
+    /**
+     * Asserts that {@link ChromeTabbedActivity} is launched in an incognito mode after a
+     * given {@link Runnable} is ran.
+     *
+     * @param testRule BaseActivityTestRule used to start an action and monitor for changes.
+     * @param action the runnable such that after running {@link ChromeTabbedActivity} is expected
+     *         to be launched.
+     */
+    public static void assertIncognitoModeLaunchedAfterAction(
+            BaseActivityTestRule<Activity> testRule, Runnable action) {
+        ChromeTabbedActivity activity = ApplicationTestUtils.waitForActivityWithClass(
+                ChromeTabbedActivity.class, Stage.CREATED, action);
+        testRule.setActivity(activity);
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        CriteriaHelper.pollUiThread(() -> {
+            Tab activityTab = activity.getActivityTab();
+            Assert.assertTrue(activity.getTabModelSelector().isIncognitoSelected());
+            Criteria.checkThat(activityTab, Matchers.notNullValue());
+            Criteria.checkThat(
+                    activityTab.getUrl().getSpec(), Matchers.startsWith(UrlConstants.NTP_URL));
+        });
+    }
 }
diff --git a/chrome/browser/ui/android/tab_model/tab_model.h b/chrome/browser/ui/android/tab_model/tab_model.h
index d866b05..baf7b29 100644
--- a/chrome/browser/ui/android/tab_model/tab_model.h
+++ b/chrome/browser/ui/android/tab_model/tab_model.h
@@ -94,6 +94,8 @@
     // Open from the long press context menu item 'Open in new tab in group'.
     // Will not be brought to the foreground.
     FROM_LONGPRESS_BACKGROUND_IN_GROUP,
+    // Opened from an app widget.
+    FROM_APP_WIDGET,
     // Must be last.
     SIZE
   };
diff --git a/chrome/browser/ui/android/toolbar/BUILD.gn b/chrome/browser/ui/android/toolbar/BUILD.gn
index 593f012..5485ecb2 100644
--- a/chrome/browser/ui/android/toolbar/BUILD.gn
+++ b/chrome/browser/ui/android/toolbar/BUILD.gn
@@ -264,6 +264,7 @@
     "java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonControllerTest.java",
     "java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictorTest.java",
     "java/src/org/chromium/chrome/browser/toolbar/adaptive/OptionalNewTabButtonControllerUnitTest.java",
+    "java/src/org/chromium/chrome/browser/toolbar/adaptive/settings/AdaptiveToolbarPreferenceFragmentUnitTest.java",
     "java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinatorTest.java",
     "java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediatorTest.java",
     "java/src/org/chromium/chrome/browser/toolbar/menu_button/MenuButtonTest.java",
@@ -304,8 +305,11 @@
     "//third_party/android_deps:guava_android_java",
     "//third_party/android_deps:robolectric_all_java",
     "//third_party/android_support_test_runner:runner_java",
+    "//third_party/androidx:androidx_fragment_fragment_java",
+    "//third_party/androidx:androidx_recyclerview_recyclerview_java",
     "//third_party/androidx:androidx_test_core_java",
     "//third_party/androidx:androidx_test_runner_java",
+    "//third_party/androidx:androidx_viewpager2_viewpager2_java",
     "//third_party/hamcrest:hamcrest_library_java",
     "//third_party/junit",
     "//third_party/mockito:mockito_java",
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/settings/AdaptiveToolbarPreferenceFragment.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/settings/AdaptiveToolbarPreferenceFragment.java
index da0c083d..fb378ed 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/settings/AdaptiveToolbarPreferenceFragment.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/settings/AdaptiveToolbarPreferenceFragment.java
@@ -85,6 +85,6 @@
 
     @VisibleForTesting
     /*package*/ void setCanUseVoiceSearchForTesting(boolean canUseVoiceSearch) {
-        mRadioButtonGroup.setCanUseVoiceSearch(false);
+        mRadioButtonGroup.setCanUseVoiceSearch(canUseVoiceSearch);
     }
 }
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/settings/AdaptiveToolbarPreferenceFragmentUnitTest.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/settings/AdaptiveToolbarPreferenceFragmentUnitTest.java
new file mode 100644
index 0000000..8da9cefe
--- /dev/null
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/settings/AdaptiveToolbarPreferenceFragmentUnitTest.java
@@ -0,0 +1,124 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.toolbar.adaptive.settings;
+
+import static org.junit.Assert.assertEquals;
+
+import android.os.Looper;
+import android.util.Pair;
+import android.view.View;
+
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.viewpager2.adapter.FragmentStateAdapter;
+import androidx.viewpager2.widget.ViewPager2;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestRule;
+import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.annotation.LooperMode;
+
+import org.chromium.base.test.BaseRobolectricTestRunner;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarFeatures;
+import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarFeatures.AdaptiveToolbarButtonVariant;
+import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarStatePredictor;
+import org.chromium.chrome.test.util.browser.Features;
+import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
+import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
+import org.chromium.components.browser_ui.widget.RadioButtonWithDescription;
+
+/**
+ * Unit tests for {@link AdaptiveToolbarPreferenceFragment} and {@link
+ * RadioButtonGroupAdaptiveToolbarPreference}.
+ */
+@RunWith(BaseRobolectricTestRunner.class)
+@Config(manifest = Config.NONE)
+@LooperMode(LooperMode.Mode.PAUSED)
+public class AdaptiveToolbarPreferenceFragmentUnitTest {
+    @Rule
+    public TestRule mProcessor = new Features.JUnitProcessor();
+
+    private FragmentActivity mTestActivity;
+    private AdaptiveToolbarPreferenceFragment mFragment;
+
+    private static class TestFragmentAdapter extends FragmentStateAdapter {
+        private AdaptiveToolbarPreferenceFragment mLastFragment;
+
+        public TestFragmentAdapter(FragmentActivity fragmentActivity) {
+            super(fragmentActivity);
+        }
+
+        @Override
+        public Fragment createFragment(int i) {
+            mLastFragment = new AdaptiveToolbarPreferenceFragment();
+            return mLastFragment;
+        }
+
+        public AdaptiveToolbarPreferenceFragment getLastFragment() {
+            return mLastFragment;
+        }
+
+        @Override
+        public int getItemCount() {
+            return 1;
+        }
+    }
+
+    @Before
+    public void setUp() {
+        AdaptiveToolbarStatePredictor.setSegmentationResultsForTesting(
+                new Pair<>(true, AdaptiveToolbarButtonVariant.NEW_TAB));
+
+        mTestActivity = Robolectric.setupActivity(FragmentActivity.class);
+        ViewPager2 view = new ViewPager2(mTestActivity);
+        mTestActivity.setContentView(view);
+
+        TestFragmentAdapter adapter = new TestFragmentAdapter(mTestActivity);
+        view.setAdapter(adapter);
+        Shadows.shadowOf(Looper.getMainLooper()).idle();
+        mFragment = adapter.getLastFragment();
+    }
+
+    @After
+    public void tearDown() {
+        AdaptiveToolbarStatePredictor.setSegmentationResultsForTesting(null);
+        AdaptiveToolbarFeatures.clearParsedParamsForTesting();
+    }
+
+    @Test
+    @EnableFeatures({ChromeFeatureList.ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_CUSTOMIZATION})
+    @DisableFeatures({ChromeFeatureList.VOICE_SEARCH_AUDIO_CAPTURE_POLICY})
+    public void testCanUseVoiceSearch_enabled() {
+        mFragment.setCanUseVoiceSearchForTesting(true);
+
+        RadioButtonGroupAdaptiveToolbarPreference radioButtonGroup = mFragment.findPreference(
+                AdaptiveToolbarPreferenceFragment.PREF_ADAPTIVE_RADIO_GROUP);
+        RadioButtonWithDescription voiceButton =
+                radioButtonGroup.getButton(AdaptiveToolbarButtonVariant.VOICE);
+
+        assertEquals(View.VISIBLE, voiceButton.getVisibility());
+    }
+
+    @Test
+    @EnableFeatures({ChromeFeatureList.ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_CUSTOMIZATION})
+    @DisableFeatures({ChromeFeatureList.VOICE_SEARCH_AUDIO_CAPTURE_POLICY})
+    public void testCanUseVoiceSearch_disabled() {
+        mFragment.setCanUseVoiceSearchForTesting(false);
+
+        RadioButtonGroupAdaptiveToolbarPreference radioButtonGroup = mFragment.findPreference(
+                AdaptiveToolbarPreferenceFragment.PREF_ADAPTIVE_RADIO_GROUP);
+        RadioButtonWithDescription voiceButton =
+                radioButtonGroup.getButton(AdaptiveToolbarButtonVariant.VOICE);
+
+        assertEquals(View.GONE, voiceButton.getVisibility());
+    }
+}
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/Toolbar.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/Toolbar.java
index 058290e..38ea0b8 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/Toolbar.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/Toolbar.java
@@ -86,4 +86,10 @@
      * @return The primary color to use for the background drawable.
      */
     int getPrimaryColor();
+
+    /**
+     * Updates the visibility of the reload button.
+     * @param isReloading Whether or not the page is loading.
+     */
+    void updateReloadButtonVisibility(boolean isReloading);
 }
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator.java
index 5af4182..201262e 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator.java
@@ -398,11 +398,7 @@
         mToolbarLayout.updateForwardButtonVisibility(canGoForward);
     }
 
-    /**
-     * Gives inheriting classes the chance to update the visibility of the
-     * reload button.
-     * @param isReloading Whether or not the current tab is loading.
-     */
+    @Override
     public void updateReloadButtonVisibility(boolean isReloading) {
         mToolbarLayout.updateReloadButtonVisibility(isReloading);
     }
diff --git a/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.cc b/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.cc
index 1c11f47..335a975 100644
--- a/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.cc
+++ b/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.cc
@@ -70,6 +70,10 @@
 void FakeAccessibilityController::ToggleDictationFromSource(
     ash::DictationToggleSource source) {}
 
+void FakeAccessibilityController::ShowDictationLanguageUpgradedNudge(
+    const std::string& dictation_locale,
+    const std::string& application_locale) {}
+
 void FakeAccessibilityController::HandleAutoclickScrollableBoundsFound(
     gfx::Rect& bounds_in_screen) {}
 
diff --git a/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.h b/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.h
index d6d2160..c162abb 100644
--- a/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.h
+++ b/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.h
@@ -45,6 +45,9 @@
   void SetPointScanSpeedDipsPerSecond(
       int point_scan_speed_dips_per_second) override;
   void ToggleDictationFromSource(ash::DictationToggleSource source) override;
+  void ShowDictationLanguageUpgradedNudge(
+      const std::string& dictation_locale,
+      const std::string& application_locale) override;
   void HandleAutoclickScrollableBoundsFound(
       gfx::Rect& bounds_in_screen) override;
   std::u16string GetBatteryDescription() const override;
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.cc b/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.cc
index 0a4982c..cd07126 100644
--- a/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.cc
+++ b/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.cc
@@ -30,8 +30,8 @@
 
 // Helpers ---------------------------------------------------------------------
 
-// Returns a download event state converted from the specified item `state`.
-crosapi::mojom::DownloadState ConvertToDownloadEventState(
+// Returns a mojo download state converted from the specified item `state`.
+crosapi::mojom::DownloadState ConvertToMojoDownloadState(
     download::DownloadItem::DownloadState state) {
   switch (state) {
     case download::DownloadItem::IN_PROGRESS:
@@ -47,41 +47,42 @@
   }
 }
 
-// Returns a download event converted from the specified `item`.
-crosapi::mojom::DownloadEventPtr ConvertToDownloadEvent(
+// Returns a mojo download item converted from the specified `item`.
+crosapi::mojom::DownloadItemPtr ConvertToMojoDownloadItem(
     const download::DownloadItem* item) {
-  auto download_event = crosapi::mojom::DownloadEvent::New();
-  download_event->guid = item->GetGuid();
-  download_event->state = ConvertToDownloadEventState(item->GetState());
-  download_event->target_file_path = item->GetTargetFilePath();
-  download_event->full_path = item->GetFullPath();
-  download_event->is_paused = item->IsPaused();
-  download_event->has_is_paused = true;
-  download_event->open_when_complete = item->GetOpenWhenComplete();
-  download_event->has_open_when_complete = true;
-  download_event->received_bytes = item->GetReceivedBytes();
-  download_event->has_received_bytes = true;
-  download_event->total_bytes = item->GetTotalBytes();
-  download_event->has_total_bytes = true;
+  auto mojo_download_item = crosapi::mojom::DownloadItem::New();
+  mojo_download_item->guid = item->GetGuid();
+  mojo_download_item->state = ConvertToMojoDownloadState(item->GetState());
+  mojo_download_item->target_file_path = item->GetTargetFilePath();
+  mojo_download_item->full_path = item->GetFullPath();
+  mojo_download_item->is_paused = item->IsPaused();
+  mojo_download_item->has_is_paused = true;
+  mojo_download_item->open_when_complete = item->GetOpenWhenComplete();
+  mojo_download_item->has_open_when_complete = true;
+  mojo_download_item->received_bytes = item->GetReceivedBytes();
+  mojo_download_item->has_received_bytes = true;
+  mojo_download_item->total_bytes = item->GetTotalBytes();
+  mojo_download_item->has_total_bytes = true;
 
   // NOTE: `browser_context` may be `nullptr` in tests.
   auto* browser_context = content::DownloadItemUtils::GetBrowserContext(item);
-  download_event->is_from_incognito_profile =
+  mojo_download_item->is_from_incognito_profile =
       browser_context
           ? Profile::FromBrowserContext(browser_context)->IsIncognitoProfile()
           : false;
 
-  return download_event;
+  return mojo_download_item;
 }
 
-// Returns whether the underlying download for the given `event` is complete.
-bool IsComplete(const crosapi::mojom::DownloadEvent* event) {
-  return event->state == crosapi::mojom::DownloadState::kComplete;
+// Returns whether the specified `mojo_download_item` is complete.
+bool IsComplete(const crosapi::mojom::DownloadItem* mojo_download_item) {
+  return mojo_download_item->state == crosapi::mojom::DownloadState::kComplete;
 }
 
-// Returns whether the underlying download for the given `event` is in progress.
-bool IsInProgress(const crosapi::mojom::DownloadEvent* event) {
-  return event->state == crosapi::mojom::DownloadState::kInProgress;
+// Returns whether the specified `mojo_download_item` is in progress.
+bool IsInProgress(const crosapi::mojom::DownloadItem* mojo_download_item) {
+  return mojo_download_item->state ==
+         crosapi::mojom::DownloadState::kInProgress;
 }
 
 // Returns whether the specified `download_item` is in progress.
@@ -93,19 +94,20 @@
 
 // HoldingSpaceDownloadsDelegate::InProgressDownload ---------------------------
 
-// A wrapper around an in-progress `crosapi::mojom::DownloadEvent` which
-// notifies its associated `delegate_` of changes in download state. Each
-// in-progress download is associated with a single in-progress holding space
-// item once the target file path for the in-progress download has been set.
-// NOTE: Instances of this class are immediately destroyed when the underlying
-// download is no longer in-progress or when the associated in-progress holding
-// space item is removed from the model.
+// A wrapper around an in-progress `crosapi::mojom::DownloadItem` which notifies
+// its associated `delegate_` of changes in download state. Each in-progress
+// download is associated with a single in-progress holding space item once the
+// target file path for the in-progress download has been set. NOTE: Instances
+// of this class are immediately destroyed when the underlying download is no
+// longer in-progress or when the associated in-progress holding space item is
+// removed from the model.
 class HoldingSpaceDownloadsDelegate::InProgressDownload {
  public:
   InProgressDownload(HoldingSpaceDownloadsDelegate* delegate,
-                     crosapi::mojom::DownloadEventPtr download_event)
-      : delegate_(delegate), download_event_(std::move(download_event)) {
-    DCHECK(IsInProgress(download_event_.get()));
+                     crosapi::mojom::DownloadItemPtr mojo_download_item)
+      : delegate_(delegate),
+        mojo_download_item_(std::move(mojo_download_item)) {
+    DCHECK(IsInProgress(mojo_download_item_.get()));
   }
 
   InProgressDownload(const InProgressDownload&) = delete;
@@ -128,23 +130,25 @@
   virtual void OpenWhenComplete() = 0;
 
   // Returns the number of bytes received for the underlying download.
-  int64_t GetReceivedBytes() const { return download_event_->received_bytes; }
+  int64_t GetReceivedBytes() const {
+    return mojo_download_item_->received_bytes;
+  }
 
   // Returns the file path associated with the underlying download.
   // NOTE: The file path may be empty before a target file path has been picked.
   base::FilePath GetFilePath() const {
-    return download_event_->full_path.value_or(base::FilePath());
+    return mojo_download_item_->full_path.value_or(base::FilePath());
   }
 
   // Returns the target file path associated with the underlying download.
   // NOTE: Returned path may be empty before a target file path has been picked.
   const base::FilePath& GetTargetFilePath() const {
-    return download_event_->target_file_path;
+    return mojo_download_item_->target_file_path;
   }
 
   // Returns the current progress of the underlying download.
   HoldingSpaceProgress GetProgress() const {
-    if (IsComplete(download_event_.get()))
+    if (IsComplete(mojo_download_item_.get()))
       return HoldingSpaceProgress();
     return HoldingSpaceProgress(GetReceivedBytes(), GetTotalBytes(),
                                 /*complete=*/false);
@@ -153,12 +157,12 @@
   // Returns the number of total bytes for the underlying download.
   // NOTE: The total number of bytes will be absent if unknown.
   absl::optional<int64_t> GetTotalBytes() const {
-    const int64_t total_bytes = download_event_->total_bytes;
+    const int64_t total_bytes = mojo_download_item_->total_bytes;
     return total_bytes >= 0 ? absl::make_optional(total_bytes) : absl::nullopt;
   }
 
   // Returns whether the underlying download is paused.
-  bool IsPaused() const { return download_event_->is_paused; }
+  bool IsPaused() const { return mojo_download_item_->is_paused; }
 
   // Associates this in-progress download with the specified in-progress
   // `holding_space_item`. NOTE: This association may be performed only once.
@@ -187,7 +191,7 @@
           return HoldingSpaceImage::CreateDefaultPlaceholderImageSkiaResolver()
               .Run(in_progress_download &&
                            IsInProgress(
-                               in_progress_download->download_event_.get())
+                               in_progress_download->mojo_download_item_.get())
                        ? in_progress_download->GetTargetFilePath()
                        : file_path,
                    size, dark_background, is_folder);
@@ -200,20 +204,20 @@
     // Only in-progress download items override primary text. In other cases,
     // the primary text will fall back to the lossy display name of the backing
     // file and be automatically updated in response to file system changes.
-    if (!IsInProgress(download_event_.get()))
+    if (!IsInProgress(mojo_download_item_.get()))
       return absl::nullopt;
-    return download_event_->target_file_path.BaseName().LossyDisplayName();
+    return mojo_download_item_->target_file_path.BaseName().LossyDisplayName();
   }
 
   // Returns the secondary text to display for the underlying download.
   absl::optional<std::u16string> GetSecondaryText() const {
     // Only in-progress download items have secondary text.
-    if (!IsInProgress(download_event_.get()))
+    if (!IsInProgress(mojo_download_item_.get()))
       return absl::nullopt;
 
     // In-progress download items which are marked to be opened when complete
     // have a special secondary text treatment.
-    if (download_event_->open_when_complete) {
+    if (mojo_download_item_->open_when_complete) {
       return l10n_util::GetStringUTF16(
           IDS_ASH_HOLDING_SPACE_IN_PROGRESS_DOWNLOAD_OPEN_WHEN_COMPLETE);
     }
@@ -238,7 +242,7 @@
       secondary_text = ui::FormatBytes(received_bytes);
     }
 
-    if (download_event_->is_paused) {
+    if (mojo_download_item_->is_paused) {
       // If the `item` is paused, prepend "Paused, " to the `secondary_text`
       // such that the string is of the form "Paused, 10/100 MB" or "Paused, 10
       // MB", depending on whether or not `total_bytes` is known.
@@ -251,18 +255,19 @@
   }
 
  protected:
-  // Updates the `download_event_` associated with this in-progress download,
-  // notifying `delegate_` of the change in state. Note that invoking this
-  // method may result in the destruction of `this`.
-  void UpdateDownloadEvent(crosapi::mojom::DownloadEventPtr download_event) {
-    download_event_ = std::move(download_event);
+  // Updates the `mojo_download_item_` associated with this in-progress
+  // download, notifying `delegate_` of the change in state. Note that invoking
+  // this method may result in the destruction of `this`.
+  void UpdateMojoDownloadItem(
+      crosapi::mojom::DownloadItemPtr mojo_download_item) {
+    mojo_download_item_ = std::move(mojo_download_item);
 
-    if (!download_event_) {
+    if (!mojo_download_item_) {
       delegate_->OnDownloadFailed(this);  // NOTE: Destroys `this`.
       return;
     }
 
-    switch (download_event_->state) {
+    switch (mojo_download_item_->state) {
       case crosapi::mojom::DownloadState::kInProgress:
         delegate_->OnDownloadUpdated(this);
         break;
@@ -281,7 +286,7 @@
 
  private:
   HoldingSpaceDownloadsDelegate* const delegate_;  // NOTE: Owns `this`.
-  crosapi::mojom::DownloadEventPtr download_event_;
+  crosapi::mojom::DownloadItemPtr mojo_download_item_;
 
   // The in-progress holding space item associated with this in-progress
   // download. NOTE: This may be `nullptr` until the target file path for the
@@ -304,7 +309,7 @@
  public:
   InProgressAshDownload(HoldingSpaceDownloadsDelegate* delegate,
                         download::DownloadItem* download_item)
-      : InProgressDownload(delegate, ConvertToDownloadEvent(download_item)),
+      : InProgressDownload(delegate, ConvertToMojoDownloadItem(download_item)),
         download_item_(download_item) {
     download_item_observation_.Observe(download_item);
   }
@@ -327,11 +332,11 @@
   void OnDownloadUpdated(download::DownloadItem* download_item) override {
     // NOTE: This method invocation may result in destruction of `this`,
     // depending on the state of the underlying download.
-    UpdateDownloadEvent(ConvertToDownloadEvent(download_item));
+    UpdateMojoDownloadItem(ConvertToMojoDownloadItem(download_item));
   }
 
   void OnDownloadDestroyed(download::DownloadItem* download_item) override {
-    UpdateDownloadEvent(nullptr);  // NOTE: Destroys `this`.
+    UpdateMojoDownloadItem(nullptr);  // NOTE: Destroys `this`.
   }
 
   download::DownloadItem* const download_item_;
@@ -524,15 +529,15 @@
 
 // TODO(crbug.com/1184438): Support in-progress downloads.
 void HoldingSpaceDownloadsDelegate::OnLacrosDownloadUpdated(
-    const crosapi::mojom::DownloadEvent& event) {
-  if (event.is_from_incognito_profile &&
+    const crosapi::mojom::DownloadItem& mojo_download_item) {
+  if (mojo_download_item.is_from_incognito_profile &&
       !features::IsHoldingSpaceIncognitoProfileIntegrationEnabled()) {
     return;
   }
 
-  if (event.state == crosapi::mojom::DownloadState::kComplete) {
+  if (mojo_download_item.state == crosapi::mojom::DownloadState::kComplete) {
     service()->AddDownload(ash::HoldingSpaceItem::Type::kLacrosDownload,
-                           event.target_file_path);
+                           mojo_download_item.target_file_path);
   }
 }
 
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.h b/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.h
index 638ace53..a4cf08f 100644
--- a/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.h
+++ b/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.h
@@ -75,7 +75,7 @@
 
   // crosapi::DownloadControllerAsh::DownloadControllerObserver:
   void OnLacrosDownloadUpdated(
-      const crosapi::mojom::DownloadEvent& event) override;
+      const crosapi::mojom::DownloadItem& download) override;
 
   // Invoked when the specified `in_progress_download` is updated.
   void OnDownloadUpdated(InProgressDownload* in_progress_download);
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_browsertest.cc b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_browsertest.cc
index 16cb82b..ef3d27f1 100644
--- a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_browsertest.cc
+++ b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_browsertest.cc
@@ -805,9 +805,14 @@
   }
 
   bool FromIncognitoProfile() const { return std::get<1>(GetParam()); }
-
   bool IncognitoDownloadsEnabled() const { return std::get<2>(GetParam()); }
 
+  crosapi::DownloadControllerAsh* download_controller() {
+    return crosapi::CrosapiManager::Get()
+        ->crosapi_ash()
+        ->download_controller_ash();
+  }
+
  private:
   base::test::ScopedFeatureList scoped_feature_list;
 };
@@ -831,13 +836,10 @@
   // Create a test downloaded file.
   auto file_path = CreateTextFile(GetTestMountPoint(), "foo.txt");
 
-  // Create a corresponding `crosapi::mojom::DownloadEvent`.
-  crosapi::mojom::DownloadEventPtr dle = crosapi::mojom::DownloadEvent::New();
-  dle->target_file_path = file_path;
-  dle->is_from_incognito_profile = FromIncognitoProfile();
-
-  auto* download_controller =
-      crosapi::CrosapiManager::Get()->crosapi_ash()->download_controller_ash();
+  // Create a corresponding `crosapi::mojom::DownloadItem`.
+  auto download = crosapi::mojom::DownloadItem::New();
+  download->target_file_path = file_path;
+  download->is_from_incognito_profile = FromIncognitoProfile();
 
   // Only `crosapi::mojom::DownloadState::kComplete` events should currently do
   // anything. The rest should all be ignored.
@@ -846,13 +848,13 @@
        state <= static_cast<int>(DownloadState::kMaxValue); ++state) {
     if (state == static_cast<int>(crosapi::mojom::DownloadState::kComplete))
       continue;
-    dle->state = static_cast<DownloadState>(state);
-    download_controller->OnDownloadUpdated(dle.Clone());
+    download->state = static_cast<DownloadState>(state);
+    download_controller()->OnDownloadUpdated(download.Clone());
     ASSERT_EQ(0u, model->items().size());
   }
 
-  dle->state = crosapi::mojom::DownloadState::kComplete;
-  download_controller->OnDownloadUpdated(dle.Clone());
+  download->state = crosapi::mojom::DownloadState::kComplete;
+  download_controller()->OnDownloadUpdated(download.Clone());
   // Holding space should ignore a completed download from an incognito profile
   // if the feature flag is not enabled.
   if (FromIncognitoProfile() && !IncognitoDownloadsEnabled()) {
diff --git a/chrome/browser/ui/ash/shelf/app_service/app_service_shelf_context_menu.cc b/chrome/browser/ui/ash/shelf/app_service/app_service_shelf_context_menu.cc
index 8e5f2fc..5b8e11a5 100644
--- a/chrome/browser/ui/ash/shelf/app_service/app_service_shelf_context_menu.cc
+++ b/chrome/browser/ui/ash/shelf/app_service/app_service_shelf_context_menu.cc
@@ -325,7 +325,8 @@
     return;
   }
 
-  if (app_type_ == apps::mojom::AppType::kWeb) {
+  if (app_type_ == apps::mojom::AppType::kWeb ||
+      app_type_ == apps::mojom::AppType::kSystemWeb) {
     BuildAppShortcutsMenu(std::move(menu_items), std::move(menu_model),
                           std::move(callback), shortcut_index);
     return;
diff --git a/chrome/browser/ui/startup/startup_browser_creator_impl.cc b/chrome/browser/ui/startup/startup_browser_creator_impl.cc
index 65a44e2..1838ba3 100644
--- a/chrome/browser/ui/startup/startup_browser_creator_impl.cc
+++ b/chrome/browser/ui/startup/startup_browser_creator_impl.cc
@@ -52,7 +52,7 @@
 #include "chrome/browser/ui/startup/startup_tab_provider.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/browser/ui/webui/welcome/helpers.h"
-#include "chrome/browser/ui/webui/whats_new/whats_new_ui.h"
+#include "chrome/browser/ui/webui/whats_new/whats_new_util.h"
 #include "chrome/browser/web_applications/web_app_provider.h"
 #include "chrome/browser/web_applications/web_app_provider_factory.h"
 #include "chrome/common/chrome_switches.h"
@@ -385,7 +385,7 @@
 #endif  // BUILDFLAG(IS_CHROMEOS_LACROS)
 
   const bool whats_new_enabled =
-      promotional_tabs_enabled && WhatsNewUI::ShouldShowForState(local_state);
+      promotional_tabs_enabled && whats_new::ShouldShowForState(local_state);
 
   StartupTabs tabs = DetermineStartupTabs(
       StartupTabProviderImpl(), cmd_line_tabs, process_startup,
@@ -524,7 +524,7 @@
     } else {
       // Record the current version so that What's New will not be shown until
       // after the next major version update.
-      WhatsNewUI::SetLastVersion(g_browser_process->local_state());
+      whats_new::SetLastVersion(g_browser_process->local_state());
     }
   }
 
diff --git a/chrome/browser/ui/startup/startup_tab_provider.cc b/chrome/browser/ui/startup/startup_tab_provider.cc
index f632578..bc8310e 100644
--- a/chrome/browser/ui/startup/startup_tab_provider.cc
+++ b/chrome/browser/ui/startup/startup_tab_provider.cc
@@ -252,7 +252,8 @@
     bool whats_new_enabled) {
   StartupTabs tabs;
   if (whats_new_enabled) {
-    tabs.emplace_back(GURL(chrome::kChromeUIWhatsNewURL), false);
+    GURL url(chrome::kChromeUIWhatsNewURL);
+    tabs.emplace_back(net::AppendQueryParameter(url, "auto", "true"), false);
   }
   return tabs;
 }
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_browsertest.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_browsertest.cc
index b620703b..3742073 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_browsertest.cc
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_browsertest.cc
@@ -45,9 +45,11 @@
 #include "chrome/browser/ui/ui_features.h"
 #include "chrome/browser/ui/views/bookmarks/bookmark_bar_view.h"
 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos.h"
+#include "chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_test_utils.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/frame/immersive_mode_controller.h"
 #include "chrome/browser/ui/views/frame/immersive_mode_controller_chromeos.h"
+#include "chrome/browser/ui/views/frame/immersive_mode_tester.h"
 #include "chrome/browser/ui/views/frame/tab_strip_region_view.h"
 #include "chrome/browser/ui/views/frame/webui_tab_strip_container_view.h"
 #include "chrome/browser/ui/views/fullscreen_control/fullscreen_control_host.h"
@@ -109,179 +111,6 @@
 #include "ui/views/window/caption_button_layout_constants.h"
 #include "ui/views/window/frame_caption_button.h"
 
-namespace {
-
-// Toggles fullscreen mode and waits for the notification.
-void ToggleFullscreenModeAndWait(Browser* browser) {
-  FullscreenNotificationObserver waiter(browser);
-  chrome::ToggleFullscreenMode(browser);
-  waiter.Wait();
-}
-
-// Enters fullscreen mode for tab and waits for the notification.
-void EnterFullscreenModeForTabAndWait(Browser* browser,
-                                      content::WebContents* web_contents) {
-  FullscreenNotificationObserver waiter(browser);
-  static_cast<content::WebContentsDelegate*>(browser)
-      ->EnterFullscreenModeForTab(web_contents->GetMainFrame(), {});
-  waiter.Wait();
-}
-
-// Exits fullscreen mode for tab and waits for the notification.
-void ExitFullscreenModeForTabAndWait(Browser* browser,
-                                     content::WebContents* web_contents) {
-  FullscreenNotificationObserver waiter(browser);
-  browser->exclusive_access_manager()
-      ->fullscreen_controller()
-      ->ExitFullscreenModeForTab(web_contents);
-  waiter.Wait();
-}
-
-void StartOverview() {
-  ash::Shell::Get()->overview_controller()->StartOverview(
-      ash::OverviewStartAction::kTests);
-}
-
-void EndOverview() {
-  ash::Shell::Get()->overview_controller()->EndOverview(
-      ash::OverviewEndAction::kTests);
-}
-
-bool IsShelfVisible() {
-  return ash::ShelfTestApi().IsVisible();
-}
-
-BrowserNonClientFrameViewChromeOS* GetFrameViewAsh(BrowserView* browser_view) {
-  // We know we're using Ash, so static cast.
-  auto* frame_view = static_cast<BrowserNonClientFrameViewChromeOS*>(
-      browser_view->GetWidget()->non_client_view()->frame_view());
-  DCHECK(frame_view);
-  return frame_view;
-}
-
-// Template to be used as a base class for touch-optimized UI parameterized test
-// fixtures.
-template <class BaseTest>
-class TopChromeMdParamTest : public BaseTest,
-                             public ::testing::WithParamInterface<bool> {
- public:
-  TopChromeMdParamTest() : touch_ui_scoper_(GetParam()) {}
-  ~TopChromeMdParamTest() override = default;
-
- private:
-  ui::TouchUiController::TouchUiScoperForTesting touch_ui_scoper_;
-};
-
-// Template used as a base class for touch-optimized UI test fixtures.
-template <class BaseTest>
-class TopChromeTouchTest : public BaseTest {
- public:
-  TopChromeTouchTest() : touch_ui_scoper_(true) {}
-  ~TopChromeTouchTest() override = default;
-
- private:
-  ui::TouchUiController::TouchUiScoperForTesting touch_ui_scoper_;
-};
-
-// Template to be used when a test does not work with the webUI tabstrip.
-template <bool kEnabled, class BaseTest>
-class WebUiTabStripOverrideTest : public BaseTest {
- public:
-  WebUiTabStripOverrideTest() {
-    if (kEnabled)
-      feature_override_.InitAndEnableFeature(features::kWebUITabStrip);
-    else
-      feature_override_.InitAndDisableFeature(features::kWebUITabStrip);
-  }
-  ~WebUiTabStripOverrideTest() override = default;
-
- private:
-  base::test::ScopedFeatureList feature_override_;
-};
-
-// A helper class for immersive mode tests.
-class ImmersiveModeTester : public ImmersiveModeController::Observer {
- public:
-  explicit ImmersiveModeTester(Browser* browser) : browser_(browser) {
-    scoped_observation_.Observe(GetBrowserView()->immersive_mode_controller());
-  }
-  ~ImmersiveModeTester() override = default;
-
-  BrowserView* GetBrowserView() {
-    return BrowserView::GetBrowserViewForBrowser(browser_);
-  }
-
-  // Runs the given command, verifies that a reveal happens and the expected tab
-  // is active.
-  void RunCommand(int command, int expected_index) {
-    reveal_started_ = reveal_ended_ = false;
-    browser_->command_controller()->ExecuteCommand(command);
-    VerifyTabIndexAfterReveal(expected_index);
-  }
-
-  // Verifies a reveal has happened and the expected tab is active.
-  void VerifyTabIndexAfterReveal(int expected_index) {
-    if (!reveal_ended_) {
-      reveal_loop_ = std::make_unique<base::RunLoop>();
-      reveal_loop_->Run();
-    }
-    EXPECT_TRUE(reveal_ended_);
-    EXPECT_EQ(expected_index, browser_->tab_strip_model()->active_index());
-  }
-
-  // Waits for the immersive fullscreen to end (or returns immediately if
-  // immersive fullscreen already ended).
-  void WaitForFullscreenToExit() {
-    if (GetBrowserView()->immersive_mode_controller()->IsEnabled()) {
-      fullscreen_loop_ = std::make_unique<base::RunLoop>();
-      fullscreen_loop_->Run();
-    }
-    ASSERT_FALSE(GetBrowserView()->immersive_mode_controller()->IsEnabled());
-  }
-
-  // ImmersiveModeController::Observer:
-  void OnImmersiveRevealStarted() override {
-    EXPECT_FALSE(reveal_started_);
-    EXPECT_FALSE(reveal_ended_);
-    reveal_started_ = true;
-    EXPECT_TRUE(GetBrowserView()->immersive_mode_controller()->IsRevealed());
-  }
-
-  void OnImmersiveRevealEnded() override {
-    EXPECT_TRUE(reveal_started_);
-    EXPECT_FALSE(reveal_ended_);
-    reveal_started_ = false;
-    reveal_ended_ = true;
-    EXPECT_FALSE(GetBrowserView()->immersive_mode_controller()->IsRevealed());
-    if (reveal_loop_ && reveal_loop_->running())
-      reveal_loop_->Quit();
-  }
-
-  void OnImmersiveModeControllerDestroyed() override {
-    DCHECK(scoped_observation_.IsObserving());
-    scoped_observation_.Reset();
-  }
-
-  void OnImmersiveFullscreenExited() override {
-    if (fullscreen_loop_ && fullscreen_loop_->running())
-      fullscreen_loop_->Quit();
-  }
-
- private:
-  Browser* browser_ = nullptr;
-  base::ScopedObservation<ImmersiveModeController,
-                          ImmersiveModeController::Observer>
-      scoped_observation_{this};
-  bool reveal_started_ = false;
-  bool reveal_ended_ = false;
-  std::unique_ptr<base::RunLoop> reveal_loop_;
-  std::unique_ptr<base::RunLoop> fullscreen_loop_;
-
-  DISALLOW_COPY_AND_ASSIGN(ImmersiveModeTester);
-};
-
-}  // namespace
-
 using views::Widget;
 
 using BrowserNonClientFrameViewChromeOSTest =
@@ -301,7 +130,8 @@
                        NonClientHitTest) {
   BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
   Widget* widget = browser_view->GetWidget();
-  BrowserNonClientFrameViewChromeOS* frame_view = GetFrameViewAsh(browser_view);
+  BrowserNonClientFrameViewChromeOS* frame_view =
+      GetFrameViewChromeOS(browser_view);
 
   // Click on the top edge of a restored window hits the top edge resize handle.
   const int kWindowWidth = 300;
@@ -325,7 +155,8 @@
     BrowserNonClientFrameViewChromeOSTouchTestWithWebUiTabStrip,
     TabletSplitViewNonClientHitTest) {
   BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
-  BrowserNonClientFrameViewChromeOS* frame_view = GetFrameViewAsh(browser_view);
+  BrowserNonClientFrameViewChromeOS* frame_view =
+      GetFrameViewChromeOS(browser_view);
   EXPECT_EQ(0, frame_view->GetBoundsForClientView().y());
 
   Widget* widget = browser_view->GetWidget();
@@ -343,7 +174,8 @@
     BrowserNonClientFrameViewChromeOSTouchTestWithWebUiTabStrip,
     TabletSplitViewSwipeDownFromEdgeOpensWebUiTabStrip) {
   BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
-  BrowserNonClientFrameViewChromeOS* frame_view = GetFrameViewAsh(browser_view);
+  BrowserNonClientFrameViewChromeOS* frame_view =
+      GetFrameViewChromeOS(browser_view);
   EXPECT_EQ(0, frame_view->GetBoundsForClientView().y());
 
   Widget* widget = browser_view->GetWidget();
@@ -373,7 +205,8 @@
                        NonImmersiveFullscreen) {
   BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
   content::WebContents* web_contents = browser_view->GetActiveWebContents();
-  BrowserNonClientFrameViewChromeOS* frame_view = GetFrameViewAsh(browser_view);
+  BrowserNonClientFrameViewChromeOS* frame_view =
+      GetFrameViewChromeOS(browser_view);
 
   // Frame paints by default.
   EXPECT_TRUE(frame_view->GetShouldPaint());
@@ -400,7 +233,8 @@
 IN_PROC_BROWSER_TEST_P(BrowserNonClientFrameViewChromeOSTestNoWebUiTabStrip,
                        AvatarDisplayOnTeleportedWindow) {
   BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
-  BrowserNonClientFrameViewChromeOS* frame_view = GetFrameViewAsh(browser_view);
+  BrowserNonClientFrameViewChromeOS* frame_view =
+      GetFrameViewChromeOS(browser_view);
   aura::Window* window = browser()->window()->GetNativeWindow();
 
   EXPECT_FALSE(MultiUserWindowManagerHelper::ShouldShowAvatar(window));
@@ -437,10 +271,10 @@
       BrowserView::GetBrowserViewForBrowser(browser());
 
   StartOverview();
-  EXPECT_EQ(0, GetFrameViewAsh(browser_view)->GetTopInset(false));
+  EXPECT_EQ(0, GetFrameViewChromeOS(browser_view)->GetTopInset(false));
 
   EndOverview();
-  EXPECT_EQ(0, GetFrameViewAsh(browser_view)->GetTopInset(false));
+  EXPECT_EQ(0, GetFrameViewChromeOS(browser_view)->GetTopInset(false));
 }
 
 IN_PROC_BROWSER_TEST_P(BrowserNonClientFrameViewChromeOSTest,
@@ -455,7 +289,8 @@
 IN_PROC_BROWSER_TEST_P(BrowserNonClientFrameViewChromeOSTest,
                        FrameMinSizeIsUpdated) {
   BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
-  BrowserNonClientFrameViewChromeOS* frame_view = GetFrameViewAsh(browser_view);
+  BrowserNonClientFrameViewChromeOS* frame_view =
+      GetFrameViewChromeOS(browser_view);
 
   BookmarkBarView* bookmark_bar = browser_view->GetBookmarkBarView();
   EXPECT_FALSE(bookmark_bar->GetVisible());
@@ -575,7 +410,8 @@
                        ImmersiveFullscreen) {
   BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
   content::WebContents* web_contents = browser_view->GetActiveWebContents();
-  BrowserNonClientFrameViewChromeOS* frame_view = GetFrameViewAsh(browser_view);
+  BrowserNonClientFrameViewChromeOS* frame_view =
+      GetFrameViewChromeOS(browser_view);
 
   ImmersiveModeController* immersive_mode_controller =
       browser_view->immersive_mode_controller();
@@ -954,7 +790,7 @@
 
     browser_view_ = BrowserView::GetBrowserViewForBrowser(app_browser_);
     BrowserNonClientFrameViewChromeOS* frame_view =
-        GetFrameViewAsh(browser_view_);
+        GetFrameViewChromeOS(browser_view_);
     frame_header_ = static_cast<chromeos::DefaultFrameHeader*>(
         frame_view->frame_header_.get());
 
@@ -1082,7 +918,7 @@
 // height of the caption buttons.
 IN_PROC_BROWSER_TEST_P(WebAppNonClientFrameViewAshTest, FrameSize) {
   SetUpWebApp();
-  const int inset = GetFrameViewAsh(browser_view_)->GetTopInset(false);
+  const int inset = GetFrameViewChromeOS(browser_view_)->GetTopInset(false);
   EXPECT_EQ(inset, views::GetCaptionButtonLayoutSize(
                        views::CaptionButtonLayoutSize::kNonBrowserCaption)
                        .height());
@@ -1296,7 +1132,7 @@
                        ActiveStateOfButtonMatchesWidget) {
   SetUpWebApp();
   chromeos::FrameCaptionButtonContainerView::TestApi test(
-      GetFrameViewAsh(browser_view_)->caption_button_container_);
+      GetFrameViewChromeOS(browser_view_)->caption_button_container_);
   EXPECT_TRUE(test.size_button()->GetPaintAsActive());
   EXPECT_TRUE(GetPaintingAsActive());
 
@@ -1321,7 +1157,8 @@
   Browser* popup_browser = BrowserList::GetInstance()->GetLastActive();
   BrowserView* browser_view =
       BrowserView::GetBrowserViewForBrowser(popup_browser);
-  BrowserNonClientFrameViewChromeOS* frame_view = GetFrameViewAsh(browser_view);
+  BrowserNonClientFrameViewChromeOS* frame_view =
+      GetFrameViewChromeOS(browser_view);
   EXPECT_FALSE(frame_view->web_app_frame_toolbar_for_testing());
 }
 
@@ -1360,7 +1197,8 @@
                        BrowserHeaderVisibilityInTabletModeTest) {
   BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
   Widget* widget = browser_view->GetWidget();
-  BrowserNonClientFrameViewChromeOS* frame_view = GetFrameViewAsh(browser_view);
+  BrowserNonClientFrameViewChromeOS* frame_view =
+      GetFrameViewChromeOS(browser_view);
 
   widget->GetNativeWindow()->SetProperty(
       aura::client::kResizeBehaviorKey,
@@ -1399,7 +1237,7 @@
   BrowserView* browser_view2 = BrowserView::GetBrowserViewForBrowser(browser2);
   Widget* widget2 = browser_view2->GetWidget();
   BrowserNonClientFrameViewChromeOS* frame_view2 =
-      GetFrameViewAsh(browser_view2);
+      GetFrameViewChromeOS(browser_view2);
   widget2->GetNativeWindow()->SetProperty(
       aura::client::kResizeBehaviorKey,
       aura::client::kResizeBehaviorCanMaximize |
@@ -1513,7 +1351,8 @@
 IN_PROC_BROWSER_TEST_P(HomeLauncherBrowserNonClientFrameViewChromeOSTest,
                        TabletModeBrowserCaptionButtonVisibility) {
   BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
-  BrowserNonClientFrameViewChromeOS* frame_view = GetFrameViewAsh(browser_view);
+  BrowserNonClientFrameViewChromeOS* frame_view =
+      GetFrameViewChromeOS(browser_view);
 
   EXPECT_TRUE(frame_view->caption_button_container_->GetVisible());
   ASSERT_NO_FATAL_FAILURE(
@@ -1539,8 +1378,8 @@
                        CaptionButtonVisibilityForBrowserLaunchedInTabletMode) {
   ASSERT_NO_FATAL_FAILURE(
       ash::ShellTestApi().SetTabletModeEnabledForTest(true));
-  EXPECT_FALSE(GetFrameViewAsh(BrowserView::GetBrowserViewForBrowser(
-                                   CreateBrowser(browser()->profile())))
+  EXPECT_FALSE(GetFrameViewChromeOS(BrowserView::GetBrowserViewForBrowser(
+                                        CreateBrowser(browser()->profile())))
                    ->caption_button_container_->GetVisible());
 }
 
@@ -1558,7 +1397,8 @@
   browser->window()->Show();
 
   BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser);
-  BrowserNonClientFrameViewChromeOS* frame_view = GetFrameViewAsh(browser_view);
+  BrowserNonClientFrameViewChromeOS* frame_view =
+      GetFrameViewChromeOS(browser_view);
   EXPECT_TRUE(frame_view->caption_button_container_->GetVisible());
 
   // Tablet mode doesn't affect app's caption button's visibility.
@@ -1604,7 +1444,8 @@
 IN_PROC_BROWSER_TEST_P(TabSearchFrameCaptionButtonTest,
                        TabSearchBubbleHostTest) {
   BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
-  BrowserNonClientFrameViewChromeOS* frame_view = GetFrameViewAsh(browser_view);
+  BrowserNonClientFrameViewChromeOS* frame_view =
+      GetFrameViewChromeOS(browser_view);
   ASSERT_TRUE(browser()->is_type_normal());
 
   chromeos::FrameCaptionButtonContainerView::TestApi test(
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_test_utils.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_test_utils.cc
new file mode 100644
index 0000000..dec3173
--- /dev/null
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_test_utils.cc
@@ -0,0 +1,74 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_test_utils.h"
+
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_commands.h"
+#include "chrome/browser/ui/exclusive_access/exclusive_access_manager.h"
+#include "chrome/browser/ui/exclusive_access/exclusive_access_test.h"
+#include "chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos.h"
+#include "chrome/browser/ui/views/frame/browser_view.h"
+#include "content/public/browser/web_contents.h"
+#include "content/public/browser/web_contents_delegate.h"
+#include "third_party/blink/public/mojom/frame/fullscreen.mojom.h"
+#include "ui/views/widget/widget.h"
+#include "ui/views/window/non_client_view.h"
+
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+#include "ash/public/cpp/shelf_test_api.h"
+#include "ash/shell.h"
+#include "ash/wm/overview/overview_controller.h"
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+
+// Toggles fullscreen mode and waits for the notification.
+void ToggleFullscreenModeAndWait(Browser* browser) {
+  FullscreenNotificationObserver waiter(browser);
+  chrome::ToggleFullscreenMode(browser);
+  waiter.Wait();
+}
+
+// Enters fullscreen mode for tab and waits for the notification.
+void EnterFullscreenModeForTabAndWait(Browser* browser,
+                                      content::WebContents* web_contents) {
+  FullscreenNotificationObserver waiter(browser);
+  static_cast<content::WebContentsDelegate*>(browser)
+      ->EnterFullscreenModeForTab(web_contents->GetMainFrame(), {});
+  waiter.Wait();
+}
+
+// Exits fullscreen mode for tab and waits for the notification.
+void ExitFullscreenModeForTabAndWait(Browser* browser,
+                                     content::WebContents* web_contents) {
+  FullscreenNotificationObserver waiter(browser);
+  browser->exclusive_access_manager()
+      ->fullscreen_controller()
+      ->ExitFullscreenModeForTab(web_contents);
+  waiter.Wait();
+}
+
+BrowserNonClientFrameViewChromeOS* GetFrameViewChromeOS(
+    BrowserView* browser_view) {
+  // We know we're using ChromeOS, so static cast.
+  auto* frame_view = static_cast<BrowserNonClientFrameViewChromeOS*>(
+      browser_view->GetWidget()->non_client_view()->frame_view());
+  DCHECK(frame_view);
+  return frame_view;
+}
+
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+void StartOverview() {
+  ash::Shell::Get()->overview_controller()->StartOverview(
+      ash::OverviewStartAction::kTests);
+}
+
+void EndOverview() {
+  ash::Shell::Get()->overview_controller()->EndOverview(
+      ash::OverviewEndAction::kTests);
+}
+
+bool IsShelfVisible() {
+  return ash::ShelfTestApi().IsVisible();
+}
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_test_utils.h b/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_test_utils.h
new file mode 100644
index 0000000..40d27938
--- /dev/null
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_test_utils.h
@@ -0,0 +1,44 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_NON_CLIENT_FRAME_VIEW_CHROMEOS_TEST_UTILS_H_
+#define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_NON_CLIENT_FRAME_VIEW_CHROMEOS_TEST_UTILS_H_
+
+#include "build/chromeos_buildflags.h"
+
+class Browser;
+class BrowserView;
+class BrowserNonClientFrameViewChromeOS;
+
+namespace content {
+class WebContents;
+}
+
+// Toggles fullscreen mode and waits for the notification.
+void ToggleFullscreenModeAndWait(Browser* browser);
+
+// Enters fullscreen mode for tab and waits for the notification.
+void EnterFullscreenModeForTabAndWait(Browser* browser,
+                                      content::WebContents* web_contents);
+
+// Exits fullscreen mode for tab and waits for the notification.
+void ExitFullscreenModeForTabAndWait(Browser* browser,
+                                     content::WebContents* web_contents);
+
+// Returns the non client frame view for |browser_view|.
+BrowserNonClientFrameViewChromeOS* GetFrameViewChromeOS(
+    BrowserView* browser_view);
+
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+// Starts overview session which displays an overview of all windows.
+void StartOverview();
+
+// Ends overview session.
+void EndOverview();
+
+// Returns true if the shelf is visible (e.g. not auto-hidden).
+bool IsShelfVisible();
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+
+#endif  // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_NON_CLIENT_FRAME_VIEW_CHROMEOS_TEST_UTILS_H_
diff --git a/chrome/browser/ui/views/frame/immersive_mode_tester.cc b/chrome/browser/ui/views/frame/immersive_mode_tester.cc
new file mode 100644
index 0000000..a16f21e
--- /dev/null
+++ b/chrome/browser/ui/views/frame/immersive_mode_tester.cc
@@ -0,0 +1,70 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/views/frame/immersive_mode_tester.h"
+
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_command_controller.h"
+#include "chrome/browser/ui/tabs/tab_strip_model.h"
+#include "chrome/browser/ui/views/frame/browser_view.h"
+
+ImmersiveModeTester::ImmersiveModeTester(Browser* browser) : browser_(browser) {
+  scoped_observation_.Observe(GetBrowserView()->immersive_mode_controller());
+}
+
+ImmersiveModeTester::~ImmersiveModeTester() = default;
+
+BrowserView* ImmersiveModeTester::GetBrowserView() {
+  return BrowserView::GetBrowserViewForBrowser(browser_);
+}
+
+void ImmersiveModeTester::RunCommand(int command, int expected_index) {
+  reveal_started_ = reveal_ended_ = false;
+  browser_->command_controller()->ExecuteCommand(command);
+  VerifyTabIndexAfterReveal(expected_index);
+}
+
+void ImmersiveModeTester::VerifyTabIndexAfterReveal(int expected_index) {
+  if (!reveal_ended_) {
+    reveal_loop_ = std::make_unique<base::RunLoop>();
+    reveal_loop_->Run();
+  }
+  EXPECT_TRUE(reveal_ended_);
+  EXPECT_EQ(expected_index, browser_->tab_strip_model()->active_index());
+}
+
+void ImmersiveModeTester::WaitForFullscreenToExit() {
+  if (GetBrowserView()->immersive_mode_controller()->IsEnabled()) {
+    fullscreen_loop_ = std::make_unique<base::RunLoop>();
+    fullscreen_loop_->Run();
+  }
+  ASSERT_FALSE(GetBrowserView()->immersive_mode_controller()->IsEnabled());
+}
+
+void ImmersiveModeTester::OnImmersiveRevealStarted() {
+  EXPECT_FALSE(reveal_started_);
+  EXPECT_FALSE(reveal_ended_);
+  reveal_started_ = true;
+  EXPECT_TRUE(GetBrowserView()->immersive_mode_controller()->IsRevealed());
+}
+
+void ImmersiveModeTester::OnImmersiveRevealEnded() {
+  EXPECT_TRUE(reveal_started_);
+  EXPECT_FALSE(reveal_ended_);
+  reveal_started_ = false;
+  reveal_ended_ = true;
+  EXPECT_FALSE(GetBrowserView()->immersive_mode_controller()->IsRevealed());
+  if (reveal_loop_ && reveal_loop_->running())
+    reveal_loop_->Quit();
+}
+
+void ImmersiveModeTester::OnImmersiveModeControllerDestroyed() {
+  DCHECK(scoped_observation_.IsObserving());
+  scoped_observation_.Reset();
+}
+
+void ImmersiveModeTester::OnImmersiveFullscreenExited() {
+  if (fullscreen_loop_ && fullscreen_loop_->running())
+    fullscreen_loop_->Quit();
+}
diff --git a/chrome/browser/ui/views/frame/immersive_mode_tester.h b/chrome/browser/ui/views/frame/immersive_mode_tester.h
new file mode 100644
index 0000000..e6c52ede
--- /dev/null
+++ b/chrome/browser/ui/views/frame/immersive_mode_tester.h
@@ -0,0 +1,99 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_TESTER_H_
+#define CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_TESTER_H_
+
+#include <memory>
+
+#include "base/run_loop.h"
+#include "base/scoped_observation.h"
+#include "base/test/scoped_feature_list.h"
+#include "chrome/browser/ui/ui_features.h"
+#include "chrome/browser/ui/views/frame/immersive_mode_controller.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/base/pointer/touch_ui_controller.h"
+
+class BrowserView;
+class Browser;
+
+// Template to be used as a base class for touch-optimized UI parameterized test
+// fixtures.
+template <class BaseTest>
+class TopChromeMdParamTest : public BaseTest,
+                             public ::testing::WithParamInterface<bool> {
+ public:
+  TopChromeMdParamTest() : touch_ui_scoper_(GetParam()) {}
+  ~TopChromeMdParamTest() override = default;
+
+ private:
+  ui::TouchUiController::TouchUiScoperForTesting touch_ui_scoper_;
+};
+
+// Template used as a base class for touch-optimized UI test fixtures.
+template <class BaseTest>
+class TopChromeTouchTest : public BaseTest {
+ public:
+  TopChromeTouchTest() : touch_ui_scoper_(true) {}
+  ~TopChromeTouchTest() override = default;
+
+ private:
+  ui::TouchUiController::TouchUiScoperForTesting touch_ui_scoper_;
+};
+
+// Template to be used when a test does not work with the webUI tabstrip.
+template <bool kEnabled, class BaseTest>
+class WebUiTabStripOverrideTest : public BaseTest {
+ public:
+  WebUiTabStripOverrideTest() {
+    if (kEnabled)
+      feature_override_.InitAndEnableFeature(features::kWebUITabStrip);
+    else
+      feature_override_.InitAndDisableFeature(features::kWebUITabStrip);
+  }
+  ~WebUiTabStripOverrideTest() override = default;
+
+ private:
+  base::test::ScopedFeatureList feature_override_;
+};
+
+// A helper class for immersive mode tests.
+class ImmersiveModeTester : public ImmersiveModeController::Observer {
+ public:
+  explicit ImmersiveModeTester(Browser* browser);
+  ImmersiveModeTester(const ImmersiveModeTester&) = delete;
+  ImmersiveModeTester& operator=(const ImmersiveModeTester&) = delete;
+  ~ImmersiveModeTester() override;
+
+  BrowserView* GetBrowserView();
+
+  // Runs the given command, verifies that a reveal happens and the expected tab
+  // is active.
+  void RunCommand(int command, int expected_index);
+
+  // Verifies a reveal has happened and the expected tab is active.
+  void VerifyTabIndexAfterReveal(int expected_index);
+
+  // Waits for the immersive fullscreen to end (or returns immediately if
+  // immersive fullscreen already ended).
+  void WaitForFullscreenToExit();
+
+  // ImmersiveModeController::Observer:
+  void OnImmersiveRevealStarted() override;
+  void OnImmersiveRevealEnded() override;
+  void OnImmersiveModeControllerDestroyed() override;
+  void OnImmersiveFullscreenExited() override;
+
+ private:
+  Browser* const browser_;
+  base::ScopedObservation<ImmersiveModeController,
+                          ImmersiveModeController::Observer>
+      scoped_observation_{this};
+  bool reveal_started_ = false;
+  bool reveal_ended_ = false;
+  std::unique_ptr<base::RunLoop> reveal_loop_;
+  std::unique_ptr<base::RunLoop> fullscreen_loop_;
+};
+
+#endif  // CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_TESTER_H_
diff --git a/chrome/browser/ui/views/sharing_hub/sharing_hub_bubble_action_button.cc b/chrome/browser/ui/views/sharing_hub/sharing_hub_bubble_action_button.cc
index be0ce19..2d27f37 100644
--- a/chrome/browser/ui/views/sharing_hub/sharing_hub_bubble_action_button.cc
+++ b/chrome/browser/ui/views/sharing_hub/sharing_hub_bubble_action_button.cc
@@ -8,6 +8,7 @@
 #include "chrome/browser/sharing_hub/sharing_hub_model.h"
 #include "chrome/browser/ui/views/hover_button.h"
 #include "chrome/browser/ui/views/sharing_hub/sharing_hub_bubble_view_impl.h"
+#include "chrome/grit/generated_resources.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/metadata/metadata_impl_macros.h"
 #include "ui/base/models/image_model.h"
@@ -58,6 +59,10 @@
       action_is_first_party_(action_info.is_first_party),
       action_name_for_metrics_(action_info.feature_name_for_metrics) {
   SetEnabled(true);
+  if (!action_is_first_party_) {
+    SetAccessibleName(l10n_util::GetStringFUTF16(
+        IDS_SHARING_HUB_SHARE_LABEL_ACCESSIBILITY, action_info.title));
+  }
 }
 
 SharingHubBubbleActionButton::~SharingHubBubbleActionButton() = default;
diff --git a/chrome/browser/ui/views/user_education/feature_promo_bubble_timeout.cc b/chrome/browser/ui/views/user_education/feature_promo_bubble_timeout.cc
index 6863af1..d4cb775d 100644
--- a/chrome/browser/ui/views/user_education/feature_promo_bubble_timeout.cc
+++ b/chrome/browser/ui/views/user_education/feature_promo_bubble_timeout.cc
@@ -6,13 +6,18 @@
 
 #include <memory>
 
+#include "base/bind.h"
 #include "chrome/browser/ui/views/user_education/feature_promo_bubble_view.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
 
 FeaturePromoBubbleTimeout::FeaturePromoBubbleTimeout(
     base::TimeDelta delay_no_interaction,
-    base::TimeDelta delay_after_interaction)
+    base::TimeDelta delay_after_interaction,
+    base::RepeatingClosure timeout_callback)
     : delay_no_interaction_(delay_no_interaction),
-      delay_after_interaction_(delay_after_interaction) {}
+      delay_after_interaction_(delay_after_interaction),
+      timeout_callback_(timeout_callback) {}
+FeaturePromoBubbleTimeout::~FeaturePromoBubbleTimeout() = default;
 
 void FeaturePromoBubbleTimeout::OnBubbleShown(
     FeaturePromoBubbleView* feature_promo_bubble_view) {
@@ -38,6 +43,12 @@
 
 void FeaturePromoBubbleTimeout::StartAutoCloseTimer(
     base::TimeDelta auto_close_duration) {
-  timer_.Start(FROM_HERE, auto_close_duration, feature_promo_bubble_view_,
-               &FeaturePromoBubbleView::CloseBubble);
+  timer_.Start(FROM_HERE, auto_close_duration, this,
+               &FeaturePromoBubbleTimeout::OnTimeout);
+}
+
+void FeaturePromoBubbleTimeout::OnTimeout() {
+  if (timeout_callback_)
+    timeout_callback_.Run();
+  feature_promo_bubble_view_->CloseBubble();
 }
diff --git a/chrome/browser/ui/views/user_education/feature_promo_bubble_timeout.h b/chrome/browser/ui/views/user_education/feature_promo_bubble_timeout.h
index 57686c3..2780206 100644
--- a/chrome/browser/ui/views/user_education/feature_promo_bubble_timeout.h
+++ b/chrome/browser/ui/views/user_education/feature_promo_bubble_timeout.h
@@ -5,8 +5,10 @@
 #ifndef CHROME_BROWSER_UI_VIEWS_USER_EDUCATION_FEATURE_PROMO_BUBBLE_TIMEOUT_H_
 #define CHROME_BROWSER_UI_VIEWS_USER_EDUCATION_FEATURE_PROMO_BUBBLE_TIMEOUT_H_
 
+#include "base/bind.h"
 #include "base/macros.h"
 #include "base/timer/timer.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
 
 class FeaturePromoBubbleView;
 
@@ -15,15 +17,21 @@
 class FeaturePromoBubbleTimeout {
  public:
   FeaturePromoBubbleTimeout(base::TimeDelta delay_no_interaction,
-                            base::TimeDelta delay_after_interaction);
+                            base::TimeDelta delay_after_interaction,
+                            base::RepeatingClosure timeout_callback);
+  ~FeaturePromoBubbleTimeout();
 
   void OnBubbleShown(FeaturePromoBubbleView* feature_promo_bubble_view);
   void OnMouseEntered();
   void OnMouseExited();
 
+  // Initiates callback on timeout of the timer and closes the bubble.
+  void OnTimeout();
+
  private:
   // Starts a timer to close the promo bubble.
   void StartAutoCloseTimer(base::TimeDelta auto_close_duration);
+
   // Timer used to auto close the bubble.
   base::OneShotTimer timer_;
 
@@ -32,6 +40,8 @@
   const base::TimeDelta delay_no_interaction_;
   const base::TimeDelta delay_after_interaction_;
 
+  base::RepeatingClosure timeout_callback_;
+
   DISALLOW_COPY_AND_ASSIGN(FeaturePromoBubbleTimeout);
 };
 
diff --git a/chrome/browser/ui/views/user_education/feature_promo_bubble_view.cc b/chrome/browser/ui/views/user_education/feature_promo_bubble_view.cc
index 6b3aa17..314e9d9 100644
--- a/chrome/browser/ui/views/user_education/feature_promo_bubble_view.cc
+++ b/chrome/browser/ui/views/user_education/feature_promo_bubble_view.cc
@@ -195,7 +195,8 @@
         params.timeout_no_interaction ? *params.timeout_no_interaction
                                       : kDelayDefault,
         params.timeout_after_interaction ? *params.timeout_after_interaction
-                                         : kDelayShort);
+                                         : kDelayShort,
+        params.timeout_callback);
   }
 
   const std::u16string body_text = std::move(params.body_text);
@@ -368,6 +369,10 @@
   return new FeaturePromoBubbleView(std::move(params));
 }
 
+FeaturePromoBubbleTimeout* FeaturePromoBubbleView::GetTimeoutForTesting() {
+  return feature_promo_bubble_timeout_.get();
+}
+
 void FeaturePromoBubbleView::CloseBubble() {
   GetWidget()->Close();
 }
diff --git a/chrome/browser/ui/views/user_education/feature_promo_bubble_view.h b/chrome/browser/ui/views/user_education/feature_promo_bubble_view.h
index f07cc9db..fd0c952 100644
--- a/chrome/browser/ui/views/user_education/feature_promo_bubble_view.h
+++ b/chrome/browser/ui/views/user_education/feature_promo_bubble_view.h
@@ -74,9 +74,12 @@
     absl::optional<int> tutorial_progress_current;
     absl::optional<int> tutorial_progress_max;
 
-    // Changes the bubble timeout. Intended for tests, avoid use.
+    // Changes the bubble timeout.
     absl::optional<base::TimeDelta> timeout_no_interaction;
     absl::optional<base::TimeDelta> timeout_after_interaction;
+
+    // Used to call feature specific logic on timeout.
+    base::RepeatingClosure timeout_callback;
   };
 
   // NOTE: Please read comment above class. This method shouldn't be
@@ -91,6 +94,8 @@
 
   views::Button* GetButtonForTesting(int index) const;
 
+  FeaturePromoBubbleTimeout* GetTimeoutForTesting();
+
  private:
   explicit FeaturePromoBubbleView(CreateParams params);
 
diff --git a/chrome/browser/ui/views/user_education/feature_promo_bubble_view_interactive_uitest.cc b/chrome/browser/ui/views/user_education/feature_promo_bubble_view_interactive_uitest.cc
index cfb9e241..3940808 100644
--- a/chrome/browser/ui/views/user_education/feature_promo_bubble_view_interactive_uitest.cc
+++ b/chrome/browser/ui/views/user_education/feature_promo_bubble_view_interactive_uitest.cc
@@ -11,6 +11,7 @@
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/interactive_test_utils.h"
 #include "content/public/test/browser_test.h"
+#include "ui/events/base_event_utils.h"
 #include "ui/views/focus/focus_manager.h"
 #include "ui/views/test/widget_test.h"
 
@@ -69,3 +70,38 @@
   // Browser view should lose activation.
   EXPECT_FALSE(browser_view->GetWidget()->IsActive());
 }
+
+namespace {
+struct MockTimeoutTarget {
+  int count = 0;
+
+  void OnTimeout() { count++; }
+};
+}  // namespace
+
+IN_PROC_BROWSER_TEST_F(FeaturePromoBubbleViewInteractiveTest,
+                       FeaturePromoBubbleTimeout) {
+  auto params = GetBubbleParams();
+
+  base::TimeDelta interaction_time = base::TimeDelta::FromMilliseconds(1);
+  params.timeout_no_interaction = interaction_time;
+  params.timeout_after_interaction = interaction_time;
+
+  MockTimeoutTarget timeout_target;
+  params.timeout_callback = base::BindRepeating(
+      &MockTimeoutTarget::OnTimeout, base::Unretained(&timeout_target));
+
+  auto* const bubble = FeaturePromoBubbleView::Create(std::move(params));
+  views::test::WidgetVisibleWaiter(bubble->GetWidget()).Wait();
+
+  // Check that the timeout exists in the bubble.
+  FeaturePromoBubbleTimeout* timeout = bubble->GetTimeoutForTesting();
+  EXPECT_NE(nullptr, timeout);
+  EXPECT_EQ(0, timeout_target.count);
+
+  // Force the timeout codepath to be called
+  timeout->OnTimeout();
+
+  // Check that the timeout has occurred
+  EXPECT_EQ(1, timeout_target.count);
+}
diff --git a/chrome/browser/ui/views/user_education/feature_promo_controller_views.cc b/chrome/browser/ui/views/user_education/feature_promo_controller_views.cc
index b29ef020..5e7e3d60 100644
--- a/chrome/browser/ui/views/user_education/feature_promo_controller_views.cc
+++ b/chrome/browser/ui/views/user_education/feature_promo_controller_views.cc
@@ -331,6 +331,11 @@
         weak_ptr_factory_.GetWeakPtr(), *current_iph_feature_);
     create_params.buttons.push_back(std::move(dismiss_button));
 
+    // Snooze should dismiss the feature promo if it times out.
+    create_params.timeout_callback = base::BindRepeating(
+        &FeaturePromoControllerViews::OnUserDismiss,
+        weak_ptr_factory_.GetWeakPtr(), *current_iph_feature_);
+
     if (views::PlatformStyle::kIsOkButtonLeading)
       std::swap(create_params.buttons[0], create_params.buttons[1]);
   }
diff --git a/chrome/browser/ui/webui/read_later/side_panel/bookmarks_page_handler.cc b/chrome/browser/ui/webui/read_later/side_panel/bookmarks_page_handler.cc
index 6454b61..ed5e7ca7 100644
--- a/chrome/browser/ui/webui/read_later/side_panel/bookmarks_page_handler.cc
+++ b/chrome/browser/ui/webui/read_later/side_panel/bookmarks_page_handler.cc
@@ -63,6 +63,10 @@
     AddItem(IDC_BOOKMARK_BAR_REMOVE);
     AddSeparator(ui::NORMAL_SEPARATOR);
 
+    AddItem(IDC_BOOKMARK_BAR_ADD_NEW_BOOKMARK);
+    AddItem(IDC_BOOKMARK_BAR_NEW_FOLDER);
+    AddSeparator(ui::NORMAL_SEPARATOR);
+
     AddItem(IDC_BOOKMARK_MANAGER);
   }
   ~BookmarkContextMenu() override = default;
diff --git a/chrome/browser/ui/webui/tab_search/tab_search.mojom b/chrome/browser/ui/webui/tab_search/tab_search.mojom
index 5e901da..f0cd6ac8 100644
--- a/chrome/browser/ui/webui/tab_search/tab_search.mojom
+++ b/chrome/browser/ui/webui/tab_search/tab_search.mojom
@@ -9,12 +9,13 @@
 import "mojo/public/mojom/base/token.mojom";
 import "url/mojom/url.mojom";
 
-// Collection of window details associated with a profile.
+// Collection of tab searching details associated with a profile.
 struct ProfileData {
   array<Window> windows;
   array<TabGroup> tab_groups;
   array<RecentlyClosedTab> recently_closed_tabs;
   array<RecentlyClosedTabGroup> recently_closed_tab_groups;
+  bool recently_closed_section_expanded;
 };
 
 // Properties and tabs associated with a window.
@@ -163,6 +164,10 @@
   // Open a recently closed tab or tab group.
   OpenRecentlyClosedEntry(int32 session_id);
 
+  // Save a user's preference for the state of the expandable 'Recently Closed'
+  // list section.
+  SaveRecentlyClosedExpandedPref(bool expanded);
+
   // Notify the backend that the UI is ready to be shown.
   ShowUI();
 };
diff --git a/chrome/browser/ui/webui/tab_search/tab_search_page_handler.cc b/chrome/browser/ui/webui/tab_search/tab_search_page_handler.cc
index 3896533..ebcf759 100644
--- a/chrome/browser/ui/webui/tab_search/tab_search_page_handler.cc
+++ b/chrome/browser/ui/webui/tab_search/tab_search_page_handler.cc
@@ -30,6 +30,7 @@
 #include "chrome/browser/ui/tabs/tab_renderer_data.h"
 #include "chrome/browser/ui/tabs/tab_strip_model_observer.h"
 #include "chrome/browser/ui/ui_features.h"
+#include "chrome/browser/ui/webui/tab_search/tab_search_prefs.h"
 #include "chrome/browser/ui/webui/util/image_util.h"
 #include "chrome/common/webui_url_constants.h"
 #include "ui/base/l10n/time_format.h"
@@ -188,6 +189,11 @@
       WindowOpenDisposition::NEW_FOREGROUND_TAB);
 }
 
+void TabSearchPageHandler::SaveRecentlyClosedExpandedPref(bool expanded) {
+  Profile::FromWebUI(web_ui_)->GetPrefs()->SetBoolean(
+      tab_search_prefs::kTabSearchRecentlyClosedSectionExpanded, expanded);
+}
+
 void TabSearchPageHandler::ShowUI() {
   auto embedder = webui_controller_->embedder();
   if (embedder)
@@ -245,6 +251,10 @@
                            tab_group_ids, profile_data->tab_groups,
                            tab_dedup_keys);
   DCHECK(features::kTabSearchRecentlyClosedTabCountThreshold.Get() >= 0);
+
+  profile_data->recently_closed_section_expanded =
+      Profile::FromWebUI(web_ui_)->GetPrefs()->GetBoolean(
+          tab_search_prefs::kTabSearchRecentlyClosedSectionExpanded);
   return profile_data;
 }
 
diff --git a/chrome/browser/ui/webui/tab_search/tab_search_page_handler.h b/chrome/browser/ui/webui/tab_search/tab_search_page_handler.h
index 1ec80987..c9994b45 100644
--- a/chrome/browser/ui/webui/tab_search/tab_search_page_handler.h
+++ b/chrome/browser/ui/webui/tab_search/tab_search_page_handler.h
@@ -50,6 +50,7 @@
   void SwitchToTab(
       tab_search::mojom::SwitchToTabInfoPtr switch_to_tab_info) override;
   void OpenRecentlyClosedEntry(int32_t session_id) override;
+  void SaveRecentlyClosedExpandedPref(bool expanded) override;
   void ShowUI() override;
 
   // TabStripModelObserver:
diff --git a/chrome/browser/ui/webui/tab_search/tab_search_page_handler_unittest.cc b/chrome/browser/ui/webui/tab_search/tab_search_page_handler_unittest.cc
index 7d0baf8..522904f 100644
--- a/chrome/browser/ui/webui/tab_search/tab_search_page_handler_unittest.cc
+++ b/chrome/browser/ui/webui/tab_search/tab_search_page_handler_unittest.cc
@@ -742,4 +742,40 @@
   handler()->GetProfileData(std::move(callback1));
 }
 
+TEST_F(TabSearchPageHandlerTest, RecentlyClosedSectionExpandedUserPref) {
+  TabRestoreServiceFactory::GetInstance()->SetTestingFactory(
+      profile(),
+      base::BindRepeating(&TabSearchPageHandlerTest::GetTabRestoreService));
+
+  AddTabWithTitle(browser1(), GURL(kTabUrl1), kTabName1);
+  AddTabWithTitle(browser1(), GURL(kTabUrl2), kTabName2);
+
+  int tab_id = extensions::ExtensionTabUtil::GetTabId(
+      browser1()->tab_strip_model()->GetWebContentsAt(0));
+  handler()->CloseTab(tab_id);
+
+  EXPECT_CALL(page_, TabsRemoved(_)).Times(2);
+  EXPECT_CALL(page_, TabUpdated(_)).Times(1);
+
+  tab_search::mojom::PageHandler::GetProfileDataCallback callback1 =
+      base::BindLambdaForTesting(
+          [&](tab_search::mojom::ProfileDataPtr profile_tabs) {
+            auto& tabs = profile_tabs->windows[0]->tabs;
+            ASSERT_EQ(1u, tabs.size());
+            ExpectNewTab(tabs[0].get(), kTabUrl1, kTabName1, 0);
+            auto& recently_closed_tabs = profile_tabs->recently_closed_tabs;
+            ASSERT_EQ(1u, recently_closed_tabs.size());
+            ASSERT_TRUE(profile_tabs->recently_closed_section_expanded);
+          });
+  handler()->GetProfileData(std::move(callback1));
+
+  handler()->SaveRecentlyClosedExpandedPref(false);
+  tab_search::mojom::PageHandler::GetProfileDataCallback callback2 =
+      base::BindLambdaForTesting(
+          [&](tab_search::mojom::ProfileDataPtr profile_tabs) {
+            ASSERT_FALSE(profile_tabs->recently_closed_section_expanded);
+          });
+  handler()->GetProfileData(std::move(callback2));
+}
+
 }  // namespace
diff --git a/chrome/browser/ui/webui/tab_search/tab_search_prefs.cc b/chrome/browser/ui/webui/tab_search/tab_search_prefs.cc
new file mode 100644
index 0000000..3b38561
--- /dev/null
+++ b/chrome/browser/ui/webui/tab_search/tab_search_prefs.cc
@@ -0,0 +1,20 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/webui/tab_search/tab_search_prefs.h"
+#include "components/pref_registry/pref_registry_syncable.h"
+#include "components/prefs/pref_registry_simple.h"
+
+namespace tab_search_prefs {
+
+// Boolean pref indicating whether the Tab Search recently closed section is in
+// an expanded state.
+const char kTabSearchRecentlyClosedSectionExpanded[] =
+    "tab_search.recently_closed_expanded";
+
+void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
+  registry->RegisterBooleanPref(kTabSearchRecentlyClosedSectionExpanded, true);
+}
+
+}  // namespace tab_search_prefs
diff --git a/chrome/browser/ui/webui/tab_search/tab_search_prefs.h b/chrome/browser/ui/webui/tab_search/tab_search_prefs.h
new file mode 100644
index 0000000..f10e60b
--- /dev/null
+++ b/chrome/browser/ui/webui/tab_search/tab_search_prefs.h
@@ -0,0 +1,22 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_WEBUI_TAB_SEARCH_TAB_SEARCH_PREFS_H_
+#define CHROME_BROWSER_UI_WEBUI_TAB_SEARCH_TAB_SEARCH_PREFS_H_
+
+namespace user_prefs {
+
+class PrefRegistrySyncable;
+
+}  // namespace user_prefs
+
+namespace tab_search_prefs {
+
+extern const char kTabSearchRecentlyClosedSectionExpanded[];
+
+void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
+
+}  // namespace tab_search_prefs
+
+#endif  // CHROME_BROWSER_UI_WEBUI_TAB_SEARCH_TAB_SEARCH_PREFS_H_
diff --git a/chrome/browser/ui/webui/tab_search/tab_search_ui.cc b/chrome/browser/ui/webui/tab_search/tab_search_ui.cc
index 90422806..0bc5e549 100644
--- a/chrome/browser/ui/webui/tab_search/tab_search_ui.cc
+++ b/chrome/browser/ui/webui/tab_search/tab_search_ui.cc
@@ -51,6 +51,8 @@
       {"oneTab", IDS_TAB_SEARCH_ONE_TAB},
       {"tabCount", IDS_TAB_SEARCH_TAB_COUNT},
       {"recentlyClosed", IDS_TAB_SEARCH_RECENTLY_CLOSED},
+      {"recentlyClosedExpandA11yLabel",
+       IDS_TAB_SEARCH_EXPAND_RECENTLY_CLOSED_ENTRIES},
   };
   source->AddLocalizedStrings(kStrings);
   source->AddBoolean("useRipples", views::PlatformStyle::kUseRipples);
diff --git a/chrome/browser/ui/webui/whats_new/whats_new_handler.cc b/chrome/browser/ui/webui/whats_new/whats_new_handler.cc
new file mode 100644
index 0000000..978671ad
--- /dev/null
+++ b/chrome/browser/ui/webui/whats_new/whats_new_handler.cc
@@ -0,0 +1,141 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/webui/whats_new/whats_new_handler.h"
+
+#include "base/bind.h"
+#include "base/values.h"
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_finder.h"
+#include "chrome/browser/ui/webui/whats_new/whats_new_util.h"
+#include "chrome/common/chrome_version.h"
+#include "chrome/common/pref_names.h"
+#include "chrome/common/webui_url_constants.h"
+#include "components/bookmarks/common/bookmark_pref_names.h"
+#include "components/prefs/pref_change_registrar.h"
+#include "components/prefs/pref_service.h"
+#include "content/public/browser/storage_partition.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"
+#include "url/gurl.h"
+
+const int64_t kMaxDownloadBytes = 1024 * 1024;
+
+WhatsNewHandler::WhatsNewHandler() = default;
+
+WhatsNewHandler::~WhatsNewHandler() = default;
+
+void WhatsNewHandler::RegisterMessages() {
+  web_ui()->RegisterMessageCallback(
+      "initialize", base::BindRepeating(&WhatsNewHandler::HandleInitialize,
+                                        base::Unretained(this)));
+}
+
+void WhatsNewHandler::OnJavascriptAllowed() {}
+
+void WhatsNewHandler::OnJavascriptDisallowed() {
+  weak_ptr_factory_.InvalidateWeakPtrs();
+}
+
+void WhatsNewHandler::HandleInitialize(const base::ListValue* args) {
+  CHECK_EQ(2U, args->GetSize());
+  std::string callback_id;
+  CHECK(args->GetString(0, &callback_id));
+  bool is_auto;
+  CHECK(args->GetBoolean(1, &is_auto));
+
+  AllowJavascript();
+  if (whats_new::g_force_enable_for_tests) {
+    // Just resolve with failure. This shows the error page which is all local
+    // content, so that we don't trigger potentially flaky network requests in
+    // tests.
+    ResolveJavascriptCallback(base::Value(callback_id), base::Value());
+    return;
+  }
+
+  Fetch(GURL(whats_new::kChromeWhatsNewURL),
+        base::BindOnce(&WhatsNewHandler::OnFetchResult,
+                       weak_ptr_factory_.GetWeakPtr(), callback_id, is_auto));
+}
+
+void WhatsNewHandler::Fetch(const GURL& url, OnFetchResultCallback on_result) {
+  auto traffic_annotation =
+      net::DefineNetworkTrafficAnnotation("whats_new_handler", R"(
+        semantics {
+          sender: "What's New Page"
+          description: "Attempts to fetch the content for the What's New page "
+            "to ensure it loads successfully."
+          trigger:
+            "Restarting Chrome after an update. Desktop only."
+          data:
+            "No data sent, other than URL of What's New. "
+            "Data does not contain PII."
+          destination: GOOGLE_OWNED_SERVICE
+        }
+        policy {
+          cookies_allowed: NO
+          setting:
+            "None"
+          chrome_policy {
+            PromotionalTabsEnabled {
+              PromotionalTabsEnabled: false
+            }
+          }
+        })");
+  Profile* profile = Profile::FromWebUI(web_ui());
+  auto url_loader_factory = profile->GetDefaultStoragePartition()
+                                ->GetURLLoaderFactoryForBrowserProcess();
+  auto request = std::make_unique<network::ResourceRequest>();
+  request->url = url;
+  auto loader =
+      network::SimpleURLLoader::Create(std::move(request), traffic_annotation);
+  loader->DownloadToString(url_loader_factory.get(),
+                           base::BindOnce(&WhatsNewHandler::OnResponseLoaded,
+                                          weak_ptr_factory_.GetWeakPtr(),
+                                          loader.get(), std::move(on_result)),
+                           kMaxDownloadBytes);
+  loader_map_.insert({loader.get(), std::move(loader)});
+}
+
+void WhatsNewHandler::OnResponseLoaded(const network::SimpleURLLoader* loader,
+                                       OnFetchResultCallback on_result,
+                                       std::unique_ptr<std::string> body) {
+  bool success = loader->NetError() == net::OK && loader->ResponseInfo() &&
+                 loader->ResponseInfo()->headers &&
+                 loader->ResponseInfo()->headers->response_code() >= 200 &&
+                 loader->ResponseInfo()->headers->response_code() <= 299 &&
+                 body;
+  std::move(on_result).Run(success, std::move(body));
+  loader_map_.erase(loader);
+}
+
+void WhatsNewHandler::OnFetchResult(const std::string& callback_id,
+                                    bool is_auto,
+                                    bool success,
+                                    std::unique_ptr<std::string> body) {
+  if (!success && is_auto) {
+    // Open NTP if the page wasn't retrieved and What's New was opened
+    // automatically.
+    Browser* browser = chrome::FindLastActive();
+    if (!browser)
+      return;
+
+    content::OpenURLParams params(GURL(chrome::kChromeUINewTabPageURL),
+                                  content::Referrer(),
+                                  WindowOpenDisposition::CURRENT_TAB,
+                                  ui::PAGE_TRANSITION_AUTO_BOOKMARK, false);
+    browser->OpenURL(params);
+  } else {
+    // Update pref if successfully shown automatically.
+    if (success && is_auto) {
+      whats_new::SetLastVersion(g_browser_process->local_state());
+    }
+    ResolveJavascriptCallback(
+        base::Value(callback_id),
+        success ? base::Value(whats_new::kChromeWhatsNewURL) : base::Value());
+  }
+}
diff --git a/chrome/browser/ui/webui/whats_new/whats_new_handler.h b/chrome/browser/ui/webui/whats_new/whats_new_handler.h
new file mode 100644
index 0000000..41f5cf14
--- /dev/null
+++ b/chrome/browser/ui/webui/whats_new/whats_new_handler.h
@@ -0,0 +1,54 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_WEBUI_WHATS_NEW_WHATS_NEW_HANDLER_H_
+#define CHROME_BROWSER_UI_WEBUI_WHATS_NEW_WHATS_NEW_HANDLER_H_
+
+#include <unordered_map>
+
+#include "base/memory/weak_ptr.h"
+#include "content/public/browser/web_ui_message_handler.h"
+
+namespace base {
+class ListValue;
+}
+
+namespace network {
+class SimpleURLLoader;
+}
+
+// Page handler for chrome://whats-new.
+class WhatsNewHandler : public content::WebUIMessageHandler {
+ public:
+  WhatsNewHandler();
+  ~WhatsNewHandler() override;
+  WhatsNewHandler(const WhatsNewHandler&) = delete;
+  WhatsNewHandler& operator=(const WhatsNewHandler&) = delete;
+
+ private:
+  void HandleInitialize(const base::ListValue* args);
+  typedef base::OnceCallback<void(bool success,
+                                  std::unique_ptr<std::string> body)>
+      OnFetchResultCallback;
+  void Fetch(const GURL& url, OnFetchResultCallback on_result);
+  void OnResponseLoaded(const network::SimpleURLLoader* loader,
+                        OnFetchResultCallback on_result,
+                        std::unique_ptr<std::string> body);
+  void OnFetchResult(const std::string& callback_id,
+                     bool is_auto,
+                     bool success,
+                     std::unique_ptr<std::string> body);
+
+  // content::WebUIMessageHandler:
+  void RegisterMessages() override;
+  void OnJavascriptAllowed() override;
+  void OnJavascriptDisallowed() override;
+
+  std::unordered_map<const network::SimpleURLLoader*,
+                     std::unique_ptr<network::SimpleURLLoader>>
+      loader_map_;
+  base::WeakPtrFactory<WhatsNewHandler> weak_ptr_factory_{this};
+};
+
+#endif  // CHROME_BROWSER_UI_WEBUI_WHATS_NEW_WHATS_NEW_HANDLER_H_
diff --git a/chrome/browser/ui/webui/whats_new/whats_new_ui.cc b/chrome/browser/ui/webui/whats_new/whats_new_ui.cc
index adfab6d..ca27e4f 100644
--- a/chrome/browser/ui/webui/whats_new/whats_new_ui.cc
+++ b/chrome/browser/ui/webui/whats_new/whats_new_ui.cc
@@ -5,11 +5,13 @@
 #include "chrome/browser/ui/webui/whats_new/whats_new_ui.h"
 
 #include "base/feature_list.h"
+#include "base/strings/stringprintf.h"
 #include "base/version.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/ui_features.h"
 #include "chrome/browser/ui/webui/webui_util.h"
-#include "chrome/common/chrome_version.h"
+#include "chrome/browser/ui/webui/whats_new/whats_new_handler.h"
+#include "chrome/browser/ui/webui/whats_new/whats_new_util.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/common/webui_url_constants.h"
 #include "chrome/grit/generated_resources.h"
@@ -19,6 +21,7 @@
 #include "components/prefs/pref_service.h"
 #include "components/strings/grit/components_strings.h"
 #include "content/public/browser/web_ui_data_source.h"
+#include "services/network/public/mojom/content_security_policy.mojom.h"
 #include "ui/base/webui/web_ui_util.h"
 
 namespace {
@@ -36,7 +39,11 @@
       {"reloadButton", IDS_RELOAD},
   };
   source->AddLocalizedStrings(kStrings);
-
+  // Allow embedding of iframe from chrome.com
+  source->OverrideContentSecurityPolicy(
+      network::mojom::CSPDirectiveName::ChildSrc,
+      base::StringPrintf("child-src https: %s;",
+                         whats_new::kChromeWhatsNewURLShort));
   return source;
 }
 
@@ -47,34 +54,11 @@
   registry->RegisterIntegerPref(prefs::kLastWhatsNewVersion, 0);
 }
 
-// static
-bool WhatsNewUI::ShouldShowForState(PrefService* local_state) {
-  if (!local_state)
-    return false;
-
-  if (!base::FeatureList::IsEnabled(features::kChromeWhatsNewUI))
-    return false;
-
-  int last_version = local_state->GetInteger(prefs::kLastWhatsNewVersion);
-  return CHROME_VERSION_MAJOR > last_version;
-}
-
-// static
-void WhatsNewUI::SetLastVersion(PrefService* local_state) {
-  if (!local_state) {
-    return;
-  }
-
-  local_state->SetInteger(prefs::kLastWhatsNewVersion, CHROME_VERSION_MAJOR);
-}
-
 WhatsNewUI::WhatsNewUI(content::WebUI* web_ui) : WebUIController(web_ui) {
   content::WebUIDataSource* source =
       CreateWhatsNewUIHtmlSource(Profile::FromWebUI(web_ui));
   content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), source);
-
-  // TODO(rbpotter): Once we have a way to detect that the content has loaded
-  // successfully, update the kLastWhatsNewVersion pref.
+  web_ui->AddMessageHandler(std::make_unique<WhatsNewHandler>());
 }
 
 WhatsNewUI::~WhatsNewUI() = default;
diff --git a/chrome/browser/ui/webui/whats_new/whats_new_ui.h b/chrome/browser/ui/webui/whats_new/whats_new_ui.h
index 24da7f1..f1af727 100644
--- a/chrome/browser/ui/webui/whats_new/whats_new_ui.h
+++ b/chrome/browser/ui/webui/whats_new/whats_new_ui.h
@@ -13,7 +13,6 @@
 }
 
 class PrefRegistrySimple;
-class PrefService;
 
 // The Web UI controller for the chrome://whats-new page.
 class WhatsNewUI : public content::WebUIController {
@@ -22,8 +21,6 @@
   ~WhatsNewUI() override;
 
   static void RegisterLocalStatePrefs(PrefRegistrySimple* registry);
-  static bool ShouldShowForState(PrefService* local_state);
-  static void SetLastVersion(PrefService* local_state);
 
   WhatsNewUI(const WhatsNewUI&) = delete;
   WhatsNewUI& operator=(const WhatsNewUI&) = delete;
diff --git a/chrome/browser/ui/webui/whats_new/whats_new_util.cc b/chrome/browser/ui/webui/whats_new/whats_new_util.cc
new file mode 100644
index 0000000..ebfc546
--- /dev/null
+++ b/chrome/browser/ui/webui/whats_new/whats_new_util.cc
@@ -0,0 +1,36 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/webui/whats_new/whats_new_util.h"
+#include "base/feature_list.h"
+#include "chrome/browser/ui/ui_features.h"
+#include "chrome/common/chrome_version.h"
+#include "chrome/common/pref_names.h"
+#include "components/prefs/pref_service.h"
+
+namespace whats_new {
+const char kChromeWhatsNewURL[] = "https://www.google.com/chrome/whatsnew/";
+const char kChromeWhatsNewURLShort[] = "google.com/chrome/whatsnew/";
+
+bool g_force_enable_for_tests = false;
+
+bool ShouldShowForState(PrefService* local_state) {
+  if (!local_state)
+    return false;
+
+  if (!base::FeatureList::IsEnabled(features::kChromeWhatsNewUI))
+    return false;
+
+  int last_version = local_state->GetInteger(prefs::kLastWhatsNewVersion);
+  return CHROME_VERSION_MAJOR > last_version;
+}
+
+void SetLastVersion(PrefService* local_state) {
+  if (!local_state) {
+    return;
+  }
+
+  local_state->SetInteger(prefs::kLastWhatsNewVersion, CHROME_VERSION_MAJOR);
+}
+}  // namespace whats_new
diff --git a/chrome/browser/ui/webui/whats_new/whats_new_util.h b/chrome/browser/ui/webui/whats_new/whats_new_util.h
new file mode 100644
index 0000000..47c6820
--- /dev/null
+++ b/chrome/browser/ui/webui/whats_new/whats_new_util.h
@@ -0,0 +1,22 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_WEBUI_WHATS_NEW_WHATS_NEW_UTIL_H_
+#define CHROME_BROWSER_UI_WEBUI_WHATS_NEW_WHATS_NEW_UTIL_H_
+
+class PrefService;
+
+namespace whats_new {
+extern const char kChromeWhatsNewURL[];
+extern const char kChromeWhatsNewURLShort[];
+
+// Allows tests to force What's New to stay open even if loading remote content
+// doesn't succeed, since this does not work in tests.
+extern bool g_force_enable_for_tests;
+
+bool ShouldShowForState(PrefService* local_state);
+void SetLastVersion(PrefService* local_state);
+}  // namespace whats_new
+
+#endif  // CHROME_BROWSER_UI_WEBUI_WHATS_NEW_WHATS_NEW_UTIL_H_
diff --git a/chrome/browser/ui/window_sizer/window_sizer.cc b/chrome/browser/ui/window_sizer/window_sizer.cc
index bbfa686..17262e7 100644
--- a/chrome/browser/ui/window_sizer/window_sizer.cc
+++ b/chrome/browser/ui/window_sizer/window_sizer.cc
@@ -7,8 +7,8 @@
 #include <utility>
 
 #include "base/command_line.h"
-#include "base/cxx17_backports.h"
 #include "base/macros.h"
+#include "base/numerics/ranges.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
 #include "chrome/browser/browser_process.h"
@@ -312,10 +312,12 @@
       !work_area.Contains(*bounds)) {
     bounds->set_width(std::min(bounds->width(), work_area.width()));
     bounds->set_height(std::min(bounds->height(), work_area.height()));
-    bounds->set_x(base::clamp(bounds->x(), work_area.x(),
-                              work_area.right() - bounds->width()));
-    bounds->set_y(base::clamp(bounds->y(), work_area.y(),
-                              work_area.bottom() - bounds->height()));
+    // TODO(crbug.com/1235666): Make sure these use correct ranges (lo <= hi)
+    // and migrate to base::clamp().
+    bounds->set_x(base::BrokenClampThatShouldNotBeUsed(
+        bounds->x(), work_area.x(), work_area.right() - bounds->width()));
+    bounds->set_y(base::BrokenClampThatShouldNotBeUsed(
+        bounds->y(), work_area.y(), work_area.bottom() - bounds->height()));
   }
 
 #if defined(OS_MAC)
@@ -343,8 +345,12 @@
   const int min_x = work_area.x() + kMinVisibleWidth - bounds->width();
   const int max_y = work_area.bottom() - kMinVisibleHeight;
   const int max_x = work_area.right() - kMinVisibleWidth;
-  bounds->set_y(base::clamp(bounds->y(), min_y, max_y));
-  bounds->set_x(base::clamp(bounds->x(), min_x, max_x));
+  // TODO(crbug.com/1235666): Make sure these use correct ranges (lo <= hi)
+  // and migrate to base::clamp().
+  bounds->set_y(
+      base::BrokenClampThatShouldNotBeUsed(bounds->y(), min_y, max_y));
+  bounds->set_x(
+      base::BrokenClampThatShouldNotBeUsed(bounds->x(), min_x, max_x));
 #endif  // defined(OS_MAC)
 }
 
diff --git a/chrome/browser/usb/web_usb_detector.cc b/chrome/browser/usb/web_usb_detector.cc
index b35d1d1a..340754c 100644
--- a/chrome/browser/usb/web_usb_detector.cc
+++ b/chrome/browser/usb/web_usb_detector.cc
@@ -184,14 +184,6 @@
 WebUsbDetector::~WebUsbDetector() = default;
 
 void WebUsbDetector::Initialize() {
-#if defined(OS_WIN)
-  // The WebUSB device detector is disabled on Windows due to jank and hangs
-  // caused by enumerating devices. The new USB backend is designed to resolve
-  // these issues so enable it for testing. https://crbug.com/656702
-  if (!base::FeatureList::IsEnabled(device::kNewUsbBackend))
-    return;
-#endif  // defined(OS_WIN)
-
   // Tests may set a fake manager.
   if (!device_manager_) {
     // Receive mojo::Remote<UsbDeviceManager> from DeviceService.
diff --git a/chrome/browser/web_applications/app_service/web_apps_chromeos_browsertest.cc b/chrome/browser/web_applications/app_service/web_apps_chromeos_browsertest.cc
index 994c48a..0ee8c660 100644
--- a/chrome/browser/web_applications/app_service/web_apps_chromeos_browsertest.cc
+++ b/chrome/browser/web_applications/app_service/web_apps_chromeos_browsertest.cc
@@ -18,6 +18,8 @@
 #include "chrome/browser/ui/web_applications/web_app_controller_browsertest.h"
 #include "chrome/browser/web_applications/components/web_app_id.h"
 #include "chrome/common/chrome_features.h"
+#include "chrome/test/base/ui_test_utils.h"
+#include "content/public/browser/notification_service.h"
 #include "content/public/test/browser_test.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
@@ -25,6 +27,7 @@
 #include "ui/base/models/image_model.h"
 #include "ui/base/models/simple_menu_model.h"
 #include "ui/display/display.h"
+#include "ui/events/event_constants.h"
 #include "ui/gfx/image/image.h"
 #include "url/gurl.h"
 
@@ -82,7 +85,7 @@
   apps::AppServiceProxyFactory::GetForProfile(profile())
       ->FlushMojoCallsForTesting();
 
-  std::unique_ptr<ui::SimpleMenuModel> result;
+  std::unique_ptr<ui::SimpleMenuModel> menu_model;
   {
     ash::ShelfModel* const shelf_model = ash::ShelfModel::Get();
     shelf_model->PinAppWithID(app_id);
@@ -92,8 +95,9 @@
     delegate->GetContextMenu(
         display::Display::GetDefaultDisplay().id(),
         base::BindLambdaForTesting(
-            [&run_loop, &result](std::unique_ptr<ui::SimpleMenuModel> model) {
-              result = std::move(model);
+            [&run_loop,
+             &menu_model](std::unique_ptr<ui::SimpleMenuModel> model) {
+              menu_model = std::move(model);
               run_loop.Quit();
             }));
     run_loop.Run();
@@ -101,24 +105,32 @@
 
   // Shortcuts appear last in the context menu.
   // See /web_app_shortcuts/shortcuts.json for shortcut icon definitions.
-  int index = result->GetItemCount() - 11;
+  int index = menu_model->GetItemCount() - 11;
 
   // Purpose |any| by default.
-  CheckShortcut(*result, index++, 0, u"One", SK_ColorGREEN);
-  CheckSeparator(*result, index++);
+  CheckShortcut(*menu_model, index++, 0, u"One", SK_ColorGREEN);
+  CheckSeparator(*menu_model, index++);
   // Purpose |maskable| takes precedence over |any|.
-  CheckShortcut(*result, index++, 1, u"Two", SK_ColorBLUE);
-  CheckSeparator(*result, index++);
+  CheckShortcut(*menu_model, index++, 1, u"Two", SK_ColorBLUE);
+  CheckSeparator(*menu_model, index++);
   // Purpose |any|.
-  CheckShortcut(*result, index++, 2, u"Three", SK_ColorYELLOW);
-  CheckSeparator(*result, index++);
+  CheckShortcut(*menu_model, index++, 2, u"Three", SK_ColorYELLOW);
+  CheckSeparator(*menu_model, index++);
   // Purpose |any| and |maskable|.
-  CheckShortcut(*result, index++, 3, u"Four", SK_ColorCYAN);
-  CheckSeparator(*result, index++);
+  CheckShortcut(*menu_model, index++, 3, u"Four", SK_ColorCYAN);
+  CheckSeparator(*menu_model, index++);
   // Purpose |maskable|.
-  CheckShortcut(*result, index++, 4, u"Five", SK_ColorMAGENTA);
-  CheckSeparator(*result, index++);
+  CheckShortcut(*menu_model, index++, 4, u"Five", SK_ColorMAGENTA);
+  CheckSeparator(*menu_model, index++);
   // No icons.
-  CheckShortcut(*result, index++, 5, u"Six", absl::nullopt);
-  EXPECT_EQ(index, result->GetItemCount());
+  CheckShortcut(*menu_model, index++, 5, u"Six", absl::nullopt);
+  EXPECT_EQ(index, menu_model->GetItemCount());
+
+  const int command_id = ash::LAUNCH_APP_SHORTCUT_FIRST + 3;
+  ui_test_utils::UrlLoadObserver url_observer(
+      https_server()->GetURL("/web_app_shortcuts/shortcuts.html#four"),
+      content::NotificationService::AllSources());
+  menu_model->ActivatedAt(menu_model->GetIndexOfCommandId(command_id),
+                          ui::EF_LEFT_MOUSE_BUTTON);
+  url_observer.Wait();
 }
diff --git a/chrome/browser/web_applications/system_web_apps/test/system_web_app_browsertest_base.cc b/chrome/browser/web_applications/system_web_apps/test/system_web_app_browsertest_base.cc
index 8a0885eb..e76bd9ad 100644
--- a/chrome/browser/web_applications/system_web_apps/test/system_web_app_browsertest_base.cc
+++ b/chrome/browser/web_applications/system_web_apps/test/system_web_app_browsertest_base.cc
@@ -132,42 +132,11 @@
 
 SystemWebAppManagerBrowserTest::SystemWebAppManagerBrowserTest(
     bool install_mock)
-    : SystemWebAppBrowserTestBase(install_mock) {
+    : TestProfileTypeMixin<SystemWebAppBrowserTestBase>(install_mock) {
   if (install_mock) {
     maybe_installation_ =
         TestSystemWebAppInstallation::SetUpStandaloneSingleWindowApp();
   }
 }
 
-void SystemWebAppManagerBrowserTest::SetUpCommandLine(
-    base::CommandLine* command_line) {
-  SystemWebAppBrowserTestBase::SetUpCommandLine(command_line);
-  if (profile_type() == TestProfileType::kGuest) {
-    ConfigureCommandLineForGuestMode(command_line);
-  } else if (profile_type() == TestProfileType::kIncognito) {
-    command_line->AppendSwitch(::switches::kIncognito);
-  }
-}
-
-std::string SystemWebAppManagerTestParamsToString(
-    const ::testing::TestParamInfo<SystemWebAppManagerTestParams>& param_info) {
-  std::string output;
-
-  switch (std::get<0>(param_info.param)) {
-    case TestProfileType::kRegular:
-      break;
-    case TestProfileType::kIncognito:
-      output.append("_Incognito");
-      break;
-    case TestProfileType::kGuest:
-      output.append("_Guest");
-      break;
-  }
-  // The framework doesn't accept a blank param
-  if (output.empty()) {
-    output = "_Default";
-  }
-  return output;
-}
-
 }  // namespace web_app
diff --git a/chrome/browser/web_applications/system_web_apps/test/system_web_app_browsertest_base.h b/chrome/browser/web_applications/system_web_apps/test/system_web_app_browsertest_base.h
index 4865def..15db816 100644
--- a/chrome/browser/web_applications/system_web_apps/test/system_web_app_browsertest_base.h
+++ b/chrome/browser/web_applications/system_web_apps/test/system_web_app_browsertest_base.h
@@ -106,47 +106,13 @@
 
 enum class InstallationType { kManifestInstall, kWebAppInfoInstall };
 
-using SystemWebAppManagerTestParams = std::tuple<TestProfileType>;
-
 class SystemWebAppManagerBrowserTest
-    : public SystemWebAppBrowserTestBase,
-      public ::testing::WithParamInterface<SystemWebAppManagerTestParams> {
+    : public TestProfileTypeMixin<SystemWebAppBrowserTestBase> {
  public:
   explicit SystemWebAppManagerBrowserTest(bool install_mock = true);
   ~SystemWebAppManagerBrowserTest() override = default;
-
-  TestProfileType profile_type() const { return std::get<0>(GetParam()); }
-
-  // InProcessBrowserTest:
-  void SetUpCommandLine(base::CommandLine* command_line) override;
 };
 
-std::string SystemWebAppManagerTestParamsToString(
-    const ::testing::TestParamInfo<SystemWebAppManagerTestParams>& param_info);
-
 }  // namespace web_app
 
-#define INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_P(SUITE, PARAMS) \
-  INSTANTIATE_TEST_SUITE_P(All, SUITE, PARAMS,                         \
-                           web_app::SystemWebAppManagerTestParamsToString)
-
-// Instantiates 3 versions of each test in |SUITE| to ensure coverage of
-// Guest and Incognito profiles, as well as regular profiles. This is currently
-// only used on ChromeOS. Other platforms will likely need a differently defined
-// macro because there is no such thing as Guest mode.
-#define INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_ALL_PROFILE_TYPES_P( \
-    SUITE)                                                                 \
-  INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_P(                         \
-      SUITE,                                                               \
-      ::testing::Values(TestProfileType::kRegular,                         \
-                        TestProfileType::kIncognito, TestProfileType::kGuest))
-
-#define INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_REGULAR_PROFILE_P(SUITE) \
-  INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_P(                             \
-      SUITE, ::testing::Values(TestProfileType::kRegular))
-
-#define INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_GUEST_SESSION_P(SUITE) \
-  INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_P(                           \
-      SUITE, ::testing::Values(TestProfileType::kGuest))
-
 #endif  // CHROME_BROWSER_WEB_APPLICATIONS_SYSTEM_WEB_APPS_TEST_SYSTEM_WEB_APP_BROWSERTEST_BASE_H_
diff --git a/chrome/browser/web_applications/system_web_apps/test/system_web_app_manager_browsertest.cc b/chrome/browser/web_applications/system_web_apps/test/system_web_app_manager_browsertest.cc
index e76c8ef0..f85710ea 100644
--- a/chrome/browser/web_applications/system_web_apps/test/system_web_app_manager_browsertest.cc
+++ b/chrome/browser/web_applications/system_web_apps/test/system_web_app_manager_browsertest.cc
@@ -238,15 +238,15 @@
 // EvalJs because of some quirks surrounding origin trials and content security
 // policies.
 class SystemWebAppManagerFileHandlingBrowserTestBase
-    : public SystemWebAppBrowserTestBase,
-      public ::testing::WithParamInterface<SystemWebAppManagerTestParams> {
+    : public TestProfileTypeMixin<SystemWebAppBrowserTestBase> {
  public:
   using IncludeLaunchDirectory =
       TestSystemWebAppInstallation::IncludeLaunchDirectory;
 
   explicit SystemWebAppManagerFileHandlingBrowserTestBase(
       IncludeLaunchDirectory include_launch_directory)
-      : SystemWebAppBrowserTestBase(/*install_mock=*/false) {
+      : TestProfileTypeMixin<SystemWebAppBrowserTestBase>(
+            /*install_mock=*/false) {
     scoped_feature_blink_api_.InitWithFeatures(
         {blink::features::kFileHandlingAPI}, {});
 
diff --git a/chrome/browser/web_applications/test/profile_test_helper.cc b/chrome/browser/web_applications/test/profile_test_helper.cc
index ce977a73..2c38f48 100644
--- a/chrome/browser/web_applications/test/profile_test_helper.cc
+++ b/chrome/browser/web_applications/test/profile_test_helper.cc
@@ -5,24 +5,39 @@
 #include "chrome/browser/web_applications/test/profile_test_helper.h"
 
 #include "base/notreached.h"
-#include "build/chromeos_buildflags.h"
 
 #if BUILDFLAG(IS_CHROMEOS_ASH)
+#include "ash/constants/ash_features.h"
 #include "ash/constants/ash_switches.h"
+#include "chrome/common/chrome_features.h"
 #include "components/account_id/account_id.h"
 #include "components/user_manager/user_names.h"
 #endif
 
 std::string TestProfileTypeToString(
-    const ::testing::TestParamInfo<TestProfileType>& info) {
-  switch (info.param) {
+    const ::testing::TestParamInfo<TestProfileParam>& info) {
+  std::string result;
+  switch (info.param.profile_type) {
     case TestProfileType::kRegular:
-      return "Regular";
+      result = "Regular";
+      break;
     case TestProfileType::kIncognito:
-      return "Incognito";
+      result = "Incognito";
+      break;
     case TestProfileType::kGuest:
-      return "Guest";
+      result = "Guest";
+      break;
   }
+
+  if (info.param.crosapi_state == web_app::test::CrosapiParam::kEnabled) {
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+    result += "Crosapi";
+#else
+    NOTREACHED();
+#endif
+  }
+
+  return result;
 }
 
 void ConfigureCommandLineForGuestMode(base::CommandLine* command_line) {
@@ -37,3 +52,20 @@
   NOTREACHED();
 #endif
 }
+
+void InitCrosapiFeaturesForParam(
+    web_app::test::CrosapiParam crosapi_state,
+    base::test::ScopedFeatureList* scoped_feature_list) {
+  if (crosapi_state == web_app::test::CrosapiParam::kEnabled) {
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+    scoped_feature_list->InitWithFeatures(
+        {chromeos::features::kLacrosSupport, features::kWebAppsCrosapi}, {});
+#else
+    NOTREACHED();
+#endif
+  } else {
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+    scoped_feature_list->InitWithFeatures({}, {features::kWebAppsCrosapi});
+#endif
+  }
+}
diff --git a/chrome/browser/web_applications/test/profile_test_helper.h b/chrome/browser/web_applications/test/profile_test_helper.h
index 53106e22..eacb37e 100644
--- a/chrome/browser/web_applications/test/profile_test_helper.h
+++ b/chrome/browser/web_applications/test/profile_test_helper.h
@@ -8,27 +8,43 @@
 #include <string>
 
 #include "base/command_line.h"
+#include "base/test/scoped_feature_list.h"
+#include "build/chromeos_buildflags.h"
+#include "chrome/browser/web_applications/test/with_crosapi_param.h"
 #include "chrome/common/chrome_switches.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 // Profile type to test. Provided to subclasses of TestProfileTypeMixin via
-// GetParam().
+// get_profile().
 enum class TestProfileType {
   kRegular,
   kIncognito,
   kGuest,
 };
 
+// Profile type to test. Provided to subclasses of TestProfileTypeMixin via
+// GetParam().
+struct TestProfileParam {
+  typedef web_app::test::CrosapiParam CrosapiParam;
+
+  TestProfileType profile_type;
+  CrosapiParam crosapi_state = CrosapiParam::kDisabled;
+};
+
 // GTest string formatter for TestProfileType. Appends, e.g. "/Guest" to the end
 // of test names.
 std::string TestProfileTypeToString(
-    const ::testing::TestParamInfo<TestProfileType>& param);
+    const ::testing::TestParamInfo<TestProfileParam>& param);
 
 // Adds the necessary flags to |command_line| to start a browser test in guest
 // mode. Should be invoked in SetUpCommandLine(). Any test can call this: it is
 // not coupled to TestProfileTypeMixin. Should only be invoked on ChromeOS.
 void ConfigureCommandLineForGuestMode(base::CommandLine* command_line);
 
+void InitCrosapiFeaturesForParam(
+    web_app::test::CrosapiParam crosapi_state,
+    base::test::ScopedFeatureList* scoped_feature_list);
+
 // "Mixin" for configuring a test harness to parameterize on different profile
 // types. To use it, inherit from
 //     : public TestProfileTypeMixin<BaseBrowserTest>
@@ -46,16 +62,90 @@
 template <class T>
 class TestProfileTypeMixin
     : public T,
-      public ::testing::WithParamInterface<TestProfileType> {
+      public ::testing::WithParamInterface<TestProfileParam> {
  public:
+  template <class... Args>
+  explicit TestProfileTypeMixin(Args&&... args)
+      : T(std::forward<Args>(args)...) {
+    InitCrosapiFeaturesForParam(GetParam().crosapi_state,
+                                &scoped_feature_list_);
+  }
+
   void SetUpCommandLine(base::CommandLine* command_line) override {
-    if (GetParam() == TestProfileType::kGuest) {
+    if (profile_type() == TestProfileType::kGuest) {
       ConfigureCommandLineForGuestMode(command_line);
-    } else if (GetParam() == TestProfileType::kIncognito) {
+    } else if (profile_type() == TestProfileType::kIncognito) {
       command_line->AppendSwitch(::switches::kIncognito);
     }
     T::SetUpCommandLine(command_line);
   }
+
+  TestProfileType profile_type() const { return GetParam().profile_type; }
+
+ private:
+  base::test::ScopedFeatureList scoped_feature_list_;
 };
 
+#define INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_P(SUITE, PARAMS) \
+  INSTANTIATE_TEST_SUITE_P(All, SUITE, PARAMS, TestProfileTypeToString)
+
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+// Instantiates 6 versions of each test in |SUITE| to ensure coverage of
+// Guest and Incognito profiles, as well as regular profiles. This is currently
+// only used on ChromeOS. Other platforms will likely need a differently defined
+// macro because there is no such thing as Guest mode.
+#define INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_ALL_PROFILE_TYPES_P(   \
+    SUITE)                                                                   \
+  INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_P(                           \
+      SUITE, ::testing::Values(                                              \
+                 TestProfileParam({TestProfileType::kRegular,                \
+                                   web_app::test::CrosapiParam::kDisabled}), \
+                 TestProfileParam({TestProfileType::kRegular,                \
+                                   web_app::test::CrosapiParam::kEnabled}),  \
+                 TestProfileParam({TestProfileType::kIncognito,              \
+                                   web_app::test::CrosapiParam::kDisabled}), \
+                 TestProfileParam({TestProfileType::kIncognito,              \
+                                   web_app::test::CrosapiParam::kEnabled}),  \
+                 TestProfileParam({TestProfileType::kGuest,                  \
+                                   web_app::test::CrosapiParam::kDisabled}), \
+                 TestProfileParam({TestProfileType::kGuest,                  \
+                                   web_app::test::CrosapiParam::kEnabled})))
+
+#define INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_REGULAR_PROFILE_P(SUITE) \
+  INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_P(                             \
+      SUITE, ::testing::Values(                                                \
+                 TestProfileParam({TestProfileType::kRegular,                  \
+                                   web_app::test::CrosapiParam::kDisabled}),   \
+                 TestProfileParam({TestProfileType::kRegular,                  \
+                                   web_app::test::CrosapiParam::kEnabled})))
+
+#define INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_GUEST_SESSION_P(SUITE) \
+  INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_P(                           \
+      SUITE, ::testing::Values(                                              \
+                 TestProfileParam({TestProfileType::kGuest,                  \
+                                   web_app::test::CrosapiParam::kDisabled}), \
+                 TestProfileParam({TestProfileType::kGuest,                  \
+                                   web_app::test::CrosapiParam::kEnabled})))
+#else
+// Instantiates 3 versions of each test in |SUITE| to ensure coverage of
+// Guest and Incognito profiles, as well as regular profiles. This is currently
+// only used on ChromeOS. Other platforms will likely need a differently defined
+// macro because there is no such thing as Guest mode.
+#define INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_ALL_PROFILE_TYPES_P( \
+    SUITE)                                                                 \
+  INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_P(                         \
+      SUITE,                                                               \
+      ::testing::Values(TestProfileParam({TestProfileType::kRegular}),     \
+                        TestProfileParam({TestProfileType::kIncognito}),   \
+                        TestProfileParam({TestProfileType::kGuest})))
+
+#define INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_REGULAR_PROFILE_P(SUITE) \
+  INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_P(                             \
+      SUITE, ::testing::Values(TestProfileParam({TestProfileType::kRegular})))
+
+#define INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_GUEST_SESSION_P(SUITE) \
+  INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_P(                           \
+      SUITE, ::testing::Values(TestProfileParam({TestProfileType::kGuest})))
+#endif
+
 #endif  // CHROME_BROWSER_WEB_APPLICATIONS_TEST_PROFILE_TEST_HELPER_H_
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
index b1fad2a..fa9fb8f 100644
--- a/chrome/common/chrome_features.cc
+++ b/chrome/common/chrome_features.cc
@@ -101,6 +101,14 @@
 const base::Feature kChangePictureVideoMode{"ChangePictureVideoMode",
                                             base::FEATURE_ENABLED_BY_DEFAULT};
 
+#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
+// Controls whether Chrome Apps are supported. See https://crbug.com/1221251.
+// If the feature is disabled, Chrome Apps continue to work. If enabled, Chrome
+// Apps will not launch and will be marked in the UI as deprecated.
+const base::Feature kChromeAppsDeprecation{"ChromeAppsDeprecation",
+                                           base::FEATURE_DISABLED_BY_DEFAULT};
+#endif  // defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
+
 #if defined(OS_WIN)
 const base::Feature kChromeCleanupScanCompletedNotification{
     "ChromeCleanupScanCompletedNotification",
diff --git a/chrome/common/chrome_features.h b/chrome/common/chrome_features.h
index 1ccfc54..b0b0b8c 100644
--- a/chrome/common/chrome_features.h
+++ b/chrome/common/chrome_features.h
@@ -81,6 +81,11 @@
 COMPONENT_EXPORT(CHROME_FEATURES)
 extern const base::Feature kChangePictureVideoMode;
 
+#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
+COMPONENT_EXPORT(CHROME_FEATURES)
+extern const base::Feature kChromeAppsDeprecation;
+#endif
+
 #if defined(OS_WIN)
 COMPONENT_EXPORT(CHROME_FEATURES)
 extern const base::Feature kChromeCleanupScanCompletedNotification;
diff --git a/chrome/common/extensions/api/tab_capture.idl b/chrome/common/extensions/api/tab_capture.idl
index d0210c06..2b0f422 100644
--- a/chrome/common/extensions/api/tab_capture.idl
+++ b/chrome/common/extensions/api/tab_capture.idl
@@ -102,36 +102,6 @@
     // |callback| : Callback invoked with CaptureInfo[] for captured tabs.
     static void getCapturedTabs(GetCapturedTabsCallback callback);
 
-    // Creates an off-screen tab and navigates it to the given |startUrl|.
-    // Then, capture is started and a MediaStream is returned via |callback|.
-    //
-    // Off-screen tabs are isolated from the user's normal browser experience.
-    // They do not show up in the browser window or tab strip, nor are they
-    // visible to extensions (e.g., via the chrome.tabs.* APIs).
-    //
-    // An off-screen tab remains alive until one of three events occurs: 1. All
-    // MediaStreams providing its captured content are closed; 2. the page
-    // self-closes (e.g., via window.close()); 3. the extension that called
-    // captureOffscreenTab() is unloaded.
-    //
-    // Sandboxing: The off-screen tab does not have any access whatsoever to the
-    // local user profile (including cookies, HTTP auth, etc.).  Instead, it is
-    // provided its own sandboxed profile.  Also, it cannot access any
-    // interactive resources such as keyboard/mouse input, media recording
-    // devices (e.g., web cams), copy/paste to/from the system clipboard, etc.
-    //
-    // Note: This is a new API, currently only available in Canary/Dev channel,
-    // and may change without notice.
-    //
-    // |options| : Constraints for the capture and returned MediaStream.
-    // |callback| : Callback with either the tab capture MediaStream or
-    //   <code>null</code>.  <code>null</code> indicates an error has occurred
-    //   and the client may query $(ref:runtime.lastError) to access the error
-    //   details.
-    static void captureOffscreenTab(DOMString startUrl,
-                                    CaptureOptions options,
-                                    GetTabMediaCallback callback);
-
     // Creates a stream ID to capture the target tab.
     // Similar to chrome.tabCapture.capture() method, but returns a media
     // stream ID, instead of a media stream, to the consumer tab.
diff --git a/chrome/renderer/resources/extensions/tab_capture_custom_bindings.js b/chrome/renderer/resources/extensions/tab_capture_custom_bindings.js
index f7c691c6..5c96b77 100644
--- a/chrome/renderer/resources/extensions/tab_capture_custom_bindings.js
+++ b/chrome/renderer/resources/extensions/tab_capture_custom_bindings.js
@@ -51,5 +51,4 @@
   }
 
   apiFunctions.setCustomCallback('capture', proxyToGetUserMedia);
-  apiFunctions.setCustomCallback('captureOffscreenTab', proxyToGetUserMedia);
 });
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index bb47bea..b5bf6e8 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -441,6 +441,12 @@
   }
 
   if (is_chromeos) {
+    sources += [
+      "../browser/ui/views/frame/browser_non_client_frame_view_chromeos_test_utils.cc",
+      "../browser/ui/views/frame/browser_non_client_frame_view_chromeos_test_utils.h",
+      "../browser/ui/views/frame/immersive_mode_tester.cc",
+      "../browser/ui/views/frame/immersive_mode_tester.h",
+    ]
     deps += [ "//chromeos/dbus/constants" ]
   }
 
@@ -1625,6 +1631,8 @@
       "../browser/notifications/scheduler/notification_schedule_service_browsertest.cc",
       "../browser/ntp_tiles/ntp_tiles_browsertest.cc",
       "../browser/optimization_guide/blink/blink_optimization_guide_browsertest.cc",
+      "../browser/optimization_guide/browser_test_util.cc",
+      "../browser/optimization_guide/browser_test_util.h",
       "../browser/optimization_guide/hints_fetcher_browsertest.cc",
       "../browser/optimization_guide/optimization_guide_keyed_service_browsertest.cc",
       "../browser/optimization_guide/page_content_annotations_service_browsertest.cc",
diff --git a/chrome/test/data/extensions/api_test/content_scripts/storage_api_allow_untrusted_access/background.js b/chrome/test/data/extensions/api_test/content_scripts/storage_api_allow_untrusted_access/background.js
new file mode 100644
index 0000000..15b7fef
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/content_scripts/storage_api_allow_untrusted_access/background.js
@@ -0,0 +1,39 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+async function testSetAndGetValue(area) {
+  const expectedEntry = {background: area};
+  await new Promise((resolve) => {
+    chrome.storage[area].set(expectedEntry, resolve);
+  });
+  const actualEntry = await new Promise((resolve) => {
+    chrome.storage[area].get('background', resolve);
+  });
+  chrome.test.assertEq(expectedEntry, actualEntry);
+}
+
+chrome.test.runTests([
+  function checkDefaultAccessLevel() {
+    // Make sure `setAccessLevel` is only exposed to the `session` storage area.
+    chrome.test.assertFalse(!!chrome.storage.local.setAccessLevel);
+    chrome.test.assertFalse(!!chrome.storage.sync.setAccessLevel);
+    chrome.test.assertFalse(!!chrome.storage.managed.setAccessLevel);
+    chrome.test.assertTrue(!!chrome.storage.session.setAccessLevel);
+    chrome.test.succeed();
+  },
+  async function setValuesInBackgroundPage() {
+    await testSetAndGetValue('session');
+    await testSetAndGetValue('local');
+    await testSetAndGetValue('sync');
+    chrome.test.succeed();
+  },
+  function allowUntrustedAccessToSessionStorage() {
+    // Allow context scripts to access the `session` storage.
+    chrome.storage.session.setAccessLevel(
+        {accessLevel: 'TRUSTED_AND_UNTRUSTED_CONTEXTS'}, () => {
+          chrome.test.assertNoLastError();
+          chrome.test.succeed();
+        });
+  }
+]);
diff --git a/chrome/test/data/extensions/api_test/content_scripts/storage_api_allow_untrusted_access/content_script.js b/chrome/test/data/extensions/api_test/content_scripts/storage_api_allow_untrusted_access/content_script.js
new file mode 100644
index 0000000..4f41a570
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/content_scripts/storage_api_allow_untrusted_access/content_script.js
@@ -0,0 +1,90 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Since the extension set the access level to TRUSTED_AND_UNTRUSTED_CONTEXTS,
+// all storage areas are accessible.
+const accessibleStorageAreas = ['sync', 'local', 'session'];
+
+async function testAccessibleStorageAreas(func, param) {
+  // Content scripts can access the storage when the storage area has untrusted
+  // access.
+  for (const area of accessibleStorageAreas) {
+    // If the param exists and to avoid mutating it, insert a copy of the param
+    // to each area params.
+    let areaParams = param ? [param] : [];
+    await new Promise((resolve) => {
+      areaParams.push(() => {
+        chrome.test.assertNoLastError();
+        resolve();
+      })
+      chrome.storage[area][func](...areaParams);
+    })
+  };
+};
+
+async function testGetValueSetByBackgroundPage() {
+  // Content scripts can access values set by the background page when the
+  // storage area has untrusted access. Requires that the background page
+  // previously stored {background: '`area`'} for each respective `area`.
+  for (const area of accessibleStorageAreas) {
+    await new Promise((resolve) => {
+      chrome.storage[area].get('background', (value) => {
+        chrome.test.assertEq({background: area}, value);
+        resolve();
+      });
+    })
+  };
+};
+
+chrome.test.runTests([
+  // This test must run before any other test clears the storage.
+  async function getValueSetByBackgroundPageFromContentScript() {
+    // `sync` and `local` storage areas can always access background page
+    // values. `session` storage area with `TRUSTED_AND_UNTRUSTED_CONTEXTS`
+    // access level can access background page values.
+    await testGetValueSetByBackgroundPage();
+    chrome.test.succeed();
+  },
+
+  async function setValueFromContentScript() {
+    await testAccessibleStorageAreas('set', {foo: 'bar'});
+    chrome.test.succeed();
+  },
+
+  async function getValueFromContentScript() {
+    await testAccessibleStorageAreas('get', 'foo');
+    chrome.test.succeed();
+  },
+
+  async function getBytesInUseFromContentScript() {
+    await testAccessibleStorageAreas('getBytesInUse', null)
+    chrome.test.succeed();
+  },
+
+  async function removeValueFromContentScript() {
+    await testAccessibleStorageAreas('remove', 'foo');
+    chrome.test.succeed();
+  },
+
+  async function clearValuesFromContentScript() {
+    await testAccessibleStorageAreas('clear')
+    chrome.test.succeed();
+  },
+
+  function setAccessLevelFromContentScript() {
+    // `setAccessLevel` is not exposed to `sync` or `local`.
+    chrome.test.assertFalse(!!chrome.storage.sync.setAccessLevel);
+    chrome.test.assertFalse(!!chrome.storage.local.setAccessLevel);
+    // TODO(crbug.com/1227410): `setAccessLevel` is exposed to `session` but
+    // cannot be accessed from a content script. This will change once we
+    // expose only `setAccessLevel` in privileged contexts.
+    chrome.test.assertTrue(!!chrome.storage.session.setAccessLevel);
+    chrome.storage.session.setAccessLevel(
+        {accessLevel: 'TRUSTED_CONTEXTS'}, () => {
+          chrome.test.assertLastError(
+              'Context cannot set the storage access level');
+          chrome.test.succeed();
+        });
+  },
+]);
diff --git a/chrome/test/data/extensions/api_test/content_scripts/storage_api_allow_untrusted_access/manifest.json b/chrome/test/data/extensions/api_test/content_scripts/storage_api_allow_untrusted_access/manifest.json
new file mode 100644
index 0000000..d57dd7c
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/content_scripts/storage_api_allow_untrusted_access/manifest.json
@@ -0,0 +1,16 @@
+{
+  "name": "content_script_storage_api_allow_untrusted_access",
+  "version": "1.0",
+  "manifest_version": 3,
+  "description": "Tests the Storage API behavior with untrusted access level from a content script (which means the extension allows storage access to the content script).",
+  "background": {
+    "service_worker": "background.js"
+  },
+  "permissions": ["storage"],
+  "content_scripts": [
+    {
+      "matches": ["http://*/extensions/test_file.html"],
+      "js": ["content_script.js"]
+    }
+  ]
+}
diff --git a/chrome/test/data/extensions/api_test/content_scripts/storage_api_default_access/background.js b/chrome/test/data/extensions/api_test/content_scripts/storage_api_default_access/background.js
new file mode 100644
index 0000000..b8f9d03
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/content_scripts/storage_api_default_access/background.js
@@ -0,0 +1,23 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+async function testSetAndGetValue(area) {
+  const expectedEntry = {background: area};
+  await new Promise((resolve) => {
+    chrome.storage[area].set(expectedEntry, resolve);
+  });
+  const actualEntry = await new Promise((resolve) => {
+    chrome.storage[area].get('background', resolve);
+  });
+  chrome.test.assertEq(expectedEntry, actualEntry);
+}
+
+chrome.test.runTests([
+  async function setValuesInBackgroundPage() {
+    await testSetAndGetValue('session');
+    await testSetAndGetValue('local');
+    await testSetAndGetValue('sync');
+    chrome.test.succeed();
+  },
+]);
diff --git a/chrome/test/data/extensions/api_test/content_scripts/storage_api_default_access/content_script.js b/chrome/test/data/extensions/api_test/content_scripts/storage_api_default_access/content_script.js
new file mode 100644
index 0000000..cb1116a0
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/content_scripts/storage_api_default_access/content_script.js
@@ -0,0 +1,111 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// `session` doesn't have storage access by default. All other storage areas are
+// accessible.
+const accessibleStorageAreas = ['sync', 'local'];
+const invalidAccessMessage =
+    'Access to storage is not allowed from this context.';
+
+async function testAccessibleStorageAreas(func, param) {
+  // `sync` and `local` storage areas have untrusted access level by default,
+  // thus content scripts can access the storage.
+  for (const area of accessibleStorageAreas) {
+    // If the param exists and to avoid mutating it, insert a copy of the param
+    // to each area params.
+    let areaParams = param ? [param] : [];
+    await new Promise((resolve) => {
+      areaParams.push(() => {
+        chrome.test.assertNoLastError();
+        resolve();
+      })
+      chrome.storage[area][func](...areaParams);
+    })
+  };
+};
+
+async function testInaccessibleStorageAreas(func, param) {
+  // `session` storage area has only trusted access level by default, thus
+  // content scripts cannot access the storage.
+  // If the param exists, insert a copy of the param to the area params.
+  let areaParams = param ? [param] : [];
+  await new Promise((resolve) => {
+    areaParams.push(() => {
+      chrome.test.assertLastError(invalidAccessMessage);
+      resolve();
+    })
+    chrome.storage.session[func](...areaParams);
+  })
+};
+
+async function testGetValueSetByBackgroundPage() {
+  // Content scripts can access values set by the background page when the
+  // storage area has untrusted access.
+  for (const area of accessibleStorageAreas) {
+    await new Promise((resolve) => {
+      chrome.storage[area].get('background', (value) => {
+        chrome.test.assertEq({background: area}, value);
+        resolve();
+      });
+    })
+  };
+};
+
+chrome.test.runTests([
+  // This test must run before any other test clears the storage.
+  async function getValueSetByBackgroundPageFromContentScript() {
+    // `sync` and `local` storage areas can access background page values by
+    // default.
+    await testGetValueSetByBackgroundPage();
+    // `session` storage area cannot access background page values by
+    // default.
+    await testInaccessibleStorageAreas('get', 'background');
+    chrome.test.succeed();
+  },
+
+  async function setValueFromContentScript() {
+    await testAccessibleStorageAreas('set', {foo: 'bar'});
+    await testInaccessibleStorageAreas('set', {foo: 'bar'});
+    chrome.test.succeed();
+  },
+
+  async function getValueFromContentScript() {
+    await testAccessibleStorageAreas('get', 'foo');
+    await testInaccessibleStorageAreas('get', 'foo');
+    chrome.test.succeed();
+  },
+
+  async function getBytesInUseFromContentScript() {
+    await testAccessibleStorageAreas('getBytesInUse', null);
+    await testInaccessibleStorageAreas('getBytesInUse', null);
+    chrome.test.succeed();
+  },
+
+  async function removeValueFromContentScript() {
+    await testAccessibleStorageAreas('remove', 'foo');
+    await testInaccessibleStorageAreas('remove', 'foo');
+    chrome.test.succeed();
+  },
+
+  async function clearValuesFromContentScript() {
+    await testAccessibleStorageAreas('clear');
+    await testInaccessibleStorageAreas('clear');
+    chrome.test.succeed();
+  },
+
+  function setAccessLevelFromContentScript() {
+    // `setAccessLevel` is not exposed to `sync` or `local`.
+    chrome.test.assertFalse(!!chrome.storage.sync.setAccessLevel);
+    chrome.test.assertFalse(!!chrome.storage.local.setAccessLevel);
+    // TODO(crbug.com/1227410): `setAccessLevel` is exposed to `session` but
+    // cannot be accessed from a content script. This will change once we only
+    // expose `setAccessLevel` in unblessed contexts.
+    chrome.test.assertTrue(!!chrome.storage.session.setAccessLevel);
+    chrome.storage.session.setAccessLevel(
+        {accessLevel: 'TRUSTED_CONTEXTS'}, () => {
+          chrome.test.assertLastError(invalidAccessMessage);
+          chrome.test.succeed();
+        });
+  }
+]);
diff --git a/chrome/test/data/extensions/api_test/content_scripts/storage_api_default_access/manifest.json b/chrome/test/data/extensions/api_test/content_scripts/storage_api_default_access/manifest.json
new file mode 100644
index 0000000..4b000771
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/content_scripts/storage_api_default_access/manifest.json
@@ -0,0 +1,16 @@
+{
+  "name": "content_script_storage_api_default_access",
+  "version": "1.0",
+  "manifest_version": 3,
+  "description": "Tests the Storage API behavior with default access level (trusted) from a content script.",
+  "background": {
+    "service_worker": "background.js"
+  },
+  "permissions": ["storage"],
+  "content_scripts": [
+    {
+      "matches": ["http://*/extensions/test_file.html"],
+      "js": ["content_script.js"]
+    }
+  ]
+}
diff --git a/chrome/test/data/extensions/api_test/settings/split_incognito/background.js b/chrome/test/data/extensions/api_test/settings/split_incognito/background.js
index 85ba2bf..df340c6 100644
--- a/chrome/test/data/extensions/api_test/settings/split_incognito/background.js
+++ b/chrome/test/data/extensions/api_test/settings/split_incognito/background.js
@@ -2,6 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// Whether we've seen an onChanged event fire since the last modification
+// we're listening for.
+let seenLatestEvent = false;
+// An optional function to invoke when an onChanged event is fired; used
+// to resolve a promise that waits for the event.
+let onEventSeen;
+
 ['sync', 'local', 'session'].forEach(function(namespace) {
   chrome.storage[namespace].notifications = {};
   chrome.storage.onChanged.addListener(function(changes, event_namespace) {
@@ -10,10 +17,28 @@
       Object.keys(changes).forEach(function(key) {
         notifications[key] = changes[key];
       });
+      seenLatestEvent = true;
+      if (onEventSeen)
+        onEventSeen();
     }
   });
 });
 
+function waitForEvent() {
+  return new Promise((resolve) => {
+    // If the event was already seen, resolve immediately.
+    if (seenLatestEvent) {
+      resolve();
+      return;
+    }
+    // Otherwise, wait for it to come in and then resolve.
+    onEventSeen = () => {
+      onEventSeen = undefined;
+      resolve();
+    };
+  })
+}
+
 // The test from C++ runs "actions", where each action is defined here.
 // This allows the test to be tightly controlled between incognito and
 // non-incognito modes.
@@ -36,9 +61,11 @@
     });
   },
   setFoo: function(callback) {
+    seenLatestEvent = false;
     this.set({foo: "bar"}, callback);
   },
   removeFoo: function(callback) {
+    seenLatestEvent = false;
     this.remove("foo", callback);
   },
   clear: function(callback) {
@@ -52,11 +79,19 @@
     this.notifications = {};
     callback();
   },
-  assertAddFooNotification: function(callback) {
+  assertAddFooNotification: async function(callback) {
+    // Wait for event to be dispatched before checking it was disptached.
+    // Workaround while we wait for https://crbug.com/1216449 fix.
+    await waitForEvent(this);
+    seenLatestEvent = false;
     chrome.test.assertEq({ foo: { newValue: 'bar' } }, this.notifications);
     callback();
   },
-  assertDeleteFooNotification: function(callback) {
+  assertDeleteFooNotification: async function(callback) {
+    // Wait for event to be dispatched before checking it was disptached.
+    // Workaround while we wait for https://crbug.com/1216449 fix.
+    await waitForEvent(this);
+    seenLatestEvent = false;
     chrome.test.assertEq({ foo: { oldValue: 'bar' } }, this.notifications);
     callback();
   }
diff --git a/chrome/test/data/extensions/api_test/tab_capture/api_tests.js b/chrome/test/data/extensions/api_test/tab_capture/api_tests.js
index e0ebd33..c354ab6 100644
--- a/chrome/test/data/extensions/api_test/tab_capture/api_tests.js
+++ b/chrome/test/data/extensions/api_test/tab_capture/api_tests.js
@@ -209,38 +209,6 @@
     });
   },
 
-  function offscreenTabsDoNotShowUpAsCapturedTabs() {
-    tabCapture.getCapturedTabs(function(tab_list_before) {
-      tabCapture.captureOffscreenTab(
-          helloWorldPageUri,
-          {video: true},
-          function(stream) {
-            chrome.test.assertTrue(!!stream);
-            tabCapture.getCapturedTabs(function(tab_list_after) {
-              assertIsSameSetOfTabs(tab_list_before, tab_list_after, 'tabId');
-              stream.getVideoTracks()[0].stop();
-              succeedOnCaptureStopped();
-            });
-          });
-    });
-  },
-
-  function offscreenTabsDoNotShowUpInTabsQuery() {
-    chrome.tabs.query({/* all tabs */}, function(tab_list_before) {
-      tabCapture.captureOffscreenTab(
-          helloWorldPageUri,
-          {video: true},
-          function(stream) {
-            chrome.test.assertTrue(!!stream);
-            chrome.tabs.query({/* all tabs */}, function(tab_list_after) {
-              assertIsSameSetOfTabs(tab_list_before, tab_list_after, 'id');
-              stream.getVideoTracks()[0].stop();
-              succeedOnCaptureStopped();
-            });
-          });
-    });
-  },
-
   function getMediaStreamIdWithCallerTab() {
     chrome.tabs.getCurrent(function(tab) {
       tabCapture.getMediaStreamId({consumerTabId: tab.id}, function(streamId) {
diff --git a/chrome/test/data/extensions/api_test/tab_capture/max_offscreen_tabs.html b/chrome/test/data/extensions/api_test/tab_capture/max_offscreen_tabs.html
deleted file mode 100644
index fe9dcf9c..0000000
--- a/chrome/test/data/extensions/api_test/tab_capture/max_offscreen_tabs.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<html>
-<body>
-</body>
-<script src="max_offscreen_tabs.js"></script>
-</html>
diff --git a/chrome/test/data/extensions/api_test/tab_capture/max_offscreen_tabs.js b/chrome/test/data/extensions/api_test/tab_capture/max_offscreen_tabs.js
deleted file mode 100644
index 9750c2f7..0000000
--- a/chrome/test/data/extensions/api_test/tab_capture/max_offscreen_tabs.js
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-var tabCapture = chrome.tabCapture;
-
-const helloWorldPageUri =
-    'data:text/html;charset=UTF-8,' +
-    encodeURIComponent(
-        '<html><body>Hello world!</body></html>' +
-        '<script>setTimeout(() => { window.close(); }, 3000);</script>');
-
-chrome.test.runTests([
- function canOpenUpToThreeOffscreenTabs() {
-   function stopAllStreams(streams) {
-     // Off-screen tabs remain alive until either all MediaStreams are closed,
-     // the page self-closes, or the extension that called captureOffscreenTab
-     // is unloaded.
-     for (var i = 0, end = streams.length; i < end; ++i) {
-       streams[i].getVideoTracks()[0].stop();
-
-       audio_track = streams[i].getAudioTracks()[0];
-       if (audio_track) {
-         audio_track.stop();
-       }
-     }
-   }
-
-   function launchTabsUntilLimitReached(streamsSoFar) {
-     tabCapture.captureOffscreenTab(
-         helloWorldPageUri,
-         {video: true},
-         function(stream) {
-           if (streamsSoFar.length == 4) {
-             // 5th off-screen tab capture should fail.
-             chrome.test.assertLastError(
-                 'Extension has already started too many off-screen tabs.');
-             chrome.test.assertFalse(!!stream);
-             stopAllStreams(streamsSoFar);
-             chrome.test.succeed();
-           } else if (stream) {
-             streamsSoFar.push(stream);
-             setTimeout(
-                 function() {
-                   launchTabsUntilLimitReached(streamsSoFar);
-                 }, 0);
-           } else {
-             console.error("Failed to capture stream, iter #" +
-                 streamsSoFar.length);
-             stopAllStreams(streamsSoFar);
-             chrome.test.fail();
-           }
-         });
-   }
-
-   launchTabsUntilLimitReached([]);
- }
-]);
diff --git a/chrome/test/data/extensions/api_test/tab_capture/offscreen_end_to_end.html b/chrome/test/data/extensions/api_test/tab_capture/offscreen_end_to_end.html
deleted file mode 100644
index c51ddbf..0000000
--- a/chrome/test/data/extensions/api_test/tab_capture/offscreen_end_to_end.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<html>
-<body style="background-color: #224; width:100%; height:100%">
-<video id="video" autoplay style="position: absolute; top:0; bottom:0; left:0; right:0; margin:auto; border:none;"></video>
-</body>
-<script src="offscreen_test_harness.js"></script>
-<script src="offscreen_end_to_end.js"></script>
-</html>
diff --git a/chrome/test/data/extensions/api_test/tab_capture/offscreen_end_to_end.js b/chrome/test/data/extensions/api_test/tab_capture/offscreen_end_to_end.js
deleted file mode 100644
index 4d3f132..0000000
--- a/chrome/test/data/extensions/api_test/tab_capture/offscreen_end_to_end.js
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Returs a full HTML test document for the off-screen tab that renders rotating
-// color fills of red, then green, then blue.
-function makeRotatingColorTestDocument() {
-  return makeOffscreenTabTestDocument('\
-// The test pattern cycles as a color fill of red, then green, then blue.\n\
-var colors = [redColor, greenColor, blueColor];\n\
-\n\
-function colorRotationLoop() {\n\
-  if (!this.iterCount) {\n\
-    this.iterCount = 1;\n\
-  } else {\n\
-    ++this.iterCount;\n\
-  }\n\
-  if (!this.stepTimeMillis) {\n\
-    this.stepTimeMillis = 100;\n\
-  }\n\
-  var idx = this.iterCount % colors.length;\n\
-  if (idx == 0) {  // Completed a cycle.\n\
-    // Increase the wait time between switching test patterns for\n\
-    // overloaded bots that are not capturing all the frames of video.\n\
-    this.stepTimeMillis *= 1.25;\n\
-  }\n\
-  setFillColor(colors[idx]);\n\
-  setTimeout(colorRotationLoop, this.stepTimeMillis);\n\
-}\n\
-colorRotationLoop();');
-}
-
-// Observer side of this end-to-end test.  |stream| is monitored for each of the
-// three fill colors to be generated by the off-screen tab.  Once all three have
-// been observed, the test ends successfully.
-function waitForExpectedColorsAndEndTest(stream) {
-  // Elements from this array are removed as each color is observed.  When it
-  // becomes empty, the test succeeds.
-  var remainingColors = [[255, 0, 0], [0, 255, 0], [0, 0, 255]];
-
-  // Note: The range of acceptable colors is quite large because there's no way
-  // to know whether software compositing is being used for screen capture; and,
-  // if software compositing is being used, there is no color space management
-  // and color values can be off by a lot. That said, color accuracy is being
-  // tested by a suite of content_browsertests.
-  var colorDeviation = 50;
-
-  function onMatchedNextColor(idx) {
-    chrome.test.assertTrue(idx < remainingColors.length);
-    remainingColors.splice(idx, 1);
-    if (remainingColors.length == 0) {
-      stopAllTracks(stream);
-      chrome.test.succeed();
-    } else {
-      waitForAnExpectedColor(stream, remainingColors, colorDeviation,
-                             onMatchedNextColor);
-    }
-  }
-  waitForAnExpectedColor(stream, remainingColors, colorDeviation,
-                         onMatchedNextColor);
-}
-
-chrome.test.runTests([
-  function offscreenTabTest() {
-    chrome.tabCapture.captureOffscreenTab(
-        makeDataUriFromDocument(makeRotatingColorTestDocument()),
-        getCaptureOptions(),
-        waitForExpectedColorsAndEndTest);
-  }
-]);
diff --git a/chrome/test/data/extensions/api_test/tab_capture/offscreen_evil_tests.html b/chrome/test/data/extensions/api_test/tab_capture/offscreen_evil_tests.html
deleted file mode 100644
index b924b14..0000000
--- a/chrome/test/data/extensions/api_test/tab_capture/offscreen_evil_tests.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<html>
-<body style="background-color: #224; width:100%; height:100%">
-<video id="video" autoplay style="position: absolute; top:0; bottom:0; left:0; right:0; margin:auto; border:none;"></video>
-</body>
-<script src="offscreen_test_harness.js"></script>
-<script src="offscreen_evil_tests.js"></script>
-</html>
diff --git a/chrome/test/data/extensions/api_test/tab_capture/offscreen_evil_tests.js b/chrome/test/data/extensions/api_test/tab_capture/offscreen_evil_tests.js
deleted file mode 100644
index 258ba4f..0000000
--- a/chrome/test/data/extensions/api_test/tab_capture/offscreen_evil_tests.js
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Waits until content sampled from |stream| indicates a success or fail status
-// from an off-screen tab page that renders a green (success) or red (fail)
-// color fill.
-function waitForGreenOrRedTestResultAndEndTest(stream) {
-  waitForAnExpectedColor(stream, [[255, 0, 0], [0, 255, 0]], 64,
-      function (result) {
-        stopAllTracks(stream);
-        if (result == 1) {
-          chrome.test.succeed();
-        } else {
-          // Fail after 3 seconds to allow examining the debug error message.
-          setTimeout(function () { chrome.test.fail(); }, 3000);
-        }
-      }
-  );
-}
-
-function waitForTabToCloseAndEndTest(stream) {
-  let check = () => {
-    if (!stream.getTracks().find(track => track.readyState != 'ended')) {
-      chrome.test.succeed();
-    }
-  };
-  check();
-  stream.getTracks().forEach(track => {
-    track.onended = check;
-  });
-}
-
-chrome.test.runTests([
-  function cannotAccessLocalResources() {
-    chrome.tabCapture.captureOffscreenTab(
-      makeDataUriFromDocument(makeOffscreenTabTestDocument(
-          'function failIfIsLoadable(url, runNextTest) {\n' +
-          '  var request = new XMLHttpRequest();\n' +
-          '  request.open("GET", url);\n' +
-          '  request.addEventListener("load", function () {\n' +
-          '    setDebugMessage(url);\n' +
-          '    setFillColor(redColor);\n' +
-          '  });\n' +
-          '  request.addEventListener("error", function () {\n' +
-          '    setTimeout(runNextTest, 0);\n' +
-          '  });' +
-          '  request.send();\n' +
-          '}\n' +
-          '\n' +
-          'failIfIsLoadable("file://something", function () {\n' +
-          '  failIfIsLoadable("chrome-extension://' + chrome.runtime.id +
-                             '/offscreen_evil_tests.js", function() {\n' +
-          '    setFillColor(greenColor);\n' +
-          '  });\n' +
-          '});')),
-      getCaptureOptions(),
-      waitForGreenOrRedTestResultAndEndTest);
-  },
-
-  function cannotOpenNewTabsOrDialogs() {
-    chrome.tabCapture.captureOffscreenTab(
-      makeDataUriFromDocument(makeOffscreenTabTestDocument(
-          'var wnd = window.open("data:text/html;charset=UTF-8,NOT SEEN");\n' +
-          'if (wnd) {\n' +
-          '  setDebugMessage("window.open() succeeded");\n' +
-          '  setFillColor(redColor);\n' +
-          '} else {\n' +
-          '  var result = window.confirm("Can you see me?");\n' +
-          '  if (result) {\n' +
-          '    setDebugMessage("positive confirm result");\n' +
-          '    setFillColor(redColor);\n' +
-          '  } else {\n' +
-          '    setFillColor(greenColor);\n' +
-          '  }\n' +
-          '}')),
-      getCaptureOptions(),
-      waitForGreenOrRedTestResultAndEndTest);
-  },
-
-  function cannotNavigateWhenPresenting() {
-    const captureOptions = getCaptureOptions();
-    captureOptions.presentationId = 'presentation_id';
-    chrome.tabCapture.captureOffscreenTab(
-      makeDataUriFromDocument(
-        '<html><script>' +
-        'window.location = "http://example.com/some_url.html";' +
-        '</script></html>'),
-      captureOptions,
-      waitForTabToCloseAndEndTest);
-    // NOTE: If this test times out, it means that one of the following did not
-    // happen:
-    // 1. page loaded
-    // 2. tab capture began
-    // 3. page attempted to navigate
-    // 4. page was closed by offscreen_tab.cc
-    // 5. MediaStreamTracks were ended
-  },
-
-  // NOTE: Before adding any more tests, the maximum off-screen tab limit would
-  // have to be increased (or a design issue resolved).  This is because
-  // off-screen tabs are not closed the instant the LocalMediaStream is stopped,
-  // but approximately 1 second later.
-]);
diff --git a/chrome/test/data/extensions/api_test/tab_capture/offscreen_test_harness.js b/chrome/test/data/extensions/api_test/tab_capture/offscreen_test_harness.js
deleted file mode 100644
index 95af5ee..0000000
--- a/chrome/test/data/extensions/api_test/tab_capture/offscreen_test_harness.js
+++ /dev/null
@@ -1,188 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This file contains a test harness for testing the behavior of pages running
-// inside off-screen tabs:
-//
-//   1. It provides a simple way to formulate a data URI containing a full HTML
-//      document that executes arbitrary script.  The arbitrary script running
-//      in the off-screen tab calls setFillColor() to expose its current state
-//      by rendering a color fill.  In addition, the off-screen tab continuously
-//      paints changes that force the tab capture implementation to continuously
-//      capture new video frames.
-//
-//   2. In the extension's JavaScript context, a waitAnForExpectedColor()
-//      function is provided to sample the video frames of the captured
-//      off-screen tab until the center pixel contains one of the colors in a
-//      set of expected colors.
-
-// Width/Height of off-screen tab, rendered content, and captured content.
-var width = 160;
-var height = 120;
-
-// Capture frame rate.
-var frameRate = 8;
-
-// Return a full HTML document that executes the |script|.  The script calls
-// setFillColor() to expose changes to its internal state.
-function makeOffscreenTabTestDocument(script) {
-  return '\
-<html><body style="background-color:black; margin:0; padding:0;"></body>\n\
-<script>\n\
-var redColor = [255, 0, 0];\n\
-var greenColor = [0, 255, 0];\n\
-var blueColor = [0, 0, 255];\n\
-\n\
-var fillColor = [0, 0, 0];\n\
-function setFillColor(color) {\n\
-  fillColor = color;\n\
-}\n\
-\n\
-var debugMessage = "";\n\
-function setDebugMessage(msg) {\n\
-  debugMessage = msg;\n\
-}\n\
-\n\
-function updateTestPattern() {\n\
-  if (!this.canvas) {\n\
-    this.canvas = document.createElement("canvas");\n\
-    this.canvas.width = ' + width + ';\n\
-    this.canvas.height = ' + height + ';\n\
-    this.canvas.style.position = "absolute";\n\
-    this.canvas.style.top = "0px";\n\
-    this.canvas.style.left = "0px";\n\
-    this.canvas.style.width = "100%";\n\
-    this.canvas.style.height = "100%";\n\
-    document.body.appendChild(this.canvas);\n\
-  }\n\
-  var context = this.canvas.getContext("2d");\n\
-  // Fill with solid color.\n\
-  context.fillStyle = "rgb(" + fillColor + ")";\n\
-  context.fillRect(0, 0, this.canvas.width, this.canvas.height);\n\
-  // Draw the circle that moves around the page.\n\
-  var inverseColor =\n\
-      [255 - fillColor[0], 255 - fillColor[1], 255 - fillColor[2]];\n\
-  if (debugMessage) {\n\
-    context.fillStyle = "rgb(" + inverseColor + ")";\n\
-    context.font = "xx-small monospace";\n\
-    context.fillText(debugMessage, 0, 0);\n\
-  }\n\
-  context.fillStyle = "rgba(" + inverseColor + ", 0.5)";\n\
-  context.beginPath();\n\
-  if (!this.frameNumber) {\n\
-    this.frameNumber = 1;\n\
-  } else {\n\
-    ++this.frameNumber;\n\
-  }\n\
-  var i = this.frameNumber % 200;\n\
-  var t = (this.frameNumber + 3000) * (0.01 + i / 8000.0);\n\
-  var x = (Math.sin(t) * 0.45 + 0.5) * this.canvas.width;\n\
-  var y = (Math.cos(t * 0.9) * 0.45 + 0.5) * this.canvas.height;\n\
-  context.arc(x, y, 16, 0, 2 * Math.PI, false);\n\
-  context.closePath();\n\
-  context.fill();\n\
-}\n\
-\n\
-function renderTestPatternLoop() {\n\
-  updateTestPattern();\n\
-  requestAnimationFrame(renderTestPatternLoop);\n\
-}\n\
-renderTestPatternLoop();\n\
-\n' +
-script + '\n\
-</script></html>';
-}
-
-// Return the given |html| document as an encoded data URI.
-function makeDataUriFromDocument(html) {
-  return 'data:text/html;charset=UTF-8,' + encodeURIComponent(html);
-}
-
-// Returns capture options for starting the off-screen tab.
-function getCaptureOptions() {
-  return {
-    video: true,
-    audio: false,
-    videoConstraints: {
-      mandatory: {
-        minWidth: width,
-        minHeight: height,
-        maxWidth: width,
-        maxHeight: height,
-        maxFrameRate: frameRate,
-      }
-    }
-  };
-}
-
-// Samples the video frames from a capture |stream|, testing the color of the
-// center pixel.  Once the pixel matches one of the colors in |expectedColors|,
-// run |callback| with the index of the matched color.  |colorDeviation| is used
-// to imprecisely match colors.
-function waitForAnExpectedColor(
-    stream, expectedColors, colorDeviation, callback) {
-  chrome.test.assertTrue(!!stream);
-  chrome.test.assertTrue(expectedColors.length > 0);
-  chrome.test.assertTrue(!!callback);
-
-  var video = document.getElementById('video');
-  chrome.test.assertTrue(!!video);
-
-  // If not yet done, plug the LocalMediaStream into the video element.
-  if (!this.stream || this.stream != stream) {
-    this.stream = stream;
-    video.srcObject = stream;
-    video.play();
-  }
-
-  // Create a canvas to sample frames from the video element.
-  if (!this.canvas) {
-    this.canvas = document.createElement("canvas");
-    this.canvas.width = width;
-    this.canvas.height = height;
-  }
-
-  // Only bother examining a video frame if the video timestamp has advanced.
-  var currentVideoTimestamp = video.currentTime;
-  if (!this.lastVideoTimestamp ||
-      this.lastVideoTimestamp < currentVideoTimestamp) {
-    this.lastVideoTimestamp = currentVideoTimestamp;
-
-    // Grab a snapshot of the center pixel of the video.
-    var ctx = this.canvas.getContext("2d");
-    ctx.drawImage(video, 0, 0, width, height);
-    var imageData = ctx.getImageData(width / 2, height / 2, 1, 1);
-    var pixel = [imageData.data[0], imageData.data[1], imageData.data[2]];
-
-    // Does the pixel match one of the expected colors?
-    for (var i = 0, end = expectedColors.length; i < end; ++i) {
-      var color = expectedColors[i];
-      if (Math.abs(pixel[0] - color[0]) <= colorDeviation &&
-          Math.abs(pixel[1] - color[1]) <= colorDeviation &&
-          Math.abs(pixel[2] - color[2]) <= colorDeviation) {
-        console.debug("Observed expected color RGB(" + color +
-            ") in the video as RGB(" + pixel + ")");
-        setTimeout(function () { callback(i); }, 0);
-        return;
-      }
-    }
-  }
-
-  // At this point, an expected color has not been observed.  Schedule another
-  // check after a short delay.
-  setTimeout(
-    function () {
-      waitForAnExpectedColor(stream, expectedColors, colorDeviation, callback);
-    },
-    1000 / frameRate);
-}
-
-// Stops all the tracks in a MediaStream.
-function stopAllTracks(stream) {
-  var tracks = stream.getTracks();
-  for (var i = 0, end = tracks.length; i < end; ++i) {
-    tracks[i].stop();
-  }
-  chrome.test.assertFalse(stream.active);
-}
diff --git a/chrome/test/data/webui/chromeos/shimless_rma/repair_component_chip_test.js b/chrome/test/data/webui/chromeos/shimless_rma/repair_component_chip_test.js
index 2d15e7f..67d8bf6 100644
--- a/chrome/test/data/webui/chromeos/shimless_rma/repair_component_chip_test.js
+++ b/chrome/test/data/webui/chromeos/shimless_rma/repair_component_chip_test.js
@@ -5,7 +5,7 @@
 import {RepairComponentChipElement} from 'chrome://shimless-rma/repair_component_chip.js';
 
 import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
-import {flushTasks} from '../../test_util.m.js';
+import {flushTasks, isVisible} from '../../test_util.m.js';
 
 export function repairComponentChipElementTest() {
   /** @type {?RepairComponentChipElement} */
@@ -61,17 +61,25 @@
   test('ComponentToggleChecked', async () => {
     await initializeRepairComponentChip('cpu');
 
+    const checkIcon = component.shadowRoot.querySelector('#checkedIcon');
+
     await clickChip();
     assertTrue(component.checked);
+    assertTrue(isVisible(checkIcon));
 
     await clickChip();
     assertFalse(component.checked);
+    assertFalse(isVisible(checkIcon));
   });
 
   test('ComponentNoToggleOnDisabled', async () => {
     await initializeRepairComponentChip('cpu');
     component.disabled = true;
     await flushTasks();
+
+    const infoIcon = component.shadowRoot.querySelector('#infoIcon');
+    assertTrue(isVisible(infoIcon));
+
     await clickChip();
 
     assertFalse(component.checked);
diff --git a/chrome/test/data/webui/settings/BUILD.gn b/chrome/test/data/webui/settings/BUILD.gn
index c2edad8..e3cec78 100644
--- a/chrome/test/data/webui/settings/BUILD.gn
+++ b/chrome/test/data/webui/settings/BUILD.gn
@@ -99,7 +99,6 @@
     #":reset_page_test",
     #":reset_profile_banner_test",
     #":route_tests",
-    ":safety_check_chrome_cleaner_test",
     ":safety_check_page_test",
 
     #":search_engines_page_test",
@@ -166,6 +165,10 @@
     #":zoom_levels_tests",
   ]
 
+  if (is_win) {
+    deps += [ ":safety_check_chrome_cleaner_test" ]
+  }
+
   if (!is_chromeos_ash) {
     deps += [
       ":fake_language_settings_private",
diff --git a/chrome/test/data/webui/settings/cr_settings_browsertest.js b/chrome/test/data/webui/settings/cr_settings_browsertest.js
index 6f996b57..a932f21 100644
--- a/chrome/test/data/webui/settings/cr_settings_browsertest.js
+++ b/chrome/test/data/webui/settings/cr_settings_browsertest.js
@@ -392,6 +392,7 @@
   mocha.run();
 });
 
+GEN('#if defined(OS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING)');
 // eslint-disable-next-line no-var
 var CrSettingsSafetyCheckChromeCleanerTest =
     class extends CrSettingsBrowserTest {
@@ -410,7 +411,6 @@
   }
 };
 
-GEN('#if defined(OS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING)');
 TEST_F('CrSettingsSafetyCheckChromeCleanerTest', 'All', function() {
   mocha.run();
 });
diff --git a/chrome/test/data/webui/settings/reset_page_test.js b/chrome/test/data/webui/settings/reset_page_test.js
index a3b25bd..49badf49 100644
--- a/chrome/test/data/webui/settings/reset_page_test.js
+++ b/chrome/test/data/webui/settings/reset_page_test.js
@@ -29,7 +29,7 @@
 
   setup(function() {
     resetPageBrowserProxy = new TestResetBrowserProxy();
-    ResetBrowserProxyImpl.instance_ = resetPageBrowserProxy;
+    ResetBrowserProxyImpl.setInstance(resetPageBrowserProxy);
 
     PolymerTest.clearBody();
     resetPage = document.createElement('settings-reset-page');
diff --git a/chrome/test/data/webui/settings/reset_profile_banner_test.js b/chrome/test/data/webui/settings/reset_profile_banner_test.js
index 779f4b7..e6135ea 100644
--- a/chrome/test/data/webui/settings/reset_profile_banner_test.js
+++ b/chrome/test/data/webui/settings/reset_profile_banner_test.js
@@ -14,7 +14,7 @@
 
   setup(function() {
     browserProxy = new TestResetBrowserProxy();
-    ResetBrowserProxyImpl.instance_ = browserProxy;
+    ResetBrowserProxyImpl.setInstance(browserProxy);
     PolymerTest.clearBody();
     resetBanner = document.createElement('settings-reset-profile-banner');
     document.body.appendChild(resetBanner);
diff --git a/chrome/test/data/webui/tab_search/tab_search_app_test.js b/chrome/test/data/webui/tab_search/tab_search_app_test.js
index b931ca0..f42a5ce 100644
--- a/chrome/test/data/webui/tab_search/tab_search_app_test.js
+++ b/chrome/test/data/webui/tab_search/tab_search_app_test.js
@@ -9,7 +9,7 @@
 import {flushTasks, waitAfterNextRender} from '../../test_util.m.js';
 
 import {generateSampleDataFromSiteNames, generateSampleRecentlyClosedTabs, generateSampleTabsFromSiteNames, SAMPLE_RECENTLY_CLOSED_DATA, SAMPLE_WINDOW_DATA, SAMPLE_WINDOW_HEIGHT, sampleData, sampleToken} from './tab_search_test_data.js';
-import {initLoadTimeDataWithDefaults} from './tab_search_test_helper.js';
+import {initLoadTimeDataWithDefaults, initProfileDataWithDefaults} from './tab_search_test_helper.js';
 import {TestTabSearchApiProxy} from './test_tab_search_api_proxy.js';
 
 suite('TabSearchAppTest', () => {
@@ -38,16 +38,18 @@
   }
 
   /**
-   * @param {ProfileData} sampleData
+   * @param {!Object} sampleData A mock data object containing relevant profile
+   *     data for the test.
    * @param {Object=} loadTimeOverriddenData
    */
   async function setupTest(sampleData, loadTimeOverriddenData) {
-    testProxy = new TestTabSearchApiProxy();
-    testProxy.setProfileData(sampleData);
-    TabSearchApiProxyImpl.instance_ = testProxy;
-
+    initProfileDataWithDefaults(/** @type {ProfileData} */ (sampleData));
     initLoadTimeDataWithDefaults(loadTimeOverriddenData);
 
+    testProxy = new TestTabSearchApiProxy();
+    testProxy.setProfileData(/** @type {ProfileData} */ (sampleData));
+    TabSearchApiProxyImpl.instance_ = testProxy;
+
     tabSearchApp = /** @type {!TabSearchAppElement} */
         (document.createElement('tab-search-app'));
 
@@ -73,7 +75,6 @@
           }],
           recentlyClosedTabs: generateSampleRecentlyClosedTabs(
               'Sample Tab', sampleTabCount, sampleToken(0, 1)),
-          tabGroups: [],
           recentlyClosedTabGroups: [{
             sessionId: sampleSessionId,
             id: sampleToken(0, 1),
@@ -83,8 +84,11 @@
             lastActiveTime: {internalValue: BigInt(sampleTabCount + 1)},
             lastActiveElapsedText: ''
           }],
+          recentlyClosedSectionExpanded: true,
         },
-        {recentlyClosedDefaultItemDisplayCount: 5});
+        {
+          recentlyClosedDefaultItemDisplayCount: 5,
+        });
 
     tabSearchApp.shadowRoot.querySelector('#tabsList')
         .ensureAllDomItemsAvailable();
@@ -99,8 +103,7 @@
     await setupTest({
       windows: SAMPLE_WINDOW_DATA,
       recentlyClosedTabs: SAMPLE_RECENTLY_CLOSED_DATA,
-      tabGroups: [],
-      recentlyClosedTabGroups: [],
+      recentlyClosedSectionExpanded: true,
     });
     tabSearchApp.shadowRoot.querySelector('#tabsList')
         .ensureAllDomItemsAvailable();
@@ -118,10 +121,11 @@
           }],
           recentlyClosedTabs: generateSampleTabsFromSiteNames(
               ['RecentlyClosedTab1', 'RecentlyClosedTab2'], false),
-          tabGroups: [],
-          recentlyClosedTabGroups: [],
+          recentlyClosedSectionExpanded: true
         },
-        {recentlyClosedDefaultItemDisplayCount: 1});
+        {
+          recentlyClosedDefaultItemDisplayCount: 1,
+        });
 
     assertEquals(2, queryRows().length);
   });
@@ -136,8 +140,7 @@
     await setupTest({
       windows: SAMPLE_WINDOW_DATA,
       recentlyClosedTabs: SAMPLE_RECENTLY_CLOSED_DATA,
-      tabGroups: [],
-      recentlyClosedTabGroups: [],
+      recentlyClosedSectionExpanded: true,
     });
     const searchField = /** @type {!TabSearchSearchField} */
         (tabSearchApp.shadowRoot.querySelector('#searchField'));
@@ -164,7 +167,6 @@
           }],
           recentlyClosedTabs: generateSampleRecentlyClosedTabs(
               'Sample Tab', sampleTabCount, sampleToken(0, 1)),
-          tabGroups: [],
           recentlyClosedTabGroups: [({
             sessionId: sampleSessionId,
             id: sampleToken(0, 1),
@@ -174,8 +176,11 @@
             lastActiveTime: {internalValue: BigInt(sampleTabCount + 1)},
             lastActiveElapsedText: ''
           })],
+          recentlyClosedSectionExpanded: true,
         },
-        {recentlyClosedDefaultItemDisplayCount: 5});
+        {
+          recentlyClosedDefaultItemDisplayCount: 5,
+        });
 
     const searchField = /** @type {!TabSearchSearchField} */
         (tabSearchApp.shadowRoot.querySelector('#searchField'));
@@ -207,9 +212,6 @@
     };
     await setupTest({
       windows: [{active: true, tabs: [tabData]}],
-      recentlyClosedTabs: [],
-      tabGroups: [],
-      recentlyClosedTabGroups: [],
     });
 
     const tabSearchItem = /** @type {!HTMLElement} */
@@ -250,8 +252,7 @@
         }]
       }],
       recentlyClosedTabs: [tabData],
-      tabGroups: [],
-      recentlyClosedTabGroups: [],
+      recentlyClosedSectionExpanded: true
     });
 
     let tabSearchItem = /** @type {!HTMLElement} */
@@ -287,9 +288,8 @@
           url: {url: 'https://www.google.com'},
         }]
       }],
-      recentlyClosedTabs: [],
-      tabGroups: [],
       recentlyClosedTabGroups: [tabGroupData],
+      recentlyClosedSectionExpanded: true
     });
 
     let tabSearchItem = /** @type {!HTMLElement} */
@@ -306,9 +306,6 @@
   test('Keyboard navigation on an empty list', async () => {
     await setupTest({
       windows: [{active: true, tabs: []}],
-      recentlyClosedTabs: [],
-      tabGroups: [],
-      recentlyClosedTabGroups: [],
     });
 
     const searchField = /** @type {!TabSearchSearchField} */
@@ -395,7 +392,7 @@
       windows: [],
       recentlyClosedTabs: [],
       tabGroups: [],
-      recentlyClosedTabGroups: []
+      recentlyClosedTabGroups: [],
     });
     await flushTasks();
     verifyTabIds(queryRows(), []);
@@ -469,9 +466,6 @@
         height: SAMPLE_WINDOW_HEIGHT,
         tabs: generateSampleTabsFromSiteNames(['OpenTab1'], true),
       }],
-      recentlyClosedTabs: [],
-      tabGroups: [],
-      recentlyClosedTabGroups: [],
     });
     verifyTabIds(queryRows(), [1]);
 
@@ -666,18 +660,12 @@
     // Move active tab to the bottom of the list.
     await setupTest({
       windows: [{active: true, height: SAMPLE_WINDOW_HEIGHT, tabs}],
-      recentlyClosedTabs: [],
-      tabGroups: [],
-      recentlyClosedTabGroups: [],
     });
     verifyTabIds(queryRows(), [3, 1, 2]);
 
     await setupTest(
         {
           windows: [{active: true, height: SAMPLE_WINDOW_HEIGHT, tabs}],
-          recentlyClosedTabs: [],
-          tabGroups: [],
-          recentlyClosedTabGroups: [],
         },
         {'moveActiveTabToBottom': false});
     verifyTabIds(queryRows(), [2, 3, 1]);
@@ -704,9 +692,7 @@
 
     await setupTest({
       windows: [{active: true, height: SAMPLE_WINDOW_HEIGHT, tabs}],
-      recentlyClosedTabs: [],
       tabGroups: [tabGroup],
-      recentlyClosedTabGroups: [],
     });
 
     let tabSearchItem = /** @type {!HTMLElement} */ (
@@ -715,4 +701,38 @@
     assertEquals('Google', tabSearchItem.data.tab.title);
     assertEquals('Search Engines', tabSearchItem.data.tabGroup.title);
   });
+
+  test('Recently closed section collapse and expand', async () => {
+    await setupTest({
+      windows: [{
+        active: true,
+        height: SAMPLE_WINDOW_HEIGHT,
+        tabs: generateSampleTabsFromSiteNames(['SampleOpenTab'], true),
+      }],
+      recentlyClosedTabs: SAMPLE_RECENTLY_CLOSED_DATA,
+      recentlyClosedSectionExpanded: true,
+    });
+    assertEquals(3, queryRows().length);
+
+    const recentlyClosedTitleItem = /** @type {!HTMLElement} */
+        (tabSearchApp.shadowRoot.querySelector('#tabsList')
+             .querySelectorAll('.list-section-title')[1]);
+    assertNotEquals(null, recentlyClosedTitleItem);
+
+    const recentlyClosedTitleExpandButton = /** @type {!HTMLElement} */
+        (recentlyClosedTitleItem.querySelector('cr-expand-button'));
+    assertNotEquals(null, recentlyClosedTitleExpandButton);
+
+    // Collapse the `Recently Closed` section and assert item count.
+    recentlyClosedTitleExpandButton.click();
+    const [expanded] =
+        await testProxy.whenCalled('saveRecentlyClosedExpandedPref');
+    assertFalse(expanded);
+    assertEquals(1, queryRows().length);
+
+    // Expand the `Recently Closed` section and assert item count.
+    recentlyClosedTitleExpandButton.click();
+    assertEquals(2, testProxy.getCallCount('saveRecentlyClosedExpandedPref'));
+    assertEquals(3, queryRows().length);
+  });
 });
diff --git a/chrome/test/data/webui/tab_search/tab_search_test_helper.js b/chrome/test/data/webui/tab_search/tab_search_test_helper.js
index de8f8c8..a112030a 100644
--- a/chrome/test/data/webui/tab_search/tab_search_test_helper.js
+++ b/chrome/test/data/webui/tab_search/tab_search_test_helper.js
@@ -59,6 +59,24 @@
 }
 
 /**
+ * Initialize a mock ProfileData object with defaults that would be set
+ * by the Mojo IPC logic.
+ * @param {!ProfileData} profileData
+ */
+export function initProfileDataWithDefaults(profileData) {
+  // Initialize undefined array properties
+  ['tabGroups', 'recentlyClosedTabs', 'recentlyClosedTabGroups'].forEach(
+      (arrayProp) => {
+        if (!profileData.hasOwnProperty(arrayProp)) {
+          profileData[arrayProp] = [];
+        }
+      });
+  if (!profileData.hasOwnProperty('recentlyClosedSectionExpanded')) {
+    profileData.recentlyClosedSectionExpanded = false;
+  }
+}
+
+/**
  * Initialize the loadTimeData with the provided data and defaults.
  * @param {Object=} loadTimeOverriddenData
  */
diff --git a/chrome/test/data/webui/tab_search/test_tab_search_api_proxy.js b/chrome/test/data/webui/tab_search/test_tab_search_api_proxy.js
index e873010..9b188f4 100644
--- a/chrome/test/data/webui/tab_search/test_tab_search_api_proxy.js
+++ b/chrome/test/data/webui/tab_search/test_tab_search_api_proxy.js
@@ -14,6 +14,7 @@
       'getProfileData',
       'openRecentlyClosedEntry',
       'switchToTab',
+      'saveRecentlyClosedExpandedPref',
       'showUI',
     ]);
 
@@ -50,6 +51,11 @@
   }
 
   /** @override */
+  saveRecentlyClosedExpandedPref(expanded) {
+    this.methodCalled('saveRecentlyClosedExpandedPref', [expanded]);
+  }
+
+  /** @override */
   showUI() {
     this.methodCalled('showUI');
   }
diff --git a/chrome/test/media_router/media_router_integration_browsertest.cc b/chrome/test/media_router/media_router_integration_browsertest.cc
index 23182b66..be9a3d6 100644
--- a/chrome/test/media_router/media_router_integration_browsertest.cc
+++ b/chrome/test/media_router/media_router_integration_browsertest.cc
@@ -105,6 +105,7 @@
 
 void MediaRouterIntegrationBrowserTest::TearDownOnMainThread() {
   test_ui_->TearDown();
+  test_provider_->TearDown();
   InProcessBrowserTest::TearDownOnMainThread();
   test_navigation_observer_.reset();
 }
diff --git a/chrome/test/media_router/media_router_ui_for_test.cc b/chrome/test/media_router/media_router_ui_for_test.cc
index d1f483b..e74e578 100644
--- a/chrome/test/media_router/media_router_ui_for_test.cc
+++ b/chrome/test/media_router/media_router_ui_for_test.cc
@@ -257,7 +257,6 @@
     const std::string& sink_name) const {
   CastDialogSinkButton* sink_button = GetSinkButton(sink_name);
   if (!sink_button->sink().route) {
-    NOTREACHED() << "Route not found for sink " << sink_name;
     return "";
   }
   return sink_button->sink().route->media_route_id();
diff --git a/chromeos/components/eche_app_ui/eche_notification_click_handler.cc b/chromeos/components/eche_app_ui/eche_notification_click_handler.cc
index 3683fbdf..41255a4 100644
--- a/chromeos/components/eche_app_ui/eche_notification_click_handler.cc
+++ b/chromeos/components/eche_app_ui/eche_notification_click_handler.cc
@@ -16,28 +16,22 @@
     LaunchEcheAppFunction launch_eche_app_function,
     CloseEcheAppFunction close_eche_app_function)
     : feature_status_provider_(feature_status_provider),
-      launch_eche_app_function_(std::move(launch_eche_app_function)),
-      close_eche_app_function_(std::move(close_eche_app_function)) {
+      launch_eche_app_function_(launch_eche_app_function),
+      close_eche_app_function_(close_eche_app_function) {
   handler_ = phone_hub_manager->GetNotificationInteractionHandler();
-  DCHECK_NE(handler_, nullptr);
   feature_status_provider_->AddObserver(this);
-  if (handler_ != nullptr) {
-    if (IsClickable(feature_status_provider_->GetStatus())) {
-      handler_->AddNotificationClickHandler(this);
-      is_click_handler_set = true;
-    } else {
-      is_click_handler_set = false;
-    }
+  if (handler_ && IsClickable(feature_status_provider_->GetStatus())) {
+    handler_->AddNotificationClickHandler(this);
+    is_click_handler_set_ = true;
   } else {
     PA_LOG(INFO)
         << "No Phone Hub interaction handler to set Eche click handler";
-    is_click_handler_set = false;
   }
 }
 
 EcheNotificationClickHandler::~EcheNotificationClickHandler() {
   feature_status_provider_->RemoveObserver(this);
-  if (is_click_handler_set && handler_ != nullptr)
+  if (is_click_handler_set_ && handler_)
     handler_->RemoveNotificationClickHandler(this);
 }
 
@@ -48,22 +42,23 @@
 }
 
 void EcheNotificationClickHandler::OnFeatureStatusChanged() {
-  if (handler_ != nullptr) {
-    bool clickable = IsClickable(feature_status_provider_->GetStatus());
-    if (!is_click_handler_set && clickable) {
-      handler_->AddNotificationClickHandler(this);
-      is_click_handler_set = true;
-    } else if (is_click_handler_set && !clickable) {
-      handler_->RemoveNotificationClickHandler(this);
-      is_click_handler_set = false;
-      if (NeedClose(feature_status_provider_->GetStatus())) {
-        PA_LOG(INFO) << "Close Eche app window";
-        close_eche_app_function_.Run();
-      }
-    }
-  } else {
+  if (!handler_) {
     PA_LOG(INFO)
         << "No Phone Hub interaction handler to set Eche click handler";
+    return;
+  }
+
+  bool clickable = IsClickable(feature_status_provider_->GetStatus());
+  if (!is_click_handler_set_ && clickable) {
+    handler_->AddNotificationClickHandler(this);
+    is_click_handler_set_ = true;
+  } else if (is_click_handler_set_ && !clickable) {
+    handler_->RemoveNotificationClickHandler(this);
+    is_click_handler_set_ = false;
+    if (NeedClose(feature_status_provider_->GetStatus())) {
+      PA_LOG(INFO) << "Close Eche app window";
+      close_eche_app_function_.Run();
+    }
   }
 }
 
diff --git a/chromeos/components/eche_app_ui/eche_notification_click_handler.h b/chromeos/components/eche_app_ui/eche_notification_click_handler.h
index 7350b565..b8bbd4d7 100644
--- a/chromeos/components/eche_app_ui/eche_notification_click_handler.h
+++ b/chromeos/components/eche_app_ui/eche_notification_click_handler.h
@@ -23,31 +23,32 @@
 
 // Handles notification clicks originating from Phone Hub notifications.
 class EcheNotificationClickHandler : public phonehub::NotificationClickHandler,
-                                     FeatureStatusProvider::Observer {
+                                     public FeatureStatusProvider::Observer {
  public:
   using LaunchEcheAppFunction =
-      base::RepeatingCallback<void(int64_t, std::string)>;
+      base::RepeatingCallback<void(int64_t notification_id,
+                                   const std::string& package_name)>;
   using CloseEcheAppFunction = base::RepeatingCallback<void()>;
 
-  EcheNotificationClickHandler(phonehub::PhoneHubManager*,
-                               FeatureStatusProvider*,
-                               LaunchEcheAppFunction,
-                               CloseEcheAppFunction);
+  EcheNotificationClickHandler(phonehub::PhoneHubManager* phone_hub_manager,
+                               FeatureStatusProvider* feature_status_provider,
+                               LaunchEcheAppFunction launch_eche_app_function,
+                               CloseEcheAppFunction close_eche_app_function);
   ~EcheNotificationClickHandler() override;
 
   EcheNotificationClickHandler(const EcheNotificationClickHandler&) = delete;
   EcheNotificationClickHandler& operator=(const EcheNotificationClickHandler&) =
       delete;
 
-  // phonehub::NotificationClickHandler
+  // phonehub::NotificationClickHandler:
   void HandleNotificationClick(
       int64_t notification_id,
       const phonehub::Notification::AppMetadata& app_metadata) override;
 
- private:
   // FeatureStatusProvider::Observer:
   void OnFeatureStatusChanged() override;
 
+ private:
   bool IsClickable(FeatureStatus status);
 
   bool NeedClose(FeatureStatus status);
@@ -56,7 +57,7 @@
   FeatureStatusProvider* feature_status_provider_;
   LaunchEcheAppFunction launch_eche_app_function_;
   CloseEcheAppFunction close_eche_app_function_;
-  bool is_click_handler_set;
+  bool is_click_handler_set_ = false;
 };
 
 }  // namespace eche_app
diff --git a/chromeos/components/eche_app_ui/eche_notification_click_handler_unittest.cc b/chromeos/components/eche_app_ui/eche_notification_click_handler_unittest.cc
index 9cabf0e..9e9a593 100644
--- a/chromeos/components/eche_app_ui/eche_notification_click_handler_unittest.cc
+++ b/chromeos/components/eche_app_ui/eche_notification_click_handler_unittest.cc
@@ -42,7 +42,7 @@
   }
 
   void FakeLaunchEcheAppFunction(int64_t notification_id,
-                                 std::string package_name) {
+                                 const std::string& package_name) {
     // Do nothing.
   }
 
diff --git a/chromeos/crosapi/mojom/download_controller.mojom b/chromeos/crosapi/mojom/download_controller.mojom
index f3c284e..2b5e5b3 100644
--- a/chromeos/crosapi/mojom/download_controller.mojom
+++ b/chromeos/crosapi/mojom/download_controller.mojom
@@ -26,8 +26,8 @@
 //
 // Next MinVersion: 2
 // Next ID: 13
-[Stable]
-struct DownloadEvent {
+[Stable, RenamedFrom="crosapi.mojom.DownloadEvent"]
+struct DownloadItem {
   DownloadState state@0;
   mojo_base.mojom.FilePath target_file_path@1;
   bool is_from_incognito_profile@2;
@@ -85,11 +85,11 @@
 
   // Called when a download is created. Comes from `content::DownloadManager`,
   // and will only pass events once that's initialized.
-  OnDownloadCreated@0(crosapi.mojom.DownloadEvent event);
+  OnDownloadCreated@0(crosapi.mojom.DownloadItem download);
 
   // Called whenever a `download::DownloadItem` is updated.
-  OnDownloadUpdated@1(crosapi.mojom.DownloadEvent event);
+  OnDownloadUpdated@1(crosapi.mojom.DownloadItem download);
 
   // Called when a `download::DownloadItem` is destroyed.
-  OnDownloadDestroyed@2(crosapi.mojom.DownloadEvent event);
+  OnDownloadDestroyed@2(crosapi.mojom.DownloadItem download);
 };
diff --git a/chromeos/crosapi/mojom/local_printer.mojom b/chromeos/crosapi/mojom/local_printer.mojom
index 5db95f5e..8d2c65e 100644
--- a/chromeos/crosapi/mojom/local_printer.mojom
+++ b/chromeos/crosapi/mojom/local_printer.mojom
@@ -284,6 +284,8 @@
   GetEulaUrl@2(string printer_id) => (url.mojom.Url url);
 
   // Gets the current status of a printer.
+  // Note: this method queries the printer directly instead of via CUPS.
+  // It may take several seconds for the printer to respond.
   GetStatus@3(string printer_id) => (PrinterStatus status);
 
   // Opens a system print settings window.
diff --git a/components/autofill/content/browser/form_forest.cc b/components/autofill/content/browser/form_forest.cc
index 9dfe0f1..d6010e7 100644
--- a/components/autofill/content/browser/form_forest.cc
+++ b/components/autofill/content/browser/form_forest.cc
@@ -17,7 +17,7 @@
 
 // AFCHECK(condition[, error_handler]) creates a crash dump and executes
 // |error_handler| if |condition| is false.
-// TODO(crbug/1187842): Replace AFCHECK() with DCHECK().
+// TODO(https://crbug.com/1187842): Replace AFCHECK() with DCHECK().
 #if DCHECK_IS_ON()
 #define AFCHECK(condition, ...) DCHECK(condition)
 #else
@@ -36,27 +36,24 @@
 
 namespace {
 
-// Shall indicate if |rfh| is a fenced frame (crbug/1111084), to be implemented
-// if and when fencedframes ship.
+// Indicates if |rfh| is a fenced frame (https://crbug.com/1111084).
 //
 // We do not want to fill across the boundary of a fenced frame. Hence, a fenced
 // frame's FrameData must be disconnected (in terms of FormData::child_frames
 // and FrameData::parent_form) from its parent form. This is already guaranteed
 // because FormData::child_frames does not contain fenced frames. However,
 // UpdateTreeOfRendererForm() would still invoke TriggerReparse() to detect the
-// parent form. IsFencedFrame() should be implemented to suppress this.
+// parent form. HostedByFencedFrame() should be implemented to suppress this.
 //
 // We also do not want to fill across iframes with the disallowdocumentaccess
-// attribute (crbug/961448). Since disallowdocumentaccess is currently not going
-// to ship and supporting it requires significant additional work in
-// UpdateTreeOfRendererForm() to remove FormData::child_frame and unset
+// attribute (https://crbug.com/961448). Since disallowdocumentaccess is
+// currently not going to ship and supporting it requires significant additional
+// work in UpdateTreeOfRendererForm() to remove FormData::child_frame and unset
 // FrameData::parent_form for frames that disallow document access, there is no
-// immediate need to support it.
-//
-// TODO(crbug/1201854): Implement if and when fencedframes ship, and/or extend
-// it to disallowdocumentaccess if and when disallowdocumentaccess ships.
-constexpr bool IsFencedFrame(content::RenderFrameHost* rfh) {
-  return false;
+// immediate need to support it. See https://crrev.com/c/3055422 for a draft
+// implementation.
+bool HostedByFencedFrame(content::RenderFrameHost* rfh) {
+  return rfh->HostedByFencedFrame();
 }
 
 }  // namespace
@@ -427,7 +424,7 @@
   // UpdateTreeOfRendererForm() will be called for the parent form, whose
   // FormData::child_frames now include |frame|.
   content::RenderFrameHost* parent_rfh = rfh->GetParent();
-  if (!frame->parent_form && parent_rfh && !IsFencedFrame(rfh)) {
+  if (!frame->parent_form && parent_rfh && !HostedByFencedFrame(rfh)) {
     LocalFrameToken parent_frame_token(
         LocalFrameToken(parent_rfh->GetFrameToken().value()));
     FrameData* parent_frame = GetFrameData(parent_frame_token);
diff --git a/components/autofill/content/browser/form_forest.h b/components/autofill/content/browser/form_forest.h
index f414ab8..0297ef26 100644
--- a/components/autofill/content/browser/form_forest.h
+++ b/components/autofill/content/browser/form_forest.h
@@ -220,14 +220,16 @@
   // The |field_type_map| should contain the field types of the fields in
   // |browser_form|.
   //
-  // A field is *safe to fill* iff at least one of the following conditions
-  // holds:
+  // A field is *safe to fill* iff at least one of the conditions (1), (2), (3)
+  // and additionally condition (4) hold:
   // (1) The field's origin is the |triggered_origin|.
   // (2) The field's origin is the main origin and the field's type in
   //     |field_type_map| is not sensitive (see is_sensitive_field_type()).
   // (3) The |triggered_origin| is main origin and the field's frame's
   //     permissions policy allows shared-autofill.
-  // See below for a future additional necessary condition.
+  // (4) No frame on the shortest path from the field on which Autofill was
+  //     triggered to the field in question, except perhaps the shallowest
+  //     frame, is a fenced frame.
   //
   // The *origin of a field* is the origin of the frame that contains the
   // corresponding form-control element.
@@ -237,15 +239,6 @@
   // A frame's *permissions policy allows shared-autofill* if that frame is a
   // main frame or its embedding <iframe> element lists "shared-autofill" in
   // its "allow" attribute (see https://www.w3.org/TR/permissions-policy-1/).
-  //
-  // When fenced frames (crbug/1111084) or disallowdocumentaccess (crbug/961448)
-  // ships, a necessary requirement for a field to be *safe to fill* will be:
-  // (4) No frame on the shortest path from the field on from which Autofill was
-  //     triggered to the field in question frame in the frame tree, except
-  //     perhaps the shallowest frame, is a fenced frame or has the has the
-  //     disallowdocumentaccess attribute.
-  // TODO(crbug/1201854): Implement fenced frames and/or disallowdocumentaccess
-  // if and when they ship.
   std::vector<FormData> GetRendererFormsOfBrowserForm(
       const FormData& browser_form,
       const url::Origin& triggered_origin,
diff --git a/components/autofill/core/browser/autofill_metrics.cc b/components/autofill/core/browser/autofill_metrics.cc
index 6ec8b0e..fb3151c 100644
--- a/components/autofill/core/browser/autofill_metrics.cc
+++ b/components/autofill/core/browser/autofill_metrics.cc
@@ -1960,7 +1960,6 @@
 void AutofillMetrics::LogStoredCreditCardMetrics(
     const std::vector<std::unique_ptr<CreditCard>>& local_cards,
     const std::vector<std::unique_ptr<CreditCard>>& server_cards,
-    size_t server_card_count_with_card_art_image,
     base::TimeDelta disused_data_threshold) {
   size_t num_local_cards = 0;
   size_t num_local_cards_with_nickname = 0;
@@ -2086,11 +2085,6 @@
   base::UmaHistogramCounts1000(
       "Autofill.StoredCreditCardCount.Server.WithVirtualCardMetadata",
       virtual_card_enabled_card_count);
-
-  // Log the number of server cards that have valid customized art images.
-  base::UmaHistogramCounts1000(
-      "Autofill.StoredCreditCardCount.Server.WithCardArtImage",
-      server_card_count_with_card_art_image);
 }
 
 // static
diff --git a/components/autofill/core/browser/autofill_metrics.h b/components/autofill/core/browser/autofill_metrics.h
index c211605..b34e9465 100644
--- a/components/autofill/core/browser/autofill_metrics.h
+++ b/components/autofill/core/browser/autofill_metrics.h
@@ -1451,7 +1451,6 @@
   static void LogStoredCreditCardMetrics(
       const std::vector<std::unique_ptr<CreditCard>>& local_cards,
       const std::vector<std::unique_ptr<CreditCard>>& server_cards,
-      size_t server_card_count_with_card_art_image,
       base::TimeDelta disused_data_threshold);
 
   // Logs metrics about the offer data associated with a profile. This should be
diff --git a/components/autofill/core/browser/autofill_metrics_unittest.cc b/components/autofill/core/browser/autofill_metrics_unittest.cc
index a483a7b2..72d3d79c 100644
--- a/components/autofill/core/browser/autofill_metrics_unittest.cc
+++ b/components/autofill/core/browser/autofill_metrics_unittest.cc
@@ -4105,10 +4105,10 @@
     }
   }
 
+  // Log the stored credit card metrics for the cards configured above.
   base::HistogramTester histogram_tester;
-  AutofillMetrics::LogStoredCreditCardMetrics(
-      local_cards, server_cards, /*server_card_count_with_card_art_image=*/2,
-      base::TimeDelta::FromDays(180));
+  AutofillMetrics::LogStoredCreditCardMetrics(local_cards, server_cards,
+                                              base::TimeDelta::FromDays(180));
 
   // Validate the basic count metrics.
   histogram_tester.ExpectTotalCount("Autofill.StoredCreditCardCount", 1);
@@ -4180,8 +4180,6 @@
       "Autofill.DaysSinceLastUse.StoredCreditCard.Server.Unmasked", 30, 3);
   histogram_tester.ExpectBucketCount(
       "Autofill.DaysSinceLastUse.StoredCreditCard.Server.Unmasked", 200, 3);
-  histogram_tester.ExpectBucketCount(
-      "Autofill.StoredCreditCardCount.Server.WithCardArtImage", 2, 1);
 }
 
 TEST_F(AutofillMetricsTest, LogStoredCreditCardWithNicknameMetrics) {
@@ -4219,9 +4217,8 @@
 
   // Log the stored credit card metrics for the cards configured above.
   base::HistogramTester histogram_tester;
-  AutofillMetrics::LogStoredCreditCardMetrics(
-      local_cards, server_cards, /*server_card_count_with_card_art_image=*/0,
-      base::TimeDelta::FromDays(180));
+  AutofillMetrics::LogStoredCreditCardMetrics(local_cards, server_cards,
+                                              base::TimeDelta::FromDays(180));
 
   // Validate the count metrics.
   histogram_tester.ExpectTotalCount("Autofill.StoredCreditCardCount", 1);
diff --git a/components/autofill/core/browser/autofill_suggestion_generator.cc b/components/autofill/core/browser/autofill_suggestion_generator.cc
index e256070..723b9d21 100644
--- a/components/autofill/core/browser/autofill_suggestion_generator.cc
+++ b/components/autofill/core/browser/autofill_suggestion_generator.cc
@@ -176,17 +176,16 @@
   suggestion.match = prefix_matched_suggestion ? Suggestion::PREFIX_MATCH
                                                : Suggestion::SUBSTRING_MATCH;
 
-  GURL card_art_url_for_virtual_card_option;
+  std::string server_id_for_virtual_card_option;
   if (virtual_card_option &&
       credit_card.record_type() == CreditCard::MASKED_SERVER_CARD) {
-    card_art_url_for_virtual_card_option = credit_card.card_art_url();
+    server_id_for_virtual_card_option = credit_card.server_id();
   } else if (virtual_card_option &&
              credit_card.record_type() == CreditCard::LOCAL_CARD) {
     const CreditCard* server_duplicate_card =
         GetServerCardForLocalCard(&credit_card);
     DCHECK(server_duplicate_card);
-    card_art_url_for_virtual_card_option =
-        server_duplicate_card->card_art_url();
+    server_id_for_virtual_card_option = server_duplicate_card->server_id();
     backend_id = server_duplicate_card->guid();
   }
   suggestion.backend_id = backend_id;
@@ -252,12 +251,9 @@
         feature_engagement::kIPHKeyboardAccessoryPaymentVirtualCardFeature.name;
 #endif  // OS_ANDROID
 
+    // TODO(crbug.com/1196021): Populate custom_icon with card art if available
+    // (use server_id_for_virtual_card_option).
     suggestion.frontend_id = POPUP_ITEM_ID_VIRTUAL_CREDIT_CARD_ENTRY;
-
-    gfx::Image* image = personal_data_->GetCreditCardArtImageForUrl(
-        card_art_url_for_virtual_card_option);
-    if (image)
-      suggestion.custom_icon = *image;
   }
 
   return suggestion;
diff --git a/components/autofill/core/browser/browser_autofill_manager.cc b/components/autofill/core/browser/browser_autofill_manager.cc
index 7c34877..47e4bff 100644
--- a/components/autofill/core/browser/browser_autofill_manager.cc
+++ b/components/autofill/core/browser/browser_autofill_manager.cc
@@ -1484,10 +1484,9 @@
   // If synced down card is a virtual card, let the client know so that it can
   // show the UI to help user to manually fill the form, if needed.
   if (credit_card->record_type() == CreditCard::VIRTUAL_CARD) {
-    gfx::Image* card_art_image = personal_data_->GetCreditCardArtImageForUrl(
-        credit_card->card_art_url());
-    client()->OnVirtualCardDataAvailable(
-        credit_card, cvc, card_art_image ? *card_art_image : gfx::Image());
+    // TODO(crbug.com/1196021): Pass in real card image.
+    client()->OnVirtualCardDataAvailable(credit_card, cvc,
+                                         /*card_image=*/gfx::Image());
   }
 
   FillCreditCardForm(credit_card_query_id_, credit_card_form_,
diff --git a/components/autofill/core/browser/data_model/credit_card_art_image.cc b/components/autofill/core/browser/data_model/credit_card_art_image.cc
index 97725d8..e63ac3a8 100644
--- a/components/autofill/core/browser/data_model/credit_card_art_image.cc
+++ b/components/autofill/core/browser/data_model/credit_card_art_image.cc
@@ -8,8 +8,13 @@
 
 CreditCardArtImage::CreditCardArtImage() = default;
 
-CreditCardArtImage::CreditCardArtImage(const CreditCardArtImage& other) =
-    default;
+CreditCardArtImage::CreditCardArtImage(const std::string& id,
+                                       int64_t instrument_id,
+                                       std::vector<uint8_t> card_art_image) {
+  this->id = id;
+  this->instrument_id = instrument_id;
+  this->card_art_image = std::move(card_art_image);
+}
 
 CreditCardArtImage::~CreditCardArtImage() = default;
 
diff --git a/components/autofill/core/browser/data_model/credit_card_art_image.h b/components/autofill/core/browser/data_model/credit_card_art_image.h
index 7f5fc595..4ae25d2 100644
--- a/components/autofill/core/browser/data_model/credit_card_art_image.h
+++ b/components/autofill/core/browser/data_model/credit_card_art_image.h
@@ -5,23 +5,30 @@
 #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_CREDIT_CARD_ART_IMAGE_H_
 #define COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_CREDIT_CARD_ART_IMAGE_H_
 
-#include "ui/gfx/image/image.h"
-#include "url/gurl.h"
+#include <string>
+#include <vector>
 
 namespace autofill {
 
-// Represents an rich card art image for the card art url.
+// Represents an rich card art image for the server credit card.
 struct CreditCardArtImage {
  public:
   CreditCardArtImage();
-  CreditCardArtImage(const CreditCardArtImage& other);
+  CreditCardArtImage(const std::string& id,
+                     int64_t instrument_id,
+                     std::vector<uint8_t> card_art_image);
   ~CreditCardArtImage();
+  CreditCardArtImage(const CreditCardArtImage&) = delete;
+  CreditCardArtImage& operator=(const CreditCardArtImage&) = delete;
 
-  // The url to fetch the card art image.
-  GURL card_art_url;
+  // The server id for the related credit card.
+  std::string id;
 
-  // The customized card art image.
-  gfx::Image card_art_image;
+  // The instrument id for the related credit card.
+  int64_t instrument_id;
+
+  // The customized card art image. Stored as an raw PNG-encoded data.
+  std::vector<uint8_t> card_art_image;
 };
 
 }  // namespace autofill
diff --git a/components/autofill/core/browser/personal_data_manager.cc b/components/autofill/core/browser/personal_data_manager.cc
index 7fa27cc..8bdb9da 100644
--- a/components/autofill/core/browser/personal_data_manager.cc
+++ b/components/autofill/core/browser/personal_data_manager.cc
@@ -34,7 +34,6 @@
 #include "components/autofill/core/browser/autofill_metrics.h"
 #include "components/autofill/core/browser/autofill_profile_save_strike_database.h"
 #include "components/autofill/core/browser/data_model/autofill_profile_comparator.h"
-#include "components/autofill/core/browser/data_model/credit_card_art_image.h"
 #include "components/autofill/core/browser/data_model/phone_number.h"
 #include "components/autofill/core/browser/form_structure.h"
 #include "components/autofill/core/browser/geo/address_i18n.h"
@@ -153,9 +152,6 @@
   explicit PersonalDatabaseHelper(PersonalDataManager* personal_data_manager)
       : personal_data_manager_(personal_data_manager) {}
 
-  PersonalDatabaseHelper(const PersonalDatabaseHelper&) = delete;
-  PersonalDatabaseHelper& operator=(const PersonalDatabaseHelper&) = delete;
-
   void Init(scoped_refptr<AutofillWebDataService> profile_database,
             scoped_refptr<AutofillWebDataService> account_database) {
     profile_database_ = profile_database;
@@ -256,6 +252,8 @@
   scoped_refptr<AutofillWebDataService> server_database_;
 
   PersonalDataManager* personal_data_manager_;
+
+  DISALLOW_COPY_AND_ASSIGN(PersonalDatabaseHelper);
 };
 
 PersonalDataManager::PersonalDataManager(
@@ -480,7 +478,6 @@
           ReceiveLoadedDbValues(h, result.get(),
                                 &pending_server_creditcards_query_,
                                 &server_credit_cards_);
-          OnServerCreditCardsRefreshed();
         }
         break;
       case AUTOFILL_CLOUDTOKEN_RESULT:
@@ -964,7 +961,6 @@
   payments_customer_data_.reset();
   server_credit_card_cloud_token_data_.clear();
   autofill_offer_data_.clear();
-  credit_card_art_images_.clear();
 }
 
 void PersonalDataManager::ClearAllLocalData() {
@@ -1231,41 +1227,6 @@
   return result;
 }
 
-std::vector<const AutofillOfferData*>
-PersonalDataManager::GetAutofillPromoCodeOffers() const {
-  if (!IsAutofillWalletImportEnabled())
-    return {};
-
-  std::vector<const AutofillOfferData*> result;
-  result.reserve(autofill_offer_data_.size());
-  for (const auto& data : autofill_offer_data_) {
-    if (data.get()->IsPromoCodeOffer())
-      result.push_back(data.get());
-  }
-  return result;
-}
-
-gfx::Image* PersonalDataManager::GetCreditCardArtImageForUrl(
-    const GURL& card_art_url) const {
-  if (!IsAutofillWalletImportEnabled())
-    return nullptr;
-
-  if (!card_art_url.is_valid())
-    return nullptr;
-
-  auto images_iterator = credit_card_art_images_.find(card_art_url);
-
-  // Found an image and return it.
-  if (images_iterator != credit_card_art_images_.end()) {
-    gfx::Image* image = images_iterator->second.get();
-    if (!image->IsEmpty())
-      return image;
-  }
-
-  FetchImagesForUrls({card_art_url});
-  return nullptr;
-}
-
 void PersonalDataManager::Refresh() {
   LoadProfiles();
   LoadCreditCards();
@@ -1543,16 +1504,6 @@
   return empty_validity_map;
 }
 
-void PersonalDataManager::FetchImagesForUrls(
-    const std::vector<GURL>& updated_urls) const {
-  if (!image_fetcher_)
-    return;
-
-  image_fetcher_->FetchImagesForUrls(
-      updated_urls, base::BindOnce(&PersonalDataManager::OnCardArtImagesFetched,
-                                   weak_factory_.GetWeakPtr()));
-}
-
 const std::string& PersonalDataManager::GetDefaultCountryCodeForNewAddress()
     const {
   if (default_country_code_.empty())
@@ -1965,8 +1916,7 @@
 void PersonalDataManager::LogStoredCreditCardMetrics() const {
   if (!has_logged_stored_credit_card_metrics_) {
     AutofillMetrics::LogStoredCreditCardMetrics(
-        local_credit_cards_, server_credit_cards_,
-        GetServerCardWithArtImageCount(), kDisusedDataModelTimeDelta);
+        local_credit_cards_, server_credit_cards_, kDisusedDataModelTimeDelta);
 
     // Only log this info once per chrome user profile load.
     has_logged_stored_credit_card_metrics_ = true;
@@ -2149,16 +2099,6 @@
   OnProfileChangeDone(guid);
 }
 
-void PersonalDataManager::OnCardArtImagesFetched(
-    std::vector<std::unique_ptr<CreditCardArtImage>> art_images) {
-  for (auto& art_image : art_images) {
-    if (!art_image->card_art_image.IsEmpty()) {
-      credit_card_art_images_[art_image->card_art_url] =
-          std::make_unique<gfx::Image>(art_image->card_art_image);
-    }
-  }
-}
-
 void PersonalDataManager::LogServerCardLinkClicked() const {
   AutofillMetrics::LogServerCardLinkClicked(GetSyncSigninState());
 }
@@ -2435,34 +2375,4 @@
   return database_helper_->GetLocalDatabase();
 }
 
-void PersonalDataManager::OnServerCreditCardsRefreshed() {
-  ProcessVirtualCardMetadataChanges();
-}
-
-void PersonalDataManager::ProcessVirtualCardMetadataChanges() {
-  std::vector<GURL> updated_urls;
-  for (auto& card : server_credit_cards_) {
-    // If this card is not enrolled for virtual cards or the url is not valid,
-    // continue.
-    if (card->virtual_card_enrollment_state() != CreditCard::ENROLLED ||
-        !card->card_art_url().is_valid()) {
-      continue;
-    }
-
-    // Otherwise try to find the old entry with the same url.
-    auto it = credit_card_art_images_.find(card->card_art_url());
-    // No existing entry found.
-    if (it == credit_card_art_images_.end())
-      updated_urls.emplace_back(card->card_art_url());
-  }
-  if (!updated_urls.empty())
-    FetchImagesForUrls(updated_urls);
-}
-
-size_t PersonalDataManager::GetServerCardWithArtImageCount() const {
-  return base::ranges::count_if(
-      server_credit_cards_.begin(), server_credit_cards_.end(),
-      [](const auto& card) { return card->card_art_url().is_valid(); });
-}
-
 }  // namespace autofill
diff --git a/components/autofill/core/browser/personal_data_manager.h b/components/autofill/core/browser/personal_data_manager.h
index 178e47d..5c55e2e 100644
--- a/components/autofill/core/browser/personal_data_manager.h
+++ b/components/autofill/core/browser/personal_data_manager.h
@@ -15,6 +15,7 @@
 #include <vector>
 
 #include "base/gtest_prod_util.h"
+#include "base/macros.h"
 #include "base/observer_list.h"
 #include "base/scoped_observation.h"
 #include "build/build_config.h"
@@ -54,7 +55,6 @@
 namespace autofill {
 class AutofillImageFetcher;
 class AutofillInteractiveTest;
-struct CreditCardArtImage;
 class PersonalDataManagerObserver;
 class PersonalDataManagerFactory;
 class PersonalDatabaseHelper;
@@ -85,8 +85,6 @@
   explicit PersonalDataManager(const std::string& app_locale);
   PersonalDataManager(const std::string& app_locale,
                       const std::string& country_code);
-  PersonalDataManager(const PersonalDataManager&) = delete;
-  PersonalDataManager& operator=(const PersonalDataManager&) = delete;
   ~PersonalDataManager() override;
 
   // Kicks off asynchronous loading of profiles and credit cards.
@@ -288,13 +286,6 @@
   // Returns autofill offer data, including card-linked and promo code offers.
   virtual std::vector<AutofillOfferData*> GetAutofillOffers() const;
 
-  // Returns autofill offer data, but only for promo code offers.
-  std::vector<const AutofillOfferData*> GetAutofillPromoCodeOffers() const;
-
-  // Returns the customized credit card art image for the |card_art_url|.
-  virtual gfx::Image* GetCreditCardArtImageForUrl(
-      const GURL& card_art_url) const;
-
   // Updates the validity states of |profiles| according to server validity map.
   void UpdateProfilesServerValidityMapsIfNeeded(
       const std::vector<AutofillProfile*>& profiles);
@@ -481,8 +472,6 @@
                            AddCreditCard_CrazyCharacters);
   FRIEND_TEST_ALL_PREFIXES(PersonalDataManagerTest, AddCreditCard_Invalid);
   FRIEND_TEST_ALL_PREFIXES(PersonalDataManagerTest,
-                           AddAndGetCreditCardArtImage);
-  FRIEND_TEST_ALL_PREFIXES(PersonalDataManagerTest,
                            DedupeProfiles_ProfilesToDelete);
   FRIEND_TEST_ALL_PREFIXES(PersonalDataManagerTest,
                            DedupeProfiles_GuidsMergeMap);
@@ -547,7 +536,6 @@
                            RequestProfileServerValidity);
   FRIEND_TEST_ALL_PREFIXES(PersonalDataManagerTest,
                            GetProfileSuggestions_Validity);
-  FRIEND_TEST_ALL_PREFIXES(PersonalDataManagerTest, LogStoredCreditCardMetrics);
 
   friend class autofill::AutofillInteractiveTest;
   friend class autofill::PersonalDataManagerCleaner;
@@ -641,9 +629,6 @@
   // Get the profiles fields validity map by |guid|.
   const ProfileValidityMap& GetProfileValidityByGUID(const std::string& guid);
 
-  // Asks AutofillImageFetcher to fetch images.
-  virtual void FetchImagesForUrls(const std::vector<GURL>& updated_urls) const;
-
   // Decides which database type to use for server and local cards.
   std::unique_ptr<PersonalDatabaseHelper> database_helper_;
 
@@ -671,13 +656,9 @@
   std::vector<std::unique_ptr<CreditCardCloudTokenData>>
       server_credit_card_cloud_token_data_;
 
-  // Autofill offer data, including card-linked offers for the user's credit
-  // cards as well as promo code offers.
+  // Offer data for user's credit cards.
   std::vector<std::unique_ptr<AutofillOfferData>> autofill_offer_data_;
 
-  // The customized card art images for the URL.
-  std::map<GURL, std::unique_ptr<gfx::Image>> credit_card_art_images_;
-
   // When the manager makes a request from WebDataServiceBase, the database
   // is queried on another sequence, we record the query handle until we
   // get called back.  We store handles for both profile and credit card queries
@@ -766,11 +747,6 @@
   // Triggered when a profile is added/updated/removed on db.
   void OnAutofillProfileChanged(const AutofillProfileDeepChange& change);
 
-  // Triggered when all the card art image fetches have been completed,
-  // regardless of whether all of them succeeded.
-  void OnCardArtImagesFetched(
-      std::vector<std::unique_ptr<CreditCardArtImage>> art_images);
-
   // Look at the next profile change for profile with guid = |guid|, and handle
   // it.
   void HandleNextProfileChange(const std::string& guid);
@@ -798,17 +774,6 @@
   // Returns the database that is used for storing local data.
   scoped_refptr<AutofillWebDataService> GetLocalDatabase();
 
-  // Invoked when server credit card cache is refreshed.
-  void OnServerCreditCardsRefreshed();
-
-  // Checks whether any virtual card metadata for server cards is new and makes
-  // corresponding changes.
-  void ProcessVirtualCardMetadataChanges();
-
-  // Returns the number of server credit cards that have a valid credit card art
-  // image.
-  size_t GetServerCardWithArtImageCount() const;
-
   // Stores the |app_locale| supplied on construction.
   const std::string app_locale_;
 
@@ -895,6 +860,8 @@
       history_service_observation_{this};
 
   base::WeakPtrFactory<PersonalDataManager> weak_factory_{this};
+
+  DISALLOW_COPY_AND_ASSIGN(PersonalDataManager);
 };
 
 }  // namespace autofill
diff --git a/components/autofill/core/browser/personal_data_manager_unittest.cc b/components/autofill/core/browser/personal_data_manager_unittest.cc
index 2452cfe..2ad385ee 100644
--- a/components/autofill/core/browser/personal_data_manager_unittest.cc
+++ b/components/autofill/core/browser/personal_data_manager_unittest.cc
@@ -39,7 +39,6 @@
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/data_model/autofill_profile_comparator.h"
 #include "components/autofill/core/browser/data_model/autofill_structured_address_utils.h"
-#include "components/autofill/core/browser/data_model/credit_card_art_image.h"
 #include "components/autofill/core/browser/field_types.h"
 #include "components/autofill/core/browser/form_structure.h"
 #include "components/autofill/core/browser/personal_data_manager_observer.h"
@@ -71,7 +70,6 @@
 #include "services/network/test/test_url_loader_factory.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
-#include "ui/gfx/image/image_unittest_util.h"
 
 namespace autofill {
 
@@ -115,11 +113,6 @@
   void OnValidatedPDM(const AutofillProfile* profile) {
     PersonalDataManager::OnValidated(profile);
   }
-
-  MOCK_METHOD(void,
-              FetchImagesForUrls,
-              ((const std::vector<GURL>& updated_urls)),
-              (const override));
 };
 
 template <typename T>
@@ -569,11 +562,6 @@
     WaitForOnPersonalDataChanged();
   }
 
-  void AddOfferDataForTest(AutofillOfferData offer_data) {
-    personal_data_->AddOfferDataForTest(
-        std::make_unique<AutofillOfferData>(offer_data));
-  }
-
   std::unique_ptr<PersonalDataManager> personal_data_;
 };
 
@@ -723,24 +711,6 @@
         prefs::kAutofillLastVersionValidated);
   }
 
-  void AddOfferDataForTest(AutofillOfferData offer_data) {
-    personal_data_->AddOfferDataForTest(
-        std::make_unique<AutofillOfferData>(offer_data));
-  }
-
-  // Verifies the credit card art image fetching should begin.
-  void WaitForFetchImagesForUrls(const std::vector<GURL>& updated_urls) {
-    base::RunLoop run_loop;
-    EXPECT_CALL(personal_data_observer_, OnPersonalDataFinishedProfileTasks())
-        .Times(testing::AnyNumber());
-    EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged())
-        .Times(testing::AnyNumber());
-    EXPECT_CALL(*personal_data_, FetchImagesForUrls(updated_urls))
-        .Times(1)
-        .WillOnce(QuitMessageLoop(&run_loop));
-    run_loop.Run();
-  }
-
   std::unique_ptr<PersonalDataManagerMock> personal_data_;
 };
 
@@ -1305,51 +1275,6 @@
   ASSERT_EQ(card, *personal_data_->GetCreditCards()[0]);
 }
 
-#if !defined(OS_IOS)
-TEST_F(PersonalDataManagerTest, AddAndGetCreditCardArtImage) {
-  gfx::Image expected_image = gfx::test::CreateImage(32, 20);
-  std::unique_ptr<CreditCardArtImage> credit_card_art_image =
-      std::make_unique<CreditCardArtImage>();
-  credit_card_art_image->card_art_url = GURL("https://www.example.com");
-  credit_card_art_image->card_art_image = expected_image;
-  std::vector<std::unique_ptr<CreditCardArtImage>> images;
-  images.emplace_back(std::move(credit_card_art_image));
-
-  personal_data_->OnCardArtImagesFetched(std::move(images));
-
-  gfx::Image* actual_image = personal_data_->GetCreditCardArtImageForUrl(
-      GURL("https://www.example.com"));
-  ASSERT_TRUE(actual_image);
-  EXPECT_TRUE(gfx::test::AreImagesEqual(expected_image, *actual_image));
-}
-
-TEST_F(PersonalDataManagerMockTest, ProcessVirtualCardMetadataChanges) {
-  CreditCard card = test::GetFullServerCard();
-  card.set_virtual_card_enrollment_state(
-      CreditCard::VirtualCardEnrollmentState::UNENROLLED);
-  card.set_server_id("card_server_id");
-  personal_data_->AddFullServerCreditCard(card);
-  WaitForOnPersonalDataChanged();
-
-  card.set_virtual_card_enrollment_state(
-      CreditCard::VirtualCardEnrollmentState::ENROLLED);
-  card.set_server_id("card_server_id");
-  card.set_card_art_url(GURL("https://www.example.com/card1"));
-  std::vector<GURL> updated_urls;
-  updated_urls.emplace_back(GURL("https://www.example.com/card1"));
-
-  personal_data_->AddFullServerCreditCard(card);
-  WaitForFetchImagesForUrls(updated_urls);
-
-  card.set_card_art_url(GURL("https://www.example.com/card2"));
-  updated_urls.clear();
-  updated_urls.emplace_back(GURL("https://www.example.com/card2"));
-
-  personal_data_->AddFullServerCreditCard(card);
-  WaitForFetchImagesForUrls(updated_urls);
-}
-#endif
-
 TEST_F(PersonalDataManagerTest, UpdateUnverifiedProfilesAndCreditCards) {
   // Start with unverified data.
   AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/");
@@ -2016,61 +1941,6 @@
   EXPECT_EQ(1U, personal_data_->GetCreditCards().size());
 }
 
-// Tests that GetAutofillOffers returns all available offers.
-TEST_F(PersonalDataManagerTest, GetAutofillOffers) {
-  // Add two card-linked offers and one promo code offer.
-  AddOfferDataForTest(test::GetCardLinkedOfferData1());
-  AddOfferDataForTest(test::GetCardLinkedOfferData2());
-  AddOfferDataForTest(test::GetPromoCodeOfferData());
-
-  // Should return all three.
-  EXPECT_EQ(3U, personal_data_->GetAutofillOffers().size());
-}
-
-// Tests that GetAutofillOffers does not return any offers if
-// |IsAutofillWalletImportEnabled()| returns |false|.
-TEST_F(PersonalDataManagerMockTest, GetAutofillOffers_WalletImportDisabled) {
-  // Add a card-linked offer and a promo code offer.
-  AddOfferDataForTest(test::GetCardLinkedOfferData1());
-  AddOfferDataForTest(test::GetPromoCodeOfferData());
-
-  base::RunLoop run_loop;
-  EXPECT_CALL(personal_data_observer_, OnPersonalDataFinishedProfileTasks())
-      .WillOnce(QuitMessageLoop(&run_loop));
-  prefs::SetPaymentsIntegrationEnabled(prefs_.get(), false);
-
-  // Should return neither of them as the wallet import pref is disabled.
-  EXPECT_EQ(0U, personal_data_->GetAutofillOffers().size());
-}
-
-// Tests that GetAutofillPromoCodeOffers returns available promo code offers
-// only.
-TEST_F(PersonalDataManagerTest, GetAutofillPromoCodeOffers) {
-  // Add two card-linked offers and one promo code offer.
-  AddOfferDataForTest(test::GetCardLinkedOfferData1());
-  AddOfferDataForTest(test::GetCardLinkedOfferData2());
-  AddOfferDataForTest(test::GetPromoCodeOfferData());
-
-  // Only the promo code offer should be returned.
-  EXPECT_EQ(1U, personal_data_->GetAutofillPromoCodeOffers().size());
-}
-
-// Tests that GetAutofillPromoCodeOffers does not return any promo code offers
-// if |IsAutofillWalletImportEnabled()| returns |false|.
-TEST_F(PersonalDataManagerMockTest,
-       GetAutofillPromoCodeOffers_WalletImportDisabled) {
-  // Add a promo code offer.
-  AddOfferDataForTest(test::GetPromoCodeOfferData());
-
-  base::RunLoop run_loop;
-  EXPECT_CALL(personal_data_observer_, OnPersonalDataFinishedProfileTasks())
-      .WillOnce(QuitMessageLoop(&run_loop));
-  prefs::SetPaymentsIntegrationEnabled(prefs_.get(), false);
-
-  // Should not return the offer as the wallet import pref is disabled.
-  EXPECT_EQ(0U, personal_data_->GetAutofillOffers().size());
-}
-
 TEST_F(PersonalDataManagerTest, DefaultCountryCodeIsCached) {
   // The return value should always be some country code, no matter what.
   std::string default_country =
@@ -6092,16 +5962,9 @@
     }
   }
 
-  // Sets the virtual card enrollment state for the first three server cards.
+  // Sets the virtual card enrollment state for the first card.
   server_cards[0].set_virtual_card_enrollment_state(
       CreditCard::VirtualCardEnrollmentState::ENROLLED);
-  server_cards[0].set_card_art_url(GURL("https://www.example.com/image1"));
-  server_cards[1].set_virtual_card_enrollment_state(
-      CreditCard::VirtualCardEnrollmentState::ENROLLED);
-  server_cards[1].set_card_art_url(GURL("https://www.example.com/image1"));
-  server_cards[2].set_virtual_card_enrollment_state(
-      CreditCard::VirtualCardEnrollmentState::ENROLLED);
-  server_cards[2].set_card_art_url(GURL("https://www.example.com/image2"));
 
   SetServerCards(server_cards);
 
@@ -6120,8 +5983,6 @@
   base::HistogramTester histogram_tester;
   ResetPersonalDataManager(USER_MODE_NORMAL);
 
-  EXPECT_EQ(personal_data_->GetServerCardWithArtImageCount(), 3U);
-
   ASSERT_EQ(6U, personal_data_->GetCreditCards().size());
 
   // Validate the basic count metrics for both local and server cards. Deep
@@ -6145,8 +6006,6 @@
       "Autofill.StoredCreditCardCount.Server.Unmasked", 2, 1);
   histogram_tester.ExpectTotalCount(
       "Autofill.StoredCreditCardCount.Server.WithVirtualCardMetadata", 1);
-  histogram_tester.ExpectBucketCount(
-      "Autofill.StoredCreditCardCount.Server.WithCardArtImage", 3, 1);
 }
 
 TEST_F(PersonalDataManagerTest, CreateDataForTest) {
diff --git a/components/autofill/core/browser/ui/autofill_image_fetcher.cc b/components/autofill/core/browser/ui/autofill_image_fetcher.cc
index 3310fa1..e362912 100644
--- a/components/autofill/core/browser/ui/autofill_image_fetcher.cc
+++ b/components/autofill/core/browser/ui/autofill_image_fetcher.cc
@@ -5,8 +5,6 @@
 #include "components/autofill/core/browser/ui/autofill_image_fetcher.h"
 
 #include "components/autofill/core/browser/autofill_metrics.h"
-#include "components/autofill/core/browser/data_model/credit_card_art_image.h"
-#include "components/autofill/core/common/autofill_payments_features.h"
 #include "components/image_fetcher/core/image_decoder.h"
 #include "components/image_fetcher/core/image_fetcher_impl.h"
 #include "components/image_fetcher/core/request_metadata.h"
@@ -54,18 +52,14 @@
     : pending_request_count_(image_count),
       all_fetches_complete_callback_(std::move(callback)) {}
 
-void ImageFetchOperation::ImageFetched(const GURL& card_art_url,
+void ImageFetchOperation::ImageFetched(const std::string& card_server_id,
                                        const gfx::Image& card_art_image) {
   AutofillMetrics::LogImageFetchResult(/*succeeded=*/!card_art_image.IsEmpty());
+
   pending_request_count_--;
 
-  if (!card_art_image.IsEmpty()) {
-    auto credit_card_art_image = std::make_unique<CreditCardArtImage>();
-    credit_card_art_image->card_art_url = card_art_url;
-    credit_card_art_image->card_art_image = card_art_image;
-
-    fetched_card_art_images_.emplace_back(std::move(credit_card_art_image));
-  }
+  if (!card_art_image.IsEmpty())
+    fetched_card_art_images_[card_server_id] = card_art_image;
 
   if (pending_request_count_ == 0U) {
     std::move(all_fetches_complete_callback_)
@@ -87,7 +81,7 @@
 AutofillImageFetcher::~AutofillImageFetcher() = default;
 
 void AutofillImageFetcher::FetchImagesForUrls(
-    const std::vector<GURL>& card_art_urls,
+    const std::map<std::string, GURL>& card_server_ids_and_art_urls,
     CardArtImagesFetchedCallback callback) {
   if (!image_fetcher_) {
     std::move(callback).Run({});
@@ -95,39 +89,40 @@
   }
 
   auto image_fetcher_operation = base::MakeRefCounted<ImageFetchOperation>(
-      card_art_urls.size(), std::move(callback));
+      card_server_ids_and_art_urls.size(), std::move(callback));
 
-  for (const auto& card_art_url : card_art_urls)
-    FetchImageForUrl(image_fetcher_operation, card_art_url);
+  for (const auto& card_server_id_and_art_url : card_server_ids_and_art_urls) {
+    FetchImageForUrl(image_fetcher_operation, card_server_id_and_art_url.first,
+                     card_server_id_and_art_url.second);
+  }
 }
 
 void AutofillImageFetcher::FetchImageForUrl(
     const scoped_refptr<ImageFetchOperation>& operation,
+    const std::string& card_server_id,
     const GURL& card_art_url) {
   if (!card_art_url.is_valid()) {
-    OnCardArtImageFetched(operation, card_art_url, gfx::Image(),
+    OnCardArtImageFetched(operation, card_server_id, gfx::Image(),
                           image_fetcher::RequestMetadata());
     return;
   }
 
   image_fetcher::ImageFetcherParams params(kCardArtImageTrafficAnnotation,
                                            kUmaClientName);
-  params.set_hold_for_expiration_interval(base::TimeDelta::FromMinutes(
-      features::kAutofillImageFetcherDiskCacheExpirationInMinutes.Get()));
   image_fetcher_->FetchImage(
       card_art_url,
       base::BindOnce(&AutofillImageFetcher::OnCardArtImageFetched, operation,
-                     card_art_url),
+                     card_server_id),
       std::move(params));
 }
 
 // static
 void AutofillImageFetcher::OnCardArtImageFetched(
     const scoped_refptr<ImageFetchOperation>& operation,
-    const GURL& card_art_url,
+    const std::string& card_server_id,
     const gfx::Image& card_art_image,
     const image_fetcher::RequestMetadata& metadata) {
-  operation->ImageFetched(card_art_url, card_art_image);
+  operation->ImageFetched(card_server_id, card_art_image);
 }
 
 }  // namespace autofill
diff --git a/components/autofill/core/browser/ui/autofill_image_fetcher.h b/components/autofill/core/browser/ui/autofill_image_fetcher.h
index 863c8da..4f269fb 100644
--- a/components/autofill/core/browser/ui/autofill_image_fetcher.h
+++ b/components/autofill/core/browser/ui/autofill_image_fetcher.h
@@ -8,7 +8,6 @@
 #include <map>
 #include <memory>
 #include <string>
-#include <vector>
 
 #include "base/callback.h"
 #include "base/memory/scoped_refptr.h"
@@ -32,10 +31,8 @@
 
 namespace autofill {
 
-struct CreditCardArtImage;
-
 using CardArtImagesFetchedCallback = base::OnceCallback<void(
-    std::vector<std::unique_ptr<CreditCardArtImage>> card_art_images)>;
+    const std::map<std::string, gfx::Image>& card_art_images)>;
 
 // The image fetching operation instance. It tracks the state of the paired
 // request. Will be created when the AutofillImageFetcher receives a request to
@@ -48,7 +45,8 @@
   ImageFetchOperation& operator=(const ImageFetchOperation&) = delete;
 
   // Invoked when an image fetch is complete and data is returned.
-  void ImageFetched(const GURL& card_art_url, const gfx::Image& card_art_image);
+  void ImageFetched(const std::string& card_server_id,
+                    const gfx::Image& card_art_image);
 
  private:
   friend class base::RefCounted<ImageFetchOperation>;
@@ -58,8 +56,8 @@
   // The number of images that should be fetched before completion.
   size_t pending_request_count_ = 0;
 
-  // The vector of the fetched CreditCardArtImages.
-  std::vector<std::unique_ptr<CreditCardArtImage>> fetched_card_art_images_;
+  // The mapping of each credit card's server id to its card art image.
+  std::map<std::string, gfx::Image> fetched_card_art_images_;
 
   // Callback function to be invoked when fetching is finished.
   CardArtImagesFetchedCallback all_fetches_complete_callback_;
@@ -76,19 +74,21 @@
   AutofillImageFetcher& operator=(const AutofillImageFetcher&) = delete;
 
   // Once invoked, the |image_fetcher_| will start fetching images based on the
-  // urls. |card_art_urls| is a vector with credit cards' card art image url.
-  // |callback| will be invoked when all the requests have been completed. The
-  // callback will receive a vector of CreditCardArtImage, for (only) those
-  // cards for which the AutofillImageFetcher could successfully fetch the
-  // image.
-  void FetchImagesForUrls(const std::vector<GURL>& card_art_urls,
-                          CardArtImagesFetchedCallback callback);
+  // urls. |card_server_ids_and_art_urls| is a map with credit cards' server id
+  // as the key and its card art image url as the value. |callback| will be
+  // invoked when all the requests have been completed. The callback will
+  // receive a map of card server IDs to images, for (only) those cards for
+  // which the AutofillImageFetcher could successfully fetch the image.
+  void FetchImagesForUrls(
+      const std::map<std::string, GURL>& card_server_ids_and_art_urls,
+      CardArtImagesFetchedCallback callback);
 
  protected:
-  // Helper function to fetch art image for card given the |card_art_url|, for
-  // the specific |operation| instance.
+  // Helper function to fetch art image for card with |card_server_id| given the
+  // |card_art_url|, for the specific |operation| instance.
   virtual void FetchImageForUrl(
       const scoped_refptr<ImageFetchOperation>& operation,
+      const std::string& card_server_id,
       const GURL& card_art_url);
 
   // The image fetcher implementation.
@@ -100,7 +100,7 @@
   // Called when an image is fetched for the |operation| instance.
   static void OnCardArtImageFetched(
       const scoped_refptr<ImageFetchOperation>& operation,
-      const GURL& card_art_url,
+      const std::string& card_server_id,
       const gfx::Image& card_art_image,
       const image_fetcher::RequestMetadata& metadata);
 };
diff --git a/components/autofill/core/browser/ui/autofill_image_fetcher_unittest.cc b/components/autofill/core/browser/ui/autofill_image_fetcher_unittest.cc
index ba338e9..40d7b314 100644
--- a/components/autofill/core/browser/ui/autofill_image_fetcher_unittest.cc
+++ b/components/autofill/core/browser/ui/autofill_image_fetcher_unittest.cc
@@ -8,7 +8,6 @@
 #include "base/test/bind.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
-#include "components/autofill/core/browser/data_model/credit_card_art_image.h"
 #include "components/image_fetcher/core/image_decoder.h"
 #include "components/image_fetcher/core/mock_image_fetcher.h"
 #include "components/image_fetcher/core/request_metadata.h"
@@ -35,8 +34,10 @@
   ~TestAutofillImageFetcher() override = default;
 
   void FetchImageForUrl(const scoped_refptr<ImageFetchOperation>& operation,
+                        const std::string& card_server_id,
                         const GURL& card_art_url) override {
-    AutofillImageFetcher::FetchImageForUrl(operation, card_art_url);
+    AutofillImageFetcher::FetchImageForUrl(operation, card_server_id,
+                                           card_art_url);
     current_operation_ = operation;
   }
 
@@ -57,14 +58,15 @@
         std::make_unique<TestAutofillImageFetcher>(std::move(image_fetcher));
   }
 
-  void SimulateOnImageFetched(const GURL& url, const gfx::Image& image) {
+  void SimulateOnImageFetched(const std::string& server_id,
+                              const gfx::Image& image) {
     TestAutofillImageFetcher::OnCardArtImageFetched(
-        autofill_image_fetcher()->current_operation(), url, image,
+        autofill_image_fetcher()->current_operation(), server_id, image,
         image_fetcher::RequestMetadata());
   }
 
-  void ValidateResult(std::map<GURL, gfx::Image> received_images,
-                      std::map<GURL, gfx::Image> expected_images) {
+  void ValidateResult(std::map<std::string, gfx::Image> received_images,
+                      std::map<std::string, gfx::Image> expected_images) {
     ASSERT_EQ(expected_images.size(), received_images.size());
     for (const auto& expected_pair : expected_images) {
       const gfx::Image& expected_image = expected_pair.second;
@@ -95,32 +97,30 @@
   gfx::Image fake_image2 =
       ui::ResourceBundle::GetSharedInstance().GetNativeImageNamed(
           IDR_DEFAULT_FAVICON_DARK);
-  GURL fake_url1 = GURL("http://www.example.com/fake_image1");
-  GURL fake_url2 = GURL("http://www.example.com/fake_image2");
-
-  std::map<GURL, gfx::Image> expected_images = {{fake_url1, fake_image1},
-                                                {fake_url2, fake_image2}};
+  std::map<std::string, gfx::Image> expected_images = {
+      {"server_id1", fake_image1}, {"server_id2", fake_image2}};
 
   // Expect callback to be called with some received images.
-  std::map<GURL, gfx::Image> received_images;
+  std::map<std::string, gfx::Image> received_images;
   auto callback = base::BindLambdaForTesting(
-      [&](std::vector<std::unique_ptr<CreditCardArtImage>> card_art_images) {
-        for (auto& entry : card_art_images)
-          received_images[entry->card_art_url] = entry->card_art_image;
+      [&](const std::map<std::string, gfx::Image>& card_art_image_map) {
+        received_images = card_art_image_map;
       });
 
   base::HistogramTester histogram_tester;
   // Expect to be called twice.
   EXPECT_CALL(*mock_image_fetcher(), FetchImageAndData_(_, _, _, _)).Times(2);
-  std::vector<GURL> urls = {fake_url1, fake_url2};
-  autofill_image_fetcher()->FetchImagesForUrls(urls, callback);
+  std::map<std::string, GURL> url_map = {
+      {"server_id1", GURL("http://www.example.com/fake_image1")},
+      {"server_id2", GURL("http://www.example.com/fake_image2")}};
+  autofill_image_fetcher()->FetchImagesForUrls(url_map, callback);
 
   // Simulate successful image fetching (for image with URL) -> expect the
   // callback to be called.
-  SimulateOnImageFetched(fake_url1, fake_image1);
-  SimulateOnImageFetched(fake_url2, fake_image2);
+  SimulateOnImageFetched("server_id1", fake_image1);
+  SimulateOnImageFetched("server_id2", fake_image2);
 
-  ValidateResult(std::move(received_images), expected_images);
+  ValidateResult(received_images, expected_images);
   histogram_tester.ExpectBucketCount("Autofill.ImageFetcher.Result", true, 2);
 }
 
@@ -128,54 +128,55 @@
   gfx::Image fake_image1 =
       ui::ResourceBundle::GetSharedInstance().GetNativeImageNamed(
           IDR_DEFAULT_FAVICON);
-  GURL fake_url1 = GURL("http://www.example.com/fake_image1");
-  std::map<GURL, gfx::Image> expected_images = {{fake_url1, fake_image1}};
+  std::map<std::string, gfx::Image> expected_images = {
+      {"server_id1", fake_image1}};
 
-  std::map<GURL, gfx::Image> received_images;
+  // Expect callback to be called with expected images.
+  std::map<std::string, gfx::Image> received_images;
   auto callback = base::BindLambdaForTesting(
-      [&](std::vector<std::unique_ptr<CreditCardArtImage>> card_art_images) {
-        for (auto& entry : card_art_images)
-          received_images[entry->card_art_url] = entry->card_art_image;
+      [&](const std::map<std::string, gfx::Image>& card_art_image_map) {
+        received_images = card_art_image_map;
       });
 
   base::HistogramTester histogram_tester;
   // Expect to be called once with one invalid url.
   EXPECT_CALL(*mock_image_fetcher(), FetchImageAndData_(_, _, _, _)).Times(1);
-  std::vector<GURL> urls = {fake_url1, GURL("")};
-  autofill_image_fetcher()->FetchImagesForUrls(urls, callback);
+  std::map<std::string, GURL> url_map = {
+      {"server_id1", GURL("http://www.example.com/fake_image1")},
+      {"server_id2", GURL("")}};
+  autofill_image_fetcher()->FetchImagesForUrls(url_map, callback);
 
   // Simulate successful image fetching (for image with URL) -> expect the
   // callback to be called.
-  SimulateOnImageFetched(fake_url1, fake_image1);
+  SimulateOnImageFetched("server_id1", fake_image1);
 
-  ValidateResult(std::move(received_images), expected_images);
+  ValidateResult(received_images, expected_images);
   histogram_tester.ExpectBucketCount("Autofill.ImageFetcher.Result", true, 1);
   histogram_tester.ExpectBucketCount("Autofill.ImageFetcher.Result", false, 1);
 }
 
 TEST_F(AutofillImageFetcherTest, FetchImage_ServerFailure) {
-  GURL fake_url1 = GURL("http://www.example.com/fake_image1");
-  std::map<GURL, gfx::Image> expected_images;
+  std::map<std::string, gfx::Image> expected_images = {};
 
   // Expect callback to be called with some received images.
-  std::map<GURL, gfx::Image> received_images;
+  std::map<std::string, gfx::Image> received_images;
   auto callback = base::BindLambdaForTesting(
-      [&](std::vector<std::unique_ptr<CreditCardArtImage>> card_art_images) {
-        for (auto& entry : card_art_images)
-          received_images[entry->card_art_url] = entry->card_art_image;
+      [&](const std::map<std::string, gfx::Image>& card_art_image_map) {
+        received_images = card_art_image_map;
       });
 
   base::HistogramTester histogram_tester;
   // Expect to be called once.
   EXPECT_CALL(*mock_image_fetcher(), FetchImageAndData_(_, _, _, _)).Times(1);
-  std::vector<GURL> urls = {fake_url1};
-  autofill_image_fetcher()->FetchImagesForUrls(urls, callback);
+  std::map<std::string, GURL> url_map = {
+      {"server_id1", GURL("http://www.example.com/fake_image1")}};
+  autofill_image_fetcher()->FetchImagesForUrls(url_map, callback);
 
   // Simulate failed image fetching (for image with URL) -> expect the
   // callback to be called.
-  SimulateOnImageFetched(fake_url1, gfx::Image());
+  SimulateOnImageFetched("server_id1", gfx::Image());
 
-  ValidateResult(std::move(received_images), expected_images);
+  ValidateResult(received_images, expected_images);
   histogram_tester.ExpectBucketCount("Autofill.ImageFetcher.Result", false, 1);
 }
 
diff --git a/components/autofill/core/browser/webdata/autofill_table.cc b/components/autofill/core/browser/webdata/autofill_table.cc
index b93f0bc..26042dd 100644
--- a/components/autofill/core/browser/webdata/autofill_table.cc
+++ b/components/autofill/core/browser/webdata/autofill_table.cc
@@ -29,6 +29,7 @@
 #include "components/autofill/core/browser/data_model/autofill_offer_data.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
+#include "components/autofill/core/browser/data_model/credit_card_art_image.h"
 #include "components/autofill/core/browser/data_model/credit_card_cloud_token_data.h"
 #include "components/autofill/core/browser/geo/autofill_country.h"
 #include "components/autofill/core/browser/payments/payments_customer_data.h"
@@ -2023,6 +2024,60 @@
   return s.Succeeded();
 }
 
+bool AutofillTable::AddCreditCardArtImage(
+    const CreditCardArtImage& credit_card_art_image) {
+  sql::Transaction transaction(db_);
+  if (!transaction.Begin())
+    return false;
+
+  sql::Statement s(db_->GetUniqueStatement(
+      "INSERT INTO credit_card_art_images(id, instrument_id, card_art_image)"
+      "VALUES (?,?,?)"));
+  s.BindString(0, credit_card_art_image.id);
+  s.BindInt64(1, credit_card_art_image.instrument_id);
+  s.BindBlob(2, credit_card_art_image.card_art_image);
+  s.Run();
+
+  return transaction.Commit();
+}
+
+bool AutofillTable::GetCreditCardArtImages(
+    std::vector<std::unique_ptr<CreditCardArtImage>>* credit_card_art_images) {
+  credit_card_art_images->clear();
+
+  sql::Statement s(
+      db_->GetUniqueStatement("SELECT "
+                              "id, "             // 0
+                              "instrument_id, "  // 1
+                              "card_art_image "  // 2
+                              "FROM credit_card_art_images"));
+
+  while (s.Step()) {
+    std::vector<uint8_t> card_art_image;
+    if (s.ColumnBlobAsVector(2, &card_art_image)) {
+      std::unique_ptr<CreditCardArtImage> data =
+          std::make_unique<CreditCardArtImage>(
+              s.ColumnString(0), s.ColumnInt64(1), std::move(card_art_image));
+      credit_card_art_images->push_back(std::move(data));
+    }
+  }
+
+  return s.Succeeded();
+}
+
+bool AutofillTable::ClearCreditCardArtImage(const std::string& id) {
+  sql::Transaction transaction(db_);
+  if (!transaction.Begin())
+    return false;
+
+  sql::Statement s(db_->GetUniqueStatement(
+      "DELETE FROM credit_card_art_images WHERE id = ?"));
+  s.BindString(0, id);
+  s.Run();
+
+  return transaction.Commit();
+}
+
 void AutofillTable::SetPaymentsCustomerData(
     const PaymentsCustomerData* customer_data) {
   sql::Transaction transaction(db_);
diff --git a/components/autofill/core/browser/webdata/autofill_table.h b/components/autofill/core/browser/webdata/autofill_table.h
index 79c7e877..223991c 100644
--- a/components/autofill/core/browser/webdata/autofill_table.h
+++ b/components/autofill/core/browser/webdata/autofill_table.h
@@ -35,6 +35,7 @@
 class AutofillTableEncryptor;
 class AutofillTableTest;
 class CreditCard;
+struct CreditCardArtImage;
 struct CreditCardCloudTokenData;
 struct FormFieldData;
 struct PaymentsCustomerData;
@@ -428,7 +429,6 @@
 //                      offer_id in the offer_data table.
 //   merchant_domain    List of full origins for merchant websites on which
 //                      this offer would apply.
-// TODO(crbug.com/1196021): Remove unused table.
 // credit_card_art_images
 //                      Contains the card art image for the server credit card.
 //
@@ -596,6 +596,12 @@
       std::vector<std::unique_ptr<CreditCardCloudTokenData>>*
           credit_card_cloud_token_data);
 
+  // Setters and getters related to the credit card art images.
+  bool AddCreditCardArtImage(const CreditCardArtImage& credit_card_art_image);
+  bool GetCreditCardArtImages(
+      std::vector<std::unique_ptr<CreditCardArtImage>>* credit_card_art_images);
+  bool ClearCreditCardArtImage(const std::string& id);
+
   // Setters and getters related to the Google Payments customer data.
   // Passing null to the setter will clear the data.
   void SetPaymentsCustomerData(const PaymentsCustomerData* customer_data);
diff --git a/components/autofill/core/browser/webdata/autofill_table_unittest.cc b/components/autofill/core/browser/webdata/autofill_table_unittest.cc
index 97cb1c6..c077283 100644
--- a/components/autofill/core/browser/webdata/autofill_table_unittest.cc
+++ b/components/autofill/core/browser/webdata/autofill_table_unittest.cc
@@ -27,6 +27,7 @@
 #include "components/autofill/core/browser/data_model/autofill_offer_data.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
+#include "components/autofill/core/browser/data_model/credit_card_art_image.h"
 #include "components/autofill/core/browser/data_model/credit_card_cloud_token_data.h"
 #include "components/autofill/core/browser/payments/payments_customer_data.h"
 #include "components/autofill/core/browser/webdata/autofill_change.h"
@@ -3767,4 +3768,34 @@
   }
 }
 
+TEST_F(AutofillTableTest, SetAndGetAndClearCreditCardArtImage) {
+  CreditCardArtImage image1("image1", 1, {UINT8_MAX});
+  table_->AddCreditCardArtImage(image1);
+  CreditCardArtImage image2("image2", 2, {UINT8_MAX});
+  table_->AddCreditCardArtImage(image2);
+
+  std::vector<std::unique_ptr<CreditCardArtImage>> output;
+  EXPECT_TRUE(table_->GetCreditCardArtImages(&output));
+  EXPECT_EQ(2U, output.size());
+  EXPECT_EQ("image1", output[0]->id);
+  EXPECT_EQ(1, output[0]->instrument_id);
+  EXPECT_EQ(UINT8_MAX, output[0]->card_art_image[0]);
+  EXPECT_EQ("image2", output[1]->id);
+  EXPECT_EQ(2, output[1]->instrument_id);
+  EXPECT_EQ(UINT8_MAX, output[1]->card_art_image[0]);
+
+  EXPECT_TRUE(table_->ClearCreditCardArtImage("image1"));
+  output.clear();
+  EXPECT_TRUE(table_->GetCreditCardArtImages(&output));
+  EXPECT_EQ(1U, output.size());
+  EXPECT_EQ("image2", output[0]->id);
+  EXPECT_EQ(2, output[0]->instrument_id);
+  EXPECT_EQ(UINT8_MAX, output[0]->card_art_image[0]);
+
+  EXPECT_TRUE(table_->ClearAllServerData());
+  output.clear();
+  EXPECT_TRUE(table_->GetCreditCardArtImages(&output));
+  EXPECT_EQ(0U, output.size());
+}
+
 }  // namespace autofill
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.cc b/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.cc
index f55343b..e8598a8 100644
--- a/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.cc
+++ b/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.cc
@@ -547,9 +547,11 @@
     const std::vector<CreditCard>& new_data) {
   std::vector<std::string> updated_server_ids;
   for (const CreditCard& new_card : new_data) {
-    // If this new card is not enrolled for virtual cards, continue.
+    // If this new card is not enrolled for virtual cards, clear the table entry
+    // for it if any and continue.
     if (new_card.virtual_card_enrollment_state() !=
         CreditCard::VirtualCardEnrollmentState::ENROLLED) {
+      GetAutofillTable()->ClearCreditCardArtImage(new_card.server_id());
       continue;
     }
 
@@ -565,15 +567,20 @@
       updated_server_ids.push_back(new_card.server_id());
       // log the newly-synced card.
       AutofillMetrics::LogVirtualCardMetadataSynced(/*existing_card=*/false);
+      // The actual card image will be added later once it has actually been
+      // fetched.
       continue;
     }
 
     // If the virtual card metadata has changed from the old card to the new
-    // cards, log the updated sync.
+    // cards, change the table data and log the updated sync.
     if ((*old_data_iterator)->virtual_card_enrollment_state() !=
             new_card.virtual_card_enrollment_state() ||
         (*old_data_iterator)->card_art_url() != new_card.card_art_url()) {
       updated_server_ids.push_back(new_card.server_id());
+      // Any existing card art image is not valid anymore. A new image will be
+      // added later.
+      GetAutofillTable()->ClearCreditCardArtImage(new_card.server_id());
       AutofillMetrics::LogVirtualCardMetadataSynced(/*existing_card=*/true);
     }
   }
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.h b/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.h
index 80d7c9c..b6329ec 100644
--- a/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.h
+++ b/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.h
@@ -134,8 +134,6 @@
   // processor so that it can start tracking changes.
   void LoadMetadata();
 
-  // TODO(crbug/com/1196021): Clean up duplicate functions and use it for
-  // logging only.
   // Checks whether any virtual card metadata for new_data is new and make
   // corresponding changes.
   void ProcessVirtualCardMetadataChanges(
diff --git a/components/autofill/core/common/autofill_payments_features.cc b/components/autofill/core/common/autofill_payments_features.cc
index c4ade7d6..c2ffc3f 100644
--- a/components/autofill/core/common/autofill_payments_features.cc
+++ b/components/autofill/core/common/autofill_payments_features.cc
@@ -108,17 +108,15 @@
 const base::Feature kAutofillEnableVirtualCard{
     "AutofillEnableVirtualCard", base::FEATURE_DISABLED_BY_DEFAULT};
 
+// When enabled, Autofill will attempt to fill merchant promo/coupon/gift code
+// fields when data is available.
+const base::Feature kAutofillFillMerchantPromoCodeFields{
+    "AutofillFillMerchantPromoCodeFields", base::FEATURE_DISABLED_BY_DEFAULT};
+
 // Controls whether to enable the fix for the offer feature in Incognito mode.
 const base::Feature kAutofillFixOfferInIncognito{
     "AutofillFixOfferInIncognito", base::FEATURE_DISABLED_BY_DEFAULT};
 
-// The merchant bound virtual card feature introduces new customized card art
-// images. This parameter defines the expiration of the fetched image in the
-// disk cache of the image fetcher.
-const base::FeatureParam<int> kAutofillImageFetcherDiskCacheExpirationInMinutes{
-    &kAutofillEnableMerchantBoundVirtualCards,
-    "autofill_image_fetcher_disk_cache_expiration_in_minutes", 10};
-
 // When enabled, Autofill will attempt to find merchant promo/coupon/gift code
 // fields when parsing forms.
 const base::Feature kAutofillParseMerchantPromoCodeFields{
diff --git a/components/autofill/core/common/autofill_payments_features.h b/components/autofill/core/common/autofill_payments_features.h
index 4d3ace8..2781a64 100644
--- a/components/autofill/core/common/autofill_payments_features.h
+++ b/components/autofill/core/common/autofill_payments_features.h
@@ -31,9 +31,8 @@
 extern const base::Feature kAutofillEnableStickyManualFallbackForCards;
 extern const base::Feature kAutofillEnableToolbarStatusChip;
 extern const base::Feature kAutofillEnableVirtualCard;
+extern const base::Feature kAutofillFillMerchantPromoCodeFields;
 extern const base::Feature kAutofillFixOfferInIncognito;
-extern const base::FeatureParam<int>
-    kAutofillImageFetcherDiskCacheExpirationInMinutes;
 extern const base::Feature kAutofillParseMerchantPromoCodeFields;
 extern const base::Feature kAutofillSaveCardDismissOnNavigation;
 extern const base::Feature kAutofillSaveCardInfobarEditSupport;
diff --git a/components/cronet/android/BUILD.gn b/components/cronet/android/BUILD.gn
index 9f82e97..2377dca5 100644
--- a/components/cronet/android/BUILD.gn
+++ b/components/cronet/android/BUILD.gn
@@ -1243,6 +1243,8 @@
       "//testing/gtest",
     ]
 
+    allow_cleartext_traffic = true
+
     sources = [ "../run_all_unittests.cc" ]
 
     defines = [ "CRONET_TESTS_IMPLEMENTATION" ]
diff --git a/components/exo/client_controlled_shell_surface_unittest.cc b/components/exo/client_controlled_shell_surface_unittest.cc
index 2b5e096..f4e801b 100644
--- a/components/exo/client_controlled_shell_surface_unittest.cc
+++ b/components/exo/client_controlled_shell_surface_unittest.cc
@@ -50,6 +50,7 @@
 #include "components/exo/test/exo_test_base.h"
 #include "components/exo/test/exo_test_helper.h"
 #include "components/exo/wm_helper.h"
+#include "components/full_restore/features.h"
 #include "components/full_restore/full_restore_utils.h"
 #include "third_party/skia/include/utils/SkNoDrawCanvas.h"
 #include "ui/aura/client/aura_constants.h"
@@ -1786,53 +1787,6 @@
 }
 
 // Tests that a WideFrameView is created for an unparented ARC task and that the
-// WideFrameView follows its respective surface when it is eventually parented.
-// See crbug.com/1223135.
-TEST_F(ClientControlledShellSurfaceTest, WideframeForUnparentedTasks) {
-  std::unique_ptr<Surface> surface(new Surface);
-  auto shell_surface =
-      exo_test_helper()->CreateClientControlledShellSurface(surface.get());
-
-  // Create a non-wide frame shell surface.
-  std::unique_ptr<Buffer> desktop_buffer(
-      new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(gfx::Size(64, 64))));
-  surface->Attach(desktop_buffer.get());
-  surface->SetInputRegion(gfx::Rect(0, 0, 64, 64));
-  shell_surface->SetGeometry(gfx::Rect(100, 0, 64, 64));
-  surface->SetFrame(SurfaceFrameType::NORMAL);
-  surface->Commit();
-  auto* wide_frame = shell_surface->wide_frame_for_test();
-  ASSERT_FALSE(wide_frame);
-
-  // Set the |full_restore::kParentToHiddenContainerKey| for the surface and
-  // reparent it, simulating the Full Restore process for an unparented ARC
-  // task.
-  aura::Window* window = shell_surface->GetWidget()->GetNativeWindow();
-  window->SetProperty(full_restore::kParentToHiddenContainerKey, true);
-  aura::client::ParentWindowWithContext(window,
-                                        /*context=*/window->GetRootWindow(),
-                                        window->GetBoundsInScreen());
-
-  // Maximize the surface. The WideFrameView should be created and a crash
-  // should not occur.
-  shell_surface->SetMaximized();
-  surface->Commit();
-  const auto* hidden_container_parent = window->parent();
-  wide_frame = shell_surface->wide_frame_for_test();
-  EXPECT_TRUE(wide_frame);
-  EXPECT_EQ(hidden_container_parent,
-            wide_frame->GetWidget()->GetNativeWindow()->parent());
-
-  // Call the FullRestoreController, simulating the ARC task becoming ready. The
-  // surface should be reparented and the WideFrameView should follow it.
-  ash::FullRestoreController::Get()->OnARCTaskReadyForUnparentedWindow(window);
-  EXPECT_NE(hidden_container_parent, window->parent());
-  wide_frame = shell_surface->wide_frame_for_test();
-  EXPECT_TRUE(wide_frame);
-  EXPECT_EQ(window->parent(),
-            wide_frame->GetWidget()->GetNativeWindow()->parent());
-}
-
 TEST_F(ClientControlledShellSurfaceTest, NoFrameOnModalContainer) {
   std::unique_ptr<Surface> surface(new Surface);
   auto shell_surface =
@@ -2854,4 +2808,73 @@
   }
 }
 
+class ClientControlledShellSurfaceFullRestoreTest
+    : public ClientControlledShellSurfaceTest {
+ public:
+  ClientControlledShellSurfaceFullRestoreTest() = default;
+  ClientControlledShellSurfaceFullRestoreTest(
+      const ClientControlledShellSurfaceFullRestoreTest&) = delete;
+  ClientControlledShellSurfaceFullRestoreTest& operator=(
+      const ClientControlledShellSurfaceFullRestoreTest&) = delete;
+  ~ClientControlledShellSurfaceFullRestoreTest() override = default;
+
+  // ClientControlledShellSurfaceTest:
+  void SetUp() override {
+    scoped_feature_list_.InitAndEnableFeature(
+        ::full_restore::features::kFullRestore);
+    ClientControlledShellSurfaceTest::SetUp();
+  }
+
+ private:
+  base::test::ScopedFeatureList scoped_feature_list_;
+};
+
+// WideFrameView follows its respective surface when it is eventually parented.
+// See crbug.com/1223135.
+TEST_F(ClientControlledShellSurfaceFullRestoreTest,
+       WideframeForUnparentedTasks) {
+  auto surface = std::make_unique<Surface>();
+  auto shell_surface =
+      exo_test_helper()->CreateClientControlledShellSurface(surface.get());
+
+  // Create a non-wide frame shell surface.
+  auto desktop_buffer = std::make_unique<Buffer>(
+      exo_test_helper()->CreateGpuMemoryBuffer(gfx::Size(64, 64)));
+  surface->Attach(desktop_buffer.get());
+  surface->SetInputRegion(gfx::Rect(0, 0, 64, 64));
+  shell_surface->SetGeometry(gfx::Rect(100, 0, 64, 64));
+  surface->SetFrame(SurfaceFrameType::NORMAL);
+  surface->Commit();
+  auto* wide_frame = shell_surface->wide_frame_for_test();
+  ASSERT_FALSE(wide_frame);
+
+  // Set the |full_restore::kParentToHiddenContainerKey| for the surface and
+  // reparent it, simulating the Full Restore process for an unparented ARC
+  // task.
+  aura::Window* window = shell_surface->GetWidget()->GetNativeWindow();
+  window->SetProperty(full_restore::kParentToHiddenContainerKey, true);
+  aura::client::ParentWindowWithContext(window,
+                                        /*context=*/window->GetRootWindow(),
+                                        window->GetBoundsInScreen());
+
+  // Maximize the surface. The WideFrameView should be created and a crash
+  // should not occur.
+  shell_surface->SetMaximized();
+  surface->Commit();
+  const auto* hidden_container_parent = window->parent();
+  wide_frame = shell_surface->wide_frame_for_test();
+  EXPECT_TRUE(wide_frame);
+  EXPECT_EQ(hidden_container_parent,
+            wide_frame->GetWidget()->GetNativeWindow()->parent());
+
+  // Call the FullRestoreController, simulating the ARC task becoming ready. The
+  // surface should be reparented and the WideFrameView should follow it.
+  ash::FullRestoreController::Get()->OnARCTaskReadyForUnparentedWindow(window);
+  EXPECT_NE(hidden_container_parent, window->parent());
+  wide_frame = shell_surface->wide_frame_for_test();
+  EXPECT_TRUE(wide_frame);
+  EXPECT_EQ(window->parent(),
+            wide_frame->GetWidget()->GetNativeWindow()->parent());
+}
+
 }  // namespace exo
diff --git a/components/heap_profiling/OWNERS b/components/heap_profiling/OWNERS
index 9cc3a5e..14e4c82 100644
--- a/components/heap_profiling/OWNERS
+++ b/components/heap_profiling/OWNERS
@@ -1,2 +1,4 @@
-alph@chromium.org
 erikchen@chromium.org
+etienneb@chromium.org
+joenotcharles@google.com
+ssid@chromium.org
\ No newline at end of file
diff --git a/components/messages/android/BUILD.gn b/components/messages/android/BUILD.gn
index e5e1056..4d65ffb 100644
--- a/components/messages/android/BUILD.gn
+++ b/components/messages/android/BUILD.gn
@@ -60,6 +60,7 @@
     ":jni_headers",
     "//base",
     "//content/public/browser",
+    "//ui/android:android",
   ]
 }
 
diff --git a/components/messages/android/internal/BUILD.gn b/components/messages/android/internal/BUILD.gn
index 818f79b..45b5cda 100644
--- a/components/messages/android/internal/BUILD.gn
+++ b/components/messages/android/internal/BUILD.gn
@@ -46,6 +46,7 @@
   sources = [
     "java/src/org/chromium/components/messages/MessageAutoDismissTimerTest.java",
     "java/src/org/chromium/components/messages/MessageBannerMediatorUnitTest.java",
+    "java/src/org/chromium/components/messages/MessageDispatcherUnitTest.java",
     "java/src/org/chromium/components/messages/MessageQueueManagerTest.java",
     "java/src/org/chromium/components/messages/ScopeChangeControllerTest.java",
   ]
diff --git a/components/messages/android/internal/java/src/org/chromium/components/messages/MessageDispatcherImpl.java b/components/messages/android/internal/java/src/org/chromium/components/messages/MessageDispatcherImpl.java
index 3173de4..0e8818db 100644
--- a/components/messages/android/internal/java/src/org/chromium/components/messages/MessageDispatcherImpl.java
+++ b/components/messages/android/internal/java/src/org/chromium/components/messages/MessageDispatcherImpl.java
@@ -6,9 +6,12 @@
 
 import android.animation.Animator;
 
+import androidx.annotation.VisibleForTesting;
+
 import org.chromium.base.Callback;
 import org.chromium.base.supplier.Supplier;
 import org.chromium.content_public.browser.WebContents;
+import org.chromium.ui.base.WindowAndroid;
 import org.chromium.ui.modelutil.PropertyModel;
 
 /**
@@ -16,11 +19,12 @@
  * MessageQueueManager.
  */
 public class MessageDispatcherImpl implements ManagedMessageDispatcher {
-    private final MessageQueueManager mMessageQueueManager = new MessageQueueManager();
+    private final MessageQueueManager mMessageQueueManager;
     private final MessageContainer mMessageContainer;
     private final Supplier<Integer> mMessageMaxTranslationSupplier;
     private final MessageAutodismissDurationProvider mAutodismissDurationProvider;
     private final Callback<Animator> mAnimatorStartCallback;
+    private final WindowAndroid mWindowAndroid;
 
     /**
      * Build a new message dispatcher
@@ -31,24 +35,58 @@
      *         autodismiss duration for message banner.
      * @param animatorStartCallback The {@link Callback} that will be used by the message to
      *         delegate starting the animations to the {@link WindowAndroid}.
+     * @param windowAndroid The current window Android.
      */
     public MessageDispatcherImpl(MessageContainer messageContainer,
             Supplier<Integer> messageMaxTranslation,
             MessageAutodismissDurationProvider autodismissDurationProvider,
-            Callback<Animator> animatorStartCallback) {
+            Callback<Animator> animatorStartCallback, WindowAndroid windowAndroid) {
+        this(messageContainer, messageMaxTranslation, autodismissDurationProvider,
+                animatorStartCallback, windowAndroid, new MessageQueueManager());
+    }
+
+    @VisibleForTesting
+    MessageDispatcherImpl(MessageContainer messageContainer,
+            Supplier<Integer> messageMaxTranslation,
+            MessageAutodismissDurationProvider autodismissDurationProvider,
+            Callback<Animator> animatorStartCallback, WindowAndroid windowAndroid,
+            MessageQueueManager messageQueueManager) {
         mMessageContainer = messageContainer;
         mMessageMaxTranslationSupplier = messageMaxTranslation;
         mAnimatorStartCallback = animatorStartCallback;
         mAutodismissDurationProvider = autodismissDurationProvider;
+        mWindowAndroid = windowAndroid;
+        mMessageQueueManager = messageQueueManager;
     }
 
+    /**
+     * Enqueue navigation or webContents scoped message.
+     * @param messageProperties The PropertyModel with message's visual properties.
+     * @param webContents The webContents the message is associated with.
+     * @param scopeType The {@link MessageScopeType} of the message.
+     * @param highPriority True if the message should be displayed ASAP.
+     */
     @Override
     public void enqueueMessage(PropertyModel messageProperties, WebContents webContents,
             @MessageScopeType int scopeType, boolean highPriority) {
         MessageStateHandler messageStateHandler = new SingleActionMessage(mMessageContainer,
                 messageProperties, this::dismissMessage, mMessageMaxTranslationSupplier,
                 mAutodismissDurationProvider, mAnimatorStartCallback);
-        ScopeKey scopeKey = new ScopeKey(scopeType, webContents);
+        ScopeKey scopeKey;
+        assert scopeType
+                != MessageScopeType.WINDOW
+            : "Use #enqueueWindowScopedMessage to enqueue a window-scoped message.";
+        scopeKey = new ScopeKey(scopeType, webContents);
+        mMessageQueueManager.enqueueMessage(
+                messageStateHandler, messageProperties, scopeKey, highPriority);
+    }
+
+    @Override
+    public void enqueueWindowScopedMessage(PropertyModel messageProperties, boolean highPriority) {
+        MessageStateHandler messageStateHandler = new SingleActionMessage(mMessageContainer,
+                messageProperties, this::dismissMessage, mMessageMaxTranslationSupplier,
+                mAutodismissDurationProvider, mAnimatorStartCallback);
+        ScopeKey scopeKey = new ScopeKey(mWindowAndroid);
         mMessageQueueManager.enqueueMessage(
                 messageStateHandler, messageProperties, scopeKey, highPriority);
     }
diff --git a/components/messages/android/internal/java/src/org/chromium/components/messages/MessageDispatcherUnitTest.java b/components/messages/android/internal/java/src/org/chromium/components/messages/MessageDispatcherUnitTest.java
new file mode 100644
index 0000000..f3f827f
--- /dev/null
+++ b/components/messages/android/internal/java/src/org/chromium/components/messages/MessageDispatcherUnitTest.java
@@ -0,0 +1,60 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.components.messages;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.Mockito.verify;
+import static org.robolectric.annotation.LooperMode.Mode.PAUSED;
+
+import androidx.test.filters.SmallTest;
+
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+import org.robolectric.annotation.LooperMode;
+
+import org.chromium.base.test.BaseRobolectricTestRunner;
+import org.chromium.ui.modelutil.PropertyModel;
+
+/** Unit tests for {@link MessageDispatcherImpl}. */
+@SmallTest
+@RunWith(BaseRobolectricTestRunner.class)
+@LooperMode(PAUSED)
+public class MessageDispatcherUnitTest {
+    @Rule
+    public MockitoRule mMockitoRule = MockitoJUnit.rule();
+
+    @Mock
+    private MessageQueueManager mQueueManager;
+
+    @Test
+    public void testEnqueueWindowScopedMessage() {
+        MessageDispatcherImpl dispatcher =
+                new MessageDispatcherImpl(null, () -> 1, (v) -> 1L, (v) -> {}, null, mQueueManager);
+        dispatcher.enqueueWindowScopedMessage(getModel(), false);
+        ArgumentCaptor<ScopeKey> captor = ArgumentCaptor.forClass(ScopeKey.class);
+        verify(mQueueManager).enqueueMessage(any(), any(), captor.capture(), anyBoolean());
+        Assert.assertEquals(
+                "The message should be of window scope if it is enqueued by #enqueueWindowScopedMessage.",
+                MessageScopeType.WINDOW, captor.getValue().scopeType);
+    }
+
+    private PropertyModel getModel() {
+        return new PropertyModel.Builder(MessageBannerProperties.ALL_KEYS)
+                .with(MessageBannerProperties.MESSAGE_IDENTIFIER, MessageIdentifier.TEST_MESSAGE)
+                .with(MessageBannerProperties.TITLE, "test")
+                .with(MessageBannerProperties.DESCRIPTION, "Description")
+                .with(MessageBannerProperties.ICON, null)
+                .with(MessageBannerProperties.ON_PRIMARY_ACTION, () -> {})
+                .with(MessageBannerProperties.ON_DISMISSED, (dismissReason) -> {})
+                .build();
+    }
+}
diff --git a/components/messages/android/internal/java/src/org/chromium/components/messages/MessagesFactory.java b/components/messages/android/internal/java/src/org/chromium/components/messages/MessagesFactory.java
index c864138..b74e1cc 100644
--- a/components/messages/android/internal/java/src/org/chromium/components/messages/MessagesFactory.java
+++ b/components/messages/android/internal/java/src/org/chromium/components/messages/MessagesFactory.java
@@ -24,14 +24,15 @@
      *         autodismiss duration for message banner.
      * @param animatorStartCallback The {@link Callback} that will be used by the message to
      *         delegate starting the animations to the {@link WindowAndroid}.
+     * @param windowAndroid The current window Android.
      * @return The constructed ManagedMessageDispatcher.
      */
     public static ManagedMessageDispatcher createMessageDispatcher(MessageContainer container,
             Supplier<Integer> messageMaxTranslation,
             MessageAutodismissDurationProvider autodismissDurationMs,
-            Callback<Animator> animatorStartCallback) {
-        return new MessageDispatcherImpl(
-                container, messageMaxTranslation, autodismissDurationMs, animatorStartCallback);
+            Callback<Animator> animatorStartCallback, WindowAndroid windowAndroid) {
+        return new MessageDispatcherImpl(container, messageMaxTranslation, autodismissDurationMs,
+                animatorStartCallback, windowAndroid);
     }
 
     /**
diff --git a/components/messages/android/internal/java/src/org/chromium/components/messages/ScopeChangeController.java b/components/messages/android/internal/java/src/org/chromium/components/messages/ScopeChangeController.java
index b64a45d..ce24451 100644
--- a/components/messages/android/internal/java/src/org/chromium/components/messages/ScopeChangeController.java
+++ b/components/messages/android/internal/java/src/org/chromium/components/messages/ScopeChangeController.java
@@ -145,7 +145,10 @@
         public WindowScopeObserver(Delegate delegate, ScopeKey scopeKey) {
             mDelegate = delegate;
             mScopeKey = scopeKey;
-            WindowAndroid windowAndroid = scopeKey.webContents.getTopLevelNativeWindow();
+            assert scopeKey.scopeType
+                    == MessageScopeType.WINDOW
+                : "WindowScopeObserver should only monitor window scope events.";
+            WindowAndroid windowAndroid = scopeKey.windowAndroid;
             windowAndroid.addActivityStateObserver(this);
             mDelegate.onScopeChange(new MessageScopeChange(scopeKey.scopeType, scopeKey,
                     windowAndroid.getActivityState() == ActivityState.RESUMED
@@ -173,7 +176,7 @@
 
         @Override
         public void destroy() {
-            mScopeKey.webContents.getTopLevelNativeWindow().removeActivityStateObserver(this);
+            mScopeKey.windowAndroid.removeActivityStateObserver(this);
         }
     }
 }
diff --git a/components/messages/android/internal/java/src/org/chromium/components/messages/ScopeKey.java b/components/messages/android/internal/java/src/org/chromium/components/messages/ScopeKey.java
index d0012ea..34913fb 100644
--- a/components/messages/android/internal/java/src/org/chromium/components/messages/ScopeKey.java
+++ b/components/messages/android/internal/java/src/org/chromium/components/messages/ScopeKey.java
@@ -4,34 +4,46 @@
 
 package org.chromium.components.messages;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import org.chromium.content_public.browser.WebContents;
+import org.chromium.ui.base.WindowAndroid;
 
 /**
  * A key stands for a scope instance of a certain scope type.
  */
 class ScopeKey {
     public final @MessageScopeType int scopeType;
-    public final WebContents webContents;
+    public final @Nullable WebContents webContents;
+    public final @Nullable WindowAndroid windowAndroid;
 
-    public ScopeKey(@MessageScopeType int scopeType, WebContents webContents) {
+    public ScopeKey(@MessageScopeType int scopeType, @NonNull WebContents webContents) {
         this.scopeType = scopeType;
         this.webContents = webContents;
+        windowAndroid = null;
+    }
+
+    public ScopeKey(@NonNull WindowAndroid windowAndroid) {
+        scopeType = MessageScopeType.WINDOW;
+        this.windowAndroid = windowAndroid;
+        webContents = null;
     }
 
     @Override
     public boolean equals(@Nullable Object other) {
         if (!(other instanceof ScopeKey)) return false;
         ScopeKey otherScopeKey = (ScopeKey) other;
-        return scopeType == otherScopeKey.scopeType && otherScopeKey.webContents == webContents;
+        return scopeType == otherScopeKey.scopeType && windowAndroid == otherScopeKey.windowAndroid
+                && webContents == otherScopeKey.webContents;
     }
 
     @Override
     public int hashCode() {
         int result = 17;
         result = result * 31 + scopeType;
-        result = result * 31 + webContents.hashCode();
+        result = result * 31 + (webContents == null ? 0 : webContents.hashCode());
+        result = result * 31 + (windowAndroid == null ? 0 : windowAndroid.hashCode());
         return result;
     }
 }
diff --git a/components/messages/android/java/src/org/chromium/components/messages/MessageDispatcher.java b/components/messages/android/java/src/org/chromium/components/messages/MessageDispatcher.java
index f05f5323..e271207 100644
--- a/components/messages/android/java/src/org/chromium/components/messages/MessageDispatcher.java
+++ b/components/messages/android/java/src/org/chromium/components/messages/MessageDispatcher.java
@@ -23,6 +23,19 @@
             @MessageScopeType int scopeType, boolean highPriority);
 
     /**
+     * Enqueues a message defined by its properties. This message will be of a
+     * {@link MessageScopeType#WINDOW} scope. And it will be be associated with WindowAndroid for
+     * which this message dispatcher was created. Use {@link
+     * MessageDispatcher#enqueueMessage(PropertyModel, WebContents, int, boolean)} to ensure the
+     * message is attached to given webContents or the windowAndroid associated with the given
+     * webContents.
+     *
+     * @param messageProperties The PropertyModel with message's visual properties.
+     * @param highPriority True if the message should be displayed ASAP.
+     */
+    void enqueueWindowScopedMessage(PropertyModel messageProperties, boolean highPriority);
+
+    /**
      * Dismisses a message referenced by its PropertyModel. Hides the message if it is currently
      * displayed. Displays the next message in the queue if available.
      * @param messageProperties The PropertyModel of the message to be dismissed.
diff --git a/components/messages/android/java/src/org/chromium/components/messages/MessageDispatcherBridge.java b/components/messages/android/java/src/org/chromium/components/messages/MessageDispatcherBridge.java
index 4e63450..7be028d7 100644
--- a/components/messages/android/java/src/org/chromium/components/messages/MessageDispatcherBridge.java
+++ b/components/messages/android/java/src/org/chromium/components/messages/MessageDispatcherBridge.java
@@ -7,6 +7,7 @@
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
 import org.chromium.content_public.browser.WebContents;
+import org.chromium.ui.base.WindowAndroid;
 
 /**
  * Java counterpart to MessageDispatcherBridge. Enables C++ feature code to enqueue/dismiss messages
@@ -30,6 +31,15 @@
     }
 
     @CalledByNative
+    private static boolean enqueueWindowScopedMessage(
+            MessageWrapper message, WindowAndroid windowAndroid, boolean highPriority) {
+        MessageDispatcher messageDispatcher = MessageDispatcherProvider.from(windowAndroid);
+        if (messageDispatcher == null) return false;
+        messageDispatcher.enqueueWindowScopedMessage(message.getMessageProperties(), highPriority);
+        return true;
+    }
+
+    @CalledByNative
     private static void dismissMessage(
             MessageWrapper message, WebContents webContents, @DismissReason int dismissReason) {
         MessageDispatcher messageDispatcher =
diff --git a/components/messages/android/message_dispatcher_bridge.cc b/components/messages/android/message_dispatcher_bridge.cc
index fdeda10..c0d8a4e7 100644
--- a/components/messages/android/message_dispatcher_bridge.cc
+++ b/components/messages/android/message_dispatcher_bridge.cc
@@ -49,6 +49,21 @@
   return false;
 }
 
+bool MessageDispatcherBridge::EnqueueWindowScopedMessage(
+    MessageWrapper* message,
+    ui::WindowAndroid* window_android,
+    MessagePriority priority) {
+  JNIEnv* env = base::android::AttachCurrentThread();
+  if (Java_MessageDispatcherBridge_enqueueWindowScopedMessage(
+          env, message->GetJavaMessageWrapper(),
+          window_android->GetJavaObject(),
+          priority == MessagePriority::kUrgent) == JNI_TRUE) {
+    message->SetMessageEnqueued();
+    return true;
+  }
+  return false;
+}
+
 void MessageDispatcherBridge::DismissMessage(MessageWrapper* message,
                                              content::WebContents* web_contents,
                                              DismissReason dismiss_reason) {
diff --git a/components/messages/android/message_dispatcher_bridge.h b/components/messages/android/message_dispatcher_bridge.h
index 43c75a3..f6a23df 100644
--- a/components/messages/android/message_dispatcher_bridge.h
+++ b/components/messages/android/message_dispatcher_bridge.h
@@ -7,6 +7,7 @@
 
 #include "components/messages/android/message_enums.h"
 #include "components/messages/android/message_wrapper.h"
+#include "ui/android/window_android.h"
 
 namespace content {
 class WebContents;
@@ -26,6 +27,9 @@
                               content::WebContents* web_contents,
                               MessageScopeType scope_type,
                               MessagePriority priority);
+  virtual bool EnqueueWindowScopedMessage(MessageWrapper* message,
+                                          ui::WindowAndroid* window_android,
+                                          MessagePriority priority);
   virtual void DismissMessage(MessageWrapper* message,
                               content::WebContents* web_contents,
                               DismissReason dismiss_reason);
diff --git a/components/omnibox/browser/autocomplete_input.cc b/components/omnibox/browser/autocomplete_input.cc
index d16ba4a5..90cd6534 100644
--- a/components/omnibox/browser/autocomplete_input.cc
+++ b/components/omnibox/browser/autocomplete_input.cc
@@ -569,7 +569,7 @@
       !base::StartsWith(text, base::ASCIIToUTF16(url.scheme()),
                         base::CompareCase::INSENSITIVE_ASCII) &&
       !url::HostIsIPAddress(url.host()) &&
-      !net::IsHostnameNonUnique(base::UTF16ToUTF8(text)) &&
+      !net::IsHostnameNonUnique(url.host()) &&
       (url.port().empty() || https_port_for_testing)) {
     // Use HTTPS as the default scheme for URLs that are typed without a scheme.
     // Inputs of type UNKNOWN can still be valid URLs, but these will be mainly
diff --git a/components/omnibox/browser/autocomplete_input_unittest.cc b/components/omnibox/browser/autocomplete_input_unittest.cc
index 19bf354..4a906b0 100644
--- a/components/omnibox/browser/autocomplete_input_unittest.cc
+++ b/components/omnibox/browser/autocomplete_input_unittest.cc
@@ -384,6 +384,14 @@
       {u"127.0.0.1:8080", GURL("http://127.0.0.1:8080"), false},
       // Non-unique hostnames shouldn't be upgraded.
       {u"site.test", GURL("http://site.test"), false},
+      // This non-unique hostname is a regression test for
+      // https://crbug.com/1224724. The slash is provided at the end of the
+      // input query since otherwise the input gets classified as a non-URL and
+      // the autocomplete code doesn't progress to the HTTPS upgrading logic
+      // where the bug was.
+      {u"dotlesshostname/", GURL("http://dotlesshostname/"), false},
+      {u"http://dotlesshostname/", GURL("http://dotlesshostname/"), false},
+      {u"https://dotlesshostname/", GURL("https://dotlesshostname/"), false},
       // Fully typed URLs shouldn't be upgraded.
       {u"http://example.com", GURL("http://example.com"), false},
       {u"HTTP://EXAMPLE.COM", GURL("http://example.com"), false},
diff --git a/components/permissions/android/java/src/org/chromium/components/permissions/BluetoothChooserDialog.java b/components/permissions/android/java/src/org/chromium/components/permissions/BluetoothChooserDialog.java
index 6cc0296..484f0aae 100644
--- a/components/permissions/android/java/src/org/chromium/components/permissions/BluetoothChooserDialog.java
+++ b/components/permissions/android/java/src/org/chromium/components/permissions/BluetoothChooserDialog.java
@@ -14,6 +14,7 @@
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
 import android.location.LocationManager;
+import android.os.Build;
 import android.text.SpannableString;
 import android.text.TextUtils;
 import android.view.View;
@@ -24,7 +25,6 @@
 import androidx.core.graphics.drawable.DrawableCompat;
 import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat;
 
-import org.chromium.base.BuildInfo;
 import org.chromium.base.Log;
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
@@ -277,9 +277,7 @@
         // Nearby Devices permission and has set the neverForLocation flag on the BLUETOOTH_SCAN
         // permission in its manifest.
         boolean needsLocationServices = false;
-        // TODO(b/183501112): Remove the targetsAtLeastS() check once Chrome starts compiling
-        // against the S SDK.
-        if (!BuildInfo.targetsAtLeastS() || !BuildInfo.isAtLeastS()) {
+        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
             needsLocationServices = !LocationUtils.getInstance().isSystemLocationSettingEnabled();
         }
 
@@ -312,9 +310,7 @@
                                 R.string.bluetooth_need_location_permission_and_services_on),
                         permissionSpan, servicesSpan);
             } else {
-                // TODO(b/183501112): Remove the targetsAtLeastS() check once Chrome starts
-                // compiling against the S SDK.
-                if (BuildInfo.targetsAtLeastS() && BuildInfo.isAtLeastS()) {
+                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
                     needPermissionMessage = SpanApplier.applySpans(
                             mContext.getString(R.string.bluetooth_need_nearby_devices_permission),
                             permissionSpan);
@@ -365,14 +361,10 @@
                 break;
             case LinkType.REQUEST_PERMISSIONS:
                 mItemChooserDialog.setIgnorePendingWindowFocusChangeForClose(true);
-                // TODO(b/183501112): Remove the targetsAtLeastS() check once Chrome starts
-                // compiling against the S SDK.
-                if (BuildInfo.targetsAtLeastS() && BuildInfo.isAtLeastS()) {
-                    // TODO(b/183501112): Replace these permission strings with the actual Manifest
-                    // constants once Chrome starts compiling against the S SDK.
+                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
                     mWindowAndroid.requestPermissions(
-                            new String[] {"android.permission.BLUETOOTH_SCAN",
-                                    "android.permission.BLUETOOTH_CONNECT"},
+                            new String[] {Manifest.permission.BLUETOOTH_SCAN,
+                                    Manifest.permission.BLUETOOTH_CONNECT},
                             BluetoothChooserDialog.this);
                 } else {
                     mWindowAndroid.requestPermissions(
@@ -401,26 +393,18 @@
     }
 
     private static boolean hasSystemPermissions(WindowAndroid windowAndroid) {
-        // TODO(b/183501112): Remove the targetsAtLeastS() check once Chrome starts compiling
-        // against the S SDK.
-        if (BuildInfo.targetsAtLeastS() && BuildInfo.isAtLeastS()) {
-            // TODO(b/183501112): Replace these permission strings with the actual Manifest
-            // constants once Chrome starts compiling against the S SDK.
-            return windowAndroid.hasPermission("android.permission.BLUETOOTH_SCAN")
-                    && windowAndroid.hasPermission("android.permission.BLUETOOTH_CONNECT");
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+            return windowAndroid.hasPermission(Manifest.permission.BLUETOOTH_SCAN)
+                    && windowAndroid.hasPermission(Manifest.permission.BLUETOOTH_CONNECT);
         }
 
         return windowAndroid.hasPermission(Manifest.permission.ACCESS_FINE_LOCATION);
     }
 
     private static boolean canRequestSystemPermissions(WindowAndroid windowAndroid) {
-        // TODO(b/183501112): Remove the targetsAtLeastS() check once Chrome starts compiling
-        // against the S SDK.
-        if (BuildInfo.targetsAtLeastS() && BuildInfo.isAtLeastS()) {
-            // TODO(b/183501112): Replace these permission strings with the actual Manifest
-            // constants once Chrome starts compiling against the S SDK.
-            return windowAndroid.canRequestPermission("android.permission.BLUETOOTH_SCAN")
-                    && windowAndroid.canRequestPermission("android.permission.BLUETOOTH_CONNECT");
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+            return windowAndroid.canRequestPermission(Manifest.permission.BLUETOOTH_SCAN)
+                    && windowAndroid.canRequestPermission(Manifest.permission.BLUETOOTH_CONNECT);
         }
 
         return windowAndroid.canRequestPermission(Manifest.permission.ACCESS_FINE_LOCATION);
diff --git a/components/safe_browsing/core/common/visual_utils.cc b/components/safe_browsing/core/common/visual_utils.cc
index cf63abe0..53f1a8b 100644
--- a/components/safe_browsing/core/common/visual_utils.cc
+++ b/components/safe_browsing/core/common/visual_utils.cc
@@ -279,9 +279,9 @@
   const int data_size = blurred->width() * blurred->height();
   blurred_image->mutable_data()->reserve(data_size);
 
-  for (int x = 0; x < blurred->width(); ++x) {
-    for (int y = 0; y < blurred->height(); ++y) {
-      SkColor color = blurred->getColor(y, x);
+  for (int y = 0; y < blurred->height(); ++y) {
+    for (int x = 0; x < blurred->width(); ++x) {
+      SkColor color = blurred->getColor(x, y);
       *blurred_image->mutable_data() += static_cast<char>(SkColorGetR(color));
       *blurred_image->mutable_data() += static_cast<char>(SkColorGetG(color));
       *blurred_image->mutable_data() += static_cast<char>(SkColorGetB(color));
diff --git a/components/safe_browsing/core/common/visual_utils_unittest.cc b/components/safe_browsing/core/common/visual_utils_unittest.cc
index 7d56fca..0024d46 100644
--- a/components/safe_browsing/core/common/visual_utils_unittest.cc
+++ b/components/safe_browsing/core/common/visual_utils_unittest.cc
@@ -4,7 +4,9 @@
 
 #include "components/safe_browsing/core/common/visual_utils.h"
 
+#include "base/test/scoped_feature_list.h"
 #include "base/test/test_discardable_memory_allocator.h"
+#include "components/safe_browsing/core/common/features.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/skia/include/core/SkColorPriv.h"
@@ -657,5 +659,26 @@
                    .has_value());
 }
 
+TEST_F(VisualUtilsTest, NonSquareBlurredImage) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeatureWithParameters(
+      kVisualFeaturesSizes, {{"phash_width", "108"}, {"phash_height", "192"}});
+
+  VisualFeatures::BlurredImage blurred;
+
+  // Draw white over the image
+  bitmap_.erase(SK_ColorWHITE, SkIRect::MakeXYWH(0, 0, 1000, 1000));
+
+  ASSERT_TRUE(GetBlurredImage(bitmap_, &blurred));
+  ASSERT_EQ(18, blurred.width());
+  ASSERT_EQ(32, blurred.height());
+  ASSERT_EQ(3u * 18u * 32u, blurred.data().size());
+  for (size_t i = 0; i < 18u * 32u; i++) {
+    EXPECT_EQ('\xff', blurred.data()[3 * i]);
+    EXPECT_EQ('\xff', blurred.data()[3 * i + 1]);
+    EXPECT_EQ('\xff', blurred.data()[3 * i + 2]);
+  }
+}
+
 }  // namespace visual_utils
 }  // namespace safe_browsing
diff --git a/components/segmentation_platform/internal/segmentation_platform_service_impl.cc b/components/segmentation_platform/internal/segmentation_platform_service_impl.cc
index 0ac09e4..bdbd026 100644
--- a/components/segmentation_platform/internal/segmentation_platform_service_impl.cc
+++ b/components/segmentation_platform/internal/segmentation_platform_service_impl.cc
@@ -207,6 +207,7 @@
 
   signal_storage_config_->OnSignalCollectionStarted(
       segment_info.model_metadata());
+  signal_filter_processor_->OnSignalListUpdated();
 
   model_execution_scheduler_->OnNewModelInfoReady(segment_info);
 }
diff --git a/components/segmentation_platform/internal/segmentation_platform_service_impl_unittest.cc b/components/segmentation_platform/internal/segmentation_platform_service_impl_unittest.cc
index f2dff64..6e0e57f 100644
--- a/components/segmentation_platform/internal/segmentation_platform_service_impl_unittest.cc
+++ b/components/segmentation_platform/internal/segmentation_platform_service_impl_unittest.cc
@@ -10,6 +10,7 @@
 #include "base/files/file_path.h"
 #include "base/metrics/user_metrics.h"
 #include "base/run_loop.h"
+#include "base/test/metrics/histogram_tester.h"
 #include "base/test/simple_test_clock.h"
 #include "base/test/task_environment.h"
 #include "base/test/test_simple_task_runner.h"
@@ -28,6 +29,7 @@
 #include "components/segmentation_platform/internal/execution/feature_aggregator_impl.h"
 #include "components/segmentation_platform/internal/execution/model_execution_manager.h"
 #include "components/segmentation_platform/internal/execution/model_execution_manager_factory.h"
+#include "components/segmentation_platform/internal/proto/model_metadata.pb.h"
 #include "components/segmentation_platform/internal/proto/model_prediction.pb.h"
 #include "components/segmentation_platform/internal/proto/signal.pb.h"
 #include "components/segmentation_platform/internal/proto/signal_storage_config.pb.h"
@@ -154,15 +156,12 @@
   // ModelExecutionManagerImpl is publishing the correct data and whether that
   // leads to the SegmentationPlatformServiceImpl doing the right thing.
 #if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
-  proto::SegmentInfo segment_info;
-  segment_info.set_segment_id(
-      OptimizationTarget::OPTIMIZATION_TARGET_SEGMENTATION_SHARE);
-  auto* metadata = segment_info.mutable_model_metadata();
-  metadata->set_time_unit(proto::TimeUnit::DAY);
-  metadata->set_bucket_duration(42u);
+  proto::SegmentationModelMetadata metadata;
+  metadata.set_time_unit(proto::TimeUnit::DAY);
+  metadata.set_bucket_duration(42u);
   // Add a test feature, which will later cause the signal storage DB to be
   // updated.
-  auto* feature = metadata->add_features();
+  auto* feature = metadata.add_features();
   feature->set_type(proto::SignalType::HISTOGRAM_VALUE);
   feature->set_name("other");
   feature->set_name_hash(123);
@@ -172,11 +171,28 @@
 
   ModelExecutionManagerImpl* mem_impl = static_cast<ModelExecutionManagerImpl*>(
       segmentation_platform_service_impl_->model_execution_manager_.get());
-  mem_impl->model_updated_callback_.Run(segment_info);
+
+  // This method is invoked from SegmentationModelHandler whenever a model has
+  // been updated and every time at startup. This will first read the old info
+  // from the database, and then write the merged result of the old and new to
+  // the database.
+  base::HistogramTester histogram_tester;
+  mem_impl->OnSegmentationModelUpdated(
+      OptimizationTarget::OPTIMIZATION_TARGET_SEGMENTATION_SHARE, metadata);
+  segment_db_->GetCallback(true);
+  segment_db_->UpdateCallback(true);
 
   // Since the updated config had a new feature, the SignalStorageConfigs DB
   // should have been updated.
   segment_storage_config_db_->UpdateCallback(true);
+
+  // The SignalFilterProcessor needs to read the segment information from the
+  // database before starting to listen to the updated signals.
+  segment_db_->LoadCallback(true);
+  //  We should have started recording 1 value histogram, once.
+  EXPECT_EQ(
+      1, histogram_tester.GetBucketCount(
+             "SegmentationPlatform.Signals.ListeningCount.HistogramValue", 1));
 #endif  // BUILDFLAG(BUILD_WITH_TFLITE_LIB)
 
   // Database maintenance tasks should try to cleanup the signals after a short
diff --git a/components/segmentation_platform/internal/signals/signal_filter_processor.cc b/components/segmentation_platform/internal/signals/signal_filter_processor.cc
index 1322d68..591f866 100644
--- a/components/segmentation_platform/internal/signals/signal_filter_processor.cc
+++ b/components/segmentation_platform/internal/signals/signal_filter_processor.cc
@@ -11,6 +11,7 @@
 #include "components/segmentation_platform/internal/proto/types.pb.h"
 #include "components/segmentation_platform/internal/signals/histogram_signal_handler.h"
 #include "components/segmentation_platform/internal/signals/user_action_signal_handler.h"
+#include "components/segmentation_platform/internal/stats.h"
 
 namespace segmentation_platform {
 
@@ -57,6 +58,8 @@
     }
   }
 
+  stats::RecordSignalsListeningCount(user_actions, histograms);
+
   user_action_signal_handler_->SetRelevantUserActions(std::move(user_actions));
   histogram_signal_handler_->SetRelevantHistograms(histograms);
 }
diff --git a/components/segmentation_platform/internal/stats.cc b/components/segmentation_platform/internal/stats.cc
index 0fe9ab1..005e2a97 100644
--- a/components/segmentation_platform/internal/stats.cc
+++ b/components/segmentation_platform/internal/stats.cc
@@ -7,6 +7,7 @@
 #include "base/metrics/histogram_functions.h"
 #include "base/notreached.h"
 #include "components/optimization_guide/proto/models.pb.h"
+#include "components/segmentation_platform/internal/proto/types.pb.h"
 
 namespace segmentation_platform {
 namespace stats {
@@ -115,6 +116,22 @@
   }
 }
 
+// Should map to SignalType variant string in
+// //tools/metrics/histograms/metadata/segmentation_platform/histograms.xml.
+std::string SignalTypeToHistogramVariant(proto::SignalType signal_type) {
+  switch (signal_type) {
+    case proto::SignalType::USER_ACTION:
+      return "UserAction";
+    case proto::SignalType::HISTOGRAM_ENUM:
+      return "HistogramEnum";
+    case proto::SignalType::HISTOGRAM_VALUE:
+      return "HistogramValue";
+    default:
+      NOTREACHED();
+      return "Unknown";
+  }
+}
+
 }  // namespace
 
 void RecordModelScore(OptimizationTarget segment_id, float score) {
@@ -144,5 +161,32 @@
       GetSegmentSwitch(new_selection, prev_segment));
 }
 
+void RecordSignalsListeningCount(
+    const std::set<uint64_t>& user_actions,
+    const std::set<std::pair<std::string, proto::SignalType>>& histograms) {
+  uint64_t user_action_count = user_actions.size();
+  uint64_t histogram_enum_count = 0;
+  uint64_t histogram_value_count = 0;
+  for (auto& s : histograms) {
+    if (s.second == proto::SignalType::HISTOGRAM_ENUM)
+      ++histogram_enum_count;
+    if (s.second == proto::SignalType::HISTOGRAM_VALUE)
+      ++histogram_value_count;
+  }
+
+  base::UmaHistogramCounts1000(
+      "SegmentationPlatform.Signals.ListeningCount." +
+          SignalTypeToHistogramVariant(proto::SignalType::USER_ACTION),
+      user_action_count);
+  base::UmaHistogramCounts1000(
+      "SegmentationPlatform.Signals.ListeningCount." +
+          SignalTypeToHistogramVariant(proto::SignalType::HISTOGRAM_ENUM),
+      histogram_enum_count);
+  base::UmaHistogramCounts1000(
+      "SegmentationPlatform.Signals.ListeningCount." +
+          SignalTypeToHistogramVariant(proto::SignalType::HISTOGRAM_VALUE),
+      histogram_value_count);
+}
+
 }  // namespace stats
 }  // namespace segmentation_platform
diff --git a/components/segmentation_platform/internal/stats.h b/components/segmentation_platform/internal/stats.h
index 15d4fe22..5781913c 100644
--- a/components/segmentation_platform/internal/stats.h
+++ b/components/segmentation_platform/internal/stats.h
@@ -6,6 +6,7 @@
 #define COMPONENTS_SEGMENTATION_PLATFORM_INTERNAL_STATS_H_
 
 #include "components/optimization_guide/proto/models.pb.h"
+#include "components/segmentation_platform/internal/proto/types.pb.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
 using optimization_guide::proto::OptimizationTarget;
@@ -40,6 +41,12 @@
     OptimizationTarget new_selection,
     absl::optional<OptimizationTarget> previous_selection);
 
+// Records the number of unique user action and histogram signals that we are
+// currently tracking.
+void RecordSignalsListeningCount(
+    const std::set<uint64_t>& user_actions,
+    const std::set<std::pair<std::string, proto::SignalType>>& histograms);
+
 }  // namespace stats
 }  // namespace segmentation_platform
 
diff --git a/components/segmentation_platform/internal/stats_unittest.cc b/components/segmentation_platform/internal/stats_unittest.cc
index 3880d4e2..5d75b040 100644
--- a/components/segmentation_platform/internal/stats_unittest.cc
+++ b/components/segmentation_platform/internal/stats_unittest.cc
@@ -6,10 +6,12 @@
 
 #include "base/test/metrics/histogram_tester.h"
 #include "components/optimization_guide/proto/models.pb.h"
+#include "components/segmentation_platform/internal/proto/types.pb.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace segmentation_platform {
+using proto::SignalType;
 namespace stats {
 
 class StatsTest : public testing::Test {
@@ -49,5 +51,28 @@
       "SegmentationPlatform.AdaptiveToolbar.SegmentSelection.Computed", 3);
 }
 
+TEST_F(StatsTest, SignalsListeningCount) {
+  base::HistogramTester tester;
+  std::set<uint64_t> user_actions{1, 2, 3, 4};
+  std::set<std::pair<std::string, proto::SignalType>> histograms;
+  histograms.insert(std::make_pair("hist1", SignalType::HISTOGRAM_ENUM));
+  histograms.insert(std::make_pair("hist2", SignalType::HISTOGRAM_ENUM));
+  histograms.insert(std::make_pair("hist3", SignalType::HISTOGRAM_ENUM));
+  histograms.insert(std::make_pair("hist4", SignalType::HISTOGRAM_VALUE));
+  histograms.insert(std::make_pair("hist5", SignalType::HISTOGRAM_VALUE));
+
+  RecordSignalsListeningCount(user_actions, histograms);
+
+  EXPECT_EQ(1,
+            tester.GetBucketCount(
+                "SegmentationPlatform.Signals.ListeningCount.UserAction", 4));
+  EXPECT_EQ(
+      1, tester.GetBucketCount(
+             "SegmentationPlatform.Signals.ListeningCount.HistogramEnum", 3));
+  EXPECT_EQ(
+      1, tester.GetBucketCount(
+             "SegmentationPlatform.Signals.ListeningCount.HistogramValue", 2));
+}
+
 }  // namespace stats
 }  // namespace segmentation_platform
diff --git a/components/variations/service/generate_ui_string_overrider.py b/components/variations/service/generate_ui_string_overrider.py
index bcf33dc..c42fdd3 100755
--- a/components/variations/service/generate_ui_string_overrider.py
+++ b/components/variations/service/generate_ui_string_overrider.py
@@ -15,10 +15,10 @@
 
 
 # Regular expression for parsing the #define macro format. Matches both the
-# version of the macro with whitelist support and the one without. For example,
-# Without generate whitelist flag:
+# version of the macro with allowlist support and the one without. For example,
+# Without generate allowlist flag:
 #   #define IDS_FOO_MESSAGE 1234
-# With generate whitelist flag:
+# With generate allowlist flag:
 #   #define IDS_FOO_MESSAGE (::ui::AllowlistedResource<1234>(), 1234)
 RESOURCE_EXTRACT_REGEX = re.compile('^#define (\S*).* (\d+)\)?$', re.MULTILINE)
 
diff --git a/components/variations/study_filtering.cc b/components/variations/study_filtering.cc
index 7bde879a..2905053b 100644
--- a/components/variations/study_filtering.cc
+++ b/components/variations/study_filtering.cc
@@ -51,43 +51,41 @@
 
 bool CheckStudyFormFactor(const Study::Filter& filter,
                           Study::FormFactor form_factor) {
-  // Empty whitelist and blacklist signifies matching any form factor.
+  // If both filters are empty, match all values.
   if (filter.form_factor_size() == 0 && filter.exclude_form_factor_size() == 0)
     return true;
 
-  // Allow the form_factor if it matches the whitelist.
-  // Note if both a whitelist and blacklist are specified, the blacklist is
-  // ignored. We do not expect both to be present for Chrome due to server-side
-  // checks.
+  // Allow the |form_factor| if it's in the allowlist.
+  // Note if both are specified, the excludelist is ignored. We do not expect
+  // both to be present for Chrome due to server-side checks.
   if (filter.form_factor_size() > 0)
     return base::Contains(filter.form_factor(), form_factor);
 
-  // Omit if we match the blacklist.
+  // Omit if there is a matching excludelist entry.
   return !base::Contains(filter.exclude_form_factor(), form_factor);
 }
 
 bool CheckStudyCpuArchitecture(const Study::Filter& filter,
                                Study::CpuArchitecture cpu_architecture) {
-  // Empty allowlist and denylist signifies matching any CPU architecture.
+  // If both filters are empty, match all values.
   if (filter.cpu_architecture_size() == 0 &&
       filter.exclude_cpu_architecture_size() == 0) {
     return true;
   }
 
-  // Allow the cpu_architecture if it matches the allowlist.
-  // Note if both a allowlist and denylist are specified, the denylist is
-  // ignored. We do not expect both to be present for Chrome due to server-side
-  // checks.
+  // Allow the |cpu_architecture| if it's in the allowlist.
+  // Note if both are specified, the excludelist is ignored. We do not expect
+  // both to be present for Chrome due to server-side checks.
   if (filter.cpu_architecture_size() > 0)
     return base::Contains(filter.cpu_architecture(), cpu_architecture);
 
-  // Omit if we match the denylist.
+  // Omit if there is a matching excludelist entry.
   return !base::Contains(filter.exclude_cpu_architecture(), cpu_architecture);
 }
 
 bool CheckStudyHardwareClass(const Study::Filter& filter,
                              const std::string& hardware_class) {
-  // Empty hardware_class and exclude_hardware_class matches all.
+  // If both filters are empty, match all values.
   if (filter.hardware_class_size() == 0 &&
       filter.exclude_hardware_class_size() == 0) {
     return true;
@@ -97,34 +95,50 @@
   // comparison logic to match hardware classes. In M66, it was made consistent
   // with other filters.
 
-  // Checks if we are supposed to filter for a specified set of
-  // hardware_classes. Note that this means this overrides the
-  // exclude_hardware_class in case that ever occurs (which it shouldn't).
+  // Allow the |hardware_class| if it's in the allowlist.
+  // Note if both are specified, the excludelist is ignored. We do not expect
+  // both to be present for Chrome due to server-side checks.
   if (filter.hardware_class_size() > 0) {
     return ContainsStringIgnoreCaseASCII(filter.hardware_class(),
                                          hardware_class);
   }
 
-  // Omit if we match the blacklist.
+  // Omit if there is a matching excludelist entry.
   return !ContainsStringIgnoreCaseASCII(filter.exclude_hardware_class(),
                                         hardware_class);
 }
 
 bool CheckStudyLocale(const Study::Filter& filter, const std::string& locale) {
-  // Empty locale and exclude_locale lists matches all locales.
+  // If both filters are empty, match all values.
   if (filter.locale_size() == 0 && filter.exclude_locale_size() == 0)
     return true;
 
-  // Check if we are supposed to filter for a specified set of countries. Note
-  // that this means this overrides the exclude_locale in case that ever occurs
-  // (which it shouldn't).
+  // Allow the |locale| if it's in the allowlist.
+  // Note if both are specified, the excludelist is ignored. We do not expect
+  // both to be present for Chrome due to server-side checks.
   if (filter.locale_size() > 0)
     return base::Contains(filter.locale(), locale);
 
-  // Omit if matches any of the exclude entries.
+  // Omit if there is a matching excludelist entry.
   return !base::Contains(filter.exclude_locale(), locale);
 }
 
+bool CheckStudyCountry(const Study::Filter& filter,
+                       const std::string& country) {
+  // If both filters are empty, match all values.
+  if (filter.country_size() == 0 && filter.exclude_country_size() == 0)
+    return true;
+
+  // Allow the |country| if it's in the allowlist.
+  // Note if both are specified, the excludelist is ignored. We do not expect
+  // both to be present for Chrome due to server-side checks.
+  if (filter.country_size() > 0)
+    return base::Contains(filter.country(), country);
+
+  // Omit if there is a matching excludelist entry.
+  return !base::Contains(filter.exclude_country(), country);
+}
+
 bool CheckStudyPlatform(const Study::Filter& filter, Study::Platform platform) {
   for (int i = 0; i < filter.platform_size(); ++i) {
     if (filter.platform(i) == platform)
@@ -212,22 +226,6 @@
   return true;
 }
 
-bool CheckStudyCountry(const Study::Filter& filter,
-                       const std::string& country) {
-  // Empty country and exclude_country matches all.
-  if (filter.country_size() == 0 && filter.exclude_country_size() == 0)
-    return true;
-
-  // Checks if we are supposed to filter for a specified set of countries. Note
-  // that this means this overrides the exclude_country in case that ever occurs
-  // (which it shouldn't).
-  if (filter.country_size() > 0)
-    return base::Contains(filter.country(), country);
-
-  // Omit if matches any of the exclude entries.
-  return !base::Contains(filter.exclude_country(), country);
-}
-
 bool CheckStudyEnterprise(const Study::Filter& filter,
                           const ClientFilterableState& client_state) {
   return !filter.has_is_enterprise() ||
diff --git a/components/variations/study_filtering.h b/components/variations/study_filtering.h
index e4ec9de..382ad37c4 100644
--- a/components/variations/study_filtering.h
+++ b/components/variations/study_filtering.h
@@ -45,6 +45,10 @@
 COMPONENT_EXPORT(VARIATIONS)
 bool CheckStudyLocale(const Study::Filter& filter, const std::string& locale);
 
+// Checks whether a study is applicable for the given |country| per |filter|.
+COMPONENT_EXPORT(VARIATIONS)
+bool CheckStudyCountry(const Study::Filter& filter, const std::string& country);
+
 // Checks whether a study is applicable for the given |platform| per |filter|.
 COMPONENT_EXPORT(VARIATIONS)
 bool CheckStudyPlatform(const Study::Filter& filter, Study::Platform platform);
@@ -79,10 +83,6 @@
 bool CheckStudyOSVersion(const Study::Filter& filter,
                          const base::Version& os_version);
 
-// Checks whether a study is applicable for the given |country| per |filter|.
-COMPONENT_EXPORT(VARIATIONS)
-bool CheckStudyCountry(const Study::Filter& filter, const std::string& country);
-
 // Checks whether a study is applicable given |is_enterprise| per |filter|.
 COMPONENT_EXPORT(VARIATIONS)
 bool CheckStudyEnterprise(const Study::Filter& filter,
diff --git a/content/browser/file_system/file_system_manager_impl.cc b/content/browser/file_system/file_system_manager_impl.cc
index 461fd7a..c2082e5 100644
--- a/content/browser/file_system/file_system_manager_impl.cc
+++ b/content/browser/file_system/file_system_manager_impl.cc
@@ -97,7 +97,6 @@
     case storage::FileSystemType::kFileSystemTypeLocalForPlatformApp:
     case storage::FileSystemType::kFileSystemTypeForTransientFile:
     case storage::FileSystemType::kFileSystemTypePluginPrivate:
-    case storage::FileSystemType::kFileSystemTypeCloudDevice:
     case storage::FileSystemType::kFileSystemTypeProvided:
     case storage::FileSystemType::kFileSystemTypeDeviceMediaAsFileStorage:
     case storage::FileSystemType::kFileSystemTypeArcContent:
diff --git a/content/browser/metrics/histogram_synchronizer.cc b/content/browser/metrics/histogram_synchronizer.cc
index 6fbedf2d..6210df1 100644
--- a/content/browser/metrics/histogram_synchronizer.cc
+++ b/content/browser/metrics/histogram_synchronizer.cc
@@ -117,18 +117,10 @@
 
     RequestContext* request = it->second;
     DCHECK_EQ(sequence_number, request->sequence_number_);
-    bool received_process_group_count = request->received_process_group_count_;
-    int unresponsive_processes = request->processes_pending_;
-
     std::move(request->callback_).Run();
 
     delete request;
     outstanding_requests_.Get().erase(it);
-
-    UMA_HISTOGRAM_BOOLEAN("Histogram.ReceivedProcessGroupCount",
-                          received_process_group_count);
-    UMA_HISTOGRAM_COUNTS_1M("Histogram.PendingProcessNotResponding",
-                            unresponsive_processes);
   }
 
   // Delete all the entries in |outstanding_requests_| map.
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
index b1a5e338..ac731d0 100644
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -1939,6 +1939,10 @@
   return false;
 }
 
+bool RenderFrameHostImpl::HostedByFencedFrame() {
+  return frame_tree_node_->IsFencedFrame();
+}
+
 void RenderFrameHostImpl::ForEachRenderFrameHost(
     FrameIterationCallback on_frame) {
   ForEachRenderFrameHost(FrameIterationWrapper(on_frame));
diff --git a/content/browser/renderer_host/render_frame_host_impl.h b/content/browser/renderer_host/render_frame_host_impl.h
index ad16066..17e85f5 100644
--- a/content/browser/renderer_host/render_frame_host_impl.h
+++ b/content/browser/renderer_host/render_frame_host_impl.h
@@ -318,6 +318,7 @@
   PageImpl& GetPage() override;
   std::vector<RenderFrameHost*> GetFramesInSubtree() override;
   bool IsDescendantOf(RenderFrameHost*) override;
+  bool HostedByFencedFrame() override;
   void ForEachRenderFrameHost(FrameIterationCallback on_frame) override;
   void ForEachRenderFrameHost(
       FrameIterationAlwaysContinueCallback on_frame) override;
diff --git a/content/browser/service_worker/service_worker_internals_ui.cc b/content/browser/service_worker/service_worker_internals_ui.cc
index 8ea6cc2..a1b86a7 100644
--- a/content/browser/service_worker/service_worker_internals_ui.cc
+++ b/content/browser/service_worker/service_worker_internals_ui.cc
@@ -238,14 +238,6 @@
   }
 }
 
-// These values are persisted to logs. Entries should not be renumbered and
-// numeric values should never be reused.
-enum class ServiceWorkerInternalsLinkQuery {
-  kDevTools = 0,
-  kOther = 1,
-  kMaxValue = kOther,
-};
-
 }  // namespace
 
 class ServiceWorkerInternalsHandler::PartitionObserver
@@ -356,14 +348,6 @@
 
 ServiceWorkerInternalsUI::ServiceWorkerInternalsUI(WebUI* web_ui)
     : WebUIController(web_ui) {
-  std::string query = web_ui->GetWebContents()->GetURL().query();
-  ServiceWorkerInternalsLinkQuery query_type =
-      ServiceWorkerInternalsLinkQuery::kOther;
-  if (query == "devtools") {
-    query_type = ServiceWorkerInternalsLinkQuery::kDevTools;
-  }
-  base::UmaHistogramEnumeration("ServiceWorker.InternalsPageAccessed",
-                                query_type);
   WebUIDataSource* source =
       WebUIDataSource::Create(kChromeUIServiceWorkerInternalsHost);
   source->OverrideContentSecurityPolicy(
diff --git a/content/common/font_list_mac.mm b/content/common/font_list_mac.mm
index 1171fe6f..9dea6d21 100644
--- a/content/common/font_list_mac.mm
+++ b/content/common/font_list_mac.mm
@@ -58,8 +58,6 @@
     base::ScopedCFTypeRef<CFArrayRef> normalized_descriptors(
         CTFontDescriptorCreateMatchingFontDescriptors(
             raw_descriptor, mandatory_attributes_.get()));
-    DCHECK(normalized_descriptors != nullptr)
-        << "CTFontDescriptorCreateMatchingFontDescriptors returned null";
     return CopyLocalizedFamilyNameFrom(family_name,
                                        normalized_descriptors.get());
   }
@@ -82,18 +80,21 @@
  private:
   // Returns the first font descriptor matching the given family name.
   //
-  // |descriptors| must be an array of CTFontDescriptors whose font family name
+  // `descriptors` must be an array of CTFontDescriptors whose font family name
   // attribute is populated.
   //
+  // `descriptors` may be null, representing an empty array. This case is
+  // handled because CTFontDescriptorCreateMatchingFontDescriptors() may
+  // return null, even on macOS 11. Discovery documented in crbug.com/1235042.
+  //
   // Returns null if none of the descriptors match.
   static base::ScopedCFTypeRef<CTFontDescriptorRef> FindFirstWithFamilyName(
       CFStringRef family_name,
       CFArrayRef descriptors) {
     DCHECK(family_name != nullptr);
-    DCHECK(descriptors != nullptr);
 
-    CFIndex normalized_descriptor_count = CFArrayGetCount(descriptors);
-    for (CFIndex i = 0; i < normalized_descriptor_count; ++i) {
+    CFIndex descriptor_count = descriptors ? CFArrayGetCount(descriptors) : 0;
+    for (CFIndex i = 0; i < descriptor_count; ++i) {
       CTFontDescriptorRef descriptor =
           base::mac::CFCastStrict<CTFontDescriptorRef>(
               CFArrayGetValueAtIndex(descriptors, i));
@@ -114,8 +115,12 @@
 
   // Returns a localized font family name for the given family name.
   //
-  // |descriptors| must be an array of CTFontDescriptors representing all
-  // descriptors on the system matching the given family name.
+  // `descriptors` must be an array of normalized CTFontDescriptors representing
+  // all the font descriptors on the system matching the given family name.
+  //
+  // `descriptors` may be null, representing an empty array. This case is
+  // handled because CTFontDescriptorCreateMatchingFontDescriptors() may
+  // return null, even on macOS 11. Discovery documented in crbug.com/1235042.
   //
   // The given family name is returned as a fallback, if none of the descriptors
   // match the desired font family name.
@@ -123,7 +128,6 @@
       CFStringRef family_name,
       CFArrayRef descriptors) {
     DCHECK(family_name != nullptr);
-    DCHECK(descriptors != nullptr);
 
     base::ScopedCFTypeRef<CTFontDescriptorRef> descriptor =
         FindFirstWithFamilyName(family_name, descriptors);
@@ -139,8 +143,20 @@
             CTFontDescriptorCopyLocalizedAttribute(descriptor,
                                                    kCTFontFamilyNameAttribute,
                                                    /*language=*/nullptr)));
-    DCHECK(localized_family_name != nullptr)
-        << "CTFontDescriptorCopyLocalizedAttribute returned null";
+    // CTFontDescriptorCopyLocalizedAttribute() is only supposed to return null
+    // if the desired attribute (family name) is not present.
+    //
+    // We found that the function may return null, even when given a normalized
+    // font descriptor whose attribute (family name) exists --
+    // FindFirstWithFamilyName() only returns descriptors whose non-localized
+    // family name attribute is equal to a given string. Discovery documented in
+    // crbug.com/1235090.
+    if (localized_family_name == nullptr) {
+      DLOG(WARNING) << "Will use non-localized family name for font family: "
+                    << family_name;
+      return base::ScopedCFTypeRef<CFStringRef>(family_name,
+                                                base::scoped_policy::RETAIN);
+    }
     return localized_family_name;
   }
 
@@ -202,7 +218,7 @@
         continue;
 
       base::ScopedCFTypeRef<CFStringRef> cf_normalized_family_name =
-          resolver.CopyLocalizedFamilyName(base::mac::NSToCFCast(family_name));
+          resolver.CopyLocalizedFamilyName(family_name_cf);
       DCHECK(cf_normalized_family_name != nullptr)
           << "FontFamilyResolver::CopyLocalizedFamilyName returned null";
       family_name_map[base::mac::CFToNSCast(cf_normalized_family_name)] =
diff --git a/content/public/browser/render_frame_host.h b/content/public/browser/render_frame_host.h
index 986fb50d..ab17451 100644
--- a/content/public/browser/render_frame_host.h
+++ b/content/public/browser/render_frame_host.h
@@ -266,6 +266,14 @@
   // This does not consider inner frame trees.
   virtual bool IsDescendantOf(RenderFrameHost* ancestor) = 0;
 
+  // Fenced frames (meta-bug https://crbug.com/1111084):
+  // Returns if this document is directly hosted by a fenced frame.
+  //
+  // In particular, this always returns false for document loaded inside an
+  // <iframe>, even if the <iframe> is part of a document loaded inside a fenced
+  // iframe.
+  virtual bool HostedByFencedFrame() = 0;
+
   // |ForEachRenderFrameHost| traverses this RenderFrameHost and all of its
   // descendants, including frames in any inner frame trees, in breadth-first
   // order. Examples of features that have inner frame trees are portals or
diff --git a/content/public/browser/web_contents_receiver_set.h b/content/public/browser/web_contents_receiver_set.h
index 85c8875c..268b6e5 100644
--- a/content/public/browser/web_contents_receiver_set.h
+++ b/content/public/browser/web_contents_receiver_set.h
@@ -23,9 +23,6 @@
 namespace chrome_browser_net {
 class NetErrorTabHelper;
 }
-namespace extensions {
-class ExtensionFrameHost;
-}  // namespace extensions
 namespace printing {
 class PrintManager;
 }
@@ -100,7 +97,6 @@
 
   friend class ::EmbeddedSearchClientFactoryImpl;
   friend class ::chrome_browser_net::NetErrorTabHelper;
-  friend class ::extensions::ExtensionFrameHost;
   friend class ::printing::PrintManager;
   friend class ::subresource_redirect::SubresourceRedirectObserver;
   friend class ScreenOrientationProvider;
diff --git a/device/base/features.cc b/device/base/features.cc
index cd871b3..59506ef 100644
--- a/device/base/features.cc
+++ b/device/base/features.cc
@@ -14,11 +14,6 @@
 #endif  // defined(OS_MAC)
 
 #if defined(OS_WIN)
-const base::Feature kNewUsbBackend{"NewUsbBackend",
-                                   base::FEATURE_ENABLED_BY_DEFAULT};
-#endif  // defined(OS_WIN)
-
-#if defined(OS_WIN)
 const base::Feature kNewBLEWinImplementation{"NewBLEWinImplementation",
                                              base::FEATURE_ENABLED_BY_DEFAULT};
 
diff --git a/device/base/features.h b/device/base/features.h
index 80bf44d..4105f3c 100644
--- a/device/base/features.h
+++ b/device/base/features.h
@@ -12,9 +12,9 @@
 
 namespace device {
 
-#if defined(OS_WIN) || defined(OS_MAC)
+#if defined(OS_MAC)
 DEVICE_BASE_EXPORT extern const base::Feature kNewUsbBackend;
-#endif  // defined(OS_WIN) || defined(OS_MAC)
+#endif  // defined(OS_MAC)
 
 #if defined(OS_WIN)
 DEVICE_BASE_EXPORT extern const base::Feature kNewBLEWinImplementation;
diff --git a/device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothAdapter.java b/device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothAdapter.java
index 924d22d7..7701ec4 100644
--- a/device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothAdapter.java
+++ b/device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothAdapter.java
@@ -18,7 +18,6 @@
 import android.os.ParcelUuid;
 import android.util.SparseArray;
 
-import org.chromium.base.BuildInfo;
 import org.chromium.base.Log;
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNIAdditionalImport;
@@ -219,14 +218,11 @@
             return false;
         }
 
-        // TODO(b/183501112): Remove the targetsAtLeastS() check and replace these permission
-        // strings with the actual Manifest constants once Chrome starts compiling against the S
-        // SDK.
-        if (BuildInfo.targetsAtLeastS() && BuildInfo.isAtLeastS()) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
             Context context = mAdapter.getContext();
-            return context.checkCallingOrSelfPermission("android.permission.BLUETOOTH_SCAN")
+            return context.checkCallingOrSelfPermission(Manifest.permission.BLUETOOTH_SCAN)
                     == PackageManager.PERMISSION_GRANTED
-                    && context.checkCallingOrSelfPermission("android.permission.BLUETOOTH_CONNECT")
+                    && context.checkCallingOrSelfPermission(Manifest.permission.BLUETOOTH_CONNECT)
                     == PackageManager.PERMISSION_GRANTED;
         }
 
diff --git a/device/bluetooth/android/java/src/org/chromium/device/bluetooth/Wrappers.java b/device/bluetooth/android/java/src/org/chromium/device/bluetooth/Wrappers.java
index 65df0ff..b261a30 100644
--- a/device/bluetooth/android/java/src/org/chromium/device/bluetooth/Wrappers.java
+++ b/device/bluetooth/android/java/src/org/chromium/device/bluetooth/Wrappers.java
@@ -25,7 +25,6 @@
 import android.os.ParcelUuid;
 import android.util.SparseArray;
 
-import org.chromium.base.BuildInfo;
 import org.chromium.base.ContextUtils;
 import org.chromium.base.Log;
 import org.chromium.base.ThreadUtils;
@@ -126,16 +125,13 @@
             // granted in the manifest. In Android S and later the BLUETOOTH_SCAN and
             // BLUETOOTH_CONNECT permissions can be requested at runtime after fetching the default
             // adapter.
-            //
-            // TODO(b/183501112): Remove the targetsAtLeastS() check once Chrome starts compiling
-            // against the S SDK.
-            if (!BuildInfo.targetsAtLeastS() || !BuildInfo.isAtLeastS()) {
+            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
                 final boolean hasPermission =
                         ContextUtils.getApplicationContext().checkCallingOrSelfPermission(
-                                "android.permission.BLUETOOTH")
+                                Manifest.permission.BLUETOOTH)
                                 == PackageManager.PERMISSION_GRANTED
                         && ContextUtils.getApplicationContext().checkCallingOrSelfPermission(
-                                   "android.permission.BLUETOOTH_ADMIN")
+                                   Manifest.permission.BLUETOOTH_ADMIN)
                                 == PackageManager.PERMISSION_GRANTED;
 
                 if (!hasPermission) {
diff --git a/docs/security/security-labels.md b/docs/security/security-labels.md
index bfd6838c..7dca7f6b 100644
--- a/docs/security/security-labels.md
+++ b/docs/security/security-labels.md
@@ -33,10 +33,10 @@
 * **FoundIn-#**: Designates which milestones of Chrome are
 impacted by the bug. Multiple labels may be set, but the most important one
 is the earliest affected milestone.
-* **Security_Impact-**{**Head**, **Beta**, **Stable**, **None**}: Derived
-from **FoundIn**, this label specifies the earliest affected release channel.
-Should not normally be set by humans, except in the case of **None** which
-means that the bug is in a disabled feature, or otherwise doesn't impact
+* **Security_Impact-**{**Head**, **Beta**, **Stable**, **Extended**, **None**}:
+Derived from **FoundIn**, this label specifies the earliest affected release
+channel. Should not normally be set by humans, except in the case of **None**
+which means that the bug is in a disabled feature, or otherwise doesn't impact
 Chrome: see the section below for more details.
     * Note that **Security_Severity** should still be set on
       **Security_Impact-None** issues, as if the feature were enabled or the
@@ -215,8 +215,8 @@
 ### Remove Invalid **Security_Impact-X** Labels
 
 There should be exactly one **Security_Impact-X** label and it should be one of
-the 4 valid impact labels (None, Stable, Beta, Head). This rule removes any
-invalid and excess impact labels.
+the 5 valid impact labels (None, Extended, Stable, Beta, Head). This rule
+removes any invalid and excess impact labels.
 
 ### Adjust **Security_Impact-X** To Match FoundIn Labels
 
@@ -228,7 +228,7 @@
 
 Bugs that are labelled with milestones earlier than the current milestone will
 be relabeled to set the label for the current milestone and
-**Security_Impact-Stable**.
+**Security_Impact-Extended**.
 
 Bugs that carry a **Security_Impact-X** label but are missing a milestone label
 will be assigned the **M-#** label corresponding to the respective milestone.
@@ -300,8 +300,8 @@
 that the bug is in the component **Blink>DOM**, and such bugs should be labeled
 as applying to all OSs except iOS (where Blink is not used): **OS-**{**Linux**,
 **Windows**, **Android**, **Chrome**, **Fuchsia**}. Sheriffbot will check
-whether 27 is the current stable, beta or head milestone; let's assume
-**Security_Impact-Stable** is applied by Sheriffbot this time.
+whether 27 is the current extended stable, stable, beta or head milestone; let's
+assume **Security_Impact-Stable** is applied by Sheriffbot this time.
 1. Within a day or two, the sheriff was able to get the bug assigned and — oh
 joy! — fixed very quickly. When the bug's status changes to **Fixed**,
 Sheriffbot will add the **Merge-Requested** label, and will change
diff --git a/extensions/browser/api/storage/storage_api.cc b/extensions/browser/api/storage/storage_api.cc
index 5f4737d..740db2c 100644
--- a/extensions/browser/api/storage/storage_api.cc
+++ b/extensions/browser/api/storage/storage_api.cc
@@ -19,9 +19,11 @@
 #include "content/public/browser/browser_thread.h"
 #include "extensions/browser/api/storage/session_storage_manager.h"
 #include "extensions/browser/api/storage/storage_frontend.h"
+#include "extensions/browser/extension_prefs.h"
 #include "extensions/browser/extensions_browser_client.h"
 #include "extensions/browser/quota_service.h"
 #include "extensions/common/api/storage.h"
+#include "extensions/common/features/feature.h"
 #include "extensions/common/features/feature_channel.h"
 
 namespace extensions {
@@ -32,6 +34,9 @@
 
 constexpr char kSessionStorageManagerKeyName[] =
     "StorageAPI SessionStorageManager";
+constexpr PrefMap kPrefSessionStorageAccessLevel = {
+    "storage_session_access_level", PrefType::kInteger,
+    PrefScope::kExtensionSpecific};
 
 // Returns a vector of any strings within the given list.
 std::vector<std::string> GetKeysFromList(const base::Value& list) {
@@ -152,6 +157,12 @@
   // Session is the only storage area that does not use ValueStore, and will
   // return synchronously.
   if (storage_area_ == StorageAreaNamespace::kSession) {
+    // Currently only `session` can restrict the storage access. This call will
+    // be moved after the other storage areas allow it.
+    if (!IsAccessToStorageAllowed()) {
+      return RespondNow(
+          Error("Access to storage is not allowed from this context."));
+    }
     return RespondNow(RunInSession());
   }
 
@@ -230,6 +241,23 @@
   }
 }
 
+bool SettingsFunction::IsAccessToStorageAllowed() {
+  ExtensionPrefs* prefs = ExtensionPrefs::Get(browser_context());
+  // Default access level is only secure contexts.
+  int access_level = api::storage::ACCESS_LEVEL_TRUSTED_CONTEXTS;
+  prefs->ReadPrefAsInteger(extension()->id(), kPrefSessionStorageAccessLevel,
+                           &access_level);
+
+  // Only a blessed extension context is considered trusted.
+  if (access_level == api::storage::ACCESS_LEVEL_TRUSTED_CONTEXTS)
+    return source_context_type() == Feature::BLESSED_EXTENSION_CONTEXT;
+
+  // All contexts are allowed.
+  DCHECK_EQ(api::storage::ACCESS_LEVEL_TRUSTED_AND_UNTRUSTED_CONTEXTS,
+            access_level);
+  return true;
+}
+
 ExtensionFunction::ResponseValue StorageStorageAreaGetFunction::RunWithStorage(
     ValueStore* storage) {
   TRACE_EVENT1("browser", "StorageStorageAreaGetFunction::RunWithStorage",
@@ -491,4 +519,34 @@
   GetModificationQuotaLimitHeuristics(heuristics);
 }
 
+ExtensionFunction::ResponseValue
+StorageStorageAreaSetAccessLevelFunction::RunWithStorage(ValueStore* storage) {
+  // Not supported. Should return error.
+  return Error("This StorageArea is not available for setting access level");
+}
+
+ExtensionFunction::ResponseValue
+StorageStorageAreaSetAccessLevelFunction::RunInSession() {
+  if (source_context_type() != Feature::BLESSED_EXTENSION_CONTEXT)
+    return Error("Context cannot set the storage access level");
+
+  std::unique_ptr<api::storage::StorageArea::SetAccessLevel::Params> params(
+      api::storage::StorageArea::SetAccessLevel::Params::Create(*args_));
+
+  if (!params)
+    return BadMessage();
+
+  // The parsing code ensures `access_level` is sane.
+  DCHECK(params->access_options.access_level ==
+             api::storage::ACCESS_LEVEL_TRUSTED_CONTEXTS ||
+         params->access_options.access_level ==
+             api::storage::ACCESS_LEVEL_TRUSTED_AND_UNTRUSTED_CONTEXTS);
+
+  ExtensionPrefs* prefs = ExtensionPrefs::Get(browser_context());
+  prefs->SetIntegerPref(extension_id(), kPrefSessionStorageAccessLevel,
+                        params->access_options.access_level);
+
+  return NoArguments();
+}
+
 }  // namespace extensions
diff --git a/extensions/browser/api/storage/storage_api.h b/extensions/browser/api/storage/storage_api.h
index fea87729..cd1888b 100644
--- a/extensions/browser/api/storage/storage_api.h
+++ b/extensions/browser/api/storage/storage_api.h
@@ -49,6 +49,9 @@
   void OnSessionSettingsChanged(
       std::vector<SessionStorageManager::ValueChange> changes);
 
+  // Returns whether the caller's context has access to the storage or not.
+  bool IsAccessToStorageAllowed();
+
  private:
   // Called via PostTask from Run. Calls RunWithStorage and then
   // SendResponse with its success value.
@@ -136,6 +139,23 @@
   ResponseValue RunInSession() override;
 };
 
+class StorageStorageAreaSetAccessLevelFunction : public SettingsFunction {
+ public:
+  DECLARE_EXTENSION_FUNCTION("storage.setAccessLevel", STORAGE_SETACCESSLEVEL)
+  StorageStorageAreaSetAccessLevelFunction() = default;
+  StorageStorageAreaSetAccessLevelFunction(
+      const StorageStorageAreaSetAccessLevelFunction&) = delete;
+  StorageStorageAreaSetAccessLevelFunction& operator=(
+      const StorageStorageAreaSetAccessLevelFunction&) = delete;
+
+ protected:
+  ~StorageStorageAreaSetAccessLevelFunction() override = default;
+
+  // SettingsFunction:
+  ResponseValue RunWithStorage(ValueStore* storage) override;
+  ResponseValue RunInSession() override;
+};
+
 }  // namespace extensions
 
 #endif  // EXTENSIONS_BROWSER_API_STORAGE_STORAGE_API_H_
diff --git a/extensions/browser/extension_frame_host.cc b/extensions/browser/extension_frame_host.cc
index 25222de..0845696 100644
--- a/extensions/browser/extension_frame_host.cc
+++ b/extensions/browser/extension_frame_host.cc
@@ -13,13 +13,16 @@
 namespace extensions {
 
 ExtensionFrameHost::ExtensionFrameHost(content::WebContents* web_contents)
-    : web_contents_(web_contents),
-      receivers_(web_contents,
-                 this,
-                 content::WebContentsFrameReceiverSetPassKey()) {}
+    : web_contents_(web_contents), receivers_(web_contents, this) {}
 
 ExtensionFrameHost::~ExtensionFrameHost() = default;
 
+void ExtensionFrameHost::BindLocalFrameHost(
+    mojo::PendingAssociatedReceiver<mojom::LocalFrameHost> receiver,
+    content::RenderFrameHost* rfh) {
+  receivers_.Bind(rfh, std::move(receiver));
+}
+
 void ExtensionFrameHost::RequestScriptInjectionPermission(
     const std::string& extension_id,
     mojom::InjectionType script_type,
diff --git a/extensions/browser/extension_frame_host.h b/extensions/browser/extension_frame_host.h
index d8a6c72..cf1c869 100644
--- a/extensions/browser/extension_frame_host.h
+++ b/extensions/browser/extension_frame_host.h
@@ -5,7 +5,7 @@
 #ifndef EXTENSIONS_BROWSER_EXTENSION_FRAME_HOST_H_
 #define EXTENSIONS_BROWSER_EXTENSION_FRAME_HOST_H_
 
-#include "content/public/browser/web_contents_receiver_set.h"
+#include "content/public/browser/render_frame_host_receiver_set.h"
 #include "extensions/common/mojom/frame.mojom.h"
 #include "extensions/common/mojom/injection_type.mojom-shared.h"
 #include "extensions/common/mojom/run_location.mojom-shared.h"
@@ -26,6 +26,10 @@
   ExtensionFrameHost& operator=(const ExtensionFrameHost&) = delete;
   ~ExtensionFrameHost() override;
 
+  void BindLocalFrameHost(
+      mojo::PendingAssociatedReceiver<mojom::LocalFrameHost> receiver,
+      content::RenderFrameHost* rfh);
+
   // mojom::LocalFrameHost:
   void RequestScriptInjectionPermission(
       const std::string& extension_id,
@@ -46,7 +50,7 @@
   // This raw pointer is safe to use because ExtensionWebContentsObserver whose
   // lifetime is tied to the WebContents owns this instance.
   content::WebContents* web_contents_;
-  content::WebContentsFrameReceiverSet<mojom::LocalFrameHost> receivers_;
+  content::RenderFrameHostReceiverSet<mojom::LocalFrameHost> receivers_;
 };
 
 }  // namespace extensions
diff --git a/extensions/browser/extension_function_histogram_value.h b/extensions/browser/extension_function_histogram_value.h
index dd8d27fb..84727b6 100644
--- a/extensions/browser/extension_function_histogram_value.h
+++ b/extensions/browser/extension_function_histogram_value.h
@@ -1149,7 +1149,7 @@
   DELETED_EASYUNLOCKPRIVATE_SETUPCONNECTIONSEND = 1088,
   DELETED_DATAREDUCTIONPROXY_GETDATAUSAGE = 1089,
   DELETED_EASYUNLOCKPRIVATE_SETUPCONNECTIONGETDEVICEADDRESS = 1090,
-  TABCAPTURE_CAPTUREOFFSCREENTAB = 1091,
+  DELETED_TABCAPTURE_CAPTUREOFFSCREENTAB = 1091,
   LANGUAGESETTINGSPRIVATE_ADDSPELLCHECKWORD = 1092,
   LANGUAGESETTINGSPRIVATE_REMOVESPELLCHECKWORD = 1093,
   SETTINGSPRIVATE_GETDEFAULTZOOMFUNCTION = 1094,
@@ -1627,6 +1627,7 @@
   SCRIPTING_GETREGISTEREDCONTENTSCRIPTS = 1564,
   OS_TELEMETRY_GETVPDINFO = 1565,
   ACCESSIBILITY_PRIVATE_MAGNIFIERCENTERONPOINT = 1566,
+  STORAGE_SETACCESSLEVEL = 1567,
   // Last entry: Add new entries above, then run:
   // python tools/metrics/histograms/update_extension_histograms.py
   ENUM_BOUNDARY
diff --git a/extensions/browser/extension_web_contents_observer.cc b/extensions/browser/extension_web_contents_observer.cc
index a0846eb..56061826 100644
--- a/extensions/browser/extension_web_contents_observer.cc
+++ b/extensions/browser/extension_web_contents_observer.cc
@@ -39,6 +39,22 @@
       web_contents);
 }
 
+// static
+void ExtensionWebContentsObserver::BindLocalFrameHost(
+    mojo::PendingAssociatedReceiver<mojom::LocalFrameHost> receiver,
+    content::RenderFrameHost* rfh) {
+  auto* web_contents = content::WebContents::FromRenderFrameHost(rfh);
+  if (!web_contents)
+    return;
+  auto* observer = GetForWebContents(web_contents);
+  if (!observer)
+    return;
+  auto* efh = observer->extension_frame_host_.get();
+  if (!efh)
+    return;
+  efh->BindLocalFrameHost(std::move(receiver), rfh);
+}
+
 std::unique_ptr<ExtensionFrameHost>
 ExtensionWebContentsObserver::CreateExtensionFrameHost(
     content::WebContents* web_contents) {
diff --git a/extensions/browser/extension_web_contents_observer.h b/extensions/browser/extension_web_contents_observer.h
index 8e36f04..7e29d02 100644
--- a/extensions/browser/extension_web_contents_observer.h
+++ b/extensions/browser/extension_web_contents_observer.h
@@ -59,6 +59,12 @@
   static ExtensionWebContentsObserver* GetForWebContents(
       content::WebContents* web_contents);
 
+  // Binds the LocalFrameHost interface to the ExtensionFrameHost associated
+  // with the RenderFrameHost.
+  static void BindLocalFrameHost(
+      mojo::PendingAssociatedReceiver<mojom::LocalFrameHost> receiver,
+      content::RenderFrameHost* rfh);
+
   // This must be called by clients directly after the EWCO has been created.
   void Initialize();
 
diff --git a/extensions/common/api/storage.json b/extensions/common/api/storage.json
index 6721d18..b235a59 100644
--- a/extensions/common/api/storage.json
+++ b/extensions/common/api/storage.json
@@ -9,6 +9,13 @@
     "unprivileged": true,
     "types": [
       {
+        "id": "AccessLevel",
+        "nodoc": true,
+        "type": "string",
+        "enum": ["TRUSTED_CONTEXTS", "TRUSTED_AND_UNTRUSTED_CONTEXTS"],
+        "description": "The storage area's access level."
+      },
+      {
         "id": "StorageChange",
         "type": "object",
         "properties": {
@@ -145,6 +152,29 @@
               "parameters": [],
               "optional": true
             }
+          }, {
+            "name": "setAccessLevel",
+            "nodoc": true,
+            "type": "function",
+            "description": "Sets the desired access level for the storage area. The default will be only trusted contexts.",
+            "parameters": [
+              {
+                "type": "object",
+                "name": "accessOptions",
+                "properties": {
+                  "accessLevel": {
+                    "$ref": "AccessLevel",
+                    "description": "The access level of the storage area."
+                  }
+                }
+              }
+            ],
+            "returns_async":  {
+              "name": "callback",
+              "description": "Callback on success, or on failure (in which case $(ref:runtime.lastError) will be set).",
+              "parameters": [],
+              "optional": true
+            }
           }
         ],
         "events": [
diff --git a/extensions/renderer/storage_area.cc b/extensions/renderer/storage_area.cc
index ccaffa4..d1e57cef 100644
--- a/extensions/renderer/storage_area.cc
+++ b/extensions/renderer/storage_area.cc
@@ -192,6 +192,9 @@
         .SetMethod("remove", &SessionStorageArea::Remove)
         .SetMethod("clear", &SessionStorageArea::Clear)
         .SetMethod("getBytesInUse", &SessionStorageArea::GetBytesInUse)
+        // TODO(crbug.com/1227410): Only expose `setAccessLevel` in privileged
+        // contexts.
+        .SetMethod("setAccessLevel", &SessionStorageArea::SetAccessLevel)
         .SetProperty("onChanged", &SessionStorageArea::GetOnChangedEvent)
         .SetValue("QUOTA_BYTES", api::storage::session::QUOTA_BYTES);
   }
@@ -199,6 +202,10 @@
  private:
   DEFINE_STORAGE_AREA_HANDLERS()
 
+  void SetAccessLevel(gin::Arguments* arguments) {
+    storage_area_.HandleFunctionCall("setAccessLevel", arguments);
+  }
+
   StorageArea storage_area_;
 
   DISALLOW_COPY_AND_ASSIGN(SessionStorageArea);
diff --git a/extensions/shell/browser/shell_content_browser_client.cc b/extensions/shell/browser/shell_content_browser_client.cc
index 6750e7c..dfece5f 100644
--- a/extensions/shell/browser/shell_content_browser_client.cc
+++ b/extensions/shell/browser/shell_content_browser_client.cc
@@ -33,6 +33,7 @@
 #include "extensions/browser/extension_navigation_ui_data.h"
 #include "extensions/browser/extension_protocols.h"
 #include "extensions/browser/extension_registry.h"
+#include "extensions/browser/extension_web_contents_observer.h"
 #include "extensions/browser/guest_view/extensions_guest_view_message_filter.h"
 #include "extensions/browser/guest_view/web_view/web_view_guest.h"
 #include "extensions/browser/process_map.h"
@@ -234,6 +235,21 @@
       &EventRouter::BindForRenderer, render_process_host->GetID()));
 }
 
+bool ShellContentBrowserClient::BindAssociatedReceiverFromFrame(
+    content::RenderFrameHost* render_frame_host,
+    const std::string& interface_name,
+    mojo::ScopedInterfaceEndpointHandle* handle) {
+  if (interface_name == extensions::mojom::LocalFrameHost::Name_) {
+    ExtensionWebContentsObserver::BindLocalFrameHost(
+        mojo::PendingAssociatedReceiver<extensions::mojom::LocalFrameHost>(
+            std::move(*handle)),
+        render_frame_host);
+    return true;
+  }
+
+  return false;
+}
+
 std::vector<std::unique_ptr<content::NavigationThrottle>>
 ShellContentBrowserClient::CreateThrottlesForNavigation(
     content::NavigationHandle* navigation_handle) {
diff --git a/extensions/shell/browser/shell_content_browser_client.h b/extensions/shell/browser/shell_content_browser_client.h
index fc358473..02cb3ae 100644
--- a/extensions/shell/browser/shell_content_browser_client.h
+++ b/extensions/shell/browser/shell_content_browser_client.h
@@ -76,6 +76,10 @@
       service_manager::BinderRegistry* registry,
       blink::AssociatedInterfaceRegistry* associated_registry,
       content::RenderProcessHost* render_process_host) override;
+  bool BindAssociatedReceiverFromFrame(
+      content::RenderFrameHost* render_frame_host,
+      const std::string& interface_name,
+      mojo::ScopedInterfaceEndpointHandle* handle) override;
   std::vector<std::unique_ptr<content::NavigationThrottle>>
   CreateThrottlesForNavigation(
       content::NavigationHandle* navigation_handle) override;
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index 0dd92a8..0f272f3 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -4597,9 +4597,6 @@
   if (!workarounds().dont_initialize_uninitialized_locals)
     driver_bug_workarounds |= SH_INITIALIZE_UNINITIALIZED_LOCALS;
 
-  resources.WEBGL_debug_shader_precision =
-      group_->gpu_preferences().emulate_shader_precision;
-
   ShShaderOutput shader_output_language =
       ShaderTranslator::GetShaderOutputLanguageForContext(gl_version_info());
 
diff --git a/gpu/command_buffer/service/gpu_switches.cc b/gpu/command_buffer/service/gpu_switches.cc
index a12e953..4ae6ba6 100644
--- a/gpu/command_buffer/service/gpu_switches.cc
+++ b/gpu/command_buffer/service/gpu_switches.cc
@@ -65,10 +65,6 @@
 // compilation info logs.
 const char kGLShaderIntermOutput[] = "gl-shader-interm-output";
 
-// Emulate ESSL lowp and mediump float precisions by mutating the shaders to
-// round intermediate values in ANGLE.
-const char kEmulateShaderPrecision[] = "emulate-shader-precision";
-
 // Enable Vulkan support and select Vulkan implementation, must also have
 // ENABLE_VULKAN defined. This only initializes Vulkan, the flag
 // --enable-features=Vulkan must also be used to select Vulkan for compositing
diff --git a/gpu/command_buffer/service/gpu_switches.h b/gpu/command_buffer/service/gpu_switches.h
index b3b7d99..e87ef80 100644
--- a/gpu/command_buffer/service/gpu_switches.h
+++ b/gpu/command_buffer/service/gpu_switches.h
@@ -29,7 +29,6 @@
 GPU_EXPORT extern const char kDisableGpuShaderDiskCache[];
 GPU_EXPORT extern const char kEnableThreadedTextureMailboxes[];
 GPU_EXPORT extern const char kGLShaderIntermOutput[];
-GPU_EXPORT extern const char kEmulateShaderPrecision[];
 GPU_EXPORT extern const char kUseVulkan[];
 GPU_EXPORT extern const char kVulkanImplementationNameNative[];
 GPU_EXPORT extern const char kVulkanImplementationNameSwiftshader[];
diff --git a/gpu/command_buffer/service/service_utils.cc b/gpu/command_buffer/service/service_utils.cc
index c5fea15..9bd4406 100644
--- a/gpu/command_buffer/service/service_utils.cc
+++ b/gpu/command_buffer/service/service_utils.cc
@@ -147,8 +147,6 @@
       command_line->HasSwitch(switches::kEnableThreadedTextureMailboxes);
   gpu_preferences.gl_shader_interm_output =
       command_line->HasSwitch(switches::kGLShaderIntermOutput);
-  gpu_preferences.emulate_shader_precision =
-      command_line->HasSwitch(switches::kEmulateShaderPrecision);
   gpu_preferences.enable_gpu_service_logging =
       command_line->HasSwitch(switches::kEnableGPUServiceLogging);
   gpu_preferences.enable_gpu_service_tracing =
diff --git a/gpu/config/gpu_preferences.h b/gpu/config/gpu_preferences.h
index 7e46e68..8131a0d 100644
--- a/gpu/config/gpu_preferences.h
+++ b/gpu/config/gpu_preferences.h
@@ -165,10 +165,6 @@
   // compilation info logs.
   bool gl_shader_interm_output = false;
 
-  // Emulate ESSL lowp and mediump float precisions by mutating the shaders to
-  // round intermediate values in ANGLE.
-  bool emulate_shader_precision = false;
-
   // ===================================
   // Settings from //gpu/config/gpu_switches.h
 
diff --git a/gpu/config/gpu_preferences_unittest.cc b/gpu/config/gpu_preferences_unittest.cc
index 07c0ae6..f2db765 100644
--- a/gpu/config/gpu_preferences_unittest.cc
+++ b/gpu/config/gpu_preferences_unittest.cc
@@ -59,7 +59,6 @@
   EXPECT_EQ(left.enable_threaded_texture_mailboxes,
             right.enable_threaded_texture_mailboxes);
   EXPECT_EQ(left.gl_shader_interm_output, right.gl_shader_interm_output);
-  EXPECT_EQ(left.emulate_shader_precision, right.emulate_shader_precision);
   EXPECT_EQ(left.enable_gpu_service_logging, right.enable_gpu_service_logging);
   EXPECT_EQ(left.enable_gpu_service_tracing, right.enable_gpu_service_tracing);
   EXPECT_EQ(left.use_passthrough_cmd_decoder,
@@ -163,7 +162,6 @@
     GPU_PREFERENCES_FIELD(disable_gpu_shader_disk_cache, true)
     GPU_PREFERENCES_FIELD(enable_threaded_texture_mailboxes, true)
     GPU_PREFERENCES_FIELD(gl_shader_interm_output, true)
-    GPU_PREFERENCES_FIELD(emulate_shader_precision, true)
     GPU_PREFERENCES_FIELD(enable_gpu_service_logging, true)
     GPU_PREFERENCES_FIELD(enable_gpu_service_tracing, true)
     GPU_PREFERENCES_FIELD(use_passthrough_cmd_decoder, true)
@@ -259,7 +257,6 @@
   PRINT_BOOL(disable_gpu_shader_disk_cache);
   PRINT_BOOL(enable_threaded_texture_mailboxes);
   PRINT_BOOL(gl_shader_interm_output);
-  PRINT_BOOL(emulate_shader_precision);
   PRINT_BOOL(enable_gpu_service_logging);
   PRINT_BOOL(enable_gpu_service_tracing);
   PRINT_BOOL(use_passthrough_cmd_decoder);
diff --git a/gpu/ipc/common/gpu_preferences.mojom b/gpu/ipc/common/gpu_preferences.mojom
index a4a92e0..f95dcac 100644
--- a/gpu/ipc/common/gpu_preferences.mojom
+++ b/gpu/ipc/common/gpu_preferences.mojom
@@ -69,7 +69,6 @@
   bool disable_gpu_shader_disk_cache;
   bool enable_threaded_texture_mailboxes;
   bool gl_shader_interm_output;
-  bool emulate_shader_precision;
   bool enable_android_surface_control;
   bool enable_gpu_service_logging;
   bool enable_gpu_service_tracing;
diff --git a/gpu/ipc/common/gpu_preferences_mojom_traits.h b/gpu/ipc/common/gpu_preferences_mojom_traits.h
index bf109319..e3e7cde 100644
--- a/gpu/ipc/common/gpu_preferences_mojom_traits.h
+++ b/gpu/ipc/common/gpu_preferences_mojom_traits.h
@@ -170,7 +170,6 @@
     out->enable_threaded_texture_mailboxes =
         prefs.enable_threaded_texture_mailboxes();
     out->gl_shader_interm_output = prefs.gl_shader_interm_output();
-    out->emulate_shader_precision = prefs.emulate_shader_precision();
     out->enable_android_surface_control =
         prefs.enable_android_surface_control();
     out->enable_gpu_service_logging = prefs.enable_gpu_service_logging();
@@ -330,9 +329,6 @@
   static bool gl_shader_interm_output(const gpu::GpuPreferences& prefs) {
     return prefs.gl_shader_interm_output;
   }
-  static bool emulate_shader_precision(const gpu::GpuPreferences& prefs) {
-    return prefs.emulate_shader_precision;
-  }
   static bool enable_android_surface_control(const gpu::GpuPreferences& prefs) {
     return prefs.enable_android_surface_control;
   }
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg
index eacdbe9..d74a4f01 100644
--- a/infra/config/generated/cr-buildbucket.cfg
+++ b/infra/config/generated/cr-buildbucket.cfg
@@ -100,16 +100,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -202,16 +192,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -304,16 +284,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -406,16 +376,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -508,16 +468,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -610,16 +560,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -712,16 +652,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -814,16 +744,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -916,16 +836,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -1019,16 +929,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -1127,16 +1027,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -1230,16 +1120,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -1333,16 +1213,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -1436,16 +1306,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -1539,16 +1399,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -1642,16 +1492,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -1745,16 +1585,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -1848,16 +1678,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -1951,16 +1771,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -2054,16 +1864,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -2157,16 +1957,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -2259,16 +2049,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -2362,16 +2142,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -2465,16 +2235,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -2568,16 +2328,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -2671,16 +2421,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -2774,16 +2514,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -2876,16 +2606,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -2979,16 +2699,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -3086,16 +2796,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -3194,16 +2894,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -3297,16 +2987,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -3400,16 +3080,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -3503,16 +3173,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -3600,16 +3260,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -3703,16 +3353,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -3806,16 +3446,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -3909,16 +3539,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -4012,16 +3632,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -4115,16 +3725,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -4218,16 +3818,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -4320,16 +3910,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -4432,16 +4012,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -4529,16 +4099,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -4626,16 +4186,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -4728,16 +4278,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -4830,16 +4370,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -4926,16 +4456,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -5022,16 +4542,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -5118,16 +4628,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -5214,16 +4714,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -5313,16 +4803,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -5412,16 +4892,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -5508,16 +4978,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -5604,16 +5064,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -5700,16 +5150,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -5796,16 +5236,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -5892,16 +5322,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -5994,16 +5414,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -6096,16 +5506,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -6198,16 +5598,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -6294,16 +5684,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -6390,16 +5770,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -6486,16 +5856,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -6582,16 +5942,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -6684,16 +6034,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -6786,16 +6126,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -6882,16 +6212,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -6978,16 +6298,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -7074,16 +6384,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -7170,16 +6470,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -7273,16 +6563,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -7376,16 +6656,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -7478,16 +6748,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -7581,16 +6841,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -7684,16 +6934,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -7787,16 +7027,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -7890,16 +7120,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -7993,16 +7213,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -8096,16 +7306,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -8199,16 +7399,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -8302,16 +7492,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -8402,16 +7582,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -8502,16 +7672,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -8605,16 +7765,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -8708,16 +7858,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -8811,16 +7951,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -8914,16 +8044,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -9017,16 +8137,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -9120,16 +8230,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -9222,16 +8322,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -9324,16 +8414,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -9423,16 +8503,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -9522,16 +8592,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -9624,16 +8684,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -9726,16 +8776,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -9823,16 +8863,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -9920,16 +8950,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -10023,16 +9043,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -10125,16 +9135,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -10227,16 +9227,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -10329,16 +9319,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -10431,16 +9411,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -10532,16 +9502,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -10634,16 +9594,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -10736,16 +9686,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -10838,16 +9778,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -10940,16 +9870,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -11042,16 +9962,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -11144,16 +10054,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -11244,16 +10144,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -11345,16 +10235,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -11448,16 +10328,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -11551,16 +10421,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -11654,16 +10514,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -11761,16 +10611,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -11864,16 +10704,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -11966,16 +10796,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -12068,16 +10888,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -12171,16 +10981,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -12274,16 +11074,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -12376,16 +11166,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -12478,16 +11258,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -12583,16 +11353,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -12688,16 +11448,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -12791,16 +11541,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -12894,16 +11634,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -12997,16 +11727,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -13099,16 +11819,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -13202,16 +11912,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -13305,16 +12005,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -13401,16 +12091,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -13498,16 +12178,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -13595,16 +12265,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -13692,16 +12352,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -13795,16 +12445,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -13892,16 +12532,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -13989,16 +12619,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -14086,16 +12706,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -14183,16 +12793,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -14286,16 +12886,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -14383,16 +12973,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -14480,16 +13060,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -14577,16 +13147,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -14674,16 +13234,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -14777,16 +13327,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -14880,16 +13420,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -14983,16 +13513,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -15086,16 +13606,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -15189,16 +13699,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -15285,16 +13785,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -15388,16 +13878,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -15490,16 +13970,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -15594,16 +14064,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -15697,16 +14157,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -15800,16 +14250,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -15903,16 +14343,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -16006,16 +14436,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -16102,16 +14522,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -16205,16 +14615,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -16307,16 +14707,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -16410,16 +14800,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -16513,16 +14893,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -16615,16 +14985,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -16717,16 +15077,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -16817,16 +15167,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -16917,16 +15257,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -17017,16 +15347,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -17118,16 +15438,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -17217,16 +15527,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -17316,16 +15616,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -17414,16 +15704,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -17510,16 +15790,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -17607,16 +15877,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -17704,16 +15964,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -17801,16 +16051,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -17898,16 +16138,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -17998,16 +16228,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -18095,16 +16315,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -18192,16 +16402,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -18289,16 +16489,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -18386,16 +16576,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -18483,16 +16663,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -18580,16 +16750,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -18680,16 +16840,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -18777,16 +16927,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -18873,16 +17013,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -18969,16 +17099,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -19065,16 +17185,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -19164,16 +17274,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -19263,16 +17363,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -19359,16 +17449,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -19455,16 +17535,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -19551,16 +17621,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -19647,16 +17707,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -19743,16 +17793,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -19839,16 +17879,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -19935,16 +17965,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -20038,16 +18058,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -20141,16 +18151,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -20243,16 +18243,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -20345,16 +18335,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -20447,16 +18427,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -20548,16 +18518,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -20651,16 +18611,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -20754,16 +18704,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -20857,16 +18797,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -20959,16 +18889,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -21061,16 +18981,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -21166,16 +19076,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -21268,16 +19168,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -21372,16 +19262,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -21477,16 +19357,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -21581,16 +19451,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -21685,16 +19545,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -21790,16 +19640,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -21894,16 +19734,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -21995,16 +19825,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -22092,16 +19912,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -22189,16 +19999,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -22286,16 +20086,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -22383,16 +20173,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -22480,16 +20260,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -22577,16 +20347,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -22674,16 +20434,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -22771,16 +20521,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -22868,16 +20608,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -22965,16 +20695,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -23062,16 +20782,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -23159,16 +20869,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -23256,16 +20956,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -23352,16 +21042,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -23449,16 +21129,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -23546,16 +21216,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -23643,16 +21303,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -23740,16 +21390,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -23837,16 +21477,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -23935,16 +21565,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -24033,16 +21653,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -24131,16 +21741,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -24229,16 +21829,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -24326,16 +21916,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -24422,16 +22002,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -24519,16 +22089,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -24616,16 +22176,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -24713,16 +22263,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -24810,16 +22350,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -24907,16 +22437,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -25003,16 +22523,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -25100,16 +22610,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -25197,16 +22697,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -25294,16 +22784,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -25395,16 +22875,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -25496,16 +22966,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -25598,16 +23058,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -25700,16 +23150,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -25802,16 +23242,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -25904,16 +23334,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -26006,16 +23426,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -26109,16 +23519,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -26212,16 +23612,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -26315,16 +23705,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -26416,16 +23796,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -26517,16 +23887,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -26619,16 +23979,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -26720,16 +24070,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -26821,16 +24161,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -26922,16 +24252,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -27023,16 +24343,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -27124,16 +24434,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -27226,16 +24526,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -27327,16 +24617,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -27430,16 +24710,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -27527,16 +24797,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -27624,16 +24884,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -27721,16 +24971,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -27818,16 +25058,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -27915,16 +25145,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -28012,16 +25232,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -28109,16 +25319,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -28206,16 +25406,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -28303,16 +25493,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -28400,16 +25580,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -28503,16 +25673,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -28600,16 +25760,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -28701,16 +25851,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -28802,16 +25942,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -28897,16 +26027,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -28993,16 +26113,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -29089,16 +26199,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -29191,16 +26291,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -29288,16 +26378,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -29385,16 +26465,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -29482,16 +26552,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -29584,16 +26644,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -29686,16 +26736,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -29788,16 +26828,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -29891,16 +26921,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -29993,16 +27013,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -30095,16 +27105,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -30191,16 +27191,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -30294,16 +27284,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -30391,16 +27371,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -30494,16 +27464,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -30591,16 +27551,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -30693,16 +27643,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -30795,16 +27735,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -30898,16 +27828,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -31001,16 +27921,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -31109,16 +28019,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -31211,16 +28111,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -31313,16 +28203,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -31416,16 +28296,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -31519,16 +28389,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -31628,16 +28488,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -31737,16 +28587,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -31840,16 +28680,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -31943,16 +28773,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -32046,16 +28866,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -32149,16 +28959,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -32252,16 +29052,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -32355,16 +29145,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -32458,16 +29238,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -32561,16 +29331,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -32660,16 +29420,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -32763,16 +29513,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -32865,16 +29605,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -32968,16 +29698,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -33071,16 +29791,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -33174,16 +29884,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -33277,16 +29977,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -33380,16 +30070,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -33483,16 +30163,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -33586,16 +30256,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -33687,16 +30347,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -33790,16 +30440,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -33893,16 +30533,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -33996,16 +30626,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -34098,16 +30718,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -34201,16 +30811,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -34304,16 +30904,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -34498,16 +31088,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -34600,16 +31180,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -34702,16 +31272,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -34805,16 +31365,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -34908,16 +31458,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -35011,16 +31551,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -35113,16 +31643,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -35215,16 +31735,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -35317,16 +31827,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -35420,16 +31920,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -35523,16 +32013,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -35625,16 +32105,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -35727,16 +32197,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -35829,16 +32289,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -35931,16 +32381,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -36033,16 +32473,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -36135,16 +32565,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -36237,16 +32657,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -36341,16 +32751,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -36446,16 +32846,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -36548,16 +32938,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -36650,16 +33030,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -36752,16 +33122,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -36854,16 +33214,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -36957,16 +33307,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -37060,16 +33400,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -37165,16 +33495,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -37267,16 +33587,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -37369,16 +33679,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -37471,16 +33771,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -37573,16 +33863,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -37675,16 +33955,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -37776,16 +34046,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -37879,16 +34139,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -37982,16 +34232,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -38087,16 +34327,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -38184,16 +34414,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -38288,16 +34508,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -38392,16 +34602,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -38496,16 +34696,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -38609,16 +34799,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -38713,16 +34893,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -38817,16 +34987,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -38921,16 +35081,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -39025,16 +35175,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -39129,16 +35269,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -39233,16 +35363,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -39337,16 +35457,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -39441,16 +35551,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -39545,16 +35645,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -39649,16 +35739,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -39776,16 +35856,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -39878,16 +35948,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -39980,16 +36040,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -40084,16 +36134,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -40186,16 +36226,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -40288,16 +36318,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -40391,16 +36411,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -40494,16 +36504,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -40591,16 +36591,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -40688,16 +36678,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -40785,16 +36765,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -40882,16 +36852,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -40984,16 +36944,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -41086,16 +37036,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -41188,16 +37128,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -41321,16 +37251,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -41439,16 +37359,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -41541,16 +37451,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -41644,16 +37544,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -41747,16 +37637,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -41849,16 +37729,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -41951,16 +37821,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -42053,16 +37913,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -42155,16 +38005,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -42253,16 +38093,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -42351,16 +38181,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -42453,16 +38273,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -42562,16 +38372,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -42664,16 +38464,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -42769,16 +38559,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -42871,16 +38651,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -42973,16 +38743,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -43075,16 +38835,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -43184,16 +38934,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -43285,16 +39025,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -43386,16 +39116,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -43488,16 +39208,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -43597,16 +39307,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -43700,16 +39400,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -43802,16 +39492,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -43898,16 +39578,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -44000,16 +39670,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -44102,16 +39762,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -44204,16 +39854,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -44308,16 +39948,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -44417,16 +40047,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -44519,16 +40139,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -44621,16 +40231,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -44723,16 +40323,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -44825,16 +40415,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -44927,16 +40507,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -45029,16 +40599,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -45130,16 +40690,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -45231,16 +40781,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -45332,16 +40872,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -45435,16 +40965,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -45536,16 +41056,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -45638,16 +41148,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -45740,16 +41240,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -45842,16 +41332,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -45944,16 +41424,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -46046,16 +41516,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -46149,16 +41609,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -46252,16 +41702,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -46354,16 +41794,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -46451,16 +41881,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -46554,16 +41974,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -46657,16 +42067,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -46760,16 +42160,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -46863,16 +42253,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -46960,16 +42340,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -47057,16 +42427,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -47157,16 +42517,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -47254,16 +42604,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -47354,16 +42694,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -47451,16 +42781,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -47548,16 +42868,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -47645,16 +42955,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -47745,16 +43045,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -47845,16 +43135,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -47945,16 +43225,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -48045,16 +43315,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -48144,16 +43404,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -48243,16 +43493,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -48339,16 +43579,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -48441,16 +43671,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -48543,16 +43763,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -48651,16 +43861,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -48751,16 +43951,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -48851,16 +44041,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -48950,16 +44130,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -49052,16 +44222,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -49152,16 +44312,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -49252,16 +44402,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -49351,16 +44491,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -49450,16 +44580,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -49549,16 +44669,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -49649,16 +44759,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -49751,16 +44851,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -49853,16 +44943,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -49955,16 +45035,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -50057,16 +45127,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -50159,16 +45219,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -50261,16 +45311,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -50363,16 +45403,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -50465,16 +45495,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -50567,16 +45587,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -50669,16 +45679,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -50771,16 +45771,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -50873,16 +45863,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -50976,16 +45956,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -51070,16 +46040,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -51173,16 +46133,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -51276,16 +46226,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -51379,16 +46319,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -51482,16 +46412,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -51584,16 +46504,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -51685,16 +46595,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -51786,16 +46686,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -51889,16 +46779,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -51991,16 +46871,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -52093,16 +46963,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -52198,16 +47058,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -52303,16 +47153,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -52404,16 +47244,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -52505,16 +47335,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -52607,16 +47427,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -52709,16 +47519,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -52811,16 +47611,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -52913,16 +47703,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -53015,16 +47795,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -53117,16 +47887,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -53219,16 +47979,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -53321,16 +48071,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -53423,16 +48163,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -53525,16 +48255,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -53627,16 +48347,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -53724,16 +48434,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -53821,16 +48521,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -53918,16 +48608,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -54015,16 +48695,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -54124,16 +48794,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -54226,16 +48886,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -54328,16 +48978,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -54430,16 +49070,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -54531,16 +49161,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -54632,16 +49252,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -54734,16 +49344,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -54835,16 +49435,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -54937,16 +49527,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -55039,16 +49619,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -55141,16 +49711,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -55243,16 +49803,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -55340,16 +49890,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -55437,16 +49977,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -55534,16 +50064,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -55636,16 +50156,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -55738,16 +50248,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -55857,16 +50357,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -55960,16 +50450,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -56063,16 +50543,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -56166,16 +50636,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -56269,16 +50729,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -56372,16 +50822,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -59194,16 +53634,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_ci_test_results"
@@ -59370,16 +53800,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -59483,16 +53903,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -59596,16 +54006,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -59709,16 +54109,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -59822,16 +54212,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -59935,16 +54315,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -60048,16 +54418,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -60161,16 +54521,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -60288,16 +54638,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -60401,16 +54741,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -60514,16 +54844,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -60627,16 +54947,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -60740,16 +55050,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -60853,16 +55153,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -60966,16 +55256,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -61087,16 +55367,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -61201,16 +55471,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -61314,16 +55574,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -61428,16 +55678,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -61541,16 +55781,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -61654,16 +55884,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -61767,16 +55987,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -61880,16 +56090,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -61997,16 +56197,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -62114,16 +56304,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -62227,16 +56407,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -62341,16 +56511,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -62454,16 +56614,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -62568,16 +56718,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -62681,16 +56821,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -62794,16 +56924,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -62907,16 +57027,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -63020,16 +57130,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -63133,16 +57233,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -63246,16 +57336,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -63359,16 +57439,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -63472,16 +57542,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -63585,16 +57645,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -63698,16 +57748,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -63811,16 +57851,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -63924,16 +57954,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -64037,16 +58057,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -64150,16 +58160,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -64263,16 +58263,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -64377,16 +58367,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -64490,16 +58470,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -64603,16 +58573,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -64717,16 +58677,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -64830,16 +58780,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -64943,16 +58883,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -65056,16 +58986,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -65168,16 +59088,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -65281,16 +59191,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -65394,16 +59294,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -65507,16 +59397,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -65620,16 +59500,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -65730,16 +59600,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -65869,16 +59729,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -65990,16 +59840,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -66102,16 +59942,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -66215,16 +60045,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -66327,16 +60147,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -66440,16 +60250,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -66553,16 +60353,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -66666,16 +60456,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -66778,16 +60558,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -66891,16 +60661,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -67003,16 +60763,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -67116,16 +60866,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -67228,16 +60968,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -67341,16 +61071,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -67454,16 +61174,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -67566,16 +61276,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -67677,16 +61377,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -67787,16 +61477,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -67897,16 +61577,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -68008,16 +61678,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -68119,16 +61779,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -68230,16 +61880,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -68341,16 +61981,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -68454,16 +62084,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -68567,16 +62187,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -68680,16 +62290,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -68793,16 +62393,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -68906,16 +62496,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -69019,16 +62599,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -69132,16 +62702,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -69245,16 +62805,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -69358,16 +62908,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -69471,16 +63011,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -69584,16 +63114,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -69696,16 +63216,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -69808,16 +63318,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -69920,16 +63420,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -70032,16 +63522,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -70141,16 +63621,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -70250,16 +63720,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -70359,16 +63819,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -70468,16 +63918,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -70577,16 +64017,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -70686,16 +64116,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -70795,16 +64215,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -70904,16 +64314,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -71013,16 +64413,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -71122,16 +64512,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -71231,16 +64611,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -71340,16 +64710,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -71449,16 +64809,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -71558,16 +64908,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -71667,16 +65007,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -71776,16 +65106,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -71885,16 +65205,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -71994,16 +65304,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -72103,16 +65403,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -72212,16 +65502,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -72321,16 +65601,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -72430,16 +65700,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -72539,16 +65799,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -72648,16 +65898,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -72757,16 +65997,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -72866,16 +66096,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -72973,16 +66193,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -73080,16 +66290,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -73187,16 +66387,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -73294,16 +66484,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -73401,16 +66581,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -73508,16 +66678,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -73615,16 +66775,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -73722,16 +66872,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -73829,16 +66969,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -73936,16 +67066,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -74043,16 +67163,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -74150,16 +67260,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -74257,16 +67357,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -74366,16 +67456,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -74475,16 +67555,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -74584,16 +67654,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -74693,16 +67753,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -74802,16 +67852,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -74911,16 +67951,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -75020,16 +68050,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -75129,16 +68149,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -75238,16 +68248,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -75347,16 +68347,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -75456,16 +68446,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -75565,16 +68545,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -75674,16 +68644,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -75783,16 +68743,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -75892,16 +68842,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -76001,16 +68941,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -76108,16 +69038,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -76215,16 +69135,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -76324,16 +69234,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -76436,16 +69336,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -76551,16 +69441,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -76674,16 +69554,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -76789,16 +69659,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -76912,16 +69772,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -77027,16 +69877,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -77142,16 +69982,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -77257,16 +70087,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -77379,16 +70199,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -77494,16 +70304,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -77609,16 +70409,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -77724,16 +70514,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -77839,16 +70619,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -77951,16 +70721,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -78063,16 +70823,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -78176,16 +70926,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -78289,16 +71029,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -78405,16 +71135,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -78518,16 +71238,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -78631,16 +71341,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -78744,16 +71444,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -78857,16 +71547,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -78970,16 +71650,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -79083,16 +71753,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -79197,16 +71857,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -79310,16 +71960,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -79423,16 +72063,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -79536,16 +72166,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -79649,16 +72269,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -79762,16 +72372,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -79875,16 +72475,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -79984,16 +72574,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -80097,16 +72677,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -80209,16 +72779,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -80322,16 +72882,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -80435,16 +72985,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -80552,16 +73092,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -80672,16 +73202,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -80786,16 +73306,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -80900,16 +73410,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -81011,16 +73511,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -81124,16 +73614,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -81237,16 +73717,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -81350,16 +73820,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -81457,16 +73917,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -81570,16 +74020,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -81683,16 +74123,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -81797,16 +74227,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -81910,16 +74330,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -82023,16 +74433,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -82135,16 +74535,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -82248,16 +74638,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -82361,16 +74741,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -82474,16 +74844,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -82586,16 +74946,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -82699,16 +75049,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -82819,16 +75159,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -82938,16 +75268,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -83054,16 +75374,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -83170,16 +75480,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -83286,16 +75586,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -83396,16 +75686,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -83506,16 +75786,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -83616,16 +75886,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -83726,16 +75986,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -83840,16 +76090,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -83953,16 +76193,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -84066,16 +76296,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -84179,16 +76399,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -84292,16 +76502,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -84405,16 +76605,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -84519,16 +76709,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -84632,16 +76812,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -84745,16 +76915,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -84858,16 +77018,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -84971,16 +77121,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -85085,16 +77225,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -85198,16 +77328,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -85312,16 +77432,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -85426,16 +77536,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -85539,16 +77639,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -85652,16 +77742,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -85765,16 +77845,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -85882,16 +77952,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -85995,16 +78055,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -86112,16 +78162,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -86226,16 +78266,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -86339,16 +78369,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -86452,16 +78472,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -86565,16 +78575,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -86678,16 +78678,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -86791,16 +78781,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -86904,16 +78884,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -87016,16 +78986,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -87123,16 +79083,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -87236,16 +79186,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -87347,16 +79287,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -87458,16 +79388,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -87570,16 +79490,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -87680,16 +79590,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -87791,16 +79691,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -87901,16 +79791,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -88012,16 +79892,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -88127,16 +79997,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -88242,16 +80102,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -88349,16 +80199,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -88459,16 +80299,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -88569,16 +80399,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -88680,16 +80500,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -88791,16 +80601,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -88902,16 +80702,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -89013,16 +80803,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -89124,16 +80904,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -89235,16 +81005,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -89346,16 +81106,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -89457,16 +81207,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -89568,16 +81308,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -89679,16 +81409,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -89790,16 +81510,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -89901,16 +81611,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -90013,16 +81713,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -90125,16 +81815,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -90236,16 +81916,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -90347,16 +82017,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -90457,16 +82117,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -90563,16 +82213,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -90669,16 +82309,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -90782,16 +82412,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -90895,16 +82515,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -91008,16 +82618,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -91121,16 +82721,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -91234,16 +82824,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -91347,16 +82927,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -91460,16 +83030,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -91573,16 +83133,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -91686,16 +83236,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -91799,16 +83339,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -91913,16 +83443,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -92030,16 +83550,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -92141,16 +83651,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -92253,16 +83753,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -92366,16 +83856,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -92476,16 +83956,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -92586,16 +84056,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -92696,16 +84156,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -92806,16 +84256,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -92916,16 +84356,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -93026,16 +84456,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -93136,16 +84556,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -93249,16 +84659,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -93362,16 +84762,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -93475,16 +84865,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -93593,16 +84973,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -93706,16 +85076,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -93819,16 +85179,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -93932,16 +85282,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -94051,16 +85391,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -94164,16 +85494,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -94285,16 +85605,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -94397,16 +85707,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -94513,16 +85813,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -94626,16 +85916,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -94739,16 +86019,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -94853,16 +86123,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -94966,16 +86226,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -95080,16 +86330,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -95193,16 +86433,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -95306,16 +86536,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -95419,16 +86639,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -95532,16 +86742,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -95645,16 +86845,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -95751,16 +86941,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
@@ -95864,16 +87044,6 @@
           test_results {}
         }
         bq_exports {
-          project: "luci-resultdb"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
           project: "chrome-luci-data"
           dataset: "chromium"
           table: "gpu_try_test_results"
diff --git a/infra/config/lib/ci.star b/infra/config/lib/ci.star
index fe01dc3..2fd4af9 100644
--- a/infra/config/lib/ci.star
+++ b/infra/config/lib/ci.star
@@ -64,7 +64,7 @@
         Will always upload to the following tables in addition to any tables
         specified by the list's elements:
           luci-resultdb.chromium.ci_test_results
-          luci-resultdb.chromium.gpu_ci_test_results
+          chrome-luci-data.chromium.gpu_ci_test_results
       experiments - a dict of experiment name to the percentage chance (0-100)
         that it will apply to builds generated from this builder.
     """
@@ -82,17 +82,6 @@
             bq_table = "luci-resultdb.chromium.ci_test_results",
         ),
         resultdb.export_test_results(
-            bq_table = "luci-resultdb.chromium.gpu_ci_test_results",
-            predicate = resultdb.test_result_predicate(
-                # Only match the telemetry_gpu_integration_test and
-                # fuchsia_telemetry_gpu_integration_test targets.
-                # Android Telemetry targets also have a suffix added to the end
-                # denoting the binary that's included, so also catch those with
-                # [^/]*.
-                test_id_regexp = "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+",
-            ),
-        ),
-        resultdb.export_test_results(
             bq_table = "chrome-luci-data.chromium.gpu_ci_test_results",
             predicate = resultdb.test_result_predicate(
                 # Only match the telemetry_gpu_integration_test and
diff --git a/infra/config/lib/try.star b/infra/config/lib/try.star
index 5bb0bf6..95b60bf 100644
--- a/infra/config/lib/try.star
+++ b/infra/config/lib/try.star
@@ -107,7 +107,7 @@
         Will always upload to the following tables in addition to any tables
         specified by the list's elements:
           luci-resultdb.chromium.try_test_results
-          luci-resultdb.chromium.gpu_try_test_results
+          chrome-luci-data.gpu_try_test_results
     """
     if not branches.matches(branch_selector):
         return
@@ -122,17 +122,6 @@
             bq_table = "luci-resultdb.chromium.try_test_results",
         ),
         resultdb.export_test_results(
-            bq_table = "luci-resultdb.chromium.gpu_try_test_results",
-            predicate = resultdb.test_result_predicate(
-                # Only match the telemetry_gpu_integration_test and
-                # fuchsia_telemetry_gpu_integration_test targets.
-                # Android Telemetry targets also have a suffix added to the end
-                # denoting the binary that's included, so also catch those with
-                # [^/]*.
-                test_id_regexp = "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test[^/]*/.+",
-            ),
-        ),
-        resultdb.export_test_results(
             bq_table = "chrome-luci-data.chromium.gpu_try_test_results",
             predicate = resultdb.test_result_predicate(
                 # Only match the telemetry_gpu_integration_test and
diff --git a/ios/build/bots/scripts/shard_util.py b/ios/build/bots/scripts/shard_util.py
index 8a4aa6c..f1dd580 100644
--- a/ios/build/bots/scripts/shard_util.py
+++ b/ios/build/bots/scripts/shard_util.py
@@ -31,7 +31,8 @@
 # of all EarlGrey/EarlGrey2 test classes. 'appConfigurationForTestCase' is a
 # class method. They have no real tests.
 IGNORED_CLASSES = [
-    'BaseEarlGreyTestCase', 'ChromeTestCase', 'appConfigurationForTestCase'
+    'BaseEarlGreyTestCase', 'ChromeTestCase', 'appConfigurationForTestCase',
+    'setUpForTestCase'
 ]
 
 
diff --git a/ios/build/bots/scripts/shard_util_test.py b/ios/build/bots/scripts/shard_util_test.py
index 597f13d..c4936be7 100644
--- a/ios/build/bots/scripts/shard_util_test.py
+++ b/ios/build/bots/scripts/shard_util_test.py
@@ -61,10 +61,11 @@
     'types 0x1064cc3e1 v16@0:8', 'name 0x1075e6887 testE',
     'name 0x1075e6887 testF', 'baseProtocols 0x0',
     'name 0x1064b8438 ChromeTestCase', 'name 0x1064b8438 setUp',
-    'baseProtocols 0x0', 'name 0x1064b8438 ToolBarTestCase',
-    'name 0x1075e6887 testG', 'name 0x1075e6887 testH',
-    'name 0x1075e6887 DISABLED_testI', 'name 0x1075e6887 FLAKY_testJ',
-    'baseProtocols 0x0', 'version 0'
+    'baseProtocols 0x0', 'name 0x1064b8438 setUpForTestCase',
+    'name 0x1064b8438 testPort', 'baseProtocols 0x0',
+    'name 0x1064b8438 ToolBarTestCase', 'name 0x1075e6887 testG',
+    'name 0x1075e6887 testH', 'name 0x1075e6887 DISABLED_testI',
+    'name 0x1075e6887 FLAKY_testJ', 'baseProtocols 0x0', 'version 0'
 ])
 
 # Release app otool output format in Xcode 11.4 toolchain.
@@ -79,9 +80,10 @@
     '    types   0x1064cc3e1 v16@0:8', '    name    0x1075e6887 testE',
     '    name    0x1075e6887 testF', 'baseProtocols 0x0',
     '    name    0x1064b8438 ChromeTestCase', '    name    0x1064b8438 setUp',
-    'baseProtocols 0x0', '    name    0x1064b8438 ToolBarTestCase',
-    '    name    0x1075e6887 testG', '    name    0x1075e6887 testH',
-    '    name    0x1075e6893 DISABLED_testI',
+    'baseProtocols 0x0', '    name 0x1064b8438 setUpForTestCase',
+    '    name 0x1064b8438 testPort', 'baseProtocols 0x0',
+    '    name    0x1064b8438 ToolBarTestCase', '    name    0x1075e6887 testG',
+    '    name    0x1075e6887 testH', '    name    0x1075e6893 DISABLED_testI',
     '    name    0x1075e723f FLAKY_testJ', 'baseProtocols 0x0', 'version 0'
 ])
 
diff --git a/ios/build/bots/scripts/test_apps.py b/ios/build/bots/scripts/test_apps.py
index 4c186e9..7ca4541 100644
--- a/ios/build/bots/scripts/test_apps.py
+++ b/ios/build/bots/scripts/test_apps.py
@@ -219,7 +219,10 @@
     # Method names that starts with test* and also are in *TestCase classes
     # but they are not test-methods.
     # TODO(crbug.com/982435): Rename not test methods with test-suffix.
-    none_tests = ['ChromeTestCase/testServer', 'FindInPageTestCase/testURL']
+    non_test_prefixes = [
+        'ChromeTestCase/testServer', 'FindInPageTestCase/testURL',
+        'setUpForTestCase'
+    ]
     # TODO(crbug.com/1123681): Move all_tests to class var. Set all_tests,
     # disabled_tests values in initialization to avoid multiple calls to otool.
     all_tests = []
@@ -232,7 +235,8 @@
         self.release,
         enabled_tests_only=False):
       test_name = '%s/%s' % (test_class, test_method)
-      if (test_name not in none_tests and
+      if ((not any(
+          test_name.startswith(prefix) for prefix in non_test_prefixes)) and
           # |self.initial_included_tests| contains the tests to execute, which
           # may be a subset of all tests b/c of the iOS test sharding logic in
           # run.py. Filter by |self.initial_included_tests| if specified.
diff --git a/ios/build/bots/scripts/test_apps_test.py b/ios/build/bots/scripts/test_apps_test.py
index 15a8b73..dd64fac 100644
--- a/ios/build/bots/scripts/test_apps_test.py
+++ b/ios/build/bots/scripts/test_apps_test.py
@@ -3,6 +3,7 @@
 # found in the LICENSE file.
 """Unittests for test_apps.py."""
 
+from test_runner import TestRunner
 import mock
 import unittest
 
@@ -41,6 +42,24 @@
     self.assertEqual(test_apps.get_gtest_filter(tests, invert=True), expected)
 
 
+class EgtestsAppGetAllTestsTest(test_runner_test.TestCase):
+  """Tests to get_all_tests methods of EgtestsApp."""
+
+  @mock.patch('os.path.exists', return_value=True)
+  @mock.patch('shard_util.fetch_test_names')
+  def testNonTestsFiltered(self, mock_fetch, _):
+    mock_fetch.return_value = [
+        ('ATestCase', 'testB'),
+        ('setUpForTestCase', 'testForStartup'),
+        ('ChromeTestCase', 'testServer'),
+        ('FindInPageTestCase', 'testURL'),
+        ('CTestCase', 'testD'),
+    ]
+    test_app = test_apps.EgtestsApp(_TEST_APP_PATH)
+    tests = test_app.get_all_tests()
+    self.assertEqual(set(tests), set(['ATestCase/testB', 'CTestCase/testD']))
+
+
 class DeviceXCTestUnitTestsAppTest(test_runner_test.TestCase):
   """Tests to test methods of SimulatorXCTestUnitTestsApp."""
 
diff --git a/ios/build/bots/scripts/xcodebuild_runner.py b/ios/build/bots/scripts/xcodebuild_runner.py
index b0cde623..7eea3de 100644
--- a/ios/build/bots/scripts/xcodebuild_runner.py
+++ b/ios/build/bots/scripts/xcodebuild_runner.py
@@ -39,6 +39,15 @@
     super(LaunchCommandPoolCreationError, self).__init__(message)
 
 
+def _tests_decided_at_runtime(app_name):
+  """Return if tests in app are selected at runtime by app_name.
+
+  This works for suites defined in chromium infra.
+  """
+  suite_name_fragments = ['ios_chrome_multitasking_eg', '_flaky_eg']
+  return any(fragment in app_name for fragment in suite_name_fragments)
+
+
 def erase_all_simulators(path=None):
   """Erases all simulator devices.
 
@@ -218,19 +227,32 @@
         break
 
       # Exclude passed tests in next test attempt.
-      passed_tests = passed_tests.union(
-          set(self.test_results['attempts'][-1]['passed']))
-      self.egtests_app.included_tests = list(running_tests - passed_tests)
+      passed_tests = passed_tests | set(
+          self.test_results['attempts'][-1]['passed'])
+      tests_to_include = set()
+      # |running_tests| are compiled tests in target intersecting with swarming
+      # sharding. For some suites, they are more than what's needed to run.
+      if not _tests_decided_at_runtime(self.egtests_app.test_app_path):
+        tests_to_include = tests_to_include | (running_tests - passed_tests)
+      # Add failed tests from last round for runtime decided suites and device
+      # suites.
+      tests_to_include = tests_to_include | (
+          set(self.test_results['attempts'][-1]['failed'].keys()) -
+          cancelled_statuses)
+      self.egtests_app.included_tests = list(tests_to_include)
 
       # crbug.com/987664 - for the case when
       # all tests passed but build was interrupted,
       # passed tests are equal to tests to run.
-      if passed_tests == running_tests:
-        for status in cancelled_statuses:
-          failure = self.test_results['attempts'][-1]['failed'].pop(
-              status, None)
-          if failure:
-            LOGGER.info('Failure for passed tests %s: %s' % (status, failure))
+      if passed_tests == running_tests or not self.egtests_app.included_tests:
+        # Keep cancelled status for these, since some tests might be skipped
+        # don't appear in test results.
+        if not _tests_decided_at_runtime(self.egtests_app.test_app_path):
+          for status in cancelled_statuses:
+            failure = self.test_results['attempts'][-1]['failed'].pop(
+                status, None)
+            if failure:
+              LOGGER.info('Failure for passed tests %s: %s' % (status, failure))
         break
 
       # If tests are not completed(interrupted or did not start)
@@ -243,7 +265,10 @@
       # should be confined in this method. Real tests affected by these statuses
       # will be marked timeout in results.
       for status in cancelled_statuses:
-        self.test_results['attempts'][-1]['failed'].pop(status, None)
+        # Keep cancelled status for these, since some tests might be skipped
+        # don't appear in test results.
+        if not _tests_decided_at_runtime(self.egtests_app.test_app_path):
+          self.test_results['attempts'][-1]['failed'].pop(status, None)
 
       if (not cancelled_attempt
           # If need to re-run less than 20 tests, 1 shard should be enough.
@@ -428,8 +453,7 @@
     # from otool output is incorrect. For multitasking or any flaky test suite,
     # the list contains more tests than what actually runs.
     if (self.__class__.__name__ != 'DeviceXcodeTestRunner' and
-        'ios_chrome_multitasking_eg' not in self.app_path and
-        '_flaky_eg' not in self.app_path):
+        not _tests_decided_at_runtime(self.app_path)):
       aborted_tests = list(all_tests_to_run - set(self.logs['failed tests']) -
                            set(self.logs['passed tests']))
     aborted_tests.sort()
diff --git a/ios/chrome/browser/flags/about_flags.mm b/ios/chrome/browser/flags/about_flags.mm
index 58a431fd..c5633a8 100644
--- a/ios/chrome/browser/flags/about_flags.mm
+++ b/ios/chrome/browser/flags/about_flags.mm
@@ -794,6 +794,12 @@
      flag_descriptions::kWaitThresholdMillisecondsForCapabilitiesApiDescription,
      flags_ui::kOsIos,
      MULTI_VALUE_TYPE(kWaitThresholdMillisecondsForCapabilitiesApiChoices)},
+    {"autofill-fill-merchant-promo-code-fields",
+     flag_descriptions::kAutofillFillMerchantPromoCodeFieldsName,
+     flag_descriptions::kAutofillFillMerchantPromoCodeFieldsDescription,
+     flags_ui::kOsIos,
+     FEATURE_VALUE_TYPE(
+         autofill::features::kAutofillFillMerchantPromoCodeFields)},
 };
 
 bool SkipConditionalFeatureEntry(const flags_ui::FeatureEntry& entry) {
diff --git a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc
index 475cec9..7093ecf 100644
--- a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc
+++ b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc
@@ -23,6 +23,12 @@
     "When enabled, offer data will be retrieved during downstream and shown in "
     "the dropdown list.";
 
+const char kAutofillFillMerchantPromoCodeFieldsName[] =
+    "Enable Autofill of promo code fields in forms";
+const char kAutofillFillMerchantPromoCodeFieldsDescription[] =
+    "When enabled, Autofill will attempt to fill merchant promo/coupon/gift "
+    "code fields when data is available.";
+
 const char kAutofillIOSDelayBetweenFieldsName[] = "Autofill delay";
 const char kAutofillIOSDelayBetweenFieldsDescription[] =
     "Delay between the different fields of a form being autofilled. In "
diff --git a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h
index fa76e395..c544a0c 100644
--- a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h
+++ b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h
@@ -19,6 +19,10 @@
 extern const char kAutofillEnableOffersInDownstreamName[];
 extern const char kAutofillEnableOffersInDownstreamDescription[];
 
+// Title and description for the flag to fill promo code fields with Autofill.
+extern const char kAutofillFillMerchantPromoCodeFieldsName[];
+extern const char kAutofillFillMerchantPromoCodeFieldsDescription[];
+
 // Title and description for the flag to control the autofill delay.
 extern const char kAutofillIOSDelayBetweenFieldsName[];
 extern const char kAutofillIOSDelayBetweenFieldsDescription[];
diff --git a/ios/chrome/browser/ui/authentication/BUILD.gn b/ios/chrome/browser/ui/authentication/BUILD.gn
index aa98765..5bf7ee2 100644
--- a/ios/chrome/browser/ui/authentication/BUILD.gn
+++ b/ios/chrome/browser/ui/authentication/BUILD.gn
@@ -190,21 +190,6 @@
   ]
 }
 
-source_set("internal+eg2") {
-  defines = [ "CHROME_EARL_GREY_2" ]
-  configs += [
-    "//build/config/compiler:enable_arc",
-    "//build/config/ios:xctest_config",
-  ]
-  testonly = true
-  visibility = [ ":*" ]
-  sources = [
-    "signin_earl_grey_app_interface.h",
-    "signin_earl_grey_app_interface_stub.mm",
-  ]
-  deps = [ "//ios/third_party/earl_grey2:test_lib" ]
-}
-
 source_set("eg_test_support+eg2") {
   defines = [ "CHROME_EARL_GREY_2" ]
   configs += [
@@ -215,13 +200,14 @@
   sources = [
     "signin_earl_grey.h",
     "signin_earl_grey.mm",
+    "signin_earl_grey_app_interface.h",
+    "signin_earl_grey_app_interface_stub.mm",
     "signin_earl_grey_ui.h",
     "signin_earl_grey_ui.mm",
     "signin_matchers.h",
     "signin_matchers.mm",
   ]
   deps = [
-    ":internal+eg2",
     "//base",
     "//base/test:test_support",
     "//ios/chrome/app/strings",
diff --git a/ios/chrome/browser/ui/authentication/signin/signin_coordinator_egtest.mm b/ios/chrome/browser/ui/authentication/signin/signin_coordinator_egtest.mm
index 57f6b2aa..837cb314 100644
--- a/ios/chrome/browser/ui/authentication/signin/signin_coordinator_egtest.mm
+++ b/ios/chrome/browser/ui/authentication/signin/signin_coordinator_egtest.mm
@@ -10,6 +10,7 @@
 #include "components/signin/public/base/account_consistency_method.h"
 #include "components/signin/public/base/signin_pref_names.h"
 #import "ios/chrome/browser/ui/authentication/signin_earl_grey.h"
+#import "ios/chrome/browser/ui/authentication/signin_earl_grey_app_interface.h"
 #import "ios/chrome/browser/ui/authentication/signin_earl_grey_ui.h"
 #import "ios/chrome/browser/ui/authentication/signin_matchers.h"
 #import "ios/chrome/browser/ui/authentication/views/views_constants.h"
@@ -410,7 +411,8 @@
 // app.
 - (void)testInterruptReauthSignin {
   FakeChromeIdentity* fakeIdentity = [SigninEarlGrey fakeIdentity1];
-  [SigninEarlGrey triggerReauthDialogWithFakeIdentity:fakeIdentity];
+  [SigninEarlGreyAppInterface triggerReauthDialogWithFakeIdentity:fakeIdentity];
+  [ChromeEarlGreyUI waitForAppToIdle];
   // Open the URL as if it was opened from another app.
   [ChromeEarlGrey simulateExternalAppURLOpening];
   [[EarlGrey selectElementWithMatcher:chrome_test_util::Omnibox()]
diff --git a/ios/chrome/browser/ui/authentication/signin_earl_grey.h b/ios/chrome/browser/ui/authentication/signin_earl_grey.h
index 138ba79f..310da51 100644
--- a/ios/chrome/browser/ui/authentication/signin_earl_grey.h
+++ b/ios/chrome/browser/ui/authentication/signin_earl_grey.h
@@ -57,11 +57,6 @@
 // Induces a GREYAssert if the Sync state does not match |enabled|.
 - (void)verifySyncUIEnabled:(BOOL)enabled;
 
-// Triggers the reauth dialog. This is done through SigninEarlGreyAppInterface,
-// with ShowSigninCommand sent to SceneController, without any UI interaction
-// to open the dialog.
-- (void)triggerReauthDialogWithFakeIdentity:(FakeChromeIdentity*)identity;
-
 @end
 
 #endif  // IOS_CHROME_BROWSER_UI_AUTHENTICATION_SIGNIN_EARL_GREY_H_
diff --git a/ios/chrome/browser/ui/authentication/signin_earl_grey.mm b/ios/chrome/browser/ui/authentication/signin_earl_grey.mm
index 42b41c9..f73b7db 100644
--- a/ios/chrome/browser/ui/authentication/signin_earl_grey.mm
+++ b/ios/chrome/browser/ui/authentication/signin_earl_grey.mm
@@ -112,9 +112,5 @@
       selectElementWithMatcher:GetSettingsGoogleSyncAndServicesCellMatcher]
       assertWithMatcher:grey_sufficientlyVisible()];
 }
-- (void)triggerReauthDialogWithFakeIdentity:(FakeChromeIdentity*)identity {
-  [SigninEarlGreyAppInterface triggerReauthDialogWithFakeIdentity:identity];
-  GREYWaitForAppToIdle(@"App failed to idle");
-}
 
 @end
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
index fdcdc35..698d6b3 100644
--- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-9af19f37b50d9fe0da1f599f9d694d837ba70abd
\ No newline at end of file
+29b0a86a5ac02dbed78e9147969a81af2161710e
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
index 7cc69b7..fdcc15e 100644
--- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-3a51332c77377868d5c8fda98ac23fb87835740f
\ No newline at end of file
+4de3fe78df5e02ff6e0a359dc5c1646b0f63ea22
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
index f48c9ce8..b2aa24bb 100644
--- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-159a4d20d793875b74d6cb2c11574b1980cb6299
\ No newline at end of file
+5dbed6584b490871529e1a854dd76a456312da25
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
index 76c10c75..a896c59 100644
--- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-3d0bfa21446f69d2714178344dc57c312e484f7d
\ No newline at end of file
+00e247c9b396117ee720f5b5cbe5fbfcc1816e2d
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
index cb9af5a..521bea8 100644
--- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-74dea7125d33d0692b245eeff38c7f947fe77c50
\ No newline at end of file
+a1095d8119d81e6f226dc31cd8caef6d045ec67e
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
index ccb44cb..959a3da 100644
--- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-b813a61bddbb15dc5ccf7c3b26fc6f51a5a98922
\ No newline at end of file
+ada79233739ef0e626be40ca1cc8fcd8a749b5fb
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
index 16d4491..da6b5e15 100644
--- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-80a93e77647176c7f3ad68434e2482c99a8f4148
\ No newline at end of file
+4e90ce0fb02b7dd4ea1583c6a20fbb0bce552444
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
index 4c4c851..1e181d8c 100644
--- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-6935c50839f8311fe26192154674caf69d827fee
\ No newline at end of file
+ba540df4ea6e27e1e52de24dbfe3ab561fc47dad
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
index a377b3a..cad0b793 100644
--- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-8f49c597cbddd8824c03357592603ff1d75dee3d
\ No newline at end of file
+ee8fcb0338fc52f9b06a74867cd3d06d7be30190
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
index 456508b..5ee761e4 100644
--- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-9dbcb734a39aa695905fe48c841f6975351e7259
\ No newline at end of file
+d8d5b008e7c3ef6d7e8ab1bf5472e69eb7ae6378
\ No newline at end of file
diff --git a/net/BUILD.gn b/net/BUILD.gn
index 792b186..11499cd8 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -410,6 +410,8 @@
     "cookies/cookie_monster_netlog_params.h",
     "cookies/cookie_options.cc",
     "cookies/cookie_options.h",
+    "cookies/cookie_partition_key.cc",
+    "cookies/cookie_partition_key.h",
     "cookies/cookie_store.cc",
     "cookies/cookie_store.h",
     "cookies/cookie_util.cc",
@@ -4189,6 +4191,7 @@
     "cookies/cookie_inclusion_status_unittest.cc",
     "cookies/cookie_monster_unittest.cc",
     "cookies/cookie_options_unittest.cc",
+    "cookies/cookie_partition_key_unittest.cc",
     "cookies/cookie_util_unittest.cc",
     "cookies/parsed_cookie_unittest.cc",
     "cookies/site_for_cookies_unittest.cc",
diff --git a/net/cookies/canonical_cookie.cc b/net/cookies/canonical_cookie.cc
index 3936de2..eeca896 100644
--- a/net/cookies/canonical_cookie.cc
+++ b/net/cookies/canonical_cookie.cc
@@ -348,21 +348,22 @@
 
 CanonicalCookie& CanonicalCookie::operator=(CanonicalCookie&& other) = default;
 
-CanonicalCookie::CanonicalCookie(std::string name,
-                                 std::string value,
-                                 std::string domain,
-                                 std::string path,
-                                 base::Time creation,
-                                 base::Time expiration,
-                                 base::Time last_access,
-                                 bool secure,
-                                 bool httponly,
-                                 CookieSameSite same_site,
-                                 CookiePriority priority,
-                                 bool same_party,
-                                 absl::optional<SchemefulSite> partition_key,
-                                 CookieSourceScheme source_scheme,
-                                 int source_port)
+CanonicalCookie::CanonicalCookie(
+    std::string name,
+    std::string value,
+    std::string domain,
+    std::string path,
+    base::Time creation,
+    base::Time expiration,
+    base::Time last_access,
+    bool secure,
+    bool httponly,
+    CookieSameSite same_site,
+    CookiePriority priority,
+    bool same_party,
+    absl::optional<CookiePartitionKey> partition_key,
+    CookieSourceScheme source_scheme,
+    int source_port)
     : name_(std::move(name)),
       value_(std::move(value)),
       domain_(std::move(domain)),
@@ -581,7 +582,7 @@
     CookieSameSite same_site,
     CookiePriority priority,
     bool same_party,
-    absl::optional<SchemefulSite> partition_key,
+    absl::optional<CookiePartitionKey> partition_key,
     CookieInclusionStatus* status) {
   // Put a pointer on the stack so the rest of the function can assign to it if
   // the default nullptr is passed in.
@@ -702,7 +703,7 @@
     CookieSameSite same_site,
     CookiePriority priority,
     bool same_party,
-    absl::optional<SchemefulSite> partition_key,
+    absl::optional<CookiePartitionKey> partition_key,
     CookieSourceScheme source_scheme,
     int source_port) {
   std::unique_ptr<CanonicalCookie> cc = base::WrapUnique(new CanonicalCookie(
@@ -728,7 +729,7 @@
     CookieSameSite same_site,
     CookiePriority priority,
     bool same_party,
-    absl::optional<SchemefulSite> partition_key,
+    absl::optional<CookiePartitionKey> partition_key,
     CookieSourceScheme source_scheme,
     int source_port) {
   return base::WrapUnique(new CanonicalCookie(
@@ -751,37 +752,6 @@
   }
 }
 
-bool CanonicalCookie::SerializePartitionKey(std::string& out) const {
-  if (!partition_key_) {
-    out = kEmptyCookiePartitionKey;
-    return true;
-  }
-  if (partition_key_->GetURL().SchemeIsFile()) {
-    out = partition_key_->SerializeFileSiteWithHost();
-    return true;
-  }
-  if (partition_key_->opaque())
-    return false;
-  out = partition_key_->Serialize();
-  return true;
-}
-
-// static
-bool CanonicalCookie::DeserializePartitionKey(
-    const std::string& in,
-    absl::optional<SchemefulSite>& out) {
-  if (in == kEmptyCookiePartitionKey) {
-    out = absl::nullopt;
-    return true;
-  }
-  auto schemeful_site = SchemefulSite::Deserialize(in);
-  // SchemefulSite is opaque if the input is invalid.
-  if (schemeful_site.opaque())
-    return false;
-  out = absl::make_optional(schemeful_site);
-  return true;
-}
-
 bool CanonicalCookie::IsEquivalentForSecureCookieMatching(
     const CanonicalCookie& secure_cookie) const {
   // Names must be the same
diff --git a/net/cookies/canonical_cookie.h b/net/cookies/canonical_cookie.h
index c5387be..3d1add3 100644
--- a/net/cookies/canonical_cookie.h
+++ b/net/cookies/canonical_cookie.h
@@ -13,11 +13,11 @@
 #include "base/gtest_prod_util.h"
 #include "base/time/time.h"
 #include "net/base/net_export.h"
-#include "net/base/schemeful_site.h"
 #include "net/cookies/cookie_access_result.h"
 #include "net/cookies/cookie_constants.h"
 #include "net/cookies/cookie_inclusion_status.h"
 #include "net/cookies/cookie_options.h"
+#include "net/cookies/cookie_partition_key.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 #include "url/third_party/mozilla/url_parse.h"
 
@@ -107,7 +107,7 @@
       CookieSameSite same_site,
       CookiePriority priority,
       bool same_party,
-      absl::optional<SchemefulSite> partition_key,
+      absl::optional<CookiePartitionKey> partition_key,
       CookieInclusionStatus* status = nullptr);
 
   // FromStorage is a factory method which is meant for creating a new
@@ -130,7 +130,7 @@
       CookieSameSite same_site,
       CookiePriority priority,
       bool same_party,
-      absl::optional<SchemefulSite> partition_key,
+      absl::optional<CookiePartitionKey> partition_key,
       CookieSourceScheme source_scheme,
       int source_port);
 
@@ -149,7 +149,7 @@
       CookieSameSite same_site,
       CookiePriority priority,
       bool same_party,
-      absl::optional<SchemefulSite> partition_key = absl::nullopt,
+      absl::optional<CookiePartitionKey> partition_key = absl::nullopt,
       CookieSourceScheme scheme_secure = CookieSourceScheme::kUnset,
       int source_port = url::PORT_UNSPECIFIED);
 
@@ -171,7 +171,7 @@
   CookiePriority Priority() const { return priority_; }
   bool IsSameParty() const { return same_party_; }
   bool IsPartitioned() const { return partition_key_.has_value(); }
-  const absl::optional<SchemefulSite>& PartitionKey() const {
+  const absl::optional<CookiePartitionKey>& PartitionKey() const {
     return partition_key_;
   }
 
@@ -396,7 +396,7 @@
                   CookieSameSite same_site,
                   CookiePriority priority,
                   bool same_party,
-                  absl::optional<SchemefulSite> partition_key,
+                  absl::optional<CookiePartitionKey> partition_key,
                   CookieSourceScheme scheme_secure = CookieSourceScheme::kUnset,
                   int source_port = url::PORT_UNSPECIFIED);
 
@@ -479,7 +479,7 @@
   // when the top-frame site matches the partition key.
   // If the partition key is non-null and opaque, this means the Partitioned
   // cookie was created on an opaque origin.
-  absl::optional<SchemefulSite> partition_key_;
+  absl::optional<CookiePartitionKey> partition_key_;
   CookieSourceScheme source_scheme_{CookieSourceScheme::kUnset};
   // This can be [0,65535], PORT_UNSPECIFIED, or PORT_INVALID.
   // PORT_UNSPECIFIED is used for cookies which already existed in the cookie
diff --git a/net/cookies/canonical_cookie_fuzzer.cc b/net/cookies/canonical_cookie_fuzzer.cc
index 9cee4da6..aa3bb25 100644
--- a/net/cookies/canonical_cookie_fuzzer.cc
+++ b/net/cookies/canonical_cookie_fuzzer.cc
@@ -53,8 +53,9 @@
           CookiePriority::COOKIE_PRIORITY_HIGH,
       });
 
-  auto partition_key = absl::make_optional<net::SchemefulSite>(
-      net::SchemefulSite(GURL(data_provider.ConsumeRandomLengthString(800))));
+  const auto partition_key = absl::make_optional<CookiePartitionKey>(
+      CookiePartitionKey::FromURLForTesting(
+          GURL(data_provider.ConsumeRandomLengthString(800))));
 
   const std::unique_ptr<const CanonicalCookie> sanitized_cookie =
       CanonicalCookie::CreateSanitizedCookie(
diff --git a/net/cookies/canonical_cookie_unittest.cc b/net/cookies/canonical_cookie_unittest.cc
index 49d50d9..50a3f67 100644
--- a/net/cookies/canonical_cookie_unittest.cc
+++ b/net/cookies/canonical_cookie_unittest.cc
@@ -69,7 +69,8 @@
       "A", "2", ".www.example.com", "/", current_time, base::Time(),
       base::Time(), false, false, CookieSameSite::NO_RESTRICTION,
       COOKIE_PRIORITY_DEFAULT, true,
-      absl::make_optional(net::SchemefulSite::Deserialize("https://foo.com")),
+      absl::make_optional(
+          CookiePartitionKey::FromURLForTesting(GURL("https://foo.com"))),
       CookieSourceScheme::kNonSecure, 65536);
   EXPECT_EQ("A", cookie2->Name());
   EXPECT_EQ("2", cookie2->Value());
@@ -553,79 +554,6 @@
   EXPECT_EQ(base::Time(), cookie->ExpiryDate());
 }
 
-TEST(CanonicalCookieTest, PartitionKeySerialization) {
-  // SerializePartitionKey: no parititon key
-  std::unique_ptr<CanonicalCookie> cookie =
-      CanonicalCookie::CreateUnsafeCookieForTesting(
-          "__Host-A", "B", "www.example.com", "/", base::Time::Now(),
-          base::Time::Now(), base::Time::Now(), /* secure */ true,
-          /* httponly */ false, CookieSameSite::UNSPECIFIED,
-          CookiePriority::COOKIE_PRIORITY_DEFAULT, /* sameparty */ false,
-          absl::nullopt);
-  std::string got;
-  EXPECT_TRUE(cookie->SerializePartitionKey(got));
-  EXPECT_EQ(net::kEmptyCookiePartitionKey, got);
-
-  // SerializePartitionKey: partition key present
-  cookie = CanonicalCookie::CreateUnsafeCookieForTesting(
-      "__Host-A", "B", "www.example.com", "/", base::Time::Now(),
-      base::Time::Now(), base::Time::Now(), /* secure */ true,
-      /* httponly */ false, CookieSameSite::UNSPECIFIED,
-      CookiePriority::COOKIE_PRIORITY_DEFAULT, /* sameparty */ false,
-      absl::make_optional(SchemefulSite(GURL("https://toplevelsite.com"))));
-  EXPECT_TRUE(cookie->SerializePartitionKey(got));
-  EXPECT_EQ("https://toplevelsite.com", got);
-
-  // SerializePartitionKey: local file URLs
-  cookie = CanonicalCookie::CreateUnsafeCookieForTesting(
-      "__Host-A", "B", "www.example.com", "/", base::Time::Now(),
-      base::Time::Now(), base::Time::Now(), /* secure */ true,
-      /* httponly */ false, CookieSameSite::UNSPECIFIED,
-      CookiePriority::COOKIE_PRIORITY_DEFAULT, /* sameparty */ false,
-      absl::make_optional(SchemefulSite(GURL("file:///path1/to/file.txt"))));
-  EXPECT_TRUE(cookie->SerializePartitionKey(got));
-  EXPECT_EQ("file://", got);
-
-  // SerializePartitionKey: file URLs with hostnames.
-  cookie = CanonicalCookie::CreateUnsafeCookieForTesting(
-      "__Host-A", "B", "www.example.com", "/", base::Time::Now(),
-      base::Time::Now(), base::Time::Now(), /* secure */ true,
-      /* httponly */ false, CookieSameSite::UNSPECIFIED,
-      CookiePriority::COOKIE_PRIORITY_DEFAULT, /* sameparty */ false,
-      absl::make_optional(
-          SchemefulSite(GURL("file://toplevelsite1.com/path/to/file.txt"))));
-  EXPECT_TRUE(cookie->SerializePartitionKey(got));
-  EXPECT_EQ("file://toplevelsite1.com", got);
-
-  // SerializeParititonKey: opaque partition key
-  auto opaque = SchemefulSite(url::Origin());
-  cookie = CanonicalCookie::CreateUnsafeCookieForTesting(
-      "__Host-A", "B", "www.example.com", "/", base::Time::Now(),
-      base::Time::Now(), base::Time::Now(), /* secure */ true,
-      /* httponly */ false, CookieSameSite::UNSPECIFIED,
-      CookiePriority::COOKIE_PRIORITY_DEFAULT,
-      /* sameparty */ false, absl::make_optional(opaque));
-  EXPECT_FALSE(cookie->SerializePartitionKey(got));
-
-  // DeserializePartitionKey: empty partition key
-  absl::optional<SchemefulSite> partition_key;
-  EXPECT_TRUE(CanonicalCookie::DeserializePartitionKey(kEmptyCookiePartitionKey,
-                                                       partition_key));
-  EXPECT_FALSE(partition_key);
-
-  // DeserializePartitionKey: example site
-  SchemefulSite site = SchemefulSite(GURL("https://toplevelsite.com"));
-  EXPECT_TRUE(CanonicalCookie::DeserializePartitionKey(site.Serialize(),
-                                                       partition_key));
-  EXPECT_TRUE(partition_key);
-  EXPECT_FALSE(partition_key.value().opaque());
-  EXPECT_EQ(site, partition_key.value());
-
-  // DeserializePartitionKey: invalid partition key
-  EXPECT_FALSE(CanonicalCookie::DeserializePartitionKey("abc123foobar!!",
-                                                        partition_key));
-}
-
 TEST(CanonicalCookieTest, IsEquivalent) {
   GURL url("https://www.example.com/");
   std::string cookie_name = "A";
@@ -2421,8 +2349,8 @@
                   "__Host-A", "B", "x.y", "/", base::Time(), base::Time(),
                   base::Time(), true, false, CookieSameSite::UNSPECIFIED,
                   COOKIE_PRIORITY_LOW, false,
-                  absl::make_optional(
-                      net::SchemefulSite(GURL("https://toplevelsite.com"))))
+                  absl::make_optional(CookiePartitionKey::FromURLForTesting(
+                      GURL("https://toplevelsite.com"))))
                   ->IsCanonical());
 
   // Partitioned attribute invalid, no __Host- prefix.
@@ -2430,8 +2358,8 @@
                    "A", "B", "x.y", "/", base::Time(), base::Time(),
                    base::Time(), true, false, CookieSameSite::UNSPECIFIED,
                    COOKIE_PRIORITY_LOW, false,
-                   absl::make_optional(
-                       net::SchemefulSite(GURL("https://toplevelsite.com"))))
+                   absl::make_optional(CookiePartitionKey::FromURLForTesting(
+                       GURL("https://toplevelsite.com"))))
                    ->IsCanonical());
 
   // Partitioned attribute invalid, SameParty attribute also included.
@@ -2439,8 +2367,8 @@
                    "__Host-A", "B", "x.y", "/", base::Time(), base::Time(),
                    base::Time(), true, false, CookieSameSite::UNSPECIFIED,
                    COOKIE_PRIORITY_LOW, true,
-                   absl::make_optional(
-                       net::SchemefulSite(GURL("https://toplevelsite.com"))))
+                   absl::make_optional(CookiePartitionKey::FromURLForTesting(
+                       GURL("https://toplevelsite.com"))))
                    ->IsCanonical());
 }
 
@@ -2664,7 +2592,8 @@
       base::Time(), base::Time(), base::Time(), true /*secure*/,
       false /*httponly*/, CookieSameSite::NO_RESTRICTION, COOKIE_PRIORITY_LOW,
       false /*same_party*/,
-      absl::make_optional(net::SchemefulSite(GURL("https://toplevelsite.com"))),
+      absl::make_optional(CookiePartitionKey::FromURLForTesting(
+          GURL("https://toplevelsite.com"))),
       &status);
   EXPECT_TRUE(cc);
   EXPECT_TRUE(cc->IsPartitioned());
@@ -3060,8 +2989,8 @@
       two_hours_ago, one_hour_from_now, one_hour_ago, true /*secure*/, false,
       CookieSameSite::NO_RESTRICTION, CookiePriority::COOKIE_PRIORITY_DEFAULT,
       false /*same_party*/,
-      absl::optional<net::SchemefulSite>(
-          net::SchemefulSite(GURL("https://toplevelsite.com"))),
+      absl::optional<CookiePartitionKey>(CookiePartitionKey::FromURLForTesting(
+          GURL("https://toplevelsite.com"))),
       &status));
   EXPECT_TRUE(status.IsInclude());
   // Invalid: no __Host- prefix
@@ -3070,8 +2999,8 @@
       one_hour_from_now, one_hour_ago, true /*secure*/, false,
       CookieSameSite::NO_RESTRICTION, CookiePriority::COOKIE_PRIORITY_DEFAULT,
       false /*same_party*/,
-      absl::optional<net::SchemefulSite>(
-          net::SchemefulSite(GURL("https://toplevelsite.com"))),
+      absl::optional<CookiePartitionKey>(CookiePartitionKey::FromURLForTesting(
+          GURL("https://toplevelsite.com"))),
       &status));
   EXPECT_TRUE(status.HasExactlyExclusionReasonsForTesting(
       {CookieInclusionStatus::EXCLUDE_INVALID_PARTITIONED}));
@@ -3082,8 +3011,8 @@
       two_hours_ago, one_hour_from_now, one_hour_ago, true /*secure*/, false,
       CookieSameSite::NO_RESTRICTION, CookiePriority::COOKIE_PRIORITY_DEFAULT,
       true /*same_party*/,
-      absl::optional<net::SchemefulSite>(
-          net::SchemefulSite(GURL("https://toplevelsite.com"))),
+      absl::optional<CookiePartitionKey>(CookiePartitionKey::FromURLForTesting(
+          GURL("https://toplevelsite.com"))),
       &status));
   EXPECT_TRUE(status.HasExactlyExclusionReasonsForTesting(
       {CookieInclusionStatus::EXCLUDE_INVALID_PARTITIONED}));
diff --git a/net/cookies/cookie_partition_key.cc b/net/cookies/cookie_partition_key.cc
new file mode 100644
index 0000000..8d28310
--- /dev/null
+++ b/net/cookies/cookie_partition_key.cc
@@ -0,0 +1,68 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/cookies/cookie_partition_key.h"
+
+#include "net/cookies/cookie_constants.h"
+
+namespace net {
+
+CookiePartitionKey::CookiePartitionKey() = default;
+
+CookiePartitionKey::CookiePartitionKey(const SchemefulSite& site)
+    : site_(site) {}
+
+CookiePartitionKey::CookiePartitionKey(const GURL& url)
+    : site_(SchemefulSite(url)) {}
+
+CookiePartitionKey::CookiePartitionKey(const CookiePartitionKey& other) =
+    default;
+
+CookiePartitionKey::CookiePartitionKey(CookiePartitionKey&& other) = default;
+
+CookiePartitionKey& CookiePartitionKey::operator=(
+    const CookiePartitionKey& other) = default;
+
+CookiePartitionKey& CookiePartitionKey::operator=(CookiePartitionKey&& other) =
+    default;
+
+CookiePartitionKey::~CookiePartitionKey() = default;
+
+bool CookiePartitionKey::operator==(const CookiePartitionKey& other) const {
+  return site_ == other.site_;
+}
+
+// static
+bool CookiePartitionKey::Serialize(const absl::optional<CookiePartitionKey>& in,
+                                   std::string& out) {
+  if (!in) {
+    out = kEmptyCookiePartitionKey;
+    return true;
+  }
+  if (in->site_.GetURL().SchemeIsFile()) {
+    out = in->site_.SerializeFileSiteWithHost();
+    return true;
+  }
+  if (in->site_.opaque())
+    return false;
+  out = in->site_.Serialize();
+  return true;
+}
+
+// static
+bool CookiePartitionKey::Deserialize(const std::string& in,
+                                     absl::optional<CookiePartitionKey>& out) {
+  if (in == kEmptyCookiePartitionKey) {
+    out = absl::nullopt;
+    return true;
+  }
+  auto schemeful_site = SchemefulSite::Deserialize(in);
+  // SchemfulSite is opaque if the input is invalid.
+  if (schemeful_site.opaque())
+    return false;
+  out = absl::make_optional(CookiePartitionKey(schemeful_site));
+  return true;
+}
+
+}  // namespace net
diff --git a/net/cookies/cookie_partition_key.h b/net/cookies/cookie_partition_key.h
new file mode 100644
index 0000000..a78de05
--- /dev/null
+++ b/net/cookies/cookie_partition_key.h
@@ -0,0 +1,78 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef NET_COOKIES_COOKIE_PARTITION_KEY_H_
+#define NET_COOKIES_COOKIE_PARTITION_KEY_H_
+
+#include <string>
+
+#include "net/base/net_export.h"
+#include "net/base/schemeful_site.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
+
+namespace network {
+namespace mojom {
+class CookiePartitionKeyDataView;
+}  // namespace mojom
+}  // namespace network
+
+namespace mojo {
+template <typename DataViewType, typename T>
+struct StructTraits;
+}  // namespace mojo
+
+namespace net {
+
+// TODO(crbug.com/1225444): Add fuzzer test.
+class NET_EXPORT CookiePartitionKey {
+ public:
+  CookiePartitionKey();
+  explicit CookiePartitionKey(const SchemefulSite& site);
+  CookiePartitionKey(const CookiePartitionKey& other);
+  CookiePartitionKey(CookiePartitionKey&& other);
+  CookiePartitionKey& operator=(const CookiePartitionKey& other);
+  CookiePartitionKey& operator=(CookiePartitionKey&& other);
+  ~CookiePartitionKey();
+
+  bool operator==(const CookiePartitionKey& other) const;
+
+  // Methods for serializing and deserializing a partition key to/from a string.
+  // This will be used for Android, storing persistent partitioned cookies, and
+  // loading partitioned cookies into Java code.
+  //
+  // This function returns true if the partition key is not opaque. We do not
+  // want to serialize cookies with opaque origins in their partition key to
+  // disk, because if the browser session ends we will not be able to attach the
+  // saved cookie to any future requests. This is because opaque origins' nonces
+  // are only stored in volatile memory.
+  //
+  // TODO(crbug.com/1225444) Investigate ways to persist partition keys with
+  // opaque origins if a browser session is restored.
+  static bool Serialize(const absl::optional<CookiePartitionKey>& in,
+                        std::string& out) WARN_UNUSED_RESULT;
+  // Deserializes the result of the method above.
+  // If the result is absl::nullopt, the resulting cookie is not partitioned.
+  //
+  // Returns if the resulting partition key is valid.
+  static bool Deserialize(const std::string& in,
+                          absl::optional<CookiePartitionKey>& out)
+      WARN_UNUSED_RESULT;
+
+  static CookiePartitionKey FromURLForTesting(const GURL& url) {
+    return CookiePartitionKey(url);
+  }
+
+ private:
+  explicit CookiePartitionKey(const GURL& url);
+
+  // IPC needs access to internal site.
+  friend struct mojo::StructTraits<network::mojom::CookiePartitionKeyDataView,
+                                   CookiePartitionKey>;
+
+  SchemefulSite site_;
+};
+
+}  // namespace net
+
+#endif  // NET_COOKIES_COOKIE_PARTITION_KEY_H_
diff --git a/net/cookies/cookie_partition_key_unittest.cc b/net/cookies/cookie_partition_key_unittest.cc
new file mode 100644
index 0000000..ef604ea
--- /dev/null
+++ b/net/cookies/cookie_partition_key_unittest.cc
@@ -0,0 +1,77 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef NET_COOKIES_COOKIE_PARTITION_KEY_UNITTEST_H_
+#define NET_COOKIES_COOKIE_PARTITION_KEY_UNITTEST_H_
+
+#include "net/cookies/cookie_partition_key.h"
+#include "net/cookies/cookie_constants.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace net {
+
+TEST(CookiePartitionKeyTest, Serialization) {
+  struct {
+    absl::optional<CookiePartitionKey> input;
+    bool expected_ret;
+    std::string expected_output;
+  } cases[] = {
+      // No partition key
+      {absl::nullopt, true, kEmptyCookiePartitionKey},
+      // Partition key present
+      {absl::make_optional(CookiePartitionKey::FromURLForTesting(
+           GURL("https://toplevelsite.com"))),
+       true, "https://toplevelsite.com"},
+      // Local file URL
+      {absl::make_optional(CookiePartitionKey::FromURLForTesting(
+           GURL("file:///path/to/file.txt"))),
+       true, "file://"},
+      // File URL with host
+      {absl::make_optional(CookiePartitionKey::FromURLForTesting(
+           GURL("file://toplevelsite.com/path/to/file.pdf"))),
+       true, "file://toplevelsite.com"},
+      // Opaque origin
+      {absl::make_optional(CookiePartitionKey::FromURLForTesting(GURL())),
+       false, ""},
+      // Invalid partition key
+      {absl::make_optional(
+           CookiePartitionKey::FromURLForTesting(GURL("abc123foobar!!"))),
+       false, ""},
+  };
+
+  for (const auto& tc : cases) {
+    std::string got;
+    EXPECT_EQ(tc.expected_ret, CookiePartitionKey::Serialize(tc.input, got));
+    EXPECT_EQ(tc.expected_output, got);
+  }
+}
+
+TEST(CookiePartitionKeyTest, Deserialization) {
+  struct {
+    std::string input;
+    bool expected_ret;
+    absl::optional<CookiePartitionKey> expected_output;
+  } cases[] = {
+      {kEmptyCookiePartitionKey, true, absl::nullopt},
+      {"https://toplevelsite.com", true,
+       absl::make_optional(CookiePartitionKey::FromURLForTesting(
+           GURL("https://toplevelsite.com")))},
+      {"abc123foobar!!", false, absl::nullopt},
+  };
+
+  for (const auto& tc : cases) {
+    absl::optional<CookiePartitionKey> got;
+    EXPECT_EQ(tc.expected_ret, CookiePartitionKey::Deserialize(tc.input, got));
+    if (tc.expected_output.has_value()) {
+      EXPECT_TRUE(got.has_value());
+      EXPECT_EQ(tc.expected_output.value(), got.value());
+    } else {
+      EXPECT_FALSE(got.has_value());
+    }
+  }
+}
+
+}  // namespace net
+
+#endif  // NET_COOKIES_COOKIE_PARTITION_KEY_UNITTEST_H_
diff --git a/net/http/transport_security_state_static.json b/net/http/transport_security_state_static.json
index 13bdcab2..6d985bd 100644
--- a/net/http/transport_security_state_static.json
+++ b/net/http/transport_security_state_static.json
@@ -2074,7 +2074,6 @@
     { "name": "al-shami.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alanrickmanflipstable.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ankakaak.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "anonym-surfen.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "apps-for-fishing.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "athenelive.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aurainfosec.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -2098,7 +2097,6 @@
     { "name": "danskoferie.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "daylightpirates.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "deliverance.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "disking.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dubrovskiy.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dyeager.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "edix.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -2188,7 +2186,6 @@
     { "name": "tox.im", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "traas.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "trashnothing.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "tuturulianda.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ucfirst.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "unitedadmins.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "unknownphenomena.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -2579,7 +2576,6 @@
     { "name": "alethearose.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "anakros.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "andrewimeson.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "antoniomarques.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "apachehaus.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "apibot.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aponow.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -3403,7 +3399,6 @@
     { "name": "greenvines.com.tw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hollowrap.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hostingactive.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "humankode.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "immunicity.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kahopoon.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "khetzal.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -3660,7 +3655,6 @@
     { "name": "checktype.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chloe.re", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "chrst.ph", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "coldhak.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "comarkinstruments.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "consciousandglamorous.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "crestoncottage.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -3784,7 +3778,6 @@
     { "name": "topnovini.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "trendberry.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "trybind.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "uberfunction.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ulrik.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "utopians.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "vanetv.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -3949,7 +3942,6 @@
     { "name": "taborsky.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "teampaddymurphy.ie", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "teampoint.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "therewill.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "threelions.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tm-solutions.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tomasjacik.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -5150,7 +5142,6 @@
     { "name": "creditkarma.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cryptify.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cwagner.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cyberkov.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cyberpunk.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dadons-laserdiscs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "darkag.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -5577,7 +5568,6 @@
     { "name": "evilized.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "evossd.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eytosh.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "f00.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fabienbaker.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fableforge.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "faeriecakes.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -6444,7 +6434,6 @@
     { "name": "getts.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ggx.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gheorghesarcov.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "gmoes.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "goben.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gogenenglish.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "goldpreisfinder.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -7125,7 +7114,6 @@
     { "name": "1xcess.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "2carpros.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "3r.org.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "aaron-gustafson.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "abilitynet.org.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aboutmyproperty.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "acheconcursos.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -8099,7 +8087,6 @@
     { "name": "casinolistings.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "casinoreal.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "castlejackpot.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "catgirl.pics", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cdndepo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cdnjs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cdreporting.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -8193,7 +8180,6 @@
     { "name": "creditproautos.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "crefelder.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "crowd.supply", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "crypticshell.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cryptojar.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cryptonym.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "csbs.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -8474,7 +8460,6 @@
     { "name": "fortesanshop.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fotocerita.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fotopasja.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "fotowettbewerb.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "foxbnc.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "foxdev.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "foxley-farm.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -8642,7 +8627,6 @@
     { "name": "herr-webdesign.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hibilog.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hicl.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hiddendepth.ie", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "higgstools.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "higp.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hippies.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -10408,7 +10392,6 @@
     { "name": "holzheizerforum.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "holzvergaser-forum.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hotelvictoriaoax-mailing.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hostisan.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hotelvillahermosa-mailing.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "horstmanshof.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hwag-pb.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -11315,7 +11298,6 @@
     { "name": "haozhang.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "haydenhill.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hebriff.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "heitland-it.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "helioanodyne.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hengelsportdeal.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "herds.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -11499,7 +11481,6 @@
     { "name": "onviga.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "open-infrastructure.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "openrtv.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "oses.mobi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "panaxis.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "panelomix.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "parodybit.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -11604,7 +11585,6 @@
     { "name": "signere.no", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "silaslova-ekb.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "simplicitypvp.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "simpul.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sistersurprise.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sleep10.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "slimspots.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -11872,7 +11852,6 @@
     { "name": "benohead.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "benzou-space.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "berna.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bertrand.bio", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "besola.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bestmotherfucking.website", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "betterbabyshop.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -12542,7 +12521,6 @@
     { "name": "ltba.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ltbytes.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lunchbunch.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "luongvu.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "luuppi.fi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lynx.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lynxbroker.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -12707,7 +12685,6 @@
     { "name": "oneazcu.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "onlinebiller.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "onmuvo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "onpatient.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oogartsennet.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "oparl.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "openquery.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -12748,7 +12725,6 @@
     { "name": "phenomeno.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "phenomenoporto.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "phenomenoporto.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "philpropertygroup.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "philsturgeon.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "phonenumberinfo.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "photographyforchange.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -13424,7 +13400,6 @@
     { "name": "awaremi-tai.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bewerbungsfibel.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bemsoft.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bluebill.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beyondalderaan.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "awk.tw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bilke.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -14524,7 +14499,6 @@
     { "name": "sec.ec", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rivermendhealthcenters.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rdl.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "scores4schools.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "satmd.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sagemontchurch.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "schlagma.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -14940,7 +14914,6 @@
     { "name": "ameego.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "agrias.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "acessoeducacao.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "263.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "abilma.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "amineptine.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alexmak.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -15729,7 +15702,6 @@
     { "name": "nieuwsoverijssel.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "notarvysocina.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "new-process.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "montazer.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ms-alternativ.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nscnet.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "onlyzero.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -15953,7 +15925,6 @@
     { "name": "semmlers.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "spotlightsrule.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "smallpath.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "sodiao.cc", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "spamloco.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "slimk1nd.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "standards.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16217,7 +16188,6 @@
     { "name": "adelinlydia-coach.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "agfmedia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "abulanov.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "398.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "alertaenlinea.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "39sihu.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "2600edinburgh.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16251,7 +16221,6 @@
     { "name": "abborsjo.fi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "actu-medias.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "amcfirst.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "amimoto-ami.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "amphetamines.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "amartinz.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "andrewdaws.tv", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -16316,7 +16285,6 @@
     { "name": "asafilm.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "aparaatti.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ariacreations.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "assurancesmons.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "askkaren.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "asuhe.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "0day.su", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -17454,7 +17422,6 @@
     { "name": "michaelsulzer.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "minenash.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mikori.sk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "modelcube.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "limpens.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mahfouzadedimeji.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "malwarekillers.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -17807,7 +17774,6 @@
     { "name": "ruskamodra.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "room3b.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "s-rickroll-p.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "reinaldudras.ee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "repair.by", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nzquakes.maori.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "muckingabout.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -17898,7 +17864,6 @@
     { "name": "snekchat.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "seobot.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "smartcheck.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "salmonvision.com.tw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shaken110.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "shadowguardian507.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "skidstresser.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -18056,7 +18021,6 @@
     { "name": "techreview.link", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thisfreelife.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thecrochetcottage.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "tetramax.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thehighersideclothing.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "tampabaybusinesslistings.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "thebrightons.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -18337,7 +18301,6 @@
     { "name": "xn--lsupp-mra.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yourcopywriter.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "yame2.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "youcruit.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "youon.tokyo", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wpcarer.pro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "uygindir.ml", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -18393,7 +18356,6 @@
     { "name": "724go.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "0g.org.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "7261696e626f77.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "525.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "3drenaline.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "adorewe.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "1041263497.rsc.cdn77.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -18864,7 +18826,6 @@
     { "name": "chrisdecairos.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "desplats.com.ar", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "completesportperformance.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "databeam.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "desertsounds.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "demonwolfdev.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dee.su", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19384,7 +19345,6 @@
     { "name": "initramfs.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "index-mp3.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "inkontriamoci.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "indochina.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ikiler.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "inet.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "integrity.gov", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19465,7 +19425,6 @@
     { "name": "imrunner.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "joelfries.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "julianvmodesto.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "jskier.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jakubvrba.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "inspirationalquotesuk.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "julientartarin.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -19709,7 +19668,6 @@
     { "name": "mimobile.website", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mdosch.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mendy.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mfedderke.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "menaraannonces.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "memoryex.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "meshotes.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20101,7 +20059,6 @@
     { "name": "receitasdebacalhau.pt", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "researchgate.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "reagir43.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "retroity.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "reha-honpo.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "quentinchevre.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "rcvd.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20311,7 +20268,6 @@
     { "name": "sole-erdwaermetauscher.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "skandiabanken.no", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "standagainstspying.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "simfri.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "socialnitro.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sol.works", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sorensen-online.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20729,7 +20685,6 @@
     { "name": "ziegler-heizung-frankfurt.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wine-importer.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--v6q426ishax2a.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "zurret.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "zhangfangzhou.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "xynex.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "willemsjort.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -20971,7 +20926,6 @@
     { "name": "d4rkdeagle.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "damasexpress.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "daniel-mosquera.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "danielepestilli.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "danielsblog.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "danielstach.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "danoz.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21662,7 +21616,6 @@
     { "name": "vow.vn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wadidi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "waelisch.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "wallet.pp.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wapt.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "warezaddict.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wasil.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21762,7 +21715,6 @@
     { "name": "1981612088.rsc.cdn77.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "1it.click", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "1scope.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "208.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "21x9.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "24-7.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "256k.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -21870,7 +21822,6 @@
     { "name": "aetherc0r3.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "afdkompakt.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "affiliatetest.azurewebsites.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "affordablemudjacking.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "affordableracingparts.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ag-websolutions.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "agenciadeempregosdourados.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23070,7 +23021,6 @@
     { "name": "hipnos.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hippomovers.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hippopotamuses.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hiratake.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hire-a-coder.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hirefitness.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "hirokilog.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23613,7 +23563,6 @@
     { "name": "mastodon.expert", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mastodon.host", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mastodon.my", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mastodon.org.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mastodon.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mastodon.rocks", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mastodon.top", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -23711,7 +23660,6 @@
     { "name": "mkaciuba.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mkakh.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mlcambiental.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "mlpchan.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mlpvc-rr.ml", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mmilog.hu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mmt.my", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -24997,7 +24945,6 @@
     { "name": "windycitydubfest.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "winnersports.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wireframesoftware.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "wiseflat.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wkennington.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wmustore.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wodboss.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25234,7 +25181,6 @@
     { "name": "ak-varazdin.hr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "abox-kb.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "afrikarl.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "alexandros.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ahiru3.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "adamas-magicus.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "8azino777.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25455,7 +25401,6 @@
     { "name": "bghost.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "beichtgenerator.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "amitse.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "betterworldinternational.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "berlin-flirt.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "berthelier.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bentphotos.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -25981,7 +25926,6 @@
     { "name": "ehandel.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "effizienta.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "envescent.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "dupisces.com.tw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "die-borts.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elliff.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dovenzorgmalawi.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26182,7 +26126,6 @@
     { "name": "funnybikini.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fukakukeiba.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fid-elite.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "froehlich.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "freedomflotilla.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gala.kiev.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "gatewaybridal.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26395,7 +26338,6 @@
     { "name": "hydrodipcenter.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "home-cloud.online", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "horodance.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "hvdbox.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "i-geld.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "icebound.cc", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ibps.blog", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -26411,7 +26353,6 @@
     { "name": "imperial-legrand.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "idranktoomuch.coffee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "imagebin.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ihollaback.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "imperdin.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "imperdintechnologies.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "huongquynh.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27247,7 +27188,6 @@
     { "name": "pluto.life", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "piratte.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "plzdontpwn.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "outpostinfo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pollingplace.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pony.tf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "playwhyyza.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -27611,7 +27551,6 @@
     { "name": "slik.ai", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "single-in-stuttgart.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "sjdaws.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "shoshin-aikido.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "silvergoldbull.mw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "skylgenet.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "smartwritingservice.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28528,7 +28467,6 @@
     { "name": "boueki.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "booox.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "biomodra.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "breadandlife.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "braviskindenjeugd.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bravisziekenhuis.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bro.hk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28623,7 +28561,6 @@
     { "name": "comoquitarlasestriasrapidamente.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "clusteranalyse.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "columbuswines.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "cnam-idf.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "commitsandrebases.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "connorsmith.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "coda.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28785,7 +28722,6 @@
     { "name": "eklepka.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elias-nicolas.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "elhossari.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ecoterramedia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dogworld.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "dtechstore.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "edgecustomersportal.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -28854,7 +28790,6 @@
     { "name": "elevateandprosper.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "edubras.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "emiele.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "editoraacademiacrista.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "factorypartsdirect.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "ezdog.press", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "fatedata.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -29213,13 +29148,11 @@
     { "name": "kurzonline.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "leeclemens.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jembatankarir.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "labelleza.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lazytux.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "kromamoveis.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "larepublicacultural.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "linkedinbackground.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "levatc.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "ligonier.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lipoabaltimore.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lazytux.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "lesjardinsdubanchet.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -30493,7 +30426,6 @@
     { "name": "churrasqueirafacil.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "cirurgicalucena.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "civilg20.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "clinicaferrusbratos.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "club-reduc.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "comflores.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "comodesinflamarlashemorroides.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31046,7 +30978,6 @@
     { "name": "my-host.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mybb.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "myday.eu.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "myhair.asia", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "myspa.asia", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nataldigital.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "nathumarket.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31249,7 +31180,6 @@
     { "name": "watchfreeonline.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wbci.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wbx.support", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "weyland-yutani.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wintermeyer-consulting.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wintermeyer.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "wordpresspro.cl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31583,7 +31513,6 @@
     { "name": "blogom.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "bloom-avenue.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "blumen-binder.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "bmw-motorradclub-seefeld.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "booter.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "borisavstankovic.rs", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "borrelpartybus.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -31846,7 +31775,6 @@
     { "name": "everytruckjob.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "excentos.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "expatmortgage.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "expatriate.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "expo-america.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eyps.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "eznfe.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32098,7 +32026,6 @@
     { "name": "jmsolodesigns.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jmssg.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jobs-in-tech.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "jobtestprep.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jobzninja.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "joe262.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "joearodriguez.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32107,7 +32034,6 @@
     { "name": "joetyson.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "johand.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "johanli.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "johngaltgroup.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jokedalderup.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "joker.menu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "jooksuratas.ee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32265,7 +32191,6 @@
     { "name": "mbits.solutions", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "media-pi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mediadandy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "medtankers.management", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "meetingfriends.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mehmetakif.edu.tr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "mehr-schulferien.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -32416,7 +32341,6 @@
     { "name": "owlishmedia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "paazmaya.fi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "painlessproperty.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
-    { "name": "paktolos.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "pantallasled.com.mx", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "parisescortgirls.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
     { "name": "parleamonluc.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true },
@@ -34541,7 +34465,6 @@
     { "name": "oldbrookmarqueehire.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oliode.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "omgbouncycastlehire.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ona.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onceuponarainbow.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ond-inc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onestopcastles.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -35362,7 +35285,6 @@
     { "name": "lollaconcept.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lordgun.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lovenwishes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lsc.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lucakrebs.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lugui.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "luiscapelo.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -35380,7 +35302,6 @@
     { "name": "mamiecouscous.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "manawill.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "maquettage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "marek.su", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "martijn.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mashandco.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mashandco.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -35446,7 +35367,6 @@
     { "name": "pcbricole.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "piils.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pioche.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pittmantraffic.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "plae.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "planetromeofoundation.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "plexpy13.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -35582,7 +35502,6 @@
     { "name": "trendykids.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tribac.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tripsinc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "triz.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trynta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uitgeverij-deviant.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unschoolrules.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -35708,7 +35627,6 @@
     { "name": "bingcheung.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "binti.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bioetco.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bioharmony.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bitcoinclashic.ninja", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bluepearl.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bolte.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -36501,7 +36419,6 @@
     { "name": "nerfroute.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nerpa-club.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "netnik.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "neutralvehicle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nightmoose.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ninebytes.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ninfora.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -36695,7 +36612,6 @@
     { "name": "52b9.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "52b9.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "53ningen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "546802.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "788da.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "81uc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "8951889.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -36911,7 +36827,6 @@
     { "name": "blunderify.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bluproducts.com.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bmriv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "boards.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bodypainting.waw.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bolgarnyelv.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bondingwithbaby.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -36953,7 +36868,6 @@
     { "name": "cadams.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "calcedge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "campingskyhooks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "canglong.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "canker.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "canterbury.ws", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "captainark.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -37278,7 +37192,6 @@
     { "name": "fotonjan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fowlsmurf.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "francescoservida.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "frankenhost.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frankslaughterinsurance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frederikvig.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "freelancecollab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -37444,7 +37357,6 @@
     { "name": "jape.today", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jastrow.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "javiermixdjs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "jci.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jdgonzalez95.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jedayoshi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jeepeg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -37529,7 +37441,6 @@
     { "name": "laboutiquedejuliette.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lachosetypo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ladyanna.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lagit.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lalalab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lalunecreative.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lamaisondelatransformationculturelle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -38166,7 +38077,6 @@
     { "name": "usbr.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "utcast-mate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "utgifter.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "valudo.st", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vantagepointpreneed.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vasilikieleftheriou.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vats.im", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -38492,7 +38402,6 @@
     { "name": "dekoh-shouyu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "delorenzi.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "depot-leipzig.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "derekheld.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "deukie.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dev-tek.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "diem-project.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -38645,7 +38554,6 @@
     { "name": "hotels-insolites.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "houstonauthorizedrepair.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hquest.pro.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hr-tech.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hr-tech.store", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hub.org.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "humppakone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -38688,7 +38596,6 @@
     { "name": "katthewaffle.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kazand.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "keengamer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kenbonny.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "keralit.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "keylaserinstitute.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "khudothiswanpark.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -39375,7 +39282,6 @@
     { "name": "feuerwehr-vechta.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "filetransfer.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "filidorwiese.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "findrejsepartner.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "firmenwerbung-vermarktung.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "firstinnovationltd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fishexport.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -39488,7 +39394,6 @@
     { "name": "joeyvilaro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jonathanj.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jugendfeuerwehr-vechta.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "jule-spil.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "juliankirchner.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "julibon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kalilinux.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -39511,7 +39416,6 @@
     { "name": "kselenia.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kubica.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kunstdrucke-textildruck.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kurserne.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lared.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lariposte.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lazapateriahandmade.pe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -39537,7 +39441,6 @@
     { "name": "loddeke.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "logicoma.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lojatema.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lommeregneren.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lonniemason.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lovelovenavi.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lublin.toys", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -39764,7 +39667,6 @@
     { "name": "tandempartnerships.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "teamusec.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "technoswag.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "telefonabonnement.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tenno.tools", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "testosteronedetective.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tetraktus.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -40052,7 +39954,6 @@
     { "name": "cooljs.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "coussinsky.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cpd-education.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "craftinghand.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "croeder.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "croncron.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "crownpoint.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -41785,7 +41686,6 @@
     { "name": "phaux.uno", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "phishing-studie.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "phishing.rs", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "piruchita.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pkbjateng.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pkbjateng.or.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pksps.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -42126,7 +42026,6 @@
     { "name": "carepassport.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "carrollservicecompany.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "casusgrillcaribbean.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "caterkids.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ccsource.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cellartracker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "certchannel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -42411,7 +42310,6 @@
     { "name": "morhys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mosshi.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "moucloud.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "moyu.host", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mr-coffee.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "multitec.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "murashun.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -42471,7 +42369,6 @@
     { "name": "opengovpartnership.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "openruhr.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "optimize-jpg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "orioncokolada.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "osaka-onakura.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oyosoft.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "paardenhulp.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -42484,7 +42381,6 @@
     { "name": "paxerahealth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "paykings.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "perez-marrero.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "persephone.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pescadorcomunicacao.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "petdesign.pet", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "peterborgapps.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -42566,7 +42462,6 @@
     { "name": "smaltimentorifiuti.firenze.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "smokinghunks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "snic.website", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "snoerendevelopment.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "soakgames.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "soaringtoglory.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sobreporcentagem.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -43335,7 +43230,6 @@
     { "name": "cintactimber.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clawhammer.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clod-hacking.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "codeandpeace.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "codeproxy.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "codestep.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cognitip.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -43359,7 +43253,6 @@
     { "name": "cultureelbeleggen.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "curarnosensalud.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "custerweb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cvps.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cybit.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cygu.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cykelbanor.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -43675,7 +43568,6 @@
     { "name": "naturblogg.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "naturesbest.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nea.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nems.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nesbase.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "net-rencontre.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "newtonproject.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -43858,7 +43750,6 @@
     { "name": "ts3-dns.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tunnelventilation.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "twitchplaysleaderboard.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ueberdosis.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "umsolugar.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unityconsciousnessbooks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unsereins.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -44120,7 +44011,6 @@
     { "name": "eve.ac", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eveswell.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "extensionschallenge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "eyyubyilmaz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fairydust.space", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fanactu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fdos.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -45071,7 +44961,6 @@
     { "name": "kedv.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "keepingtheplot.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kejibot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kersbergen.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kessawear.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kinautas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kiwi.wiki", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -45127,7 +45016,6 @@
     { "name": "mathys.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mattcorp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mawo.olkusz.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mcl.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mcqyy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mdg-online.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "megam.host", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -45348,7 +45236,6 @@
     { "name": "serverexpose.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "setsailanddive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "shift.ooo", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "shopadvies.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "siciliapulizie.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sidema.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "silkebeckmann.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -45973,7 +45860,6 @@
     { "name": "merloat.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "messdorferfeld.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "meteo-r.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "michaelsnoeren.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "michellavat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mikkelscheike.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "miku.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -46036,7 +45922,6 @@
     { "name": "ojbk.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "onderwijstransparant.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "orikadabra.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "orikum.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "orthograph.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "osborn.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "otsu.beer", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -46139,7 +46024,6 @@
     { "name": "rwgamernl.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sachk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sadev.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sadou.kyoto.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "safepay.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sanantoniolocksmithinc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "santensautomatics.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -46147,7 +46031,6 @@
     { "name": "sbsrv.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "scaffoldhirerandburg.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "scaffoldhiresandton.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sch44r0n.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "schlick.wedding", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "schlossfuchs.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "schneeketten-ratgeber.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -46432,7 +46315,6 @@
     { "name": "freedomfinance.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "freedomrahoitus.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fsdress.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fsstyle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "full-stack.ninja", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fyretrine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "g0881.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -46779,7 +46661,6 @@
     { "name": "brush.ninja", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bryansmith.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bt78.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bt85.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bt9.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bt96.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bt995.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -47483,7 +47364,6 @@
     { "name": "alquiaga.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amcangroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amyfoundhermann.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "anegabawa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "angelesydemonios.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "animan.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aoaprograms.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -47595,7 +47475,6 @@
     { "name": "ipad.li", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "iran-geo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "iranjeunesse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "islamonline.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "it-service24.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "izaakbeekman.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jadchaar.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -47767,7 +47646,6 @@
     { "name": "xn--hgbk4a00a.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--kckd0bd4a8tp27yee2e.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--mgbpkc7fz3awhe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "xuanmeishe.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "youngpeopleunited.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "youtuberis.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zengdong.ren", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -48177,7 +48055,6 @@
     { "name": "firegore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fireplex.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "firstdry.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fitmeat.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flickcritter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "florian2833z.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fluids.ac.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -48274,7 +48151,6 @@
     { "name": "hktkl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hochyi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hohenleimbach.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "homem-viril.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "homesteadandprepper.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hopesanddreams.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "horrormovies.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -48354,7 +48230,6 @@
     { "name": "jorcus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "joseitoda.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "joshruppe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "joshua.bio", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "js93029.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jsdelivr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ju.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -48583,7 +48458,6 @@
     { "name": "plokko.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "plurr.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pmnaish.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pogera.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "polyr.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "poodlefan.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "portale-randkowe.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -49142,7 +49016,6 @@
     { "name": "georgiaautoglass.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gesica.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getwemap.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gino-gelati.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ginzaj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "git.sb", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "glamourdaze.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50223,7 +50096,6 @@
     { "name": "firesuite.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flanga.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fletemaritimo.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "flexfunding.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flip.kim", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fotografechristha.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fpgradosuperior.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50752,7 +50624,6 @@
     { "name": "superway.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "suttacentral.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "swqa.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "swxtd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "syntheticgrassliving.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tadiranbatteries.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "talentwall.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -50942,7 +50813,6 @@
     { "name": "academkin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "acklandstainless.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "actioncleaningnd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "actualidadkd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "addictionresource.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "advanced-fleet-services.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "advertis.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -51176,7 +51046,6 @@
     { "name": "falcona.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "farthing.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fdresearch.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "feli.games", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "felixaufreisen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feng-hhcm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fierscleaning.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -52037,7 +51906,6 @@
     { "name": "megakoncert90.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "merakilp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mers.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "metric.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mglink.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "microzubr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "minfin.gov.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -52313,7 +52181,6 @@
     { "name": "choiceautoloan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "christian-krug.website", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "churchofsaintrocco.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "citizenslasvegas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "civicforum.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cleaningbyrosie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cognicom-gaming.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -52450,7 +52317,6 @@
     { "name": "kringloopwinkelsteenwijk.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ktsofas.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kuaitiyu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kumilasvegas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kxline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kxway.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lakewoodcityglass.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -52640,7 +52506,6 @@
     { "name": "vapingdaily.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "venuedriver.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "verios.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "vestd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vincentoshana.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vingt.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "visasofoz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -52661,7 +52526,6 @@
     { "name": "wolfvideoproductions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "woodinvillesepticservice.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wsldp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wtfsec.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wxkxsw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wyysoft.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xeryus.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -53953,7 +53817,6 @@
     { "name": "buysuisse.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bytecrafter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bytecrafter.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "c3sign.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "c3woc.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cachedview.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "caglarcakici.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -54019,8 +53882,6 @@
     { "name": "coworking-luzern.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cpsq.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "crackers4cheese.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "crazybulk.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "crazybulk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "crazybulk.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "creativeimagery.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "creativerezults.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -54238,7 +54099,6 @@
     { "name": "fsty.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fun4tomorrow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "furcdn.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "futureaudiographics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fydjbsd.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fyreek.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gabriele.tips", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -54304,7 +54164,6 @@
     { "name": "hcscrusaders.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hddrecovery.net.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hdtwinks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hearinghelpexpress.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hebamme-cranio.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hellerarko.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hemtest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -54999,7 +54858,6 @@
     { "name": "stephenreescarter.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stgeorgecomfortinn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stichtingdemuziekkamer.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "stjosephtheworker.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stmatthewri.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stonechatjewellers.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stopjunkmail.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -55043,7 +54901,6 @@
     { "name": "teamspeak-serverlist.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tech-info.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "techmagus.icu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "techmoviles.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "telesto.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "teletexto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "temariopolicianacional.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -55080,7 +54937,6 @@
     { "name": "threefantasy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thrush.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tidy.chat", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "timbrado.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tittelbach.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tobi-server.goip.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tobi-videos.goip.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -55590,7 +55446,6 @@
     { "name": "vampire142.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "verticrew.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "videobrochuresmarketing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "vnpay.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vtt-hautsdefrance.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vvzero.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "w88info.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -57597,7 +57452,6 @@
     { "name": "vitamina.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vitamina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vive.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "voolik.pw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "voxpopuli.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vragenvanproust.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vuatruyen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -57803,7 +57657,6 @@
     { "name": "esovita.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "europalettenkaufen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "evernaut.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fabiocicerchia.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fakeemergency.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "familienportal.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "faradrive.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -57906,7 +57759,6 @@
     { "name": "oaktonhouseandgardens.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "omenprinting.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "organicskincare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "oximo.lviv.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "p0l.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "paullockaby.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "paulw.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -58015,7 +57867,6 @@
     { "name": "1in9.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "24.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "360-staffing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "494k.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "7898666.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "7plus.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "9867666.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -58522,7 +58373,6 @@
     { "name": "kileahh.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "klop.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "komp247.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kosmos.org.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lares.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "launcher-minecraft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "leafland.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -58578,7 +58428,6 @@
     { "name": "newfoundland-labradorflora.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nilgirispice.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nonx.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "northebridge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "noxx.global", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "obec-krakovany.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "olandiz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -59537,7 +59386,6 @@
     { "name": "esmincg2t1.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "etduvindemoselle.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eventsframe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "executiveresolutions.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "f1nal-lap.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "factory-f.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "femaex.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -59578,7 +59426,6 @@
     { "name": "imgal.vin", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "innovamag.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "inqorp.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "integrityglobal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "interparcel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "iszy.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "it-inside.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -59618,7 +59465,6 @@
     { "name": "machidaclip.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "madamegarage.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "maiti.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "makejusticework.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mann-und-maeuse.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "manuscripteditorial.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "margaux-perrin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -59636,7 +59482,6 @@
     { "name": "misakastudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mmsmotor.com.hk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "monetki.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "monsterandfox.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mopliangxing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mrcrowley217.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mtludlow.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -59705,7 +59550,6 @@
     { "name": "roosta.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rossfrance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rrssww.space", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ruthbarrettmusic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "s-yuz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sannefoltz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sargeson.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -59730,10 +59574,8 @@
     { "name": "sophiahatstudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "speakersbusiness.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "spt.tf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "staffhunt.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "star-darom.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stevehaid.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "stevereedmp.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stockholmpride.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "storytellingforbusiness.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "strategos.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -59781,7 +59623,6 @@
     { "name": "webmaster-infographiste-lyon.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "websa.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "weidehelp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "westthorntonlabour.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "widely.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wigelsworth.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "woodwormtreatment.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -60360,7 +60201,6 @@
     { "name": "hybrydowe-samochody.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hypnovir.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "iautodily.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "iboy1069.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "icanhazpass.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ihorizon.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "infodesigners.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -60538,7 +60378,6 @@
     { "name": "well-around-the-world.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "westcoastheatingair.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wifimb.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wingsofacow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wowgenial.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wyczaruj.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--95q32l0t6b9cb17l.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -60897,7 +60736,6 @@
     { "name": "blueskydigitalstrategy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bonus.net.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bottinquebec.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bouldercolorado.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bowtie.com.hk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "branno.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bufla.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -61030,7 +60868,6 @@
     { "name": "kaizenjuku.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kamilmagdziak.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "katsunet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kimkuhlmanphoto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kizzedbykelz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kolitel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kollegamenti.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -61396,7 +61233,6 @@
     { "name": "hektenkairez.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "helpwithadoption.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hjertingfysioterapi.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "how2dev.tools", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hq77.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "huoyankan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ibb.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -61555,7 +61391,6 @@
     { "name": "strandbyfysio.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "styletron.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "summiteyekc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sv1880-lichtenau.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "teboorthodontics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "technofirstonline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "telemovi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -61592,7 +61427,6 @@
     { "name": "vladsfads.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vractive.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "warung.host", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "webhoffmann.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "what.tf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "whiskey.town", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "windowsdoors.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -61925,7 +61759,6 @@
     { "name": "distratus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "divingforlife.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "diygeek.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "djfrenchy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dm1.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dmn.sh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dolph.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -62078,8 +61911,6 @@
     { "name": "imy.rs", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "indota.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "info-o-zbozi.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "infodiscus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "infogym.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "informace-zbozi.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "infosecchicago.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "infosective.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -62530,7 +62361,6 @@
     { "name": "squirtingpussygirl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ss.systems", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stable.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "stadsbos013.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "star-one.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "startloop.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stehlik.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -62565,7 +62395,6 @@
     { "name": "teamliquid.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "techcu.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "techjobplaybook.nyc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "technogps.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tecknobox.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "teeqq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tehniss.rs", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -64327,7 +64156,6 @@
     { "name": "nn9728.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nordstromheating.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nsradiology.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nudge.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nullwebscripts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nwea.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nyerjachioval.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -64838,7 +64666,6 @@
     { "name": "ift.cx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "iiax.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "iiax.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "iisjy.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "impns.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "impresapulizia.milano.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "impresapuliziebergamo.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -65801,7 +65628,6 @@
     { "name": "filecloud.fun", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "files.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fizjoterapia.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fokos.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "foxroy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frtib.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fucknazis.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -65940,7 +65766,6 @@
     { "name": "n6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "n6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "n6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "n8ta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "netexpat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "networg.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "networg.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -66229,7 +66054,6 @@
     { "name": "ag888818.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ag88910.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agaa35.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "aglucky.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agslot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agslot.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agslot777.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -66335,7 +66159,6 @@
     { "name": "electrocardiographe.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "elle-weine.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eqassociates.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "erfolgsmaschine.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "especialistagoogleadwords.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "espyder.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "euc.world", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -67159,7 +66982,6 @@
     { "name": "fraplaster.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frasestop.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frosty.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fulibyg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "funyirotraktor.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getonyx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "glammybabes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -67321,7 +67143,6 @@
     { "name": "studyportal.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "swdiscount.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "syogainenkin119.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "taichichuanyang.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tanshin.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "techmunchies.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "technotronikcanada.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -68117,13 +67938,11 @@
     { "name": "technistan.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "telford.codes", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "terabyte-computing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "terminalhrd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tested.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "testmx.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "testmx.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "testmx.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "textonly.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "thailandlongtime.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thaqfni.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "theapplewiki.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thedinnerdetective.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -68654,7 +68473,6 @@
     { "name": "vamosbien.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vilafloridacapivari.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vinmmo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "voevm.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "volvoconnect.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wallisch.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wearefrantic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -68676,7 +68494,6 @@
     { "name": "y5bet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "y6bet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "y7bet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "yourbetterkitchen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yuer.sytes.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zi5.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zl-59.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -70036,7 +69853,6 @@
     { "name": "cartfilm.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "casalcrevillent.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "casalinghedisperate.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "casalribeiro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "castalie.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "castle.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "castleoblivion.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -70235,7 +70051,6 @@
     { "name": "dranik.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dream-pools.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dreamcrack.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dreamwork.financial", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dreamworldstudio.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drianpublishing.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "driv.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -70940,7 +70755,6 @@
     { "name": "ouwerling.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oxymail.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ozonstyle.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "p2d.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "p30365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "p58101.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "p58102.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -73668,7 +73482,6 @@
     { "name": "bestgearlist.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blackteam.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blacktownbuildingsupplies.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "blessedgeeks.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blessedgeeks.social", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blm69.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blonde.style", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -74602,7 +74415,6 @@
     { "name": "imranraza.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "in1000worten.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ingfreelancer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "initialization.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "intelmed.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "intensify.pictures", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "internetmusicexchange.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -74666,7 +74478,6 @@
     { "name": "marvnetforum.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "max-it.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mdcghana.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "meevo.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mein-domizil.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mekanika.com.my", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "metroplex.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -76098,7 +75909,6 @@
     { "name": "whatismypublicip.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wielrenbond.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wso01.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wuzigackl.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--80ancacgircb8q.xn--p1ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yanniclandsmann.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ydraulikos.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -76579,7 +76389,6 @@
     { "name": "binoqlo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "biol.moscow", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bither.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bloom.sh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boreacr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bossdistribuidora.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "brandonforce.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -76622,7 +76431,6 @@
     { "name": "cristianuibar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "crossword.city", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cruciverba.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cupclub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "d36594.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dark.fail", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ddepot.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -77386,7 +77194,6 @@
     { "name": "latinosup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "latinosuptv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lc862.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "le-cameleon.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "leemankuiper.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lelux.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "liberhk.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -77897,7 +77704,6 @@
     { "name": "houseofpertijs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hrpage.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "igap.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ikaria.com.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "imiix.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "incrom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "inflatiecalculator.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -79582,7 +79388,6 @@
     { "name": "onlineradio.pp.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "openarch.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "openbayes.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "osano.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "paardenpro.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "packetoverflow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "panthi.lk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -79666,7 +79471,6 @@
     { "name": "sixcolors.lu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sjrcommercialfinance.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "skywalkers.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sobczakdesign.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "socialclimb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "softwaresecurityandradefernando.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "softwsabri.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -80088,7 +79892,6 @@
     { "name": "netferie.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "netferie.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "newcomm.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "newendsoft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nic.ads", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nic.android", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nic.app", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -80272,7 +80075,6 @@
     { "name": "tantravoorlichting.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tdvg.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "teamkoncert.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "technewera.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tekingb.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tele-points.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "texasbluesalley.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -80344,7 +80146,6 @@
     { "name": "wismile.lu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wolftain.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wolvesvtc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "worldtravelandadventure.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wormate.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xcraftsumulator.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xier.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -81000,7 +80801,6 @@
     { "name": "artikel9.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "artisan-emmanuel.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aseth.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "asmrbuluo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aussiestories.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "awlgolf.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ayselonia.onl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -81365,7 +81165,6 @@
     { "name": "gentlentapis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "germfr.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "get-baaam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "getcreditscore.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gethome.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "getmonero.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gezondheidszorg-ict.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -81635,7 +81434,6 @@
     { "name": "schnitzel-und-co.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sebastian-walla.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "selectra.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sexonosalao.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sgsy.bid", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sh0uld.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "shansen-online.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -81903,7 +81701,6 @@
     { "name": "baidu-s.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ballisticdetailing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "balsallcommonbouncycastles.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "banlinhdanong.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "barkassen15.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beam-to.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bedrijvencentrum-maartenslaan.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -82561,7 +82358,6 @@
     { "name": "1234365t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "1voz.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "2dua.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "3798.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "3798.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "3aexpert.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "4kpi.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -83041,7 +82837,6 @@
     { "name": "solidrop.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "speeder.best", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "speederss.best", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sportswear.by", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "spteam.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stevenapate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "studiekort.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -83436,7 +83231,6 @@
     { "name": "klabnikova.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kolibrikapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kooibeds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kopfootdoctor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kunow.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kup-sluzbu.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kupsluzbu.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -83834,7 +83628,6 @@
     { "name": "b70302.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "b70305.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "backpainandsciaticahouston.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bagira.guru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "baithe.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "banfun.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bangkrak.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -83985,7 +83778,6 @@
     { "name": "darfurwall.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "darkcards.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "datensalat.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "datometry.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "daygametraining.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dcdn.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "deck.academy", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -84899,7 +84691,6 @@
     { "name": "herkel.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "herkelmedia.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hlz.mn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "horti-it.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hp-lexicon.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hqsmartpanel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hstudio.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -85431,7 +85222,6 @@
     { "name": "tonymaster21.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tout-a-fait.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tredevlet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "turismonochile.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vaccineskill.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vault.investments", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "velocityfiber.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -85802,7 +85592,6 @@
     { "name": "naifcare.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "natlec.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "naturaleza.com.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "netcombne.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "news-trendlab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "newsall.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nicetaninaka.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -86906,7 +86695,6 @@
     { "name": "drszucs.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dubridgeweb.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dumaurier.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dundeerecycling.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dust.bio", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dutabisnis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dwhightmolina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -87173,7 +86961,6 @@
     { "name": "knightsofcolumbus867.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "koelingmonitor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "koenmartens.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kokoro-singsong.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kranbearys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "krazy.net.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kuba-orlik.name", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -87766,7 +87553,6 @@
     { "name": "zercutie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zihari.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zindaa.mn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "zklcdc.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zrkhosting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zuiverjegeest.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "00228.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -87792,7 +87578,6 @@
     { "name": "777234567.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "7fon.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aarsunwoods.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "abelordbalagtas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "abemarx.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "accesslogisticgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "achmazstore.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -87875,7 +87660,6 @@
     { "name": "basicports.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "basicports.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bastiaanbosch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bazarelregaloideal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bciiconsultores.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bcnation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bdtc.com.bd", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -87989,7 +87773,6 @@
     { "name": "cs-kurnik.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cube-filing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cumulus.photo", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "curl.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "customerfocus.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dada.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "daimonikos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -88066,7 +87849,6 @@
     { "name": "eamigo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "easyserver.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ebooksbag.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ecdahls.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eckotech.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ecorak.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ecotecelevator.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -88837,7 +88619,6 @@
     { "name": "xy.ax", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "y.gy", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yannyann.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "yellowtrace.net.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yj4p.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yjav11.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yjav8.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -90297,7 +90078,6 @@
     { "name": "alexmainz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alexmainz.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alexmainz.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "alivelimo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "allerlei-havelte.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amaruddinmufid.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ambicorprealestate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -90383,7 +90163,6 @@
     { "name": "delvinoadegas.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "delycate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "derbysound.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "desarrollosmoyan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "detonic.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "devloope.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "digitalcarbide.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -91355,7 +91134,6 @@
     { "name": "sharingiscaring.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "shaunallen.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "shiulungkungfu.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "simplesend.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sorocabacopos.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "streamlineaudio.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "strogov.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -91369,11 +91147,9 @@
     { "name": "tidton.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tipscesarlopez.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tomkwok.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "toorfor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "torwart-jugend.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "town-night.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "traitement-arthrose.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "travel4history.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trekonbh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tutamail.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tutanota.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -91559,7 +91335,6 @@
     { "name": "am2digital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amasea.yachts", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ambersoftware.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "animate.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "animepahe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ankureurope.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ao3fan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -92198,7 +91973,6 @@
     { "name": "linotrac.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "linotrac.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "liongueststudios.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lovecode.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lsj.world", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lunademiel.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "luxplay.com.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -92398,7 +92172,6 @@
     { "name": "talonro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tamatoyaku.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tamronhallshow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tarchive.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tccb.gov.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tcybert.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -95796,7 +95569,6 @@
     { "name": "grafenberg.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "graft.spb.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grallersdegegants.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "grammofono.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grand-books.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grand-knighki.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grandi-books.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -96509,7 +96281,6 @@
     { "name": "jobrus.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jobsportalbookmarking.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jobynet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "johanlog.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "johannes-schaefer.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "johncook.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "johnwinter.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -100690,7 +100461,6 @@
     { "name": "travelbiz.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "travelcenter.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "travelclinic.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "travelfoot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "travelfriend.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "travelinsurance.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "travelmontenegro.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -102374,7 +102144,6 @@
     { "name": "991ccc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aaflalo.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "abeshultz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "abzarweb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "advancedroofingmuskoka.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ae86m.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "agasaya.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -102750,7 +102519,6 @@
     { "name": "qbacano.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qjg.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rabec.com.sa", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "renedekoeijer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "riley.love", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rinton.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "robin-kusch.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -102813,7 +102581,6 @@
     { "name": "thoughtworthy.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tiempoalegria.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "top4c.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tripartie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tulevaisuusdemarit.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tupahost.net.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tupperwaresalamanca.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -102894,7 +102661,6 @@
     { "name": "archaeology.lk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "artlinestix.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "artofclouds.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "asdf.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "asean-wen.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "astyork.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "at-machining.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -103171,7 +102937,6 @@
     { "name": "mizuasobi.work", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mkm.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mobilerhandwerker.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mobilise.solutions", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mockups.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mokujinken.tokyo", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mondsee-psychotherapie.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -103427,7 +103192,6 @@
     { "name": "9jajuice.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "a1scubagear.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aakashbhati.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "aappe.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "abnobapetstore.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "acceleratedpayments.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "acdk2.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -103570,7 +103334,6 @@
     { "name": "docusign.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "domains.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "donislawdev.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dostal.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drivingtest.autos", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ds-statistik.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eatinghouz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -104047,7 +103810,6 @@
     { "name": "dentalgap.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "designburners.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "destiney-arkaden.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dg1298.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "diis.plus", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "diversegold.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "djfunkyju.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -104214,7 +103976,6 @@
     { "name": "medifit.si", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "medradar.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "megainformatyk.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "meridianbanker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mesasysillas.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "michael-simon.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "minbrew.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -104294,7 +104055,6 @@
     { "name": "proagile.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "profile.ooo", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "progenixlab.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "prosperfit.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "provinzblogger.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "psychotiq.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "publish.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -104882,7 +104642,6 @@
     { "name": "physiotherapist-physicaltherapist.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pigeonracinginformation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pirateproxy.name", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "plex-server.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "poder.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "porntop100.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pornvidsfree.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -104917,14 +104676,12 @@
     { "name": "rostirolla.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rtl.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rtonin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "rumbies.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rx-diet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ry88url.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sandtime.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sanskrit.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sb-graph.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "schwimmschule-kleine-fische.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "server-check.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "seti.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "setin.srl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sha512.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -105211,7 +104968,6 @@
     { "name": "flugplatzmanager.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "formacionodontologica.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frahub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "framatube.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "freewoman.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "froh.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "frutidump.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -105521,7 +105277,6 @@
     { "name": "sistemasarquitectonicos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "snowatka.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "softwaterinc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "somom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sorcemegavendas.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sovraindebitamento.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sphera.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -105652,7 +105407,6 @@
     { "name": "yy30019.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "z30019.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "znfinnews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "zorox.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zporno.porn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zz30019.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "flynnhub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -105972,7 +105726,6 @@
     { "name": "modacruz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mods.fm", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "monveilleuretmoi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "morwynna.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mrsourabh.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "msoida.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mueblescuerolorca.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -106096,7 +105849,6 @@
     { "name": "taskman.london", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "taxisantandreudelabarca.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tch-forum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tecnologia.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tecnomagazine.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "teplo-russia.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "termodej.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -107508,7 +107260,6 @@
     { "name": "roishopper.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rosewebdesignstudio.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "roveridx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "rpcinmobiliaria.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rpj.life", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "russell-tech.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "s2.coach", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -108287,7 +108038,6 @@
     { "name": "dallaswebsite.design", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dangeredwolf.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "danielaeichberger.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dannys.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "date-hijri.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "deadspin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "decorarei.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -108442,7 +108192,6 @@
     { "name": "jobinbennykutty.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "johngreatwood.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "joshmoulin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kabataanpartylist.com.ph", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kahane.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kazumi-clinic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "keithwillcock.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -109049,7 +108798,6 @@
     { "name": "oxalato.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oz-artfocus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pacificaent.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pagalworld.wiki", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pairfum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pakistanwatches.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "papergamer.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -109390,7 +109138,6 @@
     { "name": "czqu.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "daily-city.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dajjal.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "daveroverts.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "davincigourmet.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "deanpearce.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "deluxeblogtips.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -109517,7 +109264,6 @@
     { "name": "investinestonia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ioghawaii.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "irr59.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "islamerkantho.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "iswag.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "izolyatsia.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "izone.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -109794,7 +109540,6 @@
     { "name": "wowkia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wpautolistings.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wpdgimart.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wpfy.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wphaxor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wpslimseo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wpspeedmetrix.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -109855,7 +109600,6 @@
     { "name": "babacloud.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "backlinksgenerator.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "badwi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "baocaosuhp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bathrobes.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bavaropuntacanahotels.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beaconfed.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -110040,7 +109784,6 @@
     { "name": "ilondres.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "incidentresponsesolution.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "incidentresponsesystem.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "incpak.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "infinifour.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "infomate360.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "infradot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -110988,7 +110731,6 @@
     { "name": "artiman-center.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "asla.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "assid.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "associationguillaume.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atlasdog.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atris.media", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "audionamix.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -111118,7 +110860,6 @@
     { "name": "eptreviewer.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "erpsolutionsmart.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "escuelitasansebastian.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "espacetendance.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "etmtobik.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "exceloreflexology.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "executiveice.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -111229,7 +110970,6 @@
     { "name": "liuwenxuan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "loli.gallery", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lordgrant.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lovelylanguedoc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lu2343.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "magsdata.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "malrox.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -111306,7 +111046,6 @@
     { "name": "praktijkdeeersteindruk.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "praxis-liebner.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "precisionsportsonline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "privatetrainingonline.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "prizrak-v-dospehah.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "proalist.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "projectborealis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -111446,7 +111185,6 @@
     { "name": "wdpapi.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "weaponsinhebrew.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "weatherproduct.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "websitesbymark.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "webstellung.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wefixmd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "westbeachparks.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112001,7 +111739,6 @@
     { "name": "alphalight.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alphalightgear.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "amineamellouk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "amsuisse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "anjaamelia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ankarakurumsalwebtasarim.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ao3-cn.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112043,7 +111780,6 @@
     { "name": "brandhout-b-tree.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "brasilianskbikini.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "brushcreekdistillery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bureaux-entrepots.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cadiskitchen.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "callisabel.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "camaradecomerciosiguatepeque.hn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112088,7 +111824,6 @@
     { "name": "digitalrowdy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "digitlyx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "djh-nordmark.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dluxelab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dontasktoask.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dovemoe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "drathaisdentista.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112261,7 +111996,6 @@
     { "name": "pension-chevaux.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "persuasionmatters.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "phg-eg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "piastaola.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "play-lu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "plexmark.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pmi-install.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112483,7 +112217,6 @@
     { "name": "chaturbates.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chatweb.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chdg.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "chrawrizard.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "christophfink.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "claypenblanks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clickaplay.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -112767,7 +112500,6 @@
     { "name": "qbicwashrooms.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qiangtou.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "qingyule.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "qtxh.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "quinteroorthodontics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "quiq.im", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "radio-pulsar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -113319,7 +113051,6 @@
     { "name": "freepik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "freezvon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "freshmail.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "freshstep.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "friedcoffee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "friendlytennisclub.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "friendofthehoneybee.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -113532,7 +113263,6 @@
     { "name": "lasmorfianapoletana.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lastlightlodge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "latdor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "latestmyanmarnews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "latouchemusicale.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "laura.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "laurahausmann.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -113568,7 +113298,6 @@
     { "name": "lukasbures.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lyckselefrasch.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "m9297.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "macreports.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mahroos.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "maisonmalou.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "makeagif.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -113965,7 +113694,6 @@
     { "name": "unblockit.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "understrap.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uniritter.edu.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "uploadcare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "urbanmsp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "urfayazar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "us-10.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -114028,7 +113756,6 @@
     { "name": "xn----etba6agm4a9a.xn--p1ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--losolivareos-jhb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xpertcenter.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "xposure.ae", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "y-syouten.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "y9297.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yakitofisi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -114055,7 +113782,6 @@
     { "name": "729solutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "8868ty8.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "9111s.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "925silverjewelry.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "9dragonstea.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aboutyou.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ac.id.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -114306,7 +114032,6 @@
     { "name": "missouriheatingcoolingadvice.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "missyapartman.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "misterseguros.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mixinglight.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mmlebanon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "moheatingcoolinghvac.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "monicz.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -115457,7 +115182,6 @@
     { "name": "cholleria.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cinderellacloset.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "classyhandmade.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "clever-fit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "clgb.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "code4u.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "compraenpijama.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -115799,7 +115523,6 @@
     { "name": "archerlong.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "archerlongx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "archerxlong.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "armpension.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arthurdev.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arztpraxis-kubalok.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "asher.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -115915,11 +115638,9 @@
     { "name": "fasam.edu.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fastesp.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "federize.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fertisa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ffty2.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fietsherstel.gent", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "finvantive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "flblog.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "followme.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fossbytes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "freakinstream.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -116008,7 +115729,6 @@
     { "name": "lautremode.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lazosamericaunida.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lekkergoings.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lemcarni.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lena-klein.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lena-klein.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "leonardcyber.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -116508,7 +116228,6 @@
     { "name": "joshu.am", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "justin3d.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "justyardsign.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kaibinyang.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "katewrightmba.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "khimno.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kinderopvang.gent", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -116562,7 +116281,6 @@
     { "name": "modul8r.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "montserrat.ind.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "movedigital.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "munkavedelemaruhaz.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mycoordinates.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mylearners.vic.gov.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "myrealestateautomation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -117113,7 +116831,6 @@
     { "name": "gyefund.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "h2orto.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "habrastorage.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hartmann-hartmann.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hatierchinois.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hcr2bot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "healthyhomeventilation.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -117220,7 +116937,6 @@
     { "name": "laud.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "layan-luxurylighting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "leandrebergeron.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "leapa.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ledebergleeft.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "legen.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "leivadi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -117338,7 +117054,6 @@
     { "name": "o2.tn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oapks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oasiskitchens.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "obve.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ocasio.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ocmwgent.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oettig.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -117529,7 +117244,6 @@
     { "name": "taciso.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "taikhoanfree.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "taskforce.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tayebbayri.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tcook.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tcook.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tcshop.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -117582,7 +117296,6 @@
     { "name": "twilite.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "typecho.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ugodeal.md", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "unausa.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unblockit.lat", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "universal-techno.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "universalspf.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -117789,7 +117502,6 @@
     { "name": "damiengobron.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "data-mining.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dazenelevator.ph", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dblfree.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ddi.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dealdelicate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "demisch-tim.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -118280,7 +117992,6 @@
     { "name": "birchlane.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bitazza.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bitwoci.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "blacksearegion.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blankstyle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blatnic.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blogomoll.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -118450,7 +118161,6 @@
     { "name": "hometeenorgy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hongfumall88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hoorgold.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hotelv.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hotrender.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "huelvatrabaja.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "huiskopenspanje.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -118579,7 +118289,6 @@
     { "name": "mellmon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "meslekifikir.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "messenger.md", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "metalloprokat.market", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mezemeze.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mfg-forex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mfg-fx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -118677,7 +118386,6 @@
     { "name": "polymathian.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pozyka.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "prepz.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "presidentinternet.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "press-wall24.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pricesdoors.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "profarm.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -118927,10 +118635,8 @@
     { "name": "alfst.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "allgooddeedshomes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alonely.place", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "along.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "andhaniawan.my.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "andresrosa.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "androidgadgematic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "anomalous.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aparistravel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "applydirect.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -119000,7 +118706,6 @@
     { "name": "chto-posmotretj.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chukcha.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "churchplaza.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ciordigital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "citycardgand.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ciudadrealtrabaja.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cleanmysolarpanels.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -119289,7 +118994,6 @@
     { "name": "mynak.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mysaldo.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mysterycards.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nakvartiru.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "namaanak.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nanco.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nanco.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -119332,7 +119036,6 @@
     { "name": "onlineradious.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oogent.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "opendolls.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "opikini.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ordigame.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oroconews.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "osaki.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -119426,7 +119129,6 @@
     { "name": "ranikaart.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rbzl.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rded.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "realty.tatar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "refrigeracion2hermanos.com.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "regtify.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "regtify.com.cy", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -119497,7 +119199,6 @@
     { "name": "snetts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "snrd.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "snukep.kr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sochi.ooo", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sodi.gent", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sodigent.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "softbabyducks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -119648,7 +119349,6 @@
     { "name": "xaydungnamcuong.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xn----7sbbfsshjvgyde8g3c.xn--p1ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xn----7sbedlbhv2azb6a.xn--j1amh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "xn----7sbfchj2dvap7h.xn--p1ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xn----8sbfkobhgmxahfmmhe8b8c6ff.xn--p1ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--36-dlcdun7abo4a.xn--p1ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--80aqlihiyv.xn--p1acf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -119675,8 +119375,6 @@
     { "name": "88518.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "88creative.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "a789.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "aaaportaserve.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "aajkakavi.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aavstudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "abc-sport-klin.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aboutamit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -119815,7 +119513,6 @@
     { "name": "battlepetsonline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "batwatt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bavaria-feuerloeschershop.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bbkl.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beashandmade.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bedez.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "beehealthyllc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -119843,7 +119540,6 @@
     { "name": "blogdelgloton.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bluecoastelectric.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bluecollarfetishwear.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bluegrottoscuba.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bluemango-studios.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bogolybu.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bolotnaya.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -120331,11 +120027,9 @@
     { "name": "mad-fabrikken.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "madisonsjewelersorlando.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "maerzpa.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mafondue.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "magicitaca.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "magicvaporizers.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "magneticmoney.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "magnewsblog.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mainstreetartisans.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "maintainyourwebsite.help", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mairimcosmetics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -120552,7 +120246,6 @@
     { "name": "powerofsocialtech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "powerplanter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "powerup.com.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "prasso.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "precedenceum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "predmetnyj-fotograf.by", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "primelendingdallasfw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -120734,7 +120427,6 @@
     { "name": "theatergroep-o.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thebsclub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thechefsgear.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "thecombustionway.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thecompanysheffield.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thecook.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "thedivesource.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -120819,7 +120511,6 @@
     { "name": "vid-eo.click", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "villagephysicians.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "villaismaelcortinas.uy", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "vinsonconsulting.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "virtualtabletop.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vivapharma.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vnlfrk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -120921,7 +120612,6 @@
     { "name": "worldclassfriend.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "worldnetone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "writestreak.team", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ws5.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wtfcripto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wum.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wz8.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -121102,7 +120792,6 @@
     { "name": "alcar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alcaralifusi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alchemisten.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "alcionesakugawa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alcoholicbeverages.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alcoholismtreatment.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aldealices.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -121292,7 +120981,6 @@
     { "name": "automir.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "automosanto.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "autoparts-for-foreigncars.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "autosneed.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "autosprint.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "auxilium-informatique.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "avacatossiu.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -121647,7 +121335,6 @@
     { "name": "charqawi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chat-cam.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cheatmasters.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cheazey.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cheazey.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cheazey.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chechencity.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -122290,7 +121977,6 @@
     { "name": "elvis-presley.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "email24.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "emavending.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "emdyn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "emeraldheights.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "emergency-broadcast-system.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "emersonreview.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -122373,7 +122059,6 @@
     { "name": "evendesign.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "evenfall.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eventjams.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "eventusgc.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "evergreenilder.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "evermade.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "everwinter.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -122945,7 +122630,6 @@
     { "name": "ileonidze.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ilneminis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ilona-france.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "ilouis.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ilovefanyi.win", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ilovefun.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ilquintoseitu.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -123017,7 +122701,6 @@
     { "name": "invariant.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "investasipasti.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "invokingspirits.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "involve.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ionline.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "iperon.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "iperon.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -123041,7 +122724,6 @@
     { "name": "itrew.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "itsmohitchahal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "itsnotnot.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "itxcjm.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ivan-tadej.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ivankuchin.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ivanzorin.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -123063,7 +122745,6 @@
     { "name": "janetandjohns.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "janservfl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "janujani.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "jasawebbisnis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jasik.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "javafiles.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "javsod.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -123114,7 +122795,6 @@
     { "name": "jtbservice.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "julenetxaniz.eus", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "jurquestion.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "just6f.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "justfoodfordogs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kabal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kadett-c-club-limburg.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -123660,7 +123340,6 @@
     { "name": "mohaabobclan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mohamedsherif.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mojome.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mon-lab-digital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "monakinolandscape.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "monarchisc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "monconcoursdgfip.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -124219,7 +123898,6 @@
     { "name": "relatosypoesias.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "releases.live", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "relentlessroofing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "remateszarate.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "remcuavilla.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "reminded.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "remontdot.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -124893,7 +124571,6 @@
     { "name": "txtentertainment.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tyinnovations.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tylerdurden.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tylerharcourt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tyuning-avto.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ua-autonews.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uba-tra.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -125385,7 +125062,6 @@
     { "name": "aptcaust.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "apuestalegal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aqcbv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "aravitor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "archipaedia.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "arcopay.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ariensfoundation.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -125789,7 +125465,6 @@
     { "name": "faribanx-porn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fastfloorscreed.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fati.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fazer.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fbo.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fdmg.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "feastshare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -125956,7 +125631,6 @@
     { "name": "hyperjit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "i-cyber.gov.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "i4cu.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "iain.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "iban.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ibu.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "icehousefit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -126137,7 +125811,6 @@
     { "name": "lojadafloresta.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lokeryu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "londonpods.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lookae.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lovlyluna.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lpcom.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lpid.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -126405,7 +126078,6 @@
     { "name": "popfitclothing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pornbabetyra.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pornorapido.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "pornquebec.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pororoca.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "portovelhoshopping.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "postacyprus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -126620,7 +126292,6 @@
     { "name": "stylesaag.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stylezutra.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stylspire.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "subjecto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sublimesurface.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sublimigeek.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "summermovies.nyc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -126656,7 +126327,6 @@
     { "name": "tealegrar.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "teamkgsr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "teamwork-bad-wurzach.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "teamxavier4ever.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "teatrolatea.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "techgama.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "techlab.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -126774,7 +126444,6 @@
     { "name": "vasi.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vatav.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vcsource.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "vectorsiriushockeyclub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "verakoubova.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vertichost.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "veryestate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -128533,7 +128202,6 @@
     { "name": "streaming.jetzt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stroigid.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stroykomi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sttpk.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "studentjournalist.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "studentnep.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "studiocharloslivro.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -129022,7 +128690,6 @@
     { "name": "highdonate.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "highlandsmode.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hm-notes.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hocz.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "holger-schwarze.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "holiy.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hollandhouse.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -129134,7 +128801,6 @@
     { "name": "menddie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mexby.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mfoda-eg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "mftn.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "midial.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mielelpinsapar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mightytips.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -129180,7 +128846,6 @@
     { "name": "nurshka.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nycu.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "o2design.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "oasisbahamas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oceancore.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "odziezrobocza.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "okinawa-seaside.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -129209,7 +128874,6 @@
     { "name": "palmaxgroup.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "panhardclub.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "parcelauditpartners.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "paris-elysees.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "partners4results.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pawsandpurses.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pedrollo-ua.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -129494,7 +129158,6 @@
     { "name": "aboutmarketing.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aboutmedicine.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "absolution.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "abtech.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aceweb.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "acmilan.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "actievloerkleden.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -129710,7 +129373,6 @@
     { "name": "cgrequinos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "charlesonrecreationarea.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chauvelcinema.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cheerpassionallstars.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chesterultimatefrisbee.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "chiffrer.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "choicemediaworks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -130578,7 +130240,6 @@
     { "name": "avstack.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "avtojurist.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "avtomaniya.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "awaua.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "awayword.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "awxg.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "axelcalle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -130608,7 +130269,6 @@
     { "name": "barnestransport.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "barrack.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "barzza.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "basenio.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bashkiria.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bati-renov.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "batka-stealer.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -130785,7 +130445,6 @@
     { "name": "cathedralappointments.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "catholicteuchtar.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "catscreativecakes.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "catskillselfstorage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ccnm.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ccpinturas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cctld.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -131200,7 +130859,6 @@
     { "name": "funnyvideoclips.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "furniture-for-home.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gabbeh.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gabtitui.gov.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gajabhindi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "galatabazaar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "galaxit.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -131812,7 +131470,6 @@
     { "name": "mestovpohybu.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "metalweaverscreations.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "metrixdm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "metrophone.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "michaelboogerd.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "michaelhastrich.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "michaeljames.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -132786,7 +132443,6 @@
     { "name": "truecircumcision.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trusted-medications.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tscfoods.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tsra.gov.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tstech.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tstlr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tsuki.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -132944,7 +132600,6 @@
     { "name": "xiuzhouinvest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xloffice.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--90acrudcl3j.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "xn--c-xga.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--zca.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xnsir.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xtom.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -133004,7 +132659,6 @@
     { "name": "31-elagage.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "33-couvreur.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "33-elagage.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "339999.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "3speak.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "40010monogatari.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "44ada.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -133131,7 +132785,6 @@
     { "name": "baclofen.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bacus.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bad-homburg.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "badanteinformatica.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "baharmusic24.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bahrain.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "baif.hr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -133343,7 +132996,6 @@
     { "name": "degreecollege.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "delasamericas.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "deluxewindowanddoor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "democrats.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "denkorolev.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dennisrubin.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "departamentoslosolivos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -133364,7 +133016,6 @@
     { "name": "diogof.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dip.digital", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "divband.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "divesourcefl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "divvy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dizayn-cheloveka.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dj-eran.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -133996,7 +133647,6 @@
     { "name": "renvisegrad.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rexograph.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rhjf.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "riccardoslanzi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ripin.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "robertoggarcia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "rootpak.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -134192,7 +133842,6 @@
     { "name": "visit.natal.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vivoldi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vokov.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "volkswagensaigon.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vpetkov.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vvd.bz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "w0.pw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -134227,7 +133876,6 @@
     { "name": "xanaxanax.rocks", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--7tq798c.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "xn--kryptowhrungen-cib.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "xy96.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yantarniy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yasmin.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ybexalev.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -134299,7 +133947,6 @@
     { "name": "amped4ski.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "andonivr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "andreas-kurtz.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "andrew-lazarev.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "angiology.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "anikabyaabi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "antennekaart.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -134315,7 +133962,6 @@
     { "name": "armamentevolved.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "artmaterials.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "artwhale.ph", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "asianmaterials.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "askindia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aspirateur-univers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "assistancepaws.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -134609,7 +134255,6 @@
     { "name": "cangku.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "capeprivacy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "capris.cr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cargomurah.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cartegrise.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "casinocity.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "castillo.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -134639,7 +134284,6 @@
     { "name": "corebit.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cortadorplasma.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "counterespionage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "countryatheartcandles.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "crealab.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "credentsys.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "creditoconsolidado.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -135306,7 +134950,6 @@
     { "name": "skipbinsforhire.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "smashbylaney.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "soccerbetwinner.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sochiatrium.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "socseti.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sold.red", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "soloproductos.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -135416,7 +135059,6 @@
     { "name": "turksell.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tweedandtalon.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "twinspringcoupling.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "twobrothersbbq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "type74.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "u15.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "u15x.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -135501,7 +135143,6 @@
     { "name": "2fa.directory", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "369369.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "5keys.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "60mbanime.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "a1qualityspareparts.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "abogehad.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aboutearning.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -135981,7 +135622,6 @@
     { "name": "cattery-mundilfari.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "catterydumagasin.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ccshire.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cdnmc.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ceet.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "celayix.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "celebratesportsnetwork.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -136082,7 +135722,6 @@
     { "name": "cyclingmonthlyest.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cyril-leytsihovich.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "da-tixe.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "dalbarsqm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dallasdesignco.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "daniya.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "darc.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -136997,7 +136636,6 @@
     { "name": "luxurythatlasts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "macrotech.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "madoucefrance.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "makaradigital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "maliyehukuk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mallorca.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "manchestermoneyman.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -137633,7 +137271,6 @@
     { "name": "travelsunflower.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "travelsuperhero.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "travelurban.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "trubapro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "truongthanhaudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trustedpropertymanagement.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "trustreview.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -137691,7 +137328,6 @@
     { "name": "yorkmoneyman.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yoti.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "youngdevotion.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "yukinastorage.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zefort.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zenyxis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zheltyy.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -137834,7 +137470,6 @@
     { "name": "bksites.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blathinwheatens.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blauwepanterengonnie.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "blockvideo.live", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blogabouthealthy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bloggerzarausa.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blogpark.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -137911,7 +137546,6 @@
     { "name": "cortex.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "costalinux.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "couponsale.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cpoj.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "craftsofcleo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "creattic.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "creditopessoal.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -138520,7 +138154,6 @@
     { "name": "plasticdonut.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "plasticscm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "plasticsurgerypartyest.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "plataformaslms.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "play-mate.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "play3niu22.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "play3niu66.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -138536,7 +138169,6 @@
     { "name": "poolvilla-margarita.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "pornbabetyra.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "porumbei.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "posvq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "powerbux.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "presidiotunneltops.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "primesense.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -138962,7 +138594,6 @@
     { "name": "darlingtonia.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "debicicletas.store", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "deelmee.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "devreactorlabs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "devs.host", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "devs.icu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "devsectools.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -139478,7 +139109,6 @@
     { "name": "caueteam.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cbchslax.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cecitim.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cerby.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cervek.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "changeforfuture.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "charge.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -139852,7 +139482,6 @@
     { "name": "my-salesforce-scrt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "my-salesforce.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "my-salesforcescrt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "myavocado.md", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mycats.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "myface.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "myshiftbid.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -140078,7 +139707,6 @@
     { "name": "storyark.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "streameo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "stsen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "studiodriban.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sugoicraft.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "suleeka.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sumanai.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -140635,7 +140263,6 @@
     { "name": "hairloss.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "halilova.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "halilova.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hampuskraft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "happygardencenter.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "harwoeck.group", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hawaiianlion.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -140990,7 +140617,6 @@
     { "name": "sealart.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "seo-promox.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "serralheriaeseguranca.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "sethsimmons.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sexoclicker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sexoclicker.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sexoclicker.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -141295,7 +140921,6 @@
     { "name": "albaronventures.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "albuterolwithoutprescription.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alchemyequities.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "aldevadigital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alejandromoda.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alemagia.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alexandre-acaries.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -141311,7 +140936,6 @@
     { "name": "allandrich.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "allandrichonline.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "allboard.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "allianceautomotive.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "allindiatanzeem.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alltwwk.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "almajaniyate.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -142231,7 +141855,6 @@
     { "name": "gezakekazeg.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ghiro.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gibkoesteklo.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "gibumpark.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gieoduyentinhdo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gijonshiro.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gilmasocial.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -143113,7 +142736,6 @@
     { "name": "obereg.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "obsceneeulogy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "obuhov.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "oceaniaservergroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oceanshaman.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oceansidetour.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ocenilla.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -143552,7 +143174,6 @@
     { "name": "sergiomur.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sertim.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "servicespot.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "servn.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "seseai.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sesliturkgencligi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "sexgood.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -144182,7 +143803,6 @@
     { "name": "yugioh-duelodefinitivo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yugiohthenextgeneration.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yummycouple.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "yurilight.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "yus-azaria.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zadd.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zakachat-temi.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -144334,7 +143954,6 @@
     { "name": "blogfeng.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bluegorilla.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boathut.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bonyancard.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "braidice.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "brasillifeoficial.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "braynblog.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -144551,7 +144170,6 @@
     { "name": "hentaiz.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "herriman.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hfikq8.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hikawa.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hipsterpixel.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hoardit.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "holmes.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -144672,7 +144290,6 @@
     { "name": "lesconfiseriesdaleth.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lesnet.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "letterrill.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "lgf.im", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "libramedia.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "lilithqueisser.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "limitededitioncomputers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -145138,7 +144755,6 @@
     { "name": "audiobit.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aureshotels.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "autoinkoop.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "avanzbanc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "avm99963.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ayersanaheim.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ayerscoronaeast.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -145240,7 +144856,6 @@
     { "name": "bistum-eichstaett.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "blogidol.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "bluetechnician-inc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "bonyancard.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boon.so", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "booths.cyou", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "boxingclubduval.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -145521,7 +145136,6 @@
     { "name": "expodum.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "expressmedcarenj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fabianfrisch.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "fachschaften.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "fanbike.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "farmaciaanagallis.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "federalprisonforums.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -145557,7 +145171,6 @@
     { "name": "glacialexperience.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gmavsg.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "golfturkey.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "goodlandks.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gorgeouspizza.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "govtnaukrinews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "grapheneos.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -145738,7 +145351,6 @@
     { "name": "movnest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "multsearch.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mushroomcloud.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "muuglu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "mygame.me.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "myroaccutaneexperience.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "n1co68.freeboxos.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -145780,7 +145392,6 @@
     { "name": "oduachambers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "offerground.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "office-addins.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "oh14.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oliver-wenz.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oliverlanguages.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "oliverwenz.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -146036,7 +145647,6 @@
     { "name": "truckscout24.lv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "truss.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tuamipartanna.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "tudafa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tuneserver.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tupsicoayuda.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "turc.church", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -146052,7 +145662,6 @@
     { "name": "unoodostoques.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unpost.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uploadtokiosk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "urbantecno.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "utahcountydjcompany.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vadis.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "vado.li", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -146366,7 +145975,6 @@
     { "name": "askatrans.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "asociacionatlas.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "asociacionlarueda.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "assistanteplus.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atabor.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atletismomacotera.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "atomicanet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -146750,7 +146358,6 @@
     { "name": "highstage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hinkel.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hitglish.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hoangphuongtek.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hobo.video", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hoc-bv.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "holydumplings.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -146759,7 +146366,6 @@
     { "name": "hoofexplorer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hoofexplorer.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "hostker.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "hotsupreme.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "houseplant.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "howtomediacenter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "huanwei.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -146874,7 +146480,6 @@
     { "name": "khabland.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kidsplace.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kievholod.in.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "kif.rocks", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kilpiapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kindredspirits.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "kingpay.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -146990,7 +146595,6 @@
     { "name": "nachodelacruz.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "naraku.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "narutodelivery.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "nashc.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nautika.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ndscreening.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "nemnodes.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -147204,15 +146808,6 @@
     { "name": "tattoocorina.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "taxly.kr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "team-russia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "teambeam.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "teambeam.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "teambeam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "teambeam.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "teambeam.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "teambeam.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "teambeam.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "teambeam.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "teambeam.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "telhatelite.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tender-alert.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "tennisschool.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -147306,7 +146901,6 @@
     { "name": "wittamer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wixmultimedia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "woonplein.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "wpsteam.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wuellenweber.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wurstmineberg.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "wynlv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -147670,7 +147264,6 @@
     { "name": "cuttingedges.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cuvantul.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cvalda.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "cxcarepro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cyber-party.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cyberboy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "cyberclaw.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -149784,7 +149377,6 @@
     { "name": "aixm.aero", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "al-hekka.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alborgwatch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "alcasan.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aldebaranbm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alessandropuccistudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "alexsavin.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -149832,7 +149424,6 @@
     { "name": "avanade.com.my", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "avanadealumni.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "aviaskan.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "aymhome.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "azs-nw.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "b11p.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "backupauthentication.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -149950,7 +149541,6 @@
     { "name": "duhurensohn.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "dvkg.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "e-buspacific.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "eatmportal.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "eco-doors.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "edacasa.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "educampus.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -150020,7 +149610,6 @@
     { "name": "globemilk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "globemilk.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "golfbettingsystem.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "goxyshuk.duckdns.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "gpwa.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "graine-de-cafe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "greffe-de-cheveux-turquie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -150248,7 +149837,6 @@
     { "name": "posterlounge.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "powerpc.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "premieraviation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "primevtc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "projetootaku.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "promobit.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "propertyvalue.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -150335,7 +149923,6 @@
     { "name": "smksatriamagelang.sch.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "smooth-e.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "snapmuse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "softmas.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "softowe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "soin-rebozo.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "solongandthanksforallthe.fish", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -150423,7 +150010,6 @@
     { "name": "udilicitana.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "ultrabkk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "umasoda-tohoku.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "universalmusic.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "universitypark.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "unsupervised.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "uopeople.review", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -150448,7 +150034,6 @@
     { "name": "wartegseberangsana.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "webka.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "websdeweb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
-    { "name": "webwiz.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "weijero.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "weitundbreit.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "werranfehtan.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
@@ -151046,6 +150631,832 @@
     { "name": "zerodhacapital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zofoke.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     { "name": "zxtremetech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "0n3b1t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "100up.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "123soldcash.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1337sound.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "1990.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "3changtrai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "3gdev.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "3niu81.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "3niu85.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "3niu89.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "415.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "567.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "7992.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "800999.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "888700.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "888900.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "999700.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "a.tt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aaablindfactory.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "abbuc.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "abgame.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "abminv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "accurx.nhs.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "acrylicstyle.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "actualprogressivevotersguide.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "adacoins.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aec-security.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aficiontigres.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "africanconstellations.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aftamurae.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aga.gov.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agencecentaure.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agenciainhouse.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agora.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "agri.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ahmetazgin.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aibuz.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "airlinelondon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "airlinetic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "airlineticketscheapflights.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "airlinetovegas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "airporttaxibudapest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "airporttransferbudapest.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ajvco.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "akimitsu.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "alexblock.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "alinecordeiro.adv.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "alkiraresidences.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "allyoucanstyle.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "amedeo.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "andrewvannyplumbing.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "anehost.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "anglais-angouleme.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ankaraotomobilcikmaparca.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ankaraotomobilyedekparca.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "anketlekazan.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "anntatt.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "antivirus.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "antonmcclure.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "antti.codes", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "anypromo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "appac.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "approvedcashmax.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "apricotactuaries.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "apropont.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ariacellini.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "armando.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "arnaudligny.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "artushak.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "asap-advice.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "astcorporation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "atbtaxi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "atyafesolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "auralia.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ausfinex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "autofornal.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "autologix.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "automekbromma.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "autoroutes.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "available.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "awakinn.co.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "aydahwa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "b5i.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "babycezi.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "babytoschool.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bahraincredit.com.bh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bakerymazowsze.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "balls.zone", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bargenarenji.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "barlow-media.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "basel-onlinemarketing.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bataminnovationhub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "battlefield2042.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bddam.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bddam.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "beaflamingo.today", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bebechegou.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bebechegou.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "beberik.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "beetsforyou.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "benjilopez.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bertbrockham.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "besonders-s.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "betterlifekidsclub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bf2042.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bgmsquad.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bighouse-events.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bigskyhomebuyers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bigsmallhosting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "birraisocialclub.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bit-academy.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "blakescrepes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bluechipspace.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "blueridge.social", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bookmakers-expert.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "borisenko-alexander.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "boughtbymany.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "brandbook.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bravurasolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "brendanreev.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "budapestairporttaxi.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "budapestairporttransfer.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "budapestairporttransfer.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "budapesttaxi.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "budapesttaxi.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "buildingpassport.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bullesdeculture.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "bvlp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "caillou.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "calendriergratuit.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cambriacoveapartments.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "camgirl-info.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "canntinas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "carniceriaserrador.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cartoesemilhas.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "casabitare.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "casinocity.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cassembly.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ccover.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cellini.name", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "centr-postavok.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "centralkladno.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "chandradeepdey.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "charpy.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cheapdomainnameindia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "checkda.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "chialab.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "chime.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "chireiden.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "chrisdasie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "chrisliebaer.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "chui.bi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cientotreintagrados.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cindinero.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "circular.fashion", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ck-pms.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cleverlance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cleverlance.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "clickdocs.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "clio-dev2.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cloud7.news", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cnclp.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cock.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "codev.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "coffeekaroasters.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "coinpaprika.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "colegios.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "colossean.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "comicstrove.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "compareweddinginsurance.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "comtelnow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "comunitelia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "concreteworksohio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "concreteworksplus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "conform.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "congdongvietnhat.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "coronalab.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cpflsolucoes.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "craftersmarket.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "craftyun.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "create-it.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "credithelpinfo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cricketwatch.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "critical-scientists.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "crocc.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "crystalpack.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cube64128.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cubicempire.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "cxm.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "d1zh9ivw96w8wn.cloudfront.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dailykosbeta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "damibaby.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "damienchicotphotographe.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dasareview.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dasaskincare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dastchin.live", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dastchin.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "datawow.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "daviddegner.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dayuse.com.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dba-support.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dbgames.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dbgroupe.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ddog-gov.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dealzme.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "delikpos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dentalaragonesa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "derailer.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dereklandis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "desmart.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dfwrvroofmasters.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "diadoc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "didntdoitbailbonds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "digi-trax.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "digib.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dimspith.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "disavowfile.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "distract09.gent", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dkos2.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dkos3.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dkos4.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dkos5.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dkos6.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dkos7.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dmccommerceconsultants.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dns.sh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "doble.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dolbyatmosmusiclist.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "donselaarbouw.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dorianssecrets.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dosimapress.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "down.pm", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dr-aldebert-orthopaedie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dr-feldman.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dramacooltv.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "drchowchow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "drivehub.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "drogaleste.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "drthiagorighetto.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dsgvo-fit.co.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dveretti.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "dwgfree.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "easyescortwebsites.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "edinburghopenworkshop.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "egliseclichy92.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ejkitservices.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ejkweb.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "elfix.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "elki-musik.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "elok.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "elyum.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "emilypennock.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "encuestaspagadas.com.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "encuestaspagadas.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "entomologia.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "entranz.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "entrpnr-connect.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "eoitek.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "epicerie-raccourci.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "epubmarkets.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "equinesalacia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "erkonut.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "erste.guru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "etopia.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "event1teamstore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "evervitjuice.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "exam4.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "excellcleaners.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "exeest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "f6s.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "farmaciasantabrigida.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fastburg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fehrm.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "felin.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fenris.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fickfreundinnen.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "figuro.la", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "finflee.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "finhealth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fitnessboard.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "flamingoresidency.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "flawed.world", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "flipping.land", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "flormidabel.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "flowio.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "foggi.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fordpartsgiant.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "forlook.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "formup.com.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "foxeworks.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fpt.icu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fptbb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "freecoursepage.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "freitasm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "froh-s.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fundacaoeveris.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "fwup.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "galerie-marguerite.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gambinotrasporti.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gamedealsnow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "garagewisdom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gardinia.ae", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gassycat.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gastouderbureausnoesje.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gayreppc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gdufe.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "getestudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ghereben.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "giovannicellini.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gipernn.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "glassrepairsperth.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "glenatlasmd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gnr-21.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "goddessacumen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gongik.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gonorthwest.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gotwo.icu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gps4net.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gps4net.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "graphicnab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "greenandgolden.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "greenclouddefense.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "greenleafkratom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "groendakmaker.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "group-project.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "groupe-immo9.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "groupsh.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "grtc.today", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "grupoeurodesign.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "guikemarijwielhandel.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gulfadvocates.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "gwtg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hapvider.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "healthactive.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hearingthecall.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "heartfolder.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hechno.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "heidarilawgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "heilstein.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "helastel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "helpatmyhome.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hereits.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "heycrab.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hive.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hjorslev.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hodi.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hoffmanns-ballonshop.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hollandersleepdecor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "homegardengift.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "homesport.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hoody.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "houghtonhouse.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "howdo.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "hunhun.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "iboe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ict-oldehove.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ieji.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "iframefinancement.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ikhwanfillah.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "imakin.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "infgc.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "innerlifeskills.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ins-jpn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "insecret.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "insinex.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "intrdate.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "inwao.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ipdfreedom.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "isaaya.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "iso.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "itbusiness.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "itebgarcia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "iteks.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "itsmyedu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jacquelinebellefontaine.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jedayoshi.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jem.style", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jimmykey.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jnovonj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "joesniderman.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jonaschorum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "joncellini.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jot.works", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jotoho.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jpg.am", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jsx.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "juicyforum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "justsem.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "jvmlending.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "k2velosi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaerntenjobs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kaffeluckan.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kamilporembinski.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "karet-stroy24.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kastmedia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "keep.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "keithrainz.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "keiyuki.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kenguru.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kfgsa.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kiefner.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kiefnersoftware.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kovacia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kozgi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kraksky.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ksm-soccer.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kunnen.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kylelovell.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "kyncostyle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ladderfinance.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lamparassevilla.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lancerm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lata.my", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "latestonmarketing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lauracookeconsulting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "leeapk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lefevre-ec.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lhffinanceira.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "libertefinanciere.africa", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "libranet.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "librerecipes.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lightquantum.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lindamadu.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lindanblog.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ling2030.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "linkagencia.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "linuxhostingdelhi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "linuxhostingindia.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "liquid.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "liveatliveoakapts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "livecricketscore.co.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "livrariaatlantico.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lixx.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "llantas.pe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "localonesou.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lodongxu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "loi-pinel-bordeaux.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "louisianahiker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ls-market.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "lumineled.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "madboyz.ae", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "maedacolo.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mail.td", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "makertown.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "malaysurveys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mamilitante.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mamont.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mandala-porn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mangadex.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mangeeaudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "manpro.systems", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "manypets.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "maraboutserieuxhonnete.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "marcossamerson.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "margeriam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "marytetzstore.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "masantefinanciere.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mashcl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "masrud.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "matapacoin.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "matescort.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mauicharm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "maximillianoertel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "maxs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "medipost.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mefinanceira.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "meineweidegans.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "melissacellini.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "merchentpro.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "merck.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "metebalci.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "metrobus.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mgr-dev.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "michel.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "midpss.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "millionseha.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mimidots.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "minacellini.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "minasan.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "minkatilmancoaching.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mmmm.mn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mobileit.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mod.gov.mk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "modelist.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "moeto-zdrave.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mogujr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "molokaibreeze.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "monde-ampoule.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "moodle.servebbs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "morten-harket.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "movemais.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mp.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mrbusinessbrain.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mrgusercontent.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mtap.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "muac-innolab.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "multispaninc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mummatters.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "musikwerk-stuttgart.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "musition.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mysmmstore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "mysmmstore.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "najdidelo.si", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "najdisa.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nanameue.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nandedam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "negocieipanema.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nekomimix.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "netpraetor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "newasianbistro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nightlife.gent", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nilsvital.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nim.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nimes-gard.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nitoville.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "notryden.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "noy.asia", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "nsb.lk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ntscalibracao.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "o7.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "objectcache.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "odbierzspozywke.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ohanacannabis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "oleksandr-petrusenko.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "oliverniebuhr.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "olivetchurch.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "omersalaj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "omgqueensland.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "one-dot.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "onsweb.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "onvi.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "oo.ps", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "optimumcircle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "oracle-support.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "orunodoy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "oxfordenglish.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "oyantec.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "p.sb", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pacenterforhearingandbalance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "panthertee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "paslc.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "patrickod.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "paysoft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pc94666.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pedro-fonseca.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pelagicus.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "penpalezine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "peoplenotpoliticians.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "permanencesecretariat.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pesquisasremuneradas.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "peterseninc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "petersweb.me.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "phoenixconnection.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "phxbailbonds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pianoschmitz.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pixelshealth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "pixelstrade.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "planeticke.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "plaul.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "play3niu11.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "play3niu33.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "play3niu55.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "plymouthbus.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "png.am", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "podeacontecer.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "poseidonwaterproofing.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "poseidonwaterproofing.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "poseidonwaterproofing.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "potteranderson.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "powch-dev.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "powch-dev2.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "prcsurvey.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "precisioncourt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "primetimepokerparties.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "productsonsale.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "programme-neuf-toulouse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "przemyslprzyszlosci.gov.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "q3cdn.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "qdm.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "qonnected.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "quakeroaksfarm.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "qualifio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "quelchemin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "quickway.cn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "quin.md", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "quinpro.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "quintonic.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "quorrax.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "r.sb", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "racknride.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rana.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "re.fyi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "realacademy.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "realespanamiami.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "realestateagent-directory.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "realmoney.games", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "recreatehomesolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "regalleadership.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "remotewx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "republikapost.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "reservabiosferavalledelcabriel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "responsible-disclosure.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "retrohaven.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rgc.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rhwebdesigns.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rigidlandscapes.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "risingsoftware.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ritepriceroofing.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rmfscrubs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "roams.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "robinzone.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rodrigoamozu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rodriguezsanchezabogados.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "romeroeletro.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rootly.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rootlyhq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "routeur4g.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "royaltyk9.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "royvansichem.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rpguilds.world", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rubberchicken.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "rudianto.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "safebus.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "safesigner.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "safetrax.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sanbs.org.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sanitation-planning-tool.herokuapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sansairyu-kuyoukai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "saskialund.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "saya.gg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sber-solutions.kz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sbpk.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "scapin.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "schiessl.guru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "schwimmschulen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sdphoto.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "secwatch.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "seg27.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "selectedbym.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "semtelco.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "seoapi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "seosergio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "serenityeditor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sethforprivacy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sexxyangie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sexy-mom.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sexyjanahot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sexyrachel846.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sh1mar.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "shedrickflowers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "shigu.fyi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "shih.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "shrug.fyi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sidlicenceapp.herokuapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sigb.sh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "siliton.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "silkky.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sip.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sleetandsole.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sleetandsole.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "smartclothing.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "smithandnephewpensions.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "smnz.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "smpred.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sneakkerworld.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "snh.nrw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "solutek.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sorteiosdotom.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "soso.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sotonlgbt.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sourcesdegarrigue.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "spammable.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "spanstindrundt.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "spazioasperger.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "speedhost.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "speleo.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "spindrel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "splinterface.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sporenvanslavernijutrecht.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "spparkly.agency", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "spparkly.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "spparkly.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "spparkly.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "squirtqueen.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "srebro.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ssf.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "starfieldguide.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "starlitestation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stauffer-media.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "steiermarkjobs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stekelenburg.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "stevendearstyne.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "storyliebe.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "studio-np.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "studio-vertcitron.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "studiosgaravato.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "subilarch.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "suchhunde.wien", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "summitescorts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "sunbike-driver.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "supedium.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "surveyberbayar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "surveyviet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "survicate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "synology-distribution.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "systematik.nu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "szetoesq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "taat.edu.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "talshine.rs", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tarrantandharman.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "teablr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tecnologiahdv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "teddit.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "teesonic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "terapeuticaenalza.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "terra.bio", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "terranimo.re", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "testable.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tf2pickup.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thaisurveys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thecache.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thefatlosspuzzle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thehempcretecompany.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thekitchenprofessor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "theroams.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thevacuumpouch.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thewindowcleaningexpert.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thichson.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "think-ai.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tholab.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "thotcomputed.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "threatint.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "timecamp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "timecamp.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tinyhouse-bimify.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tipsforgamers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tnt2k.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tokidoki.team", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tokocuan.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toolsofcomputing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "top-melody.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "top-model.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "top-shashlik.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "toyouiv.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tradebot.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tranhlavender.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "trastornoevitacion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "trastornolimite.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "triggertraders.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "triperapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "triskelion.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "trom.tf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tropicalf.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "truyenmoi.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "tutocursos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ulax.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "unibet.ltd", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "unit-soft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "unitedea-ph.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "unlimiteddata.digital", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "unsharpen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "uomo.com.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "upupor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "urlcitr.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "usintimate.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "uxlab-agency.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vacunas.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "valeryvenom.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vanitybiss.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vanral.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vanylou.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vault182.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vegalanguageacademy.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vetlab.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "victoriavalente.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vilavilma.si", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "viliv.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vivace.parts", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vkstaticcontent.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vkusercontent.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vmotosoco.lv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "voneus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vsure.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "vyomoverseas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "w66.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "warfighters.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "warringtonsownbuses.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wayscript.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wayscript.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "weasyl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "webhostingahmedabad.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "webhostingdelhi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "weplay.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "westpennwire.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wevah.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "whistleblower.report", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wholesalecabinets.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wholesomebuyers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wildvicky.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "williamlong.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "winchuan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wogame.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wowpilates.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "wrozbyzkartklasycznych.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xavierxu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xiangshan.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xinyezx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--4gq45ay49m.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xn--rs5a.xn--fiqs8s", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "xp.ht", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "yesleaks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "yoim.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "youbil.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "youiv.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "youronly.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "yoursfunny.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "ytprivate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "yuh.im", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "yuh.li", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "yuriland.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zajsoft.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zav-hub.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zebradom.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zedex.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zendrop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
+    { "name": "zhaozhiru.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
     // END OF 1-YEAR BULK HSTS ENTRIES
 
     // Only eTLD+1 domains can be submitted automatically to hstspreload.org,
diff --git a/remoting/host/basic_desktop_environment.cc b/remoting/host/basic_desktop_environment.cc
index 2c93251..1aa185a2 100644
--- a/remoting/host/basic_desktop_environment.cc
+++ b/remoting/host/basic_desktop_environment.cc
@@ -19,6 +19,7 @@
 #include "remoting/host/keyboard_layout_monitor.h"
 #include "remoting/host/mouse_cursor_monitor_proxy.h"
 #include "remoting/host/screen_controls.h"
+#include "remoting/host/url_forwarder_configurator.h"
 #include "remoting/protocol/capability_names.h"
 #include "third_party/webrtc/modules/desktop_capture/desktop_capture_options.h"
 #include "third_party/webrtc/modules/desktop_capture/desktop_capturer.h"
@@ -118,6 +119,11 @@
   return std::make_unique<LocalFileOperations>(ui_task_runner_);
 }
 
+std::unique_ptr<UrlForwarderConfigurator>
+BasicDesktopEnvironment::CreateUrlForwarderConfigurator() {
+  return UrlForwarderConfigurator::Create();
+}
+
 std::string BasicDesktopEnvironment::GetCapabilities() const {
   return std::string();
 }
diff --git a/remoting/host/basic_desktop_environment.h b/remoting/host/basic_desktop_environment.h
index bb3c1ff..413aa63 100644
--- a/remoting/host/basic_desktop_environment.h
+++ b/remoting/host/basic_desktop_environment.h
@@ -44,6 +44,8 @@
       base::RepeatingCallback<void(const protocol::KeyboardLayout&)> callback)
       override;
   std::unique_ptr<FileOperations> CreateFileOperations() override;
+  std::unique_ptr<UrlForwarderConfigurator> CreateUrlForwarderConfigurator()
+      override;
   std::string GetCapabilities() const override;
   void SetCapabilities(const std::string& capabilities) override;
   uint32_t GetDesktopSessionId() const override;
diff --git a/remoting/host/client_session.cc b/remoting/host/client_session.cc
index 25bf0bb2..1c896ed 100644
--- a/remoting/host/client_session.cc
+++ b/remoting/host/client_session.cc
@@ -32,6 +32,7 @@
 #include "remoting/host/remote_open_url_message_handler.h"
 #include "remoting/host/screen_controls.h"
 #include "remoting/host/screen_resolution.h"
+#include "remoting/host/url_forwarder_configurator.h"
 #include "remoting/host/url_forwarder_control_message_handler.h"
 #include "remoting/proto/control.pb.h"
 #include "remoting/proto/event.pb.h"
@@ -909,7 +910,9 @@
   // UrlForwarderControlMessageHandler manages its own lifetime and is tied to
   // the lifetime of |pipe|. Once |pipe| is closed, this instance will be
   // cleaned up.
-  new UrlForwarderControlMessageHandler(channel_name, std::move(pipe));
+  new UrlForwarderControlMessageHandler(
+      desktop_environment_->CreateUrlForwarderConfigurator(), channel_name,
+      std::move(pipe));
 }
 
 }  // namespace remoting
diff --git a/remoting/host/desktop_environment.h b/remoting/host/desktop_environment.h
index 5f7dc3f..98b11e82 100644
--- a/remoting/host/desktop_environment.h
+++ b/remoting/host/desktop_environment.h
@@ -29,6 +29,7 @@
 class InputInjector;
 class KeyboardLayoutMonitor;
 class ScreenControls;
+class UrlForwarderConfigurator;
 
 namespace protocol {
 class KeyboardLayout;
@@ -53,6 +54,8 @@
       base::RepeatingCallback<void(const protocol::KeyboardLayout&)>
           callback) = 0;
   virtual std::unique_ptr<FileOperations> CreateFileOperations() = 0;
+  virtual std::unique_ptr<UrlForwarderConfigurator>
+  CreateUrlForwarderConfigurator() = 0;
 
   // For platforms that require the mouse cursor to be composited into the video
   // stream when it is not rendered by the client, returns a composing capturer.
diff --git a/remoting/host/fake_desktop_environment.cc b/remoting/host/fake_desktop_environment.cc
index ec17aad..e9c0df2 100644
--- a/remoting/host/fake_desktop_environment.cc
+++ b/remoting/host/fake_desktop_environment.cc
@@ -12,6 +12,7 @@
 #include "remoting/host/file_transfer/file_operations.h"
 #include "remoting/host/input_injector.h"
 #include "remoting/host/keyboard_layout_monitor.h"
+#include "remoting/host/url_forwarder_configurator.h"
 #include "remoting/proto/event.pb.h"
 #include "remoting/protocol/fake_desktop_capturer.h"
 
@@ -110,6 +111,11 @@
   return nullptr;
 }
 
+std::unique_ptr<UrlForwarderConfigurator>
+FakeDesktopEnvironment::CreateUrlForwarderConfigurator() {
+  return nullptr;
+}
+
 std::string FakeDesktopEnvironment::GetCapabilities() const {
   return std::string();
 }
diff --git a/remoting/host/fake_desktop_environment.h b/remoting/host/fake_desktop_environment.h
index 1065c214..b9c9e1d 100644
--- a/remoting/host/fake_desktop_environment.h
+++ b/remoting/host/fake_desktop_environment.h
@@ -103,6 +103,8 @@
       base::RepeatingCallback<void(const protocol::KeyboardLayout&)> callback)
       override;
   std::unique_ptr<FileOperations> CreateFileOperations() override;
+  std::unique_ptr<UrlForwarderConfigurator> CreateUrlForwarderConfigurator()
+      override;
   std::string GetCapabilities() const override;
   void SetCapabilities(const std::string& capabilities) override;
   uint32_t GetDesktopSessionId() const override;
diff --git a/remoting/host/host_mock_objects.cc b/remoting/host/host_mock_objects.cc
index 5a30e03..bacbad2 100644
--- a/remoting/host/host_mock_objects.cc
+++ b/remoting/host/host_mock_objects.cc
@@ -62,6 +62,11 @@
   return base::WrapUnique(CreateFileOperationsPtr());
 }
 
+std::unique_ptr<UrlForwarderConfigurator>
+MockDesktopEnvironment::CreateUrlForwarderConfigurator() {
+  return base::WrapUnique(CreateUrlForwarderConfiguratorPtr());
+}
+
 std::unique_ptr<DesktopAndCursorConditionalComposer>
 MockDesktopEnvironment::CreateComposingVideoCapturer() {
   return base::WrapUnique(CreateComposingVideoCapturerPtr());
diff --git a/remoting/host/host_mock_objects.h b/remoting/host/host_mock_objects.h
index eecc9544..c8ded45 100644
--- a/remoting/host/host_mock_objects.h
+++ b/remoting/host/host_mock_objects.h
@@ -22,6 +22,7 @@
 #include "remoting/host/screen_controls.h"
 #include "remoting/host/screen_resolution.h"
 #include "remoting/host/security_key/security_key_auth_handler.h"
+#include "remoting/host/url_forwarder_configurator.h"
 #include "remoting/proto/control.pb.h"
 #include "remoting/proto/event.pb.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -51,6 +52,7 @@
       KeyboardLayoutMonitor*(
           base::RepeatingCallback<void(const protocol::KeyboardLayout&)>));
   MOCK_METHOD0(CreateFileOperationsPtr, FileOperations*());
+  MOCK_METHOD0(CreateUrlForwarderConfiguratorPtr, UrlForwarderConfigurator*());
   MOCK_CONST_METHOD0(GetCapabilities, std::string());
   MOCK_METHOD1(SetCapabilities, void(const std::string&));
   MOCK_CONST_METHOD0(GetDesktopSessionId, uint32_t());
@@ -69,6 +71,8 @@
       base::RepeatingCallback<void(const protocol::KeyboardLayout&)> callback)
       override;
   std::unique_ptr<FileOperations> CreateFileOperations() override;
+  std::unique_ptr<UrlForwarderConfigurator> CreateUrlForwarderConfigurator()
+      override;
   std::unique_ptr<DesktopAndCursorConditionalComposer>
   CreateComposingVideoCapturer() override;
 };
diff --git a/remoting/host/ipc_desktop_environment.cc b/remoting/host/ipc_desktop_environment.cc
index 9352b2cc..3c9e974 100644
--- a/remoting/host/ipc_desktop_environment.cc
+++ b/remoting/host/ipc_desktop_environment.cc
@@ -24,6 +24,7 @@
 #include "remoting/host/input_injector.h"
 #include "remoting/host/keyboard_layout_monitor.h"
 #include "remoting/host/screen_controls.h"
+#include "remoting/host/url_forwarder_configurator.h"
 #include "third_party/webrtc/modules/desktop_capture/desktop_capturer.h"
 #include "third_party/webrtc/modules/desktop_capture/mouse_cursor_monitor.h"
 
@@ -85,6 +86,12 @@
   return desktop_session_proxy_->CreateFileOperations();
 }
 
+std::unique_ptr<UrlForwarderConfigurator>
+IpcDesktopEnvironment::CreateUrlForwarderConfigurator() {
+  // TODO(yuweih): Get it from |desktop_session_proxy_|.
+  return UrlForwarderConfigurator::Create();
+}
+
 std::string IpcDesktopEnvironment::GetCapabilities() const {
   return desktop_session_proxy_->GetCapabilities();
 }
diff --git a/remoting/host/ipc_desktop_environment.h b/remoting/host/ipc_desktop_environment.h
index fa79351..fef092082 100644
--- a/remoting/host/ipc_desktop_environment.h
+++ b/remoting/host/ipc_desktop_environment.h
@@ -61,6 +61,8 @@
       base::RepeatingCallback<void(const protocol::KeyboardLayout&)> callback)
       override;
   std::unique_ptr<FileOperations> CreateFileOperations() override;
+  std::unique_ptr<UrlForwarderConfigurator> CreateUrlForwarderConfigurator()
+      override;
   std::string GetCapabilities() const override;
   void SetCapabilities(const std::string& capabilities) override;
   uint32_t GetDesktopSessionId() const override;
diff --git a/remoting/host/url_forwarder_configurator.cc b/remoting/host/url_forwarder_configurator.cc
index 39518ffc..64b995e 100644
--- a/remoting/host/url_forwarder_configurator.cc
+++ b/remoting/host/url_forwarder_configurator.cc
@@ -16,7 +16,7 @@
 #if !defined(OS_LINUX) && !defined(OS_WIN)
 
 // static
-UrlForwarderConfigurator* UrlForwarderConfigurator::GetInstance() {
+std::unique_ptr<UrlForwarderConfigurator> UrlForwarderConfigurator::Create() {
   // Unsupported platforms.
   NOTREACHED();
   return nullptr;
diff --git a/remoting/host/url_forwarder_configurator.h b/remoting/host/url_forwarder_configurator.h
index 80b68fa7..e525715 100644
--- a/remoting/host/url_forwarder_configurator.h
+++ b/remoting/host/url_forwarder_configurator.h
@@ -5,6 +5,8 @@
 #ifndef REMOTING_HOST_URL_FORWARDER_CONFIGURATOR_H_
 #define REMOTING_HOST_URL_FORWARDER_CONFIGURATOR_H_
 
+#include <memory>
+
 #include "base/callback.h"
 #include "remoting/proto/url_forwarder_control.pb.h"
 
@@ -14,24 +16,31 @@
 // default browser of the OS).
 class UrlForwarderConfigurator {
  public:
+  using SetUpUrlForwarderResponse =
+      protocol::UrlForwarderControl::SetUpUrlForwarderResponse;
   using IsUrlForwarderSetUpCallback = base::OnceCallback<void(bool)>;
-  using SetUpUrlForwarderCallback = base::RepeatingCallback<void(
-      protocol::UrlForwarderControl::SetUpUrlForwarderResponse::State)>;
+  using SetUpUrlForwarderCallback =
+      base::RepeatingCallback<void(SetUpUrlForwarderResponse::State)>;
 
-  static UrlForwarderConfigurator* GetInstance();
+  static std::unique_ptr<UrlForwarderConfigurator> Create();
+
+  virtual ~UrlForwarderConfigurator();
 
   // Runs |callback| with a boolean indicating whether the URL forwarder has
   // been properly set up.
+  // NOTE: |callback| may be called after |this| is destroyed. Make sure your
+  // callback can handle it.
   virtual void IsUrlForwarderSetUp(IsUrlForwarderSetUpCallback callback) = 0;
 
   // Sets the URL forwarder as the default browser; calls |callback| with any
   // state changes during the setup process. |callback| may be called multiple
   // times until the final state (either COMPLETE or ERROR) is reached.
+  // NOTE: |callback| may be called after |this| is destroyed. Make sure your
+  // callback can handle it.
   virtual void SetUpUrlForwarder(const SetUpUrlForwarderCallback& callback) = 0;
 
  protected:
   UrlForwarderConfigurator();
-  virtual ~UrlForwarderConfigurator();
 };
 
 }  // namespace remoting
diff --git a/remoting/host/url_forwarder_configurator_linux.cc b/remoting/host/url_forwarder_configurator_linux.cc
index 1bee73f..a05d4859 100644
--- a/remoting/host/url_forwarder_configurator_linux.cc
+++ b/remoting/host/url_forwarder_configurator_linux.cc
@@ -4,11 +4,12 @@
 
 #include "remoting/host/url_forwarder_configurator_linux.h"
 
+#include <memory>
+
 #include "base/base_paths.h"
 #include "base/bind.h"
 #include "base/command_line.h"
 #include "base/logging.h"
-#include "base/no_destructor.h"
 #include "base/path_service.h"
 #include "base/process/launch.h"
 #include "base/task/thread_pool.h"
@@ -42,7 +43,7 @@
   return ExecuteConfigScriptWithSwitch("setup")
              ? protocol::UrlForwarderControl::SetUpUrlForwarderResponse::
                    COMPLETE
-             : protocol::UrlForwarderControl::SetUpUrlForwarderResponse::ERROR;
+             : protocol::UrlForwarderControl::SetUpUrlForwarderResponse::FAILED;
 }
 
 }  // namespace
@@ -68,9 +69,8 @@
 }
 
 // static
-UrlForwarderConfigurator* UrlForwarderConfigurator::GetInstance() {
-  static base::NoDestructor<UrlForwarderConfiguratorLinux> instance;
-  return instance.get();
+std::unique_ptr<UrlForwarderConfigurator> UrlForwarderConfigurator::Create() {
+  return std::make_unique<UrlForwarderConfiguratorLinux>();
 }
 
 }  // namespace remoting
diff --git a/remoting/host/url_forwarder_configurator_linux.h b/remoting/host/url_forwarder_configurator_linux.h
index 06dde5c..98abe147 100644
--- a/remoting/host/url_forwarder_configurator_linux.h
+++ b/remoting/host/url_forwarder_configurator_linux.h
@@ -15,6 +15,7 @@
 class UrlForwarderConfiguratorLinux final : public UrlForwarderConfigurator {
  public:
   UrlForwarderConfiguratorLinux();
+  ~UrlForwarderConfiguratorLinux() override;
 
   void IsUrlForwarderSetUp(IsUrlForwarderSetUpCallback callback) override;
   void SetUpUrlForwarder(const SetUpUrlForwarderCallback& callback) override;
@@ -24,8 +25,6 @@
       const UrlForwarderConfiguratorLinux&) = delete;
 
  private:
-  ~UrlForwarderConfiguratorLinux() override;
-
   scoped_refptr<base::SequencedTaskRunner> io_task_runner_;
 };
 
diff --git a/remoting/host/url_forwarder_configurator_win.cc b/remoting/host/url_forwarder_configurator_win.cc
index 94667b6..0ddb94d 100644
--- a/remoting/host/url_forwarder_configurator_win.cc
+++ b/remoting/host/url_forwarder_configurator_win.cc
@@ -4,32 +4,138 @@
 
 #include "remoting/host/url_forwarder_configurator_win.h"
 
+#include <windows.h>
+#include <wtsapi32.h>
+#include <memory>
+#include <string>
+
+#include "base/base_paths.h"
+#include "base/bind.h"
+#include "base/command_line.h"
+#include "base/files/file_path.h"
+#include "base/location.h"
+#include "base/logging.h"
 #include "base/no_destructor.h"
 #include "base/notreached.h"
+#include "base/path_service.h"
+#include "base/process/launch.h"
+#include "base/sequence_checker.h"
+#include "base/task/task_traits.h"
+#include "base/task/thread_pool.h"
+#include "base/time/time.h"
+#include "base/win/scoped_handle.h"
+#include "remoting/host/switches.h"
 
 namespace remoting {
 
-UrlForwarderConfiguratorWin::UrlForwarderConfiguratorWin() = default;
+namespace {
 
-UrlForwarderConfiguratorWin::~UrlForwarderConfiguratorWin() = default;
+// If the user has already changed the default browser to the URL forwarder,
+// then the setup process will finish immediately without showing any UI, so we
+// delay reporting USER_INTERVENTION_REQUIRED so that the client doesn't pop up
+// a toast when it's unnecessary.
+constexpr base::TimeDelta kReportUserInterventionRequiredDelay =
+    base::TimeDelta::FromMilliseconds(500);
+
+base::win::ScopedHandle GetCurrentUserToken() {
+  HANDLE user_token = nullptr;
+  if (!WTSQueryUserToken(WTS_CURRENT_SESSION, &user_token)) {
+    PLOG(ERROR) << "Failed to get current user token";
+    return base::win::ScopedHandle();
+  }
+  return base::win::ScopedHandle(user_token);
+}
+
+// If |switch_name| is empty, the process will be launched with no extra
+// switches.
+bool LaunchConfiguratorProcess(const std::string& switch_name = std::string()) {
+  base::LaunchOptions launch_options;
+  auto current_user = GetCurrentUserToken();
+  if (!current_user.IsValid()) {
+    return false;
+  }
+  launch_options.as_user = current_user.Get();
+  // The remoting_desktop.exe binary (where this code runs) has extra manifest
+  // flags (uiAccess and requireAdministrator) that are undesirable for the
+  // url_forwarder_configurator child process, so remoting_host.exe is used
+  // instead.
+  base::FilePath path;
+  if (!base::PathService::Get(base::DIR_EXE, &path)) {
+    LOG(ERROR) << "Failed to get executable path.";
+    return false;
+  }
+  path = path.AppendASCII("remoting_host.exe");
+  base::CommandLine command(path);
+  command.AppendSwitchASCII(kProcessTypeSwitchName,
+                            kProcessTypeUrlForwarderConfigurator);
+  if (!switch_name.empty()) {
+    command.AppendSwitch(switch_name);
+  }
+  int exit_code = -1;
+  base::LaunchProcess(command, launch_options).WaitForExit(&exit_code);
+  return exit_code == 0;
+}
+
+}  // namespace
+
+UrlForwarderConfiguratorWin::UrlForwarderConfiguratorWin()
+    : io_task_runner_(base::ThreadPool::CreateSequencedTaskRunner(
+          {base::MayBlock(), base::WithBaseSyncPrimitives()})) {}
+
+UrlForwarderConfiguratorWin::~UrlForwarderConfiguratorWin() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+}
 
 void UrlForwarderConfiguratorWin::IsUrlForwarderSetUp(
     IsUrlForwarderSetUpCallback callback) {
-  NOTIMPLEMENTED();
-  std::move(callback).Run(true);
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  io_task_runner_->PostTaskAndReplyWithResult(
+      FROM_HERE, base::BindOnce(&LaunchConfiguratorProcess, std::string()),
+      std::move(callback));
 }
 
 void UrlForwarderConfiguratorWin::SetUpUrlForwarder(
     const SetUpUrlForwarderCallback& callback) {
-  NOTIMPLEMENTED();
-  callback.Run(
-      protocol::UrlForwarderControl::SetUpUrlForwarderResponse::COMPLETE);
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  if (set_up_url_forwarder_callback_) {
+    LOG(ERROR) << "Setup is already in progress.";
+    callback.Run(SetUpUrlForwarderResponse::FAILED);
+    return;
+  }
+
+  set_up_url_forwarder_callback_ = callback;
+  report_user_intervention_required_timer_.Start(
+      FROM_HERE, kReportUserInterventionRequiredDelay, this,
+      &UrlForwarderConfiguratorWin::OnReportUserInterventionRequired);
+  io_task_runner_->PostTaskAndReplyWithResult(
+      FROM_HERE,
+      base::BindOnce(&LaunchConfiguratorProcess, kSetUpUrlForwarderSwitchName),
+      base::BindOnce(&UrlForwarderConfiguratorWin::OnSetUpResponse,
+                     weak_factory_.GetWeakPtr()));
+}
+
+void UrlForwarderConfiguratorWin::OnSetUpResponse(bool success) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  report_user_intervention_required_timer_.AbandonAndStop();
+  set_up_url_forwarder_callback_.Run(success
+                                         ? SetUpUrlForwarderResponse::COMPLETE
+                                         : SetUpUrlForwarderResponse::FAILED);
+  set_up_url_forwarder_callback_.Reset();
+}
+
+void UrlForwarderConfiguratorWin::OnReportUserInterventionRequired() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  set_up_url_forwarder_callback_.Run(
+      SetUpUrlForwarderResponse::USER_INTERVENTION_REQUIRED);
 }
 
 // static
-UrlForwarderConfigurator* UrlForwarderConfigurator::GetInstance() {
-  static base::NoDestructor<UrlForwarderConfiguratorWin> instance;
-  return instance.get();
+std::unique_ptr<UrlForwarderConfigurator> UrlForwarderConfigurator::Create() {
+  return std::make_unique<UrlForwarderConfiguratorWin>();
 }
 
 }  // namespace remoting
diff --git a/remoting/host/url_forwarder_configurator_win.h b/remoting/host/url_forwarder_configurator_win.h
index 6192b59..dce3dab5 100644
--- a/remoting/host/url_forwarder_configurator_win.h
+++ b/remoting/host/url_forwarder_configurator_win.h
@@ -5,14 +5,22 @@
 #ifndef REMOTING_HOST_URL_FORWARDER_CONFIGURATOR_WIN_H_
 #define REMOTING_HOST_URL_FORWARDER_CONFIGURATOR_WIN_H_
 
+#include "base/memory/scoped_refptr.h"
+#include "base/memory/weak_ptr.h"
+#include "base/sequence_checker.h"
+#include "base/sequenced_task_runner.h"
+#include "base/thread_annotations.h"
+#include "base/timer/timer.h"
 #include "remoting/host/url_forwarder_configurator.h"
 
 namespace remoting {
 
 // Windows implementation of UrlForwarderConfigurator.
+// Note that this class requires elevated privileges.
 class UrlForwarderConfiguratorWin final : public UrlForwarderConfigurator {
  public:
   UrlForwarderConfiguratorWin();
+  ~UrlForwarderConfiguratorWin() override;
 
   void IsUrlForwarderSetUp(IsUrlForwarderSetUpCallback callback) override;
   void SetUpUrlForwarder(const SetUpUrlForwarderCallback& callback) override;
@@ -22,7 +30,18 @@
       delete;
 
  private:
-  ~UrlForwarderConfiguratorWin() override;
+  void OnSetUpResponse(bool success);
+  void OnReportUserInterventionRequired();
+
+  SEQUENCE_CHECKER(sequence_checker_);
+
+  scoped_refptr<base::SequencedTaskRunner> io_task_runner_;
+  SetUpUrlForwarderCallback set_up_url_forwarder_callback_
+      GUARDED_BY_CONTEXT(sequence_checker_);
+  base::OneShotTimer report_user_intervention_required_timer_
+      GUARDED_BY_CONTEXT(sequence_checker_);
+
+  base::WeakPtrFactory<UrlForwarderConfiguratorWin> weak_factory_{this};
 };
 
 }  // namespace remoting
diff --git a/remoting/host/url_forwarder_control_message_handler.cc b/remoting/host/url_forwarder_control_message_handler.cc
index 0599c55..b806705 100644
--- a/remoting/host/url_forwarder_control_message_handler.cc
+++ b/remoting/host/url_forwarder_control_message_handler.cc
@@ -17,9 +17,11 @@
 constexpr char UrlForwarderControlMessageHandler::kDataChannelName[];
 
 UrlForwarderControlMessageHandler::UrlForwarderControlMessageHandler(
+    std::unique_ptr<UrlForwarderConfigurator> url_forwarder_configurator,
     const std::string& name,
     std::unique_ptr<protocol::MessagePipe> pipe)
-    : protocol::NamedMessagePipeHandler(name, std::move(pipe)) {
+    : protocol::NamedMessagePipeHandler(name, std::move(pipe)),
+      url_forwarder_configurator_(std::move(url_forwarder_configurator)) {
   DCHECK_EQ(kDataChannelName, name);
 }
 
@@ -35,14 +37,13 @@
   auto url_forwarder_config =
       protocol::ParseMessage<protocol::UrlForwarderControl>(message.get());
   if (url_forwarder_config->has_query_config_state_request()) {
-    UrlForwarderConfigurator::GetInstance()->IsUrlForwarderSetUp(base::BindOnce(
+    url_forwarder_configurator_->IsUrlForwarderSetUp(base::BindOnce(
         &UrlForwarderControlMessageHandler::OnIsUrlForwarderSetUpResult,
         weak_factory_.GetWeakPtr()));
   } else if (url_forwarder_config->has_set_up_url_forwarder_request()) {
-    UrlForwarderConfigurator::GetInstance()->SetUpUrlForwarder(
-        base::BindRepeating(
-            &UrlForwarderControlMessageHandler::OnSetUpUrlForwarderResult,
-            weak_factory_.GetWeakPtr()));
+    url_forwarder_configurator_->SetUpUrlForwarder(base::BindRepeating(
+        &UrlForwarderControlMessageHandler::OnSetUpUrlForwarderResult,
+        weak_factory_.GetWeakPtr()));
   } else {
     LOG(ERROR) << "Unrecognized UrlForwarderControl message.";
   }
diff --git a/remoting/host/url_forwarder_control_message_handler.h b/remoting/host/url_forwarder_control_message_handler.h
index a92eaa2..250a8dd2 100644
--- a/remoting/host/url_forwarder_control_message_handler.h
+++ b/remoting/host/url_forwarder_control_message_handler.h
@@ -7,11 +7,15 @@
 
 #include "remoting/protocol/named_message_pipe_handler.h"
 
+#include <memory>
+
 #include "base/memory/weak_ptr.h"
 #include "remoting/proto/url_forwarder_control.pb.h"
 
 namespace remoting {
 
+class UrlForwarderConfigurator;
+
 // Message handler for the url-forwarder-control data channel.
 class UrlForwarderControlMessageHandler final
     : public protocol::NamedMessagePipeHandler {
@@ -19,6 +23,7 @@
   static constexpr char kDataChannelName[] = "url-forwarder-control";
 
   UrlForwarderControlMessageHandler(
+      std::unique_ptr<UrlForwarderConfigurator> url_forwarder_configurator,
       const std::string& name,
       std::unique_ptr<protocol::MessagePipe> pipe);
   ~UrlForwarderControlMessageHandler() override;
@@ -38,6 +43,8 @@
   void OnSetUpUrlForwarderResult(
       protocol::UrlForwarderControl::SetUpUrlForwarderResponse::State state);
 
+  std::unique_ptr<UrlForwarderConfigurator> url_forwarder_configurator_;
+
   base::WeakPtrFactory<UrlForwarderControlMessageHandler> weak_factory_{this};
 };
 
diff --git a/remoting/proto/url_forwarder_control.proto b/remoting/proto/url_forwarder_control.proto
index c066c6e..2284208cb 100644
--- a/remoting/proto/url_forwarder_control.proto
+++ b/remoting/proto/url_forwarder_control.proto
@@ -41,7 +41,7 @@
       COMPLETE = 1;
 
       // The setup process has failed.
-      ERROR = 2;
+      FAILED = 2;
 
       // The setup process requires user intervention. The host will send
       // another SetUpUrlForwarderResponse once the setup process becomes
diff --git a/services/device/BUILD.gn b/services/device/BUILD.gn
index 3468be4..d1956023 100644
--- a/services/device/BUILD.gn
+++ b/services/device/BUILD.gn
@@ -356,7 +356,8 @@
   }
 
   # UsbContext is a libusb-specific object.
-  if (is_mac || is_win) {
+  # TODO(https://crbug.com/1096743) Remove these tests.
+  if (is_mac) {
     sources += [ "usb/usb_context_unittest.cc" ]
     deps += [ "//third_party/libusb" ]
   }
diff --git a/services/device/usb/BUILD.gn b/services/device/usb/BUILD.gn
index 348e922..bb40dc9 100644
--- a/services/device/usb/BUILD.gn
+++ b/services/device/usb/BUILD.gn
@@ -62,10 +62,14 @@
       "usb_service_android.cc",
       "usb_service_android.h",
     ]
+
+    deps += [ ":jni_headers" ]
   }
 
   if (is_win) {
     sources += [
+      "scoped_winusb_handle.cc",
+      "scoped_winusb_handle.h",
       "usb_device_handle_win.cc",
       "usb_device_handle_win.h",
       "usb_device_win.cc",
@@ -73,6 +77,13 @@
       "usb_service_win.cc",
       "usb_service_win.h",
     ]
+
+    libs = [
+      "setupapi.lib",
+      "winusb.lib",
+    ]
+
+    deps += [ "//third_party/re2" ]
   }
 
   if (is_mac) {
@@ -84,30 +95,9 @@
       "usb_service_mac.cc",
       "usb_service_mac.h",
     ]
-  }
 
-  if (is_linux || is_chromeos) {
-    sources += [
-      "usb_device_linux.cc",
-      "usb_device_linux.h",
-    ]
-  }
-
-  if (use_udev) {
-    if (is_linux || is_chromeos) {
-      sources += [
-        "usb_service_linux.cc",
-        "usb_service_linux.h",
-      ]
-    }
-    deps += [ "//device/udev_linux" ]
-  }
-
-  if (is_android) {
-    deps += [ ":jni_headers" ]
-  }
-
-  if (is_win || is_mac) {
+    # These sources and deps are required for libusb.
+    # TODO(https://crbug.com/1096743) Remove these sources.
     sources += [
       "scoped_libusb_device_handle.cc",
       "scoped_libusb_device_handle.h",
@@ -128,18 +118,21 @@
     deps += [ "//third_party/libusb" ]
   }
 
-  if (is_win) {
+  if (is_linux || is_chromeos) {
     sources += [
-      "scoped_winusb_handle.cc",
-      "scoped_winusb_handle.h",
+      "usb_device_linux.cc",
+      "usb_device_linux.h",
     ]
+  }
 
-    libs = [
-      "setupapi.lib",
-      "winusb.lib",
-    ]
-
-    deps += [ "//third_party/re2" ]
+  if (use_udev) {
+    if (is_linux || is_chromeos) {
+      sources += [
+        "usb_service_linux.cc",
+        "usb_service_linux.h",
+      ]
+    }
+    deps += [ "//device/udev_linux" ]
   }
 
   if (is_android || is_chromeos || is_linux) {
diff --git a/services/device/usb/usb_context_unittest.cc b/services/device/usb/usb_context_unittest.cc
index 6f1faee..0148827e 100644
--- a/services/device/usb/usb_context_unittest.cc
+++ b/services/device/usb/usb_context_unittest.cc
@@ -5,7 +5,6 @@
 #include "services/device/usb/usb_context.h"
 #include "base/macros.h"
 #include "base/threading/platform_thread.h"
-#include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/libusb/src/libusb/libusb.h"
 
@@ -28,17 +27,7 @@
 
 }  // namespace
 
-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
-// Linux trybot does not support usb.
-#define MAYBE_GracefulShutdown DISABLED_GracefulShutdown
-#elif defined(OS_ANDROID)
-// Android build does not include usb support.
-#define MAYBE_GracefulShutdown DISABLED_GracefulShutdown
-#else
-#define MAYBE_GracefulShutdown GracefulShutdown
-#endif
-
-TEST_F(UsbContextTest, MAYBE_GracefulShutdown) {
+TEST_F(UsbContextTest, GracefulShutdown) {
   base::TimeTicks start = base::TimeTicks::Now();
   {
     PlatformUsbContext platform_context;
diff --git a/services/device/usb/usb_service.cc b/services/device/usb/usb_service.cc
index f3a8da62..7c23cce 100644
--- a/services/device/usb/usb_service.cc
+++ b/services/device/usb/usb_service.cc
@@ -23,14 +23,12 @@
 #include "services/device/usb/usb_service_android.h"
 #elif defined(USE_UDEV)
 #include "services/device/usb/usb_service_linux.h"
-#else
-#if defined(OS_MAC)
+#elif defined(OS_MAC)
+#include "services/device/usb/usb_service_impl.h"
 #include "services/device/usb/usb_service_mac.h"
 #elif defined(OS_WIN)
 #include "services/device/usb/usb_service_win.h"
 #endif
-#include "services/device/usb/usb_service_impl.h"
-#endif
 
 namespace device {
 
@@ -55,10 +53,7 @@
 #elif defined(USE_UDEV)
   return base::WrapUnique(new UsbServiceLinux());
 #elif defined(OS_WIN)
-  if (base::FeatureList::IsEnabled(kNewUsbBackend))
-    return base::WrapUnique(new UsbServiceWin());
-  else
-    return base::WrapUnique(new UsbServiceImpl());
+  return base::WrapUnique(new UsbServiceWin());
 #elif defined(OS_MAC)
   if (base::FeatureList::IsEnabled(kNewUsbBackend))
     return base::WrapUnique(new UsbServiceMac());
diff --git a/services/device/usb/usb_service_impl.cc b/services/device/usb/usb_service_impl.cc
index 0b38f32..74bfe41d 100644
--- a/services/device/usb/usb_service_impl.cc
+++ b/services/device/usb/usb_service_impl.cc
@@ -31,16 +31,6 @@
 #include "services/device/usb/webusb_descriptors.h"
 #include "third_party/libusb/src/libusb/libusb.h"
 
-#if defined(OS_WIN)
-#define INITGUID
-#include <devpkey.h>
-#include <setupapi.h>
-#include <usbiodef.h>
-
-#include "base/strings/string_util.h"
-#include "device/base/device_info_query_win.h"
-#endif  // OS_WIN
-
 namespace device {
 
 namespace {
@@ -48,42 +38,6 @@
 // Standard USB requests and descriptor types:
 const uint16_t kUsbVersion2_1 = 0x0210;
 
-#if defined(OS_WIN)
-
-bool IsWinUsbInterface(const std::wstring& device_path) {
-  DeviceInfoQueryWin device_info_query;
-  if (!device_info_query.device_info_list_valid()) {
-    USB_PLOG(ERROR) << "Failed to create a device information set";
-    return false;
-  }
-
-  // This will add the device so we can query driver info.
-  if (!device_info_query.AddDevice(device_path)) {
-    USB_PLOG(ERROR) << "Failed to get device interface data for "
-                    << device_path;
-    return false;
-  }
-
-  if (!device_info_query.GetDeviceInfo()) {
-    USB_PLOG(ERROR) << "Failed to get device info for " << device_path;
-    return false;
-  }
-
-  std::string buffer;
-  if (!device_info_query.GetDeviceStringProperty(DEVPKEY_Device_Service,
-                                                 &buffer)) {
-    USB_PLOG(ERROR) << "Failed to get device service property";
-    return false;
-  }
-
-  USB_LOG(DEBUG) << "Driver for " << device_path << " is " << buffer << ".";
-  if (base::StartsWith(buffer, "WinUSB", base::CompareCase::INSENSITIVE_ASCII))
-    return true;
-  return false;
-}
-
-#endif  // OS_WIN
-
 scoped_refptr<UsbContext> InitializeUsbContextBlocking() {
   PlatformUsbContext platform_context = nullptr;
   int rv = libusb_init(&platform_context);
@@ -97,21 +51,10 @@
 }
 
 absl::optional<std::vector<ScopedLibusbDeviceRef>> GetDeviceListBlocking(
-    const std::wstring& new_device_path,
     scoped_refptr<UsbContext> usb_context) {
   base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
                                                 base::BlockingType::MAY_BLOCK);
 
-#if defined(OS_WIN)
-  if (!new_device_path.empty()) {
-    if (!IsWinUsbInterface(new_device_path)) {
-      // Wait to call libusb_get_device_list until libusb will be able to find
-      // a WinUSB interface for the device.
-      return absl::nullopt;
-    }
-  }
-#endif  // defined(OS_WIN)
-
   libusb_device** platform_devices = NULL;
   const ssize_t device_count =
       libusb_get_device_list(usb_context->context(), &platform_devices);
@@ -241,7 +184,7 @@
 
 UsbServiceImpl::~UsbServiceImpl() {
   NotifyWillDestroyUsbService();
-  if (hotplug_enabled_)
+  if (context_)
     libusb_hotplug_deregister_callback(context_->context(), hotplug_handle_);
 }
 
@@ -255,40 +198,14 @@
     return;
   }
 
-  if (hotplug_enabled_ && !enumeration_in_progress_) {
-    // The device list is updated live when hotplug events are supported.
-    UsbService::GetDevices(std::move(callback));
-  } else {
+  if (enumeration_in_progress_) {
     pending_enumeration_callbacks_.push_back(std::move(callback));
-    RefreshDevices();
+    return;
   }
+
+  UsbService::GetDevices(std::move(callback));
 }
 
-#if defined(OS_WIN)
-
-void UsbServiceImpl::OnDeviceAdded(const GUID& class_guid,
-                                   const std::wstring& device_path) {
-  // Only the root node of a composite USB device has the class GUID
-  // GUID_DEVINTERFACE_USB_DEVICE but we want to wait until WinUSB is loaded.
-  // This first pass filter will catch anything that's sitting on the USB bus
-  // (including devices on 3rd party USB controllers) to avoid the more
-  // expensive driver check that needs to be done on the FILE thread.
-  if (device_path.find(L"usb") != std::wstring::npos) {
-    pending_path_enumerations_.push(device_path);
-    RefreshDevices();
-  }
-}
-
-void UsbServiceImpl::OnDeviceRemoved(const GUID& class_guid,
-                                     const std::wstring& device_path) {
-  // The root USB device node is removed last.
-  if (class_guid == GUID_DEVINTERFACE_USB_DEVICE) {
-    RefreshDevices();
-  }
-}
-
-#endif  // OS_WIN
-
 void UsbServiceImpl::OnUsbContext(scoped_refptr<UsbContext> context) {
   if (!context) {
     usb_unavailable_ = true;
@@ -304,37 +221,27 @@
       static_cast<libusb_hotplug_flag>(0), LIBUSB_HOTPLUG_MATCH_ANY,
       LIBUSB_HOTPLUG_MATCH_ANY, LIBUSB_HOTPLUG_MATCH_ANY,
       &UsbServiceImpl::HotplugCallback, this, &hotplug_handle_);
-  if (rv == LIBUSB_SUCCESS)
-    hotplug_enabled_ = true;
+  if (rv != LIBUSB_SUCCESS) {
+    usb_unavailable_ = true;
+    context_.reset();
+    return;
+  }
 
   // This will call any enumeration callbacks queued while initializing.
   RefreshDevices();
-
-#if defined(OS_WIN)
-  DeviceMonitorWin* device_monitor = DeviceMonitorWin::GetForAllInterfaces();
-  if (device_monitor)
-    device_observation_.Observe(device_monitor);
-#endif  // OS_WIN
 }
 
 void UsbServiceImpl::RefreshDevices() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-
-  if (!context_ || enumeration_in_progress_)
-    return;
+  DCHECK(context_);
+  DCHECK(!enumeration_in_progress_);
 
   enumeration_in_progress_ = true;
   DCHECK(devices_being_enumerated_.empty());
 
-  std::wstring device_path;
-  if (!pending_path_enumerations_.empty()) {
-    device_path = pending_path_enumerations_.front();
-    pending_path_enumerations_.pop();
-  }
-
   base::ThreadPool::PostTaskAndReplyWithResult(
       FROM_HERE, kBlockingTaskTraits,
-      base::BindOnce(&GetDeviceListBlocking, device_path, context_),
+      base::BindOnce(&GetDeviceListBlocking, context_),
       base::BindOnce(&UsbServiceImpl::OnDeviceList,
                      weak_factory_.GetWeakPtr()));
 }
@@ -415,10 +322,6 @@
     for (GetDevicesCallback& callback : callbacks)
       std::move(callback).Run(result);
   }
-
-  if (!pending_path_enumerations_.empty()) {
-    RefreshDevices();
-  }
 }
 
 void UsbServiceImpl::EnumerateDevice(ScopedLibusbDeviceRef platform_device,
diff --git a/services/device/usb/usb_service_impl.h b/services/device/usb/usb_service_impl.h
index 21edd890..fcb24e4 100644
--- a/services/device/usb/usb_service_impl.h
+++ b/services/device/usb/usb_service_impl.h
@@ -24,11 +24,6 @@
 #include "third_party/abseil-cpp/absl/types/optional.h"
 #include "third_party/libusb/src/libusb/libusb.h"
 
-#if defined(OS_WIN)
-#include "base/scoped_observation.h"
-#include "device/base/device_monitor_win.h"
-#endif  // OS_WIN
-
 struct libusb_context;
 
 namespace device {
@@ -37,11 +32,7 @@
 
 class UsbDeviceImpl;
 
-class UsbServiceImpl final :
-#if defined(OS_WIN)
-    public DeviceMonitorWin::Observer,
-#endif  // OS_WIN
-    public UsbService {
+class UsbServiceImpl final : public UsbService {
  public:
   UsbServiceImpl();
   ~UsbServiceImpl() override;
@@ -50,14 +41,6 @@
   // device::UsbService implementation
   void GetDevices(GetDevicesCallback callback) override;
 
-#if defined(OS_WIN)
-  // device::DeviceMonitorWin::Observer implementation
-  void OnDeviceAdded(const GUID& class_guid,
-                     const std::wstring& device_path) override;
-  void OnDeviceRemoved(const GUID& class_guid,
-                       const std::wstring& device_path) override;
-#endif  // OS_WIN
-
   void OnUsbContext(scoped_refptr<UsbContext> context);
 
   // Enumerate USB devices from OS and update devices_ map.
@@ -94,14 +77,11 @@
 
   // When available the device list will be updated when new devices are
   // connected instead of only when a full enumeration is requested.
-  // TODO(reillyg): Support this on all platforms. crbug.com/411715
-  bool hotplug_enabled_ = false;
   libusb_hotplug_callback_handle hotplug_handle_;
 
   // Enumeration callbacks are queued until an enumeration completes.
   bool enumeration_ready_ = false;
   bool enumeration_in_progress_ = false;
-  base::queue<std::wstring> pending_path_enumerations_;
   std::vector<GetDevicesCallback> pending_enumeration_callbacks_;
 
   // The map from libusb_device to UsbDeviceImpl. The key is a weak pointer to
@@ -119,11 +99,6 @@
   // UsbDeviceImpl.
   std::set<libusb_device*> devices_being_enumerated_;
 
-#if defined(OS_WIN)
-  base::ScopedObservation<DeviceMonitorWin, DeviceMonitorWin::Observer>
-      device_observation_{this};
-#endif  // OS_WIN
-
   // This WeakPtr is used to safely post hotplug events back to the thread this
   // object lives on.
   base::WeakPtr<UsbServiceImpl> weak_self_;
diff --git a/services/device/usb/usb_service_unittest.cc b/services/device/usb/usb_service_unittest.cc
index 971ec7d4..ada5b04 100644
--- a/services/device/usb/usb_service_unittest.cc
+++ b/services/device/usb/usb_service_unittest.cc
@@ -54,7 +54,7 @@
   }
 }
 
-#if defined(OS_WIN)
+#if defined(OS_MAC)
 TEST_F(UsbServiceTest, GetDevicesNewBackend) {
   base::test::ScopedFeatureList features;
   features.InitAndEnableFeature(device::kNewUsbBackend);
@@ -66,7 +66,7 @@
     loop.Run();
   }
 }
-#endif  // defined(OS_WIN)
+#endif  // defined(OS_MAC)
 
 TEST_F(UsbServiceTest, ClaimGadget) {
   if (!UsbTestGadget::IsTestEnabled() || !usb_service_)
diff --git a/services/device/usb/usb_service_win.cc b/services/device/usb/usb_service_win.cc
index 3b68c55..554c351 100644
--- a/services/device/usb/usb_service_win.cc
+++ b/services/device/usb/usb_service_win.cc
@@ -4,14 +4,16 @@
 
 #include "services/device/usb/usb_service_win.h"
 
+// windows.h must be included first.
+#include <windows.h>
+
+#define INITGUID
+
+#include <devpkey.h>
 #include <objbase.h>
 #include <setupapi.h>
 #include <stdint.h>
 #include <usbiodef.h>
-#include "base/strings/string_piece_forward.h"
-
-#define INITGUID
-#include <devpkey.h>
 
 #include "base/bind.h"
 #include "base/containers/contains.h"
@@ -21,6 +23,7 @@
 #include "base/scoped_generic.h"
 #include "base/single_thread_task_runner.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/strings/string_piece_forward.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
 #include "base/strings/sys_string_conversions.h"
diff --git a/services/network/public/cpp/cookie_manager_mojom_traits.cc b/services/network/public/cpp/cookie_manager_mojom_traits.cc
index 75cba47f..a360c568 100644
--- a/services/network/public/cpp/cookie_manager_mojom_traits.cc
+++ b/services/network/public/cpp/cookie_manager_mojom_traits.cc
@@ -463,6 +463,17 @@
   return true;
 }
 
+bool StructTraits<network::mojom::CookiePartitionKeyDataView,
+                  net::CookiePartitionKey>::
+    Read(network::mojom::CookiePartitionKeyDataView partition_key,
+         net::CookiePartitionKey* out) {
+  net::SchemefulSite site;
+  if (!partition_key.ReadSite(&site))
+    return false;
+  *out = net::CookiePartitionKey(site);
+  return true;
+}
+
 bool StructTraits<
     network::mojom::CanonicalCookieDataView,
     net::CanonicalCookie>::Read(network::mojom::CanonicalCookieDataView cookie,
@@ -503,7 +514,7 @@
   if (!cookie.ReadPriority(&priority))
     return false;
 
-  absl::optional<net::SchemefulSite> partition_key;
+  absl::optional<net::CookiePartitionKey> partition_key;
   if (!cookie.ReadPartitionKey(&partition_key))
     return false;
 
diff --git a/services/network/public/cpp/cookie_manager_mojom_traits.h b/services/network/public/cpp/cookie_manager_mojom_traits.h
index 1cffb4c..4b2914f 100644
--- a/services/network/public/cpp/cookie_manager_mojom_traits.h
+++ b/services/network/public/cpp/cookie_manager_mojom_traits.h
@@ -12,6 +12,7 @@
 #include "net/cookies/cookie_constants.h"
 #include "net/cookies/cookie_inclusion_status.h"
 #include "net/cookies/cookie_options.h"
+#include "net/cookies/cookie_partition_key.h"
 #include "net/cookies/same_party_context.h"
 #include "services/network/public/mojom/cookie_manager.mojom.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
@@ -176,6 +177,16 @@
 };
 
 template <>
+struct StructTraits<network::mojom::CookiePartitionKeyDataView,
+                    net::CookiePartitionKey> {
+  static const net::SchemefulSite& site(const net::CookiePartitionKey& pk) {
+    return pk.site_;
+  }
+  static bool Read(network::mojom::CookiePartitionKeyDataView partition_key,
+                   net::CookiePartitionKey* out);
+};
+
+template <>
 struct StructTraits<network::mojom::CanonicalCookieDataView,
                     net::CanonicalCookie> {
   static const std::string& name(const net::CanonicalCookie& c) {
@@ -213,7 +224,7 @@
   static bool same_party(const net::CanonicalCookie& c) {
     return c.IsSameParty();
   }
-  static absl::optional<net::SchemefulSite> partition_key(
+  static absl::optional<net::CookiePartitionKey> partition_key(
       const net::CanonicalCookie& c) {
     return c.PartitionKey();
   }
diff --git a/services/network/public/cpp/cookie_manager_mojom_traits_unittest.cc b/services/network/public/cpp/cookie_manager_mojom_traits_unittest.cc
index d07336b..1d90d68 100644
--- a/services/network/public/cpp/cookie_manager_mojom_traits_unittest.cc
+++ b/services/network/public/cpp/cookie_manager_mojom_traits_unittest.cc
@@ -382,8 +382,8 @@
       "__Host-A", "B", "x.y", "/", base::Time(), base::Time(), base::Time(),
       true, false, net::CookieSameSite::NO_RESTRICTION,
       net::COOKIE_PRIORITY_LOW, false,
-      absl::make_optional(
-          net::SchemefulSite::Deserialize("https://toplevelsite.com")),
+      absl::make_optional(net::CookiePartitionKey::FromURLForTesting(
+          GURL("https://toplevelsite.com"))),
       net::CookieSourceScheme::kSecure, 8433);
 
   net::CanonicalCookie copied;
diff --git a/services/network/public/mojom/cookie_manager.mojom b/services/network/public/mojom/cookie_manager.mojom
index bd68604..6c7a74b 100644
--- a/services/network/public/mojom/cookie_manager.mojom
+++ b/services/network/public/mojom/cookie_manager.mojom
@@ -149,6 +149,10 @@
   bool is_in_nontrivial_first_party_set = false;
 };
 
+struct CookiePartitionKey {
+  SchemefulSite site;
+};
+
 // See net/cookies/canonical_cookie.{h,cc} for documentation.
 // Keep defaults here in sync with those files.
 struct CanonicalCookie {
@@ -165,7 +169,7 @@
   CookiePriority priority = MEDIUM;
   CookieSourceScheme source_scheme = kUnset;
   bool same_party = false;
-  SchemefulSite? partition_key;
+  CookiePartitionKey? partition_key;
   // -1 because of url::PORT_UNSPECIFIED
   // url/third_party/mozilla/url_parse.h
   int32 source_port = -1;
diff --git a/storage/browser/file_system/file_system_context.cc b/storage/browser/file_system/file_system_context.cc
index 0ee2e624..c4f9208 100644
--- a/storage/browser/file_system/file_system_context.cc
+++ b/storage/browser/file_system/file_system_context.cc
@@ -99,7 +99,6 @@
 
     case kFileSystemTypeLocalForPlatformApp:
     case kFileSystemTypeLocal:
-    case kFileSystemTypeCloudDevice:
     case kFileSystemTypeProvided:
     case kFileSystemTypeDeviceMediaAsFileStorage:
     case kFileSystemTypeDriveFs:
diff --git a/storage/common/file_system/file_system_types.h b/storage/common/file_system/file_system_types.h
index c171e0f..0677b34c 100644
--- a/storage/common/file_system/file_system_types.h
+++ b/storage/common/file_system/file_system_types.h
@@ -103,9 +103,6 @@
   // given identifier in each origin.
   kFileSystemTypePluginPrivate,
 
-  // A filesystem that is mounted via the Privet storage protocol.
-  kFileSystemTypeCloudDevice,
-
   // A filesystem that is mounted via the FileSystemProvider API.
   kFileSystemTypeProvided,
 
diff --git a/storage/common/file_system/file_system_util.cc b/storage/common/file_system/file_system_util.cc
index be9fcef..dfb3ca95 100644
--- a/storage/common/file_system/file_system_util.cc
+++ b/storage/common/file_system/file_system_util.cc
@@ -284,8 +284,6 @@
       return "TransientFile";
     case kFileSystemTypePluginPrivate:
       return "PluginPrivate";
-    case kFileSystemTypeCloudDevice:
-      return "CloudDevice";
     case kFileSystemTypeProvided:
       return "Provided";
     case kFileSystemTypeDeviceMediaAsFileStorage:
diff --git a/testing/android/native_test/java/AndroidManifest.xml.jinja2 b/testing/android/native_test/java/AndroidManifest.xml.jinja2
index 2ffecbb3..5cd0612 100644
--- a/testing/android/native_test/java/AndroidManifest.xml.jinja2
+++ b/testing/android/native_test/java/AndroidManifest.xml.jinja2
@@ -28,9 +28,16 @@
          breaks test listing. See
          https://developer.android.com/training/data-storage#scoped-storage and
          https://developer.android.com/training/data-storage/compatibility. -->
+    {% if allow_cleartext_traffic == 'true' %}
+    <application android:label="NativeTests"
+            android:usesCleartextTraffic="true"
+            android:requestLegacyExternalStorage="true"
+            android:name="org.chromium.native_test.NativeTestApplication">
+    {% else %}
     <application android:label="NativeTests"
             android:requestLegacyExternalStorage="true"
             android:name="org.chromium.native_test.NativeTestApplication">
+    {% endif %}
         <uses-library android:name="android.test.runner"/>
         {% if use_native_activity == 'true' %}
         <activity android:name=".NativeUnitTestNativeActivity"
diff --git a/testing/buildbot/chrome.json b/testing/buildbot/chrome.json
index abab8bc..20ceb09 100644
--- a/testing/buildbot/chrome.json
+++ b/testing/buildbot/chrome.json
@@ -20,7 +20,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -59,6 +60,10 @@
         "merge": {
           "script": "//tools/perf/process_perf_results.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -103,6 +108,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -136,6 +145,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -173,6 +186,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -206,6 +223,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -240,7 +261,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -277,6 +299,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -312,6 +338,10 @@
         "merge": {
           "script": "//tools/perf/process_perf_results.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -346,6 +376,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -379,6 +413,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -412,6 +450,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -445,6 +487,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -478,6 +524,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -511,6 +561,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -547,6 +601,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -580,6 +638,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -613,6 +675,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -649,6 +715,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "cipd_packages": [
@@ -698,6 +768,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -734,6 +808,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -767,6 +845,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -800,6 +882,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -837,6 +923,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -870,6 +960,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -903,6 +997,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -936,6 +1034,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -985,6 +1087,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -1030,7 +1136,8 @@
         },
         "name": "telemetry_perf_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1076,7 +1183,8 @@
         },
         "name": "telemetry_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1122,6 +1230,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -1145,7 +1257,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1173,6 +1286,10 @@
         "merge": {
           "script": "//tools/perf/process_perf_results.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -1207,7 +1324,8 @@
         },
         "name": "telemetry_perf_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1240,7 +1358,8 @@
         },
         "name": "telemetry_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1275,6 +1394,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -1298,7 +1421,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1326,6 +1450,10 @@
         "merge": {
           "script": "//tools/perf/process_perf_results.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -1360,7 +1488,8 @@
         },
         "name": "telemetry_perf_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1402,7 +1531,8 @@
         },
         "name": "lacros_all_tast_tests_eve",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1431,7 +1561,8 @@
         },
         "name": "chrome_sizes",
         "resultdb": {
-          "enable": false
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json
index e769bdc..63a5db9 100644
--- a/testing/buildbot/chromium.android.json
+++ b/testing/buildbot/chromium.android.json
@@ -31416,6 +31416,77 @@
     "gtest_tests": [
       {
         "args": [
+          "--test-launcher-batch-limit=1",
+          "--gs-results-bucket=chromium-result-details",
+          "--recover-devices",
+          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
+        ],
+        "merge": {
+          "args": [
+            "--bucket",
+            "chromium-result-details",
+            "--test-name",
+            "android_sync_integration_tests"
+          ],
+          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
+        },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "device_os": null,
+              "device_type": null,
+              "machine_type": "n1-standard-4|e2-standard-4",
+              "os": "Ubuntu-16.04|Ubuntu-18.04",
+              "pool": "chromium.tests.avd"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "avd_generic_android23",
+              "path": ".android"
+            },
+            {
+              "name": "system_images_android_23_google_apis_x86",
+              "path": ".emulator_sdk"
+            }
+          ],
+          "optional_dimensions": {
+            "60": [
+              {
+                "caches": "avd_generic_android23"
+              }
+            ]
+          },
+          "output_links": [
+            {
+              "link": [
+                "https://luci-logdog.appspot.com/v/?s",
+                "=android%2Fswarming%2Flogcats%2F",
+                "${TASK_ID}%2F%2B%2Funified_logcats"
+              ],
+              "name": "shard #${SHARD_INDEX} logcats"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test": "android_sync_integration_tests",
+        "test_id_prefix": "ninja://chrome/test:android_sync_integration_tests/"
+      },
+      {
+        "args": [
           "--gs-results-bucket=chromium-result-details",
           "--recover-devices",
           "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
@@ -31491,6 +31562,77 @@
           "--gs-results-bucket=chromium-result-details",
           "--recover-devices",
           "--avd-config=../../tools/android/avd/proto/generic_android23.textpb",
+          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.cc_unittests.filter"
+        ],
+        "merge": {
+          "args": [
+            "--bucket",
+            "chromium-result-details",
+            "--test-name",
+            "cc_unittests"
+          ],
+          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
+        },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "device_os": null,
+              "device_type": null,
+              "machine_type": "n1-standard-4|e2-standard-4",
+              "os": "Ubuntu-16.04|Ubuntu-18.04",
+              "pool": "chromium.tests.avd"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "avd_generic_android23",
+              "path": ".android"
+            },
+            {
+              "name": "system_images_android_23_google_apis_x86",
+              "path": ".emulator_sdk"
+            }
+          ],
+          "optional_dimensions": {
+            "60": [
+              {
+                "caches": "avd_generic_android23"
+              }
+            ]
+          },
+          "output_links": [
+            {
+              "link": [
+                "https://luci-logdog.appspot.com/v/?s",
+                "=android%2Fswarming%2Flogcats%2F",
+                "${TASK_ID}%2F%2B%2Funified_logcats"
+              ],
+              "name": "shard #${SHARD_INDEX} logcats"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test": "cc_unittests",
+        "test_id_prefix": "ninja://cc:cc_unittests/"
+      },
+      {
+        "args": [
+          "--gs-results-bucket=chromium-result-details",
+          "--recover-devices",
+          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb",
           "--git-revision=${got_revision}"
         ],
         "merge": {
@@ -31862,6 +32004,287 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
+            "device_unittests"
+          ],
+          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
+        },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "device_os": null,
+              "device_type": null,
+              "machine_type": "n1-standard-4|e2-standard-4",
+              "os": "Ubuntu-16.04|Ubuntu-18.04",
+              "pool": "chromium.tests.avd"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "avd_generic_android23",
+              "path": ".android"
+            },
+            {
+              "name": "system_images_android_23_google_apis_x86",
+              "path": ".emulator_sdk"
+            }
+          ],
+          "optional_dimensions": {
+            "60": [
+              {
+                "caches": "avd_generic_android23"
+              }
+            ]
+          },
+          "output_links": [
+            {
+              "link": [
+                "https://luci-logdog.appspot.com/v/?s",
+                "=android%2Fswarming%2Flogcats%2F",
+                "${TASK_ID}%2F%2B%2Funified_logcats"
+              ],
+              "name": "shard #${SHARD_INDEX} logcats"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test": "device_unittests",
+        "test_id_prefix": "ninja://device:device_unittests/"
+      },
+      {
+        "args": [
+          "--gs-results-bucket=chromium-result-details",
+          "--recover-devices",
+          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
+        ],
+        "merge": {
+          "args": [
+            "--bucket",
+            "chromium-result-details",
+            "--test-name",
+            "display_unittests"
+          ],
+          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
+        },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "device_os": null,
+              "device_type": null,
+              "machine_type": "n1-standard-4|e2-standard-4",
+              "os": "Ubuntu-16.04|Ubuntu-18.04",
+              "pool": "chromium.tests.avd"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "avd_generic_android23",
+              "path": ".android"
+            },
+            {
+              "name": "system_images_android_23_google_apis_x86",
+              "path": ".emulator_sdk"
+            }
+          ],
+          "optional_dimensions": {
+            "60": [
+              {
+                "caches": "avd_generic_android23"
+              }
+            ]
+          },
+          "output_links": [
+            {
+              "link": [
+                "https://luci-logdog.appspot.com/v/?s",
+                "=android%2Fswarming%2Flogcats%2F",
+                "${TASK_ID}%2F%2B%2Funified_logcats"
+              ],
+              "name": "shard #${SHARD_INDEX} logcats"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test": "display_unittests",
+        "test_id_prefix": "ninja://ui/display:display_unittests/"
+      },
+      {
+        "args": [
+          "--gs-results-bucket=chromium-result-details",
+          "--recover-devices",
+          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
+        ],
+        "merge": {
+          "args": [
+            "--bucket",
+            "chromium-result-details",
+            "--test-name",
+            "gfx_unittests"
+          ],
+          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
+        },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "device_os": null,
+              "device_type": null,
+              "machine_type": "n1-standard-4|e2-standard-4",
+              "os": "Ubuntu-16.04|Ubuntu-18.04",
+              "pool": "chromium.tests.avd"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "avd_generic_android23",
+              "path": ".android"
+            },
+            {
+              "name": "system_images_android_23_google_apis_x86",
+              "path": ".emulator_sdk"
+            }
+          ],
+          "optional_dimensions": {
+            "60": [
+              {
+                "caches": "avd_generic_android23"
+              }
+            ]
+          },
+          "output_links": [
+            {
+              "link": [
+                "https://luci-logdog.appspot.com/v/?s",
+                "=android%2Fswarming%2Flogcats%2F",
+                "${TASK_ID}%2F%2B%2Funified_logcats"
+              ],
+              "name": "shard #${SHARD_INDEX} logcats"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test": "gfx_unittests",
+        "test_id_prefix": "ninja://ui/gfx:gfx_unittests/"
+      },
+      {
+        "args": [
+          "--gs-results-bucket=chromium-result-details",
+          "--recover-devices",
+          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb",
+          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.sandbox_linux_unittests.filter"
+        ],
+        "merge": {
+          "args": [
+            "--bucket",
+            "chromium-result-details",
+            "--test-name",
+            "sandbox_linux_unittests"
+          ],
+          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
+        },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "device_os": null,
+              "device_type": null,
+              "machine_type": "n1-standard-4|e2-standard-4",
+              "os": "Ubuntu-16.04|Ubuntu-18.04",
+              "pool": "chromium.tests.avd"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "avd_generic_android23",
+              "path": ".android"
+            },
+            {
+              "name": "system_images_android_23_google_apis_x86",
+              "path": ".emulator_sdk"
+            }
+          ],
+          "optional_dimensions": {
+            "60": [
+              {
+                "caches": "avd_generic_android23"
+              }
+            ]
+          },
+          "output_links": [
+            {
+              "link": [
+                "https://luci-logdog.appspot.com/v/?s",
+                "=android%2Fswarming%2Flogcats%2F",
+                "${TASK_ID}%2F%2B%2Funified_logcats"
+              ],
+              "name": "shard #${SHARD_INDEX} logcats"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test": "sandbox_linux_unittests",
+        "test_id_prefix": "ninja://sandbox/linux:sandbox_linux_unittests/"
+      },
+      {
+        "args": [
+          "--gs-results-bucket=chromium-result-details",
+          "--recover-devices",
+          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
+        ],
+        "merge": {
+          "args": [
+            "--bucket",
+            "chromium-result-details",
+            "--test-name",
             "unit_tests"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
@@ -31921,6 +32344,77 @@
         },
         "test": "unit_tests",
         "test_id_prefix": "ninja://chrome/test:unit_tests/"
+      },
+      {
+        "args": [
+          "--gs-results-bucket=chromium-result-details",
+          "--recover-devices",
+          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb",
+          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.viz_unittests.filter"
+        ],
+        "merge": {
+          "args": [
+            "--bucket",
+            "chromium-result-details",
+            "--test-name",
+            "viz_unittests"
+          ],
+          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
+        },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "device_os": null,
+              "device_type": null,
+              "machine_type": "n1-standard-4|e2-standard-4",
+              "os": "Ubuntu-16.04|Ubuntu-18.04",
+              "pool": "chromium.tests.avd"
+            }
+          ],
+          "named_caches": [
+            {
+              "name": "avd_generic_android23",
+              "path": ".android"
+            },
+            {
+              "name": "system_images_android_23_google_apis_x86",
+              "path": ".emulator_sdk"
+            }
+          ],
+          "optional_dimensions": {
+            "60": [
+              {
+                "caches": "avd_generic_android23"
+              }
+            ]
+          },
+          "output_links": [
+            {
+              "link": [
+                "https://luci-logdog.appspot.com/v/?s",
+                "=android%2Fswarming%2Flogcats%2F",
+                "${TASK_ID}%2F%2B%2Funified_logcats"
+              ],
+              "name": "shard #${SHARD_INDEX} logcats"
+            }
+          ],
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test": "viz_unittests",
+        "test_id_prefix": "ninja://components/viz:viz_unittests/"
       }
     ],
     "isolated_scripts": [
@@ -32124,77 +32618,6 @@
       },
       {
         "args": [
-          "--test-launcher-batch-limit=1",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "android_sync_integration_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
-              "location": "bin",
-              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-16.04|Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "avd_generic_android23",
-              "path": ".android"
-            },
-            {
-              "name": "system_images_android_23_google_apis_x86",
-              "path": ".emulator_sdk"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "avd_generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "android_sync_integration_tests",
-        "test_id_prefix": "ninja://chrome/test:android_sync_integration_tests/"
-      },
-      {
-        "args": [
           "--gs-results-bucket=chromium-result-details",
           "--recover-devices",
           "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
@@ -33024,77 +33447,6 @@
         "args": [
           "--gs-results-bucket=chromium-result-details",
           "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.cc_unittests.filter"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "cc_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
-              "location": "bin",
-              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-16.04|Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "avd_generic_android23",
-              "path": ".android"
-            },
-            {
-              "name": "system_images_android_23_google_apis_x86",
-              "path": ".emulator_sdk"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "avd_generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "cc_unittests",
-        "test_id_prefix": "ninja://cc:cc_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
           "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
         ],
         "merge": {
@@ -33598,146 +33950,6 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "device_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
-              "location": "bin",
-              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-16.04|Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "avd_generic_android23",
-              "path": ".android"
-            },
-            {
-              "name": "system_images_android_23_google_apis_x86",
-              "path": ".emulator_sdk"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "avd_generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "device_unittests",
-        "test_id_prefix": "ninja://device:device_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "display_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
-              "location": "bin",
-              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-16.04|Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "avd_generic_android23",
-              "path": ".android"
-            },
-            {
-              "name": "system_images_android_23_google_apis_x86",
-              "path": ".emulator_sdk"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "avd_generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "display_unittests",
-        "test_id_prefix": "ninja://ui/display:display_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
             "events_unittests"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
@@ -33878,76 +34090,6 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "gfx_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
-              "location": "bin",
-              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-16.04|Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "avd_generic_android23",
-              "path": ".android"
-            },
-            {
-              "name": "system_images_android_23_google_apis_x86",
-              "path": ".emulator_sdk"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "avd_generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gfx_unittests",
-        "test_id_prefix": "ninja://ui/gfx:gfx_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
             "gin_unittests"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
@@ -35067,77 +35209,6 @@
         "args": [
           "--gs-results-bucket=chromium-result-details",
           "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.sandbox_linux_unittests.filter"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "sandbox_linux_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
-              "location": "bin",
-              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-16.04|Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "avd_generic_android23",
-              "path": ".android"
-            },
-            {
-              "name": "system_images_android_23_google_apis_x86",
-              "path": ".emulator_sdk"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "avd_generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "sandbox_linux_unittests",
-        "test_id_prefix": "ninja://sandbox/linux:sandbox_linux_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
           "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
         ],
         "merge": {
@@ -35768,77 +35839,6 @@
         "args": [
           "--gs-results-bucket=chromium-result-details",
           "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.viz_unittests.filter"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "viz_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
-              "location": "bin",
-              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-16.04|Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "avd_generic_android23",
-              "path": ".android"
-            },
-            {
-              "name": "system_images_android_23_google_apis_x86",
-              "path": ".emulator_sdk"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "avd_generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "viz_unittests",
-        "test_id_prefix": "ninja://components/viz:viz_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
           "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
         ],
         "merge": {
diff --git a/testing/buildbot/chromium.chromiumos.json b/testing/buildbot/chromium.chromiumos.json
index f6ecf54..d2fd6e9 100644
--- a/testing/buildbot/chromium.chromiumos.json
+++ b/testing/buildbot/chromium.chromiumos.json
@@ -67,6 +67,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -100,6 +104,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -137,6 +145,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -170,6 +182,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -204,7 +220,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -241,6 +258,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -276,6 +297,10 @@
         "merge": {
           "script": "//tools/perf/process_perf_results.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -310,6 +335,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -343,6 +372,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -376,6 +409,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -409,6 +446,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -442,6 +483,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -475,6 +520,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -511,6 +560,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -544,6 +597,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -577,6 +634,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -613,6 +674,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "cipd_packages": [
@@ -662,6 +727,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -695,6 +764,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -728,6 +801,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -761,6 +838,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -798,6 +879,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -831,6 +916,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -864,6 +953,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -897,6 +990,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -946,6 +1043,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -991,7 +1092,8 @@
         },
         "name": "telemetry_perf_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1037,7 +1139,8 @@
         },
         "name": "telemetry_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1145,6 +1248,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -1168,7 +1275,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1204,7 +1312,8 @@
         },
         "name": "telemetry_perf_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index 90b8b169..3fb63ae952 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -18243,6 +18243,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18276,6 +18280,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18313,6 +18321,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18346,6 +18358,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18380,7 +18396,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -18417,6 +18434,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18452,6 +18473,10 @@
         "merge": {
           "script": "//tools/perf/process_perf_results.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18486,6 +18511,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18519,6 +18548,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18552,6 +18585,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18585,6 +18622,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18618,6 +18659,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18651,6 +18696,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18687,6 +18736,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18720,6 +18773,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18753,6 +18810,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18789,6 +18850,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "cipd_packages": [
@@ -18838,6 +18903,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18871,6 +18940,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18904,6 +18977,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18937,6 +19014,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -18974,6 +19055,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19007,6 +19092,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19040,6 +19129,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19073,6 +19166,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19122,6 +19219,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19167,7 +19268,8 @@
         },
         "name": "telemetry_perf_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19213,7 +19315,8 @@
         },
         "name": "telemetry_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19316,6 +19419,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19349,6 +19456,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19386,6 +19497,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19419,6 +19534,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19453,7 +19572,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -19490,6 +19610,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19525,6 +19649,10 @@
         "merge": {
           "script": "//tools/perf/process_perf_results.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19559,6 +19687,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19592,6 +19724,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19625,6 +19761,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19658,6 +19798,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19691,6 +19835,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19724,6 +19872,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19760,6 +19912,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19793,6 +19949,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19826,6 +19986,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19862,6 +20026,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "cipd_packages": [
@@ -19911,6 +20079,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19944,6 +20116,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -19977,6 +20153,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20010,6 +20190,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20047,6 +20231,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20080,6 +20268,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20113,6 +20305,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20146,6 +20342,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20195,6 +20395,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20240,7 +20444,8 @@
         },
         "name": "telemetry_perf_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20286,7 +20491,8 @@
         },
         "name": "telemetry_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20384,6 +20590,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20417,6 +20627,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20454,6 +20668,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20487,6 +20705,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20521,7 +20743,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -20558,6 +20781,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20593,6 +20820,10 @@
         "merge": {
           "script": "//tools/perf/process_perf_results.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20627,6 +20858,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20660,6 +20895,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20693,6 +20932,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20726,6 +20969,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20759,6 +21006,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20792,6 +21043,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20828,6 +21083,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20861,6 +21120,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20894,6 +21157,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -20930,6 +21197,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "cipd_packages": [
@@ -20979,6 +21250,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -21012,6 +21287,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -21045,6 +21324,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -21078,6 +21361,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -21115,6 +21402,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -21148,6 +21439,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -21181,6 +21476,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -21214,6 +21513,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -21263,6 +21566,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -21308,7 +21615,8 @@
         },
         "name": "telemetry_perf_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -21354,7 +21662,8 @@
         },
         "name": "telemetry_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
diff --git a/testing/buildbot/internal.chromeos.fyi.json b/testing/buildbot/internal.chromeos.fyi.json
index 06e0508..3b004b8 100644
--- a/testing/buildbot/internal.chromeos.fyi.json
+++ b/testing/buildbot/internal.chromeos.fyi.json
@@ -12,7 +12,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -37,6 +38,10 @@
         "merge": {
           "script": "//tools/perf/process_perf_results.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -67,6 +72,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -100,6 +109,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -137,6 +150,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -170,6 +187,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -204,7 +225,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -241,6 +263,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -276,6 +302,10 @@
         "merge": {
           "script": "//tools/perf/process_perf_results.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -310,6 +340,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -343,6 +377,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -376,6 +414,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -409,6 +451,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -442,6 +488,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -475,6 +525,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -511,6 +565,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -544,6 +602,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -577,6 +639,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -613,6 +679,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "cipd_packages": [
@@ -662,6 +732,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -698,6 +772,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -731,6 +809,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -764,6 +846,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -801,6 +887,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -834,6 +924,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -867,6 +961,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -900,6 +998,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -949,6 +1051,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -994,7 +1100,8 @@
         },
         "name": "telemetry_perf_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1040,7 +1147,8 @@
         },
         "name": "telemetry_unittests",
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1086,6 +1194,10 @@
           "args": [],
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -1109,7 +1221,8 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "resultdb": {
-          "enable": true
+          "enable": true,
+          "has_native_resultdb_integration": true
         },
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1137,6 +1250,10 @@
         "merge": {
           "script": "//tools/perf/process_perf_results.py"
         },
+        "resultdb": {
+          "enable": true,
+          "has_native_resultdb_integration": true
+        },
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl
index 16891b4..1ca1f86 100644
--- a/testing/buildbot/test_suite_exceptions.pyl
+++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -61,9 +61,11 @@
   },
   'android_sync_integration_tests': {
    'remove_from': [
-     # Remove from CQ bots due to capacity.
-     'android-marshmallow-arm64-rel',
-     'android-lollipop-arm-rel',
+      # Remove from CQ bots due to capacity.
+      'android-marshmallow-arm64-rel',
+      'android-lollipop-arm-rel',
+
+      'android-marshmallow-x86-rel-non-cq', # runs on MM-x86-rel already
    ],
   },
   'android_webview_unittests': {
@@ -768,7 +770,7 @@
           '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_11.cc_unittests.filter',
         ],
       },
-      'android-marshmallow-x86-rel-non-cq': {
+      'android-marshmallow-x86-rel': {
         # https://crbug.com/1039860
         'args': [
           '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.cc_unittests.filter',
@@ -2491,7 +2493,7 @@
           '--shard-timeout=300',
         ],
       },
-      'android-marshmallow-x86-rel-non-cq': {
+      'android-marshmallow-x86-rel': {
         'args': [
           '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.sandbox_linux_unittests.filter',
         ]
@@ -2977,7 +2979,7 @@
           '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_11.viz_unittests.filter',
         ],
       },
-      'android-marshmallow-x86-rel-non-cq': {
+      'android-marshmallow-x86-rel': {
         'args': [
           '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.viz_unittests.filter',
         ],
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl
index 9e89c110..faefa7d 100644
--- a/testing/buildbot/test_suites.pyl
+++ b/testing/buildbot/test_suites.pyl
@@ -153,11 +153,11 @@
     # MM emulator CQ builder currently has limited capacity so some composition
     # test suites cannot be fullly enabled at once.
     'android_marshmallow_emulator_limited_capacity_gtests': {
-      # Tests from chromium_gtests_for_devices_with_graphical_output
-      'unit_tests': {
-        'android_swarming': {
-          'shards': 2,
-        },
+      # Tests from android_specific_chromium_gtests
+      'android_sync_integration_tests': {
+        'args': [
+          '--test-launcher-batch-limit=1',
+        ],
       },
 
       # Tests from chromium_gtests
@@ -5723,7 +5723,7 @@
 
     # List gtests that run on android-marshmallow-x86-rel builder.
     # Test suites will be gradually moved from
-    # android_marshmallow_wpr_gtests
+    # android_marshmallow_emulator_non_cq_gtests
     # to this one, when there are more GCE capacity.
     'android_marshmallow_emulator_gtests': [
       'android_emulator_specific_chrome_public_tests',
@@ -5736,8 +5736,8 @@
       #'android_specific_chromium_gtests',  # Already includes gl_gtests.
       'android_wpr_record_replay_tests',
       #'chromium_gtests',
-      #'chromium_gtests_for_devices_with_graphical_output',
-      #'linux_flavor_specific_chromium_gtests',
+      'chromium_gtests_for_devices_with_graphical_output',
+      'linux_flavor_specific_chromium_gtests',
       #'weblayer_android_gtests',
       #'weblayer_gtests',
     ],
@@ -5745,14 +5745,13 @@
     # Note that tests here are gradually moved to
     # android_marshmallow_emulator_gtests (crbug.com/1127110)
     #
-    # The diff between android_lollipop_marshmallow_gtests and (
-    # android_marshmallow_wpr_gtests + android_marshmallow_emulator_gtests)
+    # The diff between android_lollipop_marshmallow_gtests and
+    # (android_marshmallow_emulator_non_cq_gtests +
+    # android_marshmallow_emulator_gtests)
     # is android_wpr_record_replay_tests
-    'android_marshmallow_wpr_gtests': [
+    'android_marshmallow_emulator_non_cq_gtests': [
       'android_specific_chromium_gtests',  # Already includes gl_gtests.
       'chromium_gtests',
-      'chromium_gtests_for_devices_with_graphical_output',
-      'linux_flavor_specific_chromium_gtests',
       'weblayer_android_gtests',
       'weblayer_gtests',
     ],
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl
index b3caf64..d2495c4 100644
--- a/testing/buildbot/waterfalls.pyl
+++ b/testing/buildbot/waterfalls.pyl
@@ -27,6 +27,7 @@
         },
         'mixins': [
           'chromeos-betty',
+          'has_native_resultdb_integration',
         ],
       },
       'chromeos-betty-pi-arc-chrome': {
@@ -35,6 +36,7 @@
         ],
         'mixins': [
           'chromeos-betty',
+          'has_native_resultdb_integration',
         ],
         'test_suites': {
           'gtest_tests': 'chromeos_vm_gtests',
@@ -45,6 +47,9 @@
         'additional_compile_targets': [
           'chromiumos_preflight',
         ],
+        'mixins': [
+          'has_native_resultdb_integration',
+        ],
         'test_suites': {
           'gtest_tests': 'chromeos_device_gtests',
           'isolated_scripts': 'chromeos_remote_device_isolated_tests',
@@ -64,6 +69,9 @@
         'additional_compile_targets': [
           'chromiumos_preflight',
         ],
+        'mixins': [
+          'has_native_resultdb_integration',
+        ],
         'test_suites': {
           'gtest_tests': 'chromeos_device_gtests',
           'isolated_scripts': 'chromeos_remote_device_isolated_tests',
@@ -89,6 +97,7 @@
         ],
         'mixins': [
           'chrome-swarming-pool',
+          'has_native_resultdb_integration',
         ],
         'test_suites': {
           'gtest_tests': 'lacros_all_tast_tests_eve',
@@ -818,7 +827,7 @@
         ],
         'os_type': 'android',
         'test_suites': {
-          'gtest_tests': 'android_marshmallow_wpr_gtests',
+          'gtest_tests': 'android_marshmallow_emulator_non_cq_gtests',
           'isolated_scripts': 'marshmallow_nougat_pie_isolated_scripts_with_proguard',
         }
       },
@@ -1382,6 +1391,7 @@
         'browser_config': 'cros-chrome',
         'mixins': [
           'chromeos-amd64-generic',
+          'has_native_resultdb_integration',
         ],
         'os_type': 'chromeos',
         'test_suites': {
@@ -1406,6 +1416,7 @@
         ],
         'mixins': [
           'chromeos-kevin',
+          'has_native_resultdb_integration',
         ],
         'test_suites': {
           'gtest_tests': 'chromeos_device_gtests',
@@ -1431,6 +1442,9 @@
         'additional_compile_targets': [
           'chrome',
         ],
+        'mixins': [
+          'has_native_resultdb_integration',
+        ],
         'os_type': 'chromeos'
       },
       'linux-ash-chromium-generator-rel': {
@@ -2750,6 +2764,7 @@
         'browser_config': 'cros-chrome',
         'mixins': [
           'chromeos-amd64-generic',
+          'has_native_resultdb_integration',
         ],
         'os_type': 'chromeos',
         'test_suites': {
@@ -2776,6 +2791,7 @@
         'browser_config': 'cros-chrome',
         'mixins': [
           'chromeos-amd64-generic',
+          'has_native_resultdb_integration',
         ],
         'os_type': 'chromeos',
         'test_suites': {
@@ -2791,6 +2807,7 @@
         'browser_config': 'cros-chrome',
         'mixins': [
           'chromeos-amd64-generic',
+          'has_native_resultdb_integration',
         ],
         'os_type': 'chromeos',
         'test_suites': {
@@ -6471,6 +6488,9 @@
         'additional_compile_targets': [
           'chromiumos_preflight',
         ],
+        'mixins': [
+          'has_native_resultdb_integration',
+        ],
         'test_suites': {
           'gtest_tests': 'chromeos_browser_integration_tests',
         },
@@ -6502,6 +6522,7 @@
         ],
         'mixins': [
           'chromeos-betty',
+          'has_native_resultdb_integration',
         ],
         'test_suites': {
           'gtest_tests': 'chromeos_vm_gtests',
@@ -6512,6 +6533,9 @@
         'additional_compile_targets': [
           'chromiumos_preflight',
         ],
+        'mixins': [
+          'has_native_resultdb_integration',
+        ],
         'test_suites': {
           'gtest_tests': 'chromeos_device_gtests',
         },
diff --git a/testing/test.gni b/testing/test.gni
index 9e45c64..1bcfe83 100644
--- a/testing/test.gni
+++ b/testing/test.gni
@@ -52,6 +52,8 @@
 #   is_xctest: (iOS, optional) whether to build the executable as XCTest.
 #      Similar to the GN arg 'enable_run_ios_unittests_with_xctest' but
 #      for build targets.
+#   allow_cleartext_traffic: (Android, optional) whether to allow cleartext
+#      network requests during the test.
 template("test") {
   # Ensures the rts file exists and if not, creates a dummy file
   if (use_rts) {
@@ -68,6 +70,11 @@
     assert(!defined(invoker.is_xctest) || !invoker.is_xctest,
            "is_xctest can be set only for iOS builds")
   }
+  if (!is_android) {
+    assert(!defined(invoker.allow_cleartext_traffic),
+           "allow_cleartext_traffic can be set only for Android tests")
+  }
+
   if (is_android) {
     assert(!defined(invoker.use_xvfb) || !invoker.use_xvfb)
 
@@ -168,6 +175,7 @@
       _library_target = "${target_name}__library"
       _apk_target = "${target_name}__apk"
       _apk_specific_vars = [
+        "allow_cleartext_traffic",
         "android_manifest",
         "android_manifest_dep",
         "android_manifest_template",
diff --git a/third_party/blink/public/mojom/web_feature/web_feature.mojom b/third_party/blink/public/mojom/web_feature/web_feature.mojom
index 22e9591..4d73405 100644
--- a/third_party/blink/public/mojom/web_feature/web_feature.mojom
+++ b/third_party/blink/public/mojom/web_feature/web_feature.mojom
@@ -2626,8 +2626,6 @@
   kRubyTextWithNonDefaultTextAlign = 3313,
   kHTMLMetaElementReferrerPolicyOutsideHead = 3314,
   kHTMLMetaElementReferrerPolicyMultipleTokens = 3315,
-  kDynamicImportModuleScriptRelativeClassicSameOrigin = 3318,
-  kDynamicImportModuleScriptRelativeClassicCrossOrigin = 3319,
   kV8WasmBulkMemory = 3320,
   kV8WasmRefTypes = 3321,
   kV8WasmMultiValue = 3322,
diff --git a/third_party/blink/renderer/bindings/core/v8/module_record.cc b/third_party/blink/renderer/bindings/core/v8/module_record.cc
index 30ed787..f776fc4 100644
--- a/third_party/blink/renderer/bindings/core/v8/module_record.cc
+++ b/third_party/blink/renderer/bindings/core/v8/module_record.cc
@@ -76,8 +76,7 @@
 
   if (!V8ScriptRunner::CompileModule(
            isolate, params, text_position, compile_options, no_cache_reason,
-           ReferrerScriptInfo(params.BaseURL(), options,
-                              ReferrerScriptInfo::BaseUrlSource::kOther))
+           ReferrerScriptInfo(params.BaseURL(), options))
            .ToLocal(&module)) {
     DCHECK(try_catch.HasCaught());
     exception_state.RethrowV8Exception(try_catch.Exception());
diff --git a/third_party/blink/renderer/bindings/core/v8/referrer_script_info.cc b/third_party/blink/renderer/bindings/core/v8/referrer_script_info.cc
index 4a3b3807..0dce491 100644
--- a/third_party/blink/renderer/bindings/core/v8/referrer_script_info.cc
+++ b/third_party/blink/renderer/bindings/core/v8/referrer_script_info.cc
@@ -18,7 +18,6 @@
   kNonce,
   kParserState,
   kReferrerPolicy,
-  kBaseUrlSource,
   kLength
 };
 
@@ -67,14 +66,8 @@
           referrer_policy_int32)
           .value_or(network::mojom::ReferrerPolicy::kDefault);
 
-  v8::Local<v8::Primitive> base_url_source_value =
-      host_defined_options->Get(isolate, kBaseUrlSource);
-  SECURITY_CHECK(base_url_source_value->IsUint32());
-  BaseUrlSource base_url_source = static_cast<BaseUrlSource>(
-      base_url_source_value->IntegerValue(context).ToChecked());
-
   return ReferrerScriptInfo(base_url, credentials_mode, nonce, parser_state,
-                            referrer_policy, base_url_source);
+                            referrer_policy);
 }
 
 v8::Local<v8::PrimitiveArray> ReferrerScriptInfo::ToV8HostDefinedOptions(
@@ -110,11 +103,6 @@
   host_defined_options->Set(isolate, HostDefinedOptionsIndex::kReferrerPolicy,
                             referrer_policy_value);
 
-  v8::Local<v8::Primitive> base_url_source_value = v8::Integer::NewFromUnsigned(
-      isolate, static_cast<uint32_t>(base_url_source_));
-  host_defined_options->Set(isolate, HostDefinedOptionsIndex::kBaseUrlSource,
-                            base_url_source_value);
-
   return host_defined_options;
 }
 
diff --git a/third_party/blink/renderer/bindings/core/v8/referrer_script_info.h b/third_party/blink/renderer/bindings/core/v8/referrer_script_info.h
index 279ac3a..84ed3667 100644
--- a/third_party/blink/renderer/bindings/core/v8/referrer_script_info.h
+++ b/third_party/blink/renderer/bindings/core/v8/referrer_script_info.h
@@ -23,33 +23,23 @@
   STACK_ALLOCATED();
 
  public:
-  enum class BaseUrlSource {
-    kClassicScriptCORSSameOrigin,
-    kClassicScriptCORSCrossOrigin,
-    kOther
-  };
   ReferrerScriptInfo() {}
   ReferrerScriptInfo(const KURL& base_url,
                      network::mojom::CredentialsMode credentials_mode,
                      const String& nonce,
                      ParserDisposition parser_state,
-                     network::mojom::ReferrerPolicy referrer_policy,
-                     BaseUrlSource base_url_source)
+                     network::mojom::ReferrerPolicy referrer_policy)
       : base_url_(base_url),
         credentials_mode_(credentials_mode),
         nonce_(nonce),
         parser_state_(parser_state),
-        referrer_policy_(referrer_policy),
-        base_url_source_(base_url_source) {}
-  ReferrerScriptInfo(const KURL& base_url,
-                     const ScriptFetchOptions& options,
-                     BaseUrlSource base_url_source)
+        referrer_policy_(referrer_policy) {}
+  ReferrerScriptInfo(const KURL& base_url, const ScriptFetchOptions& options)
       : ReferrerScriptInfo(base_url,
                            options.CredentialsMode(),
                            options.Nonce(),
                            options.ParserState(),
-                           options.GetReferrerPolicy(),
-                           base_url_source) {}
+                           options.GetReferrerPolicy()) {}
 
   static ReferrerScriptInfo FromV8HostDefinedOptions(
       v8::Local<v8::Context>,
@@ -65,13 +55,11 @@
   network::mojom::ReferrerPolicy GetReferrerPolicy() const {
     return referrer_policy_;
   }
-  BaseUrlSource GetBaseUrlSource() const { return base_url_source_; }
 
   bool IsDefaultValue() const {
     return base_url_.IsNull() &&
            credentials_mode_ == network::mojom::CredentialsMode::kSameOrigin &&
-           nonce_.IsEmpty() && parser_state_ == kNotParserInserted &&
-           base_url_source_ == BaseUrlSource::kOther;
+           nonce_.IsEmpty() && parser_state_ == kNotParserInserted;
   }
 
  private:
@@ -102,9 +90,6 @@
   // https://html.spec.whatwg.org/C/#default-classic-script-fetch-options
   const network::mojom::ReferrerPolicy referrer_policy_ =
       network::mojom::ReferrerPolicy::kDefault;
-
-  // Temporary flag to collect UMA for crbug.com/1082086.
-  const BaseUrlSource base_url_source_ = BaseUrlSource::kOther;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/bindings/core/v8/referrer_script_info_test.cc b/third_party/blink/renderer/bindings/core/v8/referrer_script_info_test.cc
index bf4c59b..3387eb1 100644
--- a/third_party/blink/renderer/bindings/core/v8/referrer_script_info_test.cc
+++ b/third_party/blink/renderer/bindings/core/v8/referrer_script_info_test.cc
@@ -15,8 +15,7 @@
   EXPECT_FALSE(ReferrerScriptInfo(KURL("http://example.com"),
                                   network::mojom::CredentialsMode::kInclude, "",
                                   kNotParserInserted,
-                                  network::mojom::ReferrerPolicy::kDefault,
-                                  ReferrerScriptInfo::BaseUrlSource::kOther)
+                                  network::mojom::ReferrerPolicy::kDefault)
                    .IsDefaultValue());
 }
 
@@ -28,10 +27,9 @@
                   .ToV8HostDefinedOptions(scope.GetIsolate())
                   .IsEmpty());
 
-  ReferrerScriptInfo info(
-      url, network::mojom::CredentialsMode::kInclude, "foobar",
-      kNotParserInserted, network::mojom::ReferrerPolicy::kOrigin,
-      ReferrerScriptInfo::BaseUrlSource::kClassicScriptCORSCrossOrigin);
+  ReferrerScriptInfo info(url, network::mojom::CredentialsMode::kInclude,
+                          "foobar", kNotParserInserted,
+                          network::mojom::ReferrerPolicy::kOrigin);
   v8::Local<v8::PrimitiveArray> v8_info =
       info.ToV8HostDefinedOptions(scope.GetIsolate());
 
@@ -44,8 +42,6 @@
   EXPECT_EQ(kNotParserInserted, decoded.ParserState());
   EXPECT_EQ(network::mojom::ReferrerPolicy::kOrigin,
             decoded.GetReferrerPolicy());
-  EXPECT_EQ(ReferrerScriptInfo::BaseUrlSource::kClassicScriptCORSCrossOrigin,
-            decoded.GetBaseUrlSource());
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_script_runner.cc b/third_party/blink/renderer/bindings/core/v8/v8_script_runner.cc
index e904f60..09987f7 100644
--- a/third_party/blink/renderer/bindings/core/v8/v8_script_runner.cc
+++ b/third_party/blink/renderer/bindings/core/v8/v8_script_runner.cc
@@ -477,26 +477,8 @@
     const KURL base_url = classic_script->BaseURL();
     KURL stored_base_url = (base_url == source.Url()) ? KURL() : base_url;
 
-    // TODO(hiroshige): Remove this code and related use counters once the
-    // measurement is done.
-    ReferrerScriptInfo::BaseUrlSource base_url_source =
-        ReferrerScriptInfo::BaseUrlSource::kOther;
-    if (source.SourceLocationType() ==
-            ScriptSourceLocationType::kExternalFile &&
-        !base_url.IsNull()) {
-      switch (sanitize_script_errors) {
-        case SanitizeScriptErrors::kDoNotSanitize:
-          base_url_source =
-              ReferrerScriptInfo::BaseUrlSource::kClassicScriptCORSSameOrigin;
-          break;
-        case SanitizeScriptErrors::kSanitize:
-          base_url_source =
-              ReferrerScriptInfo::BaseUrlSource::kClassicScriptCORSCrossOrigin;
-          break;
-      }
-    }
-    const ReferrerScriptInfo referrer_info(
-        stored_base_url, classic_script->FetchOptions(), base_url_source);
+    const ReferrerScriptInfo referrer_info(stored_base_url,
+                                           classic_script->FetchOptions());
 
     v8::Local<v8::Script> script;
 
diff --git a/third_party/blink/renderer/core/css/css_custom_font_data.h b/third_party/blink/renderer/core/css/css_custom_font_data.h
index 697046e..37d259a 100644
--- a/third_party/blink/renderer/core/css/css_custom_font_data.h
+++ b/third_party/blink/renderer/core/css/css_custom_font_data.h
@@ -56,6 +56,10 @@
   bool IsLoadingFallback() const override { return true; }
   void ClearFontFaceSource() override { font_face_source_ = nullptr; }
 
+  bool IsPendingDataUrl() const override {
+    return font_face_source_ && font_face_source_->IsPendingDataUrl();
+  }
+
  private:
   CSSCustomFontData(CSSFontFaceSource* source, FallbackVisibility visibility)
       : font_face_source_(source),
diff --git a/third_party/blink/renderer/core/css/css_font_face_source.h b/third_party/blink/renderer/core/css/css_font_face_source.h
index 5a0b18b9..083cc28e 100644
--- a/third_party/blink/renderer/core/css/css_font_face_source.h
+++ b/third_party/blink/renderer/core/css/css_font_face_source.h
@@ -62,6 +62,8 @@
   // Returns nullptr unless the source is a loaded RemoteFontFaceSource.
   virtual String GetURL() const { return g_null_atom; }
 
+  virtual bool IsPendingDataUrl() const { return false; }
+
   // Returns nullptr unless the source is a loaded RemoteFontFaceSource.
   virtual const FontCustomPlatformData* GetCustomPlaftormData() const {
     return nullptr;
diff --git a/third_party/blink/renderer/core/css/remote_font_face_source.cc b/third_party/blink/renderer/core/css/remote_font_face_source.cc
index c281d14..4fa77545 100644
--- a/third_party/blink/renderer/core/css/remote_font_face_source.cc
+++ b/third_party/blink/renderer/core/css/remote_font_face_source.cc
@@ -423,6 +423,10 @@
   MaySetDataSource(kFromNetwork);
 }
 
+bool RemoteFontFaceSource::IsPendingDataUrl() const {
+  return GetResource() && GetResource()->Url().ProtocolIsData();
+}
+
 void RemoteFontFaceSource::FontLoadHistograms::RecordFallbackTime() {
   if (blank_paint_time_.is_null() || blank_paint_time_recorded_)
     return;
diff --git a/third_party/blink/renderer/core/css/remote_font_face_source.h b/third_party/blink/renderer/core/css/remote_font_face_source.h
index c672015..64ac297d 100644
--- a/third_party/blink/renderer/core/css/remote_font_face_source.h
+++ b/third_party/blink/renderer/core/css/remote_font_face_source.h
@@ -34,6 +34,8 @@
 
   String GetURL() const override { return url_; }
 
+  bool IsPendingDataUrl() const override;
+
   const FontCustomPlatformData* GetCustomPlaftormData() const override {
     return custom_font_data_.get();
   }
diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_party/blink/renderer/core/frame/reporting_context.cc
index c27fcf95..bf39e84a 100644
--- a/third_party/blink/renderer/core/frame/reporting_context.cc
+++ b/third_party/blink/renderer/core/frame/reporting_context.cc
@@ -155,7 +155,7 @@
   if (!report_buffer_.Contains(report->type())) {
     report_buffer_.insert(
         report->type(),
-        MakeGarbageCollected<HeapListHashSet<Member<Report>>>());
+        MakeGarbageCollected<HeapLinkedHashSet<Member<Report>>>());
   }
   report_buffer_.find(report->type())->value->insert(report);
 
diff --git a/third_party/blink/renderer/core/frame/reporting_context.h b/third_party/blink/renderer/core/frame/reporting_context.h
index 51bee8b..c2f7760 100644
--- a/third_party/blink/renderer/core/frame/reporting_context.h
+++ b/third_party/blink/renderer/core/frame/reporting_context.h
@@ -61,8 +61,8 @@
   // Send |report| via the Reporting API to |endpoint|.
   void SendToReportingAPI(Report* report, const String& endpoint) const;
 
-  HeapListHashSet<Member<blink::ReportingObserver>> observers_;
-  HeapHashMap<String, Member<HeapListHashSet<Member<Report>>>> report_buffer_;
+  HeapLinkedHashSet<Member<blink::ReportingObserver>> observers_;
+  HeapHashMap<String, Member<HeapLinkedHashSet<Member<Report>>>> report_buffer_;
   Member<ExecutionContext> execution_context_;
 
   // This is declared mutable so that the service endpoint can be cached by
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc
index 07b10223..17a8ad3 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc
@@ -294,6 +294,14 @@
   return false;
 }
 
+bool NGFragmentItem::IsBlockInInline() const {
+  if (Type() != kBox)
+    return false;
+  if (const NGPhysicalBoxFragment* box = BoxFragment())
+    return box->IsBlockInInline();
+  return false;
+}
+
 bool NGFragmentItem::IsFloating() const {
   if (const NGPhysicalBoxFragment* box = BoxFragment())
     return box->IsFloating();
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h
index d93dd03..f0c12aa 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h
@@ -106,6 +106,7 @@
   bool IsContainer() const { return Type() == kBox || Type() == kLine; }
   bool IsInlineBox() const;
   bool IsAtomicInline() const;
+  bool IsBlockInInline() const;
   bool IsFloating() const;
   bool IsEmptyLineBox() const;
   bool IsHiddenForPaint() const { return is_hidden_for_paint_; }
diff --git a/third_party/blink/renderer/core/layout/ng/ng_absolute_utils.cc b/third_party/blink/renderer/core/layout/ng/ng_absolute_utils.cc
index ac778b2..db7a3e683 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_absolute_utils.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_absolute_utils.cc
@@ -531,6 +531,15 @@
     min_max_length_sizes =
         ComputeMinMaxBlockSizes(space, style, border_padding);
 
+    // Manually resolve any intrinsic/content min/max block-sizes.
+    // TODO(crbug.com/1135207): |ComputeMinMaxBlockSizes()| should handle this.
+    if (style.LogicalMinHeight().IsContentOrIntrinsic())
+      min_max_length_sizes.min_size = IntrinsicBlockSizeFunc();
+    if (style.LogicalMaxHeight().IsContentOrIntrinsic())
+      min_max_length_sizes.max_size = IntrinsicBlockSizeFunc();
+    min_max_length_sizes.max_size =
+        std::max(min_max_length_sizes.max_size, min_max_length_sizes.min_size);
+
     // Tables are never allowed to go below their "auto" block-size.
     if (is_table)
       min_max_length_sizes.Encompass(IntrinsicBlockSizeFunc());
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_overflow_calculator.cc b/third_party/blink/renderer/core/layout/ng/ng_layout_overflow_calculator.cc
index 0fe65bbe..226014e 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_overflow_calculator.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_overflow_calculator.cc
@@ -128,24 +128,20 @@
   alternate_overflow.UniteEvenIfEmpty(AdjustOverflowForScrollOrigin(
       converter.ToPhysical(block_end_padding_rect)));
 
+  if (normal_overflow == alternate_overflow)
+    return normal_overflow;
+
   // We'd like everything to be |normal_overflow|, lets see what the impact
   // would be.
   if (node_.Style().OverflowInlineDirection() == EOverflow::kAuto ||
       node_.Style().OverflowInlineDirection() == EOverflow::kScroll) {
-    if (alternate_overflow.size.width != normal_overflow.size.width) {
-      if (alternate_overflow.size.width != padding_rect_.size.width) {
-        UseCounter::Count(
-            node_.GetDocument(),
-            node_.IsFlexibleBox()
-                ? WebFeature::kNewLayoutOverflowDifferentAndAlreadyScrollsFlex
-                : WebFeature::
-                      kNewLayoutOverflowDifferentAndAlreadyScrollsBlock);
-      } else {
-        UseCounter::Count(node_.GetDocument(),
-                          node_.IsFlexibleBox()
-                              ? WebFeature::kNewLayoutOverflowDifferentFlex
-                              : WebFeature::kNewLayoutOverflowDifferentBlock);
-      }
+    if (alternate_overflow.size.width != padding_rect_.size.width) {
+      UseCounter::Count(
+          node_.GetDocument(),
+          WebFeature::kNewLayoutOverflowDifferentAndAlreadyScrollsBlock);
+    } else {
+      UseCounter::Count(node_.GetDocument(),
+                        WebFeature::kNewLayoutOverflowDifferentBlock);
     }
   }
 
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_overflow_calculator_test.cc b/third_party/blink/renderer/core/layout/ng/ng_layout_overflow_calculator_test.cc
index ba03280..082a3405 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_overflow_calculator_test.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_overflow_calculator_test.cc
@@ -9,22 +9,6 @@
 class NGLayoutOverflowCalculatorTest : public RenderingTest {};
 
 TEST_F(NGLayoutOverflowCalculatorTest,
-       DISABLED_NewLayoutOverflowDifferentAndAlreadyScrollsFlex) {
-  if (!RuntimeEnabledFeatures::LayoutNGEnabled())
-    return;
-  SetBodyInnerHTML(R"HTML(
-    <!DOCTYPE html>
-    <div style="display: flex; width: 100px; height: 100px; padding: 10px; overflow: auto;">
-      <div style="min-width: 120px; height: 10px;"></div>
-    </div>
-  )HTML");
-  RunDocumentLifecycle();
-
-  EXPECT_TRUE(GetDocument().IsUseCounted(
-      WebFeature::kNewLayoutOverflowDifferentAndAlreadyScrollsFlex));
-}
-
-TEST_F(NGLayoutOverflowCalculatorTest,
        NewLayoutOverflowDifferentAndAlreadyScrollsBlock) {
   if (!RuntimeEnabledFeatures::LayoutNGEnabled())
     return;
@@ -40,22 +24,6 @@
       WebFeature::kNewLayoutOverflowDifferentAndAlreadyScrollsBlock));
 }
 
-TEST_F(NGLayoutOverflowCalculatorTest,
-       DISABLED_NewLayoutOverflowDifferentFlex) {
-  if (!RuntimeEnabledFeatures::LayoutNGEnabled())
-    return;
-  SetBodyInnerHTML(R"HTML(
-    <!DOCTYPE html>
-    <div style="display: flex; width: 100px; height: 100px; padding: 10px; overflow: auto;">
-      <div style="min-width: 110px; height: 10px;"></div>
-    </div>
-  )HTML");
-  RunDocumentLifecycle();
-
-  EXPECT_TRUE(
-      GetDocument().IsUseCounted(WebFeature::kNewLayoutOverflowDifferentFlex));
-}
-
 TEST_F(NGLayoutOverflowCalculatorTest, NewLayoutOverflowDifferentBlock) {
   if (!RuntimeEnabledFeatures::LayoutNGEnabled())
     return;
diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h b/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h
index 851f3c40..f8ca812 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h
@@ -18,6 +18,7 @@
 #include "third_party/blink/renderer/core/layout/geometry/physical_rect.h"
 #include "third_party/blink/renderer/core/layout/geometry/physical_size.h"
 #include "third_party/blink/renderer/core/layout/layout_box.h"
+#include "third_party/blink/renderer/core/layout/layout_inline.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_break_token.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_ink_overflow.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_link.h"
@@ -125,6 +126,10 @@
   bool IsAtomicInline() const {
     return IsBox() && BoxType() == NGBoxType::kAtomicInline;
   }
+  bool IsBlockInInline() const {
+    return IsBox() && BoxType() == NGBoxType::kNormalBox && GetLayoutObject() &&
+           IsA<LayoutInline>(GetLayoutObject()->Parent());
+  }
   // True if this fragment is in-flow in an inline formatting context.
   bool IsInline() const { return IsInlineBox() || IsAtomicInline(); }
   bool IsFloating() const {
diff --git a/third_party/blink/renderer/core/layout/ng/svg/layout_ng_svg_text.cc b/third_party/blink/renderer/core/layout/ng/svg/layout_ng_svg_text.cc
index 8e26abe7..f223b2e 100644
--- a/third_party/blink/renderer/core/layout/ng/svg/layout_ng_svg_text.cc
+++ b/third_party/blink/renderer/core/layout/ng/svg/layout_ng_svg_text.cc
@@ -155,8 +155,9 @@
   UpdateNGBlockLayout();
   needs_update_bounding_box_ = true;
 
+  const bool bounds_changed = old_boundaries != ObjectBoundingBox();
   // If our bounds changed, notify the parents.
-  if (UpdateTransformAfterLayout(old_boundaries != ObjectBoundingBox()))
+  if (UpdateTransformAfterLayout(bounds_changed) || bounds_changed)
     SetNeedsBoundariesUpdate();
 }
 
diff --git a/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc b/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
index f70fa06..2e4a02b 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
+++ b/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
@@ -1207,6 +1207,20 @@
     paint_info.context.EndLayer();
 }
 
+void NGBoxFragmentPainter::PaintBoxDecorationBackgroundForBlockInInline(
+    NGInlineCursor* children,
+    const PaintInfo& paint_info,
+    const PhysicalOffset& paint_offset) {
+  for (; *children; children->MoveToNext()) {
+    const NGFragmentItem* item = children->Current().Item();
+    if (item->Type() != NGFragmentItem::kBox)
+      continue;
+    const NGPhysicalBoxFragment* fragment = item->BoxFragment();
+    if (fragment && fragment->IsBlockInInline())
+      PaintBoxItem(*item, *fragment, *children, paint_info, paint_offset);
+  }
+}
+
 void NGBoxFragmentPainter::PaintColumnRules(
     const PaintInfo& paint_info,
     const PhysicalOffset& paint_offset) {
@@ -1454,10 +1468,14 @@
       paint_info.phase != PaintPhase::kTextClip &&
       paint_info.phase != PaintPhase::kMask &&
       paint_info.phase != PaintPhase::kDescendantOutlinesOnly &&
-      paint_info.phase != PaintPhase::kOutline &&
+      paint_info.phase != PaintPhase::kOutline) {
+    if (UNLIKELY(ShouldPaintDescendantBlockBackgrounds(paint_info.phase))) {
       // When block-in-inline, block backgrounds need to be painted.
-      !ShouldPaintDescendantBlockBackgrounds(paint_info.phase))
+      PaintBoxDecorationBackgroundForBlockInInline(children, paint_info,
+                                                   paint_offset);
+    }
     return;
+  }
 
   // The only way an inline could paint like this is if it has a layer.
   const auto* layout_object = box_fragment_.GetLayoutObject();
diff --git a/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.h b/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.h
index 953857cf..fe8b4c1a 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.h
+++ b/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.h
@@ -116,6 +116,11 @@
                                             const PhysicalRect& paint_rect,
                                             const DisplayItemClient&);
 
+  void PaintBoxDecorationBackgroundForBlockInInline(
+      NGInlineCursor* children,
+      const PaintInfo&,
+      const PhysicalOffset& paint_offset);
+
   void PaintColumnRules(const PaintInfo&, const PhysicalOffset& paint_offset);
 
   void PaintInternal(const PaintInfo&);
diff --git a/third_party/blink/renderer/core/paint/pre_paint_tree_walk.cc b/third_party/blink/renderer/core/paint/pre_paint_tree_walk.cc
index 4c57377..d21666d 100644
--- a/third_party/blink/renderer/core/paint/pre_paint_tree_walk.cc
+++ b/third_party/blink/renderer/core/paint/pre_paint_tree_walk.cc
@@ -873,6 +873,16 @@
            child->IsLayoutMultiColumnSpannerPlaceholder());
     child->GetMutableForPainting().ClearPaintFlags();
   }
+
+  // If we missed any nested fixpos elements during fragment traversal, that
+  // means that their containing block lives outside the fragmentation context
+  // root. Walk these missed fixepos elements now.
+  if (!pending_fixedpos_missables_.IsEmpty()) {
+    for (const auto* fixedpos : pending_fixedpos_missables_) {
+      DCHECK(!walked_fixedpos_.Contains(fixedpos));
+      Walk(*fixedpos, context, /* pre_paint_info */ nullptr);
+    }
+  }
 }
 
 void PrePaintTreeWalk::WalkLayoutObjectChildren(
@@ -899,8 +909,11 @@
 
     // If we're in the middle of walking a missed OOF, don't enter nested OOFs
     // (but miss those as well, and handle them via fragment traversal).
-    if (context.is_inside_orphaned_object && child->IsOutOfFlowPositioned())
+    if (context.is_inside_orphaned_object && child->IsOutOfFlowPositioned()) {
+      if (child->IsFixedPositioned() && !walked_fixedpos_.Contains(child))
+        pending_fixedpos_missables_.insert(child);
       continue;
+    }
 
     // Perform an NGPhysicalBoxFragment-accompanied walk of the child
     // LayoutObject tree.
@@ -1000,9 +1013,7 @@
         }
         if (!search_fragment) {
           // Only walk unfragmented legacy-contained OOFs once.
-          if (context.is_inside_orphaned_object ||
-              (context.current_fragmentainer.fragment &&
-               !context.current_fragmentainer.fragment->IsFirstForNode()))
+          if (!parent_fragment->IsFirstForNode())
             continue;
         }
       }
@@ -1149,8 +1160,13 @@
   if (pre_paint_info) {
     physical_fragment = &pre_paint_info->box_fragment;
     if (physical_fragment && (physical_fragment->IsOutOfFlowPositioned() ||
-                              physical_fragment->IsFloating()))
+                              physical_fragment->IsFloating())) {
       pending_missables_.erase(physical_fragment);
+      if (object.IsFixedPositioned()) {
+        pending_fixedpos_missables_.erase(&object);
+        walked_fixedpos_.insert(&object);
+      }
+    }
     is_inside_fragment_child = pre_paint_info->is_inside_fragment_child;
   }
 
diff --git a/third_party/blink/renderer/core/paint/pre_paint_tree_walk.h b/third_party/blink/renderer/core/paint/pre_paint_tree_walk.h
index a311b0e4..7971ae5 100644
--- a/third_party/blink/renderer/core/paint/pre_paint_tree_walk.h
+++ b/third_party/blink/renderer/core/paint/pre_paint_tree_walk.h
@@ -227,6 +227,17 @@
   // CollectMissableChildren() and WalkMissedChildren().
   HashSet<const NGPhysicalFragment*> pending_missables_;
 
+  // List of fixedpos objects that may be missed during fragment traversal. This
+  // can happen if a fixedpos is nested in another OOF inside a multicol, and
+  // the OOF parent is a pending missable (see |pending_missables_|). If that
+  // fixedpos' containing block is located outside of the multicol, we can would
+  // miss it during normal fragment traversal.
+  HashSet<const LayoutObject*> pending_fixedpos_missables_;
+
+  // List of fixedpos objects that have already been walked. This helps to avoid
+  // re-walking any fixedpos objects handled by |pending_fixedpos_missables_|.
+  HashSet<const LayoutObject*> walked_fixedpos_;
+
   // TODO(https://crbug.com/841364): Remove is_wheel_event_regions_enabled
   // argument once kWheelEventRegions feature flag is removed.
   bool is_wheel_event_regions_enabled_ = false;
diff --git a/third_party/blink/renderer/core/script/dynamic_module_resolver.cc b/third_party/blink/renderer/core/script/dynamic_module_resolver.cc
index 64b77ea..99e7ff54 100644
--- a/third_party/blink/renderer/core/script/dynamic_module_resolver.cc
+++ b/third_party/blink/renderer/core/script/dynamic_module_resolver.cc
@@ -340,29 +340,6 @@
     return;
   }
 
-  switch (referrer_info.GetBaseUrlSource()) {
-    case ReferrerScriptInfo::BaseUrlSource::kClassicScriptCORSSameOrigin:
-      if (!modulator_
-               ->ResolveModuleSpecifier(module_request.specifier, BlankURL())
-               .IsValid()) {
-        UseCounter::Count(
-            ExecutionContext::From(modulator_->GetScriptState()),
-            WebFeature::kDynamicImportModuleScriptRelativeClassicSameOrigin);
-      }
-      break;
-    case ReferrerScriptInfo::BaseUrlSource::kClassicScriptCORSCrossOrigin:
-      if (!modulator_
-               ->ResolveModuleSpecifier(module_request.specifier, BlankURL())
-               .IsValid()) {
-        UseCounter::Count(
-            ExecutionContext::From(modulator_->GetScriptState()),
-            WebFeature::kDynamicImportModuleScriptRelativeClassicCrossOrigin);
-      }
-      break;
-    case ReferrerScriptInfo::BaseUrlSource::kOther:
-      break;
-  }
-
   // <spec step="4.4">Set fetch options to the descendant script fetch options
   // for referencing script's fetch options.</spec>
   //
diff --git a/third_party/blink/renderer/core/script/dynamic_module_resolver_test.cc b/third_party/blink/renderer/core/script/dynamic_module_resolver_test.cc
index ffd4f6ca..e4f5de7 100644
--- a/third_party/blink/renderer/core/script/dynamic_module_resolver_test.cc
+++ b/third_party/blink/renderer/core/script/dynamic_module_resolver_test.cc
@@ -481,8 +481,7 @@
                                Vector<ImportAssertion>());
   resolver->ResolveDynamically(
       module_request, wrong_base_url,
-      ReferrerScriptInfo(correct_base_url, ScriptFetchOptions(),
-                         ReferrerScriptInfo::BaseUrlSource::kOther),
+      ReferrerScriptInfo(correct_base_url, ScriptFetchOptions()),
       promise_resolver);
 
   v8::MicrotasksScope::PerformCheckpoint(scope.GetIsolate());
diff --git a/third_party/blink/renderer/modules/mediasource/media_source_registry_impl.cc b/third_party/blink/renderer/modules/mediasource/media_source_registry_impl.cc
index 2003129..fb24adf 100644
--- a/third_party/blink/renderer/modules/mediasource/media_source_registry_impl.cc
+++ b/third_party/blink/renderer/modules/mediasource/media_source_registry_impl.cc
@@ -86,7 +86,10 @@
 
   DCHECK(IsMainThread());
   DCHECK(!url.IsEmpty());
-  return media_sources_.at(url);
+  auto iter = media_sources_.find(url);
+  if (iter == media_sources_.end())
+    return nullptr;
+  return iter->value;
 }
 
 MediaSourceRegistryImpl::MediaSourceRegistryImpl() {
diff --git a/third_party/blink/renderer/platform/fonts/custom_font_data.h b/third_party/blink/renderer/platform/fonts/custom_font_data.h
index cd2bc76..3e5fd45 100644
--- a/third_party/blink/renderer/platform/fonts/custom_font_data.h
+++ b/third_party/blink/renderer/platform/fonts/custom_font_data.h
@@ -40,6 +40,7 @@
   virtual bool IsLoadingFallback() const { return false; }
   virtual bool ShouldSkipDrawing() const { return false; }
   virtual void ClearFontFaceSource() {}
+  virtual bool IsPendingDataUrl() const { return false; }
 
  protected:
   CustomFontData() = default;
diff --git a/third_party/blink/renderer/platform/fonts/font_data_for_range_set.h b/third_party/blink/renderer/platform/fonts/font_data_for_range_set.h
index bd576bc..3a861d8 100644
--- a/third_party/blink/renderer/platform/fonts/font_data_for_range_set.h
+++ b/third_party/blink/renderer/platform/fonts/font_data_for_range_set.h
@@ -64,6 +64,10 @@
     return font_data_ && font_data_->IsLoadingFallback();
   }
 
+  bool IsPendingDataUrlCustomFont() const {
+    return font_data_ && font_data_->IsPendingDataUrlCustomFont();
+  }
+
  protected:
   scoped_refptr<SimpleFontData> font_data_;
   scoped_refptr<UnicodeRangeSet> range_set_;
diff --git a/third_party/blink/renderer/platform/fonts/font_fallback_iterator.cc b/third_party/blink/renderer/platform/fonts/font_fallback_iterator.cc
index cd01d8e..470df1c 100644
--- a/third_party/blink/renderer/platform/fonts/font_fallback_iterator.cc
+++ b/third_party/blink/renderer/platform/fonts/font_fallback_iterator.cc
@@ -40,7 +40,10 @@
       // If it's a pending custom font, we need to make sure it can render any
       // new characters, otherwise we may trigger a redundant load. In other
       // cases (already loaded or not a custom font), we can use it right away.
+      // Loading data url fonts doesn't incur extra network cost, so we always
+      // load them.
       if (!segmented_face->IsPendingCustomFont() ||
+          segmented_face->IsPendingDataUrlCustomFont() ||
           !AlreadyLoadingRangeForHintChar(*it))
         return true;
     }
diff --git a/third_party/blink/renderer/platform/fonts/simple_font_data.h b/third_party/blink/renderer/platform/fonts/simple_font_data.h
index 99d373a8..dd10806 100644
--- a/third_party/blink/renderer/platform/fonts/simple_font_data.h
+++ b/third_party/blink/renderer/platform/fonts/simple_font_data.h
@@ -143,6 +143,9 @@
   bool IsLoadingFallback() const override {
     return custom_font_data_ ? custom_font_data_->IsLoadingFallback() : false;
   }
+  bool IsPendingDataUrlCustomFont() const {
+    return custom_font_data_ ? custom_font_data_->IsPendingDataUrl() : false;
+  }
   bool IsSegmented() const override;
   bool ShouldSkipDrawing() const override {
     return custom_font_data_ && custom_font_data_->ShouldSkipDrawing();
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
index c305f1f..844a8d6 100644
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -914,7 +914,7 @@
     },
     {
       name: "EncryptedMediaSessionClosedReason",
-      status: "test",
+      status: "experimental",
     },
     {
       name: "EnterKeyHintAttribute",
diff --git a/third_party/blink/web_tests/FlagExpectations/disable-layout-ng b/third_party/blink/web_tests/FlagExpectations/disable-layout-ng
index 24b4890c..0178274 100644
--- a/third_party/blink/web_tests/FlagExpectations/disable-layout-ng
+++ b/third_party/blink/web_tests/FlagExpectations/disable-layout-ng
@@ -206,6 +206,7 @@
 crbug.com/591099 external/wpt/css/css-position/position-absolute-center-004.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-position/position-absolute-crash-chrome-006.html [ Crash ]
 crbug.com/591099 external/wpt/css/css-position/position-absolute-dynamic-overflow-002.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-position/position-absolute-fit-content.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-position/position-absolute-in-inline-003.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-position/position-absolute-in-inline-004.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-position/position-absolute-replaced-intrinsic-size.tentative.html [ Failure ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 49f975d..ebf4b2f 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -3002,7 +3002,7 @@
 crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc-encoded-transform/RTCPeerConnection-insertable-streams-audio.https.html [ Timeout ]
 crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/no-media-call.html [ Timeout ]
 crbug.com/626703 [ Mac11.0 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCPeerConnection-ondatachannel.html [ Timeout ]
-# crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCRtpTransceiver.https.html [ Timeout ]
+crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCRtpTransceiver.https.html [ Timeout ]
 crbug.com/626703 [ Mac11.0 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCDataChannel-close.html [ Timeout ]
 crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCPeerConnection-perfect-negotiation.https.html [ Timeout ]
 crbug.com/626703 [ Mac11.0 ] external/wpt/webrtc/RTCPeerConnection-iceConnectionState.https.html [ Timeout ]
@@ -4125,8 +4125,6 @@
 crbug.com/1179585 [ Mac ] virtual/layout_ng_svg_text/paint/invalidation/svg/repaint-non-scaling-stroke-text.html [ Failure ]
 crbug.com/1179585 [ Mac ] virtual/layout_ng_svg_text/paint/invalidation/svg/repaint-non-scaling-stroke-text-decoration.html [ Failure ]
 crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/text-match-svg.html [ Failure ]
-crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/text-rescale.html [ Failure ]
-crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/text-viewbox-rescale.html [ Failure ]
 crbug.com/1179585 virtual/layout_ng_svg_text/paint/invalidation/svg/transform-text-element.html [ Failure Pass ]
 crbug.com/1179585 [ Mac ] virtual/layout_ng_svg_text/paint/invalidation/svg/tspan-dynamic-positioning.svg [ Failure ]
 crbug.com/1179585 [ Mac ] virtual/layout_ng_svg_text/paint/invalidation/svg/use-detach.svg [ Failure ]
@@ -7241,9 +7239,6 @@
 crbug.com/1234057 [ Mac ] external/wpt/css/css-paint-api/no-op-animation.https.html [ Failure Pass ]
 crbug.com/1234302 [ Mac ] virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/paint2d-image.https.html [ Failure Pass ]
 
-# Temporary disabling to allow landing https://webrtc-review.googlesource.com/c/src/+/227120
-crbug.com/webrtc/12906 external/wpt/webrtc/RTCRtpTransceiver.https.html [ Failure Pass Timeout ]
-
 # Sheriff 2021-07-29
 crbug.com/626703 [ Mac ] external/wpt/webrtc/simulcast/setParameters-active.https.html [ Failure Pass ]
 crbug.com/626703 http/tests/security/cross-frame-access-put.html [ Failure Pass ]
@@ -7253,7 +7248,10 @@
 crbug.com/626703 virtual/threaded/external/wpt/animation-worklet/worklet-animation-with-non-ascii-name.https.html [ Failure Pass ]
 crbug.com/626703 virtual/oopr-canvas2d/fast/canvas/canvas-composite-canvas.html [ Failure Pass ]
 
-# Sheriff 20121-07-30
+# Sheriff 2021-07-30
 crbug.com/1234619 external/wpt/screen-capture/permissions-policy-audio+video.https.sub.html [ Failure ]
 crbug.com/1234619 external/wpt/screen-capture/permissions-policy-audio.https.sub.html [ Failure ]
 crbug.com/1234619 external/wpt/screen-capture/permissions-policy-video.https.sub.html [ Failure ]
+
+# Sheriff 2021-08-02
+crbug.com/1235685 [ Mac10.14 ] virtual/scroll-unification/plugins/focus-change-4-change-focus-and-blur.html [ Failure Pass ]
diff --git a/third_party/blink/web_tests/WebGPUExpectations b/third_party/blink/web_tests/WebGPUExpectations
index 55e7c95..604dabe 100644
--- a/third_party/blink/web_tests/WebGPUExpectations
+++ b/third_party/blink/web_tests/WebGPUExpectations
@@ -34,6 +34,12 @@
 [ Win ] wpt_internal/webgpu/cts.html?q=webgpu:web_platform,copyToTexture,canvas:copy_contents_from_gl_context_canvas:* [ Slow ]
 [ Win ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,rendering,draw:arguments:* [ Slow ]
 [ Win ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_only:* [ Slow ]
+# Intel only. Really slow and killed by the GPU watchdog?
+crbug.com/dawn/1046 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;drawCallTestParameter="firstVertex";type="float32x4";* [ Slow Crash ]
+crbug.com/dawn/1046 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;drawCallTestParameter="instanceCount";type="float32x4";* [ Slow Crash ]
+crbug.com/dawn/1046 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;drawCallTestParameter="vertexCount";type="float32x4";* [ Slow Crash ]
+crbug.com/dawn/1046 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=false;drawCallTestParameter="baseVertex";type="float32x4";* [ Slow Crash ]
+crbug.com/dawn/1046 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=false;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";* [ Slow Crash ]
 
 ###
 ### Untriaged failures. Please prefer to triage thoroughly and file a bug!
@@ -50,26 +56,6 @@
 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,resource_init,texture_zero:uninitialized_texture_is_zero:dimension="2d";format="r8unorm";aspect="all";mipLevelCount=5;sampleCount=1;uninitializeMethod="StoreOpClear";layerCount=1;nonPowerOfTwo=false;canaryOnCreation=false;* [ Failure ]
 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,resource_init,texture_zero:uninitialized_texture_is_zero:dimension="2d";format="rg8unorm";aspect="all";mipLevelCount=5;sampleCount=1;uninitializeMethod="StoreOpClear";layerCount=1;nonPowerOfTwo=false;canaryOnCreation=false;* [ Failure ]
 
-# Mac (Intel and AMD). Possibly nondeterministic.
-crbug.com/1161355 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,array:format="r8snorm";* [ Failure ]
-crbug.com/1161355 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,array:format="rg8snorm";* [ Failure ]
-crbug.com/1161355 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,array:format="r32float";* [ Failure ]
-crbug.com/1161355 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,array:format="rg16float";* [ Failure ]
-crbug.com/1161355 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,array:format="rgba8snorm";* [ Failure ]
-crbug.com/1161355 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,array:format="rg11b10ufloat";* [ Failure ]
-crbug.com/1161355 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,array:format="rg32float";* [ Failure ]
-crbug.com/1161355 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,array:format="rgba16float";* [ Failure ]
-crbug.com/1161355 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,array:format="rgba32float";* [ Failure ]
-crbug.com/1161355 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,non_array:format="r8snorm";* [ Failure ]
-crbug.com/1161355 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,non_array:format="rg8snorm";* [ Failure ]
-crbug.com/1161355 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,non_array:format="r32float";* [ Failure ]
-crbug.com/1161355 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,non_array:format="rg16float";* [ Failure ]
-crbug.com/1161355 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,non_array:format="rgba8snorm";* [ Failure ]
-crbug.com/1161355 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,non_array:format="rg11b10ufloat";* [ Failure ]
-crbug.com/1161355 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,non_array:format="rg32float";* [ Failure ]
-crbug.com/1161355 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,non_array:format="rgba16float";* [ Failure ]
-crbug.com/1161355 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,non_array:format="rgba32float";* [ Failure ]
-
 ###
 ### Untriaged timeouts
 ###
@@ -110,6 +96,14 @@
 crbug.com/dawn/1003 [ Linux ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,non_array:format="rgb9e5ufloat";* [ Failure ]
 crbug.com/dawn/1003 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,non_array:format="rgb9e5ufloat";* [ Failure ]
 
+# Precision. Only on Mac Intel
+crbug.com/dawn/1047 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,array:format="r8snorm";* [ Failure ]
+crbug.com/dawn/1047 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,array:format="rg8snorm";* [ Failure ]
+crbug.com/dawn/1047 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,array:format="rgba8snorm";* [ Failure ]
+crbug.com/dawn/1047 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,non_array:format="r8snorm";* [ Failure ]
+crbug.com/dawn/1047 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,non_array:format="rg8snorm";* [ Failure ]
+crbug.com/dawn/1047 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:api,operation,command_buffer,copyTextureToTexture:color_textures,non_compressed,non_array:format="rgba8snorm";* [ Failure ]
+
 # Limits that should be updated.
 # maxStorageTexturePerShaderStage 8 -> 4
 crbug.com/dawn/796 wpt_internal/webgpu/cts.html?q=webgpu:api,validation,createBindGroupLayout:max_resources_per_stage,in_pipeline_layout:* [ Failure ]
@@ -118,16 +112,6 @@
 # maxInterStageShaderComponents 64 -> 60 (crbug.com/dawn/759 [ Linux ][ Failure ] on NVIDIA will be recovered after the tests are fixed)
 crbug.com/dawn/802 wpt_internal/webgpu/cts.html?q=webgpu:api,operation,rendering,draw:vertex_attributes,basic:* [ Skip ]
 
-# Robust access tests cause a lot of failures in various systems. Revisit expectations after the tests are fixed.
-crbug.com/dawn/1009 [ Linux ] wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:* [ Slow Failure ]
-crbug.com/dawn/1009 [ Win ] wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:* [ Slow Failure ]
-crbug.com/dawn/1018 [ Mac ] wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:* [ Slow Failure Crash ]
-crbug.com/dawn/1011 [ Linux ] wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=false;indirect=false;* [ Crash Failure ]
-crbug.com/dawn/1011 [ Linux ] wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=false;indirect=true;* [ Crash Failure ]
-crbug.com/dawn/1011 [ Linux ] wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=true;indirect=false;* [ Crash Failure ]
-crbug.com/dawn/1011 [ Linux ] wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=true;indirect=true;* [ Crash Failure ]
-
-
 ###
 ### Test bugs (fixed upstream)
 ###
@@ -147,8 +131,8 @@
 crbug.com/1215024 wpt_internal/webgpu/cts.html?q=webgpu:api,validation,createComputePipeline:enrty_point_name_must_match:stageEntryPoint="main%5Cu0000";* [ Failure ]
 crbug.com/1215024 wpt_internal/webgpu/cts.html?q=webgpu:api,validation,createComputePipeline:enrty_point_name_must_match:stageEntryPoint="main%5Cu0000a";* [ Failure ]
 
-# Fails newly added validation.
-crbug.com/dawn/808 wpt_internal/webgpu/cts.html?q=webgpu:api,operation,vertex_state,index_format:* [ Failure ]
+# Crash when creating the bindgroup. Most likely because we are using an invalid VkImageView
+crbug.com/dawn/1043 [ Linux ] wpt_internal/webgpu/cts.html?q=webgpu:api,validation,createBindGroup:texture,resource_state:* [ Crash Failure ]
 
 # Failures because 1d, stencil8 and depth16unorm aren't implemented.
 crbug.com/dawn/129 wpt_internal/webgpu/cts.html?q=webgpu:api,validation,createBindGroup:texture_must_have_correct_dimension:viewDimension="1d";* [ Failure ]
@@ -224,7 +208,10 @@
 crbug.com/dawn/995 wpt_internal/webgpu/cts.html?q=webgpu:api,validation,buffer,create:createBuffer_invalid_and_oom:* [ Failure ]
 
 # Validation of max dispatch size isn't implemented for dispatchIndirect
-crbug.com/dawn/1006 wpt_internal/webgpu/cts.html?q=webgpu:api,validation,encoding,cmds,compute_pass:dispatch_sizes:dispatchType="indirect";* [ Skip ]
+crbug.com/dawn/1039 wpt_internal/webgpu/cts.html?q=webgpu:api,validation,encoding,cmds,compute_pass:dispatch_sizes:dispatchType="indirect";* [ Skip ]
+
+# Validation for drawIndexedIndirect isn't implemented
+crbug.com/dawn/809 wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;* [ Skip ]
 
 # Dawn validation requires that aspects of attachments is "all", which the tests don't do.
 # See also crbug.com/dawn/603 for missing resource state D3D12_RESOURCE_STATE_DEPTH_WRITE that happens on the same tests.
@@ -234,9 +221,6 @@
 crbug.com/dawn/812 wpt_internal/webgpu/cts.html?q=webgpu:api,validation,resource_usages,texture,in_pass_encoder:subresources_and_binding_types_combination_for_aspect:format="depth24plus-stencil8";aspect1="depth-only";type1="render-target";* [ Failure ]
 crbug.com/dawn/812 wpt_internal/webgpu/cts.html?q=webgpu:api,validation,resource_usages,texture,in_pass_encoder:subresources_and_binding_types_combination_for_aspect:format="depth24plus-stencil8";aspect1="stencil-only";type1="render-target";* [ Failure ]
 
-# Currently drawIndexedIndirect is disallowed due to missing of index buffer OOB validation. Skip the related tests.
-crbug.com/dawn/809 wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;* [ Skip ]
-
 ###
 ### Mac (Metal) specific
 ###
@@ -290,6 +274,10 @@
 # Crashes or fails with "Backing is being accessed by both GL and Vulkan"
 crbug.com/1234041 [ Linux ] wpt_internal/webgpu/cts.html?q=webgpu:api,validation,queue,copyToTexture,CopyExternalImageToTexture:* [ Skip ]
 
+# VVLs want fillBuffer to be a multiple of 4
+crbug.com/dawn/1011 [ Linux ] wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;* [ Skip ]
+crbug.com/dawn/1011 [ Linux ] wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=false;* [ Skip ]
+
 ###
 ### Windows (D3D12) specific
 ###
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/fallback-remote-to-data-url.html b/third_party/blink/web_tests/external/wpt/css/css-fonts/fallback-remote-to-data-url.html
new file mode 100644
index 0000000..2f63312
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-fonts/fallback-remote-to-data-url.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test that font fallback from a pending web font to a data url works.</title>
+<link rel=help href="https://drafts.csswg.org/css-fonts-4/#font-matching-algorithm">
+<link rel=help href="https://bugs.chromium.org/p/chromium/issues/detail?id=897539">
+<link rel=author href="mailto:xiaochengh@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Ahem woff2 encoded as base64
+const src = "url(data:font/woff2;base64,d09GMgABAAAAAAaUAAsAAAAAMMAAAAZCAAEAQgAAAAAAAAAAAAAAAAAAAAAAAAAABmAAjHIREAq0ZJciATYCJAOHVAuDbAAEIAWMaAeEGBtRH6PAbk5OdLL/AvEQU7CfpOgyWiXGtGR2AZzAEBBkvKZsA8ABAAAAAAB2VxThhdLU16r9XGZBLIg+uAYXQbX2b8/s3ieyHCJhU0+GbZwij5oVOXYAbFESy2QNONfaM24ZumkLtuiI3/DN6ufH5TszT6HcVpeWuhTKgZ6BPzsA/N5pZr/wUvFPa1tYWOlXGxzL45XuLMuZkZJOyAJyCF5n9FBf1Mv1FsLQ4N7f3Uf1er8DEciZ9EXfACNfb6/fr9XTeEgimySdTm339nRnkXSmDXZ+eiQxaUTPhCba3COhlJN0FeuUSunEQMVfz6bPYtGsyvinqOvkGLJ8CBsCeTkNwIHBxnFHYoyQ6qBW1d3gzAQ2wCW2Jw2gBws/siy0baIseC8AOdmDiaBGwgLCNfNV6pYswAxakMtxOQTR6doOhHSsg17Z5kS/8UXV6dNvwCCGDBsxasy4CTyBSCJTqDQ6g8lic7jA4wuEIjGJkEob63yIKZfa+phrn/u83w/BCIrhBEnRDMvxgijJiqrphmnZjuv5QQgyiuIkzfKirOqm7fphnOZl3fbjvO7n/X6Rd9shp6CkskdNQ0vnhJ7BFSMTxOzaDQurU+fOrLpkY7fCwcnFzePCklvLvHz24RwSFDJvwZp1m7aERUTdKbToWJFDRwCvFduw7UCJUmXKVahUpVqNWnXAaQ0aNWnWolWbdh06denWoxc+lyNsgx50xiz3QMOI4kV+mQ9zIqdyr7hKVektgwtsSDDgwEeMFj1G5HuxT833zY/PT/mG7/iFv+IN3/i/bPoHtjWwIPUKUTzPL/NhjudUbhaXVGkRGiygepc16evaSwUH+D9px6DJ29Peth3i3xd+rfW/q39e/fIP2uFNgPeX9ejUoELkQwd1He/P7q8D8Pbhfn9lGdLueyeB/Tlxh2w6krs7D2bxX2uuL+6avoPcp0DZIhZ9VAxr23h5jNJqI7eyJ0zS761WrMs4O59pU2Z8OaBMieCpiHsIT5FyXLmaA8n9UuH0wSwectY0P5jgkF4l3WfDNDJZ79U+8IbytMJpi5EA+AlG4CXwljI/ctIdtR0yolCL3pPC06OV4FT7Gb7h3KhiFyfIs4GCDIstb60A/IX4BPyi3Af1otbQhQdMahztWLybUqvq/OmmkVjEPAaBTuL0sflbHhzjuy1hgH94duBnTMHtr3gLHxDqfk34cD/tt6AYtIfjf/StRcEvlzI1+7/Gkv8aLAhw4XuXZVxfV0PWtgsqMTLlRT0Q4KeT7wPodfsDSflbEHFwcjBLAvj7cT8CfAUxuZOm4zeJ65ixC7msJGaU20oRE601rNH61fyOMHaxL6j+KZ/As/hy8gM+p/ITKefyC3auYnX0p/kdWiLsc/TPOAH9O05K6L/tU2hWsICDqZTNcBRuIuCopRBw1FoIOGo3BBx1GwKOegwBR/2Aim3oIJ9jtCMjN+hgQo8EKgLDIoJGmRH7FBYyGcgOtmIeqDMpmDYD5EsGa0VaLjuyx0j+2kAaJZjXMpjyBcvl1hKUFVyYkAqom5VdJZ6VoSJCztbVoMK4gdUcyawDXi1wJanhC8Qh3kAwocFmggi1m00uCAMxqCsTZp5K0dMcsYTP4A2QC1fgZQDMyseIJbkPlfzMK+g58KKNYCZe2rnsrFAZks2u1WTdrKKvYy+57D3HBpujEPH6wFhX2NPX4XoYWge9MLH4F9waNMJYEjKRRUHCiJbBHnqWZs67Cb403EYsH+2ZFBnUlJhv5zdxYZ2x2NiGC5AabmK35AGjkuAF7q0g5do13MEr5SrVqIIgskbXDGCCb4O66EJj7fdKI3vt4KmEMhkuUVzhZSjR9JisNCyJRHpnOnjxAi/IJyG3oigkXCh7a3f2LPvnPEg1yet1gXSj/U4fy4A7N6yuxRDGCdoLoDey1gDL7+L52830I2h1f4FApNQlY6YmOaA+ydVI8EmnQ7KRmUVxZCcP7y97T6EiHxRDUA1ALzCituHHPnfrM6JCtJwybcasOSVSXrRkxaoiSRu00bYdu/bsO6gxculK7TzqrTv3Hjx68uzFqzeADtmyR7lKUUFFkkbp6mMUhmnVGNdvQC8TnwC/Mg4hVp30MhW6LBs0FDgZtW57tWVLnr4sh0dbAAAAAA==) format('woff2')";
+
+// Add the inline font via JS so that we can listen to its load status.
+// Covers digits 0-9 only.
+const dataFont = new FontFace('data-font', src, {unicodeRange: 'U+30-39'});
+document.fonts.add(dataFont);
+</script>
+
+<style>
+@font-face {
+  font-family: remote-font;
+  /* Set a long delay to make sure it doesn't finish loading */
+  src: url('/fonts/Revalia.woff?pipe=trickle(d1)') format('woff');
+}
+
+#target {
+  font: 25px/1 remote-font, data-font, monospace;
+}
+</style>
+<span id="target">0123456789</span>
+<span id="non-target">ABCDEFGHIJ</span>
+<script>
+promise_test(async () => {
+  // The loading of data-font may still be asynchronous. Wait to allow it to load.
+  await dataFont.loaded;
+  assert_false(
+    document.fonts.check('25px/1 remote-font'),
+    'Remote font is still pending');
+  assert_equals(
+    target.offsetWidth, 250,
+    'Digits are in the unicode range of data-font and hence shaped with it');
+  assert_not_equals(
+    document.getElementById('non-target').offsetWidth, 250,
+    'Letters are out of the unicode range of data-font and hence shaped with fallback');
+}, 'We should use the inline custom font to render the page when the primary remote font is loading');
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/fixedpos-static-pos-with-viewport-cb-001.html b/third_party/blink/web_tests/external/wpt/css/css-multicol/fixedpos-static-pos-with-viewport-cb-001.html
new file mode 100644
index 0000000..8b71999a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/fixedpos-static-pos-with-viewport-cb-001.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<title>
+  Nested fixedpos static position in a multicol with viewport containing block.
+</title>
+<link rel="help" href="https://www.w3.org/TR/css-position-3/#abspos-breaking">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<style>
+  .multicol {
+    column-count: 2;
+    column-fill: auto;
+    column-gap: 0px;
+    width: 50px;
+    height: 100px;
+    margin-top: -100px;
+    margin-left: -175px;
+  }
+  .rel {
+    position: relative;
+  }
+  .abs {
+    position: absolute;
+    width: 25px;
+    height: 400px;
+  }
+  .fixed {
+    position: fixed;
+    width: 100px;
+    height: 100px;
+  }
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="multicol">
+  <div class="rel">
+    <div style="height: 400px;"></div>
+    <div class="abs">
+      <div style="height: 400px;"></div>
+      <div class="fixed" style="background: green;"></div>
+    </div>
+  </div>
+</div>
+<div class="fixed" style="background: red; z-index: -1;"></div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/fixedpos-static-pos-with-viewport-cb-002.html b/third_party/blink/web_tests/external/wpt/css/css-multicol/fixedpos-static-pos-with-viewport-cb-002.html
new file mode 100644
index 0000000..c2afef38
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/fixedpos-static-pos-with-viewport-cb-002.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<title>
+  Nested fixedpos in a multicol with viewport containing block.
+</title>
+<link rel="help" href="https://www.w3.org/TR/css-position-3/#abspos-breaking">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<style>
+  .multicol {
+    column-count: 2;
+    column-fill: auto;
+    column-gap: 0px;
+    width: 50px;
+    height: 100px;
+    margin-top: -100px;
+    margin-left: -50px;
+  }
+  .rel {
+    position: relative;
+    height: 300px;
+  }
+  .abs {
+    position: absolute;
+    width: 25px;
+  }
+  .fixed {
+    position: fixed;
+    width: 100px;
+    height: 100px;
+  }
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="multicol">
+  <div class="rel">
+    <div style="height: 100px;"></div>
+    <div class="abs">
+      <div style="height: 200px;"></div>
+      <div class="fixed" style="background: green;"></div>
+    </div>
+  </div>
+</div>
+<div class="fixed" style="background: red; z-index: -1;"></div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/position-absolute-fit-content.html b/third_party/blink/web_tests/external/wpt/css/css-position/position-absolute-fit-content.html
new file mode 100644
index 0000000..a84cc043
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-position/position-absolute-fit-content.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3973">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1135207">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1232439">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="position: relative; width: 100px; height: 200px;">
+  <div style="position: absolute; top: 0; bottom: 0; left: 0; right: 0; max-height: fit-content; background: green;">
+    <div style="height: 100px;"></div>
+  </div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/scripts/inline-event-handlers-UA-code.js b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/scripts/inline-event-handlers-UA-code.js
index eaf98f3..3202ce4 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/scripts/inline-event-handlers-UA-code.js
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/scripts/inline-event-handlers-UA-code.js
@@ -1,3 +1,3 @@
 // import()s in an event handler are resolved relative to the document base.
-window.dummyDiv.setAttribute("onclick", `import('../imports-a.js?label=' + window.label).then(window.continueTest, window.errorTest)`);
+window.dummyDiv.setAttribute("onclick", `import('./imports-a.js?label=' + window.label).then(window.continueTest, window.errorTest)`);
 window.dummyDiv.click(); // different from **on**click()
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/scripts/reflected-inline-event-handlers.js b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/scripts/reflected-inline-event-handlers.js
index 402219d..923eb7d8 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/scripts/reflected-inline-event-handlers.js
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/scripts/reflected-inline-event-handlers.js
@@ -1,3 +1,3 @@
 // import()s in an event handler are resolved relative to the document base.
-window.dummyDiv.setAttribute("onclick", `import('../imports-a.js?label=' + window.label).then(window.continueTest, window.errorTest)`);
+window.dummyDiv.setAttribute("onclick", `import('./imports-a.js?label=' + window.label).then(window.continueTest, window.errorTest)`);
 window.dummyDiv.onclick();
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-external-classic-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-external-classic-expected.txt
index abfc12f..8e4257e 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-external-classic-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-external-classic-expected.txt
@@ -1,8 +1,8 @@
 This is a testharness.js-based test.
-FAIL setTimeout should successfully import promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/the-script-element/imports-a.js?label=setTimeout"
+FAIL setTimeout should successfully import promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/imports-a.js?label=setTimeout"
 PASS eval should successfully import
 PASS Function should successfully import
-PASS reflected-inline-event-handlers should successfully import
-PASS inline-event-handlers-UA-code should successfully import
+FAIL reflected-inline-event-handlers should successfully import promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/the-script-element/module/dynamic-import/imports-a.js?label=reflected-inline-event-handlers"
+FAIL inline-event-handlers-UA-code should successfully import promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/the-script-element/module/dynamic-import/imports-a.js?label=inline-event-handlers-UA-code"
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-external-classic.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-external-classic.html
index 7cf2dac..855705e 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-external-classic.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-external-classic.html
@@ -8,7 +8,18 @@
 
 <div id="dummy"></div>
 
+<base href="scripts/foo/">
 <script>
+// Tweak the base URL of the document here to distinguish:
+// - document URL
+// - document base URL = ../
+// - External scripts' base URL = ./scripts/eval.js etc.
+// - This inline script's base URL = ./scripts/foo/
+document.querySelector("base").remove();
+const base = document.createElement("base");
+base.setAttribute("href", "../");
+document.body.appendChild(base);
+
 function load(scriptSrc) {
   const el = document.createElement("script");
   el.src = scriptSrc;
@@ -41,7 +52,7 @@
     const promise = createTestPromise();
 
     window.label = label;
-    load(`scripts/${label}.js`);
+    load(`dynamic-import/scripts/${label}.js`);
 
     return promise.then(module => {
       assert_true(window.evaluated_imports_a, "The module must have been evaluated");
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-external-module-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-external-module-expected.txt
index abfc12f..8e4257e 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-external-module-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-external-module-expected.txt
@@ -1,8 +1,8 @@
 This is a testharness.js-based test.
-FAIL setTimeout should successfully import promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/the-script-element/imports-a.js?label=setTimeout"
+FAIL setTimeout should successfully import promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/imports-a.js?label=setTimeout"
 PASS eval should successfully import
 PASS Function should successfully import
-PASS reflected-inline-event-handlers should successfully import
-PASS inline-event-handlers-UA-code should successfully import
+FAIL reflected-inline-event-handlers should successfully import promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/the-script-element/module/dynamic-import/imports-a.js?label=reflected-inline-event-handlers"
+FAIL inline-event-handlers-UA-code should successfully import promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/the-script-element/module/dynamic-import/imports-a.js?label=inline-event-handlers-UA-code"
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-external-module.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-external-module.html
index 73986c2..d90af9c 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-external-module.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-external-module.html
@@ -8,7 +8,18 @@
 
 <div id="dummy"></div>
 
+<base href="scripts/foo/">
 <script type="module">
+// Tweak the base URL of the document here to distinguish:
+// - document URL
+// - document base URL = ../
+// - External scripts' base URL = ./scripts/eval.js etc.
+// - This inline script's base URL = ./scripts/foo/
+document.querySelector("base").remove();
+const base = document.createElement("base");
+base.setAttribute("href", "../");
+document.body.appendChild(base);
+
 function load(scriptSrc) {
   const el = document.createElement("script");
   el.type = "module";
@@ -42,7 +53,7 @@
     const promise = createTestPromise();
 
     window.label = label;
-    load(`scripts/${label}.js`);
+    load(`dynamic-import/scripts/${label}.js`);
 
     return promise.then(module => {
       assert_true(window.evaluated_imports_a, "The module must have been evaluated");
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-inline-classic-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-inline-classic-expected.txt
index adf45dd..bb78d07 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-inline-classic-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-inline-classic-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-PASS setTimeout should successfully import
+FAIL setTimeout should successfully import promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/imports-a.js?label=setTimeout"
 PASS eval should successfully import
 PASS the Function constructor should successfully import
 FAIL reflected inline event handlers should successfully import promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/the-script-element/module/dynamic-import/imports-a.js?label=reflected%20inline%20event%20handlers"
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-inline-classic.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-inline-classic.html
index 1bd6d7d..2fe1f75 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-inline-classic.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-inline-classic.html
@@ -3,14 +3,23 @@
 <title>import() inside compiled strings uses the script base URL (= document base URL) inside an inline classic script</title>
 <link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">
 
-<base href="..">
-
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 
+<body>
 <div id="dummy"></div>
 
+<base href="scripts/foo/">
 <script>
+// Tweak the base URL of the document here to distinguish:
+// - document URL
+// - document base URL = ../
+// - This inline script's base URL = ./scripts/foo/
+document.querySelector("base").remove();
+const base = document.createElement("base");
+base.setAttribute("href", "../");
+document.body.appendChild(base);
+
 function createTestPromise() {
   return new Promise((resolve, reject) => {
     window.continueTest = resolve;
@@ -20,23 +29,7 @@
 
 const dummyDiv = document.querySelector("#dummy");
 
-const evaluators = {
-  setTimeout,
-  eval,
-  "the Function constructor"(x) {
-    Function(x)();
-  },
-  "reflected inline event handlers"(x) {
-    dummyDiv.setAttribute("onclick", x);
-    dummyDiv.onclick();
-  },
-  "inline event handlers triggered via UA code"(x) {
-    dummyDiv.setAttribute("onclick", x);
-    dummyDiv.click(); // different from .**on**click()
-  }
-};
-
-for (const [label, evaluator] of Object.entries(evaluators)) {
+function doTest(label, evaluator, path) {
   promise_test(t => {
     t.add_cleanup(() => {
       dummyDiv.removeAttribute("onclick");
@@ -45,12 +38,36 @@
 
     const promise = createTestPromise();
 
-    evaluator(`import('./imports-a.js?label=${label}').then(window.continueTest, window.errorTest);`);
+    evaluator(`import('${path}/imports-a.js?label=${label}').then(window.continueTest, window.errorTest);`);
 
     return promise.then(module => {
       assert_true(window.evaluated_imports_a, "The module must have been evaluated");
       assert_equals(module.A.from, "imports-a.js", "The module namespace object must be correct");
     });
   }, label + " should successfully import");
-};
+}
+
+// Inline script's base URL should be used.
+doTest("setTimeout", setTimeout, "../../..");
+doTest("eval", eval, "../../..");
+doTest("the Function constructor",
+  (x) => {
+    Function(x)();
+  },
+  "../../..");
+
+// Document's base URL should be used, as there are no active scripts.
+doTest("reflected inline event handlers",
+  (x) => {
+    dummyDiv.setAttribute("onclick", x);
+    dummyDiv.onclick();
+  },
+  ".");
+
+doTest("inline event handlers triggered via UA code",
+  (x) => {
+    dummyDiv.setAttribute("onclick", x);
+    dummyDiv.click(); // different from .**on**click()
+  },
+  ".");
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-inline-module-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-inline-module-expected.txt
index adf45dd..bb78d07 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-inline-module-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-inline-module-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-PASS setTimeout should successfully import
+FAIL setTimeout should successfully import promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/imports-a.js?label=setTimeout"
 PASS eval should successfully import
 PASS the Function constructor should successfully import
 FAIL reflected inline event handlers should successfully import promise_test: Unhandled rejection with value: object "TypeError: Failed to fetch dynamically imported module: http://web-platform.test:8001/html/semantics/scripting-1/the-script-element/module/dynamic-import/imports-a.js?label=reflected%20inline%20event%20handlers"
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-inline-module.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-inline-module.html
index f5b8574..1691550e 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-inline-module.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-inline-module.html
@@ -3,14 +3,23 @@
 <title>import() inside compiled strings uses the script base URL (= document base URL) inside an inline module script</title>
 <link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">
 
-<base href="..">
-
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 
+<body>
 <div id="dummy"></div>
 
+<base href="scripts/foo/">
 <script type="module">
+// Tweak the base URL of the document here to distinguish:
+// - document URL
+// - document base URL = ../
+// - This inline script's base URL = ./scripts/foo/
+document.querySelector("base").remove();
+const base = document.createElement("base");
+base.setAttribute("href", "../");
+document.body.appendChild(base);
+
 function createTestPromise() {
   return new Promise((resolve, reject) => {
     window.continueTest = resolve;
@@ -20,23 +29,7 @@
 
 const dummyDiv = document.querySelector("#dummy");
 
-const evaluators = {
-  setTimeout,
-  eval,
-  "the Function constructor"(x) {
-    Function(x)();
-  },
-  "reflected inline event handlers"(x) {
-    dummyDiv.setAttribute("onclick", x);
-    dummyDiv.onclick();
-  },
-  "inline event handlers triggered via UA code"(x) {
-    dummyDiv.setAttribute("onclick", x);
-    dummyDiv.click(); // different from .**on**click()
-  }
-};
-
-for (const [label, evaluator] of Object.entries(evaluators)) {
+function doTest(label, evaluator, path) {
   promise_test(t => {
     t.add_cleanup(() => {
       dummyDiv.removeAttribute("onclick");
@@ -45,12 +38,36 @@
 
     const promise = createTestPromise();
 
-    evaluator(`import('./imports-a.js?label=${label}').then(window.continueTest, window.errorTest);`);
+    evaluator(`import('${path}/imports-a.js?label=${label}').then(window.continueTest, window.errorTest);`);
 
     return promise.then(module => {
       assert_true(window.evaluated_imports_a, "The module must have been evaluated");
       assert_equals(module.A.from, "imports-a.js", "The module namespace object must be correct");
     });
   }, label + " should successfully import");
-};
+}
+
+// Inline script's base URL should be used.
+doTest("setTimeout", setTimeout, "../../..");
+doTest("eval", eval, "../../..");
+doTest("the Function constructor",
+  (x) => {
+    Function(x)();
+  },
+  "../../..");
+
+// Document's base URL should be used, as there are no active scripts.
+doTest("reflected inline event handlers",
+  (x) => {
+    dummyDiv.setAttribute("onclick", x);
+    dummyDiv.onclick();
+  },
+  ".");
+
+doTest("inline event handlers triggered via UA code",
+  (x) => {
+    dummyDiv.setAttribute("onclick", x);
+    dummyDiv.click(); // different from .**on**click()
+  },
+  ".");
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-3-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-3-expected.txt
deleted file mode 100644
index 1b30fce..0000000
--- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-3-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL Test that unresolvable cycles lead to SyntaxError events on window and load events on script assert_array_equals: expected property 2 to be "Uncaught SyntaxError: Detected cycle while resolving name 'x' in './cycle-unresolvable-a.js'" but got "Uncaught SyntaxError: Detected cycle while resolving name 'x' in './cycle-unresolvable.js'" (expected array ["Uncaught SyntaxError: Detected cycle while resolving name 'x' in './cycle-unresolvable-a.js'", 1, "Uncaught SyntaxError: Detected cycle while resolving name 'x' in './cycle-unresolvable-a.js'", 2, "Uncaught SyntaxError: Detected cycle while resolving name 'x' in './cycle-unresolvable-a.js'", 3] got ["Uncaught SyntaxError: Detected cycle while resolving name 'x' in './cycle-unresolvable-a.js'", 1, "Uncaught SyntaxError: Detected cycle while resolving name 'x' in './cycle-unresolvable.js'", 2, "Uncaught SyntaxError: Detected cycle while resolving name 'x' in './cycle-unresolvable-a.js'", 3])
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html
index 8fa2b8b..32f0a4a 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html
@@ -17,8 +17,14 @@
     });
 
     window.addEventListener("load", test_load.step_func_done(ev => {
-      const msg = log[0];
-      assert_array_equals(log, [msg, 1, msg, 2, msg, 3]);
+      assert_equals(log.length, 6, 'Log length');
+      assert_equals(log[1], 1);
+      assert_equals(log[3], 2);
+      assert_equals(log[5], 3);
+      assert_not_equals(log[0], log[2],
+        'Instantiation error objects for different root scripts');
+      assert_equals(log[0], log[4],
+        'Instantiation error objects for the same root script');
     }));
 
     function unreachable() { log.push("unexpected"); }
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-4-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-4-expected.txt
deleted file mode 100644
index fdde0fa..0000000
--- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-4-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL Test that loading a graph in which a module is already errored results in an error. assert_array_equals: expected property 2 to be "Uncaught SyntaxError: The requested module './instantiation-error-4c.js' does not provide an export named 'something'" but got "Uncaught SyntaxError: The requested module './instantiation-error-4d.js' does not provide an export named 'something'" (expected array ["Uncaught SyntaxError: The requested module './instantiation-error-4c.js' does not provide an export named 'something'", 1, "Uncaught SyntaxError: The requested module './instantiation-error-4c.js' does not provide an export named 'something'", 2] got ["Uncaught SyntaxError: The requested module './instantiation-error-4c.js' does not provide an export named 'something'", 1, "Uncaught SyntaxError: The requested module './instantiation-error-4d.js' does not provide an export named 'something'", 2])
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html
index 238e883..8d3f238 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html
@@ -17,8 +17,11 @@
     });
 
     window.addEventListener("load", test_load.step_func_done(ev => {
-      const msg = log[0];
-      assert_array_equals(log, [msg, 1, msg, 2]);
+      assert_equals(log.length, 4, 'Log length');
+      assert_equals(log[1], 1);
+      assert_equals(log[3], 2);
+      assert_not_equals(log[0], log[2],
+        'Instantiation error objects for different root scripts');
     }));
 
     function unreachable() { log.push("unexpected"); }
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-5-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-5-expected.txt
deleted file mode 100644
index d60314082..0000000
--- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-5-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL Test that loading a graph in which a module is already errored results an error. assert_array_equals: expected property 2 to be "Uncaught SyntaxError: The requested module './instantiation-error-5c.js' does not provide an export named 'something'" but got "Uncaught SyntaxError: The requested module './instantiation-error-5e.js' does not provide an export named 'something'" (expected array ["Uncaught SyntaxError: The requested module './instantiation-error-5c.js' does not provide an export named 'something'", 1, "Uncaught SyntaxError: The requested module './instantiation-error-5c.js' does not provide an export named 'something'", 2] got ["Uncaught SyntaxError: The requested module './instantiation-error-5c.js' does not provide an export named 'something'", 1, "Uncaught SyntaxError: The requested module './instantiation-error-5e.js' does not provide an export named 'something'", 2])
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-5.html b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-5.html
index de2b6ba..20df0bb 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-5.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-5.html
@@ -17,8 +17,11 @@
     });
 
     window.addEventListener("load", test_load.step_func_done(ev => {
-      const msg = log[0];
-      assert_array_equals(log, [msg, 1, msg, 2]);
+      assert_equals(log.length, 4, 'Log length');
+      assert_equals(log[1], 1);
+      assert_equals(log[3], 2);
+      assert_not_equals(log[0], log[2],
+        'Instantiation error objects for different root scripts');
     }));
 
     function unreachable() { log.push("unexpected"); }
diff --git a/third_party/blink/web_tests/external/wpt/webrtc/RTCRtpTransceiver.https-expected.txt b/third_party/blink/web_tests/external/wpt/webrtc/RTCRtpTransceiver.https-expected.txt
index d7dae0f..cba73637 100644
--- a/third_party/blink/web_tests/external/wpt/webrtc/RTCRtpTransceiver.https-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/webrtc/RTCRtpTransceiver.https-expected.txt
@@ -37,6 +37,6 @@
 FAIL checkMsectionReuse assert_equals: expected "[{currentDirection:null,mid:null}]" but got "[{currentDirection:\"inactive\",mid:\"0\"}]"
 PASS checkStopAfterCreateOfferWithReusedMsection
 PASS checkAddIceCandidateToStoppedTransceiver
-FAIL checkBundleTagRejected promise_test: Unhandled rejection with value: object "InvalidAccessError: Failed to execute 'setRemoteDescription' on 'RTCPeerConnection': Failed to set remote offer sdp: The m= section with mid='1' should be rejected."
+PASS checkBundleTagRejected
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/layout_ng_svg_text/paint/invalidation/svg/text-rescale-expected.txt b/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/layout_ng_svg_text/paint/invalidation/svg/text-rescale-expected.txt
new file mode 100644
index 0000000..399ea51
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/virtual/layout_ng_svg_text/paint/invalidation/svg/text-rescale-expected.txt
@@ -0,0 +1,23 @@
+{
+  "layers": [
+    {
+      "name": "Scrolling background of LayoutView #document",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "invalidations": [
+        [0, 114, 192, 46],
+        [0, 14, 192, 46],
+        [310, 114, 91, 46],
+        [310, 14, 91, 46],
+        [210, 114, 91, 46],
+        [210, 14, 91, 46],
+        [0, 3, 9, 2],
+        [9, 3, 4, 2],
+        [6, 3, 4, 2],
+        [0, 0, 1, 1]
+      ]
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/dedicated-worker-main-script-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/dedicated-worker-main-script-expected.txt
new file mode 100644
index 0000000..e720b4a
--- /dev/null
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/dedicated-worker-main-script-expected.txt
@@ -0,0 +1,3 @@
+Tests that Fetch.requestPaused is emitted for the main script of dedciated worker
+PASSED: intercepted script
+
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/dedicated-worker-main-script.js b/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/dedicated-worker-main-script.js
new file mode 100644
index 0000000..4eb46e0a
--- /dev/null
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/dedicated-worker-main-script.js
@@ -0,0 +1,33 @@
+(async function(testRunner) {
+  const {page, session, dp} = await testRunner.startBlank(
+      `Tests that Fetch.requestPaused is emitted for the main script of dedciated worker`);
+
+  await dp.Target.setAutoAttach(
+    {autoAttach: true, waitForDebuggerOnStart: true, flatten: true});
+
+  await dp.Fetch.enable({patterns: [{}]});
+  dp.Fetch.onRequestPaused(event => {
+    if (event.params.request.url.endsWith('/worker.js')) {
+      dp.Fetch.fulfillRequest({
+        requestId: event.params.requestId,
+        responseCode: 200,
+        responseHeaders: [{name: 'Content-Type', value: 'application/x-javascript'}],
+        body: btoa(`console.log('PASSED: intercepted script')`)
+      })
+    }
+  });
+  const consoleMessagePromise = new Promise(resolve => {
+    dp.Target.onAttachedToTarget(async event => {
+      const wdp = session.createChild(event.params.sessionId).protocol;
+      wdp.Runtime.enable();
+      wdp.Runtime.onConsoleAPICalled(e => {
+        resolve(e.params.args[0].value);
+      })
+      wdp.Runtime.runIfWaitingForDebugger();
+    });
+  });
+
+  session.evaluate(`new Worker('/inspector-protocol/network/resources/worker.js')`);
+  testRunner.log(await consoleMessagePromise);
+  testRunner.completeTest();
+})
diff --git a/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/paint/invalidation/svg/text-rescale-expected.txt b/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/paint/invalidation/svg/text-rescale-expected.txt
new file mode 100644
index 0000000..f5a870b9
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/virtual/layout_ng_svg_text/paint/invalidation/svg/text-rescale-expected.txt
@@ -0,0 +1,23 @@
+{
+  "layers": [
+    {
+      "name": "Scrolling Contents Layer",
+      "bounds": [800, 600],
+      "contentsOpaque": true,
+      "backgroundColor": "#FFFFFF",
+      "invalidations": [
+        [0, 114, 192, 46],
+        [0, 14, 192, 46],
+        [310, 114, 91, 46],
+        [310, 14, 91, 46],
+        [210, 114, 91, 46],
+        [210, 14, 91, 46],
+        [0, 3, 9, 2],
+        [9, 3, 4, 2],
+        [6, 3, 4, 2],
+        [0, 0, 1, 1]
+      ]
+    }
+  ]
+}
+
diff --git a/third_party/blink/web_tests/webgpu/internal_cts_test_splits.pyl b/third_party/blink/web_tests/webgpu/internal_cts_test_splits.pyl
index 2c8f478..9cf64d1 100644
--- a/third_party/blink/web_tests/webgpu/internal_cts_test_splits.pyl
+++ b/third_party/blink/web_tests/webgpu/internal_cts_test_splits.pyl
@@ -28,14 +28,16 @@
   'wpt_internal/webgpu/cts.html?q=webgpu:api,operation,resource_init,texture_zero:uninitialized_texture_is_zero:dimension="2d";readMethod="Sample";format="rgba8unorm";*',
   'wpt_internal/webgpu/cts.html?q=webgpu:api,operation,resource_init,texture_zero:uninitialized_texture_is_zero:dimension="3d";readMethod="Sample";format="rgba8unorm";*',
 
-  'wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=false;indirect=false;drawCallTestParameter="vertexCount"',
-  'wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=false;indirect=false;drawCallTestParameter="vertexCount"',
-  'wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=false;indirect=true;drawCallTestParameter="vertexCount"',
-  'wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=false;indirect=true;drawCallTestParameter="vertexCount"',
-  'wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=true;indirect=false;drawCallTestParameter="indexCount"',
-  'wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=true;indirect=false;drawCallTestParameter="indexCount"',
-  'wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=true;indirect=true;drawCallTestParameter="indexCount"',
-  'wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=true;indirect=true;drawCallTestParameter="indexCount"',
+  'wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;drawCallTestParameter="vertexCount";type="float32";*',
+  'wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;drawCallTestParameter="instanceCount";type="float32";*',
+  'wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;drawCallTestParameter="firstVertex";type="float32";*',
+  'wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=false;drawCallTestParameter="baseVertex";type="float32";*',
+  'wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=false;drawCallTestParameter="vertexCountInIndexBuffer";type="float32";*',
+  'wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="baseVertex";type="float32";*',
+  'wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32";*',
+  'wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="indexCount";type="float32";*',
+  'wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="instanceCount";type="float32";*',
+  'wpt_internal/webgpu/cts.html?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="firstIndex";type="float32";*',
 
   'wpt_internal/webgpu/cts.html?q=webgpu:shader,validation,variable_and_const:initializer_type:variableOrConstant="var";*',
   'wpt_internal/webgpu/cts.html?q=webgpu:shader,validation,variable_and_const:io_shareable_type:storageClass="in";*',
diff --git a/third_party/blink/web_tests/wpt_internal/webgpu/cts.html b/third_party/blink/web_tests/wpt_internal/webgpu/cts.html
index 23d6cdf..46bfd60 100644
--- a/third_party/blink/web_tests/wpt_internal/webgpu/cts.html
+++ b/third_party/blink/web_tests/wpt_internal/webgpu/cts.html
@@ -1310,6 +1310,8 @@
 <meta name=variant content='?q=webgpu:api,validation,createBindGroup:texture_must_have_correct_dimension:*'>
 <meta name=variant content='?q=webgpu:api,validation,createBindGroup:buffer_offset_and_size_for_bind_groups_match:*'>
 <meta name=variant content='?q=webgpu:api,validation,createBindGroup:minBindingSize:*'>
+<meta name=variant content='?q=webgpu:api,validation,createBindGroup:buffer,resource_state:*'>
+<meta name=variant content='?q=webgpu:api,validation,createBindGroup:texture,resource_state:*'>
 <meta name=variant content='?q=webgpu:api,validation,createBindGroupLayout:duplicate_bindings:*'>
 <meta name=variant content='?q=webgpu:api,validation,createBindGroupLayout:visibility:*'>
 <meta name=variant content='?q=webgpu:api,validation,createBindGroupLayout:multisampled_validation:*'>
@@ -1356,7 +1358,7 @@
 <meta name=variant content='?q=webgpu:api,validation,createView:creating_cube_map_texture_view:*'>
 <meta name=variant content='?q=webgpu:api,validation,createView:creating_cube_map_texture_view_with_a_non_square_texture:*'>
 <meta name=variant content='?q=webgpu:api,validation,createView:test_the_format_compatibility_rules_when_creating_a_texture_view:*'>
-<meta name=variant content='?q=webgpu:api,validation,createView:it_is_invalid_to_use_a_texture_view_created_from_a_destroyed_texture:*'>
+<meta name=variant content='?q=webgpu:api,validation,createView:texture_state:*'>
 <meta name=variant content='?q=webgpu:api,validation,encoding,cmds,buffer_texture_copies:depth_stencil_format,copy_usage_and_aspect:*'>
 <meta name=variant content='?q=webgpu:api,validation,encoding,cmds,buffer_texture_copies:depth_stencil_format,copy_buffer_size:*'>
 <meta name=variant content='?q=webgpu:api,validation,encoding,cmds,buffer_texture_copies:depth_stencil_format,copy_buffer_offset:*'>
@@ -1815,24 +1817,46 @@
 <meta name=variant content='?q=webgpu:shader,execution,robust_access:linear_memory:storageClass="workgroup";access="write";atomic=false;baseType="bool";*'>
 <meta name=variant content='?q=webgpu:shader,execution,robust_access:linear_memory:storageClass="workgroup";access="write";atomic=true;baseType="i32";*'>
 <meta name=variant content='?q=webgpu:shader,execution,robust_access:linear_memory:storageClass="workgroup";access="write";atomic=true;baseType="u32";*'>
-<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=false;indirect=false;drawCallTestParameter="vertexCount"'>
-<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=false;indirect=false;drawCallTestParameter="instanceCount";*'>
-<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=false;indirect=false;drawCallTestParameter="firstVertex";*'>
-<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=false;indirect=false;drawCallTestParameter="firstInstance";*'>
-<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=false;indirect=true;drawCallTestParameter="vertexCount"'>
-<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=false;indirect=true;drawCallTestParameter="instanceCount";*'>
-<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=false;indirect=true;drawCallTestParameter="firstVertex";*'>
-<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=false;indirect=true;drawCallTestParameter="firstInstance";*'>
-<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=true;indirect=false;drawCallTestParameter="indexCount"'>
-<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=true;indirect=false;drawCallTestParameter="instanceCount";*'>
-<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=true;indirect=false;drawCallTestParameter="firstIndex";*'>
-<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=true;indirect=false;drawCallTestParameter="baseVertex";*'>
-<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=true;indirect=false;drawCallTestParameter="firstInstance";*'>
-<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=true;indirect=true;drawCallTestParameter="indexCount"'>
-<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=true;indirect=true;drawCallTestParameter="instanceCount";*'>
-<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=true;indirect=true;drawCallTestParameter="firstIndex";*'>
-<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=true;indirect=true;drawCallTestParameter="baseVertex";*'>
-<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertexAccess:indexed=true;indirect=true;drawCallTestParameter="firstInstance";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;drawCallTestParameter="vertexCount";type="float32";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;drawCallTestParameter="vertexCount";type="float32x2";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;drawCallTestParameter="vertexCount";type="float32x3";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;drawCallTestParameter="vertexCount";type="float32x4";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;drawCallTestParameter="instanceCount";type="float32";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;drawCallTestParameter="instanceCount";type="float32x2";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;drawCallTestParameter="instanceCount";type="float32x3";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;drawCallTestParameter="instanceCount";type="float32x4";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;drawCallTestParameter="firstVertex";type="float32";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;drawCallTestParameter="firstVertex";type="float32x2";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;drawCallTestParameter="firstVertex";type="float32x3";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=false;indirect=true;drawCallTestParameter="firstVertex";type="float32x4";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=false;drawCallTestParameter="baseVertex";type="float32";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=false;drawCallTestParameter="baseVertex";type="float32x2";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=false;drawCallTestParameter="baseVertex";type="float32x3";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=false;drawCallTestParameter="baseVertex";type="float32x4";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=false;drawCallTestParameter="vertexCountInIndexBuffer";type="float32";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=false;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=false;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x3";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=false;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="baseVertex";type="float32";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="baseVertex";type="float32x2";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="baseVertex";type="float32x3";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="baseVertex";type="float32x4";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x2";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x3";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="vertexCountInIndexBuffer";type="float32x4";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="indexCount";type="float32";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="indexCount";type="float32x2";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="indexCount";type="float32x3";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="indexCount";type="float32x4";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="instanceCount";type="float32";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="instanceCount";type="float32x2";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="instanceCount";type="float32x3";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="instanceCount";type="float32x4";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="firstIndex";type="float32";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="firstIndex";type="float32x2";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="firstIndex";type="float32x3";*'>
+<meta name=variant content='?q=webgpu:shader,execution,robust_access_vertex:vertex_buffer_access:indexed=true;indirect=true;drawCallTestParameter="firstIndex";type="float32x4";*'>
 <meta name=variant content='?q=webgpu:shader,validation,variable_and_const:initializer_type:variableOrConstant="var";*'>
 <meta name=variant content='?q=webgpu:shader,validation,variable_and_const:initializer_type:variableOrConstant="let";*'>
 <meta name=variant content='?q=webgpu:shader,validation,variable_and_const:io_shareable_type:storageClass="in";*'>
diff --git a/third_party/libusb/BUILD.gn b/third_party/libusb/BUILD.gn
index c60bf106a..c77e2e2 100644
--- a/third_party/libusb/BUILD.gn
+++ b/third_party/libusb/BUILD.gn
@@ -3,7 +3,7 @@
 # found in the LICENSE file.
 
 # libusb is only used by //services/device/usb on Windows and macOS.
-assert(is_win || is_mac)
+assert(is_mac)
 
 import("//build/config/chromeos/ui_mode.gni")
 import("//build/config/features.gni")
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 5d47a964..043413c 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -28324,7 +28324,7 @@
   <int value="1089" label="DELETED_DATAREDUCTIONPROXY_GETDATAUSAGE"/>
   <int value="1090"
       label="DELETED_EASYUNLOCKPRIVATE_SETUPCONNECTIONGETDEVICEADDRESS"/>
-  <int value="1091" label="TABCAPTURE_CAPTUREOFFSCREENTAB"/>
+  <int value="1091" label="DELETED_TABCAPTURE_CAPTUREOFFSCREENTAB"/>
   <int value="1092" label="LANGUAGESETTINGSPRIVATE_ADDSPELLCHECKWORD"/>
   <int value="1093" label="LANGUAGESETTINGSPRIVATE_REMOVESPELLCHECKWORD"/>
   <int value="1094" label="SETTINGSPRIVATE_GETDEFAULTZOOMFUNCTION"/>
@@ -28821,6 +28821,7 @@
   <int value="1564" label="SCRIPTING_GETREGISTEREDCONTENTSCRIPTS"/>
   <int value="1565" label="OS_TELEMETRY_GETVPDINFO"/>
   <int value="1566" label="ACCESSIBILITY_PRIVATE_MAGNIFIERCENTERONPOINT"/>
+  <int value="1567" label="STORAGE_SETACCESSLEVEL"/>
 </enum>
 
 <enum name="ExtensionIconState">
@@ -46699,6 +46700,8 @@
   <int value="-1969636234" label="OmniboxRefinedFocusState:disabled"/>
   <int value="-1966445414" label="StylusBatteryStatus:disabled"/>
   <int value="-1965587041" label="omnibox-tab-switch-suggestions"/>
+  <int value="-1964730371"
+      label="AutofillFillMerchantPromoCodeFields:disabled"/>
   <int value="-1964261747" label="WebVrVsyncAlign:disabled"/>
   <int value="-1963838301"
       label="ShowSyncPausedReasonCookiesClearedOnExit:enabled"/>
@@ -50730,6 +50733,7 @@
   <int value="1276120671" label="AutofillEnableOfferNotification:enabled"/>
   <int value="1276209777" label="ntp-switch-to-existing-tab"/>
   <int value="1277386636" label="QueryInOmnibox:disabled"/>
+  <int value="1278244152" label="AutofillFillMerchantPromoCodeFields:enabled"/>
   <int value="1278512661" label="SmartDimNewMlAgent:disabled"/>
   <int value="1279422279" label="query-tiles-country-code"/>
   <int value="1279584261" label="enable-carrier-switching"/>
@@ -73815,6 +73819,9 @@
 </enum>
 
 <enum name="ServiceWorkerInternalsLinkQuery">
+  <obsolete>
+    Removed 2021-08-03.
+  </obsolete>
   <int value="0" label="Accessed from DevTools"/>
   <int value="1" label="Accessed from outside DevTools"/>
 </enum>
diff --git a/tools/metrics/histograms/metadata/apps/histograms.xml b/tools/metrics/histograms/metadata/apps/histograms.xml
index 775e776..92f40a5 100644
--- a/tools/metrics/histograms/metadata/apps/histograms.xml
+++ b/tools/metrics/histograms/metadata/apps/histograms.xml
@@ -1534,7 +1534,7 @@
 </histogram>
 
 <histogram name="Apps.AppListStateTransitionSource"
-    enum="AppListStateTransitionSource" expires_after="2021-08-09">
+    enum="AppListStateTransitionSource" expires_after="2022-02-09">
   <owner>newcomer@chromium.org</owner>
   <owner>mmourgos@chromium.org</owner>
   <summary>
@@ -1626,7 +1626,7 @@
 </histogram>
 
 <histogram name="Apps.AppsInFolders{AppListFolderExperiment}" units="Apps"
-    expires_after="2021-08-09">
+    expires_after="2022-02-09">
   <owner>mmourgos@chromium.org</owner>
   <owner>newcomer@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/autofill/histograms.xml b/tools/metrics/histograms/metadata/autofill/histograms.xml
index a8bccce..69ddb5b 100644
--- a/tools/metrics/histograms/metadata/autofill/histograms.xml
+++ b/tools/metrics/histograms/metadata/autofill/histograms.xml
@@ -2251,16 +2251,6 @@
   </summary>
 </histogram>
 
-<histogram name="Autofill.StoredCreditCardCount.Server.WithCardArtImage"
-    units="units" expires_after="M98">
-  <owner>siyua@chromium.org</owner>
-  <owner>payments-autofill-team@google.com</owner>
-  <summary>
-    The number of server cards with a valid card art image, measured at Chrome
-    profile launch.
-  </summary>
-</histogram>
-
 <histogram name="Autofill.StoredCreditCardCount.Server.WithVirtualCardMetadata"
     units="units" expires_after="M98">
   <owner>siyua@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/bluetooth/histograms.xml b/tools/metrics/histograms/metadata/bluetooth/histograms.xml
index d869b20..47917a8 100644
--- a/tools/metrics/histograms/metadata/bluetooth/histograms.xml
+++ b/tools/metrics/histograms/metadata/bluetooth/histograms.xml
@@ -204,7 +204,7 @@
 
 <histogram
     name="Bluetooth.ChromeOS.Pairing.Result.FailureReason{BluetoothTransportTypes}"
-    enum="BluetoothConnectionFailureReason" expires_after="2021-09-19">
+    enum="BluetoothConnectionFailureReason" expires_after="2022-08-01">
   <owner>khorimoto@chromium.org</owner>
   <owner>cros-connectivity@google.com</owner>
   <summary>
@@ -221,7 +221,7 @@
 </histogram>
 
 <histogram name="Bluetooth.ChromeOS.Pairing.Result{BluetoothTransportTypes}"
-    enum="BooleanSuccess" expires_after="2021-09-12">
+    enum="BooleanSuccess" expires_after="2022-08-01">
   <owner>khorimoto@chromium.org</owner>
   <owner>cros-connectivity@google.com</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/cross_device/histograms.xml b/tools/metrics/histograms/metadata/cross_device/histograms.xml
index 702c110..8a2da521 100644
--- a/tools/metrics/histograms/metadata/cross_device/histograms.xml
+++ b/tools/metrics/histograms/metadata/cross_device/histograms.xml
@@ -1418,7 +1418,7 @@
 </histogram>
 
 <histogram name="InstantTethering.HostScanResult"
-    enum="InstantTethering_HostScanResult" expires_after="2021-09-12">
+    enum="InstantTethering_HostScanResult" expires_after="2022-08-01">
   <owner>hansberry@chromium.org</owner>
   <owner>better-together-dev@google.com</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/histogram_suffixes_list.xml b/tools/metrics/histograms/metadata/histogram_suffixes_list.xml
index 164e31a..eeda8912 100644
--- a/tools/metrics/histograms/metadata/histogram_suffixes_list.xml
+++ b/tools/metrics/histograms/metadata/histogram_suffixes_list.xml
@@ -6751,6 +6751,9 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="HistogramInconsistencies" separator=".">
+  <obsolete>
+    Removed in 2017.
+  </obsolete>
   <suffix name="Cronet" label="Cronet histograms."/>
   <affected-histogram name="Histogram.InconsistenciesBrowser"/>
   <affected-histogram name="Histogram.InconsistenciesBrowserUnique"/>
diff --git a/tools/metrics/histograms/metadata/media/histograms.xml b/tools/metrics/histograms/metadata/media/histograms.xml
index 8f09da43..7007086 100644
--- a/tools/metrics/histograms/metadata/media/histograms.xml
+++ b/tools/metrics/histograms/metadata/media/histograms.xml
@@ -3271,7 +3271,7 @@
 </histogram>
 
 <histogram name="Media.PipelineStatus.Start" enum="PipelineStatus"
-    expires_after="2021-08-09">
+    expires_after="2022-08-09">
   <owner>xhwang@chromium.org</owner>
   <owner>media-dev@chromium.org</owner>
   <summary>
@@ -5212,6 +5212,9 @@
 
 <histogram name="MediaRouter.CastStreaming.Start.Failure"
     enum="MirrorFailureType" expires_after="2021-08-09">
+  <obsolete>
+    Unused after August 2021.
+  </obsolete>
   <owner>takumif@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>
@@ -5406,7 +5409,7 @@
 </histogram>
 
 <histogram name="MediaRouter.PresentationRequest.UrlBySink"
-    enum="PresentationUrlBySink" expires_after="2021-09-05">
+    enum="PresentationUrlBySink" expires_after="2022-02-01">
   <owner>mfoltz@chromium.org</owner>
   <owner>openscreen-eng@google.com</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/others/histograms.xml b/tools/metrics/histograms/metadata/others/histograms.xml
index 09850a5..8d0901c 100644
--- a/tools/metrics/histograms/metadata/others/histograms.xml
+++ b/tools/metrics/histograms/metadata/others/histograms.xml
@@ -5930,6 +5930,34 @@
   </summary>
 </histogram>
 
+<histogram name="FamilyUser.ManagedSiteListCount.Approved"
+    units="Number of approved sites" expires_after="2022-07-28">
+  <owner>agawronska@chromium.org</owner>
+  <owner>tobyhuang@chromium.org</owner>
+  <owner>xiqiruan@chromium.org</owner>
+  <owner>cros-families-eng@google.com</owner>
+  <summary>
+    Records number of approved urls and hosts for currently active Family Link
+    user. This metric is recorded at the beginning of first active session daily
+    and when manual hosts and manual urls policies are changed. Ignores the
+    reports during OOBE and sign out.
+  </summary>
+</histogram>
+
+<histogram name="FamilyUser.ManagedSiteListCount.Blocked"
+    units="Number of blocked sites" expires_after="2022-07-28">
+  <owner>agawronska@chromium.org</owner>
+  <owner>tobyhuang@chromium.org</owner>
+  <owner>xiqiruan@chromium.org</owner>
+  <owner>cros-families-eng@google.com</owner>
+  <summary>
+    Records number of blocked urls and hosts for currently active Family Link
+    user. This metric is recorded at the beginning of first active session daily
+    and when manual hosts and manual urls policies are changed. Ignores the
+    reports during OOBE and sign out.
+  </summary>
+</histogram>
+
 <histogram name="FamilyUser.NewUserAdded" enum="NewUserAdded"
     expires_after="2021-12-12">
   <owner>agawronska@chromium.org</owner>
@@ -7567,89 +7595,6 @@
   </summary>
 </histogram>
 
-<histogram name="Histogram.BadConstructionArguments" enum="HistogramNameHash"
-    expires_after="M87">
-  <owner>asvitkine@chromium.org</owner>
-  <owner>bcwhite@chromium.org</owner>
-  <summary>
-    The hash codes of histograms that were found to have bad construction
-    arguments. These would be DCHECK exceptions in debug builds but have simply
-    been logged and corrected as best as possible rather than crash.
-  </summary>
-</histogram>
-
-<histogram name="Histogram.InconsistentSnapshotBrowser" units="units"
-    expires_after="M85">
-  <owner>asvitkine@chromium.org</owner>
-  <summary>
-    The amount of discrepancy found when examining a single histogram's data in
-    the browser process for transmission via UMA. Inconsistent data is NOT
-    transmitted via UMA.
-  </summary>
-</histogram>
-
-<histogram name="Histogram.InconsistentSnapshotChildProcess" units="units"
-    expires_after="M85">
-  <owner>asvitkine@chromium.org</owner>
-  <summary>
-    The amount of discrepancy found when examining a single histogram's data in
-    a child process for transmission via UMA. Inconsistent data is NOT
-    transmitted via UMA.
-  </summary>
-</histogram>
-
-<histogram name="Histogram.MismatchedConstructionArguments"
-    enum="HistogramNameHash" expires_after="M87">
-  <owner>asvitkine@chromium.org</owner>
-  <owner>bcwhite@chromium.org</owner>
-  <summary>
-    The hash codes of histograms that were found to have construction arguments
-    different from a previous instantiation of the same name. Entries here have
-    conflicting definitions and should be investigated. Data collected for the
-    secondary definitions will be silently dropped.
-  </summary>
-</histogram>
-
-<histogram name="Histogram.PendingProcessNotResponding" units="processes"
-    expires_after="M79">
-  <owner>Please list the metric's owners. Add more owner tags as needed.</owner>
-  <summary>
-    When metrics services (UMA) ran an update, the number of child processes
-    that did not respond, providing histogram updates, before the timeout.
-  </summary>
-</histogram>
-
-<histogram name="Histogram.PermanentNameChanged" enum="HistogramNameHash"
-    expires_after="M85">
-  <owner>asvitkine@chromium.org</owner>
-  <owner>bcwhite@chromium.org</owner>
-  <summary>
-    The hash codes of histograms of which the external name storage was altered
-    after the histogram was created.
-  </summary>
-</histogram>
-
-<histogram name="Histogram.ReceivedProcessGroupCount" enum="BooleanEnabled"
-    expires_after="M79">
-  <owner>Please list the metric's owners. Add more owner tags as needed.</owner>
-  <summary>
-    When metrics services (UMA) ran an update, the number of times the process
-    groups (renderer processes and plugin/gpu processes) did not respond,
-    providing histogram updates, before the timeout.
-  </summary>
-</histogram>
-
-<histogram name="Histogram.TooManyBuckets.1000" enum="HistogramNameHash"
-    expires_after="M78">
-  <owner>asvitkine@chromium.org</owner>
-  <owner>bcwhite@chromium.org</owner>
-  <summary>
-    The hash codes of histograms that were found to request more than 1000
-    buckets. These would be DCHECK exceptions in debug builds if the limit is
-    lowered so are being logged before that change.
-  </summary>
-</histogram>
-
 <histogram name="HostedAppFrame.ContentSettings.ImagePressed"
     enum="ContentSettingImageType" expires_after="2021-02-01">
   <owner>calamity@chromium.org</owner>
@@ -8511,7 +8456,7 @@
 </histogram>
 
 <histogram name="LanguageDetection.TFLiteModel.LanguageDetectionModelState"
-    enum="LanguageDetectionModelState" expires_after="M94">
+    enum="LanguageDetectionModelState" expires_after="M98">
   <owner>mcrouse@chromium.org</owner>
   <owner>chrome-language@google.com</owner>
   <summary>
@@ -8521,7 +8466,7 @@
 </histogram>
 
 <histogram name="LanguageDetection.TFLiteModel.WasModelAvailableForDetection"
-    enum="BooleanAvailable" expires_after="M94">
+    enum="BooleanAvailable" expires_after="M98">
   <owner>mcrouse@chromium.org</owner>
   <owner>chrome-language@google.com</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml b/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml
index b1445ae..13fea6b 100644
--- a/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml
+++ b/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml
@@ -28,6 +28,13 @@
   <variant name="Voice"/>
 </variants>
 
+<variants name="SignalType">
+  <variant name="HistogramEnum" summary="enum histogram"/>
+  <variant name="HistogramValue" summary="value histogram"/>
+  <variant name="Unknown" summary="unknown"/>
+  <variant name="UserAction" summary="user action"/>
+</variants>
+
 <histogram name="SegmentationPlatform.AdaptiveToolbar.ModelScore.{SegmentID}"
     units="%" expires_after="2022-02-01">
   <owner>shaktisahu@chromium.org</owner>
@@ -72,6 +79,19 @@
   </summary>
 </histogram>
 
+<histogram name="SegmentationPlatform.Signals.ListeningCount.{SignalType}"
+    units="signals" expires_after="2022-02-01">
+  <owner>nyquist@chromium.org</owner>
+  <owner>shaktisahu@chromium.org</owner>
+  <owner>chrome-segmentation-platform@google.com</owner>
+  <summary>
+    Records then number of {SignalType} signals the segmentation platform
+    currently listens to. Recorded whenever we update the set of {SignalType}
+    signals that the segmentation platform is currently listening to.
+  </summary>
+  <token key="SignalType" variants="SignalType"/>
+</histogram>
+
 </histograms>
 
 </histogram-configuration>
diff --git a/tools/metrics/histograms/metadata/service/histograms.xml b/tools/metrics/histograms/metadata/service/histograms.xml
index 9bb7240..0943cb0 100644
--- a/tools/metrics/histograms/metadata/service/histograms.xml
+++ b/tools/metrics/histograms/metadata/service/histograms.xml
@@ -421,6 +421,9 @@
 
 <histogram name="ServiceWorker.InternalsPageAccessed"
     enum="ServiceWorkerInternalsLinkQuery" expires_after="M94">
+  <obsolete>
+    Removed 2021-08-03.
+  </obsolete>
   <owner>bashi@chromium.org</owner>
   <owner>chrome-worker@google.com</owner>
   <summary>
@@ -1104,7 +1107,7 @@
 </histogram>
 
 <histogram name="ServiceWorker.Storage.DeleteAndStartOverResult"
-    enum="ServiceWorkerDeleteAndStartOverResult" expires_after="M94">
+    enum="ServiceWorkerDeleteAndStartOverResult" expires_after="M100">
   <owner>bashi@chromium.org</owner>
   <owner>chrome-worker@google.com</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/translate/histograms.xml b/tools/metrics/histograms/metadata/translate/histograms.xml
index 0e140db..0d0201b 100644
--- a/tools/metrics/histograms/metadata/translate/histograms.xml
+++ b/tools/metrics/histograms/metadata/translate/histograms.xml
@@ -1307,7 +1307,7 @@
 
 <histogram
     name="TranslateModelService.LanguageDetectionModel.PendingRequestCallbacks"
-    units="requests" expires_after="M94">
+    units="requests" expires_after="M98">
   <owner>mcrouse@chromium.org</owner>
   <owner>chrome-language@chromium.org</owner>
   <summary>
@@ -1318,7 +1318,7 @@
 </histogram>
 
 <histogram name="TranslateModelService.LanguageDetectionModel.WasLoaded"
-    enum="BooleanLoaded" expires_after="M94">
+    enum="BooleanLoaded" expires_after="M98">
   <owner>mcrouse@chromium.org</owner>
   <owner>chrome-language@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/uma/histograms.xml b/tools/metrics/histograms/metadata/uma/histograms.xml
index 34cfe1bc..7e57485 100644
--- a/tools/metrics/histograms/metadata/uma/histograms.xml
+++ b/tools/metrics/histograms/metadata/uma/histograms.xml
@@ -42,6 +42,107 @@
       summary="For &quot;zygote&quot; process metrics."/>
 </variants>
 
+<histogram name="Histogram.BadConstructionArguments" enum="HistogramNameHash"
+    expires_after="M95">
+  <owner>asvitkine@chromium.org</owner>
+  <owner>bcwhite@chromium.org</owner>
+  <owner>src/base/metrics/OWNERS</owner>
+  <summary>
+    The hash codes of histograms that were found to have bad construction
+    arguments. These would be DCHECK exceptions in debug builds but have simply
+    been logged and corrected as best as possible rather than crash.
+  </summary>
+</histogram>
+
+<histogram name="Histogram.InconsistentSnapshotBrowser" units="units"
+    expires_after="M85">
+  <obsolete>
+    Removed 07/2017.
+  </obsolete>
+  <owner>asvitkine@chromium.org</owner>
+  <summary>
+    The amount of discrepancy found when examining a single histogram's data in
+    the browser process for transmission via UMA. Inconsistent data is NOT
+    transmitted via UMA.
+  </summary>
+</histogram>
+
+<histogram name="Histogram.InconsistentSnapshotChildProcess" units="units"
+    expires_after="M85">
+  <obsolete>
+    Removed 07/2017.
+  </obsolete>
+  <owner>asvitkine@chromium.org</owner>
+  <summary>
+    The amount of discrepancy found when examining a single histogram's data in
+    a child process for transmission via UMA. Inconsistent data is NOT
+    transmitted via UMA.
+  </summary>
+</histogram>
+
+<histogram name="Histogram.MismatchedConstructionArguments"
+    enum="HistogramNameHash" expires_after="M95">
+  <owner>asvitkine@chromium.org</owner>
+  <owner>bcwhite@chromium.org</owner>
+  <owner>src/base/metrics/OWNERS</owner>
+  <summary>
+    The hash codes of histograms that were found to have construction arguments
+    different from a previous instantiation of the same name. Entries here have
+    conflicting definitions and should be investigated. Data collected for the
+    secondary definitions will be silently dropped.
+  </summary>
+</histogram>
+
+<histogram name="Histogram.PendingProcessNotResponding" units="processes"
+    expires_after="M79">
+  <obsolete>
+    Removed 06/2021.
+  </obsolete>
+  <owner>asvitkine@chromium.org</owner>
+  <summary>
+    When metrics services (UMA) ran an update, the number of child processes
+    that did not respond, providing histogram updates, before the timeout.
+  </summary>
+</histogram>
+
+<histogram name="Histogram.PermanentNameChanged" enum="HistogramNameHash"
+    expires_after="M85">
+  <obsolete>
+    No longer in the codebase as of 06/2021.
+  </obsolete>
+  <owner>asvitkine@chromium.org</owner>
+  <owner>bcwhite@chromium.org</owner>
+  <summary>
+    The hash codes of histograms of which the external name storage was altered
+    after the histogram was created.
+  </summary>
+</histogram>
+
+<histogram name="Histogram.ReceivedProcessGroupCount" enum="BooleanEnabled"
+    expires_after="M79">
+  <obsolete>
+    Removed 06/2021.
+  </obsolete>
+  <owner>asvitkine@chromium.org</owner>
+  <summary>
+    When metrics services (UMA) ran an update, the number of times the process
+    groups (renderer processes and plugin/gpu processes) did not respond,
+    providing histogram updates, before the timeout.
+  </summary>
+</histogram>
+
+<histogram name="Histogram.TooManyBuckets.1000" enum="HistogramNameHash"
+    expires_after="M95">
+  <owner>asvitkine@chromium.org</owner>
+  <owner>bcwhite@chromium.org</owner>
+  <owner>src/base/metrics/OWNERS</owner>
+  <summary>
+    The hash codes of histograms that were found to request more than 1000
+    buckets. These would be DCHECK exceptions in debug builds if the limit is
+    lowered so are being logged before that change.
+  </summary>
+</histogram>
+
 <histogram name="UMA.ActualLogUploadInterval" units="minutes"
     expires_after="2021-12-26">
   <owner>asvitkine@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/xr/histograms.xml b/tools/metrics/histograms/metadata/xr/histograms.xml
index 06fdce6..297ec5d3 100644
--- a/tools/metrics/histograms/metadata/xr/histograms.xml
+++ b/tools/metrics/histograms/metadata/xr/histograms.xml
@@ -29,7 +29,7 @@
   </summary>
 </histogram>
 
-<histogram name="VRSessionTime" units="ms" expires_after="2021-09-12">
+<histogram name="VRSessionTime" units="ms" expires_after="2022-03-12">
   <owner>alcooper@chromium.org</owner>
   <owner>xr-dev@chromium.org</owner>
   <summary>
@@ -38,7 +38,7 @@
   </summary>
 </histogram>
 
-<histogram name="VRSessionVideoCount" units="units" expires_after="2021-09-12">
+<histogram name="VRSessionVideoCount" units="units" expires_after="2022-03-12">
   <owner>alcooper@chromium.org</owner>
   <owner>xr-dev@chromium.org</owner>
   <summary>
@@ -47,7 +47,7 @@
   </summary>
 </histogram>
 
-<histogram name="VRSessionVideoTime" units="ms" expires_after="2021-09-12">
+<histogram name="VRSessionVideoTime" units="ms" expires_after="2022-03-12">
   <owner>alcooper@chromium.org</owner>
   <owner>xr-dev@chromium.org</owner>
   <summary>
@@ -57,7 +57,7 @@
   </summary>
 </histogram>
 
-<histogram name="VRViewerType" enum="VRViewerType" expires_after="2021-09-19">
+<histogram name="VRViewerType" enum="VRViewerType" expires_after="2022-03-19">
   <owner>alcooper@chromium.org</owner>
   <owner>xr-dev@chromium.org</owner>
   <summary>The type of headset being used for VR.</summary>
@@ -97,7 +97,7 @@
 </histogram>
 
 <histogram name="XR.WebXR.ReferenceSpace.Succeeded" enum="XRReferenceSpaceType"
-    expires_after="2021-09-19">
+    expires_after="2022-03-19">
   <owner>alcooper@chromium.org</owner>
   <owner>xr-dev@chromium.org</owner>
   <summary>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json
index 53d6dbf..493a4f48 100644
--- a/tools/perf/core/perfetto_binary_roller/binary_deps.json
+++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -10,7 +10,7 @@
         },
         "linux": {
             "hash": "672ed966e2e8072a7d6322367ac35c5fedd1ff9f",
-            "remote_path": "perfetto_binaries/trace_processor_shell/linux/70e408c9bc8610ab9a8484b2ed91461d8416166e/trace_processor_shell"
+            "remote_path": "perfetto_binaries/trace_processor_shell/linux/171e281775914c1c427b926666bf1c0f8070e762/trace_processor_shell"
         }
     },
     "power_profile.sql": {
diff --git a/tools/tracing/adb_profile_chrome_startup.py b/tools/tracing/adb_profile_chrome_startup.py
index 9adf5e7..cbe7927 100644
--- a/tools/tracing/adb_profile_chrome_startup.py
+++ b/tools/tracing/adb_profile_chrome_startup.py
@@ -8,9 +8,7 @@
 """
 
 import os
-import subprocess
 import sys
-import webbrowser
 
 _CATAPULT_DIR = os.path.join(os.path.dirname(__file__), os.pardir, os.pardir,
                              'third_party', 'catapult')
@@ -79,32 +77,4 @@
                                        compress=options.compress,
                                        trace_format=options.trace_format)
 
-  if options.view:
-    _DisplayInBrowser(options, trace_file)
-
   return trace_file
-
-
-def _DisplayInBrowser(options, trace_file):
-  """Displays trace in browser.
-
-  Args:
-    options: Command line flags with their specified values as
-        returned by optparse.
-    trace_file: Saved trace filename.
-  """
-  if options.trace_format == 'proto':
-    open_trace_ui_path = os.path.join(
-        os.path.dirname(__file__), os.pardir, os.pardir,
-        'third_party/perfetto/tools/open_trace_in_ui')
-    trace_file_path = os.path.join(os.path.dirname(__file__), os.pardir,
-                                   os.pardir, trace_file)
-    cmd = [open_trace_ui_path, '-i', trace_file_path]
-    p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-    stderr = p.communicate()[1]
-    if p.returncode != 0:
-      raise RuntimeError('failed: ' + stderr)
-  elif sys.platform == 'darwin':
-    os.system('/usr/bin/open %s' % os.path.abspath(trace_file))
-  else:
-    webbrowser.open(trace_file)
diff --git a/tools/tracing/display_in_browser.py b/tools/tracing/display_in_browser.py
new file mode 100644
index 0000000..53fee00
--- /dev/null
+++ b/tools/tracing/display_in_browser.py
@@ -0,0 +1,40 @@
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+"""
+Displays a trace file in a browser.
+"""
+
+import os
+import sys
+import logging
+import subprocess
+import webbrowser
+
+
+def DisplayInBrowser(trace_file, options):
+  """Displays trace in browser.
+
+  Args:
+    options: Command line flags with their specified values as
+        returned by optparse.
+    trace_file: Saved trace filename.
+  """
+  if options.trace_format == 'json':
+    raise Exception('The --view option and --trace_format=json are not'
+                    'supported together')
+  if options.trace_format == 'proto':
+    logging.info('Opening trace in browser')
+    open_trace_ui_path = os.path.join(
+        os.path.dirname(__file__), os.pardir, os.pardir,
+        'third_party/perfetto/tools/open_trace_in_ui')
+    trace_file_path = os.path.abspath(trace_file)
+    cmd = [open_trace_ui_path, '-i', trace_file_path]
+    p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    stderr = p.communicate()[1]
+    if p.returncode != 0:
+      raise RuntimeError('failed: ' + stderr)
+  elif sys.platform == 'darwin':
+    os.system('/usr/bin/open %s' % os.path.abspath(trace_file))
+  else:
+    webbrowser.open(trace_file)
diff --git a/tools/tracing/flag_utils.py b/tools/tracing/flag_utils.py
index 090b924..50b06f5 100644
--- a/tools/tracing/flag_utils.py
+++ b/tools/tracing/flag_utils.py
@@ -5,8 +5,12 @@
 This script provides the necessary flags to symbolize proto traces.
 """
 
+import os
+import sys
 import optparse
 import logging
+import webbrowser
+import subprocess
 
 
 def SymbolizeOptions(parser):
diff --git a/tools/tracing/profile_chrome_startup b/tools/tracing/profile_chrome_startup
index 979b41ad..db260ee 100755
--- a/tools/tracing/profile_chrome_startup
+++ b/tools/tracing/profile_chrome_startup
@@ -15,6 +15,7 @@
 import adb_profile_chrome_startup
 import symbolize_trace
 import flag_utils
+import display_in_browser
 
 sys.path.insert(0, os.path.join(os.path.dirname(__file__),
                                 os.pardir, os.pardir, 'third_party',
@@ -116,13 +117,13 @@
     raise Exception('Platform "%s" is not supported. '
                     'Specify platform with the --platform flag.' % (options.platform))
 
-  # TODO(rhuckleberry): Make --view flag show the trace after symbolization, instead
-  # of after finishing tracing.
-
   # Symbolize Trace
   if options.trace_format is None or options.trace_format.lower() != 'proto':
     raise Exception('Symbolization is currently only supported for protos.')
   symbolize_trace.SymbolizeTrace(trace_file=trace_file, options=options)
 
+  if options.view:
+    display_in_browser.DisplayInBrowser(options.output_file, options)
+
 if __name__ == '__main__':
   sys.exit(main())
diff --git a/tools/tracing/rename_breakpad.py b/tools/tracing/rename_breakpad.py
new file mode 100644
index 0000000..2613212
--- /dev/null
+++ b/tools/tracing/rename_breakpad.py
@@ -0,0 +1,98 @@
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+"""
+Renames breakpad file to the standard module id format. See
+perfetto::profiling::BreakpadSymbolizer for more naming information.
+"""
+
+import os
+import logging
+import shutil
+
+
+def RenameBreakpadFiles(breakpad_dir, breakpad_output_dir):
+  """Move breakpad files to new directory and rename them.
+
+  Breakpad files (files that contain '.breakpad') are renamed
+  to follow a '<module_id>.breakpad' with upper-case hexadecimal
+  naming scheme and moved to the |breakpad_output_dir| directory.
+  See perfetto::profiling::BreakpadSymbolizer for more naming
+  information. All other non-breakpad or misformatted breakpad files
+  remain in the same directory with the same filename.
+
+  Args:
+    breakpad_dir: local directory that stores symbol files in its subtree.
+    breakpad_output_dir: local path to store trace symbol breakpad file.
+
+  Raises:
+    AssertionError: if a file's module_id is None or repeated by
+      another file.
+  """
+  # Runs on every directory in the subtree. Scans directories from top-down
+  # (root to leaves) so that we don't rename files multiple times in the common
+  # case where |breakpad_dir| = |breakpad_output_dir|.
+  logging.debug('Renaming breakpad files.')
+  for subdir_path, _, filenames in os.walk(breakpad_dir, topdown=True):
+    for filename in filenames:
+      file_path = os.path.abspath(os.path.join(subdir_path, filename))
+
+      if not '.breakpad' in filename:
+        logging.debug("File is not a breakpad file: " + file_path)
+        continue
+
+      module_id = _ExtractModuleIdIfValidBreakpad(file_path)
+      if module_id is None:
+        logging.debug("Failed to extract file module id: " + file_path)
+        continue
+
+      new_filename = module_id + '.breakpad'
+      dest_path = os.path.abspath(
+          os.path.join(breakpad_output_dir, new_filename))
+
+      # Ensure all new filenames (module ids) are unique. If there is module id
+      # repetition, the first file with the same module_id has already been
+      # moved.
+      if os.path.exists(dest_path):
+        raise AssertionError(('Symbol file modules ids are not '
+                              'unique: %s\nSee these files: %s, %s' %
+                              (module_id, file_path, dest_path)))
+
+      shutil.move(file_path, dest_path)
+
+  # TODO(rhuckleberry): After moving breakpad files we can be left with empty
+  # dirs. Clean up these empty dirs if user specifies |breakpad_output_dir|.
+  # Doesn't matter if |breakpad_output_dir| is a temporary directory.
+
+
+def _ExtractModuleIdIfValidBreakpad(file_path):
+  """Extracts breakpad file's module id if the file is valid.
+
+  A breakpad file is valid for extracting its module id if it
+  has a valid MODULE record, formatted like so:
+  MODULE operatingsystem architecture id name
+
+  For example:
+  MODULE mac x86_64 1240DF90E9AC39038EF400 Chrome Name
+
+  See this for more information:
+  https://chromium.googlesource.com/breakpad/breakpad/+/HEAD/docs/symbol_files.md#records-1
+
+  Args:
+    file_path: Path to breakpad file to extract module id from.
+
+  Returns:
+    Module id if file is a valid breakpad file; None, otherwise.
+  """
+  module_id = None
+  with open(file_path, 'r') as file_handle:
+    # Reads a maximum of 200 bytes/characters. Malformed file or binary will
+    # not have '\n' character.
+    first_line = file_handle.readline(200)
+    fragments = first_line.rstrip().split()
+    if fragments and fragments[0] == 'MODULE' and len(fragments) >= 5:
+      # Symbolization script's input file format requires module id hexadecimal
+      # to be upper case.
+      module_id = fragments[3].upper()
+
+  return module_id
diff --git a/tools/tracing/rename_breakpad_unittest.py b/tools/tracing/rename_breakpad_unittest.py
new file mode 100755
index 0000000..2616d93
--- /dev/null
+++ b/tools/tracing/rename_breakpad_unittest.py
@@ -0,0 +1,321 @@
+#!/usr/bin/env vpython3
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+from logging import exception
+import os
+import sys
+import unittest
+import tempfile
+import shutil
+
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), os.pardir, 'perf'))
+
+from core import path_util
+path_util.AddPyUtilsToPath()
+path_util.AddTracingToPath()
+import py_utils
+
+import rename_breakpad
+import mock
+
+
+class RenameBreakpadFilesTestCase(unittest.TestCase):
+  def setUp(self):
+    self.breakpad_dir = tempfile.mkdtemp()
+    self.breakpad_output_dir = tempfile.mkdtemp()
+
+    # Directory to unzipped breakpad files.
+    self.breakpad_unzip_dir = tempfile.mkdtemp(dir=self.breakpad_dir)
+
+  def tearDown(self):
+    shutil.rmtree(self.breakpad_dir)
+    shutil.rmtree(self.breakpad_output_dir)
+
+  def _listSubtree(self, root):
+    """Returns absolute paths of files and dirs in root subtree.
+    """
+    files = set()
+    dirs = set()
+    for root, subdirs, filenames in os.walk(root):
+      for filename in filenames:
+        files.add(os.path.join(root, filename))
+      for subdir in subdirs:
+        dirs.add(os.path.join(root, subdir))
+    return dirs, files
+
+  def _assertFilesInInputDir(self,
+                             expected_unmoved_files=frozenset(),
+                             expected_unmoved_dirs=frozenset()):
+    """Ensures that |RenameBreakpadFiles| doesn't move files/dirs.
+
+    Automatically adds |self.breakpad_unzip_dir| to
+    |expected_unmoved_dirs| since this file should never be moved.
+    """
+    breakpad_unzip_dir = {self.breakpad_unzip_dir}
+    expected_unmoved_dirs = expected_unmoved_dirs.union(breakpad_unzip_dir)
+
+    unmoved_dirs, unmoved_files = self._listSubtree(self.breakpad_dir)
+    self.assertEqual(expected_unmoved_files, unmoved_files)
+    self.assertEqual(expected_unmoved_dirs, unmoved_dirs)
+
+  def _assertFilesInOutputDir(self, expected_moved_files=frozenset()):
+    """Ensures that |RenameBreakpadFiles| correctly moves files.
+    """
+    moved_files = set(os.listdir(self.breakpad_output_dir))
+    self.assertEqual(expected_moved_files, moved_files)
+
+  def testRenameBreakpadFiles(self):
+    breakpad_file1 = os.path.join(self.breakpad_unzip_dir, 'file1.breakpad')
+    breakpad_file2 = os.path.join(self.breakpad_unzip_dir, 'file2.breakpad')
+
+    with open(breakpad_file1, 'w') as file1:
+      file1.write('MODULE Linux x86_64 34984AB4EF948C name1.so')
+    with open(breakpad_file2, 'w') as file2:
+      file2.write('MODULE mac x86_64 29e6f9a7ce00f name2.so')
+
+    rename_breakpad.RenameBreakpadFiles(self.breakpad_dir,
+                                        self.breakpad_output_dir)
+
+    self._assertFilesInInputDir()
+
+    expected_moved_files = {'34984AB4EF948C.breakpad', '29E6F9A7CE00F.breakpad'}
+    self._assertFilesInOutputDir(expected_moved_files)
+
+  def testRenameBreakpadFilesUpperCaseName(self):
+    breakpad_file1 = os.path.join(self.breakpad_unzip_dir, 'file1.breakpad')
+
+    with open(breakpad_file1, 'w') as file1:
+      file1.write('MODULE Linux x86_64 12a345b6c7def890 name1.so')
+
+    rename_breakpad.RenameBreakpadFiles(self.breakpad_dir,
+                                        self.breakpad_output_dir)
+
+    self._assertFilesInInputDir()
+
+    expected_moved_files = {'12A345B6C7DEF890.breakpad'}
+    self._assertFilesInOutputDir(expected_moved_files)
+
+  def testRenameBreakpadFilesLinuxx86_64(self):
+    breakpad_file1 = os.path.join(self.breakpad_unzip_dir, 'file1.breakpad.x64')
+
+    with open(breakpad_file1, 'w') as file1:
+      file1.write('MODULE Linux x86_64 34984AB4EF948C name1.so')
+
+    rename_breakpad.RenameBreakpadFiles(self.breakpad_dir,
+                                        self.breakpad_output_dir)
+
+    self._assertFilesInInputDir()
+
+    expected_moved_files = {'34984AB4EF948C.breakpad'}
+    self._assertFilesInOutputDir(expected_moved_files)
+
+  def testRenameBreakpadFilesMultipleSubdirs(self):
+    subdir1 = tempfile.mkdtemp(dir=self.breakpad_unzip_dir)
+    subdir2 = tempfile.mkdtemp(dir=self.breakpad_unzip_dir)
+    breakpad_file1 = os.path.join(subdir1, 'file1.breakpad')
+    breakpad_file2 = os.path.join(subdir2, 'file2.breakpad')
+    breakpad_file3 = os.path.join(self.breakpad_unzip_dir, 'file3.breakpad')
+
+    with open(breakpad_file1, 'w') as file1:
+      file1.write('MODULE Linux x86_64 48537ABD name1.so')
+    with open(breakpad_file2, 'w') as file2:
+      file2.write('MODULE mac x86_64 38ABC9F name2.so')
+    with open(breakpad_file3, 'w') as file3:
+      file3.write('MODULE mac x86_64 45DFE name3.so')
+
+    rename_breakpad.RenameBreakpadFiles(self.breakpad_dir,
+                                        self.breakpad_output_dir)
+
+    expected_unmoved_dirs = {subdir1, subdir2}
+    self._assertFilesInInputDir(expected_unmoved_dirs=expected_unmoved_dirs)
+
+    expected_moved_files = {
+        '48537ABD.breakpad', '38ABC9F.breakpad', '45DFE.breakpad'
+    }
+    self._assertFilesInOutputDir(expected_moved_files)
+
+  def testRenameBreakpadFilesNonBreakpad(self):
+    valid_file = os.path.join(self.breakpad_unzip_dir, 'valid.breakpad')
+    fake_file = os.path.join(self.breakpad_unzip_dir, 'fake.gz')
+    empty_file = os.path.join(self.breakpad_unzip_dir, 'empty.json')
+    random_dir = tempfile.mkdtemp(dir=self.breakpad_dir)
+    non_breakpad_file = os.path.join(random_dir, 'random.txt')
+
+    with open(valid_file, 'w') as file1:
+      file1.write('MODULE mac x86_64 329FDEA987BC name.so')
+    with open(fake_file, 'w') as file2:
+      file2.write('random text blah blah blah')
+    with open(empty_file, 'w'):
+      pass
+    with open(non_breakpad_file, 'w') as file3:
+      file3.write('MODULE mac x86_64 329FDEA987BC name.so')
+
+    rename_breakpad.RenameBreakpadFiles(self.breakpad_dir,
+                                        self.breakpad_output_dir)
+
+    expected_unmoved_files = {fake_file, empty_file, non_breakpad_file}
+    expected_unmoved_dirs = {random_dir}
+    self._assertFilesInInputDir(expected_unmoved_files, expected_unmoved_dirs)
+
+    expected_moved_files = {'329FDEA987BC.breakpad'}
+    self._assertFilesInOutputDir(expected_moved_files)
+
+  def testRenameBreakpadFilesInvalidBreakpad(self):
+    valid_file = os.path.join(self.breakpad_unzip_dir, 'valid.breakpad')
+    empty_file = os.path.join(self.breakpad_unzip_dir, 'empty.breakpad')
+    no_module_file = os.path.join(self.breakpad_unzip_dir, 'no-module.breakpad')
+    short_file = os.path.join(self.breakpad_unzip_dir, 'short.breakpad')
+
+    with open(valid_file, 'w') as file1:
+      file1.write('MODULE mac x86_64 1240DF90E9AC39038EF400 Chrome Name')
+    with open(empty_file, 'w'):
+      pass
+    with open(no_module_file, 'w') as file2:
+      file2.write('NOTMODULE mac x86_64 1240DF90E9AC39038EF400 name')
+    with open(short_file, 'w') as file3:
+      file3.write('MODULE mac 1240DF90E9AC39038EF400 name')
+
+    rename_breakpad.RenameBreakpadFiles(self.breakpad_dir,
+                                        self.breakpad_output_dir)
+
+    expected_unmoved_files = {empty_file, no_module_file, short_file}
+    self._assertFilesInInputDir(expected_unmoved_files)
+
+    expected_moved_files = {'1240DF90E9AC39038EF400.breakpad'}
+    self._assertFilesInOutputDir(expected_moved_files)
+
+  def testRenameBreakpadFilesOnlyNonBreakpadAndMisformat(self):
+    fake_file = os.path.join(self.breakpad_unzip_dir, 'fake.breakpad')
+    empty_file = os.path.join(self.breakpad_unzip_dir, 'empty.breakpad')
+    no_module_file = os.path.join(self.breakpad_unzip_dir, 'no-module.breakpad')
+    short_file = os.path.join(self.breakpad_unzip_dir, 'short.breakpad')
+    random_dir = tempfile.mkdtemp(dir=self.breakpad_dir)
+    non_breakpad_file = os.path.join(random_dir, 'random.txt')
+
+    with open(fake_file, 'w') as file1:
+      file1.write('random text blah blah blah')
+    with open(empty_file, 'w'):
+      pass
+    with open(no_module_file, 'w') as file2:
+      file2.write('NOTMODULE mac x86_64 1240DF90E9AC39038EF400 name')
+    with open(short_file, 'w') as file3:
+      file3.write('MODULE mac 1240DF90E9AC39038EF400 name')
+    with open(non_breakpad_file, 'w') as file4:
+      file4.write('MODULE mac x86_64 1240DF90E9AC39038EF400 Chrome Name')
+
+    rename_breakpad.RenameBreakpadFiles(self.breakpad_dir,
+                                        self.breakpad_output_dir)
+
+    expected_unmoved_files = {
+        fake_file, non_breakpad_file, empty_file, no_module_file, short_file
+    }
+    expected_unmoved_dirs = {random_dir}
+    self._assertFilesInInputDir(expected_unmoved_files, expected_unmoved_dirs)
+
+    self._assertFilesInOutputDir()
+
+  def testRenameBreakpadFilesRepeatedModuleID(self):
+    breakpad_file1 = os.path.join(self.breakpad_unzip_dir, 'file1.breakpad')
+    breakpad_file2 = os.path.join(self.breakpad_unzip_dir, 'file2.breakpad')
+
+    with open(breakpad_file1, 'w') as file1:
+      file1.write('MODULE mac x86_64 12ABC8987DE name.so')
+    with open(breakpad_file2, 'w') as file2:
+      file2.write('MODULE mac x86_64 12ABC8987DE name.so')
+
+    # Check that the right exception is raised.
+    exception_msg = ('Symbol file modules ids are not unique')
+
+    with self.assertRaises(AssertionError) as e:
+      rename_breakpad.RenameBreakpadFiles(self.breakpad_dir,
+                                          self.breakpad_output_dir)
+    self.assertIn(exception_msg, str(e.exception))
+
+    # Check breakpad file with repeated module id is not moved. More
+    # complicated because either of the breakpad files could be moved.
+    self.assertTrue(
+        os.path.isfile(breakpad_file1) ^ os.path.isfile(breakpad_file2))
+
+    # Ensure one of the breakpad module files got moved. No matter which
+    # breakpad file got moved, it will have the same new module-based filename.
+    expected_moved_files = {'12ABC8987DE.breakpad'}
+    self._assertFilesInOutputDir(expected_moved_files)
+
+  def testRenameBreakpadFilesRepeatedModuleIDMultipleSubdirs(self):
+    subdir1 = tempfile.mkdtemp(dir=self.breakpad_unzip_dir)
+    subdir2 = tempfile.mkdtemp(dir=self.breakpad_unzip_dir)
+    breakpad_file1 = os.path.join(subdir1, 'file1.breakpad')
+    breakpad_file2 = os.path.join(subdir2, 'file2.breakpad')
+
+    with open(breakpad_file1, 'w') as file1:
+      file1.write('MODULE mac x86_64 ABCE4853004895 name.so')
+    with open(breakpad_file2, 'w') as file2:
+      file2.write('MODULE mac x86_64 ABCE4853004895 name.so')
+
+    # Check that the right exception is raised.
+    exception_msg = ('Symbol file modules ids are not unique')
+    with self.assertRaises(AssertionError) as e:
+      rename_breakpad.RenameBreakpadFiles(self.breakpad_dir,
+                                          self.breakpad_output_dir)
+    self.assertIn(exception_msg, str(e.exception))
+
+    # Check breakpad file with repeated module id is not moved. More
+    # complicated because either of the breakpad files could be moved.
+    self.assertTrue(
+        os.path.isfile(breakpad_file1) ^ os.path.isfile(breakpad_file2))
+
+    # Ensure one of the breakpad module files got moved. No matter which
+    # breakpad file got moved, it will have the same new module-based filename.
+    expected_moved_files = {'ABCE4853004895.breakpad'}
+    self._assertFilesInOutputDir(expected_moved_files)
+
+  def testRenameBreakpadFilesInputDirEqualsOutputDir(self):
+    subdir = tempfile.mkdtemp(dir=self.breakpad_unzip_dir)
+    breakpad_file1 = os.path.join(self.breakpad_unzip_dir, 'file1.breakpad')
+    breakpad_file2 = os.path.join(subdir, 'file2.breakpad')
+
+    with open(breakpad_file1, 'w') as file1:
+      file1.write('MODULE Linux x86_64 34984AB4EF948C name1.so')
+    with open(breakpad_file2, 'w') as file2:
+      file2.write('MODULE mac x86_64 29e6f9a7ce00f name2.so')
+
+    rename_breakpad.RenameBreakpadFiles(self.breakpad_dir, self.breakpad_dir)
+
+    # All files should be moved into |self.breakpad_dir|.
+    moved_breakpad1 = os.path.join(self.breakpad_dir, '34984AB4EF948C.breakpad')
+    moved_breakpad2 = os.path.join(self.breakpad_dir, '29E6F9A7CE00F.breakpad')
+    expected_files = {moved_breakpad1, moved_breakpad2}
+    expected_unmoved_dirs = {subdir}
+    self._assertFilesInInputDir(expected_files, expected_unmoved_dirs)
+
+    # No files should be moved to |self.breakpad_output_dir|.
+    self._assertFilesInOutputDir()
+
+  def testRenameBreakpadFilesAllUnmoved(self):
+    breakpad_file1 = os.path.join(self.breakpad_unzip_dir, 'file1.breakpad')
+    breakpad_file2 = os.path.join(self.breakpad_unzip_dir, 'file2.breakpad')
+
+    with open(breakpad_file1, 'w') as file1:
+      file1.write('MODULE Linux x86_64 34984AB4EF948C name1.so')
+    with open(breakpad_file2, 'w') as file2:
+      file2.write('MODULE mac x86_64 29e6f9a7ce00f name2.so')
+
+    rename_breakpad.RenameBreakpadFiles(self.breakpad_dir,
+                                        self.breakpad_unzip_dir)
+
+    # All files should be renamed but not moved.
+    unmoved_breakpad1 = os.path.join(self.breakpad_unzip_dir,
+                                     '34984AB4EF948C.breakpad')
+    unmoved_breakpad2 = os.path.join(self.breakpad_unzip_dir,
+                                     '29E6F9A7CE00F.breakpad')
+    expected_renamed_files = {unmoved_breakpad1, unmoved_breakpad2}
+    self._assertFilesInInputDir(expected_renamed_files)
+
+    # No files should be moved to |self.breakpad_output_dir|.
+    self._assertFilesInOutputDir()
+
+
+if __name__ == '__main__':
+  unittest.main()
diff --git a/tools/tracing/symbol_fetcher.py b/tools/tracing/symbol_fetcher.py
index 06cbdfa0..3e93c05 100644
--- a/tools/tracing/symbol_fetcher.py
+++ b/tools/tracing/symbol_fetcher.py
@@ -9,12 +9,12 @@
 import sys
 import zipfile
 import logging
-import shutil
 
 import py_utils.cloud_storage as cloud_storage
 import metadata_extractor
 from metadata_extractor import OSName
 import breakpad_file_extractor
+import rename_breakpad
 
 ANDROID_X86_FOLDERS = {'x86', 'x86_64', 'next-x86', 'next-x86_64'}
 ANDROID_ARM_FOLDERS = {'arm', 'arm_64', 'next-arm', 'next-arm_64'}
@@ -55,13 +55,15 @@
   if metadata.os_name == OSName.ANDROID:
     _GetAndroidSymbols(cloud_storage_bucket, metadata, breakpad_output_dir)
     _ConvertSymbolsToBreakpad(breakpad_output_dir, dump_syms_path)
-    RenameBreakpadFiles(breakpad_output_dir, breakpad_output_dir)
+    rename_breakpad.RenameBreakpadFiles(breakpad_output_dir,
+                                        breakpad_output_dir)
   elif metadata.os_name == OSName.WINDOWS:
     raise Exception(
         'Windows platform is not currently supported for symbolization.')
   elif metadata.os_name == OSName.LINUX or metadata.os_name == OSName.MAC:
     _FetchBreakpadSymbols(cloud_storage_bucket, metadata, breakpad_output_dir)
-    RenameBreakpadFiles(breakpad_output_dir, breakpad_output_dir)
+    rename_breakpad.RenameBreakpadFiles(breakpad_output_dir,
+                                        breakpad_output_dir)
   else:
     raise Exception('Trace OS "%s" is not supported: %s' %
                     (metadata.os_name, metadata.trace_file))
@@ -294,96 +296,3 @@
   """
   with zipfile.ZipFile(zip_file, 'r') as zip_f:
     zip_f.extractall(output_dir)
-
-
-def RenameBreakpadFiles(breakpad_dir, breakpad_output_dir):
-  """Move breakpad files to new directory and rename them.
-
-  Breakpad files (files that contain '.breakpad') are renamed
-  to follow a '<module_id>.breakpad' with upper-case hexadecimal
-  naming scheme and moved to the |breakpad_output_dir| directory.
-  See perfetto::profiling::BreakpadSymbolizer for more naming
-  information. All other non-breakpad or misformatted breakpad files
-  remain in the same directory with the same filename.
-
-  Args:
-    breakpad_dir: local directory that stores symbol files in its subtree.
-    breakpad_output_dir: local path to store trace symbol breakpad file.
-
-  Raises:
-    AssertionError: if a file's module_id is None or repeated by
-      another file.
-  """
-  # TODO(rhuckleberry): Move this function to the script
-  # |breakpad_file_extractor_unittests.py|.
-
-  # Runs on every directory in the subtree. Scans directories from top-down
-  # (root to leaves) so that we don't rename files multiple times in the common
-  # case where |breakpad_dir| = |breakpad_output_dir|.
-  logging.debug('Renaming breakpad files.')
-  for subdir_path, _, filenames in os.walk(breakpad_dir, topdown=True):
-    for filename in filenames:
-      file_path = os.path.abspath(os.path.join(subdir_path, filename))
-
-      if not '.breakpad' in filename:
-        logging.debug("File is not a breakpad file: " + file_path)
-        continue
-
-      module_id = _ExtractModuleIdIfValidBreakpad(file_path)
-      if module_id is None:
-        logging.debug("Failed to extract file module id: " + file_path)
-        continue
-
-      new_filename = module_id + '.breakpad'
-      dest_path = os.path.abspath(
-          os.path.join(breakpad_output_dir, new_filename))
-
-      # Ensure all new filenames (module ids) are unique. If there is module id
-      # repetition, the first file with the same module_id has already been
-      # moved.
-      if os.path.exists(dest_path):
-        raise AssertionError(('Symbol file modules ids are not '
-                              'unique: %s\nSee these files: %s, %s' %
-                              (module_id, file_path, dest_path)))
-
-      shutil.move(file_path, dest_path)
-
-  # TODO(rhuckleberry): After moving breakpad files we can be left with empty
-  # dirs. Clean up these empty dirs if user specifies |breakpad_output_dir|.
-  # Doesn't matter if |breakpad_output_dir| is a temporary directory.
-
-
-def _ExtractModuleIdIfValidBreakpad(file_path):
-  """Extracts breakpad file's module id if the file is valid.
-
-  A breakpad file is valid for extracting its module id if it
-  has a valid MODULE record, formatted like so:
-  MODULE operatingsystem architecture id name
-
-  For example:
-  MODULE mac x86_64 1240DF90E9AC39038EF400 Chrome Name
-
-  See this for more information:
-  https://chromium.googlesource.com/breakpad/breakpad/+/HEAD/docs/symbol_files.md#records-1
-
-  Args:
-    file_path: Path to breakpad file to extract module id from.
-
-  Returns:
-    Module id if file is a valid breakpad file; None, otherwise.
-  """
-  # TODO(rhuckleberry): Move this function to the script
-  # |breakpad_file_extractor_unittests.py|.
-
-  module_id = None
-  with open(file_path, 'r') as file_handle:
-    # Reads a maximum of 200 bytes/characters. Malformed file or binary will
-    # not have '\n' character.
-    first_line = file_handle.readline(200)
-    fragments = first_line.rstrip().split()
-    if fragments and fragments[0] == 'MODULE' and len(fragments) >= 5:
-      # Symbolization script's input file format requires module id hexadecimal
-      # to be upper case.
-      module_id = fragments[3].upper()
-
-  return module_id
diff --git a/tools/tracing/symbol_fetcher_unittest.py b/tools/tracing/symbol_fetcher_unittest.py
index b687f33..1fdfb64 100755
--- a/tools/tracing/symbol_fetcher_unittest.py
+++ b/tools/tracing/symbol_fetcher_unittest.py
@@ -21,7 +21,7 @@
 import symbol_fetcher
 from symbol_fetcher import ANDROID_X86_FOLDERS, ANDROID_ARM_FOLDERS, GCS_SYMBOLS
 import breakpad_file_extractor
-
+import rename_breakpad
 import mock
 
 
@@ -54,10 +54,10 @@
     self.FetchGCSFile_stash = symbol_fetcher._FetchGCSFile
     self.FetchAndUnzipGCSFile_stash = symbol_fetcher._FetchAndUnzipGCSFile
     self.RunDumpSyms_stash = breakpad_file_extractor._RunDumpSyms
-    self.RenameBreakpadFiles_stash = symbol_fetcher.RenameBreakpadFiles
+    self.RenameBreakpadFiles_stash = rename_breakpad.RenameBreakpadFiles
 
     # Ignore this function. It is tested separately.
-    symbol_fetcher.RenameBreakpadFiles = mock.MagicMock()
+    rename_breakpad.RenameBreakpadFiles = mock.MagicMock()
 
   def tearDown(self):
     shutil.rmtree(self.breakpad_output_dir)
@@ -70,7 +70,7 @@
     symbol_fetcher._FetchGCSFile = self.FetchGCSFile_stash
     symbol_fetcher._FetchAndUnzipGCSFile = self.FetchAndUnzipGCSFile_stash
     breakpad_file_extractor._RunDumpSyms = self.RunDumpSyms_stash
-    symbol_fetcher.RenameBreakpadFiles = self.RenameBreakpadFiles_stash
+    rename_breakpad.RenameBreakpadFiles = self.RenameBreakpadFiles_stash
 
   def _createMetadataExtractor(self,
                                version_number=None,
@@ -86,7 +86,7 @@
     return metadata
 
   def _ensureRenameCalled(self):
-    symbol_fetcher.RenameBreakpadFiles.assert_called_once_with(
+    rename_breakpad.RenameBreakpadFiles.assert_called_once_with(
         self.breakpad_output_dir, self.breakpad_output_dir)
 
   def testNoOSName(self):
@@ -309,7 +309,7 @@
 
   def _ensureRunDumpSymsAndRenameNotCalled(self):
     breakpad_file_extractor._RunDumpSyms.assert_not_called()
-    symbol_fetcher.RenameBreakpadFiles.assert_not_called()
+    rename_breakpad.RenameBreakpadFiles.assert_not_called()
 
   def _mockVersionCodeFetcher(self, match_arch_folder, metadata):
     """Sets GCS folder's 'version_codes.txt' file to match trace's version code.
@@ -613,303 +613,5 @@
     self._ensureRunDumpSymsAndRenameNotCalled()
 
 
-class RenameBreakpadFilesTestCase(unittest.TestCase):
-  # TODO(rhuckleberry): Move these tests to the script
-  # |breakpad_file_extractor_unittests.py|.
-  def setUp(self):
-    self.breakpad_dir = tempfile.mkdtemp()
-    self.breakpad_output_dir = tempfile.mkdtemp()
-
-    # Directory to unzipped breakpad files.
-    self.breakpad_unzip_dir = tempfile.mkdtemp(dir=self.breakpad_dir)
-
-  def tearDown(self):
-    shutil.rmtree(self.breakpad_dir)
-    shutil.rmtree(self.breakpad_output_dir)
-
-  def _listSubtree(self, root):
-    """Returns absolute paths of files and dirs in root subtree.
-    """
-    files = set()
-    dirs = set()
-    for root, subdirs, filenames in os.walk(root):
-      for filename in filenames:
-        files.add(os.path.join(root, filename))
-      for subdir in subdirs:
-        dirs.add(os.path.join(root, subdir))
-    return dirs, files
-
-  def _assertFilesInInputDir(self,
-                             expected_unmoved_files=frozenset(),
-                             expected_unmoved_dirs=frozenset()):
-    """Ensures that |RenameBreakpadFiles| doesn't move files/dirs.
-
-    Automatically adds |self.breakpad_unzip_dir| to
-    |expected_unmoved_dirs| since this file should never be moved.
-    """
-    breakpad_unzip_dir = {self.breakpad_unzip_dir}
-    expected_unmoved_dirs = expected_unmoved_dirs.union(breakpad_unzip_dir)
-
-    unmoved_dirs, unmoved_files = self._listSubtree(self.breakpad_dir)
-    self.assertEqual(expected_unmoved_files, unmoved_files)
-    self.assertEqual(expected_unmoved_dirs, unmoved_dirs)
-
-  def _assertFilesInOutputDir(self, expected_moved_files=frozenset()):
-    """Ensures that |RenameBreakpadFiles| correctly moves files.
-    """
-    moved_files = set(os.listdir(self.breakpad_output_dir))
-    self.assertEqual(expected_moved_files, moved_files)
-
-  def testRenameBreakpadFiles(self):
-    breakpad_file1 = os.path.join(self.breakpad_unzip_dir, 'file1.breakpad')
-    breakpad_file2 = os.path.join(self.breakpad_unzip_dir, 'file2.breakpad')
-
-    with open(breakpad_file1, 'w') as file1:
-      file1.write('MODULE Linux x86_64 34984AB4EF948C name1.so')
-    with open(breakpad_file2, 'w') as file2:
-      file2.write('MODULE mac x86_64 29e6f9a7ce00f name2.so')
-
-    symbol_fetcher.RenameBreakpadFiles(self.breakpad_dir,
-                                       self.breakpad_output_dir)
-
-    self._assertFilesInInputDir()
-
-    expected_moved_files = {'34984AB4EF948C.breakpad', '29E6F9A7CE00F.breakpad'}
-    self._assertFilesInOutputDir(expected_moved_files)
-
-  def testRenameBreakpadFilesUpperCaseName(self):
-    breakpad_file1 = os.path.join(self.breakpad_unzip_dir, 'file1.breakpad')
-
-    with open(breakpad_file1, 'w') as file1:
-      file1.write('MODULE Linux x86_64 12a345b6c7def890 name1.so')
-
-    symbol_fetcher.RenameBreakpadFiles(self.breakpad_dir,
-                                       self.breakpad_output_dir)
-
-    self._assertFilesInInputDir()
-
-    expected_moved_files = {'12A345B6C7DEF890.breakpad'}
-    self._assertFilesInOutputDir(expected_moved_files)
-
-  def testRenameBreakpadFilesLinuxx86_64(self):
-    breakpad_file1 = os.path.join(self.breakpad_unzip_dir, 'file1.breakpad.x64')
-
-    with open(breakpad_file1, 'w') as file1:
-      file1.write('MODULE Linux x86_64 34984AB4EF948C name1.so')
-
-    symbol_fetcher.RenameBreakpadFiles(self.breakpad_dir,
-                                       self.breakpad_output_dir)
-
-    self._assertFilesInInputDir()
-
-    expected_moved_files = {'34984AB4EF948C.breakpad'}
-    self._assertFilesInOutputDir(expected_moved_files)
-
-  def testRenameBreakpadFilesMultipleSubdirs(self):
-    subdir1 = tempfile.mkdtemp(dir=self.breakpad_unzip_dir)
-    subdir2 = tempfile.mkdtemp(dir=self.breakpad_unzip_dir)
-    breakpad_file1 = os.path.join(subdir1, 'file1.breakpad')
-    breakpad_file2 = os.path.join(subdir2, 'file2.breakpad')
-    breakpad_file3 = os.path.join(self.breakpad_unzip_dir, 'file3.breakpad')
-
-    with open(breakpad_file1, 'w') as file1:
-      file1.write('MODULE Linux x86_64 48537ABD name1.so')
-    with open(breakpad_file2, 'w') as file2:
-      file2.write('MODULE mac x86_64 38ABC9F name2.so')
-    with open(breakpad_file3, 'w') as file3:
-      file3.write('MODULE mac x86_64 45DFE name3.so')
-
-    symbol_fetcher.RenameBreakpadFiles(self.breakpad_dir,
-                                       self.breakpad_output_dir)
-
-    expected_unmoved_dirs = {subdir1, subdir2}
-    self._assertFilesInInputDir(expected_unmoved_dirs=expected_unmoved_dirs)
-
-    expected_moved_files = {
-        '48537ABD.breakpad', '38ABC9F.breakpad', '45DFE.breakpad'
-    }
-    self._assertFilesInOutputDir(expected_moved_files)
-
-  def testRenameBreakpadFilesNonBreakpad(self):
-    valid_file = os.path.join(self.breakpad_unzip_dir, 'valid.breakpad')
-    fake_file = os.path.join(self.breakpad_unzip_dir, 'fake.gz')
-    empty_file = os.path.join(self.breakpad_unzip_dir, 'empty.json')
-    random_dir = tempfile.mkdtemp(dir=self.breakpad_dir)
-    non_breakpad_file = os.path.join(random_dir, 'random.txt')
-
-    with open(valid_file, 'w') as file1:
-      file1.write('MODULE mac x86_64 329FDEA987BC name.so')
-    with open(fake_file, 'w') as file2:
-      file2.write('random text blah blah blah')
-    with open(empty_file, 'w'):
-      pass
-    with open(non_breakpad_file, 'w') as file3:
-      file3.write('MODULE mac x86_64 329FDEA987BC name.so')
-
-    symbol_fetcher.RenameBreakpadFiles(self.breakpad_dir,
-                                       self.breakpad_output_dir)
-
-    expected_unmoved_files = {fake_file, empty_file, non_breakpad_file}
-    expected_unmoved_dirs = {random_dir}
-    self._assertFilesInInputDir(expected_unmoved_files, expected_unmoved_dirs)
-
-    expected_moved_files = {'329FDEA987BC.breakpad'}
-    self._assertFilesInOutputDir(expected_moved_files)
-
-  def testRenameBreakpadFilesInvalidBreakpad(self):
-    valid_file = os.path.join(self.breakpad_unzip_dir, 'valid.breakpad')
-    empty_file = os.path.join(self.breakpad_unzip_dir, 'empty.breakpad')
-    no_module_file = os.path.join(self.breakpad_unzip_dir, 'no-module.breakpad')
-    short_file = os.path.join(self.breakpad_unzip_dir, 'short.breakpad')
-
-    with open(valid_file, 'w') as file1:
-      file1.write('MODULE mac x86_64 1240DF90E9AC39038EF400 Chrome Name')
-    with open(empty_file, 'w'):
-      pass
-    with open(no_module_file, 'w') as file2:
-      file2.write('NOTMODULE mac x86_64 1240DF90E9AC39038EF400 name')
-    with open(short_file, 'w') as file3:
-      file3.write('MODULE mac 1240DF90E9AC39038EF400 name')
-
-    symbol_fetcher.RenameBreakpadFiles(self.breakpad_dir,
-                                       self.breakpad_output_dir)
-
-    expected_unmoved_files = {empty_file, no_module_file, short_file}
-    self._assertFilesInInputDir(expected_unmoved_files)
-
-    expected_moved_files = {'1240DF90E9AC39038EF400.breakpad'}
-    self._assertFilesInOutputDir(expected_moved_files)
-
-  def testRenameBreakpadFilesOnlyNonBreakpadAndMisformat(self):
-    fake_file = os.path.join(self.breakpad_unzip_dir, 'fake.breakpad')
-    empty_file = os.path.join(self.breakpad_unzip_dir, 'empty.breakpad')
-    no_module_file = os.path.join(self.breakpad_unzip_dir, 'no-module.breakpad')
-    short_file = os.path.join(self.breakpad_unzip_dir, 'short.breakpad')
-    random_dir = tempfile.mkdtemp(dir=self.breakpad_dir)
-    non_breakpad_file = os.path.join(random_dir, 'random.txt')
-
-    with open(fake_file, 'w') as file1:
-      file1.write('random text blah blah blah')
-    with open(empty_file, 'w'):
-      pass
-    with open(no_module_file, 'w') as file2:
-      file2.write('NOTMODULE mac x86_64 1240DF90E9AC39038EF400 name')
-    with open(short_file, 'w') as file3:
-      file3.write('MODULE mac 1240DF90E9AC39038EF400 name')
-    with open(non_breakpad_file, 'w') as file4:
-      file4.write('MODULE mac x86_64 1240DF90E9AC39038EF400 Chrome Name')
-
-    symbol_fetcher.RenameBreakpadFiles(self.breakpad_dir,
-                                       self.breakpad_output_dir)
-
-    expected_unmoved_files = {
-        fake_file, non_breakpad_file, empty_file, no_module_file, short_file
-    }
-    expected_unmoved_dirs = {random_dir}
-    self._assertFilesInInputDir(expected_unmoved_files, expected_unmoved_dirs)
-
-    self._assertFilesInOutputDir()
-
-  def testRenameBreakpadFilesRepeatedModuleID(self):
-    breakpad_file1 = os.path.join(self.breakpad_unzip_dir, 'file1.breakpad')
-    breakpad_file2 = os.path.join(self.breakpad_unzip_dir, 'file2.breakpad')
-
-    with open(breakpad_file1, 'w') as file1:
-      file1.write('MODULE mac x86_64 12ABC8987DE name.so')
-    with open(breakpad_file2, 'w') as file2:
-      file2.write('MODULE mac x86_64 12ABC8987DE name.so')
-
-    # Check that the right exception is raised.
-    exception_msg = ('Symbol file modules ids are not unique')
-
-    with self.assertRaises(AssertionError) as e:
-      symbol_fetcher.RenameBreakpadFiles(self.breakpad_dir,
-                                         self.breakpad_output_dir)
-    self.assertIn(exception_msg, str(e.exception))
-
-    # Check breakpad file with repeated module id is not moved. More
-    # complicated because either of the breakpad files could be moved.
-    self.assertTrue(
-        os.path.isfile(breakpad_file1) ^ os.path.isfile(breakpad_file2))
-
-    # Ensure one of the breakpad module files got moved. No matter which
-    # breakpad file got moved, it will have the same new module-based filename.
-    expected_moved_files = {'12ABC8987DE.breakpad'}
-    self._assertFilesInOutputDir(expected_moved_files)
-
-  def testRenameBreakpadFilesRepeatedModuleIDMultipleSubdirs(self):
-    subdir1 = tempfile.mkdtemp(dir=self.breakpad_unzip_dir)
-    subdir2 = tempfile.mkdtemp(dir=self.breakpad_unzip_dir)
-    breakpad_file1 = os.path.join(subdir1, 'file1.breakpad')
-    breakpad_file2 = os.path.join(subdir2, 'file2.breakpad')
-
-    with open(breakpad_file1, 'w') as file1:
-      file1.write('MODULE mac x86_64 ABCE4853004895 name.so')
-    with open(breakpad_file2, 'w') as file2:
-      file2.write('MODULE mac x86_64 ABCE4853004895 name.so')
-
-    # Check that the right exception is raised.
-    exception_msg = ('Symbol file modules ids are not unique')
-    with self.assertRaises(AssertionError) as e:
-      symbol_fetcher.RenameBreakpadFiles(self.breakpad_dir,
-                                         self.breakpad_output_dir)
-    self.assertIn(exception_msg, str(e.exception))
-
-    # Check breakpad file with repeated module id is not moved. More
-    # complicated because either of the breakpad files could be moved.
-    self.assertTrue(
-        os.path.isfile(breakpad_file1) ^ os.path.isfile(breakpad_file2))
-
-    # Ensure one of the breakpad module files got moved. No matter which
-    # breakpad file got moved, it will have the same new module-based filename.
-    expected_moved_files = {'ABCE4853004895.breakpad'}
-    self._assertFilesInOutputDir(expected_moved_files)
-
-  def testRenameBreakpadFilesInputDirEqualsOutputDir(self):
-    subdir = tempfile.mkdtemp(dir=self.breakpad_unzip_dir)
-    breakpad_file1 = os.path.join(self.breakpad_unzip_dir, 'file1.breakpad')
-    breakpad_file2 = os.path.join(subdir, 'file2.breakpad')
-
-    with open(breakpad_file1, 'w') as file1:
-      file1.write('MODULE Linux x86_64 34984AB4EF948C name1.so')
-    with open(breakpad_file2, 'w') as file2:
-      file2.write('MODULE mac x86_64 29e6f9a7ce00f name2.so')
-
-    symbol_fetcher.RenameBreakpadFiles(self.breakpad_dir, self.breakpad_dir)
-
-    # All files should be moved into |self.breakpad_dir|.
-    moved_breakpad1 = os.path.join(self.breakpad_dir, '34984AB4EF948C.breakpad')
-    moved_breakpad2 = os.path.join(self.breakpad_dir, '29E6F9A7CE00F.breakpad')
-    expected_files = {moved_breakpad1, moved_breakpad2}
-    expected_unmoved_dirs = {subdir}
-    self._assertFilesInInputDir(expected_files, expected_unmoved_dirs)
-
-    # No files should be moved to |self.breakpad_output_dir|.
-    self._assertFilesInOutputDir()
-
-  def testRenameBreakpadFilesAllUnmoved(self):
-    breakpad_file1 = os.path.join(self.breakpad_unzip_dir, 'file1.breakpad')
-    breakpad_file2 = os.path.join(self.breakpad_unzip_dir, 'file2.breakpad')
-
-    with open(breakpad_file1, 'w') as file1:
-      file1.write('MODULE Linux x86_64 34984AB4EF948C name1.so')
-    with open(breakpad_file2, 'w') as file2:
-      file2.write('MODULE mac x86_64 29e6f9a7ce00f name2.so')
-
-    symbol_fetcher.RenameBreakpadFiles(self.breakpad_dir,
-                                       self.breakpad_unzip_dir)
-
-    # All files should be renamed but not moved.
-    unmoved_breakpad1 = os.path.join(self.breakpad_unzip_dir,
-                                     '34984AB4EF948C.breakpad')
-    unmoved_breakpad2 = os.path.join(self.breakpad_unzip_dir,
-                                     '29E6F9A7CE00F.breakpad')
-    expected_renamed_files = {unmoved_breakpad1, unmoved_breakpad2}
-    self._assertFilesInInputDir(expected_renamed_files)
-
-    # No files should be moved to |self.breakpad_output_dir|.
-    self._assertFilesInOutputDir()
-
-
 if __name__ == '__main__':
   unittest.main()
diff --git a/tools/tracing/symbolize_trace b/tools/tracing/symbolize_trace
index 752f8ee..66c06161 100755
--- a/tools/tracing/symbolize_trace
+++ b/tools/tracing/symbolize_trace
@@ -7,11 +7,19 @@
 This executable script symbolizes proto perfetto traces.
 """
 
+import os
 import optparse
 import sys
 
 import symbolize_trace
 import flag_utils
+import display_in_browser
+
+sys.path.insert(0, os.path.join(os.path.dirname(__file__),
+                                os.pardir, os.pardir, 'third_party',
+                                'catapult', 'systrace'))
+
+from profile_chrome import flags
 
 
 def _CreateOptionParser():
@@ -23,6 +31,7 @@
 
   parser = flag_utils.AddLoggingOptions(parser)
   parser.add_option_group(flag_utils.SymbolizeOptions(parser))
+  parser.add_option_group(flags.OutputOptions(parser))
 
   return parser
 
@@ -44,5 +53,8 @@
   # Symbolize Trace
   symbolize_trace.SymbolizeTrace(trace_file=trace_file, options=options)
 
+  if options.view:
+    display_in_browser.DisplayInBrowser(options.output_file, options)
+
 if __name__ == '__main__':
   sys.exit(main())
diff --git a/tools/tracing/symbolize_trace.py b/tools/tracing/symbolize_trace.py
index 9bc3990..33acdc1 100644
--- a/tools/tracing/symbolize_trace.py
+++ b/tools/tracing/symbolize_trace.py
@@ -21,6 +21,7 @@
 import metadata_extractor
 import symbol_fetcher
 import breakpad_file_extractor
+import rename_breakpad
 
 
 def SymbolizeTrace(trace_file, options):
@@ -100,8 +101,8 @@
           (options.local_build_dir,
            os.path.join(options.local_build_dir, 'lib.unstripped')))
 
-    symbol_fetcher.RenameBreakpadFiles(options.breakpad_output_dir,
-                                       options.breakpad_output_dir)
+    rename_breakpad.RenameBreakpadFiles(options.breakpad_output_dir,
+                                        options.breakpad_output_dir)
     return
 
   # Extract Metadata
diff --git a/tools/traffic_annotation/summary/annotations.xml b/tools/traffic_annotation/summary/annotations.xml
index 60531d2..0a750fd 100644
--- a/tools/traffic_annotation/summary/annotations.xml
+++ b/tools/traffic_annotation/summary/annotations.xml
@@ -379,6 +379,7 @@
  <item id="webstore_installer" added_in_milestone="62" hash_code="18764319" type="0" content_hash_code="70871152" os_list="linux,windows" file_path="chrome/browser/extensions/webstore_installer.cc"/>
  <item id="webui_content_scripts_download" added_in_milestone="62" hash_code="100545943" type="0" content_hash_code="119898059" os_list="linux,windows" file_path="extensions/browser/guest_view/web_view/web_ui/web_ui_url_fetcher.cc"/>
  <item id="well_known_path_that_should_not_exist" added_in_milestone="86" hash_code="134618785" type="0" content_hash_code="55913167" os_list="linux,windows" file_path="components/password_manager/core/browser/well_known_change_password_state.cc"/>
+ <item id="whats_new_handler" added_in_milestone="94" hash_code="127739401" type="0" content_hash_code="94869759" os_list="linux,windows" file_path="chrome/browser/ui/webui/whats_new/whats_new_handler.cc"/>
  <item id="worker_script_load" added_in_milestone="72" hash_code="72087791" type="0" content_hash_code="24889169" os_list="linux,windows" file_path="content/browser/worker_host/worker_script_fetcher.cc"/>
  <item id="xmpp_signal_strategy" added_in_milestone="66" hash_code="88906454" type="0" deprecated="2019-07-16" content_hash_code="88958321" file_path=""/>
 </annotations>
diff --git a/tools/traffic_annotation/summary/grouping.xml b/tools/traffic_annotation/summary/grouping.xml
index d2362db..29e1354 100644
--- a/tools/traffic_annotation/summary/grouping.xml
+++ b/tools/traffic_annotation/summary/grouping.xml
@@ -421,5 +421,8 @@
     <sender name="Memories">
       <traffic_annotation unique_id="memories_remote_model_request"/>
     </sender>
+    <sender name="Whats New">
+      <traffic_annotation unique_id="whats_new_handler"/>
+    </sender>
   </group>
 </groups>
diff --git a/ui/webui/resources/cr_elements/mwb_shared_vars.html b/ui/webui/resources/cr_elements/mwb_shared_vars.html
index bb868d0..81c802d 100644
--- a/ui/webui/resources/cr_elements/mwb_shared_vars.html
+++ b/ui/webui/resources/cr_elements/mwb_shared_vars.html
@@ -11,7 +11,7 @@
       --mwb-list-item-hover-background-color: rgba(var(--google-grey-900-rgb), 0.1);
       --mwb-list-item-selected-background-color: rgba(var(--google-grey-900-rgb), 0.14);
       --mwb-list-section-title-font-size: 11px;
-      --mwb-list-section-title-height: 36px;
+      --mwb-list-section-title-height: 40px;
       --mwb-primary-text-font-size: 13px;
       --mwb-scrollbar-thumb-color: var(--google-grey-refresh-300);
       --mwb-scrollbar-thumb-hover-color: var(--google-grey-refresh-500);